Sisukord:

Mikrokontrolleril põhinev metronoom: 5 sammu
Mikrokontrolleril põhinev metronoom: 5 sammu

Video: Mikrokontrolleril põhinev metronoom: 5 sammu

Video: Mikrokontrolleril põhinev metronoom: 5 sammu
Video: Программирование Arduino, светодиод мигает 5 раз, затем выключается 2024, Juuli
Anonim
Image
Image

Metronoom on ajaseade, mida muusikud kasutavad laulude löökide jälgimiseks ja uue pilli õppivate algajate seas ajataju arendamiseks. See aitab säilitada rütmitunnet, mis on muusikas ülioluline.

Selle siia ehitatud metronoomi abil saab määrata löökide arvu baari kohta ja lööke minutis. Kui need seadistusandmed on sisestatud, piiksub see vastavalt andmetele, mis on varustatud sobiva valgustusega, kasutades LED -e. Seadistusandmed kuvatakse LCD -ekraanil.

Samm: vajalikud komponendid:

·

  • Mikrokontroller Atmega8A
  • · 16*2 LCD ekraan
  • · Pietsosummer
  • · LEDid (roheline, punane)
  • · Takistid (220e, 330e, 1k, 5.6k)
  • · Nupud (2* mitteblokeeruv, 1* lukustus)
  • · 3V CR2032 mündipatarei (*2)
  • Mündipatarei hoidja (*2)
  • · 6 -pin Relimate (polariseeritud) pistik

Samm: vooluringi tegemine

Tehke vooluahela ühendused, nagu on näidatud pildil, ja jootke ühendused korralikult

Samm: metronoomi omadused

Metronoomi liides on hõivatud peamiselt LCD -ekraaniga. Selle kohal on 8A mikrokontroller, mis on paigutatud keskele koos valgusdioodide ja helisignaaliga paremal. Kolm lülitit ja pistik Relimate asetatakse ülaossa.

Kogu projekt töötab ainult kahe mündipatareiga (seerias @6V 220mAh), mille eeldatav tööaeg on 20 päeva kuni 1 kuu (mitte pidevalt). Seetõttu on see mõõdukalt energiatõhus ja selle voolunõue on 3–5 mA.

Iselukustuv lüliti asub vasakus servas ja on sisse/välja nupp. Keskel olev nupp on seadistusnupp ja paremal asuvat nuppu kasutatakse löögi ja löögi väärtuste muutmiseks (baari kohta).

Kui ON/OFF lülitit vajutatakse, lülitub LCD sisse ja kuvab löökide väärtuse baari kohta. See ootab 3 sekundit, kuni kasutaja muudab väärtust, mille järel ta võtab sisestatud väärtuse. See väärtus jääb vahemikku 1/4, 2/4, 3/4, 4/4.

Seejärel kuvab see lööki minutis (lööki minutis) ja ootab uuesti 3 sekundit, kuni kasutaja muudab väärtust, mille järel ta konkreetse väärtuse määrab. See 3 -sekundiline ooteaeg kalibreeritakse pärast seda, kui kasutaja on väärtust muutnud. Bpm väärtused võivad varieeruda vahemikus 30 kuni 240. Seadistusnupu vajutamine bpm seadistamise ajal nullib selle väärtuseks 30 lööki minutis, mis aitab vähendada nupuvajutuste arvu. Bpm väärtused on 5 kordajad.

Pärast seadistamist lülitub akude säästmiseks välja LCD taustvalgus. Helisignaal piiksub üks kord iga löögi kohta ja valgusdioodid vilguvad kordamööda iga löögi järel. Väärtuste muutmiseks vajutage nuppu Seadistamine. Seda tehes lülitub LCD taustvalgus sisse ja löögiviip kuvatakse sama protseduuriga, nagu varem mainitud.

Atmega8A mikrokontroller koosneb 500 baidist EEPROM -st, mis tähendab, et kõik löökide ja löökide väärtused sisestatakse, säilitatakse isegi pärast metronoomi väljalülitamist. Seetõttu lülitab see uuesti sisse, jätkates samade andmetega, mis varem sisestati.

Relimate -pistik on tegelikult SPI -päis, mida saab kasutada kahel eesmärgil. Seda saab kasutada Atmega8A mikrokontrolleri ümberprogrammeerimiseks, et värskendada selle püsivara ja lisada metronoomi uusi funktsioone. Teiseks saab hardcore kasutajate metronoomi toiteks kasutada ka välist toiteallikat. Kuid see toiteallikas ei tohi olla suurem kui 5,5 volti ja see tühistab ON/OFF lüliti. Ohutuse huvides PEAB see lüliti olema välja lülitatud, et väline toide sisseehitatud patareidega lühisesse ei läheks.

4. samm: kirjeldus

See projekt on tehtud Atmel Atmega8A mikrokontrolleri abil, mis on programmeeritud Arduino IDE abil Arduino Uno/Mega/Nano kaudu, mida kasutatakse ISP programmeerijana.

See mikrokontroller on Atmel Atmega328p vähem esiletoodud versioon, mida kasutatakse laialdaselt Arduino Unos. Atmega8A sisaldab 8Kb programmeeritavat mälu koos 1Kb RAM -iga. See on 8 -bitine mikrokontroller, mis töötab samal sagedusel kui 328p, st 16Mhz.

Selles projektis, kuna praegune tarbimine on oluline aspekt, on taktsagedust vähendatud ja kasutatakse sisemist 1 Mhz ostsillaatorit. See vähendab oluliselt praegust vajadust umbes 3,5 mA @3,3 V ja 5 mA @4,5 V.

Arduino IDE -l pole võimalust seda mikrokontrollerit programmeerida. Seetõttu installiti pakett „Minicore” (pistikprogramm), et käivitada 8A koos oma sisemise ostsillaatoriga, kasutades Optiboot alglaadurit. Märgati, et projekti võimsusvajadus suurenes pinge suurenedes. Seega optimaalseks energiakasutuseks seadistati mikrokontroller töötama sagedusel 1 MHz ja ühe 3 V mündipatareiga, mille joonis on vaid 3,5 mA. Kuid täheldati, et LCD ei tööta nii madala pinge korral korralikult. Seega rakendati kahe mündipatarei järjestikku kasutamise otsust, et pinge tõusta 6 V -ni. Kuid see tähendas, et praegune tarbimine suurenes 15 mA -ni, mis oli suur puudus, kuna aku kasutusaeg muutub väga halvaks. Samuti ületas see 8A mikrokontrolleri ohutu pinge piiri 5,5 V.

Seega ühendati 330 oomi takisti järjestikku 6V toiteallikaga, et sellest probleemist lahti saada. Põhimõtteliselt põhjustab takisti pingelanguse enda sees, et alandada pingetaset 5,5 V piires, et mikrokontroller ohutult töötada. Lisaks valiti 330 väärtus, võttes arvesse erinevaid tegureid:

  • · Eesmärk oli voolu säästmiseks käivitada 8A võimalikult madala pingega.
  • · Täheldati, et LCD lakkas töötamast alla 3,2 V, kuigi mikrokontroller töötas endiselt
  • · See väärtus 330 tagab mündipatareide täielikuks ärakasutamiseks, et äärmuslikud pingelangused on täpselt täpsed.
  • · Kui mündielemendid olid haripunktis, oli pinge umbes 6,3 V, kusjuures 8A sai pinget 4,6 - 4,7 V (@ 5mA). Ja kui patareid olid peaaegu kuivanud, oli pinge umbes 4 V, 8A ja LCD sai täpselt piisavalt pinget, st 3,2 V, et korralikult töötada. (@3,5 mA)
  • · Alla patareide 4v taseme olid need praktiliselt kasutud ilma mahlata, et midagi toita. Pingelangus takistil varieerub kogu aja jooksul, kuna 8A mikrokontrolleri ja LCD voolutarve väheneb pinge vähendamisega, mis aitab oluliselt kaasa aku eluea pikendamisele.

16*2 LCD programmeeriti Arduino IDE sisseehitatud LiquidCrystali raamatukogu abil. See kasutab 8A mikrokontrolleri 6 tihvti. Lisaks kontrolliti selle heledust ja kontrasti kahe andmestiku abil. Seda tehti selleks, et mitte kasutada lisakomponenti, st potentsiomeetrit. Selle asemel kasutati ekraani kontrasti reguleerimiseks andmestiku D9 PWM -funktsiooni. Ka LCD -taustvalgus pidi välja lülituma, kui seda ei nõutud, nii et see poleks olnud võimalik ilma toiteallikata. Taustavalgustuse LED -i voolu piiramiseks kasutati 220 oomi takistit.

Sumin ja valgusdioodid olid samuti ühendatud 8A andmeklemmidega (üks kummagi jaoks). Punase LED -i voolu piiramiseks kasutati 5,6 k oomi takistit, rohelise puhul 1 k oomi. Takisti väärtused on valitud heleduse ja voolutarbimise vahel magusa koha omandamisega.

Nupp SISSE/VÄLJA ei ole ühendatud andmestikuga ja see on lihtsalt lüliti, mis muudab projekti. Üks selle klemmidest on ühendatud 330 oomi takistiga, teine aga LCD ja 8A Vcc kontaktidega. Kaks muud nuppu on ühendatud andmekontaktidega, mis on tarkvara kaudu sisemiselt toitepingeni tõmmatud. See on vajalik lülitite tööks.

Lisaks on andmestik, millega seadistusnupp ühendub, riistvara katkestamise tihvt. Selle katkestusteenuse rutiin (ISR) aktiveeritakse Arduino IDE -s. See tähendab, et alati, kui kasutaja soovib käivitada seadistusmenüüd, peatab 8A oma praeguse toimimise metronoomina ja käivitab ISR -i, mis põhimõtteliselt aktiveerib menüü Seadistamine. Vastasel juhul ei pääse kasutaja häälestusmenüüsse.

Eelnevalt mainitud EEPROM -valik tagab, et sisestatud andmed jäävad salvestatuks ka pärast plaadi väljalülitamist. Ja SPI päises on 6 tihvti - Vcc, Gnd, MOSI, MISO, SCK, RST. See on osa SPI protokollist ja nagu varem mainitud, saab ISP programmeerijat kasutada 8A uuesti programmeerimiseks, et lisada uusi funktsioone või midagi muud. Vcc tihvt on isoleeritud aku positiivsest klemmist ja seetõttu pakub Metronome võimalust kasutada välist toiteallikat, pidades silmas eespool nimetatud piiranguid.

Kogu projekt koostati Veroboardis, jootes üksikud komponendid ja sobivad ühendused vastavalt vooluahelale.

Soovitan: