„Bluetooth“įjungtas analoginis VU matuoklis: 6 žingsniai
„Bluetooth“įjungtas analoginis VU matuoklis: 6 žingsniai
Anonim
„Bluetooth“įjungtas analoginis VU matuoklis
„Bluetooth“įjungtas analoginis VU matuoklis

Tai buvo mano projektas vienai iš mano universiteto klasių, pavadintų SMP. Kadangi mes naudojome STM32F103RB kūrimo plokštę, aš grindžiau savo projektą tuo, pradėdamas nuo paprasto VU skaitiklio. Tada pridėjau keletą papildomų funkcijų, tokių kaip „Bluetooth“palaikymas, kad būtų galima transliuoti vertes iš ADC į „Android“programą, kad būtų sukurta paprasta dB diagrama.

1 žingsnis: naudojami komponentai

  • STM32F103RB kūrimo lenta
  • „Bluetooth“modulis HC-05 zs040
  • Analoginis VU skaitiklio skydelis (nuoroda)
  • Elektretinis mikrofonas
  • LM324N keturių stiprintuvų
  • 2 TIP120 tranzistoriai
  • 3 1N4148 diodai
  • Įvairūs kondensatoriai ir rezistoriai

Nors šią grandinę galite atjungti nuo plokštės 5V bėgio, aš taip pat naudojau išorinį 5 V maitinimo šaltinį.

2 žingsnis: vokų stebėtojas

Voko sekėjas
Voko sekėjas
Voko sekėjas
Voko sekėjas

Pagrindinis šio dizaino elementas yra vokų sekiklis, kuris paima signalą iš elektreto mikrofono ir išleidžia įtampą, proporcingą mikrofono signalo amplitudei.

Neapdorotas signalas iš mikrofono pirmiausia perduodamas per stiprintuvą, kurio stiprinimas yra 150.

Tada signalas perduodamas per tikrąjį vokų sekiklį, kuris turėtų perduoti tik teigiamo signalo dalis.

Paskutinė dalis atima 1,65 V poslinkio įtampą iš voko sekiklio išėjimo, kad būtų gautas 0 V signalas be garso, 1,65 V vidutinio garso ir 3,3 V garsus garsas, kuris turėtų būti suderinamas su įmontuotu Valdybos ADC.

Šis voko sekėjas yra įgyvendintas iš šio puikaus „StackExchange“atsakymo.

3 žingsnis: analoginio matuoklio PWM

Norėdami pradėti matuoklio adatą, sukonfigūravau mikrokontrolerio plokštės TIM4 laikmatį, kurio dažnis yra maždaug 500 Hz.

Iš eilės bandydamas įvairius darbo ciklus, aš nusiteikiau su kai kuriomis vertėmis, kurių pakako, kad adata pakiltų nuo 0 iki 100.

Kitame žingsnyje išsamiai aprašysiu tikslios vertės rodymo procesą, pritaikydamas tam tikrą matematiką.

4 žingsnis: Mikrofono kalibravimas

Mikrofono kalibravimas
Mikrofono kalibravimas
Mikrofono kalibravimas
Mikrofono kalibravimas

Atlikęs voko sekimą, aš parašiau paprastą kodą, kad galėčiau naudoti ADC, ir patikrinau, ar skaitymo vertė iš tikrųjų keičiasi atsižvelgiant į kambario garsumą.

Norėdami „išversti“šią vertę į tikrąjį dB rodmenį, aš naudoju internetinį tonų generatorių, kurio dažnis yra 550 Hz, ir „Android“, kad pateikčiau atskaitos rodmenį.

Aš nubraižiau šias vertes ir panaudojau „MatLAB“kreivės pritaikymo įrankį, kad gaučiau funkciją, kuri susieja ADC rodmenis su faktiniais apytiksliais dB lygiais (arba bent jau pakankamai arti mano telefono rodmenų).

Matome, kad tai atitinka mikrofono logaritminę skalę.

Aš taip pat padariau tą patį, norėdamas susieti adatos padėtį su PWM vertėmis. Aš surinkau šias vertes padidindamas PWM vertę 10 iš eilės, kol poreikis pasiekė jo skalę.

Sujungus šias 2 funkcijas, gavau paprastą būdą parodyti rodmenis nuo ADC iki faktinės matuoklio indikatoriaus vertės.

5 veiksmas: „Android“programa

Programa naudoja šią šaunią biblioteką, norėdama bendrauti per „Bluetooth“seriją ir keistis baitų informacija.

Pagrindinis šios sistemos įspėjimas yra tas, kad maksimalus žodžio ilgis, siunčiamas per „Bluetooth“, yra 8 bitai, o ADC reikšmė - 12 bitų. Norėdami išspręsti šią problemą, padalinau vieną ADC reikšmę į 2 atskiras 6 bitų reikšmes (MSB ir LSB), o likusieji 2 bitai buvo naudojami pranešimo tipui nustatyti (MSB, LSB, CHK).

Todėl, norėdami transliuoti vieną ADC vertę, faktinę vertę padalijame į 2 pranešimus. Norėdami patikrinti tų žinučių vientisumą, išsiunčiau trečią žinutę su pirmųjų 2 pranešimų XOR.

Patikrinus vertės vientisumą, mes galime pritaikyti tą pačią funkciją, kad gautume dB lygį ir nubraižytume jį tiesioginėje diagramoje.

6 žingsnis: Santrauka

Nors aš šio projekto mikrovaldiklio dalis veikia gana gerai, rodydamas kambario garsumą, susidūriau su kai kuriomis problemomis siunčiant duomenis per „Bluetooth“dėl paketų praradimo.

Šio projekto šaltinio kodą rasite čia:

  • „Android“papildoma programa - repo
  • Mikrovaldiklio kodas - repo

Nesivaržykite prisidėti, jei jums tai kažkaip naudinga.