L298N Motortreiber wird sehr heiß

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

    Ich versuche derzeit 2 Schrittmotoren NEMA17 mit 2 Motortreiber L298N Controller Board anzusteuern über GPIOs vom Raspberry Pi.

    zur Verdrahtung:
    siehe Bild im Anhang


    Als Spannungsversorgung des Motors habe ich 12V angelegt .
    Das erste Problem ist, das Schrittmotor funktioniert aber mein Motortreiber wird sehr sehr heiß so dass es kaum anfassen kann . :no_sad:
    Zur Zeit gehe ich davon aus dass es ein Software Problem ist. aber ich bin trotzdem nicht sicher.

    Das zweite Problem ist, dass ich nicht weiß wie ich meine Motoren rückwärts ansteuern kann. :blush:
    Bitte um Lösungsvorschläge :danke_ATDE:

    Einmal editiert, zuletzt von Maspberry_Pi (20. September 2016 um 12:03)

  • Rückwärts sollte funktionieren, wenn du statt der Schritte 1,2,3,4 die Schritte 4,3,2,1 ausführst.

    Kurz vorweg, ich habe keine Erfahrung mit Schrittmotoren am Pi, die Hitze wird entweder durch zu hohe Ströme oder durch zu große Verluste im Treiber erzeugt.
    Ich würde die Schuld auf die Ströme schieben, da du pro Schritt jeweils kurz wartest und der Strom in der Spule dabei vllt. in Sättigung geht und die spule dann quasi keinen Widerstand mehr darstellt.

    Was hast du denn an Messequipment da? Ein Multimeter/Oszilloskop?

    Einmal editiert, zuletzt von ChrisvA (25. Juli 2016 um 11:19)

  • so auf die Schnelle fällt mal auf, dass du ``time`` importierst (built in function) und du dann dies überschreibst, was natürlich fatal ist...

    Auch ist sehr viel Codewiederhulung zu sehen, was vermieden werden sollte. Auch an die Namenskonvention sollte man sich halten: https://www.python.org/dev/peps/pep-0008/ ;)


  • Rückwärts sollte funktionieren, wenn du statt der Schritte 1,2,3,4 die Schritte 4,3,2,1 ausführst.


    Rückwärts habe ich eig schon probiert aber nur ein Motor läuft dann rückwärts und nicht beide. Also das Ziel ist beide Motoren synchron laufen zu lassen entweder rückwärts oder vorwärts.


    Kurz vorweg, ich habe keine Erfahrung mit Schrittmotoren am Pi, die Hitze wird entweder durch zu hohe Ströme oder durch zu große Verluste im Treiber erzeugt.
    Ich würde die Schuld auf die Ströme schieben, da du pro Schritt jeweils kurz wartest und der Strom in der Spule dabei vllt. in Sättigung geht und die spule dann quasi keinen Widerstand mehr darstellt.
    Was hast du denn an Messequipment da? Ein Multimeter/Oszilloskop?

    ein Multimeter habe ich bei mir grad

    laut Datenblatt NEMA 17 39mm:

    Nennspannung / Phase 2,8 V
    Nennstrom / Phase 1,68 A
    Widerstand / Phase 1,65 Ω ± 10%
    Induktivität / Phase 3,2 mH ± 20%
    Rastmoment 3,6 kg·cm
    Anschlussanzahl 4
    Gewicht 0,28 Kg
    Länge 39 mm
    Schrittwinkel komplett 1,8º ± 20% (ohne Belastung)
    Vordere Achse Länge: 20 mm
    Duchmesser: 5mm
    Hintere Achse
    Länge: 10 mm
    Durchmesser: 5mm

    Laut Datenblatt :
    Specifications:

    • Double H bridge Drive Chip: L298N
    • Logical voltage: 5V Drive voltage: 5V-35V
    • Logical current: 0-36mA Drive current: 2A (MAX single bridge)
    • Max power: 25W
    • Dimensions: 43 x 43 x 26mm
    • Weight: 26g

    *Built-in 5v power supply, when the driving voltage is 7v-35v
    Automatisch zusammengefügt:


    so auf die Schnelle fällt mal auf, dass du ``time`` importierst (built in function) und du dann dies überschreibst, was natürlich fatal ist...

    Auch ist sehr viel Codewiederhulung zu sehen, was vermieden werden sollte. Auch an die Namenskonvention sollte man sich halten: https://www.python.org/dev/peps/pep-0008/ ;)

    Danke für die hinweise.
    was soll ich dann ändern ?
    Ich habe time schon Oben als Variable deklariert und in jede einzelne Funktion benutzt, wo erkennt man diese uberschreibung ? und wie kann ich dies vermeiden ?

    Was die Codewiederholung angeht , dachte ich mir wenn ich jede Funktion einzeln schreibe und dann am ende aufrufe dann wird ein bssl übersichtlicher :-/ :s , könntest du mir helfen dies zu optimieren ?

    Einmal editiert, zuletzt von Maspberry_Pi (25. Juli 2016 um 11:43)


  • Der Pi läuft nur mit 3,3V, kann also sein, dass er dann nicht konsequent das "an" sieht, oder die Transistoren im Linear betrieb laufen.


    Sind Sie sicher dass der PI nur mit 3,3V läuft ??
    Also der Pi ist mit einem Netzteil versorgt und die Logical voltage : 5V , ist von der Treiber. Und der Treiber ist extern mit 12V versorgt als er ist unabhängig von der Raspberry. Die 5V hol ich mir vom Raspberry Pi GPIO ( 5V ).


  • Ja, mit den 3,3V bin ich mir sicher. (http://www.mosaic-industries.com/embedded-syste…-specifications)
    Das ist auch der Grund, warum man aufpassen muss, wenn man Arduino (5v) und den Pi koppelt.

    Je nach Pin, reichen aber auch die 3,3V (https://www.sparkfun.com/datasheets/Rob…idge.pdf#page=3), vllt. mal schauen, ob alles in der Spezifikation liegt.

    vielen Dank für die Antwort.

    Also ich habe es mit dem Multimeter nachgemessen und es zeigt mir dass es 4,9 v rauskommt :s

    Vllt liegt es an meinem Motor, vllt zieht er viel Strom als nötig , was denken Sie ?

  • Die GPIO des Raspberry Pi haben einen Pegel von 3,3V. Die Betriebsspannung sind natürlich 5V. Mit der Hitze der Bauteile brauchst du dir keine Gedanken machen. Ein Kurzschluss scheint es ja nicht zu sein.. Sonst hättest du es gerochen! Du belastest den Motortreiber ja auch so gut wie maximal.

    Was du definitiv noch machen solltest ist eine Levelshifter zwischen die logischen Pins packen! Die Wahrscheinlichkeit ist hoch, dass nicht jede steigende Flanke detektiert wird...

    Beim Rückwärtslauf musst du tatsächlich nur im unteren Teil deines Programms (in der while schleife) Step1() usw. umgedreht anfangen... Das kommt weil du ja da anscheinend mit den Logiktabellen arbeitest...

    Andere Treiber haben einen Freigabe-, Richtungs- und Taktpin...

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:


  • Also ich habe es mit dem Multimeter nachgemessen und es zeigt mir dass es 4,9 v rauskommt :s

    Da haben wir aneinander vorbei geredet, du hast vom 5V Pin am Raspberry Pi gesprochen, ich dachte du meinst die GPIOs. Das aus dem 5V Pin (http://pinout.xyz/pinout/pin2_5v_power) auch 5V rauskommen ist so richtig. Entschuldige die Verwirrung.

    Kann dein Multimeter auch Ströme >5A messen? Falls ja kannst du mal den Motor ansteuern und den Strom an der 12V Leitung messen. der sollte innerhalb der Spezifikation bleiben. (Achtung die meisten Multimeter erlauben es nur einige Sekunden (z.B. < 15s) hohe Ströme zu messen!)

  • Ich habe gerade mal das Datenblatt durchgesehen.. du brauchst keinen Levelshifter... Deine input high voltage sollte mindestens 2,3V haben... und die hast du!

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:


  • Die GPIO des Raspberry Pi haben einen Pegel von 3,3V. Die Betriebsspannung sind natürlich 5V. Mit der Hitze der Bauteile brauchst du dir keine Gedanken machen. Ein Kurzschluss scheint es ja nicht zu sein.. Sonst hättest du es gerochen! Du belastest den Motortreiber ja auch so gut wie maximal.

    Was du definitiv noch machen solltest ist eine Levelshifter zwischen die logischen Pins packen! Die Wahrscheinlichkeit ist hoch, dass nicht jede steigende Flanke detektiert wird...

    Beim Rückwärtslauf musst du tatsächlich nur im unteren Teil deines Programms (in der while schleife) Step1() usw. umgedreht anfangen... Das kommt weil du ja da anscheinend mit den Logiktabellen arbeitest...

    Andere Treiber haben einen Freigabe-, Richtungs- und Taktpin...

    Vielen Dank für die Antwort.
    Was ich aber Fragens würdig fand ist, als ich andere Motoren benutzt habe mit dem selben Code, ist mein Treiber gar nicht warm geworden und ist im normalen betrieben gelaufen :-/ :s


    Levelshifter


    meinst du so was ( siehe Bild )
    Automatisch zusammengefügt:

    Da haben wir aneinander vorbei geredet, du hast vom 5V Pin am Raspberry Pi gesprochen, ich dachte du meinst die GPIOs. Das aus dem 5V Pin (http://pinout.xyz/pinout/pin2_5v_power) auch 5V rauskommen ist so richtig. Entschuldige die Verwirrung.

    Kann dein Multimeter auch Ströme >5A messen? Falls ja kannst du mal den Motor ansteuern und den Strom an der 12V Leitung messen. der sollte innerhalb der Spezifikation bleiben. (Achtung die meisten Multimeter erlauben es nur einige Sekunden (z.B. < 15s) hohe Ströme zu messen!)

    Ne leider kann nur bis 10A messen. :(

    vllt liegt es an meinem Code ?? :s

  • Jo so etwas meine ich als Levelshifter.. Das brauchst du aber doch nicht, weil der Treiber die Flanke ab 2,3V als HIGH mitbekommt... Sowas kannst du dir auch einzeln holen als IC... Mir fällt jetzt aber die Bauteilbezeichnung nicht ein von denen die ich immer benutzt habe... Es gibt auch Schrittmotortreiber mit denen du dir eine kleine Platine selbst löten kannst.

    Hast du den Eindruck, dass dein Motor ruhig läuft? Läuft er unter Last? HAst du ihn in Reihe oder parallel angeschlossen?
    Automatisch zusammengefügt:
    Das mit Reihe oder parallel kannst du vergessen.. der hat bloß vier Anschlüsse... Dafür ist der noch zu niedlich ;)

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

    Einmal editiert, zuletzt von Kornfeld (25. Juli 2016 um 14:29)


  • Jo so etwas meine ich als Levelshifter.. Das brauchst du aber doch nicht, weil der Treiber die Flanke ab 2,3V als HIGH mitbekommt... Sowas kannst du dir auch einzeln holen als IC... Mir fällt jetzt aber die Bauteilbezeichnung nicht ein von denen die ich immer benutzt habe... Es gibt auch Schrittmotortreiber mit denen du dir eine kleine Platine selbst löten kannst.

    Hast du den Eindruck, dass dein Motor ruhig läuft? Läuft er unter Last? HAst du ihn in Reihe oder parallel angeschlossen?

    Also mein Motor läuft einigermaßen ruhig, aber man hört halt die Vibrationen bzw. die Pausen zwischen einzelne Schritte. Ich würde es aber natürlich gerne noch ruhiger laufen lassen , aber weiss ich nicht was ich an meinem Code ändern muss ! :s


    also er läuft auch unter Last ( siehe Bild )

    was meinst du mit Reihe oder Parallel ? ich geh davon aus dass Parallel geschaltet sind, ich habe jeden Draht mit einem Output von der H-brücke angeschlossen ( 4 Drähte insgesamt ) und werden dann getrennt gesteuert .

  • Mit 1,6 A bist Du schon recht dicht am Ende der Fahnenstange. Der L298 wird da von "Natur aus" heiß. Dazu hast Du ja einen Kühlkörper dran. Leistungselektronische Bauteile sind oft sehr heiß, also eigentlich kein Grund zur Beunruhigung.


  • Mit 1,6 A bist Du schon recht dicht am Ende der Fahnenstange. Der L298 wird da von "Natur aus" heiß. Dazu hast Du ja einen Kühlkörper dran. Leistungselektronische Bauteile sind oft sehr heiß, also eigentlich kein Grund zur Beunruhigung.

    Vielen dank für die Antwort.
    also bei dem kleinen Motor der Treiber wird ein bisschen heiß aber beim großen wird es so heiß dass es man nicht berühren kann.

  • Zitat

    lso mein Motor läuft einigermaßen ruhig, aber man hört halt die Vibrationen bzw. die Pausen zwischen einzelne Schritte. Ich würde es aber natürlich gerne noch ruhiger laufen lassen , aber weiss ich nicht was ich an meinem Code ändern muss ! undefined

    also er läuft auch unter Last ( siehe Bild )

    was meinst du mit Reihe oder Parallel ? ich geh davon aus dass Parallel geschaltet sind, ich habe jeden Draht mit einem Output von der H-brücke angeschlossen ( 4 Drähte insgesamt ) und werden dann getrennt gesteuert .

    Das ein Schrittmotor etwas unruhig läuft liegt in seiner Natur, da du ihn im Vollschrittbetrieb laufen lässt. Er wird ruhiger wenn du ihn im Mikroschrittbetrieb betreibst.. Dafür brauchst du dann aber den entsprechenden Treiber.. http://timogruss.de/2013/08/schrit…-mit-dem-a3979/

    Dieser sieht geeignet aus ohne das ich mir das im Detail durchgelesen habe.. Das kannst du für dich machen..

    Dadurch das es sich um einen Motor mit "4 Drähten" also zwei Spulen handelt kannst du das vergessen.. Das kommt bei denen mit 8 Drähten... Da geht es dann um das Verhältnis von Strom und Drehmoment..

    Mit der Hitze mach die keinen Kopf.. Das Bauteil ist eben ganz gut ausgelastet.. Du schwitzt ja auch beim Sprint ;)
    Automatisch zusammengefügt:
    Für was möchtest du den Kreuztisch nutzen?

    Wenn das wirklich etwas genau gesteuertes sein soll empfehle ich dir zur Ansteuerung einen Mikrocontroler, da es vor allem im Mikroschrittbetrieb zu hohen Frequenzen kommen kann die der Pi dann nicht mehr sauber schafft.. Vor allem wenn du zwei Motoren hast und nebenbei noch Berechnungen hast...

    Außerdem solltest du dir dann einen Treiber holen der den Takt- Richtungs Modus nutzt... Bei dem ändert sich dann in hoher Frequenz nur ein Bit und nicht gleich vier durch die Wahrheitstablle... Der macht das selbst und du bist da fein raus und sagst eben bloß durch eine steigende Flanke das er einen Schritt machen soll... und du legst dann eben dauerhaft die Richtung durch ein Bit fest..

    Wenn du eine Oberfläche brauchst um das zu steuern kannst du den UART nutzen...

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

    Einmal editiert, zuletzt von Kornfeld (26. Juli 2016 um 10:26)

  • Vielen Dank für die ausführliche Erklärung.
    Kreuztisch ist ein Drawing Maschine und will die Maschine nutzen dass ich damit ein Handy bedienen kann :)

  • Hört sich lustig an! Ist das deine Abschlussarbeit oder sowas?! Das Bild mit dem Kreuztisch erinnert mich irgendwie an einen Arbeitsplatz in einer Hochschule..

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

Jetzt mitmachen!

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