Neuigkeiten Das Projekt Technik RoboSpatium Unterstützung Stichwortverzeichnis Download Reaktionen Spiele Kauftipps Kontakt <<< Meine Computerhistorie WM8650 >>> Arduino UnoDas Video zum MikrocontrollerAllgemeines![]() Beim Arduino Uno handelt es sich um eine Mikrocontroller-Platine mit einem ATmega 328P Chip. Dieser Mikrocontroller läuft mit einer Taktrate von 16MHz, besitzt 32 Kilobyte Programmspeicher, 2 Kilobyte Arbeitsspeicher und ein Kilobyte an nichtflüchtigem Speicher. Auf dem Board ist eine USB-Schnittstelle angebracht, über welche der Mikrocontroller programmiert werden kann und worüber im laufenden Betrieb Daten von einem anderen Computer gesendet und empfangen werden können. Der ATmega 328P verfügt über 20 Pins, die als digitale Ein- oder Ausgänge programmiert werden können. 6 dieser Pins können als analoge Eingänge geschaltet werden. Ebenfalls 6 Pins können ein Pulsweitensignal ausgeben. Somit kann der Arduino Sensordaten aus seiner Umgebung erfassen und Peripheriegeräte wie Lichter, Servos oder Motoren ansteuern. Mit elektrischer Energie wird die Platine über die USB-Schnittstelle (5V) oder über eine zweite auf dem Board verbaute Buchse für eine Eingangsspannung zwischen 6 und 24V versorgt. Sowohl die Soft- als auch die Hardware der Arduino-Plattform sind Quelloffen und dürfen den eigenen Bedürfnissen entsprechend angepasst werden. Zur Programmierung wird eine eigene, auf Java basierende und somit plattformübergreifende Entwicklungsumgebung bereitgestellt. Der Code-Editor bindet gcc als Compiler ein. Mit Arduino-spezifischen Bibliotheken (Librarys) wird die Codeentwicklung in C und C++ stark vereinfacht. Vorteile+ Geringer Energieverbrauch.+ Schnelle Bootzeit. + Große Community. + Dokumentation in vielen Sprachen verfügbar. + Einfach zu programmieren, dank vieler Bibliotheken. + Gute Erweiterung von Computern mit USB-Schnittstelle (physical Computing). Tastatur![]() ![]() Bildschirm![]() Als "Bildschirm" fungieren im einfachsten Fall mehrere LEDs. Durch Drücken der Tasten können unterschiedliche Ereignisse ausgelöst und angezeigt werden. Variablenwerte können als Binärzahl ausgegeben werden. Etwas komfortabler ist die Ausgabe per LCD Bildschirm. Verwendet wird eine Anzeige mit 16x2 Zeichen vom Typ Hitachi HD44780. Über das Potentiometer wird der Kontrast eingestellt. Ist dieser zu hoch oder zu niedrig eingestellt, ist auf dem Display nichts zu sehen. ![]() Quellcode zum Zähler mit LCD für Arduino Uno Mikrocontroller Sensorscheibe![]() Mittels einer gezahnten Scheibe und zweier Lichtschranken erhält man einen digitalen Sensor für Drehbewegungen. Die Lichtschranken werden über die digitalen Eingänge 0 und 1 eingelesen. Der LCD wird wie oben beschrieben angeschlossen. ![]() Quellcode optische Sensorscheibe mit LCD für Arduino Uno Mikrocontroller PID ReglerIm Kapitel zu Servos habe ich eine Eigenbau-Servo aus einem Scheibenwischermotor gezeigt. Mit einem Mikrocontroller kann die Steuerung deutlich verbessert werden. Per Software wird ein PID Regelkreis aufgebaut. PID steht dabei für Proportional-Integral-Derivative Regler.Bei einem Proportional-Regler wird die Spannung am Servomotor per Pulsweitenmodulation erhöht, je weiter der Sollwert vom Istwert abweicht. Es besteht dabei ein linearer Zusammenhang zwischen der Differenz der Eingangsspannungen und der daraus errechneten Motorspannung:
U - An den Motor abgegebene Effektivspannung KP - Proportionalitätsfaktor e - Differenz zwischen Soll- und Istwert Die Differenz zwischen Soll und Istwert (USoll - USensor) bezeichnet man auch als den momentanen Fehler am Eingang des Regelkreises. ![]() Nähert sich umgekehrt der Istwert dem Sollwert an, so verlangsamt sich die Rotation des Servos, da der Fehler und somit die an den Motor abgegebene Spannung immer kleiner wird. ![]() Bei einem Integrierenden-Regler wird die Spannung am Servomotor erhöht, je länger der Soll- vom Istwert abweicht:
U - An den Motor abgegebene Effektivspannung Ki - Proportionalitätsfaktor e - Fehler ![]() Ein rein differenzierender Regler sorgt dafür, dass der Motor mit einer höheren Spannung angesteuert wird, je schneller sich der Fehler ändert:
U - An den Motor abgegebene Effektivspannung KD - Proportionalitätsfaktor e - Fehler ![]() Der Motor wird bei einem rein differenzierenden Regler gestoppt, sobald sich der Sollwert nicht mehr ändert, also sobald das Potentiometer für den Sollwert nicht mehr bewegt wird. Der Servoarm erreicht daher nie den vorgegebenen Sollwert. ServoEine Kombination aus proportional, integrierendem und differenzierendem Regelkreis bezeichnet man als PID-Regler. In der Software für das Servo ist zusätzlich ein Softstart und eine Sicherung gegen Blockierung der Mechanik programmiert.Beim Anschließen der folgenden Schaltung ist die Drehrichtung des Scheibenwischermotors von Bedeutung. Vor dem ersten Probelauf sollte der Wert für MAX_DUTYCYCLE im Quellcode auf etwa 75 gesetzt werden, um das Drehmoment zu begrenzen für den Fall, dass die Schaltung nicht korrekt arbeitet. Das Potentiometer für den Sollwert muss vor Anschließen der Versorgungsspannung in Mittelstellung gebracht werden. Dreht sich das Servo nach Anschließen der Versorgungsspannung ebenfalls in Mittelstellung, so stimmt die Polung des Servo-Sensors. Dreht das Servo bis zum Anschlag in eine Richtung, so muss die Polung des Servo Sensors (+ und -) vertauscht werden. Die Leistungstransistoren der hier gezeigten H-Brücke sind für maximal 13A ausgelegt. Zieht euer Scheibenwischermotor schon im Leerlauf einen Strom von 4-5A, so ist davon auszugehen, dass dieser unter Last den Grenzwert erreicht oder gar überschreitet. Für die Arduino-Plattform sind kommerzielle H-Brücken erhältlich, die deutlich höhere Ströme verkraften. Diese Schaltkreise sind auch gegen Kurzschluss und Überhitzung geschützt. Wer wenig Erfahrung im Aufbau elektronischer Schaltkreise hat, sollte zu diesen fertig aufgebauten H-Brücken greifen. ![]() Quellcode zum Scheibenwischer Servo für Arduino Uno Mikrocontroller Hier ist meine (alles andere als perfekte) Befestigungsmethode für das Potentiometer am Scheibenwischermotor zu sehen: ![]() ![]() Aufgrund vieler Nachfragen gibt's hier den Schaltplan mit einer BTS7960 H-Brücke für Ströme bis zu 42A. Ein leicht abgeänderter Sketch ist ebenfalls im Download-Paket enthalten. Digitales LinearservoEine von Lichtschranken abgetastete gezahnte Scheibe kann anstelle eines Potentiometers als digitaler Rotationssensor verwendet werden. Im Video habe ich daraus einen Linearantrieb erstellt:![]() Quellcode zum Linearservo für Arduino Uno Mikrocontroller <<< Meine Computerhistorie WM8650 >>> Neuigkeiten Das Projekt Technik RoboSpatium Unterstützung Stichwortverzeichnis Archiv Download Reaktionen Spiele Verweise Kauftipps Kontakt Impressum |
![]() ![]() ![]() ![]() ![]() |