-
        

Ergebnis 1 bis 6 von 6

Thema: Schrittmotor Problem

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    30
    Beiträge
    563

    Schrittmotor Problem

    Anzeige

    Hallo!

    Ich weiss, es gibt schon hunderte Threads, aber ich weiss jetzt nicht weiter.
    Meine Schaltung basiert auf diesem Tutorial: http://www.the-starbearer.de/Roboter...ittmotoren.htm
    Also ULN2803 als Treiber.
    Die Daten des Motors stehen da: http://www.sly.de/artikeldet.php?suc...932bec15e74dfc

    An die Pins 1-4 vom ULN2803 hab ich PC 0-3 vom Atmega8 angeschlossen, und an die Pins 15-18 die Spulen B2-B1-A2-A1 in diese Reihenfolge. Die Mittelanzapfung liegt auf 12V, und natürlich hat der ULN seine Spannungsversorgung.

    Ich kann den Motor schon in Halb- und Vollschritt ansteuern, aber aus irgendeinem Grund dreht er sich nur in eine Richtung. Die Bitfolge für die Ansteuerung habe ich in ein Array gepackt, es wird einmal inkremental und einmal dekremental ausgelesen, der Motor dreht sich aber trotzdem nur in eine Richtung.

    Code:

    Code:
    void main(void){
    	DDRC=0xFF;
    	const uint8_t steptable[]={1, 3, 2, 6, 4, 12, 8, 9};
    	uint8_t j=0;
    	while(j!=11){ //hier solle es in die eine Richtung drehen
    		uint8_t i=0;
    		while(i!=8){
    		PORTC=steptable[i];
    		i++;
    		_delay_ms(5);
    		j++;
    		}
    	}
    	j=0;
    	while(j!=11){ //und ab hier in die andere
    		uint8_t i=7;
    		while(i!=255){
    		PORTC=steptable[i];
    		i--;
    		_delay_ms(5);
    		j++;
    		}
    	}
    
    }
    Was mach ich falsch? Liegst an der Software, oder hab ich was falsch angeschlossen?
    Der Motor läuft übrigens sehr ruhig, erwärmt sich nicht, und hat ein ordentliches Drehmoment. Ich tippe also auf einen banalen Software- und/oder Verständnisfehler meinerseits, den ich aber beim besten Willen nicht finde...

    Danke im Voraus für die Hilfe.

    MfG

    pongi

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    30
    Beiträge
    563
    Endlich hab ich es geschafft, beide Richtungen anzufahren, eine While-Schleife war schlecht, und da ist das ganze steckengeblieben.
    Eine Frage hab ich aber noch: am Motor steht Winkel vom Schritt / Schritt: 7.5° / 85, das heisst doch, dass der Motor in 85 Schritten eine ganze Umdrehung machen sollte oder? Meine While-Schleife durchläuft schon 200 mal das Array, der Motor dreht sich aber immer noch nicht einen ganzen Kreis... Das sollten dann aber schon 200*4 (Arraygröße) = 800 Schritte sein... Oder seh ich das falsch?
    Kann es sein, das da noch eine Untersetzung im Motor ist, wovon nichts im Datenblatt (siehe ober) steht? Oder mach ich wieder was falsch?


    Code:
    while(j!=200){
    		uint8_t i=0;
    		while(i!=4){
    		PORTC=steptable[i];
    		i++;
    		_delay_ms(5);
    		}
    		j++;
    		
    	}
    Hier nocheinmal ein "Datenblatt", jetzt direkt vom Hersteller... Was besseres hab ich nicht gefunden... http://www.mingjong.com.tw/eipe/fron...0022&Part=ST35

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Schon ohne die daten gelesen zu haben:


    Da die Welle nicht zentrisch ist zeigt dass ein Getriebe eingebaut ist um das Drehmoment zu erhöhen.

    Die Untersetzung scheint 1/85 zu sein also eine drehung der Welle benötigt 85 Drehungen des Motors.

    Könnt der Schrittwinkel des Motors evtl. 7,5° betragen ?


    Das wären dann 48 Schritte für eine 360° Motordrehung und demzufolge mit der Untersetzung 4080 Schritte für eine 360° drehung der Welle.


    Kommt das hin?
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    30
    Beiträge
    563
    Ich hab jetzt mit den Werten experimentiert, bei 255*4 scheint der Motor 180° Grad zu machen. Das ist genau die Hälfte vom Wert, was du gerechnet hast. Ich hab im Datenblatt nichts gefunden, was auf eine Untersetzung deuten würde, obwohl eindeutig eine drin ist...

    Oder werdet ihr daraus schlau?
    1 step 1-2 Step Angle: 7.5 ¢X /85 ¢X
    Reduction Ratio: 1/85


    Wie kann ich es genau herausfinden, wieviele Schritte ich für eine Drehung brauche?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Experimentelle Metode:

    lass den Motor bzw. die achse 10x eine komplette Drehung machen teile durch 10 und probiere dann noch sicherheitshalber ob der motor nach der berechneten schrittzahl auch nach 30, 40 und 50 Volldrehungen immer an der 0° position stehen bleibt.

    primitiv aber sicher.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    30
    Beiträge
    563
    Ist ein guter Ansatz, danke!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •