Nun sind wir bei den digitalen Anschlüssen mit den Tilden angelangt. Das wären dann die Anschlüsse D3, D5, D6, D9, D10 und D11. Sie können als analoge Ausgänge konfiguriert werden. Digitale Ausgänge sollen als analoge Ausgänge umfunktioniert werden?! Das hört sich schon etwas merkwürdig an.
Jetzt kommt PWM ins Spiel. Diese Abkürzung steht für Puls-Width-Modulation, was übersetzt Puls-Weiten-Modulation heißt. Wir haben es hier jedoch mit einem digitalen statt mit einem analogen Signal zu tun. Das scheint auf den ersten Blick nicht logisch, doch sehen wir uns das genauer an. Ein PWM-Signal besitzt eine konstante Frequenz mit einer konstanten Spannung. Was jedoch variieren kann, ist der sogenannte Tastgrad.
Abb. 15: Impuls- und Periodendauer im zeitlichen Verlauf
Wenn die Frequenz f gleich bleibt, bedeutet dies, dass die Periodendauer T ebenfalls konstant ist. Das einzige, was sich ändern kann, ist die Impulsdauer t. Je breiter der Impuls – quasi größere Fläche –, desto größer ist auch die Energie, die an den jeweiligen Verbraucher übertragen wird. Sehen wir uns vier markante Möglichkeiten an.
Abb. 16: Einige PWM-Beispiele
Wie die Ansteuerung funktioniert, werden wir noch im Detail besprechen.
Die interne Stromversorgung
An der Buchsenleiste liegen die folgenden Pins und Funktionen:
Tabelle 2: Spannungsversorgungs-Pins | |
Bezeichnung | Funktion |
---|---|
VIN | Eingangsspannung für das Arduino-Board für externe Spannungsversorgung |
5V | Regulierter 5V-Ausgang |
3V3 | Regulierter 3,3V-Ausgang. Maximaler Strom beträgt 50mA. |
GND | Masse |
IOREF | Die Referenzspannung für die I/O-Ports beziehungsweie des Mikrocontrollers |
Der Reset-Taster
Über den Reset-Taster erfolgt ein Neustart des Mikrocontrollers. Der geladene Sketch wird nicht gelöscht, sondern lediglich neu gestartet.
Abb. 17: Der Reset-Taster
Die serielle Schnittstelle
Eine weitere Möglichkeit der Kommunikation mit dem Arduino-Board ist die über die serielle Schnittstelle. Diese Schnittstelle wird ja über den USB-Port zur Verfügung gestellt und kann über jedes Terminal-Programm wie beispielsweise PuTTY abgefragt werden. Doch eine Zusatzsoftware ist in unserem Fall nicht erforderlich, denn die Arduino-Entwicklungsumgebung stellt den sogenannten Serial-Monitor bereit, der sehr nützlich ist. Mit ihm können zur Laufzeit eines Sketches Werte angezeigt werden, was einerseits sehr gut zur Überwachung bestimmter Sensorwerte ist und andererseits bei einer eventuellen Fehlersuche sehr hilfreich sein kann. Doch auch weiterreichende Funktionen wie beispielsweise die Bereitstellung von Messwerten, die von anderen Programmen empfangen und optisch aufbereitet werden, sind über die serielle Schnittstelle problemlos zu realisieren. In diesem Zusammenhang ist die Programmiersprache Processing sehr geeignet.
Details zur seriellen Schnittstelle und zum USB-Port
Vielleicht sind beim Erwähnen der seriellen Schnittstelle und der Kommunikation darüber ein paar Stirnrunzler aufgetreten. Wir haben den Arduino doch lediglich über den USB-Anschluss mit dem Rechner verbunden und sollen jetzt über die serielle Schnittstelle mit ihm in Kontakt treten. Wie funktioniert das denn? Nun, die Sache hat folgenden historischen Hintergrund: Der erste Arduino wurde über die serielle Schnittstelle RS232 mit dem Rechner verbunden, denn ein USB-Anschluss war nicht vorhanden. Nachfolgende Modelle bekamen dann einen sogenannten FTDI-Chip (Future Technology Devices International), der es ermöglichte, eine serielle Schnittstelle über USB verfügbar zu machen. Somit wird nach erfolgreicher Treiberinstallation ein zusätzlicher COM-Port für den Arduino angeboten. Der Arduino Uno hat nun anstelle eines FTDI-Chips (FT232RL) einen zusätzlichen Mikrocontroller mit der Bezeichnung ATmega8u2 erhalten. Der Vorteil dieses Chips, der natürlich frei programmierbar ist, ist die universelle Einsatzbarkeit als USB-Device wie zum Beispiel einer Tastatur oder Maus. Viele weitere Informationen zu diesem Thema und anderen interessanten Aspekten sind unter der folgenden Adresse zu finden:
https://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq
Die unterschiedlichen Speicher
Eingangs habe ich unterschiedliche Speicher genannt, die da lauten:
Flash
SRAM
EEPROM
Es ist wichtig zu wissen, worin die Unterschiede bestehen und für welche Anwendungsgebiete diese Speicher zum Einsatz kommen. Weiterführende Informationen sind unter der folgenden Adresse zu finden:
https://www.arduino.cc/en/Tutorial/Memory
Der Flash-Speicher
Ein Programm, das im Arduino-Umfeld Sketch genannt wird, muss irgendwo innerhalb des Mikrocontrollers abgelegt beziehungsweise gespeichert werden. Ein Sketch teilt dem Mikrocontroller mit, was er zu tun hat und welche Aufgaben zu erledigen sind. Ein Programmierprojekt wird in einzelne Programmschritte (Befehle beziehungsweise Kommandos) unterteilt, die in einer bestimmten Reihenfolge abgearbeitet werden. Der Flash-Speicher übernimmt diese Aufgabe der Ablage. Wird der Arduino von der Spannungsversorgung getrennt und ist somit stromlos, dann bleibt der Sketch, der auf den Mikrocontroller übertragen wurde, resistent im Speicher. Nach erneuter Verbindung mit der Spannungsversorgung stehen diese Informationen wieder zur Verfügung.
Das SRAM
Die Abkürzung von SRAM lautet Static Random Access Memory. Wird ein Sketch zum Beispiel zur Verarbeitung von Messwerten benötigt, dann müssen diese Werte in irgendeiner Form innerhalb des Mikrocontrollers abgelegt werden. Dazu nutzt man sogenannte Variablen, die als Platzhalter fungieren. Es handelt sich um spezielle Speicherbereiche für den Datenaustausch und zur Datenmanipulation. Diese Speicherbereiche