Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Ky ishte projekti im për një nga klasat e mia universitare të quajtur SMP. Ndërsa përdorëm bordin e zhvillimit STM32F103RB, unë e bazova projektin tim mbi këtë, duke filluar nga një njehsor i thjeshtë VU. Pastaj shtova disa veçori shtesë si mbështetja Bluetooth për të transmetuar vlerat nga ADC në një aplikacion Android për të krijuar një tabelë të thjeshtë dB.
Hapi 1: Përbërësit e përdorur
- Bordi i zhvillimit STM32F103RB
- Moduli bluetooth HC-05 zs040
- Paneli analog i njehsorit VU (lidhja)
- Mikrofon elektrik
- LM324N kuadrat op-amp
- 2 transistorë TIP120
- 3 dioda 1N4148
- Kondensatorë dhe rezistorë të ndryshëm
Edhe pse mund ta largoni këtë qark nga hekurudha 5V e bordit, unë gjithashtu përdor një furnizim me energji të jashtme 5V.
Hapi 2: Ndjekësi i Zarfit
Pjesa kryesore e këtij dizajni është ndjekësi i zarfit i cili merr sinjalin nga mikrofoni elektrik dhe nxjerr një tension proporcional me amplituda e sinjalit të mikrofonit.
Sinjali i papërpunuar nga mikrofoni kalohet së pari përmes një përforcuesi me një përfitim prej 150.
Sinjali pastaj kalohet përmes përcjellësit aktual të zarfit i cili duhet të nxjerrë vetëm pjesët pozitive të sinjalit.
Pjesa e fundit është zbritja e tensionit të kompensuar prej 1.65V nga dalja e përcjellësit të zarfit për të siguruar një sinjal prej 0 V pa zë, 1.65 V për zë të mesëm dhe 3.3 V për zhurmë të lartë që duhet të jetë në përputhje me atë të integruar ADC e bordit.
Ky ndjekës zarfi zbatohet nga kjo përgjigje e madhe StackExchange.
Hapi 3: PWM për njehsorin analog
Për të bërë gjilpërën e matësit, unë kam konfiguruar kohëmatësin TIM4 të bordit të mikrokontrolluesit me një frekuencë prej rreth 500 Hz.
Duke provuar në mënyrë të njëpasnjëshme cikle të ndryshme të punës, unë u pajtova me disa vlera që ishin të mjaftueshme për të bërë që gjilpëra të shkonte nga 0 në 100.
Unë do të detajoj procesin e shfaqjes së një vlere të saktë në hapin tjetër duke aplikuar disa matematikë.
Hapi 4: Kalibrimi i mikrofonit
Duke bërë ndjekësin e zarfit, unë atëherë shkrova një kod të thjeshtë për të përdorur ADC dhe verifikova që vlera e leximit ndryshon vërtet në përputhje me zhurmën brenda dhomës.
Për ta "përkthyer" këtë vlerë në një lexim aktual dB, unë kam përdorur një gjenerator toni në internet me një frekuencë prej 550 Hz dhe Android -in tim për të siguruar një lexim referimi.
Unë i kam komplotuar ato vlera dhe kam përdorur MatLAB's Curve Fit Tool për të marrë një funksion që harton leximet ADC në përafrimet aktuale të niveleve të dB (ose të paktën aq afër leximeve të telefonit tim).
Ne mund të shohim se kjo ndjek shkallën logaritmike të mikrofonit.
Unë gjithashtu bëra të njëjtën gjë për të hartuar pozicionin e gjilpërës në vlerat PWM. Unë i mblodha ato vlera duke rritur vlerën e PWM me 10 rresht, derisa nevoja goditi leximin në shkallën e saj.
Kombinimi i atyre 2 funksioneve kam një mënyrë të thjeshtë për të shfaqur leximin nga ADC në një vlerë aktuale në treguesin e matësit.
Hapi 5: Aplikacioni Android
Aplikacioni po përdor këtë bibliotekë të lezetshme për të komunikuar përmes serialit Bluetooth për të shkëmbyer informacione byte.
Paralajmërimi kryesor i këtij sistemi është se gjatësia maksimale e fjalës e dërguar përmes Bluetooth është 8 bit dhe vlera ADC përfaqësohet si 12 bit. Për të kapërcyer këtë çështje, unë ndava një vlerë ADC në 2 vlera të veçanta 6 bit (MSB dhe LSB) me 2 bitët e mbetur të përdorur për të identifikuar llojin e mesazhit (MSB, LSB, CHK).
Prandaj, për një vlerë të vetme ADC që duam të transmetojmë, ne e ndajmë vlerën aktuale në 2 mesazhe. Për të kontrolluar integritetin e atyre mesazheve, dërgova një mesazh të tretë me XOR të 2 mesazheve të para.
Pasi të jetë kontrolluar integriteti i vlerës, ne mund të aplikojmë të njëjtin funksion për të marrë nivelin dB dhe për ta paraqitur atë në tabelën tonë të drejtpërdrejtë.
Hapi 6: Përmbledhje
Ndërsa unë pjesa mikro-kontrolluese e këtij projekti punon mjaft mirë duke shfaqur zhurmën brenda një dhome, kam hasur në disa probleme kur dërgoja të dhëna përmes Bluetooth për shkak të humbjes së paketës.
Kodi burimor për këtë projekt mund të gjendet këtu:
- Aplikacioni shoqërues Android - repo
- Kodi i mikrokontrolluesit - repo
Mos ngurroni të kontribuoni nëse ju duket e dobishme kjo në çfarëdo mënyre.