Forum: Mikrocontroller und Digitale Elektronik Messfehler am ADC vom ATmega


von Peter (Gast)


Lesenswert?

Hallo,
ich habe ein Problem bei der Spannungsmessung an meinem ATmega.
Folgendes Problem, über eine ACS712 wird ein Strom an einer Glühlampe 
gemessen. Der gewandelte Spannungswert wird an den ADC meines ATmega 
übergeben. Komischerweise zeigt mir aber der Atmega bei 
unterschiedlichen Strömen an der Glühlampe oftmals die gleiche Spannung 
an. Z.b. wenn an der Lampe 3A anliegen bekomme ich den Wert 500, genau 
so aber ab und an wenn 3,5 A anliegen kommt der Wert 500. An der 
Glühlampe und an der Hardware und Software wird aber nichts geändert. 
Die Spannungsversorgung habe ich mit einem USB Netzteil gestaltet. Wenn 
ich mir nun das Messsignal vom Sensor ansehe sind da ziemliche Wellen 
drauf. Wenn ich den Atmega aber über die USB Buchse vom PC versorge sind 
diese weg. Kann es sein, dass der Atmega die "Oberweillen" mit misst? 
Wenn ja wie kann ich bei Verwendung des USB Netzteils diese wegbekommen?

von ah. (Gast)


Lesenswert?

Schema ? Oszilloskop Bilder ?

von Peter (Gast)


Lesenswert?

Sorry habe beides gerade nicht zu Hand, aber ist es dein therotisch 
möglich, dass das Netzteil die Fehlerverursacht?

von Ja, (Gast)


Lesenswert?

theoretisch.

von Peter (Gast)


Lesenswert?

Bis wie viel Herz registriert der ADC denn Spannungen?

von Karl H. (kbuchegg)


Lesenswert?

Peter schrieb:
> Bis wie viel Herz registriert der ADC denn Spannungen?

Das musst du doch wissen. Du hast das Programm geschrieben.
In welchen Zeitabständen misst du und mit welcher Frequenz lässt du den 
ADC laufen.

von Cyblord -. (cyblord)


Lesenswert?

Bekomme die ACS7.. auch nicht wirklich zum laufen. Die Ausgabespannung 
rauscht viel zu stark. Die Null-Strom-Spannung passt auch nie. Sogar bei 
Typen welche extra einen Referenzspannungsausgang haben. Dort misst man 
auch nie diesselbe Spannung. Das liegt nicht am Mega oder an dessen ADC. 
Das liegt am ACS bzw. an dessen Benutzung. Evt. gibts da nen Trick?

gruß cyblord

von Harald W. (wilhelms)


Lesenswert?

Peter schrieb:

> ich habe ein Problem bei der Spannungsmessung an meinem ATmega.
> Komischerweise zeigt mir aber der Atmega bei  unterschiedlichen
> Strömen an der Glühlampe oftmals die gleiche Spannung an.

Dann stimmt wohl Dein "analoges Frontend" nicht. Schaltplan?
Gruss
Harald

von Peter (Gast)


Lesenswert?

Schaltplan ist ganz einfach, am Eingang des ACS ist in Reihe die Lampe, 
Sekundär sind 5V und GND angeschlossen, am Filter ein 2,2 uF wie von 
Allegro vorgeschlagen, am Ausgang ein 2 KiloOhm Widerstand, dann eine 
Diode und Parallel ein Kondensator und dazu ein Widerstand 1Mega damit 
sich der Kondensator wieder entlädt, das ganze geht dann in den ADC

von Hubert G. (hubertg)


Lesenswert?

In meinem Datenblatt ist am Filter ein 10n Kondensator.
Lass man die Diode weg, die stört für deine Messung.

von Peter (Gast)


Lesenswert?

Die Diode benutze ich zur Gleichrichtung!? Ist im Datasheet bei den 
Anwendungsfällen so drin...

von Hubert G. (hubertg)


Lesenswert?

Wen willst du Gleichrichten? Die Spannung die am Kondensator ansteht 
wird langsam über den 1M Widerstand entladen. Die gemessene Spannung 
kann schon irgendwo tiefer sein.

von Peter (Gast)


Lesenswert?

Nein die Diode ist ja vor dem ADC, der Kondensator parallel dazu.

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Da der Schaltplan

von Hubert G. (hubertg)


Lesenswert?

Schon klar, du misst Wechselstrom. ICh habe mich mit den Dingern nur mit 
Gleichstrom beschäftigt.
Sind etwas pingelig die Dinger. Stromversorgung muss ganz sauber sein, 
den Filterkondensator sucht man am besten nach geringstem Rauschen aus. 
Wirklich wiederholbare Messergebnisse gab es erst ab min. 20 Messungen 
und Mittelwertbildung.

von Peter (Gast)


Lesenswert?

Also sollte ich lieber 10-20 mal hinter einander messen und den 
Mittelwert bilden? Habe jetzt alles 10ms gemessen und daraus ein 
Mittelwert gemacht, also sind ca. 150ms vergangen bei 15 Messungen und 
dem Mittelwert. Wenn ich dann evtl ein Phasenanschnitt mache, ist das 
quatsch oder? Also wirklich in den 10ms 10 mal messen oder?

von Hubert G. (hubertg)


Lesenswert?

Ich habe in Freerunning Modus dann letztendlich 64mal gemessen und den 
Mittelwert gebildet. Dann war das Ergebnis durchaus brauchbar. Den 
Zyklus habe ich alle 200msec gestartet, für eine Ausgabe auf ein LCD 
schnell genug.

von Peter (Gast)


Lesenswert?

Naja ich könnte in den 10ms vllt 10 mal messen und die vergangene Zeit 
messen, die ich dann wieder vom Phasenanschnitt abziehe, dann sollte ich 
auch ordentliche Werte erreichen oder? Ich muss ja definitiv aller 10ms 
die Triac an der Lampe neu zünden

von Gregor B. (Gast)


Lesenswert?

Peter schrieb:
> Die Diode benutze ich zur Gleichrichtung!? Ist im Datasheet bei den
> Anwendungsfällen so drin...

Diese Applikationsschaltung habe ich nicht verstanden.

Schauen wir uns das einmal für einen 5A-Typ an.
Du hast einen Stromsensor für Gleich- und Wechselströme mit einer 
unipolaren Versorgungsspannung auf der Ausgangsseite.

Bei Strom 0A gibt der Sensor eine Spannung von Vcc/2 aus, bei 
5V-Versorgung also 2,5V.

Bei +5A peak erhälst Du eine Ausgangsspannung (gemäß Grafik "Output 
Voltage versus Sensed Current" auf S.6 des Datenblatts) von 3,5V.

Bei -5A peak erhälst Du eine Spannung von 1,5V am Ausgang des Sensors.

Die Diode sorgt jetzt nur dafür, dass sich der Kondensator auf die max. 
Ausgangsspannung des Sensors auflädt.
Du bekommst also als Ergebnis den Peak-Wert deines Stroms.
Gleichrichten tut die Diode nicht, da bereits Gleichspannung aus dem 
Sensor herauskommt.

Wenn Du jetzt eine Phasenanschnittsteuerung damit realisierst, so ist 
der Peak-Wert Deines Stromes - wenn Du nicht mehr als 50% einer 
Halbwelle wegschneidest - immer gleich groß.
Damit erhältst Du immer den gleichen Wert.

von Peter (Gast)


Lesenswert?

Also habe heute nochmals die Mittelwert-Messung verbessert und so 
weiter. Das komische ist, dass ich einmal bei 4 A am ADC 600 Bit 
ausgegeben bekomme und von jetzt auf gleich bei 4,5A 600 Bit. Kann es 
sein, dass die Spannungsquelle Einbricht oder woher können solche 
Schwankungen kommen?

von Dietrich L. (dietrichl)


Lesenswert?

Peter schrieb:
> Das komische ist, dass ich einmal bei 4 A am ADC 600 Bit
> ausgegeben bekomme und von jetzt auf gleich bei 4,5A 600 Bit.

Hast Du Deinen µC + SW auch mal ohne ACS712 getestet, indem Du statt 
VIOUT eine Gleichspannung anlegst (z.B. mit Poti an +5V)?
Dann weisst Du wenigstens, ob Du Dich auf diesen Teil verlassen kannst 
oder nicht.

Gruß Dietrich

von Peter (Gast)


Lesenswert?

Nein habe ich noch nicht, was mich verwundert ist, dass ich 10 mal 
hintereinander die gleichen Werte bekomme, und dann von jetzt auf gleich 
steigen die Stromwerte an und bleiben dann viel höher Konstant. Der ADC 
bringt aber immer die gleichen Werte, also Kurzfassung, Strom steigt an, 
ADC Bit bleibt gleich...

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Mach doch einfach mal 16 Messungen in 20ms (also 1259µs Intervall) oder 
32 Messungen in 20ms (also 625µs Intervall) und bilde den Mittelwert.

von Peter (Gast)


Lesenswert?

Was bringt mir das? ich mache in 1400us 10 Messungen und bilde den 
Mittelwert.

von Ingo (Gast)


Lesenswert?

Dann miss doch mal die Eingangsspannung am ADC mit nem Multimeter nach. 
Ansonsten is doch stochern im Dunklen!

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Was bringt mir das? ich mache in 1400us 10 Messungen und bilde den
> Mittelwert.

Wenn ich es richtig verstanden habe, befeuerst du deine Lampe mit 
WECHSELSPANNUNG. Stimmts? (Bitte beantworten)

Eine volle Periode der 50Hz Wechselspannung dauert 20ms. Du misst aber 
nur in einem Zeitraum von 1,4ms. Fällt dir was auf?

von Peter (Gast)


Lesenswert?

Habe ich bereits, diese ist jedes mal gleich.

von Peter (Gast)


Lesenswert?

Ja das ganze ist an Wechselspannung, ich messe nur 1,4 ms da ich ja auch 
noch den Phasenanschnitt mache, und ich da paar delays benötige

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Und wenn du mal den Phasenanschnitt weg lässt? Wie sehen deine Messwerte 
dann aus?

von Peter (Gast)


Lesenswert?

Nein noch nicht, weiß auch nicht ob das die Ursache sein kann, dass ich 
nur 1,4 ms messe, Es funktioniert ja mehmals hintereinander und dann auf 
einmal kommt quatsch raus. Oder sehe ich da was falsch?

von Ingo (Gast)


Lesenswert?

Peter schrieb:
> Habe ich bereits, diese ist jedes mal gleich.

Ich glaube du solltest erstmal überlegen was du da eigentlch machst:
Du misst 50Hz Wechselspannung, tastest aber alle 1,4ms ab! Aha...

Dann misst du mit nem Multimeter die eingangswechselspannung, die immer 
gleich ist, und wunderst dich darüber das der ADC immer das selbe misst?

Oder verstehe ich das falsch?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Nein noch nicht,

Dann mach mal.

> weiß auch nicht ob das die Ursache sein kann, dass ich nur
> 1,4 ms messe,

Das kann nicht nur die Ursache sein, sondern es IST die Ursache.

> Es funktioniert ja mehmals hintereinander und dann auf
> einmal kommt quatsch raus.

Dass kommt daher, dass dein Abtastfenster (die 1,4ms, in denen du deine 
Messungen ausführst) nicht synchron zur Wechselspannung startet.

Was willst du denn eigentlich mit deiner Strommessung bezwecken?

von Peter (Gast)


Lesenswert?

Ich Messe einen 50Hz Wechselstrom mit einem ACS712. Das Signal wird über 
eine Schaltung wie oben zu sehen. Durch einen Kondensator wird die 
Sinuswelle geglättet. Dann werden aller 10ms für 1,4ms die 
Spannungswerte vom ACS712 abgetastet und ausgewertet. Nun das Problem, 
ich weiß zwar dass der Strom am ACS712 sich verändert hat, bekomme aber 
trotzdem am ADC den gleichen Wert.

von Dietrich L. (dietrichl)


Lesenswert?

Peter schrieb:
> Durch einen Kondensator wird die
> Sinuswelle geglättet.

Dann sag mal die Werte. Wie groß ist C1? Der in der Schaltung nicht 
eingezeichnete Parallelwiderstand soll ja 1MOhm sein.
Dann kann man die Zeitkonstante rechnen und abschätzen, wieviel sich die 
Spannung in 20ms ändert.

Gruß Dietrich

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Sinuswelle geglättet. Dann werden aller 10ms für 1,4ms die
> Spannungswerte vom ACS712 abgetastet und ausgewertet. Nun das Problem,
> ich weiß zwar dass der Strom am ACS712 sich verändert hat, bekomme aber
> trotzdem am ADC den gleichen Wert.

Soll das heissen dass alle Messwerte aus deiner 1,4ms Messung gleich 
sind?

von Peter (Gast)


Lesenswert?

der Kondensator hat 2,2uF

von Peter (Gast)


Lesenswert?

Die Messwerte innerhalb der 1,4ms sind gleich ja, da der Strom sich 
langsam ändert.

von Ingo (Gast)


Lesenswert?

Dann geh doch jetzt bitte mal Systematisch vor. Gib deinem ADC mal eine 
Variable Eingangsspannung und guck ob sich die ADC-Werte ändern. Schritt 
für Schritt

von Peter (Gast)


Lesenswert?

Ja die Werte ändern sich.

von Dietrich L. (dietrichl)


Lesenswert?

Ich glaube jetzt wird es Zeit, mit einem Oszi zu messen, was da genau 
passiert.

von Peter (Gast)


Lesenswert?

Ok versuche es mit nem Oszi. Die Werte am ADC ändern sich, nur manchmal 
sind 4A und 4,5A gleich am ADC!

von Ingo (Gast)


Lesenswert?

Gut! Dann nimm bitte mal die Diode raus und guck mal ob das was ändert.

von Ingo (Gast)


Lesenswert?

Oszillografier mal direkt am Ausgang des ACS...

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Welche Messgeräte stehen dir denn zur Verfügung?

- Oszilloskop            [ja]  [nein]
- Digitalmultimeter      [ja]  [nein]
- Analogmultimeter       [ja]  [nein]
- Phasenprüfer           [ja]  [nein]
- (nasser) Finger        [ja]  [nein]
- Fieberthermometer      [ja]  [nein]
- Meterstab              [ja]  [nein]
- Geodreieck             [ja]  [nein]
- Küchenmesser           [ja]  [nein]
- ...

=)

von Hubert G. (hubertg)


Lesenswert?

Der Kondensator am Filter ist mit 2,2µ viel zu groß. In den diversen 
Applikationen ist er zwischen 1n und 10n.

von Peter (Gast)


Lesenswert?

Ok das Oszi hab ich erst morgen. Was mich ja immer noch wundert ist, 
dass ich mehrere male hintereinander die scheinbar richtigen Werte 
bekommen und auf einmal ohne eine Änderung kommen da andere Werte an. Wo 
kann die Hardware da spinnen?

von Peter (Gast)


Lesenswert?

Habe ein Oszi, und Digitalmultimeter, Phasenprüfer.

Am Filter der C ist 0,1n, hinter der Diode habe ich noch ein Kondensator 
zur Masse mit 2,2 uF und Parallel ein 1 mOhm Widerstand.

von Ingo (Gast)


Lesenswert?

Ich glaube du hast deine Schaltung noch nicht verstanden. Mit dieser 
Diode und dem C und R dazu parallel baust du eine Art 
Hüllkurvendemodulator. Willst du nicht. Nimm die Diode und alles 
dahinter mal raus. Und mach aus dem 100pF mal n 10nF!

von Peter (Gast)


Lesenswert?

ok Mach ich, was ist ein Hüllkurvendemodulator?

von Ingo (Gast)


Lesenswert?

Peter schrieb:
> ok Mach ich, was ist ein Hüllkurvendemodulator?
Google?!?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Irgendwie hab ich den Sinn deines ganzen Vorhabens noch nicht ganz 
verstanden.

Willst du deinen Phasenanschnitt so regeln, dass durch die Lampe ein 
bestimmter Strom (Effektivwert) fliesst?

von Peter (Gast)


Lesenswert?

Ja habe es gegoogelt, versteh nur nicht warum die werte am AdC mal tief 
sind und dann wieder hoch


Der Sinn ist, durch den Phasenanschnitt die Helligkeit der Glühlampe zu 
Regeln und durch die Strommessung den Strom darzustellen

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Wechselstrom misst man aber anders...

von Peter (Gast)


Lesenswert?

und wie? dieser ACS712 ist doch dafür da.

von Hubert G. (hubertg)


Lesenswert?

Wie ich schon mal geschrieben habe, habe ich bisher mit den ACSxxx nur 
Gleichstrom gemessen.
Bei Wechselstrom ist das doch anders. Ist der Strom 0A hast du am 
Ausgang 2,5V oder am ADC etwa 512. Je nach Stromrichtung addiert oder 
subtrahiert sich der Wert mV/A von oder zu den 2,5V
Bei 5A hast du am Ausgang zwischen 3,425V und 1,575V oder 701 und 322.

Bei Batterien z.B. kann man damit recht gut den Lade und Entladestrom 
messen. Wie man allerdings Wechselstrom damit messen kann ist mir nicht 
klar, hab mich damit allerdings noch nicht ernsthaft auseinandergesetzt.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Jo. Aber deine Beschaltung am Ausgang ist dafür nicht geeignet.

von Peter (Gast)


Lesenswert?

und wie sollte die beschaltung dann sein? Ich dachte mir ich lass den 
Kondensator laden zur Glättung und lassen den Kondensator durch den 
widerstand parallel dazu entladen aber da war wohl falsch

von Ingo (Gast)


Lesenswert?

Pack mal an deinen Ausgang nur einen Widerstand mit 1k5 und ein 10nF 
nach Masse (Tiefpass).

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Dann musser aber immer noch messen und rechnen.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ausserdem brauchts die RC Kombination am Ausgang auch nicht. Die 
Tiefpassfilterung macht der Allegro mit dem externen Cf bereits selbst.

von Peter (Gast)


Lesenswert?

Also einfach den nackten Ausgang vom ACS an den ADC und die Kurve 
abtasten?

Was macht nun dieser Hüllkurvendemodulator an meiner Schaltung?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Also einfach den nackten Ausgang vom ACS an den ADC und die Kurve
> abtasten?

Im Prinzip ja. Ein wenig Gehirnschmalz gehört aber noch dazu.

> Was macht nun dieser Hüllkurvendemodulator an meiner Schaltung?

Er macht etwas, das du nicht willst / nicht gebrauchen kannst.

von Peter (Gast)


Lesenswert?

Wie im Prinzip? Wäre dir sehr dankbar wenn Du mir einfach sagen 
könntest, wie man das am dümmsten machst mit dem Anschluss an den ADC.

Ok das das ding was macht, was ich nicht will ist mir klar, nur was? Ich 
will es ja verstehen.

von Dietrich L. (dietrichl)


Lesenswert?

Ich versuche mal ein wenig zu erklären.

Hier einige Aussagen:

1. Beim Phasenanschnitt ist die Spitzenspannung bis zum Winkel von 90° 
immer gleich (http://de.wikipedia.org/wiki/Phasenanschnittsteuerung).

2. Der Widerstand einer Glühbirne ist nicht konstant. Ist der Glühfaden 
kalt, ist der Strom etwa 10x so groß. 
(http://de.wikipedia.org/wiki/Gl%C3%BChlampe#Elektrische_Eigenschaften)

3. Bei z.B. 90° Phasenanschnitt ist der Glühfaden kälter als bei 0°, der 
Spitzenstrom ist daher größer.

4. Entscheident für die Helligkeit ist der Effektivwert des Stromes 
(bzw. der Leistung). Der Zusammenhang zwischen elektrischem Strom (bzw. 
Leistung) und Lichtstrom ist (vermutlich) nicht linear.

5. Peters Schaltung macht eine Spitzenwertgleichrichtung. Die Folge ist, 
dass bei z.B. 90° Phasenanschnitt der gemessene Wert größer wird 
(siehe 3.), obwohl die Glühbirne weniger hell leuchtet.

6. Wie Peter den angegebenen Strom gemessen hat, ist noch unbekannt. Je 
nach Messgerät wird das ein Mittelwert nach Gleichrichtung oder ein 
"richtiger" Effektivwert (RMS) sein. Das ist zu berücksichtigen, wenn 
man den Wert mit dem Ergebnis des µC vergleicht.

7. Eine "vernünftige" Strommessung mit dem µC könnte z.B. sein:

7.1. ungefiltert häufig abtasten und Effektivwert per SW rechnen
7.2. Strom per HW aufbereiten:
7.2.1. Gleichrichten und Mittelwert bilden (nicht 
Spitzenwertgleichrichtung!)
7.2.2. Effektivwert bilden

Dies möge erstmal genügen, um die Zusammenhänge klar zu machen. Auf die 
mögliche Umsetzung gehe ich jetzt hier nicht ein. Das kann ja dann noch 
folgen...

Gruß Dietrich

von Peter (Gast)


Lesenswert?

Hallo,

danke für die lange und sehr interessante Ausführung.

Ich habe nun den nackten Ausgang des ACS 712 an mein ADC gehangen. Nun 
die Frage, wie kann ich am besten dieses Signal abtasten? Zwischen zwei 
Nulldurchgängen sollte die Spannung sehr oft abgetastet werden und dann 
ein Mittelwert gebildet werden. Nur wie geht man da vor?
Nulldurchgang erkennen und einfach messen bis der nächste ankommt? Dann 
das Ergebnis einfach durch die Anzahl der Messungen teilen?
Wie bekomme ich dann mit der gleichen MCU den Phasenanschnitt hin? wenn 
ich in den 10ms nur messe, kann ich ja sonst nix mehr machen oder?

von amateur (Gast)


Lesenswert?

Für meine Meinung zu den eingebauten A/D-Wandlern müsste man mich 
eigentlich verhaften aber... wenn ich diese denn doch nutzen muss, 
spendiere ich ihnen als erstes ein niederohmiges Eingangssignal.
Wenn ich deine Schaltung richtig verstanden habe, misst Du hinter einem 
2/10K Spannungsteiler. Das ist nach meiner Meinung grenzwertig. 
Spätestens wenn es aber um Spannungen unter 0,?V geht wird dir die Diode 
sämtliche Messwerte um die Löffel hauen.
Ich denke also dass Dein Analogkonzept stark verbesserungsbedürftig ist.

von Hubert G. (hubertg)


Lesenswert?

Wenn du zwischen zwei Nulldurchgänge die Werte aufsummierst und dann 
durch die Anzahl der Messungen dividierst, kann ich dir jetzt schon 
sagen was herauskommt, ~512.
Innerhalb einer positiven und einer negativen Halbwelle wird sich der 
Strom kaum ändern.
Du musst von dem Wert der über 512 ist, 512 abziehen und den Wert der 
unter 512 ist musst du von 512 abziehen. Dann hast du umgerechnet den 
tatsächlichen Strom.
Wie du allerdings den Nulldurchgang synchronisierst und auch noch deinen 
Phasenanschnitt mit einbringst, kann ich dir aus dem Stegreif nicht 
sagen.

von Dietrich L. (dietrichl)


Lesenswert?

Peter schrieb:
> Nur wie geht man da vor?

Wenn Du es ausschließlich per SW machen willst, könnte das so gehen:

1. Der Ausgang des ACS712 geht direkt auf den ADC-Eingang.
2. Der Wert wird z.B. im 1-ms-Raster abgefragt und 20 Werte gespeichert. 
Eine Synchronisierung mit dem Nulldurchgang ist nicht nötig, denn 20ms 
ist ja genau eine Periode, da sind alle Abtastwerte genau einmal drin. 
Das Ganze lässt sich am besten mit einem 1ms-Timerinterrupt in der ISR 
machen.
3. Dann wird gerechnet. Dabei ist zu Bedenken, dass der 0-Punkt des ACS 
bei 2,5V liegt.
Am einfachsten wäre Gleichrichten und Mittelwert bilden: der Betrag 
("Gleichrichten") der Abweichung aller 20 Werte vom 2,5V-Wert (0-Punkt) 
wird addiert und durch 20 geteilt.
Den echten Effektivwert berechnen ist etwas aufwändiger.

Das ist mal so spontan hingeschrieben. Wahrscheinlich gibt es schönere / 
bessere Lösungen...

Zu berücksichtigen ist dabei auch noch die Frage der Genauigkeit:
- Reicht die 1-ms-Auflösung?
- Die 2,5V (O-Punkt) hat Toleranzen, ist das OK? Oder eventuell rechnen 
des 0-Punkts aus den Abtastwerten: der 0-Punkt ist die Summe aller 20 
Werte dividiert durch 20 (Mittelwert ohne "Gleichrichten").
- Richtige Wahl der Referenzspannung, damit die Auflösung fein genug 
ist.

Gruß Dietrich

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Danke erst mal für alle Tipps und Hinweise. Habe heute also direkt den 
Eingang an meinen ADC gelegt und ab Nulldurchgang 23 mal gemessen und 
die Kurve abgetastet. Mit dem Ergebnis konnte ich auch arbeiten aber 
trotzdem bin ich schwer verwundert.

Anbei ist der Schaltplan wie die Strommessung und der Phasenanschnitt 
bisher gemacht wurden also noch mit allen Kondensatoren. Ergebnis mit 
dieser Beschaltung: Messungen in einer Woche immer gleich, Ergebnisse 
sehr zufriedenstellend, nur es gibt dann Momente, da bekomme ich am ADC 
zwar den gleichen Wert wie immer, jedoch ist der Strom nachweißlich 
gestiegen. Diese "falschen" Werte werden dann auch mehrmals 
hintereinander ausgeben, teils auch Tagelang, bis es wieder wie durch 
Gotteshand die "richtigen" Werte sind wo abgeschaltet wird. Diese 
fehlerhafte Ausgabe der Werte passiert von jetzt auf gleich. Dabei wird 
die Software nicht neugestartet oder sonst irgendwas geändert.
Auch die Auflösung ist viel besser bei dieser Beschaltung. eine Änderung 
von 100 Bit bewirkt beim Strom eine Änderung von 1A. Am Oszi habe ich 
dann eine Gleichspannung die nicht pulsiert und mit Anstieg des Stroms, 
steigt auch diese Gleichspannung an.

Bei dem direkten Anschluss des Ausganges an den ADC, schwanken die Werte 
erst einmal viel mehr, was daran liegt, dass die Auflösung viel 
schlechter ist. Für 1A Änderung stehen mir nur noch 20 Bit zur 
Verfügung. Am Oszi ist eine pullsierende Gleichspannung zusehen, die von 
2,0V bis 3,0 schwingt.

Ich kann mir also gar nicht erklären wieso die Auflösung bei beiden 
Beschaltungen so unterschiedlich ist.
Wieso Ändern sich die Werte so abrupt. Wobei der Wert im ADC immer 
gleich bleibt aber nachweißlich der Strom ansteigt.
Woher soll dieser Effekt dieses Hüllkurvendemodulators kommen?

Wo soll ich jetzt Anetten.

von Peter (Gast)


Lesenswert?

Ist echt komisch, bekomme zehn mal hintereinander genau den gleichen 
Wert vom Strom und am ADC und dann auf einmal ist der Wert am ADC zwar 
immer noch gleich aber der Strom ist viel höher. Den ADC-Wert lass ich 
mir Serial anzeigen.

von Peter (Gast)


Lesenswert?

Könnte ich erfolg haben, wenn ich einfach den Widerstand parallel zu dem 
Kondensator weg lasse? Das größte Problem ist, dass ich beim testen nie 
weiß ob es nun funktioniert oder nicht, da ich ja mit der jetzigen 
Lösung auch perfekte Werte bekomme und auf einmal sind diese anders, das 
kann nach 5 Versuchen passieren oder nach 5 Tagen.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Was soll das ganze Kauderwelsch?

Hast du jetzt endlich mal den Ausgang des ACS ohne weitere passive 
Bauteile (Widerstände, Kondensatoren, Dioden) mit dem ADC verbunden?

JA oder NEIN ?

Was kam dabei raus?

von Peter (Gast)


Lesenswert?

Ja habe ich, wie bereits oben geschrieben.
Habe auch die Schwingung (keine volle 50Hz Schwingung sondern nach dem 
Nulldurchgang eine kurz Welle ca. 4ms lang. steigt der Strom an, so wird 
die Welle höher aber nicht wirklich breiter. Sie wandert eher mehr zum 
Nullpunkt) aller 300ms abgetastet und ein Ergebnis erhalten. Nur bin ich 
mir nicht sicher ob das Ergebnis richtig ist und die Auflösung ist auch 
mies. Bei der Lösung vorher hatte ich 100 Bit für 1 Ampere zur Verfügung 
nun nur noch 20.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Ja habe ich, wie bereits oben geschrieben.

Soso...

> Habe auch die Schwingung (keine volle 50Hz Schwingung sondern nach dem
> Nulldurchgang eine kurz Welle ca. 4ms lang.

Zu kurz. Du musst über einen Zeitraum von 10ms in regelemäßigen 
Abständen messen.

> steigt der Strom an, so wird die Welle höher aber nicht wirklich
> breiter.

Hä...?

> Sie wandert eher mehr zum Nullpunkt)

???

> aller 300ms abgetastet und ein Ergebnis erhalten.

Wie jetzt? 300ms?

> Bei der Lösung vorher hatte ich 100 Bit für 1 Ampere zur Verfügung
> nun nur noch 20.

Kannst du uns mal eben aufklären was du uns immer mit deinen Bit-Angaben 
sagen willst? Der ADC der AVRs hat eine Aufläsung von 10 Bit. Was meinst 
du also mit "100 Bit"?

von michael (Gast)


Lesenswert?

Peter schrieb:
> Ist echt komisch, bekomme zehn mal hintereinander genau den gleichen
> Wert vom Strom und am ADC und dann auf einmal ist der Wert am ADC zwar
> immer noch gleich aber der Strom ist viel höher. Den ADC-Wert lass ich
> mir Serial anzeigen.

Ein ähnliches Problem hatte ich neulich mit einem ATMega 168. Ich 
änderte die Spannung am ADC, der eingelesene Wert änderte sich jedoch 
nicht! Ich hatte vergessen, die ADC Prescaler Select Bits (Register 
ADCSRA) zu initialisieren. Schau das mal nach.

Grüße
Michael

von Peter (Gast)


Lesenswert?

Sorry,
ein ADC hat die Auflösung von 10-bit richtig und dieser Teilt sich in 
Werte von 0-1023, also sagen wir ich hatte bei meiner Lösung vorher für 
1 Ampere 100 Werte zur Verfügung nun mit dem direkten Anschluss nur noch 
20 Werte.

Die Welle dich ich sehe ist nur ca 4ms breit eine normale Sinus 
Schwingung ja 10ms, die restlichen 6ms sind aber glatt bei 2,5 V.

Wenn der Strom nun ansteigt, wird die Welle die ich sehe höher also der 
Effektivwert der Spannung wird größer.

Und die Welle steht nicht sonder bewegt sich nach links, was aber auch 
am Oszi liegen kann.

Auf dieser Welle habe ich auf den 10ms aller 300uS abgetastet, sorry.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> ein ADC hat die Auflösung von 10-bit richtig und dieser Teilt sich in
> Werte von 0-1023,

Richtig erkannt.

> also sagen wir ich hatte bei meiner Lösung vorher für
> 1 Ampere 100 Werte zur Verfügung nun mit dem direkten Anschluss nur noch
> 20 Werte.

Nach Aufsummieren, Messwertkorrektur und Mittelwertbildung?

> Die Welle dich ich sehe ist nur ca 4ms breit

Wenn du nur in einem Zeitraum von 4ms abtastest, ist das nicht weiter 
Verwunderlich.

> eine normale Sinus Schwingung ja 10ms,

Falsch. Eine Komplette Periode einer 50Hz Schwingung dauert 20ms. Die 
Halbwelle (sowohl positiv, als auch negativ) dauert 10ms.

> die restlichen 6ms sind aber glatt bei 2,5 V.

Das ist die Zeit, in der der Stromfluss durch deine Glühbirne =0A 
beträgt.

> Und die Welle steht nicht sonder bewegt sich nach links, was aber auch
> am Oszi liegen kann.

Wie triggerst du dein Oszi denn? Worauf triggerst du?

> Auf dieser Welle habe ich auf den 10ms aller 300uS abgetastet, sorry.


Wat denn nun? 4ms oder 10ms?

von Peter (Gast)


Lesenswert?

Magnus M. schrieb:
>> also sagen wir ich hatte bei meiner Lösung vorher für
>> 1 Ampere 100 Werte zur Verfügung nun mit dem direkten Anschluss nur noch
>> 20 Werte.
>
> Nach Aufsummieren, Messwertkorrektur und Mittelwertbildung?
>
>> Die Welle dich ich sehe ist nur ca 4ms breit

Nein einfach beim Nulldurchgang der Spannung gemessen, da es ja eine 
gerade Gleichspannung ist also keine pulsierende ist das ja kein 
Problem.

>
> Wenn du nur in einem Zeitraum von 4ms abtastest, ist das nicht weiter
> Verwunderlich.
>

Das Oszi tastet doch alles ab nicht nur 4 ms.

>> eine normale Sinus Schwingung ja 10ms,
>
> Falsch. Eine Komplette Periode einer 50Hz Schwingung dauert 20ms. Die
> Halbwelle (sowohl positiv, als auch negativ) dauert 10ms.
>
>> die restlichen 6ms sind aber glatt bei 2,5 V.
>
> Das ist die Zeit, in der der Stromfluss durch deine Glühbirne =0A
> beträgt.

Also durch den Phasenanschnitt?

>
>> Und die Welle steht nicht sonder bewegt sich nach links, was aber auch
>> am Oszi liegen kann.
>
> Wie triggerst du dein Oszi denn? Worauf triggerst du?

Ist ein Uraltes Oszi kann da nicht viel Einstellen sorry.

>
>> Auf dieser Welle habe ich auf den 10ms aller 300uS abgetastet, sorry.
>
> Wat denn nun? 4ms oder 10ms?

Also mit dem ADC habe ich in den 10ms die eine Halbwelle braucht aller 
300us abgetastet. das Oszi zeigt mir eine Welle an die 4ms breit ist.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Nein einfach beim Nulldurchgang der Spannung gemessen,

Du hast mit deinen Messungen also beim Nulldurchgang angefangen zu 
messen?

JA / NEIN ?

> da es ja eine gerade Gleichspannung ist also keine pulsierende
> ist das ja kein Problem.

1.  Was ist für dich eine "gerade Gleichspannung"?
2.  Was ist für dich eine "pulsierende Gleichspannung?

>> Das ist die Zeit, in der der Stromfluss durch deine Glühbirne =0A
>> beträgt.
>
> Also durch den Phasenanschnitt?

Ja.

>> Wie triggerst du dein Oszi denn? Worauf triggerst du?
>
> Ist ein Uraltes Oszi kann da nicht viel Einstellen sorry.

Ist egal. Auch ein uraltes Oszi triggert auf irgendwas.

Also: WORAUF TRIGGERT ES?



> Also mit dem ADC habe ich in den 10ms die eine Halbwelle braucht aller
> 300us abgetastet. das Oszi zeigt mir eine Welle an die 4ms breit ist.

Nun machen wir mal Nägel mit Köpfen:

1. Mach mal ein Foto von dem, was du auf deinem Oszi siehst.

2. Poste mal dein Programm.

von Peter (Gast)


Lesenswert?

Magnus M. schrieb:
> Peter schrieb:
>> Nein einfach beim Nulldurchgang der Spannung gemessen,
>
> Du hast mit deinen Messungen also beim Nulldurchgang angefangen zu
> messen?
>
> JA / NEIN ?

ja

>
>> da es ja eine gerade Gleichspannung ist also keine pulsierende
>> ist das ja kein Problem.
>
> 1.  Was ist für dich eine "gerade Gleichspannung"?

eine gerade Linie zieht sich übers Oszi, bei der jetzigen Lösung stieg 
diese Linie bei zunehmende Strom an, wohl durch die Spitzenwertmessung 
durch den Kondensator.

> 2.  Was ist für dich eine "pulsierende Gleichspannung?

Das was der ACS ausgibt direkt am Vout ohne jegliches Gemüse danach.
>
>>> Das ist die Zeit, in der der Stromfluss durch deine Glühbirne =0A
>>> beträgt.
>>
>> Also durch den Phasenanschnitt?
>
> Ja.
>
>>> Wie triggerst du dein Oszi denn? Worauf triggerst du?
>>
>> Ist ein Uraltes Oszi kann da nicht viel Einstellen sorry.
>
> Ist egal. Auch ein uraltes Oszi triggert auf irgendwas.
>
> Also: WORAUF TRIGGERT ES?

Keine Ahnung habe da keine Einstellung vorgenommen, was sollte man da 
Einstellen?
>
>> Also mit dem ADC habe ich in den 10ms die eine Halbwelle braucht aller
>> 300us abgetastet. das Oszi zeigt mir eine Welle an die 4ms breit ist.
>
> Nun machen wir mal Nägel mit Köpfen:
>
> 1. Mach mal ein Foto von dem, was du auf deinem Oszi siehst.
>
> 2. Poste mal dein Programm.

Habe ich gerade nicht zur Hand.
Wieso ist die Lösung die ich am Anfang hatte so schlecht?

von Harald W. (wilhelms)


Lesenswert?

Peter schrieb:

> Das größte Problem ist, dass ich beim testen nie
> weiß ob es nun funktioniert oder nicht,

Vielleicht hast Du ja irgendwo einen Wackelkontakt drin.
Gruss
Harald

von Peter (Gast)


Lesenswert?

Ist alles auf einer richtigen Platine aufgebracht!

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
>> Du hast mit deinen Messungen also beim Nulldurchgang angefangen zu
>> messen?
>>
>> JA / NEIN ?
>
> ja

Und wie stellst du sicher, dass deine Messung auch beim Nulldurchgang 
beginnt?

>> 1.  Was ist für dich eine "gerade Gleichspannung"?
>
> eine gerade Linie zieht sich übers Oszi, bei der jetzigen Lösung stieg
> diese Linie bei zunehmende Strom an, wohl durch die Spitzenwertmessung
> durch den Kondensator.

Du arbeitest also immer noch mit dem Widerstands-  Kondensator-  
Diodenschlonz???

>> Also: WORAUF TRIGGERT ES?
>
> Keine Ahnung habe da keine Einstellung vorgenommen, was sollte man da
> Einstellen?

Triggere am besten auf die Netzspannung. Das sollte bei den meisten 
Oszis (auch bei den Alten) möglich sein.

>> 1. Mach mal ein Foto von dem, was du auf deinem Oszi siehst.
>>
>> 2. Poste mal dein Programm.
>
> Habe ich gerade nicht zur Hand.

Schlecht.

> Wieso ist die Lösung die ich am Anfang hatte so schlecht?

JA!

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Ist alles auf einer richtigen Platine aufgebracht!

- Mach Fotos vom Oszi (-schirm)

- Mach Fotos von deiner Platine

- Poste dein Programm

!!!

von Peter (Gast)


Lesenswert?

Nein habe bei der Dioden Kondensator Lösung auch mit dem Oszi das ganze 
ausgewertet.

Ich habe eine Nulldurchgangserkennung, die auch funktioniert da bin ich 
mir sicher :)

Wieso ist die Lösung so schlecht. Und wie sollte denn nun die "richtige 
Lösung" aussehen? Also ACS direkt an ATmega und wie soll das Programm 
dann aussehen? Wie gesagt die 20 Werte für 1 Ampere sind mir zu wenig, 
wenn ich vorher 100 Werte hatte. und Wieso hatte ich da so viel?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Nein habe bei der Dioden Kondensator Lösung auch mit dem Oszi das
> ganze ausgewertet.

Willst du jetzt damit sagen dass du immer nur von deinen Oszimessungen 
an deinem ursprünglichen Konstrukt erzählt hast, nachdem du nach 
Messergebnissen an der abgeänderten Schaltung gefragt wurdest?

Sag jetzt bitte nicht "JA" !


> Ich habe eine Nulldurchgangserkennung, die auch funktioniert da bin ich
> mir sicher :)

Und wie machst du die Nulldurchgangserkennung?

> Wieso ist die Lösung so schlecht.

Wurde schon weiter oben diskutiert.

> Und wie sollte denn nun die "richtige Lösung" aussehen? Also ACS
> direkt an ATmega

Nochmal:  JA   (Jott Aaaah)!

Mit anderen Worten:  Das Gegenteil von "Nein"!


> und wie soll das Programm dann aussehen?

Wie sieht denn dein jetziges Programm aus? (nochmalfrag)

> Wie gesagt die 20 Werte für 1 Ampere sind mir zu wenig, wenn
> ich vorher 100 Werte hatte. und Wieso hatte ich da so viel?

Weil dein Konzept und dein Programm nix taugt.

kopfschüttel

von Peter (Gast)


Lesenswert?

Magnus M. schrieb:
> Peter schrieb:
>> Ist alles auf einer richtigen Platine aufgebracht!
>
> - Mach Fotos vom Oszi (-schirm)

Foto kann ich erst morgen machen.

>
> - Mach Fotos von deiner Platine

Morgen aber ist eine richtig Industriegeätzte Platine und 
Maschinenbestückt.

>
> - Poste dein Programm
void loop()
{
if (Nulldurchgang == 0)
{
var = 0;
while (var < 23)
{
currentMicros = Micros();
Strom = analogRead(0);
var++;
Strom = Strom / var;
Micros = Micros();
zeit = Micros - currentMicros;
wait = 300-zeit;
delay(wait);
}
digitalWrite(pintriac,High);
digitalWrite(pintriac,LOW);
}
if (Strom > 520)
{
Stopp();
}
}

so sieht es aus und ist im Ardino C geschrieben
>
> !!!

von Peter (Gast)


Lesenswert?

Magnus M. schrieb:
> Willst du jetzt damit sagen dass du immer nur von deinen Oszimessungen
> an deinem ursprünglichen Konstrukt erzählt hast, nachdem du nach
> Messergebnissen an der abgeänderten Schaltung gefragt wurdest?
>
> Sag jetzt bitte nicht "JA" !

Nein, das Oszibild mit der 4ms Welle ist ohne jegliches Gemüse.

Wie sollte das Konzept dann aussehen?

von Peter (Gast)


Lesenswert?

Magnus M. schrieb:
>> Ich habe eine Nulldurchgangserkennung, die auch funktioniert da bin ich
>> mir sicher :)
>
> Und wie machst du die Nulldurchgangserkennung?

Mittels eines Optokopplers und Widerständen sowie eines Transistors, die 
Sache funktioniert gut, habe das Ausgangssignal am Oszi ausgewertet.

>
>> Wieso ist die Lösung so schlecht.
>
> Wurde schon weiter oben diskutiert.

Jas das weiß ich aber ich will es ja verstehen wieso.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
>> - Mach Fotos vom Oszi (-schirm)
>
> Foto kann ich erst morgen machen.

Na dann... gehts wohl morgen weiter.

>> - Mach Fotos von deiner Platine
>
> Morgen aber ist eine richtig Industriegeätzte Platine und
> Maschinenbestückt.

Macht nix.

>> - Poste dein Programm
> void loop()
(...)
> var = 0;

> so sieht es aus und ist im Ardino C geschrieben

Das ist kein Programm sondern ein Codeschnipsel!

von Peter (Gast)


Lesenswert?

Magnus, ich weiß grad nicht ob du mir helfen willst oder nur alles 
schlecht machen willst. Ich will dir nicht zu nahe treten und bin dir 
für jeden Tipp dankbar aber wirklich hilfreich war es bis jetzt nicht.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Magnus, ich weiß grad nicht ob du mir helfen willst oder nur alles
> schlecht machen willst.

Doch. Der Wille zum Helfen ist da.

> Ich will dir nicht zu nahe treten

Keine Angst, bin durchaus strapazierfähig. Diese Strapazierfähigkeit hat 
aber auch irgendwo ihre Grenzen.

> und bin dir für jeden Tipp dankbar aber wirklich hilfreich war
> es bis jetzt nicht.

Das tut mir leid.

von Peter (Gast)


Lesenswert?

Danke, dass du es verstehst.

Das Programm oben ist kein Schnipsel, ich habe nur auf die Setup Sachen 
verzichtet da diese nur aus Zuweisungen zu Ein und Ausgängen bestehen.

Wichtig ist der Abschnitt den ich geschrieben habe. Siehst du da einen 
Fehler bzw klar wie macht man sowas richtig?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Danke, dass du es verstehst.

Bitte.

> Das Programm oben ist kein Schnipsel,

Doch, es ist ein Schnipsel.

> ich habe nur auf die Setup Sachen verzichtet da diese nur
> aus Zuweisungen zu Ein und Ausgängen bestehen.

Die gehören auch zu einem komletten Programm.

Ausserdem fehlen die einzelnen Funktionen:

Peter schrieb:
> if (Nulldurchgang == 0)

Es ist nicht ersichtlich, wie "Nulldurchgang" zustande kommt.

> currentMicros = Micros();

Die Funktion "Micros()" ist nicht zu sehen.

> Stopp();

Ist "Stopp()" eine Standardfunktion von Arduino? Was bewirkt sie?

> Wichtig ist der Abschnitt den ich geschrieben habe. Siehst du da einen
> Fehler bzw klar wie macht man sowas richtig?

Ohne komplettes Programm werden die wenigsten hier dazu bereit sein, 
dein Programm zu interpretieren. Erst recht wenn die Kommentare fehlen.

von Walter S. (avatar)


Lesenswert?

Magnus M. schrieb:
>> so sieht es aus und ist im Ardino C geschrieben
>
> Das ist kein Programm sondern ein Codeschnipsel!

an dem aber schon ein Fehler zu erkennen ist,
was soll denn das werden:
Strom = Strom / var;

Aber ich halt mich daraus, denn Peter ist gegenüber den Helfern nicht 
besonders hilfsbereit und stellt auch auf Nachfrage kaum Infos zu 
Verfügung

von Peter (Gast)


Lesenswert?

Magnus M. schrieb:
> Peter schrieb:
>> if (Nulldurchgang == 0)
Nulldurchgang ist ein digitalRead eines Pins, also wenn der Pin Null ist 
dann mach was.

>
> Es ist nicht ersichtlich, wie "Nulldurchgang" zustande kommt.
>
>> currentMicros = Micros();
>
> Die Funktion "Micros()" ist nicht zu sehen.
MIcros ist eine Arduino Funktion und wird nicht deklariert.
>
>> Stopp();
>
> Ist "Stopp()" eine Standardfunktion von Arduino? Was bewirkt sie?
in Stopp steht nur Trias Low, also die Lampe geht aus wenn der Strom zu 
hoch war
>
>> Wichtig ist der Abschnitt den ich geschrieben habe. Siehst du da einen
>> Fehler bzw klar wie macht man sowas richtig?
>
> Ohne komplettes Programm werden die wenigsten hier dazu bereit sein,
> dein Programm zu interpretieren. Erst recht wenn die Kommentare fehlen.

ich Erwarte auch kein fertiges Programm sondern Tipps zur Lösung. Z.b. 
wie kann ich die Welle sehr oft abtasten und trotzdem einen 
Phasenanschnitt machen

von Peter (Gast)


Lesenswert?

Walter S. schrieb:
> an dem aber schon ein Fehler zu erkennen ist,
> was soll denn das werden:
> Strom = Strom / var;

Sorry Fehler endeckt, Die MIttelwert rechnung also Strom / 23 erfolgt 
erst später habe beim abtippen das übersehen.

>
> Aber ich halt mich daraus, denn Peter ist gegenüber den Helfern nicht
> besonders hilfsbereit und stellt auch auf Nachfrage kaum Infos zu
> Verfügung

Ich Bemühe mich sehr aber verstehe leider nicht alles.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Nulldurchgang ist ein digitalRead eines Pins, also wenn der Pin Null ist
> dann mach was.

Kann man ja nicht riechen. (wäre mit nem kompletten Programm einfacher)

>> Ist "Stopp()" eine Standardfunktion von Arduino? Was bewirkt sie?
> in Stopp steht nur Trias Low,

Was ist "Trias Low"?
http://de.wikipedia.org/wiki/Trias

> also die Lampe geht aus wenn der Strom zu hoch war

>> Ohne komplettes Programm werden die wenigsten hier dazu bereit sein,
>> dein Programm zu interpretieren. Erst recht wenn die Kommentare fehlen.
>
> ich Erwarte auch kein fertiges Programm sondern Tipps zur Lösung.

Ich meinte DEIN fertiges Programm!

Peter schrieb:
> erst später habe beim abtippen das übersehen.

So etwas tippt man nicht ab, sondern kopiert es und fügt es ein 
("Copy&Paste").

Eine weitere Möglichkeit bestünde darin, die Datei mit dem Programm 
einfach als Dateianhang zu posten. Ist sogar (fast) "idiotensicher".

von Peter (Gast)


Lesenswert?

Triac sorry... ist auch eine Pin zuweißung. komme an das Programm erst 
morgen wieder ran dann poste ich es. Hast du nicht trotzdem ein paar 
tipps? ich mein bei dem codeschnippsel würde dich ja sicherlich ein 
grober fehler auch auffallen oder?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Peter schrieb:
> Triac sorry... ist auch eine Pin zuweißung.

Es sei dir vergeben :)

> komme an das Programm erst morgen wieder ran dann poste ich es.

Gerne.

> Hast du nicht trotzdem ein paar tipps? ich mein bei dem
> codeschnippsel würde dich ja sicherlich ein grober fehler auch
> auffallen oder?

Möglich. Bin aber mittlerweile nicht mehr ganz in der Verfassung, den 
unkommentierten Code sinnvoll zu interpretieren. Lass uns dann lieber 
morgen weiter machen, nach dem du den kompletten Code mit den dann 
vorhandenen Kommentaren geposted hast.

von Peter (Gast)


Lesenswert?

1
int pinEin = 2;                    // Trigger Einschalten
2
int pinNull = 3;                   // Nulldurchgänge
3
int pinTriac = 8;                  // Ausgang Triac
4
unsigned long Strom;               // Variable für den Strom
5
int var;                           // Variable zum Berechnen des Zündzeitpunktes
6
unsigned long previousMicros = 0;  // Variable zum messen der Zeit
7
unsigned long currentMicros;       // Variable zum messen der Zeit 
8
long Dauer;                        // Variable zum Berechnen der Zeit
9
int wait;                          // Variable für die Wartezeit
10
int Stopp;                         // Variable zum Abschalten
11
int igno;                          // Variable zum ignorieren von Spitzen
12
int Messung;                       // Variable zum Zählen der Messungen
13
int firstrun;                      // Variable für Sanftanlauf
14
int x;                             // Variable für den Zündzeitpunkt
15
int Stromwert;                     // Variable zum Zählen der Ströme über dem Sollwert
16
17
void setup()
18
{
19
  pinMode(pinEin,INPUT);           // PinEin ist ein Eingang
20
  pinMode(pinNull,INPUT);          // PinNull ist ein Eingang
21
  pinMode(pinTriac,OUTPUT);        // pinTriac ist ein Ausgang
22
}
23
24
void Nulldurchgang()               // Interruptprogramm bei Nulldurchgang
25
{
26
  digitalWrite(pinTriac,LOW);      // pinTriac auf Null setzen
27
  var = 0;                         // Variable var auf Null setzen
28
}
29
30
void loop()
31
{
32
  while (digitalRead(pinEin) == 0 && Stopp == 0)    // Sollange der Einschalter gedrückt ist und Stopp Null ist bleibe in dieser Schleife
33
  {
34
    if (firstrun == 0)             // Beim ersten Start hier durch
35
    {
36
    x = 40;                        // X mit 40 laden
37
    firstrun = 1;                  // firstrun auf 1 setzen damit man hier nicht mehr durch muss
38
    }
39
    attachInterrupt(1, Nulldurchgang, FALLING);    // Bei eine falenden Flanke am Nulldurchgang gehe zum Interruptprogramm
40
    previousMicros = micros();                     // Merke dir wie viel Mikrosekunden seit dem Start des Programmes bis jetzt vergangen sind
41
    Strom = Strom + analogRead(0);                 // Messe den Strom und addiere diesen an den Wert Strom
42
    var++;                                         // var um eins erhöhen
43
    Messung++;                                     // Messung um eins erhöhen
44
    if (Messung == 45)                             // Wenn 45 mal gemessen wurde hier lang
45
    {
46
     Strom = Strom / Messung;                      // Errechne den Mittelwert aus den Stromwerten
47
      if (igno <= 100)                             // Wenn die erste Sekunde nicht ignoriert wurde hierlang
48
      {
49
        igno++;                                    // igno um eins erhöhen
50
      }
51
      if (Strom >= 600 && igno >= 100)             // Wenn der Mittelwert des Stroms größer 600 ist und mehr alseine Sekunde vergangen ist
52
      {
53
        Stromwert++;                               // Stromwert um eins erhöhen
54
        if (Stromwert == 3)                        // Wenn 3 mal der Mittelwert größer 600 war
55
        {
56
          Stopp = 1;                               // Stopp auf eins setzen
57
        }
58
      } 
59
    }
60
    currentMicros = micros();                      // Merke dir wie viel Mikrosekunden seit dem Start des Programmes bis jetzt vergangen sind 
61
    Dauer = currentMicros - previousMicros;        // Errechne wie lange der Vorgang eben gedauert hat
62
    wait = 200 - Dauer;                            // Ziehe die Dauer von 200us ab
63
    delayMicroseconds(wait);                       // Warte die verbleibende Zeit bis 200us
64
    if (var == x)                                  // Wenn var gleich x ist
65
    {
66
      Strom = 0;                                   // Strom auf Null setzen
67
      Messung = 0;                                 // Messung auf Null setzen, damit wird nur zwischen den Zündungen des Triacs gemessen
68
      if (x > 25)                                  // Wenn x größer 25, Sanftanlauf 
69
      {
70
        x--;                                       // x um eins verringern
71
      }
72
      digitalWrite(pinTriac,HIGH);                 // Triac Zünden
73
    }
74
  }
75
  if (digitalRead(pinEin) == 1)                    // Wenn ein nicht gedrückt
76
  {
77
    detachInterrupt;                               // Interrupts deaktivieren
78
    Stopp = 0;                                     // Stopp auf Null setzen
79
    igno = 0;                                      // igno auf Null setzen
80
    var = 99;                                      // var auf 99 setzen damit beim Einschalten auf den ersten Nulldurchgang gewartet wird
81
    Strom = 0;                                     // Strom auf Null setzen
82
    Messung = 0;                                   // Messung auf Null setzen
83
    firstrun = 0;                                  // firstrun auf Null setzen
84
    Stromwert = 0;                                 // Stromwert auf Null setzen
85
    digitalWrite(pinTriac,LOW);                    // pinTriac auf Null setzen
86
  }
87
}

Anbei jetzt das Programm.
Was macht es meiner Meinung nach: Bei einem Nulldurchgang wird eine 
Variable auf Null gesetzt, diese wird dann aller 200us um eins addiert. 
Wenn dieses Variable dann gleich einem vorgegeben Wert ist, Zündet der 
Triac. Dieser Abschnitt setzt auch die Strommessung auf null. Nun wird 
aller 200us die Spannung des ACS direkt abgetastet. Nach 45 Messungen 
wird dann noch der Mittelwert errechnet und entschieden, ob Abgeschalten 
wird.
Ich Messe also immer die Spannung zwischen zwei Triac Zündungen. Somit 
ist immer sichergestellt, das die Spannung entweder größer 2,5V ist oder 
kleiner. Zum Auswerten genügt jede zweite Halbwelle.

Habe das Programm auch getestet, und den Ausgang des ACS direkt an den 
ADC angeschlossen.
Ergebnis: Mehrmals hintereinander schaltet sich die Lampe bei dem 
gleichen Strom ab, aber dann schwankt das ganze auch wieder. Die MCU ist 
also der Meinung dass der Mittelwert wieder der gleiche ist wie immer, 
aber die Lampe geht später oder eher aus.
Beispiel:

- bei 4A gibt die MCU einen ADC Mittelwert von 600 aus
- Schwanken, also die MCU gibt einen ADC Mittelwert von 600 aus, der 
Strom ist aber 3,8A oder auch mal 4,2 A und so weiter. Der 
Abschaltzeitpunkt schwankt also wild umher und schaltet nicht immer 
gleich ab.

Da ja nun der ACS direkt an den ADC geht kann ja nichts mehr das 
Ergebnis verfälschen meiner Meinung nach.

von Peter (Gast)


Lesenswert?

Kann das Schwanken der Werte vom ACS kommen? Wie groß sollte der Filter 
am PinFilter sein? Brauch ich noch ein Tiefpass Filter?

von wieOskar (Gast)


Lesenswert?

Servus,
Eine frage startet der Arduino das Programm neu wenn es durchgelaufen 
ist? Oder kommt das von dem void loop() konstrukt? Egal wie firstrun 
könnte man sich sparen, einfach x vor die while schleife zieghen.

Wird beim Arduino der ADC nicht initialisiert? Gegen welche 
Referenzspannung wird den gemessen?

Dein Interupt kozept macht keinen sinn für mich. Deine Schleife läuft 
doch weiter nach dem attachInterrupt egal ob da ein interrupt da war 
oder nicht. Bei einem Interrupt wird var zwar auf 0 gesetzt messung kann 
aber 34 sein. Da kann ja gar kein bezug zwischen Messung und Nullpunkt 
entstehen.

Wie misst du die 3,8A / 4,2A? Mit einem Multimeter das willkurlich 
mittelt?

Um eine aussage trefffen zu können ob dein ADC richtig funktioniert 
müsstest du doch z.B. ab einem Nulldurchgang parallel mit dem Oszi 
messen das bild speichern und dann mit den vom ADC genau zum 
Messzeitpunk aufgenommenen Werten vergleichen.
Wie schnell reagiert dieser ACS Chip/wandler überhaupt? Schwingt das 
Ausgangs signal wirklich mit der selben Frequenz? Oder gibt es da 
Verzögerungen veränderungen.

Kann man da mal Bilder sehen? Oszi: Spannung vs. Strom ohne das das 
kudel mudel Programm läuft.

Wo wird der Nulldurchgang gemessen Strom oder Spannungseitig?

Dein Ziel ist es den Triac anfänglich bei 144° und dann abnehmend bis 
93,6° zu zünden. Richtig?

Bei welchem Strom soll er ganau abschalten nach einer Sekunde? Meine 
vermutung wäre jetzt 0,85A.

Ich bleibe weiterhin sehr interessiert.

von Peter (Gast)


Lesenswert?

wieOskar schrieb:
> Servus,
> Eine frage startet der Arduino das Programm neu wenn es durchgelaufen
> ist? Oder kommt das von dem void loop() konstrukt? Egal wie firstrun
> könnte man sich sparen, einfach x vor die while schleife zieghen.

stimmt hast recht das kann ich ändern und mir speicher sparren.
>
> Wird beim Arduino der ADC nicht initialisiert? Gegen welche
> Referenzspannung wird den gemessen?
Referenz wenn nicht angegeben ist die an Aref also in dem Fall 5V. Da 
der ACS mit VCC/2 am Nullpunkt arbeitet dachte ich ist das das beste,.

>
> Dein Interupt kozept macht keinen sinn für mich. Deine Schleife läuft
> doch weiter nach dem attachInterrupt egal ob da ein interrupt da war
> oder nicht. Bei einem Interrupt wird var zwar auf 0 gesetzt messung kann
> aber 34 sein. Da kann ja gar kein bezug zwischen Messung und Nullpunkt
> entstehen.
Darf es auch nicht. Der Interrupt soll nur var auf null setzen damit 
nach 35 mal 200us 7000us abgelaufen sind und der triac zündet. Dann wird 
Messung auf Null gesetzt damit ich immer zwischen den Trias Zündungen 
Messe. Damit habe ich immer nur die Welle größer 2,5 volt oder tiefer 
2,5 volt. Würde ich von Nulldurchgang zum Nulldurchgang messen hätte ich 
ein Teil größer ein Teil tiefer.

>
> Wie misst du die 3,8A / 4,2A? Mit einem Multimeter das willkurlich
> mittelt?
Mit einem Analogen Amperemeter mit Schlepzeiger also Maximal anzeige, 
die ich nach dem einschalten wieder Nulle.

>
> Um eine aussage trefffen zu können ob dein ADC richtig funktioniert
> müsstest du doch z.B. ab einem Nulldurchgang parallel mit dem Oszi
> messen das bild speichern und dann mit den vom ADC genau zum
> Messzeitpunk aufgenommenen Werten vergleichen.
> Wie schnell reagiert dieser ACS Chip/wandler überhaupt? Schwingt das
> Ausgangs signal wirklich mit der selben Frequenz? Oder gibt es da
> Verzögerungen veränderungen.
Das signal ist um 6us verschoben zum eingang.

>
> Kann man da mal Bilder sehen? Oszi: Spannung vs. Strom ohne das das
> kudel mudel Programm läuft.
>
> Wo wird der Nulldurchgang gemessen Strom oder Spannungseitig?
Spannungsseitig
>
> Dein Ziel ist es den Triac anfänglich bei 144° und dann abnehmend bis
> 93,6° zu zünden. Richtig?
Ja also nur zum Anlaufen dann läuft er immer an 93,6° also der 
Phasenanschnitt wird nicht verändert.
>
> Bei welchem Strom soll er ganau abschalten nach einer Sekunde? Meine
> vermutung wäre jetzt 0,85A.
Er soll ja nach einer Sekunde nicht abschalten sondern wenn der Strom 
wert größer als der Sollwert ist. Die Sekunde wird nur wegen der 
Einschaltspitze ignoriert
>
> Ich bleibe weiterhin sehr interessiert.

von Peter (Gast)


Lesenswert?

Peter schrieb:
>> Um eine aussage trefffen zu können ob dein ADC richtig funktioniert
>> müsstest du doch z.B. ab einem Nulldurchgang parallel mit dem Oszi
>> messen das bild speichern und dann mit den vom ADC genau zum
>> Messzeitpunk aufgenommenen Werten vergleichen.

Am ende wird eine zuweißung gemacht z.b. 600 ADC werte entsprechen 4A 
nur das bei mir auch mal der ADC den Wert 600 ausgibt wenn 3,8A da sind 
oder 4,2 als Beispiel

von wieOskar (Gast)


Lesenswert?

Peter schrieb:
> 600 ADC werte entsprechen 4A

Was sind 600 ADC Werte? Im deutsch das mir beigebracht wurde heist das 
du hast von ADC 600 Werte bekommen, also 600 mal gemessen was 4A 
entspricht? Ergibt für mich keinen sinn.

Dein Mittelwert ist 600 und soll 4A entsprechen? Andere frage wie viel 
Bit hat dein ADC? Ich vermute 10. Dementsprechend misst du Werte im 
Bereich von 0-1023?

Gregor B. schrieb:
> Bei Strom 0A gibt der Sensor eine Spannung von Vcc/2 aus, bei
> 5V-Versorgung also 2,5V.
>
> Bei +5A peak erhälst Du eine Ausgangsspannung (gemäß Grafik "Output
> Voltage versus Sensed Current" auf S.6 des Datenblatts) von 3,5V.
>
> Bei -5A peak erhälst Du eine Spannung von 1,5V am Ausgang des Sensors.

Stimmt das?
Damit sollte bei 4A ca. 676 raus kommen? 2,9A entsprechen dann 600.

Woher weist du das der Strom einen Wert von 600 hat?  Dein Programm 
macht doch gar keine Ausgabe?

Mit welcher genauigkeit misst du deinen Strom? Sind die 0,4A vielleicht 
eine Messungenauigkeit?

Du zählst doch var und  Messung gleichzeitig hoch. Fragst erst ob die 
Messung 45 ist und danch ob var 26 ist wenn var 26 ist stellst du 
Messung und Strom zurück auf 0. Da bist du bei ca. 93° bei 180 ist 
wieder ein Nulldurchgang der var ja wieder auf null setzen sollte und 
den Triac ausschaltet.

Du misst also weniger als eine halbe Periodendauer über einen 
Nulldurchgang bei dem die Last abgeschaltet wird? Ein konstantes 
Messergebnis wäre doch gut nach dem Sanftanlauf. Ich Rechne für deine 
Zeiten einen theoretischen Mittelwert von 582 aus.

von Peter (Gast)


Lesenswert?

Ok anderes Beispiel um es genauer zu machen:

Angenommen wir haben einen Motor, dieser soll immer bei 100Nm 
ausschalten. Damit das passiert messe ich den Strom am Motor und werte 
diesen mit meiner MCU aus. Durch einen Test weiß ich, dass der ADC Wert 
600, 100 Nm entspricht. Nun will ich also immer bei 100Nm abschalten. 
Nur bei mir schaltet der Motor mal bei 80 Nm ab oder bei 120 Nm. Besser?

von Peter (Gast)


Lesenswert?

wieOskar schrieb:
> Du zählst doch var und  Messung gleichzeitig hoch. Fragst erst ob die
> Messung 45 ist und danch ob var 26 ist wenn var 26 ist stellst du
> Messung und Strom zurück auf 0. Da bist du bei ca. 93° bei 180 ist
> wieder ein Nulldurchgang der var ja wieder auf null setzen sollte und
> den Triac ausschaltet.

Gemessen soll immer nach dem der Triac gezündet wurdet bis 9ms danach. 
Darum wird beim zünden vom Triac nur Messung auf Null gesetzt, aber beim 
nulldurchgang der Spannung var.

von wieOskar (Gast)


Lesenswert?

Peter schrieb:
> Durch einen Test weiß ich, dass der ADC Wert
> 600, 100 Nm entspricht.

Du meinst durch ein Test glaubst du zu wissen. Hast du es auch mal 
durchgerechnet?
Wenn Gregors angabe stimmt dann hab ich es ja oben schon mal geschrieben 
passen deine Werte nicht zusammen.

Deswegen: ADC Werte speichern und parallel mit dem Oszi den 
Spannungsverlauf messen. Und dann die Bilder hier einstellen.

von Peter (Gast)


Lesenswert?

Trotzdem müssen immer wenn ich bei 600 abschalte das gleiche Ergebnis 
rauskommen und nicht mal 200 mA mehr oder weniger, darum geht es ja im 
eigentlichen oder besser der Motor muss immer bei 100 Nm abschalten und 
nicht mal bei 80 oder 120 also die wiederholgenauigkeit ist schlecht

von Peter (Gast)


Lesenswert?

Gibt's den keine Hinweise mehr? Ich kann mir nicht erklären wo dieses 
Problem her kommt.

von Hubert G. (hubertg)


Lesenswert?

Hast du die Messung schon mal ohne Triac-Steuerung gemacht. Also eine 
ganze Halbwelle messen.

von Peter (Gast)


Lesenswert?

Ja auch da schwanken die Werte. Der Triac hat auch bereits einen 
Snubber.

von wieOskar (Gast)


Lesenswert?

Peter schrieb:
> Gibt's den keine Hinweise mehr? Ich kann mir nicht erklären wo dieses
> Problem her kommt.

Du hast du Schaltung! Also musst du auch Infos liefern. Sonst kann man 
nur weiter raten und du sagst dann einfach "Nein daran liegt es aber 
nicht". Ohne es belegen zu können!

Also wie hast du überprüft das dein Messverfahren zum Strom messen
a) die erforderliche genauigkeit besitzt und
b) zeitlich auch im selben Bezug bzw. direkten Bezug zur ADC Messung 
steht?

Du hast trotz mehrfacher Aufforderung noch kein brauchbares Material 
geliefert mit dem man dir vernünftig helfen könnte. Selbst auf simple 
Fragen was du an Messequipment zur verfügung hast bist du nicht 
eingegangen. Auch vorschläge zur eingrenzung des fehlers werden von dir 
völlig ignoriert. Warum? Bist du einfach nicht in der Lage diese zu 
verstehen oder umzusetzen?

Schreib doch mal zusammen was du meinst das du über deine Schaltung 
weist und dann zeige was du davon belegen kannst.

Auf mich wirkt es als ob es dir an wissen/erfahrung fehlt um das Problem 
selbst zu lösen. Einen beitrag zur Lösung willst du anscheinend nicht 
liefern aber eine Lösung hättest du gerne.

Peter schrieb:
> Ja auch da schwanken die Werte.
Komplett wertlose Aussage. Sorry du hättest auch einfach 42 schreiben 
können. Was interessiert bei so einer Frage: Eingangsgröße, Messgröße, 
Messverfahren, Statistischesverfahren, Meßaufbau.

von Peter (Gast)


Lesenswert?

Kollege, Schaltplan ist schon lange gepostet und und ausgewertet sowie 
mit Hilfe der Forums abgeändert. Des weiteren ist ein Programm gepostet. 
Dass ich ein Oszi, digital Multimeter und analog Multimeter habe wurde 
auch erwähnt. Des Weiteren Versuche ich immer schnellstmöglich auf 
Fragen und Vorschläge einzugehen.
Es tut mir leid, wenn ich nicht alles zur Zufriedenheit aller 
Beantworten kann.

von Peter (Gast)


Lesenswert?

wieOskar schrieb:
> Also wie hast du überprüft das dein Messverfahren zum Strom messen
> a) die erforderliche genauigkeit besitzt und

Praktisch noch nicht, rechnerisch müsste es ausreichend sein. Werte 
morgen das Oszi-Bild filmen und dann wenn ich die Schwankungen habe die 
Bilder übereinander legen. Dann sehe ich wie viel wirklich die Änderung 
des Stroms war, bzw. der Spannung die am ADC ankommt.

> b) zeitlich auch im selben Bezug bzw. direkten Bezug zur ADC Messung
> steht?

Wie testet man das?

von wieOskar (Gast)


Lesenswert?

Na du misst genau in der selben zeit wie dein ADC Misst. z.B.: Mit dem 
starten der Messung einen Triggerausgang setzen und damit das 
Strommessgerät ansteuern. Bei einem Periodischen Signal muss es auch 
nicht parallel gemessen werden aber die Zeitlichen bezügen müssen 
Korellieren. Sonst haben deine Messungen die selbe aussage kraft wie die 
Temperatur heute und die vom 12. Dezember 1873. Die frage was dir dieser 
Vergleich bringt bleib dann dir überlassen.

von Peter (Gast)


Lesenswert?

Ah ok verstehe gemessen wird ja aller 200us da werden es paar viele 
Signale dich ich kaum auswerten kann oder?

von wieOskar (Gast)


Lesenswert?

Das ist ja nur die Abtastfrequenz deiner Messung. Du müsstest zum 
Beispiel während der 9ms messen und diesen messwert genau so berechnen 
wie du es digital auch machst. Wenn du also Messdaten für die 9ms 
Digital abgetastet hast und daraus den Mittelwert bildest, kannst du für 
die selbe zeit analog messen(zum selben zeitpunkt) und musst natürlich 
auch den selben mittelwert bilden. Dann kannst du eine Aussage darüber 
treffen wie sich dein analoges messsystem zu deinem digitalen verhält.

von Peter (Gast)


Lesenswert?

Ok verstehe. Leider stehen mir Messmittel nicht zur Verfügung die das 
messen könnten...
Ist das Programm denn so verwendbar wie ich es oben gepostet habe? Dann 
bin ich mir erst mal sicher, dass es von der Hardware kommt.

von wieOskar (Gast)


Lesenswert?

Sieht auf den ersten Blick ein bisschen chaotisch aus aber lönnte 
theoretisch funktionieren. Du solltest sicherstellen das deine 200us ca 
hinkommen. Also am besten einen Pin setzen wenn der zyklus beginnt und 
rücksetzen wenn er endet. An den Pin das Oszi ran und dann sollte da ein 
stabiles bild rauskommen. Kritisch könnte es sein wenn der Mittelwert 
gebildet wird. Je nachdem wie lange die Berechnung braucht könnte es mit 
den 200us eng werden. Das hängt ja auch mit der Taktfrequenz zusammen. 
Weil teilen recht lange dauern kann sind Teiler die sich durch einen 
shift realisieren lassen beliebt. Ich habe mal ein ADC Meswert 
umrechnung gemacht und einfach die dazugehörige Formel verwendet und das 
mal gegen die Optimiere Lösung mit geringfügigem Fehler, der im Rauschen 
des ADC unter geht gemessen mit 137us zu 12us. Was schon interessant 
sein kann wenn man viele zu tun hat. Deswegen würde ich die einzelnen 
teile testen. Am besten mit einem Poti am ADC eingang damit du stabile 
Werte bekommst und auch die Summe der Messwerte hochtreiben kannst. Ich 
würde mir an deiner stelle auch ein kleines Programm schreiben was 
einfach die eingelesenen Werte des ADC per UART an den PC sendet ohne 
regelung. Einfach Messen und senden. Die empfangenen werte einfach mit 
nem kleinen uart server zusammen basteln und als csv abspeichern. Das in 
Excel importiert und geplottet oder mit gnuplot und du siehst was da am 
ADC los ist dann kannst du auch sinnvolle aussagen darüber treffen was 
da los ist. Wenn du einen debugger hast kannst du sie auch einfach im 
Ram speichern und per debugger auslesen. Wenn du mit so einem Programm 
ohne den Phasen anschnitt was sinnvolles Messen kannst bist du einen 
schritt weiter in richtung messsicherheit.

Persönlich denke ich das es sehr schwer ist jemandem hilfestellung zu 
geben wenn man nur brocken vorgeworfen bekommt. Viele sagen zwar sie 
haben ein Oszi aber bei den wenigsten habe ich den eindruck das sie 
damit umgehen können. Ok das kann man lernen und auch da kann man hilfe 
bekommen. Oftmal sind die Probleme eben nicht so trivial und auf den 
ersten Blick Lösbar. Wichtige infos sind immer welche Hardware mit 
welchen Parametern z.B.:Takt, Spannung. Schaltpläne, Programmcode nicht 
nur schnipsel. Wenn irgend möglich Bilder ven den Messungen die das 
Problem zeigen. Oftmals sind Probleme auch da wo man sie nicht vermutet. 
Man weis im Normalfall auch nicht wie die Person vorgebildet ist und ob 
sie versteht was man meint. Auch weis man bei der angabe ja ich habe ein 
Oszi ob das ein Halbdefektes 20MHz Analogoszi oder ein Hochklassiges DSO 
mit GBIP. Auf tagelanges informationen ausquetschen habe ich meistens 
keine lust. Da Arbeite auch ich lieber an meinen eigenen Projekten.

von Peter (Gast)


Lesenswert?

Vielen dank zunächst für deine Hilfe. Kann gut verstehen dass irgendwann 
die Lust fehlt zu helfen wenn man sich nur im Kreis dreht. Mir geht es 
genau so. Jeden Tag sieht man die Schaltung und das Programm und bei 
jeder Änderung bleibt das positive Ergebnis aus.
Werde wie du vorschlägst zu nächst ein Pin bei der Messung setzen und 
auswerten.
Eine Frage zum Mittelwert, ist es so richtig die 45 Messwerte zusammen 
zuziehen und durch 45 zu teilen oder gibt es da bessere Lösungen?
Als ich den ACS mit dem Kondensator und Zubehör als Spitzenwertdedektor 
betrieben habe am ADC war die Wiederholgenauigkeit sehr gut nur die 
Sprünge waren unerklärlich. Bei der Lösung jetzt sind ja keine Bauteile 
mehr dazwischen und meine Wiederholgenauigkeit ist schlechter. Mit dem 
Kondensator musste ich für eine kleine Änderung am Abschaltstrom recht 
viel Werte höher gehen jetzt reicht schon die Hälfte für das gleiche 
Ergebnis. Man könnte meinen die Auflösung sei schlechter aber das geht 
ja nicht.

von wieOskar (Gast)


Lesenswert?

Zum Mittelwert: Ja das passt soweit. Geschickter könnte es sein mit 
2,4,8,16,32,64 Werten zu arbeiten da kannst du anstelle der division 
einen Bitshift machen. Ganz klar ganzhal operation also verlusst der 
Nachkomma stellen aber die brauchst du ja eh nicht. Beim Abschalt 
kriterium würde ich auf größer gleich prüfen nicht auf ist gleich.

Wie schon mal erwähnt bin ich von der Messidee nicht überzeugt. Wenn ich 
das jetzt richtig verstanden habe schaltest du im eingeschwungenen 
zustand jeweil bei 93° ein und bei 180° aus auf der positiven wie auf 
der negativen halbwelle. D.h. nur dann kann Strom fließen den du mit 
deiner Messvorichtung auswerten kannst. Ich würde nur dort messen woch 
ich auch etwas messbares erwarte. Zeitlich gesehen zwischen 5,2ms und 
10ms sowie 15,2ms und 20ms. Jetzt müsste man sich anschauen mit welcher 
Geschwindigkeit die Messung durchgeführt wird, langsamere Messung 
entspricht dem besseren Ergebnis bei quasi stationären signalen und wie 
viel zeit zur verarbeitung zur verfügung steht. Das kann ich aber auch 
so aus dem stehgreif nicht beantworten. Also Messen, auswerten, 
verbessern und alles wieder von vorne, bis es passt ;-) So isses leider.

Ich würde meine Messung nach dem Einschalten starten und versuchen 8, 16 
oder 32 Werte zu bekommen, wahrscheinlich eher 16. In der zeit in der 
der Triac aus ist kannst du ja rechnen und gegebenenfals abschalten.

Um ein gefühl für die Werte zu bekommen könne man auch den ADC Wert in 
einen timer laden der dann als one shot den ADC Wert z.B. in us als 
geschaltete Zeit an einem Pin repräsentiert. Da würdest du dann eine 
flakernde fallende flanke als messwert variation des ADC sehen. Falls 
das Oszi die Auflösung schaft.

Peter schrieb:
> Jeden Tag sieht man die Schaltung und das Programm und bei
> jeder Änderung bleibt das positive Ergebnis aus.
Dann ist Forschung und Entwicklung der falsche Beruf für dich ;-) Das 
gehört dazu das man viele Stunden damit verbring eine ordentliche 
Messung zu bekommen. Je nach Messung kann es schon mal Tage bis Wochen 
dauern nur den Messplatz einzurichten. Bei der Fehlersuche ist es besser 
das Problem in kleine happen zu zerlegen. und dan stück für stück die 
Verarbeitungskette vor arbeiten. Wenn man es bei der Entwicklung nicht 
gleich gemacht hat oder konnte alle Einzelteile seperat prüfen.  JA das 
ist viel Arbeit aber wenn man es richtig macht macht man das auch nur 
einmal. Bzw man hat dann sein toolkit mit dem man schnell einzelne 
sachen testen kann. Auch das teure Messequipment ist manchmal 
fehlerhaft/defekt was man auf den ersten Blick nicht mitbekommt trotz 
Kalibirerung durch den Hersteller eine Woche zuvor. Kostet dann halt mal 
nen Tag.

Was deine reproduzierbarkeit angeht kann man schlecht sagen ob das das 
normale rauschen / schwanken der Messwerte ist. Man kann mitunter große 
Probleme bekommen wenn man neben der ADC Leitung z.B. eine Leitung 
liegen hat die mit steilen Flanken schaltet. Wie sauber ist deine 
Versorgungsspannung? Schwank die wenn der Triac geschaltet wird? Hast du 
irgendwelche Störstrahler in der nähe? Wichtig ist das man sich eine 
Methode ausdenkt um reproduzierbare Ergebnisse zu bekommen und diese 
dann Auswertet. Eine frage wäre z.B.: mit welchem Eingangsstrom musst du 
deinen ADC Eingang treiben um bei der von dir gewünschten Messrate die 
richtigen Ergebnisse zu bekommen? Da ist schließlich ein Kondensator der 
ge/entladen werden will. Da sind wir wieder beim Thema testschaltung mit 
z.B.: bekanntem Sinus als Eingangsgröße.

Wenn ich es richtig verstanden habe verschwendest du eh viel 
Leistungsfähigkeit des ADCs wenn deine Messwerte nur zwischen 1,5V und 
3,5V liegen. Falls das von Gregor richtig war. Das heist du hast Vss 2V. 
Damit könntest du deinen Eingangswert, mit einem geeigneten 
Spannungsteiler den du einmisst, in einen Bereich von 0-2,56V Schieben. 
Damit könntest du die Quanisierungsstufen verkleinern und die interne 
referenzspannung benutzen. Wenn es dann nicht gut genug ist könnte man 
über einen Eingangstiefpass (RC) nachdenken da du ja dann dein R schon 
drin hast. Du könntest also Spannungsteiler und tiefpass kombinieren.

von Peter (Gast)


Lesenswert?

Habe jetzt das Programm so geändert, dass nur Messwerte in die 
Berechnung mit eingehen, die größer sind als die Null-Spannung. 
Ergebnis: Die "Auflösung" wird besser sprich um einen kleinen Stromwert 
später abzuschalten muss ich mehr ADC-Werte im Programm ändern als 
zuvor. Der Grund ist mir auch klar.
Jedoch ist die Wiederholgenauigkeit immer noch sehr schlecht.
Nun habe ich ganz einfach an den Ausgang des ACS eine Diode und dahinter 
parallel einen Kondensator gesteckt. Also habe ich nun wieder die 
Spitzenwert Detektion wie bereist am Anfang, nur die ganzen Widerstände 
habe ich weggelassen. Die Wiederholgenauigkeit ist viel besser. Auch die 
"Auflösung" wird um vieles besser. Wo ich vorher für 1A ca. 50 ADC Werte 
ändern musste, muss ich nun für 1A 200 ADC-Werte ändern.
Mache ich doch etwas bei der Mittelwertberechnung falsch oder warum ist 
die Auflösung um so viel höher?
Der Unterschied zum Anfang ist also nun, das alle Widerstände weg sind 
hinter dem ACS und dass ich jetzt aller 200us messe und nicht wie am 
Anfang nur aller 10ms. Jetzt gehen in die Berechnung 45 Werte aus 10ms 
ein vorher 15 Werte aus 150ms.
Ich hoffe das die Probleme nun gelöst sind. Am Anfang war ja die 
Widerholgenauigkeit bereits super nur es gab diese Augenblicke wo auf 
einmal bei einem viel höheren Strom die MCU die gleichen ADC-Werte aus 
gab als kurz zuvor.

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.