170 likes | 287 Views
Mikrocomputertechnik Jürgen Walter. „PWM-SERVO-Quickie“ Ansteuerung eines Servomotors. Lernziele:. Ansteuerung eines Servomotors Zusammenhang: Pulsweite – Winkelstellung Belastung des Controllers minimieren. Voraussetzungen. IDE-Quickie PWM-LED-Quickie. Wiederholung 1. PWM-LED
E N D
MikrocomputertechnikJürgen Walter „PWM-SERVO-Quickie“ Ansteuerung eines Servomotors
Lernziele: • Ansteuerung eines Servomotors • Zusammenhang: Pulsweite – Winkelstellung • Belastung des Controllers minimieren
Voraussetzungen • IDE-Quickie • PWM-LED-Quickie
Wiederholung 1 • PWM-LED • Es werden 3 LEDs mit verschiedenem Duty-Cycle angesteuert – 25% - 50% - 75%
Funktion des Servos • Die Pulsbreite entspricht einer Winkelstellung zwischen 0° und 180°
Datenblatt des Servos HITEC HS-311 • Servoimpuls– Alle HiTEC-Servos benötigen Impulse zwischen 3-5V und einer Länge von 0,9 bis 2,1 ms. Die Neutralposition liegt bei 1,5 ms. Die Wiederholrate beträgt 50 Hz (20 ms). • Betriebsspannung - Sie liegt zwischen 4,8 und 6V. • Farbcodierung der Kabel - SCHWARZ für Minus, ROT für Plus, GELB für Impuls-Signal • Drehrichtung - Alle HiTECServos arbeiten im Uhrzeigersinn (CW).
Datenblatt Servo HITEC HS-311 • Getriebe: Nylon • Kugellager: 0 • Geschwindigkeit bei 4,8 V: 0,19 sec/60° • Geschwindigkeit bei 6,0 V: 0,15 sec/60° • Drehmoment bei 4,8 V: 30 Ncm • Drehmoment bei 6,0 V: 35 Ncm • Abmessungen: ca. 40 x 20 x 36,5 mm • Gewicht: ca. 43 g • Irun 180mA – Imax bei 6V: blockieren 800mA
Servo – Datenblatt - Übersetzung • Wiederholrate 50Hz 20ms • 0,9ms – 2.1ms • Neutralposition: 1,5ms U T=20ms 2,1ms 1,5ms 0,9ms t
Servo – PCA0 - Übersetzung • Wiederholrate 45,77Hz 21,84ms • 0,9ms = 62835 – 2.1ms = 59234 • Neutralposition: 1,5ms = 61035 T=21,84ms 2,1ms 1,5ms U 0,9ms t
Programm: SERVO_LR • Servo fährt in Mittenstellung • T2 – Servo fährt im Uhrzeiger • T3 – Servo fährt gegen Uhrzeiger • Idee: Nach ca. n*21,84ms entsteht Interrupt der Inhalt von PCA0CPx wird geändert die Servostellung ändert sich.
Interrupt PCA0 – Vector/ ISR ;ORG ORG 05Bh ;Interrupt Vector PCA clr CF ;Interrupt bestaetigt call ISR_PCA0 ; RETI ISR_PCA0: djnz R2,ISR_PCA_ENDE ;Sind bereits n Interrupts ;aufgetreten? mov R2,#PCA0_INT ;Wiederladen des Zaehlregisters
Programmteil: PCA0CPx addieren jb P1.2,C_AB ;T2? Abfrage AUF? mov A,PCA0CPL0 ;Compare 0 Low Byte in Akku clr C ;Carryloeschen add A,#C_ADD mov PCA0CPL0,A ;Low Byte wieder zurücksch. mov A,PCA0CPH0 ;High Byte Compare holen jnc KEINUEBERTRAG_1 inc A KEINUEBERTRAG_1: mov PCA0CPH0,A ;HB Compare schreiben
Programmteil: PCA0CPx subtrahieren C_AB: jb P1.3,ISR_PCA_ENDE ;T3 betaetigt? mov A,PCA0CPL0 ;Compare 0 Low Byte in Akku clr C ;Carryloeschen subb A,#C_ADD mov PCA0CPL0,A ;Wieder zurueckschreiben mov A,PCA0CPH0 ;High Byte Compare holen jnc KEINUEBERTRAG_2 dec A KEINUEBERTRAG_2: mov PCA0CPH0,A ;High Byte Compare schreiben ISR_PCA_ENDE: ret
ÜBUNGEN: • Ü01 Kalibrieren Sie ihren Servo auf 0°; 90°; 180°Ermitteln Sie die dazugehörigen Werte von PCA0CPx • Ü02 Variieren Sie die Schrittweite • Ü03 Variieren Sie die Geschwindigkeit durch Veränderung der „Interruptanzahl zur Änderung“ • Ü04 Ermitteln Sie die maximale Geschwindigkeit °/s, indem Sie zwischen T2: 0° und T3: 180° fahren und über 10 Messungen mitteln. • Ü05 Bauen Sie jetzt einen Scheibenwischer der zwischen 0° und 180° wischt.
Quickies – schnell und intensiv lernen • Ziel erreicht!