Stand Dezember 2014 „PWM-SERVO-Quickie“ Ansteuerung eines Servomotors 1 Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Mikrocomputertechnik Jürgen Walter PWM-SERVO-Quickie 2 Ansteuerung eines Servomotors Zusammenhang: Pulsweite – Winkelstellung Kalibration eines Systems mit Servo Belastung der CPU minimieren Prof. J. Walter Mikrocomputertechnik Stand Dezember 2014 Lernziele: 3 IDE-Quickie PWM-LED-Quickie Prof. J. Walter Stand Dezember 2014 PWM-SERVO-Quickie Mikrocomputertechnik Voraussetzungen PWM-SERVO-Quickie 4 PWM-Programm: L_25_50_75 Es werden 3 LEDs mit verschiedenem Duty-Cycle angesteuert – 25% - 50% - 75% Prof. J. Walter Mikrocomputertechnik Stand Dezember 2014 Wiederholung 1 5 Prof. J. Walter Stand Dezember 2014 PWM-SERVO-Quickie Mikrocomputertechnik Wiederholung 2 – Vergleich PCA0 - CPx 6 Die Pulsbreite zwischen 900µs und 2100µs für den Servo entspricht der Winkelstellung zwischen 0° und 180° Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Stand Dezember 2014 Funktion des Servos 7 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 HiTEC Servos arbeiten im Uhrzeigersinn (CW). Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Stand Dezember 2014 Aus Datenblatt des Servos HITEC HS-311 Elektr. PWM-SERVO-Quickie 8 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 Prof. J. Walter Mikrocomputertechnik Stand Dezember 2014 Aus Datenblatt Servo HITEC HS-311-Mechanik Kleine Berechnung Servomotor (Excel) Mikrocomputertechnik 3,00E+06 Neutralposition/s 0,021845333 PWM-SERVO-Quickie PW/s 0,0015 Schritte 0,0006 Compare in Hex links 0,90E-03 2700,00 62836 F574 Mitte 1,50E-03 4500,00 61036 EE6C rechts 2,10E-03 6300,00 59236 E764 SYSCLK/Hz T_PWM Neutralposition/s Halbe Impulsbreite/s 3000000 =65536/A2 0,0015 0,0006 Schritte Compare links PW/s =Neutralposition_sHalbe_Impulsbreite_s =RUNDEN(B5*A2;0) =RUNDEN(65536-C5;0) =DEZINHEX(D5) =RUNDEN(65536-C6;0) =DEZINHEX(D6) rechts =Neutralposition_s =RUNDEN(B6*A2;0) =Neutralposition_s+Halbe _Impulsbreite_s =RUNDEN(B7*A2;0) =65536-C7 =DEZINHEX(D7) 1° =(C5-C7)/180 Schritten 120 =A10*B9 Schritten Mitte 9 Halbe Impulsbreite/s =D5+B10 in Hex =DEZINHEX(D10) Stand Dezember 2014 T_PWM Prof. J. Walter SYSCLK/Hz PWM Pulsweitenmodulation von 90° auf 0° 0° 0 -//- T=21,845ms 90° Gnd 180° FFFFh 0 -//E764h 10 EE6Ch Stand Dezember 2014 PWM S e r v o Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Vcc F574h =PCA0CPn t PWM Pulsweitenmodulation 90° auf180° 0° 180° FFFFh 0 -//- T=21,845ms 90° 0 -//E764h 11 EE6Ch Stand Dezember 2014 PWM Gnd Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Vcc F574h t 12 • Wiederholrate 50Hz 20ms 0,9ms – 2.1ms Neutralposition: 1,5ms U T=20ms 2,1ms 1,5ms 0,9ms t Prof. J. Walter • PWM-SERVO-Quickie Mikrocomputertechnik • Stand Dezember 2014 Servo – Datenblatt - Übersetzung 13 • Wiederholrate 45,77Hz 21,84ms 0,9ms = 62835 – 2.1ms = 59234 Neutralposition: 1,5ms = 61035 T=21,84ms U F573 EE6B E762 2,1ms 1,5ms 0,9ms t Stand Dezember 2014 • PWM-SERVO-Quickie Mikrocomputertechnik • 21,84 0,9 1,5 2,1 3000000 65536 62835 61035 59234 Prof. J. Walter Servo – PCA0 - Übersetzung Sysclk 14 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. Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Stand Dezember 2014 Programm: SERVO_LR ISR_PCA0: djnz R2,ISR_PCA_ENDE mov R2,#PCA0_INT 15 ;Interrupt Vector PCA ;Interrupt bestaetigt ; Stand Dezember 2014 ;ORG ORG 05Bh clr CF call ISR_PCA0 RETI Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Interrupt PCA0 – Vector / ISR ;Sind bereits n Interrupts ;aufgetreten? ;Wiederladen des Zaehlregisters 16 ;T2? Abfrage AUF? ;Compare 0 Low Byte in Akku ;Carry loeschen ;Low Byte wieder zurücksch. ;High Byte Compare holen ;HB Compare schreiben Stand Dezember 2014 jb P1.2,C_AB mov A,PCA0CPL0 clr C add A,#C_ADD mov PCA0CPL0,A mov A,PCA0CPH0 jnc KEINUEBERTRAG_1 inc A KEINUEBERTRAG_1: mov PCA0CPH0,A Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Programmteil: PCA0CPx addieren 17 ;T3 betaetigt? ;Compare 0 Low Byte in Akku ;Carry loeschen ;Wieder zurueckschreiben ;High Byte Compare holen ;High Byte Compare schreiben Stand Dezember 2014 C_AB: jb P1.3,ISR_PCA_ENDE mov A,PCA0CPL0 clr C subb A,#C_ADD mov PCA0CPL0,A mov A,PCA0CPH0 jnc KEINUEBERTRAG_2 dec A KEINUEBERTRAG_2: mov PCA0CPH0,A ISR_PCA_ENDE: ret Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Programmteil: PCA0CPx subtrahieren • • • • 18 Ü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. Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik • Stand Dezember 2014 ÜBUNGEN: 19 Stand Dezember 2014 Ziel erreicht! Prof. J. Walter PWM-SERVO-Quickie Mikrocomputertechnik Quickies – schnell und intensiv lernen 20 Prof. J. Walter Stand Dezember 2014 PWM-SERVO-Quickie Mikrocomputertechnik Metaphern 21 Prof. J. Walter Stand Dezember 2014 PWM-SERVO-Quickie Mikrocomputertechnik