Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Stefan, > > ..hab ich vergessen: natürlich musst du den Pulse-Port vorher noch als Ausgangsport setzen! > > Also so: > > <code> > // Port 1 -> Richtung > // Port 2 -> Pulse > ports.set(2,0); //Pulse Port als Ausgang definieren > > ports.set(1,1); // Richtungsbit setzen (Rechtslauf) > for x=1...500 > { ports.pulse(2);} // 500 Schritte nach rechts > sleep 500; > ports.set(1,0); // Richtungsbit löschen (Linkslauf) > for x=1...500 > { ports.pulse(2);} // 500 Schritte nach links > </code> > > ..und wenns zu schnell geht, noch ein <code>sleep 1;</code> in jede <code>for...</code> Schleife. > > Nochmals Grüße, Felix > > > > Hallo Stefan, > > > > bei einer Puls-/Richtung-Ansteuerung (oder englisch Step/Direction) eines Schrittmotorantriebs ist > > normalerweise keine Rückleitung auf den Geber nötig, da der Motorregler (wenn richtig konfiguriert) > > die gegebenen Impulse zuverlässig in Schritte umsetzt. > > > > Du solltest die Impulse (den Takt) besser mit Nadelimpulsen von einem CC2-Port erzeugen (eben mit > > <code>ports.pulse()</code>. Ausserdem solltest du, auch bei kurzen Leitungswegen, ein > > geschirmtes Kabel verwenden. Bei längeren Kabelstrecken habe ich mit symmetrischer Übertragung > > (sowohl Puls als auch Richtung als RS-485 oder RS-422 übertragen) gute Erfahrung gemacht, > > weil Störimpulse von aussen eliminiert werden. > > > > Folgendes Programmschema sollte funktionieren: > > > > <code> > > // Port 1 -> Richtung > > // Port 2 -> Pulse > > > > ports.set(1,1); // Richtungsbit setzen (Rechtslauf) > > for x=1...500 > > { ports.pulse(2);} // 500 Schritte nach rechts > > sleep 500; > > ports.set(1,0); // Richtungsbit löschen (Linkslauf) > > for x=1...500 > > { ports.pulse(2);} // 500 Schritte nach links > > </code> > > > > Wenn du Störimpulse auf deine Leitung ausschliessen kannst und dein Motorregler richtig > > konfiguriert ist (Die korrekten Reglerparameter wie Verstärkung und Regelzeit sind sehr > > wichtig, damit der Motor "auf den Punkt kommt"!), sollte der Motor nach einem Vor- und > > einem Rücklauf wieder bei "0" ankommen. > > > > Grüße, Felix > > > > > > > > > > > > Hallo Felix, > > > > > > > > also meine Steuerung sieht folgendermassen aus: > > > > > > > > - die PWM-Ausgänge erzeugen den Takt. > > > > - dieser Takt wird auf die Steuerkarte der Motoren gegeben > > > > - parallel wird der Takt auf die Interrupt-sensiblen Porteingänge der CC2 angeschlossen. > > > > - zwei Portausgänge steuern das links und rechts > > > > - dann wird per SW ein Schrittziel vorgegeben. > > > > > > > > Zum Beispiel: Schrittziel 500. Der Motor startet, von null aus nach links bis 500, von da > > > > an dreht der Motor nach rechts bis -500 (minus 500), dann wieder in die andere Richtung, usw. > > > > > > > > Leider ist aber die eine Richtung etwas mehr bevorzugt als die andere...... > > > > > > > > Zur Kontrolle lasse ich mir den Zählerstand auf einer externen LCD anzeigen. > > > > Da sehe ich nichts auffälliges. > > > > > > > > Bin jetzt ratlos. > > > > > > > > Gruss...Stefan > > >