Go Down

Topic: Bekomme keinen Transistor geschaltet - wo ist das Problem? (Read 585 times) previous topic - next topic

LichtAn

Hallo Fories!

Bin neu im "Geschäft", habe aber bereits erfolgreich das Projekt "Blinking LED" + PWM sowie LCD-Display und Temperaturmessung hinter mir. Wollte jetzt endlich größere Lasten mit einem Arduino schalten, bekomme es aber einfach nicht hin.

Habe es mit div. Transistoren und MOSFET probiert, aber es will nicht. Habe die Schaltungen auf Steckbrett und auf Lochraster aufgebaut. Wenn ich als Eingangssignal für diese Schaltungen einen Vorwiederstand 10k gegen +12V halte, funktionieren die Schaltungen. Kommt das Signal direkt vom Arduino, funktioniert es nicht. Habe aus Verzweiflung schon ein weiters Arduino-Board gekauft (ursprünglich die Uno-Version mit SMD-CPU, jetzt auch die große CPU)

Hintergrund: Ich möchte einfach einen simplen 12V DC Motor ein- und ausschalten (zeitgesteuert). Der Motor hängt an einem Netzteil 12V DC, über einen Transistor oder MOSFET. Parallel zum Motor habe ich eine Freilaufdiode.

Habe zuerst einen TIP130 versucht, weil in der Anleitung ein TIP120 verwendet wurde (hatte den TIP130 noch liegen). Dann habe ich einen IRLZ34N genommen (Logic Level MOSFET), ohne Vorwiderstand. Dann einen IRF540N mit und ohne Vorwiederstand, mit zwei BC547 (inkl. Vorwiderstand) als MOSFET-Treiber. Habe einen Widerstand zwischen Gate und Source gelegt, Arduino GND und Netzteil GND zusammengelegt, aber nix... Funzt einfach nicht.

Die Schaltungen funktionieren für sich betrachtet, nur wenn der Schaltvorgang vom Arduino durchgeführt werden soll geht es nicht. Der Motor läuft ständig und schaltet nicht ab, egal ob High oder Low anliegt. Wenn eine LED mit Vorwiderstand benutzt wird brennt diese ständig, aber nicht mit voller Kraft, deshalb gehe ich davon aus, dass der Motor auch nicht komplett mit 12V läuft.

Was kann ich noch versuchen, bzw. liegt es evtl. an der Software? Habe die Beispiele aus dem Einsteigerbuch von Massimo Banzi genommen. Muss ich dem Arduino noch was "mitgeben", damit es funktioniert?

Gruß Oliver

markbee

Sketch, Schaltplan? Ansonsten bleibt die Kristallkugel arg vernebelt...
XBee blog: http://lookmanowire.blogspot.com/

LichtAn

@markbee: Ne klar, sorry... hier erst einmal das Sketch zum Testen

#define Transistor 13        // Pin 13 an Transistor
                                           // auf Pin 13 gelegt, damit zur Kontrolle der Funktion LED auf GND gelegt werden kann

void setup() {
  pinMode(Transistor, OUTPUT);  // Ausgang
}

void loop() {
 
  digitalWrite(Transistor, HIGH);    // Motor 1 Sekunde an
  delay(1000);
  digitalWrite(Transistor, LOW);    // Motor 1 Sekunde aus
  delay(1000);
}

So, Schaltungen mit Erörterungen im Anhang. Die Treiberstufe habe ich über den R13 an den Arduino angeschlossen. Den BD677A habe ich übrigens auch ausprobiert. Einmal mit Vorwiderstand 1k und einmal ohne. Ist 1k zuviel?

Gruß Oliver

pylon

Sind die Massen (vom Arduino und von Deinen 12V) verbunden?

LichtAn

Hallo Pylon,

ja, ich habe "...Arduino GND und Netzteil GND zusammengelegt..." (s.o.).

Gruß Oliver

LichtAn

So, habe noch einmal was im Web gefunden bzgl. des Widerstandes an der Basis. danach müßte ich rechnerisch einen Widerstand von 107 Ohm einsetzen. Habe jetzt 100 Ohm genommen und es funktioniert mit dem BD677A. Sogar PWM funktioniert, Motor läßt sich mit Drehzahl regeln.

Formel für Widerstand war:

R = UArduino-UBE / Imax = 5V-0,7V / 40 mA = 5V-0,7V / 0,04 A = 107,5 Ohm

UArduino ist die vom Arduino gelieferte Spannung am Pin
UBE ist der Spannungsabfall an der Basis-Emitter-Strecke des Transistors
Imax ist der max. Strom, der vom Pin geliefert wird

Das ist für NPN- / PNP-Transistoren. Wie hoch ist der Spannungsabfall am MOSFET?

Der 2,2k Widerstand an der Treiberstufe ist etwas überdimensioniert, 200 Ohm müßten hier dann ja reichen!?

Gruß Oliver

michael_x

Quote
danach müßte ich rechnerisch einen Widerstand von 107 Ohm einsetzen. Habe jetzt 100 Ohm genommen und es funktioniert mit dem BD677A
Herzlichen Glückwunsch erstmal.

Die Formel für den Widerstand verwendet den Maximalstrom des Arduino. Das Ergebnis ist der minimale Widerstand !
Statt 100 Ohm bist du mit höheren Werten ( 330 ... 1k  schätze ich mal) auf der sicheren Seite für den Arduino. Bei 1k hast du einen Basis-Strom von 4-5mA, sollte mit deinem Darlington (hFE=750) reichen, ein Ampere zu schalten. Reicht das für deine Anforderung ? 

uwefed

#7
Nov 19, 2012, 09:58 pm Last Edit: Nov 19, 2012, 10:16 pm by uwefed Reason: 1
Schöne Rechnung;
nur daß UBE 1,4V ist weil Darlingtontransistor
figure3 in http://www.fairchildsemi.com/ds/BD/BD681.pdf
Also ist Dein Basisstrom IB= 5V-1,4V/100Ohm = 36mA.
Bei einer Stromverstärkung von mindestens 750 kannst Du mindestens 27A schalten aber der BD677 hält nur 4A aus .

Der Spannungsabfall zwischen Drain und Source an MOSFETs hängt vom RDSon und vom Strom ab.
Zwischen Gate und Source gibt es keinen Spannungsabfall wie beim NPN transistor sondern praktisch ist zwischen Gate und Source ein kleiner Kondensator der geladen werden muß.

Zu Deinen Fehlern. 
Wenn Du den N-MOSFET verkehrt herum (drain und Source verwechselt) verwendest dann leitet er immer weil die (parasitäre) Diode zwischen Drain und Source durchschaltet.
Wenn Du den NPN Transistor verkehrt verwendest (Emitter Collektor) dann Schaltet er fast gar nicht bis gar nicht durch.


R13 kann ruhig 2,2kOhm sein weil der Transistor Q1 kaum Strom schalten muß und deshalb wenig Basisstrom braucht.

Grüße Uwe

Go Up