Генератор шуму з мікроконтролером 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 бітів на вході! Тому необхідна адаптація двох форматів. Нижче наведено кілька невичерпних пропозицій:
- Зберігайте лише малу вагу на 8 бітах випадкового значення (втрата великої ваги):