L293D mit Schrittmotor, Pi hängt sich auf

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe mir inzwischen diesen Motor von Pollin geholt. Auch habe ich mir ein L293D zum ansteuern des Motors gekauft.
    Ich bin diesem Tutorial gefolgt (wobei Farbkombis vertauscht: Pink => Schwarz, Orange => Rot, Gelb => Braun, Blau => Gelb). Nun, wenn ich VCC an 3V3 anschließe, klappt es natürlich nicht, bei 5V macht er ein paar Schritte und wiederholt sich dann immer wieder, anstatt eine Umdrehung durchzuführen.

    Jetzt wollte ich fragen, was ich dagegen machen kann. Ich vermute, dass es daran liegt, dass der Motor 400mA benötigt, das Pi aber soviel nicht liefern kann und nicht mehr reagiert. Nur kenne ich mich noch zu wenig aus (besonders in Bezug auf zusätzliche Stromstärke einspeisen) und will nicht dem Pi schaden.
    Wenn mir jemand einen Tipp geben könnte, wäre ich sehr dankbar :)

    LG
    mlt

  • der PI muss sich aufhängen wenn du 400mA aus seinen 5V saugst denn das kann man nicht als "quite low power" bezeichnen! Die Polyfuse an der microUSB lässt kaum mehr durch als der PI braucht + ca 0,3A für USB und GPIO
    Der Motor muss seinen Strom entweder woanders her bekommen es muss ein genügsamerer gewählt werden.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • ok also wie ich vermutet habe.

    ich habe mal mit meinen bescheidenen Elektronikkentnissen versucht die Schaltung aus dem Tutorial zu verändern, vielleicht könnte da mal jemand drüber schauen?

    Beim Widerstand der Batterie würde ich 3 und 4 Ohm ausprobieren. Nimmt er dann die 400mA von der Batterie und belastet das Pi nicht mehr?

    LG
    mlt


  • vielleicht könnte da mal jemand drüber schauen?

    ne Danke, mag ich nicht:
    IC hat keine Bezeichnung PIN8 ist undefiniert, 4 Ohm an 1,2V Batterie ergibt keinen Sinn, 5V vom PI ergibt keinen Sinn wenn der Motor nicht aus dem PI gespeist werden soll usw.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Wenn ich statt den 5V dann 3.3V vom Pi nehme und eine Batterie mit 5V (und 5Ohm Widerstand), würde es dann Sinn machen oder hab ich einen Denkfehler? Der Motor braucht 3V und 400mA.
    Bezeichnung hab ich vergessen, sorry (Datenblatt ist das hier)

    Einmal editiert, zuletzt von mlt (10. April 2014 um 13:13)

  • ich hatte zuletzt an Schrittmotore mit L297/298 gearbeitet, sorry aber eine Neuentwicklung (bzw. das Studieren der Datenblätter mit reindenken) kann ich hier gerade nicht mal eben so leisten.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Moin,

    wenn Du Dir ein weni Zeit lässt, kann ich Dir zumindest was über die Ströme sagen ...
    Ich hatte genau diesen Getriebemotor seinerzeits mal auf die Schnelle am Arduino getestet.

    Dabei fällt mir gerade ein: die Reiehenfolge der Impulse ist da wichtig, sonst zuckt der Motor nur ...
    Da stand was:

    Spoiler anzeigen


    A slightly modified circuit around a Darlington transistor array or an L293 H-bridge
    connects to only 2 microcontroler pins, inverts the signals received,
    and delivers the 4 (2 plus 2 inverted ones) output signals required
    for driving a stepper motor.

    The sequence of control signals for 4 control wires is as follows:

    Step C0 C1 C2 C3
    1 1 0 1 0
    2 0 1 1 0
    3 0 1 0 1
    4 1 0 0 1

    The sequence of controls signals for 2 control wires is as follows
    (columns C1 and C2 from above):

    Step C0 C1
    1 0 1
    2 1 1
    3 1 0
    4 0 0

    The circuits can be found at

    http://www.arduino.cc/en/Tutorial/Stepper

    vielleicht hilft Dir das ja schon weiter.


    cu,
    -ds-

  • ja klar, hat keine Eile.

    Die Steps habe ich so wie du geschrieben hast (bzw wie im Datenblatt) definiert, aber wichtig wäre noch zu wissen, wie ich denn nun genug Stromstärke an den Motor gebe, ohne dem Pi Schaden zuzufügen.

    Danke und LG
    mlt

  • Hallöchen mlt,

    ich hab' hier noch was im Zusammenhang mit dem Motor gefunden. Da wird schön die Ansteuerung betrieben. Vielleicht hilft Dir -> das hier <- ja ein wenig weiter.
    Das ist aber leider für das Darlington-Array (diesem ULN2003).

    Am Arduino habe ich das Teil jetzt am Laufen. Der Getriebemotor zieht gut 200 mA (so zwischen 210 und 240, das schwankt ein wenig) - allerdings ohne nennenswerte Last (ausser dem Getriebe).

    Könnte sogar reichen, den Strom vom SPi abzuzapfen ... allerdings darf sonst nichts mehr angesteckt sein (da ist vermutlich eine Tastatur oder Maus schon zu viel).

    cu,
    -ds-

  • huhu, ich glaube du hast den link vergessen :P

    ich bräuchte aber auf jeden Fall eine externe Stromversorgung, da ich am Ende 3-5 Motoren ansteuern will.

    edit: mir ist gerade aufgefallen, dass der Motor nur bestimmte Schritte macht:

    Er bewegt sich nur bei 3 und 4, nicht bei 1 und 2. Außerdem macht er auch nur 10 statt 20 Schritte für eine Umkreisung.
    War das bei dir auch so?

    Einmal editiert, zuletzt von mlt (11. April 2014 um 00:05)

  • Eijeiei ... ich werd' alt ;) ...

    -> hier <- aber nun wirklich der Link.

    Das andere müsste ich erst ausprobieren.
    Hast Du da mal ein bisschen mehr Code - ich würde das dann auf dem Arduino probieren.

    3 und 4 sagt mir jetzt nichts :s - was meinst Du damit?
    Das mit den 10 statt 20 Steps pro Umdrehung : dann hat der vermutlich einen anderen Schrittwinkel. Wobei 18 Grad ... :denker:

    cu,
    -ds-

  • Aha ... ok, verstanden ;) .

    Ich muss auf dem Arduino die Steuerpins 8 und 11 tauschen ... also den ersten und den letzten der Ausgänge. Stand irgendwo bei einem Beispielprogramm dabei und funktioniert sonst tatsächlch nicht.

    Nun, dann werde ich das mal probieren ...
    // EDIT 1: ich hab so ein kleines Testprogramm, das den Motor mal links- und dann rechts-herum drehen lässt. Wenn ich 8 und 11 nicht tausche, dann dreht er nur rechts herum und wiederholt dann diese Drehung wieder, statt nach links zu drehen. Ähnelt Deinem Problem irgendwie ;) ...

    //EDIT 2:
    Ach noch was: ich hab' hier neben dem ULN2803 leider nur den L298N zum Ausprobieren.


    Man sieht sich,
    -ds-

  • Ich hab jetzt mal mein Skript korrigiert (zwei Steps waren vertauscht), aber das Problem besteht weiterhin. Er macht zwei Schritte, dann Pause (wegen sleep dazwischen), dann wieder die zwei Schritte, aber eben keine 4, wie vorgesehen.

    Bei 2 und 3 macht er einen Step, bei 1 und 4 nicht. Macht dein motor 20 Schritte? Ich weiß echt nicht, ob es an der Stromstärke liegt (seit ich zwischen 5V und dem Eingang ca. 4Ohm gelegt habe, hängt der Pi nicht mehr) oder ob ich irgendetwas falsch mache...

    Einmal editiert, zuletzt von mlt (12. April 2014 um 01:12)


  • Ich hab jetzt mal mein Skript korrigiert (zwei Steps waren vertauscht), aber das Problem besteht weiterhin. Er macht zwei Schritte, dann Pause (wegen sleep dazwischen), dann wieder die zwei Schritte, aber eben keine 4, wie vorgesehen.

    liest sich wie Halbschrittbetrieb statt Vollschrittbetrieb, aber was da schief läuft weiss ich nicht

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Servas ...

    ich hab' einen sketch ausgegraben, der den Motor (falls kein Taster angeschlossen ist) einfach nur in eine Richtung drehen lässt.
    Das ist ganz normaler Plaintext als sketch ...

    Funktioniert aber auch erst nachdem ich zwei Anschlüsse vertauscht habe ...

    Das mit dem Halbschritt von jar ... da könnte was dran sein ..

    ich bleib mal dran,
    -ds-

  • Hi auch,
    nun, ich denke doch schon: die Bezeichnung ist 28BYJ-48 und das Datenblatt ist -> hier <- zu finden.

    Im Link auf den Motor (das ist wirklich lesenswert) sagt der Autor, dass die Übersetzung 1:64 ist.
    Aus dem Datenblatt (anderer Link) geht für mich hervor, dass in der Tat acht Schritte notwendig sind.
    Der Übersicht halber habe ich das mal ein bisschen umgepinselt ;) ...

    Spoiler anzeigen

    void forward()
    {
    // HALF STEP

    // 1 0 1 0
    doStep( HIGH, LOW, HIGH, LOW, TRUE, motorDelay );
    // 1 0 1 1
    doStep( HIGH, LOW, HIGH, HIGH, TRUE, motorDelay );
    // 1 0 0 1
    doStep( HIGH, LOW, LOW, HIGH, TRUE, motorDelay );
    // 1 1 0 1
    doStep( HIGH, HIGH, LOW, HIGH, TRUE, motorDelay );
    // 0 1 0 1
    doStep( LOW, HIGH, LOW, HIGH, TRUE, motorDelay );
    // 0 1 1 1
    doStep( LOW, HIGH, HIGH, HIGH, TRUE, motorDelay );
    // 0 1 1 0
    doStep( LOW, HIGH, HIGH, LOW, TRUE, motorDelay );
    // 1 1 1 0
    doStep( HIGH, HIGH, HIGH, LOW, TRUE, motorDelay );

    }
    void backward()
    {

    // 1 1 1 0
    doStep( HIGH, HIGH, HIGH, LOW, TRUE, motorDelay );
    // 0 1 1 0
    doStep( LOW, HIGH, HIGH, LOW, TRUE, motorDelay );
    // 0 1 1 1
    doStep( LOW, HIGH, HIGH, HIGH, TRUE, motorDelay );
    // 0 1 0 1
    doStep( LOW, HIGH, LOW, HIGH, TRUE, motorDelay );
    // 1 1 0 1
    doStep( HIGH, HIGH, LOW, HIGH, TRUE, motorDelay );
    // 1 0 0 1
    doStep( HIGH, LOW, LOW, HIGH, TRUE, motorDelay );
    // 1 0 1 1
    doStep( HIGH, LOW, HIGH, HIGH, TRUE, motorDelay );
    // 1 0 1 0
    doStep( HIGH, LOW, HIGH, LOW, TRUE, motorDelay );
    }

    void stopping()
    {
    // 1 1 1 1
    doStep( HIGH, HIGH, HIGH, HIGH, FALSE, motorDelay );
    }

    Vertauscht habe ich die Steuerleitungen 1 und 4 (im Beispiel Pin 8 und Pin 11) - allerdings nicht durch Umstecken sondern per Software.

    Mal weiterschauen ...

    // EDIT:
    Also ... im Link auf den Motor ( -> hier <- ) ist ein Beispiel für den Arduino ( -> hier <- ).
    Das geht ohne irgendwas zu tauschen und es ist in der Tat mal eine komplette Vorwärts-Umdrehung und eine komplette Rückwärts-Umdrehung. Ich denke, damit ist zumindest das Problem erledigt.
    In diesem Zusammenhang Danke an Alexander Hinkel, den Autor der Site mit den vielen, tollen und hilfreichen Beispielen.


    Pfiad di dawei,

    -ds-

  • Ne du hst einen anderen Motor, den hab ich mir zwar auch schon auf ebay bestellt, aber zurzeit nutze ich diesen von Pollin.

    Der hier hat vier Schritte pro Umdrehung:
    A A B B
    1 0 1 0 //reagiert nicht
    0 1 1 0
    0 1 0 1
    1 0 0 1 //reagiert nicht


    Zum Halbschritt: Hab mich da etwas eingelesen, aber meistens steht dort, dass dadurch doppelt so viele Schritte gemacht werden würden, bei mir sind es aber komischerweise ja nur halb so viele (10 statt 20).

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!