Indholdsfortegnelse:

Mikro-controller baseret metronom: 5 trin
Mikro-controller baseret metronom: 5 trin

Video: Mikro-controller baseret metronom: 5 trin

Video: Mikro-controller baseret metronom: 5 trin
Video: Coding@home - 16 Следите за музыкой 2024, Juli
Anonim
Image
Image

En metronom er en timing -enhed, der bruges af musikere til at holde styr på beats i sange og til at udvikle en følelse af timing blandt begyndere, der lærer et nyt instrument. Det hjælper med at opretholde en rytmesans, som er afgørende i musikken.

Denne metronom, der er bygget her, kan bruges til at indstille antallet af slag pr. Bar og slagene i minuttet. Når disse opsætningsdata er indtastet, bipper de i henhold til dataene ledsaget af passende belysning ved hjælp af lysdioder. Opsætningsdataene vises på en LCD -skærm.

Trin 1: Påkrævede komponenter:

·

  • Atmega8A mikrokontroller
  • · 16*2 Lcd Display
  • · Piezo Buzzer
  • · Lysdioder (grøn, rød)
  • · Modstande (220e, 330e, 1k, 5.6k)
  • · Trykknapper (2* anti-locking, 1* locking)
  • · 3V CR2032 møntcellebatteri (*2)
  • Møntbatteriholder (*2)
  • · 6pin Relimate (polariseret) stik

Trin 2: Lav kredsløbet

Lav kredsløbstilslutningerne som vist på billedet på et veroboard, og lod forbindelserne korrekt

Trin 3: Metronomenes funktioner

Metronomens grænseflade er hovedsageligt optaget af lcd -skærmen. Over den er 8A mikrokontrolleren placeret centralt med lysdioderne og summeren til højre. De tre kontakter og Relimate -stikket er placeret øverst.

Hele projektet drives kun af to møntcellebatterier (i serie @6V 220mAh) med en anslået driftstid på 20 dage til 1 måned (ikke kontinuerligt). Derfor er den moderat strømeffektiv og har et aktuelt krav på 3 - 5 mA.

Den selvlåsende kontakt er placeret yderst til venstre og er ON/OFF -knappen. Knappen i midten er knappen Opsætning, og knappen til højre bruges til at ændre værdierne for bpm og slag (pr. Bar).

Når der trykkes på ON/OFF -kontakten, tændes lcd'en og viser værdien af slag pr. Bar. Det venter i 3 sekunder på, at brugeren ændrer værdien, hvorefter den tager den resulterende værdi som input. Denne værdi ligger mellem 1/4, 2/4, 3/4, 4/4.

Derefter viser det slag pr. Minut (bpm) og venter igen i 3 sekunder på, at brugeren ændrer værdien, hvorefter den indstiller den særlige værdi. Denne ventetid på 3 sekunder kalibreres, efter at brugeren har ændret en værdi. Bpm -værdierne kan variere fra 30 til 240. Hvis du trykker på knappen Setup under bpm -opsætningen, nulstilles værdien til 30 bpm, hvilket er nyttigt til at reducere mængden af klik på knappen. Bpm -værdierne er multipler af 5.

Når opsætningen er udført, slukker LCD -baggrundsbelysningen for at spare batteri. Summeren bipper én gang for hvert slag, og lysdioderne blinker en ad gangen skiftevis for hvert slag. For at ændre værdier trykkes der på knappen Setup. Når du gør det, tændes lcd -baggrundsbelysningen, og taktprompten vises som nævnt før med den samme procedure bagefter.

Atmega8A -mikrokontrolleren består af 500 bytes EEPROM, hvilket betyder, at uanset værdier for beats og bpm indtastes, forbliver de gemt, selv efter at metronomen er slukket. Derfor tændes den igen, så den genoptages med de samme data, som blev indtastet før.

Relimate -stikket er faktisk et SPI -header, der kan bruges til to formål. Den kan bruges til at omprogrammere Atmega8A mikrokontroller til at opdatere sin firmware og tilføje nye funktioner til metronom. For det andet kan en ekstern strømforsyning også bruges til at drive metronomen til hardcore -brugere. Men denne strømforsyning må ikke være større end 5,5 volt, og den tilsidesætter tænd/sluk -kontakten. Af sikkerhedsmæssige årsager SKAL denne kontakt være slukket, så den eksterne forsyning ikke kortslutter med de indbyggede batterier.

Trin 4: Beskrivelse

Dette projekt er lavet ved hjælp af Atmel Atmega8A mikrokontroller, der er programmeret ved hjælp af Arduino IDE via en Arduino Uno/Mega/Nano, der bruges som en ISP -programmerer.

Denne mikrokontroller er en mindre fremhævet version af Atmel Atmega328p, som bruges i vid udstrækning i Arduino Uno. Atmega8A består af 8Kb programmerbar hukommelse med 1Kb RAM. Det er en 8 bit mikrokontroller, der kører på samme frekvens som 328p, dvs. 16Mhz.

I dette projekt, da strømforbruget er et vigtigt aspekt, er urfrekvensen reduceret, og den interne 1 Mhz oscillator bruges. Dette reducerer det nuværende krav kraftigt til ca. 3,5 mA @3,3V og 5mA @4,5V.

Arduino IDE har ikke mulighed for at programmere denne mikrokontroller. Derfor blev der installeret en "Minicore" -pakke (plugin) til at køre 8A med dens interne oscillator ved hjælp af en Optiboot bootloader. Det blev bemærket, at projektets strømbehov steg med stigende spænding. Derfor var mikrokontrolleren for optimal strømudnyttelse indstillet til at køre ved 1 MHz med et enkelt 3V møntbatteri på kun 3,5 mA. Men det blev observeret, at lcd'en ikke fungerede korrekt ved en så lav spænding. Derfor blev beslutningen om at bruge to møntbatterier i serie anvendt for at sænke spændingen til 6V. Men det betød, at det nuværende forbrug steg til 15mA, hvilket var en enorm ulempe, da batterilevetiden ville blive meget dårlig. Det overskred også den sikre spændingsgrænse på 5,5 V for 8A mikrokontrolleren.

Derfor blev en 330 ohm modstand forbundet i serie med 6V strømforsyningen for at slippe af med dette problem. Modstanden får dybest set et spændingsfald over sig selv til at sænke spændingsniveauet inden for 5,5V for sikkert at køre mikrokontrolleren. Derudover blev værdien på 330 valgt ved at tage forskellige faktorer i betragtning:

  • · Målet var at køre 8A ved så lav en spænding som muligt for at spare strøm.
  • · Det blev observeret, at lcd'en holdt op med at fungere under 3,2V, selvom mikrokontrolleren stadig fungerede
  • · Denne værdi på 330 sørger for, at spændingsfaldene i ekstremerne er nøjagtige for at udnytte møntbatterierne fuldt ud.
  • · Når møntcellerne var på sit højeste, var spændingen omkring 6,3V, hvor 8A modtog en effektiv spænding på 4,6 - 4,7 V (@ 5mA). Og da batterierne næsten var tørrede ud, var spændingen omkring 4V med 8A og LCD'en modtog lige nok spænding, dvs. 3,2V til at fungere korrekt. (@3,5mA)
  • · Under 4v -niveauet på batterierne var de faktisk ubrugelige, uden at der var saft tilbage til at drive noget. Spændingsfaldet over modstanden varierer hele tiden siden det nuværende forbrug af 8A mikrokontrolleren og lcd'en reduceres med reducerende spænding, hvilket i det væsentlige hjælper med at øge batteriets levetid.

16*2 LCD'en blev programmeret ved hjælp af det indbyggede LiquidCrystal -bibliotek i Arduino IDE. Den anvender 6 datapinde på 8A mikrokontrolleren. Derudover blev dens lysstyrke og kontrast styret ved hjælp af to datapinde. Dette blev gjort for ikke at bruge en ekstra komponent, dvs. et potentiometer. I stedet blev PWM -funktionen til datastift D9 brugt til at justere skærmens kontrast. Også LCD -baggrundsbelysningen skulle være slukket, når den ikke var påkrævet, så dette ville ikke have været muligt uden at bruge en datapind til at drive den. En 220 ohm modstand blev brugt til at begrænse strømmen over baggrundsbelysningens LED.

Buzzer og lysdioder var også forbundet til datapolerne på 8A (en for hver). En 5,6 k ohm modstand blev brugt til at begrænse strømmen over den røde LED, mens en 1 k ohm blev brugt til den grønne. Modstandsværdierne er valgt ved at opnå et søde sted mellem lysstyrke og strømforbrug.

TÆND/SLUK -knappen er ikke forbundet til en datapind og er simpelthen en kontakt, der skifter projekt. Den ene af dens terminaler tilsluttes 330 ohm modstanden, mens den anden forbinder til Vcc -benene på lcd'en og 8A. De to andre knapper er forbundet til datapinde, der internt trækkes op for at levere spænding via software. Dette er nødvendigt for afbrydernes funktion.

Derudover er datapinden, som knappen Setup forbindes til, en hardware -afbrydelses -pin. Dens interrupt service -rutine (ISR) er aktiveret i Arduino IDE. Hvad dette betyder, er, at når brugeren ønsker at køre opsætningsmenuen, afbryder 8A sin nuværende drift med at fungere som en metronom og kører ISR'en, som grundlæggende aktiverer opsætningsmenuen. Ellers ville brugeren ikke kunne få adgang til menuen Opsætning.

EEPROM -indstillingen nævnt før sikrer, at de indtastede data forbliver gemt, selv efter at kortet er slukket. Og SPI -headeren består af 6 ben - Vcc, Gnd, MOSI, MISO, SCK, RST. Dette er en del af SPI -protokollen, og som tidligere nævnt kan en ISP -programmør bruges til at programmere 8A igen til tilføjelse af nye funktioner eller andet. Vcc -stiften er isoleret fra batteriets positive terminal, og derfor giver Metronom muligheden for at bruge en ekstern strømforsyning under hensyntagen til de begrænsninger, der er nævnt før.

Hele projektet blev konstrueret i en Veroboard ved lodning af de enkelte komponenter og de passende forbindelser i henhold til kredsløbsdiagrammet.

Anbefalede: