Inhaltsverzeichnis:

Mikrocontroller-basiertes Metronom - Gunook
Mikrocontroller-basiertes Metronom - Gunook

Video: Mikrocontroller-basiertes Metronom - Gunook

Video: Mikrocontroller-basiertes Metronom - Gunook
Video: Метроном на ардуино! #arduino #электроника #метроном 2024, Juli
Anonim
Image
Image

Ein Metronom ist ein Zeitmessgerät, das von Musikern verwendet wird, um Beats in Songs zu verfolgen und ein Gefühl für das Timing bei Anfängern zu entwickeln, die ein neues Instrument erlernen. Es hilft, ein Rhythmusgefühl zu bewahren, das in der Musik von entscheidender Bedeutung ist.

Mit diesem hier gebauten Metronom können Sie die Anzahl der Schläge pro Takt und die Schläge pro Minute einstellen. Sobald diese Setup-Daten eingegeben sind, piept es entsprechend den Daten, begleitet von einer entsprechenden Beleuchtung mit LEDs. Die Setup-Daten werden auf einem LCD-Bildschirm angezeigt.

Schritt 1: Erforderliche Komponenten:

·

  • Atmega8A Mikrocontroller
  • · 16*2 LCD-Display
  • · Piezo-Summer
  • · LEDs (grün, rot)
  • · Widerstände (220e, 330e, 1k, 5.6k)
  • · Drucktaster (2* Antiblockier, 1* Blockade)
  • · 3V CR2032 Knopfzellenbatterie (*2)
  • Münzbatteriehalter (*2)
  • · 6-poliger Relimate-Anschluss (polarisiert)

Schritt 2: Herstellen der Schaltung

Stellen Sie die Schaltungsverbindungen wie im Bild gezeigt auf einem Veroboard her und löten Sie die Verbindungen richtig

Schritt 3: Funktionen des Metronoms

Die Oberfläche des Metronoms wird hauptsächlich vom LCD-Bildschirm eingenommen. Darüber befindet sich der 8A Mikrocontroller mittig platziert mit den LEDs und dem Summer rechts. Oben befinden sich die drei Schalter und der Relimate-Anschluss.

Das gesamte Projekt wird nur von zwei Knopfzellenbatterien (in Reihe @ 6V 220mAh) mit einer geschätzten Laufzeit von 20 Tagen bis 1 Monat (nicht kontinuierlich) betrieben. Daher ist er mäßig energieeffizient und hat einen Strombedarf von 3 – 5 mA.

Der selbstsperrende Schalter befindet sich ganz links und ist der EIN/AUS-Knopf. Die Schaltfläche in der Mitte ist die Setup-Schaltfläche und die Schaltfläche rechts wird verwendet, um die Werte für BPM und Beats (pro Takt) zu ändern.

Wenn der ON/OFF-Schalter gedrückt wird, schaltet sich das LCD ein und zeigt den Wert der Beats pro Takt an. Es wartet 3 Sekunden, bis der Benutzer den Wert ändert, woraufhin der resultierende Wert als Eingabe verwendet wird. Dieser Wert liegt zwischen 1/4, 2/4, 3/4, 4/4.

Dann zeigt es die Schläge pro Minute (bpm) an und wartet erneut 3 Sekunden, bis der Benutzer den Wert ändert, wonach der bestimmte Wert eingestellt wird. Diese Wartezeit von 3 Sekunden wird kalibriert, nachdem der Benutzer einen Wert geändert hat. Die bpm-Werte können von 30 bis 240 variieren. Durch Drücken der Setup-Taste während des bpm-Setups wird der Wert auf 30 bpm zurückgesetzt, was hilfreich ist, um die Anzahl der Tastenklicks zu reduzieren. Die bpm-Werte sind Vielfache von 5.

Nachdem die Einrichtung abgeschlossen ist, schaltet sich die LCD-Hintergrundbeleuchtung aus, um Batterie zu sparen. Der Summer piept einmal für jeden Beat und die LEDs blinken abwechselnd für jeden Beat. Um Werte zu ändern, wird die Setup-Taste gedrückt. Danach schaltet sich die LCD-Hintergrundbeleuchtung ein und die Beat-Eingabeaufforderung erscheint wie zuvor erwähnt, mit dem gleichen Verfahren danach.

Der Atmega8A-Mikrocontroller besteht aus 500 Byte EEPROM, was bedeutet, dass alle eingegebenen Beat- und BPM-Werte auch nach dem Ausschalten des Metronoms gespeichert bleiben. Wenn Sie es daher wieder einschalten, wird es mit den gleichen Daten fortgesetzt, die zuvor eingegeben wurden.

Der Relimate-Anschluss ist eigentlich ein SPI-Header, der für zwei Zwecke verwendet werden kann. Es kann verwendet werden, um den Atmega8A-Mikrocontroller neu zu programmieren, um seine Firmware zu aktualisieren und dem Metronom neue Funktionen hinzuzufügen. Zweitens kann für Hardcore-Anwender auch ein externes Netzteil zur Stromversorgung des Metronoms verwendet werden. Dieses Netzteil darf jedoch nicht größer als 5,5 Volt sein und übersteuert den EIN/AUS-Schalter. Aus Sicherheitsgründen MUSS dieser Schalter ausgeschaltet sein, damit die externe Stromversorgung nicht durch die eingebauten Batterien kurzgeschlossen wird.

Schritt 4: Beschreibung

Dieses Projekt wird mit dem Atmel Atmega8A-Mikrocontroller erstellt, der mit der Arduino IDE über einen Arduino Uno / Mega / Nano als ISP-Programmierer programmiert wird.

Dieser Mikrocontroller ist eine weniger ausgestattete Version des Atmel Atmega328p, der im Arduino Uno häufig verwendet wird. Der Atmega8A besteht aus 8 KB programmierbarem Speicher mit 1 KB RAM. Es ist ein 8-Bit-Mikrocontroller, der mit der gleichen Frequenz wie der 328p läuft, dh 16 MHz.

Da bei diesem Projekt die Stromaufnahme ein wichtiger Aspekt ist, wurde die Taktfrequenz reduziert und der interne 1-MHz-Oszillator verwendet. Dies reduziert den Strombedarf stark auf etwa 3,5 mA @3,3V und 5mA @4,5V.

Die Arduino-IDE verfügt nicht über die Möglichkeit, diesen Mikrocontroller zu programmieren. Daher wurde ein „Minicore“-Paket (Plugin) installiert, um den 8A mit seinem internen Oszillator mit einem Optiboot-Bootloader zu betreiben. Es wurde festgestellt, dass der Strombedarf des Projekts mit steigender Spannung zunahm. Für eine optimale Stromausnutzung wurde der Mikrocontroller daher so eingestellt, dass er mit 1 MHz mit einer einzigen 3-V-Knopfbatterie betrieben wird, die nur 3,5 mA verbraucht. Es wurde jedoch beobachtet, dass das LCD bei einer so niedrigen Spannung nicht richtig funktionierte. Daher wurde die Entscheidung getroffen, zwei Knopfzellen in Reihe zu verwenden, um die Spannung auf 6 V zu erhöhen. Dies bedeutete jedoch, dass der Stromverbrauch auf 15 mA anstieg, was ein großer Nachteil war, da die Akkulaufzeit sehr schlecht werden würde. Außerdem wurde die sichere Spannungsgrenze von 5,5 V des 8A-Mikrocontrollers überschritten.

Daher wurde ein 330 Ohm Widerstand in Reihe mit dem 6V Netzteil geschaltet, um dieses Problem zu beseitigen. Der Widerstand verursacht grundsätzlich einen Spannungsabfall über sich selbst, um den Spannungspegel auf 5,5 V zu senken, um den Mikrocontroller sicher zu betreiben. Zusätzlich wurde der Wert von 330 unter Berücksichtigung verschiedener Faktoren gewählt:

  • · Ziel war es, die 8A mit möglichst niedriger Spannung zu betreiben, um Strom zu sparen.
  • · Es wurde beobachtet, dass das LCD unter 3,2 V nicht mehr funktionierte, obwohl der Mikrocontroller noch funktionierte
  • · Dieser Wert von 330 stellt sicher, dass die Spannungsabfälle an den Extremen genau richtig sind, um die Knopfzellen voll auszunutzen.
  • · Wenn die Knopfzellen ihren Höhepunkt erreichten, betrug die Spannung etwa 6,3 V, wobei die 8 A eine effektive Spannung von 4,6 – 4,7 V (@ 5 mA) erhielt. Und als die Batterien fast ausgetrocknet waren, betrug die Spannung etwa 4 V mit 8 A und das LCD erhielt gerade genug Spannung, d. h. 3,2 V, um richtig zu funktionieren. (@3,5mA)
  • · Unterhalb des 4V-Niveaus der Batterien waren sie effektiv nutzlos, ohne dass noch Saft übrig war, um irgendetwas zu versorgen. Der Spannungsabfall am Widerstand variiert die ganze Zeit, da die Stromaufnahme des 8A-Mikrocontrollers und des LCD mit abnehmender Spannung sinkt, was wesentlich zur Erhöhung der Batterielebensdauer beiträgt.

Das 16 * 2 LCD wurde mit der eingebauten LiquidCrystal-Bibliothek der Arduino IDE programmiert. Es verwendet 6 Datenpins des 8A-Mikrocontrollers. Außerdem wurden Helligkeit und Kontrast über zwei Datenpins gesteuert. Dies wurde getan, um keine zusätzliche Komponente, z. B. ein Potentiometer, zu verwenden. Stattdessen wurde die PWM-Funktion des Datenpins D9 verwendet, um den Kontrast des Bildschirms anzupassen. Auch die LCD-Hintergrundbeleuchtung musste ausgeschaltet werden, wenn sie nicht benötigt wird, so dass dies ohne die Verwendung eines Daten-Pins zur Stromversorgung nicht möglich gewesen wäre. Ein 220-Ohm-Widerstand wurde verwendet, um den Strom durch die Hintergrundbeleuchtungs-LED zu begrenzen.

Der Summer und die LEDs wurden auch mit den Datenpins des 8A (jeweils einer) verbunden. Ein Widerstand von 5,6 kOhm wurde verwendet, um den Strom über die rote LED zu begrenzen, während ein 1k Ohm für die grüne verwendet wurde. Die Widerstandswerte wurden durch Erfassen eines Sweetspots zwischen Helligkeit und Stromverbrauch gewählt.

Die ON/OFF-Taste ist nicht mit einem Daten-Pin verbunden und ist lediglich ein Schalter, der das Projekt umschaltet. Einer seiner Anschlüsse ist mit dem 330-Ohm-Widerstand verbunden, während der andere mit den Vcc-Pins des LCD und des 8A verbunden ist. Die beiden anderen Taster sind mit Datenpins verbunden, die intern per Software auf Versorgungsspannung hochgezogen werden. Dies ist für die Funktion der Schalter erforderlich.

Außerdem ist der Daten-Pin, mit dem die Setup-Taste verbunden ist, ein Hardware-Interrupt-Pin. Seine Interrupt Service Routine (ISR) wird in der Arduino IDE aktiviert. Dies bedeutet, dass der 8A immer dann, wenn er das Setup-Menü ausführen möchte, seinen gegenwärtigen Betrieb als Metronom unterbricht und den ISR ausführt, der im Grunde das Setup-Menü aktiviert. Andernfalls könnte der Benutzer nicht auf das Setup-Menü zugreifen.

Die bereits erwähnte EEPROM-Option sorgt dafür, dass die eingegebenen Daten auch nach dem Ausschalten der Karte gespeichert bleiben. Und der SPI-Header besteht aus 6 Pins – Vcc, Gnd, MOSI, MISO, SCK, RST. Dies ist Teil des SPI-Protokolls und wie bereits erwähnt, kann ein ISP-Programmierer verwendet werden, um den 8A erneut zu programmieren, um neue Funktionen oder alles andere hinzuzufügen. Der Vcc-Pin ist vom Pluspol der Batterie isoliert und daher bietet das Metronom die Möglichkeit, eine externe Stromversorgung zu verwenden, wobei die oben genannten Einschränkungen berücksichtigt werden.

Das gesamte Projekt wurde in einem Veroboard aufgebaut, indem die einzelnen Komponenten und die entsprechenden Anschlüsse gemäß Schaltplan verlötet wurden.

Empfohlen: