Ist diese Arduino-Motortreiberschaltung korrekt?

Ich habe ein Arduino Pro Micro und einige Teile zum Spielen. Ich möchte einen kleinen 5-V-Motor von einer externen Stromversorgung aus steuern, indem ich mit dem Arduino einen Transistor auslöse. So was:

Geben Sie hier die Bildbeschreibung ein

Ist das überhaupt richtig? Wird es funktionieren? Ich will experimentieren, aber dabei mein neues Spielzeug nicht kaputt machen. Der Transistor, den ich verwende, ist ein NPN, 2N3904.

Antworten (4)

Sie möchten Ihren Transistor als Schalter verwenden. Ich habe eine nette Seite darüber gefunden, die diese Schaltung gibt:

Geben Sie hier die Bildbeschreibung ein

Vergessen Sie jetzt den ganzen Müll und reduzieren Sie das Design auf Folgendes:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ihre Schaltung ist korrekt, außer dass der Basiswiderstand (R1) und der Pulldown-Widerstand (R2) fehlen. Außerdem muss die Last (Ihr Motor) am Kollektor des Transistors liegen, nicht am Emitter. Verwenden Sie schließlich eine Rücklauf- oder Schwungraddiode mit der Kathode an V cc , wie im ersten Bild, um hohe Spannungen zu vermeiden.

Am Ende würde Ihr Schaltplan so aussehen:

schematisch

Simulieren Sie diese Schaltung

Erklärung der Schaltung:

  • R1 wird benötigt , um den Strom an der Basis des Widerstands und damit den vom Arduino gezogenen Strom zu begrenzen. Wenn Sie den Basiswiderstand nicht verwenden, kann Ihr Arduino kaputt gehen.
  • R2 ist ein Pulldown-Widerstand, der sicherstellt, dass die Spannung an der Basis des Transistors niedrig genug ist, um nicht zu leiten, wenn kein Eingangssignal vom Arduino vorhanden ist. Dieser Widerstand stellt also sicher, dass Sie wissen, in welchem ​​​​Zustand sich die Schaltung befindet, wenn der Arduino getrennt wird. Dieser Widerstand ist nicht erforderlich, wird aber empfohlen .
  • D1 ist eine Flyback-Diode, die die Spannungsspitze eliminiert, wenn der Motor stoppt oder zu arbeiten beginnt. Es geht zu weit zu erklären, warum, aber wann immer Sie einen Strom durch eine Spule fließen lassen oder wenn Sie den Stromfluss stoppen, kann eine Spannungsspitze auftreten. Mit der Flyback-Diode sorgen Sie dafür, dass Spikes sofort eliminiert werden. Die Verwendung dieser Diode wird dringend empfohlen .

Eine letzte Sache zur Erklärung: warum der Motor auf der Kollektorseite und nicht auf der Emitterseite des Transistors sein muss. Wouter erklärt dies in seiner Antwort kurz: Mit der Last auf der Kollektorseite sind Sie dafür verantwortlich, welche Spannung der Motor bekommt; Mit der Last auf der Emitterseite kann diese Spannung nicht höher sein als die Spannung an der Basis (minus etwas).

Hallo Camil, ich weiß all die Arbeit zu schätzen, die du in den Beitrag gesteckt hast, und das meiste von dem, was du gesagt hast, ergibt für mich Sinn. Ich habe jedoch ein paar Fragen: 1. Wenn der Arduino-Eingang ausgeschaltet ist, warum wird der R2-Widerstand benötigt? Wird die Basis keine Spannung haben und da wird der Transistor nicht auslösen? 2. Mein Verständnis ist, dass Dioden verhindern, dass Strom in eine Richtung fließt, aber warum binden sie die + und - Pole des Motors? Warum sollte es nicht einfach am Minuspol liegen, da dies der Teil ist, der mit dem Arduino verbunden ist?
@Madagascared geht meistens auch ohne R2, aber mit diesem Widerstand weiß man immer was passiert. Es ist nicht erforderlich, aber empfohlen. Ihr Verständnis von Dioden ist richtig. Wenn der Gleichstrommotor getrennt wird, kann auf der Transistorseite eine Spannungsspitze auftreten. Mit der Flyback-Diode eliminieren Sie die Spitze direkt, indem Sie sie zu V_cc fließen lassen. Wenn Sie dies nicht tun, bekommt der Transistor die Spitze an seinem Kollektor und das gefällt ihm möglicherweise nicht.
@Madagascared bitte akzeptiere nicht so schnell eine Antwort. Warten Sie einfach ein paar Tage - eine akzeptierte Antwort hält andere davon ab, zu antworten, während sie möglicherweise auch interessante Dinge zu sagen haben!
Der Pulldown-Widerstand von @CamilStaps ist nicht erforderlich, wenn Sie den BJT mit einem ATmega-Ausgang ansteuern, da er auf 0 geht, nicht auf eine hohe Impedanz.
@FelicePollano richtig, aber was ist, wenn Sie den Pin ändern, um den uC einzugeben oder zu trennen? Dann ist es gut, den Pulldown zu haben. Es ist natürlich auch nur eine gute Übung.
@CamilStaps Es ist ein BJT, wenn Sie in der Umgebung, die Sie verlassen, einen Pulldown-Widerstand benötigen, um den BJT zu öffnen, haben Sie ein Problem;)

Es könnte funktionieren (zumindest für einige Zeit), aber es gibt ein paar Probleme:

  • Sie haben nicht erwähnt, wie viel Strom der Motor ziehen wird. Ein 2N3904 ist ein Kleinsignaltransistor, der den Motorstrom möglicherweise nicht überlebt (beachten Sie, dass ein blockierter Motor einen viel höheren Strom zieht).

  • Wie ein Relais kann ein Motor Spannungsspitzen erzeugen. Ich würde eine Diode parallel zum Motor schalten. (Polarität beachten!)

  • Sie verwenden den Transistor als Emitterfolger, daher kann die Spannung am Motor nur so hoch sein wie die Ausgangsspannung des Arduino (minus 0,6 V oder so). Das könnte funktionieren, aber ich würde den Motor im Kollektordraht bevorzugen. Dies würde einen geeigneten Widerstand im Basisdraht erfordern.

Ich würde aufgrund der Wärmeableitung (Pd) zunächst nicht einmal einen NPN-Transistor verwenden. Pd kann berechnet werden mit:

NPN/PNP -> Pd = Vf*I = 0,7 V*I Wie Sie hier sehen können, wird sich dieser Transistor aufheizen, wenn Sie 1A zeichnen, als gäbe es kein Morgen. (0,7 V) * (1 A) = 700 mW.

MOSFET -> Pd = I ^ 2 * Ron = kleine Zahl Wie Sie hier sehen können, gibt es selbst bei 1 A keine Wärmeabgabe. Da der Einschaltwiderstand typischerweise im Milliohmbereich liegt. (1A)^2*10mOhm = 10mW.

Außerdem haben die meisten MOSFETs eine Flyback-Diode eingebaut!

Hier ist eine Frage: Sie sagen, dass die 5-V-Stromversorgung für den Motor überhaupt nicht mit dem Arudino verbunden ist. In diesem Fall habe ich meine Zweifel, dass die Schaltung funktioniert, es sei denn, sie ist an anderer Stelle mit Masse gekoppelt (z. B. wenn Ihr Arduino über USB mit Strom versorgt wird, das mit der Wechselstrommasse gekoppelt ist, und die Motorstromversorgung gekoppelt ist durch die Steckdose auf denselben Boden). In jedem Fall ist es nicht so, wie Sie Schaltungen entwerfen möchten, wenn Sie sich darauf verlassen, dass Dinge unbeabsichtigt über das Stromnetz gekoppelt werden (z. Beispielsweise ist in dieser Schaltung die V_be (Basis-Emitter-Spannung) undefiniert.

Eine einfache Lösung besteht darin, die Masse des Arduino mit der Masse der Motorstromversorgung zu verbinden. Wenn Sie wirklich darauf bestehen, keine Massekopplung zu haben, müssen Sie eine andere Form der Kopplung haben, entweder optisch (Opto-Isolator) oder magnetisch (Transformator).