Motorsteuerung mit einem Transistor

Transistor steuert Motor

Will man einen Motor auch in seiner Drehgeschwindigkeit beeinflussen, kann man eine Stromverstärkung per PowerTransistor oder FET in Kombination mit einem PWM Signal wählen.

Wichtig ist es, darauf zu achten, dass der GND des Netzteils mit dem GND des Arduinos verbunden ist.

Das Beispiel zeigt eine Steuerung mit einem PowerTransistor und einem externen Netzteil.

Als Transistor kann man z.B. den BD 911 verwenden.

46 Comments

  1. Klar, hier das abgewandelte »fading« aus den Examples:

    int motorPin = 9;

    void setup() {

    }

    void loop() {
    for(int fadeValue = 0 ; fadeValue < = 255; fadeValue +=5) { analogWrite(motorPin, fadeValue); delay(30); } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    analogWrite(motorPin, fadeValue);
    delay(30);
    }
    }

  2. hätte da noch eine frage zur schaltung. der eine anschluss vom motor geht zur externen quelle(9V Batterie). das ist klar. aber was ich nicht versteh ist, wohin der 5V anschluss vom adruino-board hingeht; was nict sein darf ist, dass der 5V anschluss vom adruino und die batterie verbunden sind, oder?
    gruss tom

  3. @Tom: Ja, das ist ein bisschen verwirrend. Der 5V vom Arduino ist nirgends verbunden. Ich hab den nur dran, da ich ein gleichbleibendes Breadboard-Setup haben wollte … :)

  4. pollux

    Hey Stefan,

    ist es auch möglich, den motor mit dauer-minus zu versorgen, und dann plus zu schalten??, weil bei dir der motor ja an dauerplus hängt, und über den transistor minus geschalten wird…

    gruß pollux

  5. pollux

    einen pnp-transistor muss ich aber dann mit minus schalten, das funktioniert mit dem arduino irgendwie nicht so ganz, der transistor schaltet immer ein bischen und bei low komplett, irgendwelche tipps?

    vielen dank

    pollux

  6. Arsen

    Wenn ich meinen Motor an eine 3V Batterie lege habe ich ein viel stärkeres Drehmoment als wenn ich den Motor über den Transistor mit derselben Batterie mit analogWrite(motorPin, 255); laufen lasse. Er dreht zwar gleich schnell, hat aber kaum noch Saft..
    Hat jemand eine Ahnung woran das liegt und wie man das beheben kann?

  7. Weni

    Die selbe frage hab ich auch. Ich betreibe einen Lüfter so an meinem Arduino, obwohl 12V anliegen kommen nur 10,8-11V am Lüfter an bei analogWrite 255. Muss man da wider mit HIGH, LOW arbeiten das alles (mehr) ankommt? oder liegt das am Transistor? ich verwende ein BC547(der schon warm wird).

  8. @Arsen und Weni: Probiert mal, kleinere (oder je nach Transistor gar keine) Vorwiderstände vor dem Transistor zu benutzen.

  9. steirer

    hallo

    kann man mit so einer pwm steuerung auch den motor bremsen.
    will mir so eine steuerung für slotcarfahren ( Regler bauen )
    slotcar beschleunigen stark oder sanft, und wen man gas wegnimmt soll der motor bremsen und wenn möglich auch das noch einzustellen dosierbar und bremse das stark oder sanfter gebremsen wird.
    habe mir schon eine uno bestellt, ab nächste woche wird daran gearbeitet aber leider habe ich keinen plan wie das ganze funtioniert, habe schon einiges im netz gelesen und werde versuche das umzusätzen.

    eine kleine beschreibung vom hersteller:

    Der ACD pro arbeitet an diesem Punkt anders: Die Bremsenergie wird nicht in Wärme
    umgesetzt sondern wird zum Netzteil zurückgeführt.
    Hierbei beginnt die Bremswirkung bereits bei der ersten Verringerung der Drehzahl. Das
    bedeutet, dass der Motor sofort auf die neue kleinere Drehzahl gebremst wird. Dies
    macht sich in der Praxis so bemerkbar, dass die Motordrehzahl immer der Triggerposition
    sofort folgt. Der Motor wird sozusagen zwangsgeführt.
    Die Bremswirkung kann über den Brems-Steller eingestellt werden. Damit wird das
    Verhalten dem eigenen Geschmack angepasst.
    Der ACD pro bietet insgesamt bessere Beschleunigung beim Starten und eine bessere
    Bremsung bei den Kurven.

    danke

  10. Karl

    Hallo,
    ich wollte mal fragen, wozu der widerstand ist und wie groß der ist (1k?).
    Sehr schöne Seite.

    Gruß
    Karl

  11. luigi

    Bei mir funktioniert das einfach nicht!!!
    Ich wollte mal fragen ob ich vielleicht den falschen Transistor verwende?
    Ich habe einen ganz normalen npnp Transistor genommen Baunummer BC 547

  12. Jakob Witsch

    Ich wollte nur noch fragen ob ich als stromquelle auch 8,4v verwenden kann ohne den Arduino zu beschädigen?????:)

  13. peter

    hallo,

    erstmal danke für die tollen tutorials.
    aber warum kann man nicht den externen stromasnchluss für den motor auf dem arduino nutzen?

  14. @Peter: Na dafür musst Du nur das rote Kabel, dass jetzt vom Motor zur DC-Buchse geht, mit dem Vin-Pin vom Arduino verbinden.

  15. peter

    ah ok, danke. sehe ich das richtig. dass max. 50mA Leistung gebracht werden kann.
    d.h. wenn ich einen motor mit max. 2.1 A Laststrom nutzen möchte, bin ich auf die stromquellle auf dem breadboard angewiesen?

  16. @Peter: Also wenn Du Strom über den Vin ziehst, kann das maximal 1A sein. Wenn Du einen Motor mit 2,1A anschließen willst, bist Du also auf eine direkt angeschlossene Stromquelle angewiesen.

  17. Sebastian

    Ich hab jetzt 3 BD911 zusammen mit einem 5 Volt Regulator der fuer einen Standalone Arduino ist auf einen Kuehlkoerper montiert. Das Problem ist dass jetz die mittleren Pins mit GND vom Regulator verbunden sind. Kann man den Anschluss der nach GND gehen soll mit dem vertauschen der an den Motor kommt?

  18. Bert

    Hallo Stefan,
    ich habe mir eine Lüftersteuerung für PC Lüfter (3Pin) aufgebaut, bei der ich per PWM die Spannung über einen Transistor steuere. Jetzt habe ich das Problem, dass die Lüfter pfeiffen wenn ich sie herunterregle. Ich habe mich jetzt soweit eingelesen, dass ich einen Tiefpass filter brauche um das Signal zu glätten. Am besten einen LC Filter, da der wohl am besten von den Verlusten her ist.
    Nun habe ich allerdings keine Ahnung wie ich Induktivität und Kondensator auslegen soll. Irgendwie sagt da jeder was anderes…

    Kannst du mir da unter die Arme greiffen?

    Gruß Bert

  19. Paula

    Lieber Stefan
    Ich möchte gerne mehrere 3V Motoren mit meinem Arduino ansteuern. Die Geschwindigkeit und Drehrichtung spielen dabei keine Rolle. Ich bin absolute Anfängerin, also sorry wenn meine Fragen albern sind.
    Ist es notwendig einen PWM pin zu wählen, wenn ich den Motor nur an- und ausstellen möchte?
    Wie finde ich heraus welcher Transistoren für mein Vorhaben am geeignetsten sind? (habe grad nur ein BD 237 zum testen rumliegen)
    und zuletzt, welcher Vorwiderstand eignet sich am besten, oder wie hängt dieser Widerstand mit dem gewählten Transistor und der externen Stromversorung zusammen?
    Danke für die tollen Tutorials!
    Paula

  20. Stefan*

    Hallo Paula,

    nee, Deine Frage ist überhauptnicht albern. Also der Reihe nach: Wenn die Motoren nur ein- und ausgeschaltet werden sollen, sind normale digitale Pins ebenso geeignet wie PWM Pins. Dein Transistor scheint mir geeignet 3V Motoren zu schalten. Du musst den aber etwas anders anschließen, als hier zu sehen. Die Pins (Beinchen) sind anders belegt (Datenblatt). Wenn er mit dem Schrift zu Dir zeigt, muss der linke Pin mit dem GND verbunden werden, der mittlere mit dem Motor und der rechte Pin mit dem Widerstand, der wiederum mit dem digitalen Pin des Arduinos verbunden sein muss. Das andere Kabel vom Motor muss mit dem Plus der 3V Spannungsquelle verbunden werden. Achte darauf, dass Minus der Spannungsquelle auf jeden Fall mit dem GND des Arduinos verbunden ist.

    So. Jetzt gutes Gelingen und viel Spaß!

    Stefan“

  21. Paula

    Lieber Stefan
    Danke für die schnelle und gut erklärte Antwort. Hat alles geklappt und macht spass =).

  22. Lars K.

    Hallo Stefan,

    hast du einen Tipp wie man am einfachsten ein Programm erstellt, bei dem ich einen kleinen „Faulhaber 3242BX4CS“(Brushless DC-Servomotors with integrated Motion Controller)in seiner Drehzahl verstellen kann?
    Ich möchte über einen Drehschalter (3 Schaltstellungen) drei verschiedene Drehzahlen einstellen können. Der Motor wird mit 24V DC betrieben.

    Danke schonmal

  23. @Lars: Sorry, damit kenne ich mir gar nicht aus. Geht aber bestimmt mit Microstepping. Das kannst Du auf jeden Fall mal googlen.

  24. Marcel

    Hallo Stefan,

    könnte ich auch einfach den BD710 als Transistor verwenden in diesem Beispiel? Oder in Kombination mit einem Zugmagnet CII/A1464?
    Und brauche ich den 1k Vorwiderstand?

  25. Simon

    Hallo Stefan,

    Ich hab einen Motor der bei 7,2V ungefähr 4,5A zieht. Funktioniert das mit dem BD911 auch? Oder muss ich da was verändern?

    Danke schonmal

  26. K.

    Hallo,
    Diese Seite ist echt super!

    Jetzt meine Frage:
    Könnte man nicht das grüne Kabel vom Motor an den collector anschließen, wenn man Pin 9 mit der Basis und den emitter mit ground verbindet?

    Und wenn nicht, warum nicht?
    Mfg K.

  27. Frage: Kann ich mit dieser Art Schaltung auch 24V schalten?
    Ich möchte einen Ultraschallvernebler benützen um die Feuchtigkeit in einer Kiste zur regeln. Die Leistungsdaten des Netzteils sind: 24V, 0.5A. Ich benützte Darlington Transistoren (TIP120 TO22STM) schon für andere Projekte deshalb möchte ich den verwenden. Die Datenblätter sind für Anfänger etwas schwierig. Es wird angegeben unter „Absolute Maximum Ratings“ -> Collector Current 5 A. Sollte doch gehen?

  28. Jens

    Kann man damit auch irgendwie die Drehrichtung des Motors wechseln, kann ich den Arduino auch mit 9 V aus einer Lego Batteriebox betreiben und kann ich damit Lego Motoren ansteuern (alle Größen)?

  29. Raphael

    Was für ein Wiederstand wäre bei dem angegebenen BD 911 Transistor am sinnvollsten?
    und
    wäre es möglich mit dem Transistor(BD 911) und einer 20 V externen Stromquelle einen 18V Motor anzusteuern, wenn ich genau die Schaltung benutze?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.