Hallo Leute, ich programmiere in BASCOM(Basic) und steh gerad auf dem Schlauch. Ich habe mir mit einem Atmega8 eine Spannungsregelung aufgebaut. Da Pulse(PWM) ich einen Fet in ein LC-Siebglied,so dass ich eine stromgeregelte Gleichspannung hinten raus bekomme. Den Strom messe ich über einen Shunt mit zwei ADC Eingängen über Spannungsteiler gegen Masse. Problem: Durch die Induktivität bekomme ich leichte Spitzen bzw Rippl auf die Gleichspannung. Für den Zweck kein Problem, aber bei der Strommessung(Reglung) scheint es große schwankungen zu machen. Jetzt hab ich mir einen Attiny26 zugelegt, weil ich von den Vorteilen der differenziellen ADC Eingänge gehört habe.Da soll ja auch ein Gain möglich sein. Frage: Kann mir mal bitte jemand erklären was genau die Vorteile der differenziellen Eingänge ist. Wogegen misst man dann,wenn nicht gegen Masse? Wozu ist der Gain und was bringt er mir? Hilft mir das bei meinem Problem? Wie wird es am besten angewendet? MfG Steven
Naja. Wenn man sowieso zwei signale voneinander subtrahieren muss.
Plod schrieb: > Naja. Wenn man sowieso zwei signale voneinander subtrahieren muss. OK. soweit war ich auch schon... ;-) und weiter?
Ist die eine Spannung 3V und die andere 4V, dann kannst du die getrennt mit dem ADC messen und die Ergebnisse voneinander subtrahieren. Soweit so gut. Aber du kannst sie auch differentiell messen. D.h. der ADC misst dann im Grunde 1V und löst dir die als Zahlenwert auf. Aber: du kannst dir diese 1V jetzt mit dem eingebauten Verstärker verstärken lassen, so dass du speziell diesen 1V Bereich besser aufgelöst (in mehr Zwischenstufen) kriegst.
damit kann man störsignale ausblenden, z.b. wenn man in der leistungselektronik die parasitären leitungselemente nicht mitmessen will geht man per kelvin-anschluss direkt an das zu messende negative potential anstelle der leistungsmasse
Das Messen gegen Masse und differentiel ist ganicht so wahnsinnig unterschiedlich. Du kannst das Messen gegen Masse wie eine differentielle Messung betrachten, bei der du den einen Pol fest auf Masse legst. Also beim Messen gegen Masse ermittelst du die Differenz zwischen deinem zu messenden Potential und Masse, beim differentiellen einfach die Differenz zwischen den beiden Meßpunkten, egal auf welchem Niveau sie liegen. Der Gain ist auch leicht erklärt, stell dir vor, zwischen deinen differentiellen Eingängen besteht eine Differenz von 1mV. Dann bekommst du am Ausgang auch 1mV geliefert.(ohne Gain). Mit nem Gain von bspw 200 würdest du einfach 200mV erhalten. Das ist also nichts anderes ein Verstärkungsfaktor, quasi deine externe Beschaltung bei opamps. MfG Chaos
OK das hilft schon ein wenig. Ich habe bei meinem Atmega8 einfach zwei ADC´s gemessen(spannungsteiler gegen Masse) und dann im Programm einfach subtrahiert. Wenn ich das jetzt richtig verstanden habe machen das die differenziellen Eingänge auch so, nur Hardwaremäßig. Stimmt das? Ich habe aus dem Datenblatt Attiny26 entnommen, dass da der Befehl GETADC (x,y) heißt und das man das ich HEX angeben muss. Wie funtioniert das genau? MfG Steven
fefa schrieb: > damit kann man störsignale ausblenden, z.b. wenn man in der > leistungselektronik die parasitären leitungselemente nicht mitmessen > will geht man per kelvin-anschluss direkt an das zu messende negative > potential anstelle der leistungsmasse Danke, aber was ist ein Kelvin-Anschluss????
Steven Mö schrieb: > Da Pulse(PWM) ich einen Fet in ein LC-Siebglied,so dass ich eine > stromgeregelte Gleichspannung hinten raus bekomme. Das mag dein Ziel sein. Erreicht ist es aber wohl noch nicht... > Den Strom messe ich über einen Shunt mit zwei ADC Eingängen über > Spannungsteiler gegen Masse. Das ist vermutlich ziemlicher Blödsinn. Um das aber endgültig zu entscheiden, müßtest du die Schaltung liefern. > Kann mir mal bitte jemand erklären was genau die Vorteile der > differenziellen Eingänge ist 1) Man muß nicht unbedingt gegen Masse messen. 2) Man kann den eingebauten Verstärker benutzen. > Wogegen misst man dann,wenn nicht gegen > Masse? Man mißt eben nicht gegen irgendein fixes Potential, sondern die Differenz zwischen zwei Potentialen, die sich beide zwischen Masse und der Referenzspannung beliebig bewegen dürfen. Das kann in vielen Fällen durchaus hilfreich sein, bei einer einfachen Strommessung aber eher nicht. Denn die Randbedingungen der Messung sind ja doch wieder massebezogen, in aller Regel ist es also am sinnvollsten, auch den Shunt gegen Masse arbeiten zu lassen. Deswegen eben vermutete ich oben bezüglich deiner schaltungstechnischen Lösung ziemlichen Blödsinn. > Wozu ist der Gain und was bringt er mir? Das ist einfach nur der Verstärkungsfaktor des eingebauten Verstärkers. Das wiederum ist wirklich nützlich für eine Strommessung, denn er erlaubt es, den Shunt entsprechend zu verkleinern. In deiner Schaltung verschenkst du aber viel von diesem möglichen Verbesserungspotential, denn du kriegst das nur um den Teilerfaktor deiner (vermutlich sinnlosen) Spannungsteiler reduziert als effektiv wirksame Verbesserung wieder raus.
Du kannst zwischen zwei Pins differenziell messen. Das geht aber nicht mit beliebigen Analogeingängen, sondern es gibt nur bestimmte Kombinationen. Das findest Du im Datenblatt. Du mißt dann nicht gegen Masse, sondern die Differenz der beiden Ausgewählten Eingänge. Man könnte auch Eingang 1 messen, dann Eingang 2 und dann die Differenz errechnen. Mit Gain wird es erst richtig interessant. Wenn die Differenzen klein sind kann man damit das Signal vergrößern um somit die Auflösung lokal zu erhöhen. Allgemeines Beispiel: 8 Bit Wandler (0-255), jedes Bit hat 10 mV Referenz: 2,55 Volt Eingang 1: 1,014 Volt (analoger Ist Wert) Eingang 2: 1,028 Volt (analoger Ist Wert) analoge Differenz 14 mV Ich messe 101 und 103 und errechne eine Differenz von 2. Messe ich differenziell, so bildet mir die analoge Eingangsstufe zuerst die analoge Differenz und digitalisiert diese und ergibt dann die Diferenz von 1. Habe ich die Möglichkeit das Signal vorher zu verstärken (z. B.: Gain 10), so digitalisiere ich den Wert 140 mV und habe damit den Wert 14. Ab welchen Werten exakt auf- oder abgerundet wird (Quantisierungsfehler) findet an dann auch im Datenblatt. Was bei dir aber herumeiert könnte auch etwas Anderes sein. Ich vermute Du hast die Messungen nicht mit dem Timer der PWM synchronisiert, so daß Du zu unterschiedlichen Zeitpunkten im Zyklus mißt. Du kannst die Timerinterrupts dazu nutzen die Messungen beispielsweise mit der steigenden oder fallenden Flanke des PWM-Signals oder immer zu Beginn/Ende oder in der Mitte eines PWM-Zyklus zu starten. Was davon am Sinnvollsten ist kann man erst nach detaillierter Betrachtung der Hardware beurteilen. Ich weiß ja nicht mit welcher Flanke eingeschaltet wird.
:
Bearbeitet durch User
Oh weh, da wurde viel geschrieben während ich tippte. Nun ist alles doppelt.
Steven Mö schrieb: > Danke, aber was ist ein Kelvin-Anschluss???? http://de.wikipedia.org/wiki/Kelvinanschluss
Carsten R. schrieb: > Du kannst zwischen zwei Pins differenziell messen. Das geht aber nicht > mit beliebigen Analogeingängen, sondern es gibt nur bestimmte > Kombinationen. Das findest Du im Datenblatt. Du mißt dann nicht gegen > Masse, sondern die Differenz der beiden Ausgewählten Eingänge. Man > könnte auch Eingang 1 messen, dann Eingang 2 und dann die Differenz > errechnen. Ok wenn ich jetzt direkt am shunt die erste spannung an den Eingang 1 lege und nach dem shunt die spannung an den eingang 2, dann habe ich zwar ein relativ kleinen potentialunterschied, daber beide potentiale sind ja noch über 5v der masse. würde das den eingängen nicht schaden? > Mit Gain wird es erst richtig interessant. Wenn die Differenzen klein > sind kann man damit das Signal vergrößern um somit die Auflösung lokal > zu erhöhen. > > Allgemeines Beispiel: 8 Bit Wandler (0-255), jedes Bit hat 10 mV > Referenz: 2,55 Volt > Eingang 1: 1,014 Volt (analoger Ist Wert) > Eingang 2: 1,028 Volt (analoger Ist Wert) > analoge Differenz 14 mV > > Ich messe 101 und 103 und errechne eine Differenz von 2. Messe ich > differenziell, so bildet mir die analoge Eingangsstufe zuerst die > analoge Differenz und digitalisiert diese und ergibt dann die Diferenz > von 1. Habe ich die Möglichkeit das Signal vorher zu verstärken (z. B.: > Gain 10), so digitalisiere ich den Wert 140 mV und habe damit den Wert > 14. Ab welchen Werten exakt auf- oder abgerundet wird > (Quantisierungsfehler) findet an dann auch im Datenblatt. OK das ist wirklich bei kleinen sachen hilfreich, danke > Was bei dir aber herumeiert könnte auch etwas Anderes sein. Ich vermute > Du hast die Messungen nicht mit dem Timer der PWM synchronisiert, so daß > Du zu unterschiedlichen Zeitpunkten im Zyklus mißt. Ich habe jetzt das problem, das ich mit einem timer die Zeit hochzähle über einen timer interupt und diese zeit für die Regelung brauche. es wäre natürlich sinnvoll genau zwischen der pwm zu messen, denn beim ein und ausschalten des FET gibt es durch die Induktivität Rippl. > Du kannst die > Timerinterrupts dazu nutzen die Messungen beispielsweise mit der > steigenden oder fallenden Flanke des PWM-Signals oder immer zu > Beginn/Ende oder in der Mitte eines PWM-Zyklus zu starten. Was davon am > Sinnvollsten ist kann man erst nach detaillierter Betrachtung der > Hardware beurteilen. Ich weiß ja nicht mit welcher Flanke eingeschaltet > wird. als PWM Timer nehme ich den timer2 wie macht man das in bascom?
wie heißt der befehl in Bascom, wenn ich ADC0 und ADC1 mit Gain1 und wie mit Gain20 differenziel vergleichen will? Beispiel: GETADC (0) ??????
Steven Mö schrieb: > dann habe ich > zwar ein relativ kleinen potentialunterschied, daber beide potentiale > sind ja noch über 5v der masse. würde das den eingängen nicht schaden? Ganz genau. Es gelten immer noch die grundsätzlichen Anforderungen an die Lebensbedingungen der Pins. Einstellungen in der Software (differenziell messen) können daran nichts ändern. Die Spannungspegel müssen zwischen 0 und Vcc der Versorgugsspannung liegen. Darum sind bei Highside-Shunts oft weitere Bauteile erforderlich um das Signal aufzubereiten. Zu Bascom kann ich nichts sagen. Das habe ich nie genutzt.
:
Bearbeitet durch User
Suche mal nach "High Side Current Monitor", da gibts sehr brauchbare ICs die das können.
Steven Mö schrieb: > Ich habe jetzt das problem,... Das ist doch kein Probem. Du brauchts doch nur die Zeile mit der du die ADC-Wandlung startest zu verschieben und an den passenden Interrupt des Timers zu binden der den Strom per PWM regelt. Natürlich bleibt der Ripple, aber so mißt du immer in der selben Position des Rippleanteils. Dadurch entfallen die Störungen durch die Messzeitpunktverschiebungen und du kannst genauere Aussagen aus den Messwerten ableiten.
cyblord ---- schrieb: > Suche mal nach "High Side Current Monitor", da gibts sehr > brauchbare ICs > die das können. INA138. Sehr brauchbar.
Timm Thaler schrieb: > > INA138. Sehr brauchbar. Danke den werd ich mal ausprobieren. Mit der Messung im Interrupt hab ich so meine Bedenken. Meine pwm läuft knapp 20 kHz. 12Mhz Quarz, timer2 mit 8bit.und Auflösung etc. Da hängt er ja nur noch im Interrupt. Aber vielleicht habe ich auch die GETADC Routine unterschätzt. Ich hab probiert : Unter der Config : On timer2 messpwm Und unten dann : messpwm: Load timer2, pwm 'pwm ist der pwm wert, z. B. Zwischen 0 und 255 GETADC (1) GETADC (0) Return Wenn das so laufen sollte, dann müsste das bei 25 kHz ganz schön lange dauern, oder?
Deine messpwm löst beim Ereignis timer2 aus, laso ich vermute mal wenn der Timer überläuft. Da wäre jetzt die Frage, ob dies der Zeitpunkt ist an dem du messen möchtest. Deine GETADC-Werte, was machst du damit?
Steven Mö schrieb: > Da hängt er ja nur noch im Interrupt. Nein. Im PWM-Interrupt ADC nur starten und Interrupt verlassen. Die ADC-Auswertung erfolgt über den ADC conversion complete interrupt. Das wären dann 2*20.000 Interrupts die man natürlich kurz hält. Der Start ist sehr kurz. Das bloße Auslesen des Ergebnisses dauert auch nicht länger. Die Auswertung wäre ohnehin erfolgt. Sollte hierfür die Rechenzeit nicht reichen, so wäre im aktuellen Code auch nicht die Zeit in jedem Zyklus zu messen. Das kann man natürlich ohne Code nicht beurteilen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.