Inhoudsopgave:

Op microcontroller gebaseerde metronoom - Ajarnpa
Op microcontroller gebaseerde metronoom - Ajarnpa

Video: Op microcontroller gebaseerde metronoom - Ajarnpa

Video: Op microcontroller gebaseerde metronoom - Ajarnpa
Video: Voltage Follower - Operational Amplifier | Basic Circuits | Electronics Tutorials 2024, November
Anonim
Image
Image

Een metronoom is een timingapparaat dat door muzikanten wordt gebruikt om beats in liedjes bij te houden en om een gevoel voor timing te ontwikkelen bij beginners die een nieuw instrument leren. Het helpt om een gevoel voor ritme te behouden, wat cruciaal is in muziek.

Deze hier gebouwde metronoom kan worden gebruikt om het aantal beats per maat en het aantal beats per minuut in te stellen. Zodra deze instellingsgegevens zijn ingevoerd, piept het volgens de gegevens, vergezeld van de juiste verlichting met behulp van LED's. De instellingsgegevens worden weergegeven op een LCD-scherm.

Stap 1: Benodigde onderdelen:

·

  • Atmega8A-microcontroller
  • · 16*2 LCD-scherm
  • · Piëzo-zoemer
  • · LED's (groen, rood)
  • · Weerstanden (220e, 330e, 1k, 5.6k)
  • · Drukknoppen (2* anti-vergrendeling, 1* vergrendeling)
  • · 3V CR2032 knoopcelbatterij (*2)
  • Knoopbatterijhouder (*2)
  • · 6-pins Relimate (gepolariseerde) connector

Stap 2: Het circuit maken

Maak de circuitverbindingen zoals op de afbeelding op een veroboard en soldeer de verbindingen goed

Stap 3: Kenmerken van de metronoom

De interface van de metronoom wordt voornamelijk ingenomen door het lcd-scherm. Daarboven is de 8A-microcontroller centraal geplaatst met de LED's en zoemer aan de rechterkant. Bovenaan zijn de drie schakelaars en de Relimate connector geplaatst.

Het hele project wordt alleen gevoed door twee knoopcelbatterijen (in serie @6V 220mAh) met een geschatte looptijd van 20 dagen tot 1 maand (niet continu). Het is daarom matig energiezuinig en heeft een stroombehoefte van 3 – 5 mA.

De zelfvergrendelende schakelaar is uiterst links geplaatst en is de AAN/UIT-knop. De knop in het midden is de Setup-knop en de knop rechts wordt gebruikt om de waarden voor bpm en beats (per maat) te wijzigen.

Wanneer de AAN/UIT-schakelaar wordt ingedrukt, gaat het lcd-scherm aan en wordt de waarde van het aantal beats per maat weergegeven. Het wacht 3 seconden totdat de gebruiker de waarde wijzigt, waarna het de resulterende waarde als invoer neemt. Deze waarde ligt tussen 1/4, 2/4, 3/4, 4/4.

Vervolgens geeft het de slagen per minuut (bpm) weer en wacht opnieuw 3 seconden totdat de gebruiker de waarde wijzigt, waarna het de specifieke waarde instelt. Deze wachttijd van 3 seconden wordt gekalibreerd nadat de gebruiker een waarde heeft gewijzigd. De bpm-waarden kunnen variëren van 30 tot 240. Als u tijdens het instellen van de bpm op de knop Setup drukt, wordt de waarde teruggezet op 30 bpm, wat handig is om het aantal klikken op de knop te verminderen. De bpm-waarden zijn veelvouden van 5.

Nadat de installatie is voltooid, wordt de lcd-achtergrondverlichting uitgeschakeld om de batterij te sparen. De zoemer piept één keer voor elke beat en de LED's knipperen afwisselend één voor één voor elke beat. Om waarden te wijzigen, wordt op de Setup-knop gedrukt. Als je dat doet, gaat de lcd-achtergrondverlichting aan en verschijnt de beat-prompt zoals eerder vermeld met dezelfde procedure daarna.

De Atmega8A-microcontroller bestaat uit 500 bytes aan EEPROM, wat betekent dat de waarden van beats en bpm die worden ingevoerd, opgeslagen blijven, zelfs nadat de metronoom is uitgeschakeld. Als u het dus weer inschakelt, wordt het hervat met dezelfde gegevens die eerder waren ingevoerd.

De Relimate-connector is eigenlijk een SPI-header die voor twee doeleinden kan worden gebruikt. Het kan worden gebruikt om de Atmega8A-microcontroller te herprogrammeren om de firmware bij te werken en nieuwe functies aan de metronoom toe te voegen. Ten tweede kan een externe voeding ook worden gebruikt om de metronoom van stroom te voorzien voor hardcore gebruikers. Maar deze voeding mag niet groter zijn dan 5,5 volt en heft de AAN/UIT-schakelaar op. Om veiligheidsredenen MOET deze schakelaar uitgeschakeld zijn, zodat de externe voeding geen kortsluiting maakt met de ingebouwde batterijen.

Stap 4: Beschrijving

Dit project is gemaakt met behulp van de Atmel Atmega8A-microcontroller die is geprogrammeerd met behulp van de Arduino IDE via een Arduino Uno/Mega/Nano die wordt gebruikt als een ISP-programmeur.

Deze microcontroller is een minder functionele versie van de Atmel Atmega328p die veel wordt gebruikt in de Arduino Uno. De Atmega8A bestaat uit 8Kb programmeerbaar geheugen met 1Kb RAM. Het is een 8-bits microcontroller die op dezelfde frequentie draait als de 328p, d.w.z. 16 Mhz.

In dit project is, omdat het stroomverbruik een belangrijk aspect is, de klokfrequentie verlaagd en de interne 1 Mhz-oscillator gebruikt. Dit vermindert de stroombehoefte aanzienlijk tot ongeveer 3,5 mA @ 3,3 V en 5 mA @ 4,5 V.

De Arduino IDE heeft niet de mogelijkheid om deze microcontroller te programmeren. Daarom werd een "Minicore" -pakket (plug-in) geïnstalleerd om de 8A met zijn interne oscillator te laten werken met behulp van een Optiboot-bootloader. Het viel op dat de stroombehoefte van het project toenam met toenemende spanning. Vandaar dat voor een optimaal stroomverbruik de microcontroller werd ingesteld om te werken op 1 MHz met een enkele 3V-knoopcelbatterij die slechts 3,5 mA verbruikt. Maar er werd geconstateerd dat het lcd-scherm niet goed functioneerde bij zo'n lage spanning. Vandaar de beslissing om twee knoopbatterijen in serie te gebruiken om de spanning naar 6V te verhogen. Maar dit betekende dat het stroomverbruik toenam tot 15mA, wat een enorm nadeel was omdat de levensduur van de batterij erg slecht zou worden. Ook overschreed het de veilige spanningslimiet van 5.5V van de 8A-microcontroller.

Daarom werd een weerstand van 330 ohm in serie geschakeld met de 6V-voeding om van dit probleem af te komen. De weerstand veroorzaakt in feite een spanningsval over zichzelf om het spanningsniveau binnen 5,5 V te verlagen om de microcontroller veilig te laten werken. Bovendien werd de waarde van 330 gekozen door rekening te houden met verschillende factoren:

  • · Het doel was om de 8A op een zo laag mogelijke spanning te laten werken om stroom te besparen.
  • · Er werd vastgesteld dat het lcd-scherm niet meer werkte onder 3,2 V, hoewel de microcontroller nog steeds functioneerde
  • · Deze waarde van 330 zorgt ervoor dat de spanningsdalingen bij de extremen exact nauwkeurig zijn om de knoopcelbatterijen volledig te benutten.
  • · Toen de knoopcellen op hun hoogtepunt waren, was de spanning ongeveer 6,3 V, terwijl de 8A een effectieve spanning van 4,6 - 4,7 V (@ 5 mA) ontving. En toen de batterijen bijna leeg waren, was de spanning rond de 4V met de 8A en het lcd-scherm kreeg net genoeg spanning, d.w.z. 3,2V om correct te functioneren. (@3.5mA)
  • · Onder het 4v-niveau van de batterijen waren ze effectief nutteloos zonder dat er nog sap over was om iets van stroom te voorzien. De spanningsval over de weerstand varieert de hele tijd, aangezien het stroomverbruik van de 8A-microcontroller en het lcd-scherm afneemt met het verminderen van de spanning, wat in wezen helpt bij het verlengen van de levensduur van de batterij.

Het 16*2 LCD-scherm is geprogrammeerd met behulp van de ingebouwde LiquidCrystal-bibliotheek van de Arduino IDE. Het maakt gebruik van 6 datapinnen van de 8A-microcontroller. Bovendien werden de helderheid en het contrast geregeld met behulp van twee datapinnen. Dit is gedaan om geen extra component, namelijk een potentiometer, te gebruiken. In plaats daarvan werd de PWM-functie van datapin D9 gebruikt om het contrast van het scherm aan te passen. Ook moest de lcd-achtergrondverlichting uit zijn als dat niet nodig was, dus dit zou niet mogelijk zijn geweest zonder een datapin te gebruiken om het van stroom te voorzien. Een 220 ohm weerstand werd gebruikt om de stroom over de backlight LED te begrenzen.

De zoemer en de LED's waren ook verbonden met de datapinnen van de 8A (één voor elk). Een weerstand van 5,6 k ohm werd gebruikt om de stroom over de rode LED te begrenzen, terwijl een weerstand van 1 k ohm werd gebruikt voor de groene. De weerstandswaarden zijn gekozen door het verkrijgen van een sweet spot tussen helderheid en stroomverbruik.

De AAN/UIT-knop is niet verbonden met een datapin en is gewoon een schakelaar die het project schakelt. Een van de aansluitingen wordt aangesloten op de weerstand van 330 ohm, terwijl de andere wordt aangesloten op de Vcc-pinnen van het lcd-scherm en de 8A. De twee andere knoppen zijn verbonden met datapinnen die intern via software naar boven worden getrokken om spanning te leveren. Dit is nodig voor de werking van de schakelaars.

Bovendien is de data-pin, waarmee de Setup-knop verbinding maakt, een Hardware Interrupt-pin. De interrupt service routine (ISR) wordt geactiveerd in de Arduino IDE. Wat dit betekent is dat wanneer de gebruiker het setup-menu wil gebruiken, de 8A zijn huidige werking als metronoom onderbreekt en de ISR uitvoert die in feite het setup-menu activeert. Anders heeft de gebruiker geen toegang tot het menu Instellingen.

De eerder genoemde EEPROM-optie zorgt ervoor dat de ingevoerde gegevens ook na het uitschakelen van het bord bewaard blijven. En de SPI-header bestaat uit 6 pinnen - Vcc, Gnd, MOSI, MISO, SCK, RST. Dit maakt deel uit van het SPI-protocol en zoals eerder vermeld, kan een ISP-programmeur worden gebruikt om de 8A opnieuw te programmeren voor het toevoegen van nieuwe functies of iets anders. De Vcc-pin is geïsoleerd van de positieve pool van de batterij en daarom biedt de metronoom de mogelijkheid om een externe voeding te gebruiken, rekening houdend met de eerder genoemde beperkingen.

Het hele project is in een Veroboard gebouwd door de afzonderlijke componenten en de bijbehorende verbindingen volgens het schakelschema te solderen.

Aanbevolen: