Forum: Mikrocontroller und Digitale Elektronik Strom messen Arduino PWM Signal


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Gustav Gruenefelden (Gast)


Lesenswert?

Guten Tag Zusammen

Ich möchte gerne bei einem PWM Signal den Strom Messen. Doch natürlich 
schwankt die Messung wegen des PWM-Signals. Wie kann ich diesen Messen 
ohne die Schwankungen? Bei Fragen stehe ich gerne zur Verfügung.

Hier ist mein bisheriger Code um den Strom zu messen. Er schwankt aber 
bei einem PWM Signal:
1
  int sensorValue = analogRead(Strommesspin);
2
  float Electricity = ((sensorValue * (5.0 / 1023.0))/1.0)*1000.0;
3
  
4
5
      lcd.setCursor(0, 1);
6
      lcd.print(Electricity);
7
      lcd.print("mA");
8
      
9
      delay(1000);
Dies ist die Formel um den Strom zu messen welche bei einer LED getestet 
wurde und funktionierte. Jedoch bei PWM schwanken die Werte stark.
((sensorValue * (5.0 / 1023.0))/1.0)*1000.0;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gustav Gruenefelden schrieb:
> float Electricity = ((sensorValue * (5.0 / 1023.0))/1.0)*1000.0;
Urgs. Murgs.
Aber das "geteilt durch Eins Komma Null" ist der 
Oberhammerschenkelklopfer. Zum Glück ist der Compiler da schlauer als 
der Programmierer... ;-)

> lcd.print(Electricity);
> lcd.print("mA");
Wenn du schon unbedingt englische Worte für deine Variablen nehmen 
musst, dann nimm wenigstens "Current" für den "Strom".

> Wie kann ich diesen Messen ohne die Schwankungen?
Du musst zum richtigen Zeitpunkt messen: dann, wenn der Strom halbwegs 
definiert und konstant ist. Mehr kann man leider mangels brauchbarer 
Angaben zu Anwendung (PWM-Frequenz, Last, Schaltung...) nicht sagen.

: Bearbeitet durch Moderator
von Gustav Gruenefelden (Gast)


Angehängte Dateien:

Lesenswert?

Lothar M. schrieb:
> Gustav Gruenefelden schrieb:
>> float Electricity = ((sensorValue * (5.0 / 1023.0))/1.0)*1000.0;
> Urgs. Murgs.
> Aber das "geteilt durch Eins Komma Null" ist der
> Oberhammerschenkelklopfer. Zum Glück ist der Compiler da schlauer als
> der Programmierer... ;-)
Ich weiss schon, dass man diesen Wert weglassen kann. Ich habe mich 
jedoch bewusst dazu entschieden die 1.0 in den Code zu schreiben, weil 
ich dadurch die Formel noch in Ferner Zeit nachvollziehen kann und die 
Grösse des Shunts beliebig ändern kann ohne grossen Aufwand.

Ich Verwende die Grundfrequenz, glaube um die 800Hz. Der Shunt ist ein 1 
Ohm Widerstand welche den Strom eines Lüfters misst mit der folgenden 
Schaltung.
Wie kann ich den richtigen Zeitpunkt festlegen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gustav Gruenefelden schrieb:
> mit der folgenden Schaltung.
Zeichne die verwirrende Schaltung mal wie üblich "von Plus nach Minus 
von oben nach unten". Dann siehst du schnell, dass die keinen Strom 
messen kann, weil der Spannungsabfall vom Shunt nicht an den 
Analogeingang vom Druiden kommt.
Viel schlimmer: die Schaltung wird dir den Druiden kaputt machen, weil 
über den Analogeingang 12V in den µC kommen.

Am sinnvollsten wäre es, die Schaltung "umgekehrt" aufzubauen (also auf 
der Highside zu schalten) und den Shunt an Masse zu legen:
1
   + ------------------------o----
2
                             |
3
                          ||-|
4
    PWM-Ansteuerung       ||>'
5
    üner NPN-Transistor --||-.
6
                             |
7
                      .------o
8
                      |      |
9
                      |     Lüfter
10
                      -      |
11
       Freilaufdiode  ^      o---------- Ain
12
                      |      |
13
                      |     1R Shunt
14
                      |      |
15
    GND --------------o------o---------- GND

: Bearbeitet durch Moderator
von Voyager 2 (Gast)


Lesenswert?

Lothar M. schrieb:
> Urgs. Murgs.
> Aber das "geteilt durch Eins Komma Null" ist der
> Oberhammerschenkelklopfer. Zum Glück ist der Compiler da schlauer als
> der Programmierer... ;-)

Und du bist Moderator hier. Da hat man aber den Bock zum Gärtner 
gemacht.

von Gustav Gruenefelden (Gast)


Angehängte Dateien:

Lesenswert?

Lothar M. schrieb:
> Gustav Gruenefelden schrieb:
>> mit der folgenden Schaltung.
> Zeichne die verwirrende Schaltung mal wie üblich "von Plus nach Minus
> von oben nach unten". Dann siehst du schnell, dass die keinen Strom
Im Anhang neu gezeichnet.

> messen kann, weil der Spannungsabfall vom Shunt nicht an den
> Analogeingang vom Druiden kommt.
> Viel schlimmer: die Schaltung wird dir den Druiden kaputt machen, weil
> über den Analogeingang 12V in den µC kommen.

Habe es falsch aufgezeichnet so ist es nicht. Der Shunt ist bei Source 
zu GND. Im Anhang befindet sich die richtige Version, wie die Schaltung 
sich auf dem Print befindet.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Voyager 2 schrieb:
> Und du bist Moderator hier.
Tja, da sieht man mal den Unterschied. Denn im Gegensatz zu deinem 
billigen Gejammer enthält mein Post auch noch sinnvolle Informationen.

> Da hat man aber den Bock zum Gärtner gemacht.
Empfindest du die ausgiebige Verwendung von Fließkommazahlen auf einem 
µC als sinnvoll? Hältst du den Faktor 1023,0 für richtig?

Gustav Gruenefelden schrieb:
> Der Shunt ist bei Source zu GND.
Das ist ungünstig, denn der Strom, der durch den Shunt fließt, hebt die 
Sourcespanung an. Und deshalb wird die Ugs geringer (weil ja Ug auf max. 
5V bleibt) und der Mosfet leitet schlechter.

: Bearbeitet durch Moderator
von Gustav Gruenefelden (Gast)


Lesenswert?

Ich habe auf dem Schaltbild vergessen die Verbindung oberhalb des Shunts 
zum Arduino Analog Pin zu ziehen.

von Teo (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Ich Verwende die Grundfrequenz, glaube um die 800Hz. Der Shunt ist ein 1
> Ohm Widerstand welche den Strom eines Lüfters misst mit der folgenden
> Schaltung.
> Wie kann ich den richtigen Zeitpunkt festlegen?

Garnicht, wo her willst du wissen wann der Lüftermotor Kommutiert!
Mehr als hier den Effektivwert zu berechnen, wird wohl nicht gehen.

von Gustav Gruenefelden (Gast)


Lesenswert?

Lothar M. schrieb:


> Empfindest du die ausgiebige Verwendung von Fließkommazahlen auf einem
> µC als sinnvoll? Hältst du den Faktor 1023,0 für richtig?
Ich dachte mir ich verwende Fliesskommazahlen um in der Lösungen auch 
Fliesskommazahlen zu erhalten.

> Gustav Gruenefelden schrieb:
>> Der Shunt ist bei Source zu GND.
> Das ist ungünstig, denn der Strom, der durch den Shunt fließt, hebt die
> Sourcespanung an. Und deshalb wird die Ugs geringer (weil ja Ug auf max.
> 5V bleibt) und der Mosfet leitet schlechter.

Ok, dies kann ich jedoch nicht mehr ändern weil der Print bereits 
bestellt vor mir liegt. Das PWM lässt sich jedoch gut steuern.

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Wie kann ich den richtigen Zeitpunkt festlegen?

du synchronisierst die Messung mit der PWM und misst immer nur, wenn der 
FET eingeschaltet ist.

Alternativ dazu kannst du zwischen Shunt und ADC-Eingang einen Tiefpass 
einbauen, der über das PWM-Signal am Shunt mittelt. Dann kannst du zu 
beliebigen Zeiten messen, musst aber den Messwert noch durch den 
Tastgrad der PWM dividieren, um auf den tatsächlichen Strom im 
Lüftermotor zu kommen.

von Axel R. (axlr)


Lesenswert?

Wieviel Strom "zieht" den der Lüfter? 200mA - 300mA?
Macht dann bei 1R Shunt einen "ground-lift" von eben 200 - 300mV.
Der SI2302 ist selbst bei nur 2.5V U_GS noch gut im Rennen. Da passiert 
nix.

Du musst den ADC am Ende des PWM Zyklus' starten, bevor er wieder auf 
LOW geht. Deine Berechnungen (Float usw.) müssen dann natürlich so 
schnell sein, dass du eher fertig bist, bevor die PWM wieder auf LOW 
geht und dir den Wert wieder verhagelt. Daher würde ich auch lieber 
überlegen a) wie man die Berechnung ganz simpel hält und b) wie man den 
ADC gestartet bekommt, kurz bevor die High-Phase der PWM "um" ist. oder 
umgekehrt von den Prioritäten her. Kannst ja den ADC zB. über den 
Analog-Komparator triggern...
kannst aber auch einfach alles so lassen und mit 10K und 100nF deine 
Spannung über dem 1Ohm tiefpassfiltern.
Die Referenzspannungsgeschichte kann man mit entsprechend 
"aufgeblasenen" hochskalierten Integer-Werten rechnen und das Komma 
später auf dem Display setzen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Axel R. schrieb:
> Wieviel Strom "zieht" den der Lüfter? 200mA - 300mA?
Kann mans wissen?
Ich habe hier Axiallüfter, die ziehen 3A bei 48V. Die Dinger kann man 
fliegen lassen.

> Du musst den ADC am Ende des PWM Zyklus' starten, bevor er wieder auf
> LOW geht. Deine Berechnungen (Float usw.) müssen dann natürlich so
> schnell sein, dass du eher fertig bist, bevor die PWM wieder auf LOW
> geht und dir den Wert wieder verhagelt.
Zum Steuern des ADC und zum Einlesen des AD-Wertes nimmt man Interrupts. 
Dann ist es schnurzegal, wie schnell die Berechung und das Display(!!) 
ist.

Gustav Gruenefelden schrieb:
> Im Anhang neu gezeichnet.
Mach noch eine Freilaufdiode rein...

von Gustav Gruenefelden (Gast)


Lesenswert?

Lothar M. schrieb:
> Axel R. schrieb:
>> Wieviel Strom "zieht" den der Lüfter? 200mA - 300mA?
> Kann mans wissen?
> Ich habe hier Axiallüfter, die ziehen 3A bei 48V. Die Dinger kann man
> fliegen lassen.
Er verbraucht 60mA bei 12V.


>> Du musst den ADC am Ende des PWM Zyklus' starten, bevor er wieder auf
>> LOW geht. Deine Berechnungen (Float usw.) müssen dann natürlich so
>> schnell sein, dass du eher fertig bist, bevor die PWM wieder auf LOW
>> geht und dir den Wert wieder verhagelt.
> Zum Steuern des ADC und zum Einlesen des AD-Wertes nimmt man Interrupts.
> Dann ist es schnurzegal, wie schnell die Berechung und das Display(!!)
> ist.

Ich würde gerne den Mittelwert des Stromes nehmen weil sonst der Strom 
ja immer gleich wäre. Ich weiss jedoch nicht wie ich verschieden Punkte 
in verschiedenen Zeiten.


> Gustav Gruenefelden schrieb:
>> Im Anhang neu gezeichnet.
> Mach noch eine Freilaufdiode rein...

Am Print kann leider nichts mehr verändern.

von Gustav Gruenefelden (Gast)


Lesenswert?

Achim S. schrieb:

> du synchronisierst die Messung mit der PWM und misst immer nur, wenn der
> FET eingeschaltet ist.
Ich möchte eben gerne den Mittelwert berechnen, weil sonst der Strom 
immer gleich ist egal ob ich PWM verstelle. Ich weiss jedoch nicht wie 
ich verschieden Messungen bei verschiedenen Zeiten mache.


> Alternativ dazu kannst du zwischen Shunt und ADC-Eingang einen Tiefpass
> einbauen, der über das PWM-Signal am Shunt mittelt.
Am Print kann ich leider nichts mehr verändern

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Ich möchte eben gerne den Mittelwert berechnen, weil sonst der Strom
> immer gleich ist egal ob ich PWM verstelle.

Möchtest du den Mittelwert des Stroms durch den Lüfter wissen oder 
möchtest du den Mittelwert des Stroms durch den Shut wissen? Beides hat 
unterschiedliche Werte. Zumindest dann, wenn du eine Freilaufdiode 
eingebaut hast. Was du unbedingt tun solltest.

Der einfachste Weg, den Mittelwert zu bestimmen, besteht in meinem 
zweiten Vorschlag:

Achim S. schrieb:
> Alternativ dazu kannst du zwischen Shunt und ADC-Eingang einen Tiefpass
> einbauen, der über das PWM-Signal am Shunt mittelt. Dann kannst du zu
> beliebigen Zeiten messen, musst aber den Messwert noch durch den
> Tastgrad der PWM dividieren, um auf den tatsächlichen Strom im
> Lüftermotor zu kommen.

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Am Print kann ich leider nichts mehr verändern

Glaube ich nicht. Trenne halt die Leitung auf und löte von Hand einen 
Längswiderstand + Kondensator ein.

von Axel R. (axlr)


Lesenswert?

Gustav Gruenefelden schrieb:
> weil sonst der Strom
> immer gleich ist egal ob ich PWM verstelle.

Meinste?
Wie kommst'n zu dieser Annahme?
der Strom wird schon ordentlich nach oben gehen, wenn der Lüfter 
langsamer läuft.
Okay - ist jetzt kein Bürstenmotor, getestet hab ich das mitm PC-Lüfter 
auch noch nicht...

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
>> Mach noch eine Freilaufdiode rein...
>
> Am Print kann leider nichts mehr verändern.

Ohne Freilaufdiode ist es eine Schrottschaltung. Keine Lüftersteuerung 
sondern eine Transistorheizung. Du kannst natürlich noch extern eine 
Freilaufdiode über die Klemmen des Lüfters anschließen. Mach das, oder 
baue eine neue Schaltung.

von Gustav Gruenefelden (Gast)


Lesenswert?

Achim S. schrieb:

> Möchtest du den Mittelwert des Stroms durch den Lüfter wissen oder
> möchtest du den Mittelwert des Stroms durch den Shut wissen? Beides hat
> unterschiedliche Werte. Zumindest dann, wenn du eine Freilaufdiode
> eingebaut hast. Was du unbedingt tun solltest.
Ich möchte gerne den Mittelwert durch den Shunt wissen. Der FET hat ja 
bereits eine Freilaufdiode verbaut.

von Gustav Gruenefelden (Gast)


Lesenswert?

Axel R. schrieb:
> Gustav Gruenefelden schrieb:
>> weil sonst der Strom
>> immer gleich ist egal ob ich PWM verstelle.
>
> Meinste?
> Wie kommst'n zu dieser Annahme?
> der Strom wird schon ordentlich nach oben gehen, wenn der Lüfter
> langsamer läuft.
> Okay - ist jetzt kein Bürstenmotor, getestet hab ich das mitm PC-Lüfter
> auch noch nicht...


Ich dachte dass der Ventilator bei dem positiven Puls immer die 60 mA 
verbraucht. Aber, durch das ständige einschalten und ausschalten Strom 
gespart wird, was ich auch sehe wenn ich mit einem Multimeter messe.

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Der FET hat ja
> bereits eine Freilaufdiode verbaut.

NEIN, das hat er nicht. Nichts für ungut, aber du hast überhaupt nicht 
verstanden, wie PWM an induktiven Lasten funktioniert. Bitte ergänze die 
Freilaufdiode an den Klemmen, ohne ist die gesamte Diskussion hier 
sinnlos.

Hier kannst du betrachten, wie die Schaltung aussehen sollte (dein 
Strommess-Shunt kommt noch dazu) und nachlesen, wie sie funktioniert.
https://www.mikrocontroller.net/articles/Motoransteuerung_mit_PWM#Mosfet_mit_Freilaufdiode.2C_1-Quadrantensteller

von Gustav Gruenefelden (Gast)


Lesenswert?

Oke danke habe es nun Verstanden und die Freilaufdiode verbaut.

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Oke danke habe es nun Verstanden und die Freilaufdiode verbaut.

Prima. Ab jetzt gilt ungefähr: der Strom im Lüfter stellt sich so ein, 
als würdest du den Lüfter mit einer Gleichspannung versorgen, die den 
Wert 12V*Tastgrad hat.

Ab jetzt gilt ebenfalls ungefähr: der Strom, der in der Mitte der 
On-Phase durch den Shunt fließt entspricht dem mittleren Strom durch den 
Motor. Du kannst also entweder deine ADC-Messung so timen, dass die 
Abtastung in der Mitte der On-Phase stattfindet. Dann bekommst du den 
mittleren Motorstrom.

Oder du kannst den Spannungswert am Shunt per Tiefpass mitteln. Dann 
bekommst du den mittleren Stromfluss durch den Shunt. Der mittlere 
Stromfluss im Motor lässt sich daraus berechnen, indem du durch den 
Tastgrad dividierst.

von Gustav Gruenefelden (Gast)


Lesenswert?

Achim S. schrieb:


> Ab jetzt gilt ebenfalls ungefähr: der Strom, der in der Mitte der
> On-Phase durch den Shunt fließt entspricht dem mittleren Strom durch den
> Motor. Du kannst also entweder deine ADC-Messung so timen, dass die
> Abtastung in der Mitte der On-Phase stattfindet. Dann bekommst du den
> mittleren Motorstrom.
Dieser Teil leuchtet mir noch nicht ganz ein, weshalb in der Mitte des 
Pulses der mittlere Strom ist und nicht die 60 mA. Wäre es auch möglich 
wie oben beschrieben mit dem Tastgrad den Mittelwert des Stromes zu 
berechnen. Tasgrad*60mA=Mittelwert. Dann müsste ich nur noch rausfinden 
wie ich den Tastgrad mit Hilfe des Arduinos ermittle.

von Eberhard H. (sepic) Benutzerseite


Lesenswert?

Alternativer Ansatz: Die impulsformige Spannung am Fühlerwiderstand z. 
B. per LTC1966 in eine Gleichspannung wandeln (evtl. vorher verstärken) 
und dann ganz entspannt per Arduino messen.

von Gustav Gruenefelden (Gast)


Lesenswert?

In diesem Stil würde ich es gerne ausrechnen nach meinem Verständnis 
sollte es funktionieren stimmt das so?


1
void loop() {
2
float tH= pulseIn(D1,HIGH);        //misst Pulslänge HIGH
3
float tL= pulseIn(D1,LOW);         //misst Pulslänge LOW
4
float Tastgrad = (tH/(tL+tH)):     //Rechnet Tastgrad aus
5
float Strom = (Tastgrad*60);       //60 steht für 60 mA rechnet mittelwert 
6
                                     strom aus
7
delay(10);
8
}

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Dieser Teil leuchtet mir noch nicht ganz ein, weshalb in der Mitte des
> Pulses der mittlere Strom ist und nicht die 60 mA.

Wegen der Induktivität des Motors. Die stemmt sich gegen schnelle 
Stromänderungen und sorgt beim PWM-Betrieb dafür, dass ungefähr der 
Strom fließt, der 12V*Tastgrad entspricht.

Während der On-Phase steigt der Strom ein bisschen an, während der 
Off-Phase sinkt er ein bisschen ab. Der Strom wackelt also 
dreiecksförmig um den mittleren Storm herum. In der Mitte der On-Phase 
und in der Mitte der Off-Phase fließt jeweils grade der Strom, der im 
Mittel über die gesamte Periode fließt.

Eberhard H. schrieb:
> Die impulsformige Spannung am Fühlerwiderstand z.
> B. per LTC1966 in eine Gleichspannung wandeln

Kann man machen. Dann muss man aber wissen, dass das den RMS-Wert des 
Shuntstroms liefert, und dass der durch die Wurzel des Tastgrads 
dividiert werden muss, um den Strom durch den Motor zu liefern. Da wäre 
es sicher einfacher, durch den RC-Tiefpass den Mittelwert des 
Shuntstroms zu bestimmen und durch den Tastgrad zu dividieren.

Gustav Gruenefelden schrieb:
> In diesem Stil würde ich es gerne ausrechnen nach meinem Verständnis
> sollte es funktionieren stimmt das so?

Warum willst du den Tastgrad messen? Den gibst du doch selbst mit der 
PWM vor, du kennst den Wert doch. Messen musst du allerdings weiterhin 
den Wert des Stroms während der on-Phase. Das werden keine 60mA sein (so 
hoch wird der Strom nicht, wenn du nicht auf 100% Tastgrad gehst).

Es wäre glaube ich recht hilfreich für dich, wenn du die Messungen erst 
mal mit einem Oszilloskop durchführen würdest um ein besseres Gefühl für 
den tatsächlichen Ablauf zu bekommen.

von Gustav Gruenefelden (Gast)


Lesenswert?

Achim S. schrieb:
> Gustav Gruenefelden schrieb:
>> Dieser Teil leuchtet mir noch nicht ganz ein, weshalb in der Mitte des
>> Pulses der mittlere Strom ist und nicht die 60 mA.
>
> Wegen der Induktivität des Motors. Die stemmt sich gegen schnelle
> Stromänderungen und sorgt beim PWM-Betrieb dafür, dass ungefähr der
> Strom fließt, der 12V*Tastgrad entspricht.

(Spannung berechnen über Shunt*Tastgrad)/Shunt:
Spannung über Shunt*Tastgrad entspricht dem des Gleichstromes.
Und am schluss würde ich dann den Strom ermitteln, wenn ich durch den 
Shunt dividiere.

> Während der On-Phase steigt der Strom ein bisschen an, während der
> Off-Phase sinkt er ein bisschen ab. Der Strom wackelt also
> dreiecksförmig um den mittleren Storm herum. In der Mitte der On-Phase
> und in der Mitte der Off-Phase fließt jeweils grade der Strom, der im
> Mittel über die gesamte Periode fließt.

Ok danke für die Erklärung, versuche es mal nachvollzuziehen.

> Gustav Gruenefelden schrieb:

> Warum willst du den Tastgrad messen? Den gibst du doch selbst mit der
> PWM vor, du kennst den Wert doch.

Nein, den kenne ich nicht. Weil ich die PWM Frequenz per Potentiometer 
ändere.


> Es wäre glaube ich recht hilfreich für dich, wenn du die Messungen erst
> mal mit einem Oszilloskop durchführen würdest um ein besseres Gefühl für
> den tatsächlichen Ablauf zu bekommen.
Ok, werde es mal ausmessen und mit den Rechnungen vergleichen

von Achim S. (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Nein, den kenne ich nicht. Weil ich die PWM Frequenz per Potentiometer
> ändere.

das PWM Signal wird nicht von deinem Arduino erzeugt? Falls doch kennt 
dein Arduino natürlich den Tastgrad.

Gustav Gruenefelden schrieb:
> Spannung über Shunt*Tastgrad

nein: du musst die gemessene Spannung an Shunt durch den Tastgrad 
dividieren, nicht multiplizieren.

von Achim S. (Gast)


Lesenswert?

Achim S. schrieb:
> nein: du musst die gemessene Spannung an Shunt durch den Tastgrad
> dividieren, nicht multiplizieren.

Ups, das war jetzt missverständlich. Deswegen nochmal klarer:

wenn du den Weg gehst, die Spannung am Shunt per Tiefpass zu mitteln und 
dann diese gemittelte Spannung am Tiefpass misst, dann must du deren 
Wert durch den Tastgrad dividieren.

Wenn du den anderen Weg gehst (Spannung direkt am Shunt im richtigen 
Zeitpunk messen), dann brauchst du den Tastgrad nicht weiter zu 
berücksichtigen.

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

im Anhang noch eine (vereinfachte) Simu, die dir die Verhältnisse 
verdeutlichen soll.

Oben siehst du die Spannung am Ausgang des Tiefpasses (also den 
Mittelwert der Spannung am Shunt.

Unten siehst du in rot den Strom durch die Motorwicklung, in grün den 
Strom durch den Shunt.

Während der On-Phase des FETs sind der Strom durch Shunt und Motor 
identisch und steigen langsam an (die Induktivität der Motorwicklung 
verhindert einen sprunghaften Stromanstieg, das war bei deinen ersten 
Messungen mit LEDs anders).

Während der Off-Phase springt der Strom am Shunt auf 0, der Strom des 
Motors fließt über die Freilaufdiode weiter und sinkt langsam ab. Wenn 
du in der Mitte der On-Phase misst (blauer Pfeil), bekommst du in dem 
Moment genau die 30mA, die im Mittel auch durch den Motor fließen.

Alternativ kannst du auch am Ausgang des Tiefpass messen. Dort siehst du 
(einigermaßen konstant) ~15mV. Das durch den Tastgrad (50%) dividiert 
ergibt 30mV - entsprechend 30mA Motorstrom am einem 1Ohm Shunt.

Die 30mA ergeben sich, weil im Mittel die halbe Versorgungsspannung 
(12V*50%) am Motor anliegen. Bei 100% Tastgrad würden 60mA fließen.

Diese Betrachtung gilt nur ungefähr: die Dreieckskurve ist kein echtes 
Dreieck, ein Motor besteht nicht nur aus Induktivität und Widerstand, 
und die genaue Kurvenform kann bei deinem Motor natürlich anders 
aussehen, als in dieser Simu. Wenn der Strom in der Off-Phase ganz auf 
Null absinken sollte (was beim Betrieb ohne Freilaufdiode sicher der 
Fall war), dann gilt sie gar nicht mehr. Aber es gibt dir vielleicht 
einen Anhaltspunkt, was deine Messungen mit dem Oszi zeigen.

von Kramer (Gast)


Lesenswert?

Gustav Gruenefelden schrieb:
> Ich Verwende die Grundfrequenz, glaube um die 800Hz. Der Shunt ist ein 1
> Ohm Widerstand welche den Strom eines Lüfters misst mit der folgenden
> Schaltung.

Für mich klingt das danach, daß das PWM Signal vom Arduino erzeugt wird.

Achim S. schrieb:
> Gustav Gruenefelden schrieb:
>> Nein, den kenne ich nicht. Weil ich die PWM Frequenz per Potentiometer
>> ändere.
>
> das PWM Signal wird nicht von deinem Arduino erzeugt? Falls doch kennt
> dein Arduino natürlich den Tastgrad.

Deshalb solltest du diese Frage beantworten, dann könnte die Lösung 
deines Problems eventuell sehr einfach ausfallen.

Wenn du ein Oszilloskop hast, dann betreibe den Lüfter nur an einem 
Labornetzteil und schau dir den Stromfluss (Spannung über Shunt) bei 
Betrieb an einer konstanten Spannung an. Ich habe das vor einiger Zeit 
auch bei zwei PC-Lüftern gemacht. Einer davon erzeugt zum 
Kommutierungszeitpunkt eine Stromspitze auf einen Maximalwert, und beim 
anderen ist der Strom jeweils kurzzeitig auf Null zurückgegangen.

Diese Spitzen bzw. Einbrüche sind drehzahlabhängig und nicht synchron zu 
deinem PWM Signal, deshalb wirst du am Shunt dann eine Überlagerung 
dieser beiden Frequenzen sehen. Das heißt, auch bei einer PWM 
synchronisierten Messung kannst du noch Schrottwerte erhalten.

Wenn der Arduino das PWM Signal selbst erzeugt, gibt es eine 
Softwarelösung, ansonsten ist die beste Lösung der von Achim 
vorgeschlagene Tiefpass zwischen Shunt und ADC.

von Äxl (Gast)


Lesenswert?

PWM im Arduino:
was steht denn für eine Variable bei Dir bei AnalogWrite als Parameter?
Vielleicht kannst Du uns diese Zeile mal als Codeansicht posten?
Mit dem Strom bei "12V-Häppchen", die der Motor bekommt, will ich jetzt 
nicht näher drauf eingehen, hab ich mitm PC-Lüfter noch nicht probiert. 
Ich weiss nur, dass beim "normalen" Bürstenmotor der Strom erheblich 
ansteigt, weil die Drehzahl fehlt, die er bei 12Volt hätte. Stichwort 
EMK und Generatorspannung. Wie das nun bei einem elektronisch 
kommutierten Lüfter aussieht, weiss ich nicht mehr genau. Wir hatten die 
lezten sieben-acht Jahre öfters hier gestritten, ob der Motorstrom nun 
steigt oder nicht. Ich meine "ja", wenn auch nur im Motor. Ist aber hier 
von ohne Belang, denke ich. Wird man ja sehen...
(Bei einem Step-Down-Regler kann man hinten auf der 3V3 Seite ja auch 
megaviel mehr Strom entnehmen, als man im Mittel auf der 12V-Seite 
aufwendet (abzgl. Wirkungsgrad). Daher mein Einwand mit dem Strom. Aber 
wir messen ja in den Falle an der falschen Stelle, um diesem Phänomen 
auf die Spur zu kommen; wir messen quasi den Enigangsstrom, nicht den 
Motorstrom.
Aber gut; lassen wir das mal aussen vor.
in meinem taschenbuch aus 1987 ist das ganz gut erklärt ;)
ISBN 3-7883-1182-7
"Drehzahlregler für elektrische Modellantriebe" von L.Retzbach
die ersten 30 Seiten reichen.

von Axel R. (axlr)


Lesenswert?

in der Mittagspause mal schnell zusammengelötet:
passiert nix weiter schlimmes: am Start jedes PWM-Zykluss'(?) gibt es am 
1R einen fetten, sehr schmalen 2.5µs Spike (500mV), dann steigt der 
Strom 'bauchförmig' von null an und bleibt dann stehen. Auch beim 
Abschalten passiert (selbst ohne Freilaufdiode) nix. Kein Ansteigen der 
Spannung auf die (auch vom mir) befürchteten 100te Volt. Wird der wohl 
was intern haben, was ein ansteigen der Spannung verhindert.
Wird man also, genau wie bei den CurrentMode-Controllern UC3843(?) mit 
einem kleinen RC-Glied hintern Shunt da ganz gut bedient sein.
Also auch für mich
Ein PC-Lüfter ist kein Spielzeug-Bürsten-Motor.

von Äxl (Gast)



Lesenswert?

Hier noch n paar Bilder

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Axel R. schrieb:
> in der Mittagspause mal schnell zusammengelötet:
Was denn?

> am 1R
> Auch beim Abschalten passiert (selbst ohne Freilaufdiode) nix.
Ist eigentlich lopgisch: der Shunt ist dann ja "aus dem Rennen" und hat 
nichts mit dem Freilaufkreis zu tun.

Äxl schrieb:
> Hier noch n paar Bilder
Nette Screenshotfunktion hat dein Oszi, was man auf dem Bild so sieht...


BTW: Seid ihr Zwei ein und derselbe? Dann bitte fürderhin die 
Nutzungsbedingungen beachten und darin besonders den Passus mit "nur 
1 Nutzername pro Thread".

: Bearbeitet durch Moderator
von Axel R. (axlr)


Lesenswert?

Achja herrje:

ich hab das schnell mitm Handy "abfilmen" wollen. Sorry. Ich schau mal, 
ob hier irgendwo n USB-Stick rumgeistert.
Das "MOV" vom Iphone lässt sich eh nicht abspielen...
Ich gelobe Besserung. Wollte keine Verwirrung stiften

von Axel R. (axlr)


Angehängte Dateien:

Lesenswert?

Jetzt nochmal ordentlich
PWM bei vier Stellungen 20,50,67 und 90%
Ein anders skaliertes Bild bei 67%, wo man die harten Spikes sieht, die 
beim Einschalten des Lüfters entstehen.
Signal kommt vom Funktionsgenerator mit 5V/0V. Mosfet ist IRLL2705. 
Messwiderstand ist ein 1R-1206 SMD. Lüfter ist ein 12V, 340mA 120er aus 
einem Netzteil. Betriebsspannung ist 12V. Hab noch einen 47µF über alles 
gelötet, weil die Leitungen so lang waren.

von Achim S. (Gast)


Lesenswert?

Axel R. schrieb:
> Wollte keine Verwirrung stiften

Dann wäre noch die Klärung von Lothars Frage nett: bist du identisch zum 
TO? Oder sind  Gustav Gruenefelden (Gast) und  Axel R. (axlr) zwei 
unterschiedliche Personen? Daran anschließend würde sich dann natürlich 
die Frage, ob deine Schaltung der von Gustav entspricht oder wo die 
Unterchiede liegen.

Offenbar entspricht sie nicht vollständig der weiter oben gezeigten 
Schaltung von Gustav, da zumindest die Freilaufdiode fehlt. Das macht 
einen entscheidenen Unterschied und ein Betrieb des Lüftermotors ohne 
Freilaufdiode ist in den allermeisten Fällen nicht sinnvoll.

Axel R. schrieb:
> Kein Ansteigen der
> Spannung auf die (auch vom mir) befürchteten 100te Volt.

Dann miss mal am Drain des nFET, nicht am Shunt. Dort muss die Spannung 
ohne Freilaufdiode stark ansteigen (bis zum Durchbruch des FET). Am 
Shunt siehst du davon nichts, der FET hat das Problem der Überspannung.

Axel R. schrieb:
> wo man die harten Spikes sieht, die
> beim Einschalten des Lüfters entstehen.

beim schnellen Einschalten des FETs fließt (kapazitiv) ein Strompuls 
übers Gate nach Source - das siehst du als "Spike".

von Äxl (Gast)


Lesenswert?

Ich bin äxl. Oder Axel R.
Ich bin wohl mitm Telefon garnicht angemeldet, als ordentliches 
Gründungsmitglied. Hihi.
Bin seit 2004 oderso dabei.
Hatte mich, des oft rauchen Tons wegen, dann mal komplett abgemeldet.
Bin aber wieder dabei. Nur mitm Handy hatte ich jetzt keine Lust, mich 
laufend wieder neu einzuloggen. Dass der Name leicht anders ist, fiel 
mir garnicht auf.
Ich hab die Schaltung von oben einfach zusammengelötet. Ohne 
Freilaufdiode. Dachte mir "Schaum wa mal".
Ich hab am Drain gemessen. Für mich sieht das auch aus, wie'n Step-up. 
Aber null Überspannung am Drain.
Für ne Gate-Aufladung ist mir der Spike zu breit. Kann aber gut sein.
Der TO soll also seinen Leiterzug zum ADC aufkratzen und dort n Kiloohm 
einlösen. Parallel zum ADC-Pin nach GND dann noch nen keramischen 1uF 
und gut. Freilaufdiode trotzdem einbauen. Nicht dass der Lüfter selbst 
schaden leidet. Kann gut sein, dass der, den ich hier hatte, sowas Wien 
überspannungs oder verpolschutz verbaut hatte. Aber so ne 1A Dioee hat 
man ja. 47 - 100uF parallel zu allem kann ich empfehlen.

Beitrag #6549368 wurde von einem Moderator gelöscht.
von Äxl (Gast)


Lesenswert?

Nachtrag
(Hab allerdings den Eindruck, dass es eh niemanden mehr interessiert. 
Ham wa hier oft. Aber nicht schlimm...)
Man erkennt die eingangs oben genannten kommutierungen sehr gut im 
Stromverlauf und könnte daraus nebenbei die Drehzahl bestimmen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.