Innholdsfortegnelse:

Mikrokontroller basert metronom: 5 trinn
Mikrokontroller basert metronom: 5 trinn

Video: Mikrokontroller basert metronom: 5 trinn

Video: Mikrokontroller basert metronom: 5 trinn
Video: Arduino Variable Power Supply 2024, November
Anonim
Image
Image

En metronom er en timing -enhet som brukes av musikere for å holde oversikt over beats i sanger og for å utvikle en følelse av timing blant nybegynnere som lærer et nytt instrument. Det hjelper til med å opprettholde en rytmesans som er avgjørende i musikk.

Denne metronom som er bygd her kan brukes til å angi antall slag per takt og slagene per minutt. Når disse oppsettdataene er lagt inn, piper det i henhold til dataene, ledsaget av passende belysning ved hjelp av lysdioder. Oppsettdataene vises på en LCD -skjerm.

Trinn 1: Nødvendige komponenter:

·

  • Atmega8A mikrokontroller
  • · 16*2 lcd -skjerm
  • · Piezo Buzzer
  • · Lysdioder (grønn, rød)
  • · Motstander (220e, 330e, 1k, 5.6k)
  • · Trykknapper (2* anti-locking, 1* locking)
  • · 3V CR2032 myntcellebatteri (*2)
  • Myntbatteriholder (*2)
  • · 6 -pins Relimate (polarisert) kontakt

Trinn 2: Lag kretsen

Gjør kretsforbindelsene som vist på bildet på et veroboard og lodd tilkoblingene ordentlig

Trinn 3: Funksjoner i metronom

Metronomens grensesnitt er hovedsakelig opptatt av LCD -skjermen. Over den er 8A mikrokontrolleren plassert sentralt med lysdiodene og summeren til høyre. De tre bryterne og Relimate -kontakten er plassert øverst.

Hele prosjektet drives kun av to myntcellebatterier (i serie @6V 220mAh) med en estimert kjøretid på 20 dager til 1 måned (ikke kontinuerlig). Derfor er den moderat strømeffektiv og har et nåværende krav på 3 - 5 mA.

Den selvlåsende bryteren er plassert ytterst til venstre og er PÅ/AV -knappen. Knappen i midten er Setup -knappen og knappen til høyre brukes til å endre verdiene for bpm og beats (per bar).

Når du trykker på PÅ/AV -bryteren, slås LCD -skjermen på og viser verdien av slag per takt. Den venter i 3 sekunder på at brukeren endrer verdien, og deretter tar den resulterende verdien som input. Denne verdien varierer mellom 1/4, 2/4, 3/4, 4/4.

Deretter viser den slagene per minutt (bpm) og venter igjen i 3 sekunder på at brukeren kan endre verdien hvoretter den angir den spesielle verdien. Denne ventetiden på 3 sekunder kalibreres etter at brukeren endrer en verdi. Bpm -verdiene kan variere fra 30 til 240. Hvis du trykker på Setup -knappen under bpm -oppsettet, tilbakestilles verdien til 30 bpm, noe som er nyttig for å redusere antall klikk på knappen. Bpm -verdiene er multipler av 5.

Etter at oppsettet er utført, slås LCD -bakgrunnsbelysningen av for å spare batteri. Summeren piper en gang for hvert slag og lysdiodene blinker en om gangen vekselvis for hvert slag. Trykk på Oppsett -knappen for å endre verdier. Når du gjør det, slås LCD -bakgrunnsbelysningen på og taktmeldingen vises akkurat som nevnt tidligere med samme prosedyre etterpå.

Atmega8A -mikrokontrolleren består av 500 byte EEPROM, noe som betyr at uansett verdi for slag og bpm legges inn, forblir lagret selv etter at metronom er slått av. Derfor slår den på igjen, slik at den fortsetter med de samme dataene som ble angitt før.

Relimate -kontakten er faktisk en SPI -topptekst som kan brukes til to formål. Den kan brukes til å omprogrammere Atmega8A mikrokontroller for å oppdatere fastvaren og legge til nye funksjoner i metronom. For det andre kan en ekstern strømforsyning også brukes til å drive metronom for hardcore -brukere. Men denne strømforsyningen må ikke være større enn 5,5 volt, og den overstyrer PÅ/AV -bryteren. Av sikkerhetsmessige årsaker MÅ denne bryteren være av, slik at den eksterne forsyningen ikke blir kort med de innebygde batteriene.

Trinn 4: Beskrivelse

Dette prosjektet er laget ved hjelp av Atmel Atmega8A mikrokontroller som er programmert ved hjelp av Arduino IDE via en Arduino Uno/Mega/Nano som brukes som en ISP programmerer.

Denne mikrokontrolleren er en mindre omtalt versjon av Atmel Atmega328p som brukes mye i Arduino Uno. Atmega8A består av 8Kb programmerbart minne med 1Kb RAM. Det er en 8 -biters mikrokontroller som kjører på samme frekvens som 328p, dvs. 16Mhz.

I dette prosjektet, ettersom strømforbruket er et viktig aspekt, har klokkefrekvensen blitt redusert og den interne 1 Mhz -oscillatoren brukes. Dette reduserer det nåværende kravet sterkt til omtrent 3,5 mA @3,3V og 5mA @4,5V.

Arduino IDE har ikke muligheten til å programmere denne mikrokontrolleren. Derfor ble en “Minicore” -pakke (plugin) installert for å kjøre 8A med den interne oscillatoren ved hjelp av en Optiboot bootloader. Det ble lagt merke til at effektbehovet til prosjektet økte med økende spenning. Derfor for å oppnå optimal strømutnyttelse, var mikrokontrolleren satt til å kjøre på 1 MHz med et enkelt 3V myntbatteri på bare 3,5mA. Men det ble observert at LCD -skjermen ikke fungerte som den skal ved en så lav spenning. Derfor ble beslutningen om å bruke to myntbatterier i serie brukt for å øke spenningen til 6V. Men dette betydde at dagens forbruk økte til 15mA, noe som var en stor ulempe ettersom batterilevetiden ville bli veldig dårlig. Den oversteg også den sikre spenningsgrensen på 5,5 V for 8A mikrokontrolleren.

Derfor ble en 330 ohm motstand koblet i serie med 6V strømforsyning for å kvitte seg med dette problemet. Motstanden får i utgangspunktet et spenningsfall over seg selv til å senke spenningsnivået innen 5,5V for å kjøre mikrokontrolleren trygt. I tillegg ble verdien på 330 valgt ved å ta hensyn til ulike faktorer:

  • · Målet var å kjøre 8A på så lav spenning som mulig for å spare strøm.
  • · Det ble observert at LCD -skjermen sluttet å fungere under 3,2V, selv om mikrokontrolleren fortsatt fungerte
  • · Denne verdien på 330 sørger for at spenningsfallet i ytterpunktene er nøyaktig for å få full bruk av myntbatteriene.
  • · Når myntcellene var på topp, var spenningen rundt 6,3V, og 8A mottok en effektiv spenning på 4,6 - 4,7 V (@ 5mA). Og da batteriene nesten var tørket ut, var spenningen rundt 4V med 8A og LCD -en som mottok akkurat nok spenning, dvs. 3,2V for å fungere korrekt. (@3,5mA)
  • · Under 4v -nivået på batteriene var de praktisk talt ubrukelige uten at noe juice var igjen for å drive noe. Spenningsfallet over motstanden varierer hele tiden siden strømforbruket til 8A -mikrokontrolleren og lcd -en reduseres med redusert spenning som i hovedsak bidrar til å øke batterilevetiden.

16*2 LCD -en ble programmert ved hjelp av det innebygde LiquidCrystal -biblioteket i Arduino IDE. Den bruker 6 datapinner på 8A mikrokontrolleren. I tillegg ble lysstyrken og kontrasten kontrollert ved hjelp av to datapinner. Dette ble gjort for ikke å bruke en ekstra komponent, dvs. et potensiometer. I stedet ble PWM -funksjonen til datapinne D9 brukt til å justere kontrasten på skjermen. Også LCD -bakgrunnsbelysningen måtte være slått av når den ikke var nødvendig, så dette hadde ikke vært mulig uten å bruke en datapinne for å drive den. En 220 ohm motstand ble brukt for å begrense strømmen over bakgrunnsbelysningens LED.

Summeren og lysdiodene var også koblet til datapinnene på 8A (en for hver). En motstand på 5,6 k ohm ble brukt for å begrense strømmen over den røde LED -en mens en 1 k ohm ble brukt for den grønne. Motstandsverdiene er valgt ved å skaffe et sweet spot mellom lysstyrke og strømforbruk.

PÅ/AV -knappen er ikke koblet til en datapinne og er bare en bryter som bytter prosjekt. En av terminalene kobles til 330 ohm -motstanden, mens den andre kobles til Vcc -pinnene på LCD -en og 8A. De to andre knappene er koblet til datapinner som er internt trukket opp for å forsyne spenning via programvare. Dette er nødvendig for at bryterne skal fungere.

I tillegg er datapinnen, som Oppsett -knappen kobles til, en maskinvareavbruddsnål. Dens avbruddsrutine (ISR) er aktivert i Arduino IDE. Hva dette betyr er at når brukeren ønsker å kjøre oppsettsmenyen, stopper 8A den nåværende driften av å fungere som en metronom, og kjører ISR som i utgangspunktet aktiverer oppsettsmenyen. Ellers ville brukeren ikke ha tilgang til Setup -menyen.

EEPROM -alternativet som er nevnt før, sørger for at de angitte dataene forblir lagret selv etter at kortet er slått av. Og SPI -overskriften består av 6 pins - Vcc, Gnd, MOSI, MISO, SCK, RST. Dette er en del av SPI -protokollen, og som nevnt tidligere kan en ISP -programmerer brukes til å programmere 8A igjen for å legge til nye funksjoner eller noe annet. Vcc -pinnen er isolert fra batteriets positive terminal, og derfor gir Metronom muligheten til å bruke en ekstern strømforsyning med tanke på begrensningene nevnt før.

Hele prosjektet ble konstruert i en Veroboard ved å lodde de enkelte komponentene og de riktige tilkoblingene i henhold til kretsdiagrammet.

Anbefalt: