Съдържание:

Аналогов VU метър с активиран Bluetooth: 6 стъпки
Аналогов VU метър с активиран Bluetooth: 6 стъпки

Видео: Аналогов VU метър с активиран Bluetooth: 6 стъпки

Видео: Аналогов VU метър с активиран Bluetooth: 6 стъпки
Видео: How to Make PLC LCD HMI || FLProg 2024, Декември
Anonim
Аналогов VU метър с активиран Bluetooth
Аналогов VU метър с активиран Bluetooth

Това беше моят проект за един от моите университетски класове, наречен SMP. Докато използвахме дъската за разработка STM32F103RB, аз основавах проекта си на това, започвайки от обикновен VU метър. След това добавих някои допълнителни функции като Bluetooth поддръжка за излъчване на стойности от ADC към приложение за Android, за да създам проста dB диаграма.

Стъпка 1: Използвани компоненти

  • STM32F103RB платка за разработка
  • Модул за Bluetooth HC-05 zs040
  • Панел на аналогов VU метър (връзка)
  • Електретен микрофон
  • LM324N четириядрен операционен усилвател
  • 2 транзистора TIP120
  • 3 1N4148 диода
  • Различни кондензатори и резистори

Въпреки че можете да изключите тази верига от 5V шината на платката, аз също използвах външно 5V захранване.

Стъпка 2: Последовател на пликове

Последовател на пликове
Последовател на пликове
Последовател на пликове
Последовател на пликове

Основната част от този дизайн е последователният плик, който приема сигнала от електретен микрофон и извежда напрежение, пропорционално на амплитудата на сигнала на микрофона.

Суровият сигнал от микрофона първо се предава през усилвател с усилване 150.

След това сигналът се предава през действителния последовател на плика, който трябва да извежда само положителните части на сигнала.

Последната част е изваждането на изместващото напрежение от 1,65 V от изхода на последователния плик, за да се осигури сигнал от 0 V за без звук, 1,65 V за среден звук и 3,3 V за силен звук, който трябва да е съвместим с вградения ADC на платката.

Този последовател на плик е реализиран от този страхотен отговор на StackExchange.

Стъпка 3: ШИМ за аналоговия измервателен уред

За да стартирам иглата на манометъра, конфигурирах TIM4 таймер на платката на микроконтролера с честота около 500 Hz.

Чрез последователно изпробване на различни работни цикли се примирих с някои стойности, които бяха достатъчни, за да накара иглата да премине от 0 до 100.

Ще опиша подробно процеса на показване на точна стойност в следващата стъпка, като приложим малко математика.

Стъпка 4: Калибриране на микрофона

Калибриране на микрофона
Калибриране на микрофона
Калибриране на микрофона
Калибриране на микрофона

След като привърженикът на плика свърши, след това написах прост код за използване на ADC и се уверих, че стойността на четене наистина се променя в съответствие с силата на звука в стаята.

За да "преведа" тази стойност в действително отчитане на dB, използвах онлайн генератор на тонове с честота 550 Hz и моя Android, за да осигуря референтно отчитане.

Начертах тези стойности и използвах инструмента за приспособяване на кривата на MatLAB, за да получа функция, която картографира показанията на ADC до действителните приближения на нивата на dB (или поне достатъчно близо до показанията на телефона ми).

Можем да видим, че това следва логаритмичната скала на микрофона.

Аз също направих същото, за да картографирам позицията на иглата до стойностите на PWM. Събрах тези стойности, като увеличих последователно стойността на ШИМ с 10 последователно, докато необходимостта удари четенето по нейната скала.

Комбинирайки тези 2 функции, получих лесен начин да покажа показанията от ADC до действителна стойност на индикатора на габарита.

Стъпка 5: Приложение за Android

Приложението използва тази готина библиотека за комуникация чрез сериен Bluetooth за обмен на байтова информация.

Основното предупреждение на тази система е, че максималната дължина на думата, изпратена по Bluetooth, е 8 бита, а стойността на ADC е представена като 12 бита. За да преодолея този проблем, разделих една ADC стойност на 2 отделни 6 -битови стойности (MSB и LSB), като останалите 2 бита се използват за идентифициране на типа съобщение (MSB, LSB, CHK).

Следователно, за една стойност на ADC, която искаме да излъчим, разделяме действителната стойност на 2 съобщения. За да проверя целостта на тези съобщения, изпратих трето съобщение с XOR на първите 2 съобщения.

След като се провери целостта на стойността, можем да приложим същата функция, за да получим нивото на dB и да я начертаем в нашата диаграма на живо.

Стъпка 6: Обобщение

Докато частта от микроконтролера на този проект работи доста добре, показвайки силата на звука в помещението, срещнах някои проблеми при изпращане на данни през Bluetooth поради загуба на пакети.

Изходният код за този проект може да бъде намерен тук:

  • Придружаващо приложение за Android - репо
  • Код на микроконтролер - репо

Чувствайте се свободни да допринесете, ако смятате, че това е полезно по някакъв начин.

Препоръчано: