Re: PLM.out von INT auf FLOAT Kategorie: Programmierung (von Wolfgang - 11.08.2002 15:52) | |
Als Antwort auf PLM.out von INT auf FLOAT von Muellermann - 8.08.2002 8:57
| |
> Hallo, > > ich habe das Problem, dass zur Ansteuerung eines Servos die Funktion plm.out recht grosse Schrittweiten am Servo hervorruft (Schrittweite 1 Ganzzahlig!). Besteht die Möglichkeit plm.out von INT auf FLOAT umzustellen? (oder kann man das angeschlossene Servo irgendwie anders dazu bewegen kleinere Schritte auszuführen?) > > Sorry für die evtl. 'dumme' Frage. CC2 ist neu für mich und ich habe im Archiv hier nix gefunden. > > Vielen Dank und Gru�� aus München > > Andreas Hi, habe Dir einfach mal ein Stück Code rauskopiert: const PLM_OUT_FRONT =2; // PWM signal channel 2 const PLM_FRONT_TBASE =1; // 800 nanosec. timebase const PLM_FRONT_PERIOD =25000; // about 20 ms const SENSOR_POS_LEFT =800; // about 1 ms const SENSOR_POS_RIGHT =3300; // about 2 ms function foo() { int iSegment; // PLM output 'digital' for servo plm.setmode(PLM_OUT_FRONT,0); // PLM timebase: 800 nanosec. plm.settimebase(PLM_OUT_FRONT, PLM_FRONT_TBASE); // PLM period: about 20ms plm.setperiod(PLM_OUT_FRONT, PLM_FRONT_PERIOD); // turn servo to left position plm.out(PLM_OUT_FRONT, SENSOR_POS_LEFT); // wait until position has been reached sleep(1000); // turn slowly from left to right for iSegment=SENSOR_POS_LEFT ... < SENSOR_POS_RIGHT step 1 { plm.out(PLM_OUT_FRONT, iSegment); sleep(1); } // conserve energy plm.out(PLM_OUT_FRONT, 0); } Das dürfte den Servo geschmeidiger machen. Es werden Impulse zwischen ca. 1-2ms erzeugt, die alle 20ms wiederholt werden. Von links nach rechts geht's in 2500 Schritten. Du kannst mit den Parametern rumspielen bis Anschläge/Schritte/Geschwindigkeit passen. so long, Wolfgang | |
Antwort schreiben Antworten: |