Генератор шуму з мікроконтролером PIC16F887; Курс електроніки дронів Arduino Matlab

шуму

Цілі

  • Знати, як користуватися функцією rand () та її ініціалізацією
  • Знати, як створити декодер (код 1 => код 2)
  • Знати, як створити нову функцію MikroC
  • Ознайомтесь із використанням цифрового перетворювача (ЦАП)
  • Зрозуміти принцип роботи шумогенератора
  • І т. Д.

Операція

Монтаж є генератором цифрової псевдовипадкової послідовності різної амплітуди. Він складається з наступних елементів:

  • Кнопки Amp (+) & Amp (-): Вони використовуються для збільшення або зменшення амплітуди сигналу. Існує дев'ять рівнів N залежно від інтенсивності сигналу: 0, 1, 2, 3,…, 7, 8. При натисканні кнопки підсилювача (+) ви переходите з рівня N на N + 1, а з N на N-1 у разі натискання Amp (-).
  • Світлодіоди: Використовується для перегляду потужності сигналу на виході ЦАП. Світлодіоди підключені до порту B мікроконтролера. 8-бітове слово надсилається лише при натисканні однієї з кнопок. Початкове слово - "0x00", що відповідає N = 0.
  • A/D перетворювач: 8-бітове слово постійно надсилається в цифро-цифровий перетворювач. Перетворювач перетворює цифрове значення в аналоговий сигнал. Докладніше див. У проекті джерела напруги.

Декодер

Операція

Декодер - це компонент у програмній або апаратній формі, який дає можливість перетворити код 1 в інший код 2. Тут нам потрібно перетворити значення "0" в "8" в інший формат, який може використовуватися світлодіодами з одного боку., а за допомогою цифрового перетворювача - з іншого. Нижче наведено відповідність між двома кодами:

Код 1 (вхід) ==> Код 2 (вихід):

  • 0 ==> 0x00
  • 1 ==> 0x01
  • 2 ==> 0x03
  • 3 ==> 0x07
  • 4 ==> 0x0F
  • 5 ==> 0x1F
  • 6 ==> 0x3F
  • 7 ==> 0x7F
  • 8 ==> 0xFF

Примітка: Таким чином, щоб перейти від коду 1 до коду 2, все, що вам потрібно зробити, це встановити наступний найважливіший біт на «1» і зберегти інші в стані «1». Цей тип кодування дозволить нам помножити на два (або розділити/2) амплітуду до готової одиниці: Значення (N + 1) = 2 * Значення (N) +1.

Функція Code1_2_Code2 ()

Він перетворює код 1 у код 2. Він приймає код 1 як вхід, а потім повертає код 2. Нижче наведено синтаксис та оголошення нової функції.

Функції генератора шуму

Він становить серце генератора. Він повертає псевдовипадкове значення у цілочисельному форматі (16 біт) від 0 до 32767.

Сранд ()

Функція rand () завжди повертає однакову послідовність випадкових чисел, звідси і назва "псевдовипадкова". Дійсно, ми можемо скинути початкове значення функції, щоб отримати змінну послідовність. Функція srand () формує початкове значення послідовності. Нижче наведено синтаксис.

Примітка: У нашому випадку ми скинемо початкове значення послідовності, натиснувши одну з двох кнопок Amp (+/-) (див. Основну програму).

Як адаптувати 16-розрядний формат rand () до 8-розрядного формату ЦАП ?

Як ви вже бачили, функція rand повертає значення у позитивному цілочисловому форматі. Однак ЦАП може мати лише 8 бітів на вході! Тому необхідна адаптація двох форматів. Нижче наведено кілька невичерпних пропозицій:

  1. Зберігайте лише малу вагу на 8 бітах випадкового значення (втрата великої ваги):