Re: Wie Servo (Modellbau) mit PWM ansteuern? Kategorie: CC-Pro Unit & Appl.Board (von Macianer - 25.02.2009 15:30) | ||
Als Antwort auf Wie Servo (Modellbau) mit PWM ansteuern? von macianer - 23.02.2009 0:42 | ||
| ||
Hallo, ich habe die Lösung selbst herausgefunden.Hier die Anleitung und Source-Code dazu. Einfach neues Projekt in der IDE anlegen, 'Main.cc' hinzufügen und folgenden Source-Code hineinkopieren. Der Servo läuft zuerst in die Mittelstellung dann 90 Grad nach links und anschlie�end um 180 Grad nach rechts. Viel Spa�. Macianer /* SERVO ANSTEUERUNG / Pulsweitenmodulation (PWM) //----------------------- void Timer_T1PWM(word period,word PW0,byte PS); Diese Funktion initialisiert den Timer1 mit dem angegebenen Vorteiler, Pulsweite und Periodendauer, siehe Tabelle . Die Ausgangssignale erscheinen an Mega32: PortD.4 (PIN18) und PortD.5 (PIN19). Mega128: PortB.5 (X1_3) und PortB.6 (X1_2). Periode=Period*PS/FOSC (100*64/14,7456MHz=434 µs) Period legt die Länge des Signals fest PW0 gibt an wie lange Kanal A,B high ist, rest der Periode ist low ___ | | | | _| |__________________ <---Periodenlänge-------> �ber den Timer Prescaler wird das Teilungsverhältnis (Oszillatorfrequenz/ps) festgelegt. (14,7456MHz/ps) 'Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) 'ps_1 (1) 67,8 ns 'ps_8 (2) 542,5 ns 'ps_64 (3) 4,34 µs 'ps_256 (4) 17,36 µs 'ps_1024 (5) 69,4 µs -------------------------------------------------------- Gängige Periode Servo: 10 - 20 ms Gängige Impulsbreite am Servo: 0,7 - 2,2 ms -------------------------------------------------------- Beispiel am Servo: MODELCRAFT TS-11 MG DIGI LINE (Conrad) Lagerart: Gleitlager Abm.: (L x B x H) 19 x 7.5 x 15.6 mm Stecksystem: JR Getriebe: Metall Typ: 6 Stell-Zeit bei 4,8 V: 0.12 s / 50 ° Stell-Zeit bei 6 V: 0.10 s / 50 ° Stell-Moment bei 4,8 V: 10 Ncm Stell-Moment bei 6 V: 12 Ncm Gewicht: 5.5 g Stromaufnahme: > 300mA ------------------------- Anschluss Servo: rot (+) //eigener Stromkreis (z. B. Netzgerät 4,8 - 6 V Gleichspannung) braun (-) //ist mit Ground (GND) am Application Board zu verbinden orange (puls) // inkl. Vorwiderstand 1k Ohm an PortD.4 (PIN18) oder PortD.5 des Application Boards verbinden */ word periode; word maxLeftPos; word midPos; word maxRightPos; void main(void) { Port_DataDirBit(PORT_SW1,PORT_IN); Port_DataDirBit(PORT_LED1,PORT_OUT); Port_DataDirBit(PORT_LED2,PORT_OUT); Port_WriteBit(PORT_LED1,PORT_OFF); Port_WriteBit(PORT_LED2,PORT_OFF); // 217 * 69,4 µs = 15.06848 ms periode = 217; //7 * 69,4 µs = 0.48608 ms (-90 Grad) maxLeftPos = 7; //19 * 69,4 µs = 1.31936 ms (0 Grad) midPos = 19; //30 * 69,4 µs = 2.0831 ms (+90 Grad); maxRightPos = 30; //loop while(1) { // if switch SW1 'on' if( Port_ReadBit(PORT_SW1) == 0 ) { move(); } } } void move(void) { //start Timer, move to mid position Timer_T1PWM(periode, midPos, PS0_1024); Port_WriteBit(PORT_LED1,PORT_ON); //Short Pause AbsDelay(1500); //move to max. left position Timer_T1PWA(maxLeftPos); Port_WriteBit(PORT_LED1, PORT_OFF); //Short Pause AbsDelay(1500); //move to max. right position Timer_T1PWA(maxRightPos); Port_WriteBit(PORT_LED2, PORT_ON); //Short Pause AbsDelay(1500); //stop Timer (output) Timer_T1Stop(); Port_WriteBit(PORT_LED2, PORT_OFF); } > Hallo, > > ich versuche einen Servo mittels Pulswellenmodulation anzusteuern. > > In der IDE-Hilfe habe ich folgendes dazu gefunden: > ----------------------------------------------- > Timer0 (8 Bit): > Beispiel: Pulsweitenmodulation mit 138,9 µs Periode und 5,42 µs Pulsweite, geändert auf 10,84 µs Pulsweite > // Puls: 10*542,5 ns = 5,42 µs, Periode: 256*542,5 ns = 138,9 µs > > Timer_T0PWM(10,PS0_8); > ----------------------------------------- > > Für den Servo ist eine Periode zwischen 10 - 20ms und eine Pulsweite von 1 - 2ms geforderdert. > Wie komme ich zu diesen Werten und wie könnte ein Beispielcode in C dafür aussehen. > > Ein anderes Beispiel hatte ich hier gefunden leider nur in Basic und ohne PWM. > > > | ||
Antwort schreiben Antworten: Re: Wie Servo (Modellbau) mit PWM ansteuern? (von UlliS - 25.02.2009 15:50) Re: Wie Servo (Modellbau) mit PWM ansteuern? (von Macianer - 25.02.2009 17:02) Re: Wie Servo (Modellbau) mit PWM ansteuern? (von Macianer - 25.02.2009 17:01) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum