Anzeige:
THEMA: Berechnung Basiswiderstand für Transistor?
ich habe mit einem Arduino Mega2560 ein kleines Stellpult gebastelt und jetzt das Problem dass der Arduino nach kurzer Zeit zufällig resettet. Am Netzteil liegt es nicht, ich vermute eine Überlastung des Arduino - der Prozessor hat an sich nicht viel zu tun und wird doch handwarm.
Der Arduino soll Relais ansteuern die über Transistoren angeschlossen sind und mich beschleicht das Gefühl dass ich mich bei der Berechnung des Basiswiderstands vertan habe und die Ausgänge deshalb über 200mA belastet werden. Vielleicht kann ja mal jemand meine Rechnung(en) kontrollieren und mir sagen ob es wirklich daran liegt. Ich habs zwar mal in der Uni gehabt aber das ist ein bisschen her und richtig warm bin ich mit Hardware eh nie geworden...
Ich nutze als Transistoren BC337 (https://www.onsemi.com/pub/Collateral/BC337-D.PDF) und diese 5V-Relais: https://www.conrad.de/de/printrelais-5-vdc-2-a...vdc-1-st-629498.html Datenblatt: http://www.produktinfo.conrad.com/datenblaette..._HJR1_2C_L_05VDC.pdf Bei der Berechnung habe ich mich an https://www.mikrocontroller.net/articles/Basiswiderstand bzw. https://www.mikrocontroller.net/articles/Relais_mit_Logik_ansteuern gehalten.
1. Stromverbrauch des Relais
U = 5V
Leistung: 200mW
--> Also 40 mA.
2. Verstärkung des Transistors
- wird mit 100 - 630 angegeben.
Da gehe ich (blauäugig?) von 600 aus.
3. I_b
40mA/600 = 0,06mA = 0,00006A
4. Widerstandsberechnung
- 5V Spannung liegen am Ausgang an, abzüglich der abfallenden 0,7V sind das 4,3V
R_b = 4,3V / 0,00006A = 71000 Ohm.
Jetzt habe ich zwei Probleme die vermutlich zusammenhängen.
a) 71 kOhm erscheint mir irgendwie sehr viel.
b) Ich bin bei der letzten Berechnung auf ~10000 Ohm gekommen, die ich dann auch verbaut habe. Könnte das zuwenig gewesen sein?
Viele Grüße,
Rico
aus dem Bauch heraus scheinen mir Basiswiderstände zwischen 5k und 10k richtig zu sein, habe ich seinerzeit bei analogen Schaltungen auch benutzt.
Wenn Du mehrere Relais ansteuern willst, warum nimmst Du als Treiber keinen ULN2003 o.ä.?
Grüße Michael Peters
Zitat
aus dem Bauch heraus scheinen mir Basiswiderstände zwischen 5k und 10k richtig zu sein, habe ich seinerzeit bei analogen Schaltungen auch benutzt.
Danke Aber woran liegt es dann ^^
Zitat
Wenn Du mehrere Relais ansteuern willst, warum nimmst Du als Treiber keinen ULN2003 o.ä.?
Weil das alles schon ein bisschen her ist und ich bei meinem ersten größeren Projekt erstmal einzelne Transistoren verbauen wollte. Und der BC337 war in dem einen Beispiel gerade da...
Grüße,
Rico
gleiches Bauchgefühl. Es geht ums Schalten, da darf (soll!) der Transistor übersteuert werden. Den Kollektorstrom begrenzt der Verbraucher, das Relais. Man geht hier nicht von der maximalen, sondern von der minimalen Verstärkung aus. Freilaufdiode nicht vergessen.
Grüße
Zwengelmann
warum "könnte der Widerstand zu klein sein" ? Was hat nicht funktioniert?
Der BC337 verkraftet 1A max ( mein Datenblatt sagt Verstärkung >100, 600mW )
Ist der Widerstand zu groß (!), zieht das Relais nicht an.
Bei einem 1kOhm Basiswiderstand an 5V fließt ein Basisstrom von 10mA. Allein den verkraftet der BC337 ohne weiteres und das Relais schaltet sicher durch.
Rest siehe #3
Gruß kkStB
Viele Grüße, Axel
Zitat
warum "könnte der Widerstand zu klein sein" ? Was hat nicht funktioniert?
Nach der Rechnung oben habe ich mich um Faktor 10 vertan. Die Relais ziehen an, aber der Arduino resettet zufällig und ich vermute, dass er wegen Überlast resettet - entweder der Atmel selber oder der Spannungswandler zuvor.
Zitat
Miss mal die Spannung Kollektor-Emitter, ob der wirklich durchschaltet.
Also die Relais ziehen an, das dürfte ja nur möglich sein wenn der Transistor durchschaltet, oder? Oder wäre dann der Fall dass durch den Transistor nur der Steuerstrom fließt und das Relais schaltet?
Grüße,
Rico
Tausend gute Gründe, daß es nicht geht
Gruß
Klaus
Zitat
Freilaufdioden vergessen? Stützkondensatoren DIREKT an den Pins des AVR? Getrennte Elkos für Relais und Controller? Relais hinter der Spannungsreglung des Controllers mitversorgt?
- Freilaufdioden sind drin.
- Äh, Stützkondensatoren?
- Ja, die Relais hängen am 5V des Arduino da ich nur 12V verwende.
Mir kommt gerade noch ein Gedanke der vermutlich den Thread vom Ausgangsthema weit weg führt.
Der Arduino hängt gerade testweise am USB des Rechners und an der 12V-Versorgung. Solange das USB-Kabel im Rechner steckt zeigt der Arduino _keine_ der Ausfallsymptome. Ziehe ich USB ab resettet das Ding nach ein paar Tastendrücken. Die Serial-Ports sind nicht belegt. Für die Spannungsversorgung des Arduino nehme ich 12V-Schaltnetzteile, ich habe 2 Netzteile von Conrad ausprobiert und ein Laptopnetzteil von "Wearnes", keine Ahnung für welche Art Laptop das mal war.
Jetzt stelle ich mir die Frage ob ich in die Leitung zum Arduino ein paar Dioden einfügen sollte damit keine 12V mehr am Arduino ankommen und der Spannungsregler nicht mehr so viel tun muss.
Andererseits meine ich mich erinnern zu können dass der Arduino immer bevorzugt die externe Versorgung nutzt wenn USB und 12V angeschlossen sind...
Grüße,
Rico
Ok, hab das oben nicht ganz gelesen...
Relais zieht an, der Stromverbrauch ist max. 40mA am Relais, das kann einen 200mA Ausgang nicht überlasten.
Allerdings ist es so, dass induktive Lasten ( Relais, Motoren usw. ) empfindliche Elektronik stören können!
Eine Möglichkeit, man schaltet eine Diode in Serie zum Relais, also Ausgang - Diode - Relais - Transistor oder man benutzt für die Relais eine eigene Stromversorgung und statt Transistor einen Optokoppler.
Gruß kkStB
Edit: das mit der 12V Versorgung könnte sein, denn dann werden die 5V nicht benutzt, die durch das Relais belastet werden. Getrennte Stromversorgung ! Oder besser "entstört"
Umgekehrt passt das, die Versorgung des Arduino mit 5V USB ist störungsfrei, da der Relaisausgang ( Vermutung ) über die 12V ( gedrosselt auf 5V ) versorgt wird?
Zitat
Edit: das mit der 12V Versorgung könnte sein, denn dann werden die 5V nicht benutzt, die durch das Relais belastet werden. Getrennte Stromversorgung ! Oder besser "entstört"
Umgekehrt passt das, die Versorgung des Arduino mit 5V USB ist störungsfrei, da der Relaisausgang ( Vermutung ) über die 12V ( gedrosselt auf 5V ) versorgt wird?
Im Prinzip ja, ich hab die Lösung gefunden. Es wird wohl tatsächlich der Spannungsregler gewesen sein. Denn: Die 5V vom USB werden über einen MOSFET geschaltet der von der Spannung _hinter_ dem Spannungsregler gesteuert wird. Schaltet der Spannungsregler jetzt wegen Überhitzung ab wird die Stromversorgung über USB wieder aktiviert. Das passiert so schnell dass der Arduino normal weiterläuft. Nach einiger Zeit schaltet der Regler wieder ein und die Versorgung wird wieder quasi unterbrechungsfrei auf extern umgeschaltet. Dann beginnt das Spiel von vorne. Das fällt auch überhaupt nicht auf weil die Teile des Pultes die an den 12V vor dem Regler hängen davon gar nicht gestört werden.
Ich habe jetzt 6 Dioden in die Zuleitung zum Arduino gelötet und damit die Spannung auf 7,8V reduziert. Das ist hoch genug um einen sicheren Betrieb zu gewährleisten (unter 6,6V auf extern wird es iirc kritisch) und andererseits niedrig genug damit der Spannungswandler glücklich ist (empfohlen wird ja 9V).
Ich gehe dann auch mal davon aus dass ich mich bei den Basiswiderständen nicht verhauen hab, es funktioniert ja. Falls doch, lasst es mich noch wissen
Ansonsten: VIelen Dank an alle, die mir hier geholfen haben!
Grüße,
Rico
(Ubetr - UDiode) / Isoll. Die Diode im bipolaren Siliziumtransistor kann man mit 0.6 Volt rechnen. Sollstrom gemäß Verstärkung des Transis mit Reserve:
Völlig erfundene Werte:
Laststrom 1A, Verstärkung des Transis Minimum 50, also 20mA. Reserve reichlich also 50mA gewählt.
Betrieb an 5 Volt - 0.6 Volt Diode im Transistor -> 4.4 Volt/0.020A ergibt 220 Ohm. Wie gesagt, alles nur Beispiel!
Den AVR Port würde ich nicht mit 50mA belasten
Du solltest aber die Verstärkung des Transistors immer am schlechtesten Wert rechnen, denn damit soll er noch sicher funktionieren, also selbst da noch Reserve planen! Den besten Wert zu nutzen heißt nur Wärme produzieren, da der Transistor nicht voll durchsteuert und dann zum Lastwiderstand mutiert! Keine gute Idee!
Gruß
Klaus
für Schaltanwendungen solltest Du vom niedirgsten Verstärkungsfaktor ausgehen, also hier 100. Wie in Deinem 3. Link beschrieben, ist dieser Verstärkungsfaktor nochmals durch 2 oder 3 zu teilen, um eine niedirge CE-Spannung zu erhalten (U_CE Sättigung) -> Verstärkungsfaktor etwa 30 bis 50. Das ergibt dann I_B ca. 0,8 bis 1,3 mA oder R_B etwa 3,3 bis 5,6 kOhm.
Viele Grüße, Joni
Edit: Klaus war schneller ...
ein Alternativvorschlag: Wenn Du eh mit 12 V speist, könntest Du 12V-Relais nehmen.
12V-Relais der gleichen Machart: R_Relais = 720 Ohm -> I_C = 17 mA -> I_B = 0,33 bis 0,55 mA -> R_B = 8,2 bis 12 kOhm.
Viele Grüße, Joni
Die meisten Spannungsregler gibt es in verschiedenen Leistungsstufen, eventuell ein stärkeren einsetzen.
Wenn möglich, für bessere Wärmeabfur surgen (Kühlkörper)
was auch zu bedenken ist, das das Anziehen der Relais Störimpulse erzeugt die bei ungünstiger Leitungsführung einen Resetimpuls verursachen können.
Zitat
eventuell ein stärkeren einsetzen.
Das wird genau das Gegenteil bewirken. Da der Regler normalerweise nur den AVR zu versorgen hat, wird er wegen zu wenig Last unsauber arbeiten. Der Schaltimpuls wird also entsprechend heftiger ausgeregelt. Sinnvoll sind immer 2 Regler, einen für die CPU Versorgung, einen fürs Grobe.
Gruß
Klaus
den Spannungsregler kann ich nur unter Anstrengungen austauschen, der ist auf dem Arduino fest verbaut...
Grüße,
Rico
Der 5V Regler am Arduino ist im Grunde mit dem Arduino ausgelastet. Ein paar LEDs sind noch OK aber ein Relais würd' ich nicht mehr damit versorgen.
-AH-
um noch einmal auf die Eingangsfrage zurückzukommen: Zur Berechnung des Vorwiderstandes ist ein Datenblatt hilfreich. Das Stichwort zur Berechnung heißt Arbeitspunkt, da die Verstärkung vom Kollektorstrom IC sowie der Kollektor-Emitterspannung abhängt. Man nehme also die hFE (Verstärkung)-IC-Kurve für die relevante Kollektor-Emitterspannung (bei Schaltanwendung entspricht diese der Sättigungsspannung VCEsat bei ebenjenem IC) und suche sich die hier vorliegende Verstärkung. Hieraus errechnet sich der notwendige Basisstrom zu IB=IC/hFE.
Der Vorwiderstand errechnet sich nun wie im Eingangsbeitrag richtig beschrieben zu R=(Treiberspannung - ca. 0,8V) / IB. Den Basisstrom sollte man für Schaltanwendungen etwas konservativ (also etwas höher) kalkulieren, um sicherzustellen, daß der Transistor beim Durchschalten auch tatsächlich in Sättigung geht. Für den Betrieb im Linearbereich gilt das oben Gesagte.
Grüße, Jürgen
erlaube mir die blöde Frage: Wenn Du den Arduino schon über ein 12V Netzteil speist, warum verwendest Du dann überhaupt 5V Relais und nicht gleich solche für 12V? Damit gibt es keinerlei Verluste durch's Runterregeln der Spannung.
Und wenn es schon 5V Relais sein sollen, dann nimm doch wenigstens einen Schaltregler, um die 5V für die Relais aus den 12V Deines Netzteils zu erzeugen. Die gibt es ja zu Hauf als Drop-In Ersatz für die klassischen LDOs wie den 7805, z. B. von Recom.
Viele Grüße,
Torsten
Nur registrierte und eingeloggte User können Antworten schreiben.
Einloggen ->
Noch nicht registriert? Hier können Sie Ihren kostenlosen Account anlegen: Neuer N-Liste Account
Zum Seitenanfang
© by 1zu160.net;