Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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: