Eine Gleichstrommaschine (12A @ 13,8V) soll mittels PWM angesteuert werden.
Das PWM-Signal existiert bereits und hat folgende Eigenschaften:
Low-Pegel = 0V; High-Pegel = 13,8V
Frequenz kann fest im Bereich zwischen 11,1Hz & 250Hz festgelegt werden
maximaler Ausgangsstrom PWM-Signal: 0,2A
maximales Tastverhältnis 100%
Für diese Anwendung möchte ich nun eine PWM-Endstufe entwerfen. Im Grunde gehört ja nicht viel dazu, jedoch ist die Last induktiv und das maximale Tastverhältnis von 100% ist zu beachten, weshalb ein geringer Rdson gefordert ist.
Ich habe überlegt, einen eigensicheren MOSFET wie z.B. einen Omnifet zu nutzen, auf die Schnelle fällt mir hier der VNP20N07 ein. Mit der Wahl dieses MOSFETs würde ich mir ja sämtliche externen Schutzmaßnahmen, wie etwa Freilauf-Dioden, oder? Ebenfalls spricht für den VNP, dass er eine maximale Gatespannung von 18V verträgt.
Gibt es eventuell andere MOSFETs, die besser für meinen Zweck geeignet sind?
Um Missverständnisse zu vermeiden:
Der PWM-Ausgangsstrom von 0,2A bezieht sich auf die Stromlieferfähigkeit des PWM-Signals, nicht die Anforderung an den Motorstrom, der liegt bei 12A.
Bei einer Belastbarkeit von 200mA und einer PWM-Frequenz von nur max. 250Hz könnte man sogar auf sämtliche Widerstände verzichten und den N-Mosfet einfach mit einem zwischengeschalteten Push-Pull-Treiber ansteuern.
Mit der Wahl dieses MOSFETs würde ich mir ja sämtliche externen
Schutzmaßnahmen, wie etwa Freilauf-Dioden, oder?
Wenn du eine induktive Last mit PWM takten willst, dann brauchst du eine Freilaufdiode, denn sonst wird bei jedem Abschlaten die in der Induktivität gespeicherte Energie einfach in Wärme umgewandelt.
Gleichstrommaschine
Naben der bereits gestellten Frage nach der Richtungsumschaltung stellt sich da noch eine weitere Frage: was treibt dieser Motor an? Kann es sein, dass der Motor auch mal generatorisch wirkt (= von aussen angetrieben wird)?
einfach mit einem zwischengeschalteten Push-Pull-Treiber
ansteuern.
Zur Ansteuerung gibt es noch eine Besonderheit:
Das Signal wird generiert über einen Open-Collector-Ausgang --> mein Ansatz wäre gewesen, einfach einen 1k Pull-Up ranzuhängen, das bewirkt aber eine Invertierung des PWM-Signals und dann könnte man auch keine 0,2A mehr zur Verfügung stellen. Falls da jemand eine bessere Lösung hat, bin ich absolut offen dafür. Problem ist, dass der Open-Collector-Ausgang quasi eine Blackbox ist - ich habe weder Zugriff auf das Gate des Lowside-Switches, noch auf den Typ oder andere Daten.
ich habe das Ganze mal dimensioniert und mit einer Strommessung versehen, die ein 0-5V Analogsignal ausgibt. Bauteile sind allesamt SMD. Kannst Du mir Feedback geben?
R1=2k2, R3=100R, C1=10uF, bei Q1 sind E und C vertauscht, D2 belastet ohne 1k Vorwiderstand evtl. den LM358.
Geringe Ströme können evtl. nicht exakt mit dem LM358 als 0-5V Signal wiedergegeben werden, weil der LM358 erst ab 0,3V am Eingang anfängt zu "zählen".
Bei den ersten 6 Ampere können also Ungenauigkeiten auftreten.
Kannst Du mir eventuell erklären, wie Du auf die vorgeschlagenen Werte kommst bzw. was allgemein zu beachten ist?
Tendenziell könnte ich auch einen größeren Messwiderstand nehmen, bis 1V Spannungsabfall wäre theoretisch ohne Probleme machbar - da ist die Leistung über den Widerstand aber nicht mehr händelbar - das ist selbst mit den 0,47V Spannungsabfall schon mehr als kritisch.
Kannst Du mir stattdessen einen OPV empfehlen, der bereits ab 1A (also 0,047V) ein Signal liefern kann?
Beste Grüße
Edit - könnte man nicht auch einfach den Rds(on) als "Messwiderstand" nutzen, also quasi zwischen Drain & Source den OPV hängen?
ich hätte noch ein anderes Anliegen - ich bräuchte eine Art Nachlauffunktion, falls das PWM-Signal nicht mehr verfügbar ist und eine gewisse Temperaturschwelle überschritten wurde. Wie löst man das am besten? Arduino Nano oder gibt es da eine Alternative?
50% PWM würden für diesen Fall ausreichen, da dachte ich eventuell an die Verwendung eines NE555?
constintnachlaufZeit=10000;// Nachlaufzeit in Millisekunden (10 Sekunden)
4
5
voidsetup(){
6
pinMode(eingangsPin,INPUT);
7
pinMode(ausgangsPin,OUTPUT);
8
}
9
10
voidloop(){
11
inteingangsWert=pulseIn(eingangsPin,HIGH);// PulseIn-Funktion für Duty Cycle
12
13
if(eingangsWert>0){
14
intdutyCycle=map(eingangsWert,1000,2000,0,100);// Mapping des Duty Cycles von 0-100
15
analogWrite(ausgangsPin,map(dutyCycle,0,100,0,255));// Ausgabe des PWM-Signals mit gleichem Duty Cycle
16
}else{
17
analogWrite(ausgangsPin,128);// PWM-Signal mit 50% Duty Cycle, wenn kein Eingangs-PWM vorhanden ist
18
delay(nachlaufZeit);
19
analogWrite(ausgangsPin,0);// Stoppen des Ausgangs-PWM nach der Nachlaufzeit
20
}
21
}
Quelle: ChatGPT
Die beiden Fragen die ich gestellt habe:
Zeige Code für Arduino Nano. Ein PWM Signal soll als Eingang dienen. Der Code soll Duty cycle ermitteln. Ein Ausgang soll ein PWM Signal mit gleichem Duty cycle ausgeben. Die Frequenzen können unterschiedlich sein.
Füge einen Nachlauf hinzu. Im Falle eines fehlenden Eingangs-PWM soll das Ausgangs-PWM mit 50 % oder mit letztem gültigen ermittelten Duty cycle für 10 Sekunden weiter laufen und dann stoppen.
Danke Dir für den Code - ein Arduino würde schon auch durchaus Sinn machen.
Kann mir bitte noch einer von Euch Hilfe geben zu der PWM-Schaltung?
Ich habe folgende Unklarheiten:
warum die Spannungsteiler R1/R2 sowie R3/R4? Könnte man nicht einfach direkt am Transisor abgreifen?
Kann man (Abgleich vorausgesetzt) den Rds(on) als Messwiderstand nutzen oder wird das eher nichts? Der gemessene Wert muss eigentlich nicht wirklich genau sein, ich will eigentlich nur einen Pumpendefekt erkennen (wenn PWM >10% && Strom == 0A dann Fehler oder irgendwie sowas)
Welcher OPV außer de LM358 kann kleine Eingangsspannungen verarbeiten?
Danke Dir für den Code - ein Arduino würde schon auch durchaus Sinn
machen.
Der Code ist leider totaler Blödsinn. Wenn man sich mal die pulseIn() Funktion anschaut wird das klar, da fehlt noch die off-time. Aber ChatGPT liefert zumindest irgendwie Vorschläge auf deren Basis man dann selbst was schreiben kann.
Mit einer Summe pulseIn(Pin, HIGH) + pulseIn(Pin, LOW) bekommst Du die Frequenz und damit kannst Du Duty cycle = pulseIn ÷ Summe berechnen.
ChatGPT macht denkfaul.
Zu der Elektronik kann ich nix sagen, den Schaltplan verstehe ich nicht. Ich kaufe gern so kleine fertige Arduino Platinchen..
Kann man (Abgleich vorausgesetzt) den Rds(on) als Messwiderstand
nutzen oder wird das eher nichts?
Wie soll das gehen, ohne das der Messverstärker bei offenem MOSFet voll in die Sättigung geht?
Übrigens: Für einen 12A Motor ist eine 1N4007 als Freilaufdiode ein kleiner Haps zum Frühstück, die ist nach den ersten paar PWM Zyklen putt. Als Faustregel muss die Freilaufdiode den Motorstrom, also min. 12A vertragen.
die 1N4007 ist nur ein Dummy. Ich würde wahrscheinlich eine SK82 nehmen, die kann zwar nur 8A dauerhaft, aber für SMB/SMC gibt es keine Diode mit mehr Strom. Der Spitzenstrom liegt mit 30A ja auch deutlich höher.
Die Idee mit dem Messverstärker werde ich wahrscheinlich ohnehin verwerfen, weil die Temperatur direkt überwacht wird. Falls die Pumpe ausfällt, bekommt man das (indirekt) über die Temperaturerhöhung mit.
Kannst Du eventuell etwas zu meiner obigen ersten Frage sagen? Warum die Spannungsteiler?
Welche? R1/R2 und R3/R4? Keine Ahnung, die hast du da eingezeichnet. R3/R4 ist jedenfalls Unsinn, denn du willst ja auch nach den Emitterfolgern noch Spannungshub haben. R3 sollte also eher eine Drahtbrücke sein, R4 kann so bleiben.
R1/R2 hängen davon ab, wie dein Steuersignal aussieht. Wenn das aus einem MC kommt dann fehlt da noch ein NPN zwischen R2 (Kollektor) und Masse (Emitter). An der Basis dann über 330 - 1k Widerstand einspeisen. R2 deutlich verringern auf z.B. 1k oder 2k2.
Denke dran, Q1 richtig herum zu polen - Emitter muss auf Plus.
Wenn das aus
einem MC kommt dann fehlt da noch ein NPN zwischen R2 (Kollektor) und
Masse (Emitter)
um einen MC-Ausgang handelt, sondern um einen Open-Collector-Ausgang.
Leider meldet sich Marcel V. nicht, sonst hätte ich ihn direkt nach den Spannungsteilern gefragt. Irgend einen Sinn müssen die ja haben, aber das erschließt sich mir nicht ganz.
Wenn es ok ist, das der MOSFet durchgeschaltet wird, wenn der OC Ausgang low wird, dann kannst du an R2 den OC Ausgang direkt anschliessen. Die Anmerkung gilt trotzdem. R2 deutlich verringern auf 2k2 und R3 auf null Ohm reduzieren.
Q1 umpolen nicht vergessen.
Kann man (Abgleich vorausgesetzt) den Rds(on) als Messwiderstand
nutzen oder wird das eher nichts?
Wie soll das gehen, ohne das der Messverstärker bei offenem MOSFet voll
in die Sättigung geht?
Übrigens: Für einen 12A Motor ist eine 1N4007 als Freilaufdiode ein
kleiner Haps zum Frühstück, die ist nach den ersten paar PWM Zyklen
putt. Als Faustregel muss die Freilaufdiode den Motorstrom, also min.
12A vertragen.
Mit einem µC (meinetwegen AVR) würde ich das entspannter sehen. Mit einem Überspannungsschutz am ADCx-Eingang und einem Abtastzeitpunkt während der Einschaltphase, kann man RDSon gut zur Überstromerkennung nutzen.
Bei VNPxyz ist keine Schutzdiode notwendig. Vclamp sorgt für den Schutz. Bei langen Zuleitungen sollte man aber aufpassen, keinen Störsender zu bauen.
Stichwort LM358: der kann überhaupt nicht zählen. Sein Gleichtaktarbeitsbereich liegt dafür bei 0 - Vcc-1,5 V (siehe Datenblatt).
Stichwort NE555: den habe ich wiederholt als push-pull-Treiber für MOSFETs bei niedrigen PWM-Frequenzen verwendet.
Leider meldet sich Marcel V. nicht, sonst hätte ich ihn direkt nach den
Spannungsteilern gefragt. Irgend einen Sinn müssen die ja haben, aber
das erschließt sich mir nicht ganz.
R3 mit 100 Ohm dient nur dazu, dass das Gate nicht mehr als 12V sieht. Da deine Versorgungsspannung 13,8V beträgt kann R3 zur Not auch weggelassen werden, dein Mosfet hält schließlich max. 18V (GS-Strecke) aus. Erst ab einer Versorgungsspannung von 18V wird R3 wieder wichtig.
Ich muss zugeben, dass mir der Bedarf der Push-Pull-Stufe nicht so recht klar ist; bzw. ich sie eher für schädlich halte.
Der MOSFET VNB14N04TR-E hat einen maximalen Eingangstrom von +-20mA (absolute Ratings!), die du mit der Stufe nicht sicher einhalten kannst. Aber gleichzeitig deine PWM locker kann. Wozu also?
Darüberhinaus hat der VNB14N04TR-E einen maximalen Drainstrom von 12A, was mit
R2 deutlich verringern auf 2k2 und R3 auf null
Ohm reduzieren.
Derweile hat Marcel V. ja geantwortet - er hat andere Werte vorgeschlagen. Könnt ihr beide eventuell erklären, wie ihr auf die Werte gekommen seid? Du hast ja 2k2, er aber 4k7 vorgeschlagen. Ich will das nicht in Frage stellen, sondern gerne verstehen.
Bei VNPxyz ist keine Schutzdiode notwendig. Vclamp sorgt für den Schutz.
Der Meinung war ich eigentlich auch, weil ich die VNP/VND/VNB als Treiber für Magnetventile aus der Pneumatik kenne, die PWM angesteuert werden. Wenn die Diode weggelassen werden kann, passt mir das super.
Da deine Versorgungsspannung 13,8V beträgt kann R3 zur Not auch
weggelassen werden
Jetzt, wo ich die Funktion verstanden habe, werde ich R3 verbaut lassen.
Nur zum Verständnis - R1 lässt Q1 schneller abschalten, weil der effektive Widerstand zum Hochziehen der Basis geringer ist, richtig? Ab welcher Frequenz wird das relevant?
Stichwort LM358: der kann überhaupt nicht zählen. Sein
Gleichtaktarbeitsbereich liegt dafür bei 0 - Vcc-1,5 V (siehe
Datenblatt).
Wie geschrieben - eigentlich brauche ich keine wirkliche Stromüberwachung, sondern nur eine Überwachung, ob überhaupt irgend ein Strom fließt (also der Motor der Pumpe läuft). Falls das nicht mit einfachsten Mitteln umsetzbar ist, kann das entfallen.
Aber gleichzeitig deine PWM locker kann. Wozu also?
Da habe ich mich anfänglich aufgrund falscher Informationen geirrt - da ist nur ein Open-Collector-Ausgang vorhanden, dessen Kollektor max. 10A kann - in dem Falle leider wenig relevant.
12A sind die lineare Stromlimitierung. Die Gleichstrommaschine nimmt die 12A mit einer zulässigen Einschaltdauer von 5% auf - in meinem Anwendungsfall absolut irrelevant. 10A sind der Dauerstrom, der für die Auslegung relevant ist.
Noch eine Frage @Marcel V.: Warum ist die Widerstandsstrecke R1/R2 so viel hochohmiger als die Widerstandsstrecke R3/R4? Damit die Push-Pull-Treiberstufe mehr Strom bekommt?
Der Widerstand darf nicht zu groß sein, damit die Basis schnell eingeräumt werden kann (Steilflankigkeit), aber auch nicht zu klein (unnötig hoher Basisstrom).
Falls das nicht mit einfachsten Mitteln umsetzbar ist, kann das
entfallen.
Probier mal den MC33202 der macht im Zweifel auch kein schädliches Phase Reversal, oder nimm einen anderen Rail to Railtyp. Ansonsten musst du dem LM358 eine negative Versorgungsspannung spendieren.
Schon ab 1 Hz. Der Mosfet will zügig seine Gatekapazität ge- und
entladen bekommen.
So 'zügig' wie bei der DB? Oder meinst Du 'sofort' oder 'unmittelbar'?
Wenn Du mal eine Zeit in ns, µs oder ms angeben würdest, könnte der TO viel besser verstehen, ob die von Dir genannten Werte überhaupt relevant sind.
HF-Eigenschaften werden hier nicht gefordert sein.
Also ich verstehe nicht, wie man bei der Informationslage was
raten sollte/könnte. Bzw. bezweifle ich prinzipiell den Erfolg.
Welche (Kreisel-)Pumpe genau? Datenblatt enthielte diverse
(Maximal-)Werte, was erste Rückschlüsse erlaubte.
Genaue Beschreibung der Anwendung erlaubte restliche solche.
(Auch die geplante Versorgung, wg. der Potentialverhältnisse...
für vielleicht WIRKLICH das einfachstmögliche "Mosfet lowside".)
Nur so/erst dann kann man wissen, welche Schaltungsvarianten
(Signalseitig UND Endstufe) minimal nötig / vielleicht sinnvoll.
Du glaubst nicht, daß das alles sinnvoll wäre, zu nennen...? OK:
Die Alternativen der Schaltungs-Realisierung an sich (wobei
nichts davon ohne den PullUp-R ginge, für das "inactive high" -
und an den Ausgang halt erst mal ein Treiber/Puffer sollte):
Man nutzt Push-Pull-Treiber, um I_quer zu verringern/-meiden
Einfachster nicht invertierender Treiber wäre NPN plus PNP.
"Von selbst invertierend" (um aus "Open Collector active low"
ein "active high" Signal zu generieren) wäre ein FET-Pärchen.
Weiters könnte man einen 1Q Steller auch simpelst als lowside
Mosfet plus highside Diode ausführen, z.B. wenn keine I-Messung,
bzw. in Deinem Fall (wg. OC Ausgang) Treiber mit FET-Pärchen
= P-ch + N-Ch, der einen N-FET lowside treibt.
... oder -empfehlenswert- man benutzte einen fertigen TREIBER
... die es sowohl nicht- als auch -invertierend gäbe
... und übrigens auch mitsamt Meßverstärker ... für den Strom
[ob man den analog (= div. Werte) oder digital (= ob überhaupt
vorhanden) auswerten wollte, wäre dabei ja völlig egal...]
ODER die beste Lösung wäre sogar was ganz anderes:
Wir kennen wie gesagt keinerlei näheren Details Deines Vorhabens.
Vielleicht wärest Du mit einem Schaltregler-IC besser beraten...
Sowas brächte dann selbst PWM-Erzeugung, Strom-Messung und falls
am sinnvollsten auch -Steuerung (wegen Sanftanlauf / Kreiselpumpe)
mit. Über ein kleines RC-Glied parallel zum Shunt wäre aber auch
ein etwas erhöhter Anlaufstromwert einstellbar - könnte ja von
Vorteil oder gar notwendig sein...?
Gäbe 1000 Dinge zu beachten, kaum eines wurde hier diskutiert.
Da WIR hier bisher null wissen, bleibt nur... "VIEL GLÜCK!" ...?
das klingt ja düster.. Es geht doch nur um eine Lowside-PWM-Endstufe, die mittels PWM-Speisung aus einem Open-Collector-Ausgang mit 250Hz Frequenz und 0-100% Duty-Cycle gespeist werden soll und der Steuerung einer Gleichstrommaschine, die ausschließlich im Einquadrantenbetrieb laufen soll, dient.
Gibt es da irgendwelche größeren Kniffe oder Sackgassen? Ich hätte ohne eure Hilfe einfach einen zweiten NPN genommen und den Strom bei Nichtansteuerung einfach akzeptiert, aber Marcel hat eine deutlich bessere Lösung (Danke dafür!) vorgeschlagen. Falls es noch was Besseres gibt - immer her damit, ich bin für jede Hilfe dankbar.
Es handelt sich um eine Kühlmittelpumpe in einem Kraftfahrzeug. Das habe ich bisher bewusst weg gelassen, da ich in der Vergangenheit Beiträge lesen musste, die wie folgt lauteten: "Oha ein "Autotuner" also. Das erklärt so einiges." (Zitat Cyblord hier im Forum). Das stimmt leider immer etwas mulmig, wenn man hier ein KFZ-bezogenes Thema eröffnen möchte, weshalb ich einige Detailinfos nicht erwähnt habe.
Gemeinsame Masse, Dauerhafte 13,8V an der Pumpe sowie geschaltene 13,8V am PWM-Modul. Absicherung sowohl für Pumpe (15A) als auch für die Ansteuerung (5A gemeinsam mit dem Open-Collector-Ausgang).
Okay, hatte bisher für die kleinen SMD Sachen eigentlich immer 0,25mm Leiterbahndicke genommen und war der Meinung, dass im Kleinsignalbereich (also die Ansteuerung) sowas ausreichend ist, gerade auch weil 70µ Kupfer.
Sollte aber kein Ding sein, auf 0,4...0,5mm zu gehen, ist notiert.
Die Vias zum Einlöten der Kabel sind für 0,75mm² (Kl.15 & PWM) sowie 2,5mm² (Load & GND) ausgelegt und liegen ja in Mitten der ausgefüllten Flächen (die sind nur ausgeblendet). Meinst Du, ich sollte das Solder-Pad für die Source des FETs größer gestalten, um mehr Lötzinn aufzubringen?
Gut im KFZ Bereich wäre allerdings eine saubere 12 Volt Versorgung von Vorteil, oder zumindest sollte alles so ausgelegt sein das es Spannungsspitzen aushält (65 V ≤ 400 ms).
Automasse findest Du in der Zulassungsbescheinigung Teil I unter Punkt G, und die Auto-Masse unter Punkt 18, 19, 20 ;)
ich habe versucht, die 12V-Versorgung so sauber wie möglich zu gestalten:
Kl. 30 hängt direkt an der Batterie mittels Littelfuse PDM, Kl. 15 über einen Relais ebenfalls direkt ab PDM - das ist komplett vom eigentlichen Fahrzeugkabelbaum getrennt und sollte daher (hoffentlich) von Störungen weitgehend verschont bleiben und die Spannungsquelle recht niederohmig sein.
Das Thema Spannungsspitzen hatte ich auch schon im Hinterkopf, das könnte das Gate vom Omnifet grillen - mit einer Gate-Z-Diode könnte man das sicher verhindern, das würde ohne vorgesetzten Widerstand aber die Push-Pull-Stufe belasten.. Falls ihr das aber für sinnvoll haltet, würde ich das noch einbauen.
Genau, normalerweise sollte das Littelfuse "FLEC"-Verteilungsmodul eventuell auftretende Spitzen abfangen.
Dennoch wäre es wahrscheinlich sinnvoll, die Schaltung für die zukünftige Implementierung in andere Fahrzeuge ohne Verteilungsmodule sicher gegen Spannungsspitzen auszulegen. Ist aus dieser Sicht die Verwendung einer 16V-Z-Diode zusammen mit einem vorgeschaltetem 1k-Widerstand von Gate nach Masse zielführend?
Ist aus dieser Sicht die
Verwendung einer 16V-Z-Diode zusammen mit einem vorgeschaltetem
1k-Widerstand von Gate nach Masse zielführend?
Eher solltest du in dem Fall mal anständig abblocken. Also Elko an die Versorgung, Drossel und TVS Diode gegen Masse in die Plusleitung. Als Beispiel für Dinge, die im Auto nicht gestört werden wollen, kannst du den Eingang von Autoradios als Beispiel nehmen.
habe das mal als Stromlaufplan zusammengestellt, mit 1mH Induktivität, 100µ 50V Elko und 15V TVS-Diode.
Ist das jetzt ausreichend stör- und spannungsspitzenresistent für direkten Anschluss an Batteriespannung (also ohne PDM)? Theoretisch kann R3 jetzt entfallen, oder sollte man den trotzdem drinnen lassen?