Kostenlose technische Bibliothek ENZYKLOPÄDIE DER FUNKELEKTRONIK UND ELEKTROTECHNIK Arduino. Operationen des analogen Ein-/Ausgangs funktionieren mit einem Ton. Enzyklopädie der Funkelektronik und Elektrotechnik Lexikon der Funkelektronik und Elektrotechnik / Funkamateur-Designer Obwohl digitale Eingabe-Ausgabe-Operationen die Lösung einer Vielzahl von Problemen ermöglichen, sind das Vorhandensein eines integrierten Analog-Digital-Wandlers (ADC) im Mikrocontroller der Arduino-Karte und die Möglichkeit, analoge Signale mithilfe der Pulsweitenmodulation auszugeben ( PWM) sorgen für die Arbeit mit analogen Sensoren und Aktoren aller Art und beeinflussen das Objekt proportional zum Steuersignal. Streng genommen können im Ausgabemodus alle Arduino-Portleitungen nur diskrete Signale übertragen, die nur zwei Zustände haben. Der Mikrocontroller ist jedoch in der Lage, diese Zustände sehr schnell zu ändern und Rechteckimpulse zu erzeugen. Wenn diese Impulse an ein Gerät mit Trägheitseigenschaften angelegt werden, verhält es sich so, als wäre die ihm zugeführte Spannung konstant, gleich dem Durchschnittswert des Impulses und ändert sich gleichmäßig und nicht in Sprüngen zwischen hoch und niedrig logische Ebenen. Im PWM-Modus erzeugt der Port ein Impulssignal mit konstanter Frequenz und variablem Tastverhältnis (dies ist das Verhältnis der Impulswiederholungsperiode zu ihrer Dauer). Anstelle des Tastverhältnisses arbeiten sie oft mit dessen Umkehrwert – dem Tastverhältnis, das von 0 (keine Impulse) bis 100 % (Impulse folgen, ineinander übergehen, ohne Pausen) geändert werden kann. Obwohl die Ausgangsspannung zu jedem Zeitpunkt einem hohen oder niedrigen Logikpegel entspricht, ist ihr Durchschnittswert daher proportional zum Arbeitszyklus. Wenn Sie an diesen Ausgang ein normales Multimeter anschließen, zeigt es diesen Wert an (natürlich, wenn die Impulsfrequenz hoch genug ist). In Arduino UNO können die Ausgänge D3, D5, D6, D9, D10 und D11 im PWM-Modus betrieben werden. Sie sind auf der Tafel meist mit „~“-Zeichen oder den Abkürzungen „PWM“ gekennzeichnet. Es ist zu beachten, dass Arduino-Boards anderer Modifikationen möglicherweise über mehr oder weniger solche Ausgänge verfügen. Im einfachsten Fall kann mittels PWM die Helligkeit einer LED gesteuert werden. Dieses Gerät ist praktisch trägheitsfrei, aber das menschliche Sehvermögen verfügt über eine ausreichende Trägheit, sodass eine Folge schneller LED-Blitze als kontinuierliches Leuchten wahrgenommen wird, dessen Helligkeit vom Füllfaktor abhängt. Diskrete Ausgänge, die PWM erzeugen können, sind standardmäßig für die Verwendung dieses Modus konfiguriert. Daher ist es nicht erforderlich, die Funktion pinMode() aufzurufen, um sie in diesem Modus zu betreiben. Um das Tastverhältnis eines PWM-Signals einzustellen, gibt es die Standardfunktion analogWrite(N, M), wobei N die Pin-Nummer und M eine Zahl ist, die proportional zum erforderlichen Tastverhältnis ist. Er muss im Bereich von 0 bis 255 liegen, wobei 0 einem Tastverhältnis von Null (konstanter Low-Pegel am Ausgang) und 255 - 100 % Tastverhältnis (konstanter High-Pegel am Ausgang) entspricht. Zeitdiagramme der Ausgangsspannung bei bestimmten Werten von M und dementsprechend das Kurzschluss-Tastverhältnis sind in Abb. dargestellt. 1.
Betrachten Sie zum Beispiel die in der Tabelle angegebene. 1 Programm, das die Helligkeit der an den Digitalausgang D9 angeschlossenen LED schrittweise erhöht und dann schrittweise verringert. Es basiert auf dem Standardbeispiel 3.AnalogFading, das mit der Arduino IDE geliefert wird. Die Aufzählung der Puls-Tastverhältnis-Werte wird hier mithilfe der bereits in [1] diskutierten for-Schleifenoperatoren umgesetzt. Tabelle 1. Um analoge Signale von externen Geräten im Arduino zu empfangen, sind die Eingänge A0-A5 vorgesehen, die standardmäßig auf den dafür erforderlichen Zustand eingestellt sind, sodass keine zusätzliche Initialisierung erforderlich ist. Der im Arduino UNO eingebaute ADC generiert 10-Bit-Binärcodes und wandelt die Eingangsspannung, die im Bereich von 0 bis +5 V liegt, in eine Ganzzahl von 0 bis 1023 (210-1) um. Um das Konvertierungsergebnis auszulesen, verwenden Sie die Funktion analogRead(N), wobei N die Nummer des Analogeingangs ist. An die analogen Eingänge des Arduino können Sie eine Vielzahl von Sensoren anschließen, deren Ausgangsspannung proportional zum Messwert ist (variable Widerstände, Thermistoren, Fotowiderstände usw.). Allerdings ist zu beachten, dass am Analogeingang nur Spannungen von 0 bis +5 V anliegen können. Liegt die Ausgangsspannung des Sensors in einem anderen Bereich oder weist sie eine negative Polarität auf, muss das Signal zunächst in den vorgegebenen Bereich gebracht werden Intervall. Der Analogeingang wird mit einer Rate von weniger als 10 kHz abgefragt [2], was für die Analyse einiger sich schnell ändernder Signale möglicherweise nicht ausreicht. Durch das Vorhandensein analoger Eingänge können Sie Arduino in ein einfaches digitales Voltmeter verwandeln, das Gleichspannung von 0 bis +5 V misst und das Messergebnis an den Computer überträgt. Laden Sie dazu einfach das in der Tabelle angegebene Programm in Arduino. 2. Tabelle 2 Bitte beachten Sie, dass im Programm die Referenz-ADC-Spannung Uref (in Millivolt) und der Umrechnungsfaktor des ADC-Ausgabecodes in Spannung Ku als Konstanten angegeben sind. Der Wert des Koeffizienten wird berechnet, indem die gegebene Referenzspannung durch 1023 geteilt wird. Der Koeffizient ist normalerweise gebrochen, daher ist die Ki-Konstante vom Typ Float (Gleitkommazahl). Die Uref-Konstante hat denselben Typ, um den Koeffizienten korrekt zu berechnen. Da die rechte Seite der Formel nur Konstanten enthält, wird der Koeffizient nicht vom Mikrocontroller bei der Ausführung des Programms berechnet, sondern vom Compiler selbst bei der Übersetzung. All dies ermöglicht es Ihnen, die Genauigkeit des Voltmeters zu erhöhen, indem Sie mit einem Multimeter den genauen Wert der Referenzspannung am Uref-Pin des Arduino-Boards messen und ihn in das Programm schreiben und ihn der Uref-Konstante zuweisen. Weitere Möglichkeiten zur Verbesserung der Genauigkeit der Analog-Digital-Umwandlung finden Sie in [3, 4]. Wenn das betreffende Programm ausgeführt wird, blinkt die TX-LED auf der Platine und signalisiert damit die Übertragung von Informationen über die serielle Schnittstelle. Die RX-LED leuchtet nicht, da der Computer nichts zurücksendet. Das eingebaute Arduino IDE-Terminal zeigt die empfangenen Informationen an (Abb. 2) – die Ergebnisse der Spannungsmessung einer galvanischen 3332-Batterie.
Arduino kann nicht nur Licht-, sondern auch Tonsignale liefern. Dazu müssen Sie an einen seiner Ausgänge einen Piezo-Schallgeber, zum Beispiel ZP-1, anschließen (Abb. 3).
Um mit Ton zu arbeiten, steht eine spezielle Funktion zur Verfügung: ton(N, F, T), wobei N die Pin-Nummer ist, an der rechteckige Impulse erzeugt werden; F – Schallfrequenz, Hz; T – Tondauer, ms. Der letzte Parameter ist optional. Wenn es nicht vorhanden ist, ist der Ton kontinuierlich. Um es auszuschalten, steht die Funktion noTone(N) zur Verfügung. Natürlich kann man den piezokeramischen Schallgeber kaum als hochwertiges Wiedergabegerät bezeichnen und das vom Mikrocontroller erzeugte Signal hat eine rechteckige Form, allerdings ermöglicht die Nutzung dieser Funktionen das Abspielen einfacher Melodien. Ein Beispiel finden Sie in der Tabelle. 3. Dies ist ein leicht modifiziertes Beispielprogramm 02.Digital oneMelody, enthalten in der Arduino IDE. Da es umständlich ist, die Frequenz jeder Note einer Melodie manuell festzulegen, wird die Datei pitches.h mit der #include-Direktive im Header des Programms angehängt. Dieser Vorgang entspricht dem Einfügen des vollständigen Textes dieser Datei in das Programm. In diesem Fall enthält es eine Liste mit den Namen der spielbaren Noten und deren Frequenzen. Tabelle 3 Der Schallgeber muss an Ausgang D8 angeschlossen werden. Für ein Programm ist eine Melodie eine Folge von Konstanten desselben Typs (Frequenzwerte), die praktischerweise in einem Array zusammengefasst sind – einer nummerierten Liste von Elementen desselben Typs. Wenn Sie ein Array deklarieren, müssen Sie entweder alle seine Elemente auflisten oder deren Gesamtzahl angeben. Bitte beachten Sie, dass die Nummerierung von Array-Elementen immer bei Null beginnt. Im betrachteten Beispiel werden zwei Arrays verwendet: int melody[] enthält die Namen der Melodienoten, int note Durations[] – ihre Dauer in Millisekunden. Um auf ein Array-Element zu verweisen, geben Sie dessen Namen mit einer in eckigen Klammern eingeschlossenen Seriennummer an. Um die Anzahl der Noten in einer Melodie einfach ändern zu können, wird sie mithilfe der Funktionen sizeof(V) berechnet, die die Anzahl der von ihrem Argument (Variable oder Array davon) belegten Bytes im Speicher des Mikrocontrollers zurückgeben. In diesem Fall belegt das Melodie-Array 16 Bytes und die Länge seiner int-Elemente beträgt zwei Bytes. Daher erhält die Note-Variable den Wert 8 und gibt an, wie oft der Körper der for-Schleife wiederholt wird, wobei die Noten eine nach der anderen abgespielt werden. Wenn Sie mehr als eine Note zum Array melody[] hinzufügen, ändert sich der Notenwert entsprechend. Sie müssen nur daran denken, das Array „noteDurations[]“ mit der Dauer dieser Noten hinzuzufügen. Da die Melodie nur einmal ausgeführt wird, sind alle notwendigen Operationen in der Funktion setup() untergebracht. Zur erneuten Ausführung müssen Sie den Mikrocontroller in seinen ursprünglichen Zustand zurücksetzen, indem Sie die RESET-Taste auf der Arduino-Platine drücken Die im Artikel besprochenen Programme für Arduino können von ftp://ftp.radio.ru/pub/2016/09/aninout.zip heruntergeladen werden. Literatur
Autor: D. Lekomtsev Siehe andere Artikel Abschnitt Funkamateur-Designer. Lesen und Schreiben nützlich Kommentare zu diesem Artikel. Neueste Nachrichten aus Wissenschaft und Technik, neue Elektronik: Alkoholgehalt von warmem Bier
07.05.2024 Hauptrisikofaktor für Spielsucht
07.05.2024 Verkehrslärm verzögert das Wachstum der Küken
06.05.2024
Weitere interessante Neuigkeiten: ▪ Das interessanteste Sportspiel ▪ Elektrischer Zerstörer der Zukunft ▪ Die Überreste von Plankton erzählen vom alten Klima ▪ Künstliche organische Neuronen News-Feed von Wissenschaft und Technologie, neue Elektronik
Interessante Materialien der Freien Technischen Bibliothek: ▪ Abschnitt der Website Für einen Anfänger-Funkamateur. Artikelauswahl ▪ Artikel Zivilrecht. Teil II. Krippe ▪ Artikel Wann wurden Windspiele zum ersten Mal hergestellt? Ausführliche Antwort ▪ Artikel Kranfahrer. Standardanweisung zum Arbeitsschutz ▪ Artikel Surround-Sound-Kopfhörer. Enzyklopädie der Funkelektronik und Elektrotechnik
Hinterlasse deinen Kommentar zu diesem Artikel: Alle Sprachen dieser Seite Startseite | Bibliothek | Artikel | Sitemap | Site-Überprüfungen www.diagramm.com.ua |