- Pulsweitenmodulation (PWM)
- Programmieren von ATtiny13 mit Arduino
- Erforderliche Komponenten
- Schaltplan und Arbeitsweise
Servomotor funktioniert nach dem Prinzip der Pulsweitenmodulation (PWM) und seinem Drehwinkel wird durch die Dauer des Pulses angelegt an seinen Steuerstift gesteuert. Hier in diesem Tutorial steuern wir einen Servomotor mit ATtiny13-Mikrocontroller mithilfe der PWM-Technik. Bevor wir fortfahren, lernen wir zunächst PWM, Servomotor und das Programmieren von ATtiny13 mit Arduino Board kennen.
Pulsweitenmodulation (PWM)
Die Pulsweitenmodulation (PWM) ist ein Verfahren zum Erzeugen eines analogen Signals unter Verwendung einer digitalen Quelle. Ein PWM-Signal besteht aus zwei Hauptkomponenten: Arbeitszyklus und Frequenz. Diese Komponenten definieren sein Verhalten. Der Arbeitszyklus beschreibt die Zeitdauer, in der sich das Signal in einem hohen Zustand befindet. Sie wird als Prozentsatz der Gesamtzeit angegeben, die zum Abschließen eines Zyklus benötigt wird.
Arbeitszyklus = Einschaltzeit / (Einschaltzeit + Ausschaltzeit)
Die Frequenz definiert, wie schnell die PWM einen Zyklus abschließt und wie schnell das Signal zwischen hohen und niedrigen Zuständen umschaltet. Eine Frequenz von 100 Hz bedeutet 100 Zyklen pro Sekunde. Durch schnelles Ein- und Ausschalten eines digitalen Signals mit einem bestimmten Arbeitszyklus erscheint der Ausgang wie ein analoges Signal mit konstanter Spannung. Einer der starken Vorteile von PWM ist, dass der Leistungsverlust sehr gering ist.
Alle Servomotoren arbeiten direkt mit + 5V Versorgung, aber wir müssen vorsichtig sein, wie viel Strom der Motor verbrauchen würde. Wenn wir mehr als zwei Servomotoren verwenden, sollte ein geeigneter Servoschild entworfen werden.
Bevor Sie das Servo an Attiny13 anschließen, können Sie Ihr Servo mit Hilfe dieser Servomotor- Testschaltung testen. Hier haben wir einen Servomotor mit vielen Mikrocontrollern verbunden:
- Schnittstelle zwischen Servomotor und ARM7-LPC2148
- Schnittstelle zwischen Servomotor und MSP430G2
- Steuerung mehrerer Servomotoren mit Arduino
- Schnittstelle zwischen Servomotor und PIC-Mikrocontroller mit MPLAB und XC8
- Servomotorsteuerung mit Raspberry Pi
- Servomotorsteuerung mit Arduino Due
- Schnittstelle zwischen Servomotor und AVR-Mikrocontroller Atmega16
Programmieren von ATtiny13 mit Arduino
Attiny13 kann mit Arduino Uno oder einem anderen Arduino-Board programmiert werden. Verbinden Sie Attiny13 wie in der folgenden Abbildung gezeigt mit Arduino Uno.
- Arduino 5V - ATtiny13 Pin 8
- Arduino GND - ATtiny13 Pin 4
- Arduino Pin 13 - ATtiny13 Pin 7
- Arduino Pin 12 - ATtiny13 Pin 6
- Arduino Pin 11 - ATtiny13 Pin 5
- Arduino Pin 10 - ATtiny13 Pin 1
Arduino ist als Programmierer für die Programmierung von ATtiny13 eingestellt. Dies erfolgt durch Hochladen der ArduinoISP-Skizze auf Arduino. Diese Arduino-Skizze ist in den Beispielen in Arduino IDE verfügbar. Öffnen Sie die Arduino IDE und gehen Sie zu Dateien> Beispiele> ArduinoISP .
Jetzt erscheint das Programm für ArduinoISP. Laden Sie das Programm auf das Arduino Uno hoch.
Arduino Uno ist jetzt bereit, Attiny13 zu programmieren. Aber wir müssen den Attiny einrichten, indem wir seine Kerndateien installieren. Gehen Sie dazu zu Datei >> Einstellungen in Arduino IDE
Dann öffnet sich ein neues Fenster. Fügen Sie unter " Zusätzliche Board Manager-URLs " den folgenden Link hinzu und klicken Sie auf "OK".
"Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json"
Gehen Sie nun in Ihrer Arduino IDE zu Tools >> Board >> Boards Manager
Dann öffnet sich ein weiteres Fenster, in dem Sie im Suchfeld "Attiny" eingeben und dann "DIY ATtiny" erhalten. Klicken Sie dann auf die Schaltfläche "Installieren" (ich habe es bereits installiert, daher die Schaltfläche "Installieren" in grauer Farbe).
Um mit der Programmierung von ATtiny 13 zu beginnen, müssen wir den Bootloader darauf brennen. Gehen Sie dazu zu Tools> Board> ATtiny13.
Gehen Sie nun zu Extras> Prozessorversion und prüfen Sie, ob die richtige Version von ATtiny ausgewählt ist. Wählen Sie je nach Chip entweder ATtiny13 oder ATtiny13a.
Klicken Sie dann unten im Menü Extras auf die Schaltfläche Bootloader brennen.
Nach dem Brennen des Bootloaders kann ATtiny jetzt programmiert werden. Jetzt können Sie Ihr Programm hochladen.
Erforderliche Komponenten
- ATtiny13 Mikrocontroller
- Servomotor
- Potentiometer
- + 5V Batterie
- Arduino IDE
- Kabel anschließen
Schaltplan und Arbeitsweise
Das Schaltbild zur Steuerung eines Servomotors mit einem Topf mit ATtiny13 ist unten angegeben.
Unten sind die Verbindungen
- Verbinden Sie den Servomotor-Steuerstift mit Stift 5 von ATtiny13
- Verbinden Sie die Masse des Servomotors mit Pin 4 von ATtiny13
- Verbinden Sie den VCC des Servomotors mit Pin 8 von ATtiny13
- Verbinden Sie den mittleren Pin des Potentiometers mit Pin 7 von ATtiny13
- Verbinden Sie den ersten und dritten Stift des Potentiometers mit dem VCC und dem GND.
- Verbinden Sie den Pluspol der + 5V-Batterie mit Pin 8 von ATtiny13
- Verbinden Sie den Minuspol der + 5V-Batterie mit Pin 4 von ATtiny13
Ein Potentiometer ist an Pin 7 (PB2) des ATtiny13 angeschlossen, und das Steuerkabel des Servomotors ist an Pin 5 (PB0) angeschlossen.
Hier wird der Potentiometerwert gelesen und in einen Wert zwischen 0 und 180 umgewandelt. Dann wird dieser Winkelwert in Mikrosekunden umgewandelt und ein Impuls an den Steuerstift des Servomotors mit der berechneten Mikrosekundenverzögerung gegeben. Jetzt dreht sich der Servomotor gemäß dem Wert des Potentiometers, wie im folgenden Video gezeigt.