Re: unerwünschter Pilgerschritt Kategorie: Programmierung (von Matthias Koch - 8.12.2004 21:11) | ||
Als Antwort auf unerwünschter Pilgerschritt von Stefan - 7.12.2004 17:08 | ||
| ||
> Hallo Leute, > > meine C-Control wird als Impulsgeber für ein Schrittmotorenapplikation eingesetzt. > Die Impulse werden über den Zählereingang erfasst. > Der Motor soll eine vorgegebene Schrittzahl in die eine Richtung laufen unnd dann die gleich > Schrittzahl in die entgegengesetzte Richtung. > Leider zeigt sich so etwas wie eine Art Pilgerschritt - will heissen die eine Richtung wird etwas > mehr bevorzugt, als die andere. > > Wie kann ich die Steuerung (Programm) dazu bringen, links wie rechts gleich weit "zu laufen" ? > > Die Externe Anzeige zeigt, soweit ich sehe, keine Abweichung. > > Hier der Quellcode: > > > /******************************** > Port8.c2 > Interrupt-Pulszählung > Eingänge P1H.0 und P1H.1 > > richtung: r > schrittzahl: sr > ********************************/ > > //------------ > thread main > //------------ > { > long z1; > int r,sr,p,EndEL; > r=0; //Drehrichtung links > p=2; // ist port 2 > sr=300; // schrittzahl > plm.settimebase(0,plm.BASE_400); > plm.setmode(0,0); > plm.setperiod (0,100000); > plm.out (0,10); > pcflcd.setpcf(1);// I2C LCD-Anzeige adressieren > pcflcd.init(); > sleep 35; > pcflcd.clear(); > pcflcd.setLight(1); //LCD-Beleuchtung: 0=AUS, 1=EIN > > loop > { > EndEL =(ports.get(9) and 1); > if EndEL == 0 z1=0; //Näh.Schalter stellt Zähler auf Null > if (z1<=sr) & (r==0) z1 = z1 + ports.getcount (p); > else r=1; > ports.set(6,r); //Ausgabe des Richtungsbits > { > z1 = z1 - ports.getcount (p); > > EndEL =(ports.get(9) and 1); > if EndEL == 0 z1=0; //Näh.Schalter stellt Zähler auf Null > > pcflcd.goto(1,0); > pcflcd.ziff(r); //Testanzeige des richtungsbits > pcflcd.ziff(EndEL); //Testanzeige der Nullstellers > ports.set(6,r); //Ausgabe des Richtungsbits > > if z1 <= -sr r = 0; > > ports.set(6,r); //Ausgabe des Richtungsbits > pcflcd.goto(3,0); > pcflcd.zahl(z1); > } > } > } > > > PS: Wie bringe ich den Quellcode richtig (mit Tags) in dieses Fenster ??? > > > Grüsse ....Stefan Hallo Stefan, das Poblem, welches du beschreibst, ist hinreichend bekannt. Insbesondere beim Richtungswechsel von Schrittmotoren einfacherer Bauart tritt ein Schrittverlust auf. In professionellen Anwendungen kann man deshalb angeben, wieviele "BONUS_STEPS" man je Richtung und auch je Richtungwechsel zugeben möchte. kurz und knapp: 2500 Step´s "rechtsrum" - 2500 Step`s "linksrum" führen nicht unbedingt auf die Ausgangsposition zurück. Du mu�t den Schrittverlust in Ab- hängikeit des Richtungswechsels ermitteln und ggf. kompensieren. Ich hoffe, ich habe Dir einen Lösungsansto� gegeben. mit freundlichen Grü�en, Matthias Koch | ||
Antwort schreiben Antworten: Re: unerwünschter Pilgerschritt (von Stefan - 9.12.2004 11:39) Re: unerwünschter Pilgerschritt (von Felix W. - 9.12.2004 14:06) Re: unerwünschter Pilgerschritt (von Stefan - 9.12.2004 20:06) Re: unerwünschter Pilgerschritt (von Matthias Koch - 9.12.2004 21:54) Re: unerwünschter Pilgerschritt (von Felix W. - 9.12.2004 22:58) Re: unerwünschter Pilgerschritt (von Felix W. - 9.12.2004 23:08) Re: unerwünschter Pilgerschritt (von Stefan - 12.12.2004 19:27) |