PWM PNP Transistor

Hey hey,

bin dabei eine total simple Lüfterregelung zu bauen, aber wie man es kennt scheitert man an banale Sachen :slight_smile:

Über einen NTC werte ich die Temperatur aus, mittels map skaliere ich den wert zwischen 100-255.

Nun zum Problem.
Der Lüfter muss mit einen PNP-Transistor angesteuert werden, bei normalen Schaltvorgängen eigentlich kein Problem, aber wenn ich den Lüfter in der Drehzahl ändern möchte, klappt leider gar nichts.
Hab den PNP über ein NPN vom uC angeschlossen, experimentell in verschiedenen Varianten, erfolglos.

Vielleicht kennt jemand das Problem, bzw. kann mir ein Stichwort geben, wonach man suchen und lesen kann.

Schöne Grüße
Molke

Dann gebe ich mal zwei Stichwörter:

  • Schaltplan
  • Sketch
    Und dann sehen wir weiter.

Sketch ist sehr simple.

#include <math.h>

float temperatur = 0;
int lrpm= 0;
int luefter= 9;

void setup() {
  Serial.begin(9600);
}

void loop(){
  temperatur= temp(analogRead(0));
  Serial.println(temperatur);
  Serial.println(analogRead(0));
  delay(250);
  lrpm= map(analogRead(0), 500, 1023, 0, 255);
  
  analogWrite(luefter, lrpm);
  
}


float temp(int rawadc) {
  int r1= 10000;
  int r2= 10000;
  int b= 3950;
  float r_akt;
  float temp;
  float ergebnis;
  float tn= 25;
  
  tn= tn+273.15;
  r_akt= ((4.64/(4.64/1023*rawadc))*r1)-r2;
  temp= b*tn/(b+log10((r_akt/r2))*tn);
  temp= temp- 273.15;
  ergebnis= temp;
  return ergebnis;
}

Schaltplan meines Versuches ist ebenso im Anhang.

Der PNP ist falsch herum. Der Emitter muss an Plus. Das kannst du dir an der Pfeilrichtung merken. Der Strom fließt beim NPN in die Basis und den Kollektor und die Summer aus dem Emitter. Beim PNP fließt der Summen-Strom in den Emitter und aus der Basis und dem Kollektor heraus.

Gut aufgepasst, er ist wirklich falsch eingezeichnet, aber richtig eingebaut.

Sorry, hab den Schaltplan eben schnell erstellt daher der Fehler.

Bist du sicher, dass er richtig herum drin ist? Schau vielleicht mal ins Datenblatt.

Vergleiche PNP:

mit NPN:
https://cdn-reichelt.de/documents/datenblatt/A100/bc546_48.pdf

Die Pin-Belegung ist bei denen genau anders herum.

Ja, bin mir sicher.
Beide Datenblätter sind geöffnet, sie stehen sich "verkehrt herum gegenüber" .

Mit NPN ist die Schaltung kein Problem, Stufenlose Regelung funktioniert.
PWM kommt sauber, (Oszi hängt dran) .

Aber ich brauch einen High-Side-Treiber, weil in der bestehenden Anlage über der Masse das Tachosignal ausgewertet wird.

Hallo,

die Basis vom PNP hängt an der falschen Stelle. Hier mal korrigiert dargestellt. Den R4 kannste auch weglassen, wenn das Signal sauber auf 0 geht.

Doc_Arduino:
Hallo,

die Basis vom PNP hängt an der falschen Stelle. Hier mal korrigiert dargestellt. Den R4 kannste auch weglassen, wenn das Signal sauber auf 0 geht.

Wie sieht es mit der Dimensionierung der Widerstände aus?
würde es so gleich mal ausprobieren.

Hallo,

wer hat Deine alte Schaltung dimensioniert? :astonished: Ohne Daten Deiner Transistoren und Motor kann ich oder jemand anderes nichts berechnen. :wink:

Doc_Arduino:
Hallo,

wer hat Deine alte Schaltung dimensioniert? :astonished: Ohne Daten Deiner Transistoren und Motor kann ich oder jemand anderes nichts berechnen. :wink:

Hey,

als NPN habe ich ein Kleinsignaltransistor vom Typ BC549C genommen, für den PNP nehme ich ein BD442.

Mich würde nicht nur eine simpe Antwort interessieren welche man benutzt, sondern auch liebend gern ein Anstubser für den richtigen Rechenweg. :roll_eyes:

Schönen Sonntag gewünscht . :smiley:

Hallo,

kann ich gern ausführlich beschreiben. Es fehlt nur noch die Angabe des notwendigen Strom's für den Lüftermotor den der PNP Transistor durchlassen soll.

Achja, entschuldige.

Ist ein DC Lüftermotor mit den Angaben

12VDC
0,16A

Vielen Dank im vorraus, verdrahte nebenbei schon aufn Steckbrett :smiley:

Hier geht es zur Berechnung,wobei da mit der Stromverstärkung in Sättigung auch oft etwas schätzen dabei ist:
http://www.mikrocontroller.net/articles/Basiswiderstand#Berechnung

Aber 1k ist ein guter Anhaltswert für Basiswiderstände bei diesen niedrigen Kollektorströmen

Hallo,

ich hoffe das ist jetzt nicht zu wissenschaftlich. :wink:

also ....

Man fängt von hinten an, sprich beim Verbraucher der geschalten werden soll. Denn die Daten zum rechnen sind bekannt. Das heißt der Strom IC vom PNP beträgt 160mA. Jetzt lautet die Frage, welchen Basisstrom benötigt der BD442 dafür? Dafür ist ein Blick ins Datenblatt notwendig, da findet man eine mindest Gleichstromverstärkung von 30. Gemittelt von Angaben 15 bis 40. Das bedeutet man könnte mit einem Basisstrom von 1mA einen Kollektorstrom von 30mA fließen lassen.

Man rechnet 160mA / 30 * 5 = 26,6mA >> notwendiger Basistrom 27mA

Warum mal 5? Wir lassen die Transistoren im Schalterbetrieb arbeiten. Sie müssen schnell und sicher durchschalten. Deshalb läßt man einen 3 bis 5 fachen Basisstrom fließen als notwendig ist. Der Transistor soll nicht in seinem Arbeitsbereich ein Signal gezielt verstärken bzw. regeln wie beim Audioverstärker sondern nur schalten. Wenn es knapp wird, kann man bis 2 runtergehen, dann muß man aber nachrechnen wo man landet mit seinen Werten. Üblich sind Übersättigungen 3 bis 5, eher 4 bis 5.

PNP Basisvorwiderstand berechnen:

Wenn der NPN durchschaltet liegt am Schnittpunkt wo sich R3 und R1 mit dem Kollektor vom NPN treffen typische 0,1V an. Man kann auch sagen es liegt dort Masse an. Wir rechnen aber mit den 0,1V. Leistungstransistoren haben öfters höhere Sättigungsspannungen wie Kleinsignaltransistoren. Das sollte man dann nicht vernachlässigen.

Welche Spannung fällt am R1 ab wenn der NPN durchschaltet?

UB R1 = (12V - 0,7V - 0,1V) = 11,2V
R1 = 11,2 / 27mA = 415 Ohm

Rechnen wir nochmal mit Übersättigungsfaktor 4 statt 5.
Basisstrom 160mA / 30 * 4 = 21,3mA >> 22mA
R1 = 11,2V / 22mA = 510 Ohm.

Bedeutet, der Vorwiderstand muß sich zwischen 415 und 510 Ohm bewegen. Wenn man in seiner Bastelkiste keinen passenden Wert findet, muß man mit dem Übersättigungsfaktor auf 3 runtergehen und nochmal rechnen. Wir rechnen weiter mit einem Basisstrom von 27mA.

R3 dient einmal als Pullup Widerstand für den PNP das er sicher sperrt wenn der NPN sperrt, und ganz wichtig, er dient zur Strombegrenzung des NPN damit er nicht zerstört wird. Ohne R3 gäbe es einen Kurzschluss wenn der NPN durchschaltet.

Wir lassen durch R3 1mA fließen.

R3 berechnet sich wie folgt.
R3 = (12V - 0,1V) / 28mA = 425 Ohm.
Hier dann eher einen größeren Wert nehmen statt kleiner, wenn die Bastelkiste wenig Auswahl läßt. Oder man rechnet

dann wieder mit dem Basisstrom vom NPN hin und her ob es noch paßt.

Kommen wir zu R2:
Wir betrachten die Berechnung erstmal ohne R4! Ein Blick ins Datenblatt zum BC549C sagt uns, dass er eine Gleichstromverstärkung von mindestens 420 hat. Unser Strom IC liegt ja über 2mA.

Basistrom berechnen
IB = 28mA / 420 * 4 = 0,3mA

R2 = (5V - 0,7V) / 0,3mA = 14,3kOhm
hier, je nach Bastelkiste richtig kleineren Wert gehen. Sonst wird der Übersättigungstrom kleiner. Im Zweifelsfall nochmal nachrechnen.

Kommen wir zu R4. Er ist ein Pulldown Widerstand. Kann man auch weglassen, da der NPN direkt vom µC Pin angesteuert wird. Wenn R4 drin bleiben soll, wird es nochmal interessant. Denn wir haben es dann nochmal mit einer zusätzlichen Stromverzweigung zu tun. Man kann pauschal 5k bis 10kOhm wählen. Wir legen R4 mit 5kOhm fest. Wir wissen, dass der Basisstrom vom NPN 0,3mA betragen muß. Wir haben damit einen belasteten Spannungsteiler mit R2 und R4.
Über R4 fällt eine Spannung vom 0,7V ab, denn R4 liegt parallel zur Basis-Emitterdiode vom NPN. Damit wissen wir, welcher Strom durch R4 fließt. 0,7V / 5kOhm. Der Strom durch R4 beträgt damit 0,14mA.
Durch R2 muß nun die Summe von 0,3 und 0,14mA fließen. An R2 fällt nachwievor 4,3V ab.
Wir rechnen 4,3V / 0,44mA und erhalten 9,8kOhm.

Wir sind damit fast am Ende. Da wir es mit 12V und doch schon paar mA zu tun haben. Dürfen wir die Verlustleistung an den Widerständen nicht vernachlässigen. Wir rechen lieber mal nach. Sicher ist sicher.

Ptot an R1:
11,2V * 27mA = 0,3W >> bedeutet ein 0,25W Typ reicht nicht mehr.
Im getakteten Betrieb könnte man zu Hause noch mit einen Viertelwatt Widerstand arbeiten. Im Dauerbetrieb und wenn es sicher sein soll aber nicht!

Ptot R3:
11,9V * 1mA = 0,0119W >> ist weniger als 1/10 W, vernachlässigbar

Ptot R2:
Wir gehen vom schlimmsten Fall aus, also mit Abzweigstrom von R4.
4,3V * 0,44mA = 0,0019W >> ist weniger als 1/10 W, vernachlässigbar

Ptot R4:
0,7V * 0,14mA = 98µW >> ist weniger als 1/10 W, vernachlässigbar

Für die Freilaufdiode am Motor nimmste nicht gerade die kleinste. 1A sollte sie schon verkraften. Wenn der Motor abschaltet muß sie den Kurzschlussstrom verkraften zum Abbau des Magnetfeldes. Den kann ich jedoch nicht berechnen.

Es ist verrückt, es funktionert und die Erklärung der Berechnung finde ich sehr sehr gut.

Ganz dickes Lob an dich :smiley:

Nur fällt mir auf, das R3 richtig heiß wird, obwohl laut der Rechnung sehr wenig Verlustleistung an ihn auftritt.
Aber ich vermute, dass es daran liegt, das die Rechnung davon ausgeht, das der Transistor vollständig geöffnet ist.

In meinen Fall wird ja durch PWM ein Arbeitsbereich geschaffen.
Uce beträgt zum Beispiel bei Raumtemperatur 3,3V, wobei ja dann 12V-3,3V = 8,7V an R3 abfallen.

R3 Beträgt aus meiner Bastelkiste 430Ohm.

Wenn ich es richtig verstehe , rechne ich nun zur Kontrolle der Verlustleistung :

Pv= (U-Uce)*(U-Uce/R)
Pv= 178mW

Wäre doch mein 1/4W Metallwiderstand eigentlich geeignet bei dem Beispiel, oder ist doch schon eine spürbare Wärme normal.

Aber sonst tausend mal danke, das ist so Verständlich erklärt, dass sich viele viele weiterer Fragen von Transistorschaltungen beantwortet haben.

Hallo,

schön das es verständlich rüberkam. Sowas in reiner Textform zu erklären ist nicht einfach.

Ja die Widerstände können warm werden und überleben dennoch. 178mW von 250mW ist schon ganz schön in Relation gesehen. Man kann noch Metallfilmwiderstände mit 0,6W verwenden.

Wegen Deinem Arbeitsbereich und den 8,7V am R3.
Die Transistoren arbeiten nachwievor im reinen Schalterbetrieb. Wenn vorn ein Takt reingeht kommt hinten auch ein Takt raus. So nachdem Motto. :wink: Dein Meßgerät zeigt Dir jedoch ein arithmetisches Mittel an. Zeigt jedes an. Ist meistens auch gewollt mit True RMS bezeichnet oder so. Wenn nicht True RMS drauf steht zeigt es trotzdem einen Mittelwert an. Nur dann mehr oder weniger abweichend Frequenz bedingt. Einen wirklichen Mittelwert zeigen die True RMS Meßgeräte jedoch auch nur bei Sinusförmiges Spannungen an. Ist ein nettes Gimmick, darf man nicht überbewerten wenn man die Frequenz nicht kennt.

Bedingt durch die Taktfrequenz. Du kannst folgendes machen. Du gibts keinen Takt vom µC am Eingang drauf sondern einmal fest 0V und einmal fest 5V und misst alles in Ruhe nach. Du solltest annähernd auf die berechneten Werte kommen. Was Du nicht machen solltest ist, am Eingang eine Spannung zwischen 0 und 5V auflegen. Dann kommen die Transistoren in ihren Arbeitsbereich, womöglich wo man die Verlustleistung beachten müßte. Darum komme ich nochmal auf die Verlustleistung der Transistoren zurück. Die von den Widerständen haben wir berechnet aber nicht die von den Transistoren. Das habe ich jedoch bewußt weggelassen. Weil im Schalterbetrieb die Verlustleistung keine Rolle spielt. Wenn die Transistoren sauber durchschalten, also in Sättigung gehen (Uce), dann erreicht man max. Ptot nicht.
Bsp. Dein BD442, kann maximal 4A Ic schalten. Uce kann max. 0,8V werden. Selbst wenn wir großzügig mit 4A * 1V rechnen sind wir mit 4W weit weg von max. 36W Ptot. Mit 4W wird er jedoch sehr warm. :wink: Beim BC549C landen beim theoretischen Höchstwert von 0,6V * 0,1A = 60mW von max. möglichen 500mW.

Takt bzw. PWM und gemessenen Mittelwert vielleich nochmal anders erklärt. Stell Dir einen Eimer vor mit Loch drin. Jetzt kippst Du im Takt Wasser rein. Zwischendurch mißt Du den Füllstand im Eimer. Du wirst nie einen vollen Eimer haben. Änderst Du nun vom PWM das Tastverhältnis zu höheren Werten, nähert sich Dein Eimerfüllstand dem Maximum. Nimmst Du das Tastverhältnis vom PWM Signal runter bzw. machst beim Eimer auffüllen mehr Pausen dazwischen, nähert sich der Eimer-Füllstand gegen Null.

Ja das mit RMS ist natürlich logisch.

Werde mal heute mit dem Oszi ein wenig dran messen, da sollte ich ja dann eine Amplitude von UBetriebsspannung haben.

Danke für die Mühe.

Hallo,

kein Problem. Mit Oszi wird's jetzt ganz genau im laufenden Betrieb. :slight_smile:

@Doc_Arduino: Kannst wirklich gut erklären :slight_smile:
Eine OT Frage noch dazu: Wäre dies mit einem Mosfet nicht einfacher zu lösen gewesen ?