Messfehler am ADC vom ATmega

Gast #3207939
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?
#3207986
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
Gast #3208006
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
#3208048
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.
Gast #3208052
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?
Gast #3208066
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
Gast #3208248
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.
Gast #3209101
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?
Gast #3209227
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...
Gast #3209304
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?
Gast #3209310
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?
Persönliche Seite #3209311
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?
Gast #3209313
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.
Gast #3209351
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?
Gast #3209359
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!
Gast #3209372
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
#3209397
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.
Gast #3209423
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.
#3209794
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
Gast #3210159
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?
Gast #3210194
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.
#3210214
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.
#3210248
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
Gast #3210418
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.
Angehängte Dateien:
Gast #3210520
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.
Gast #3210538
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.
Gast #3210578
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.
Persönliche Seite #3210583
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"?
Gast #3210586
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
Gast #3210591
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.
Persönliche Seite #3210610
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?
Gast #3210621
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.
Persönliche Seite #3210631
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.
Gast #3210639
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?
Persönliche Seite #3210657
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!
Gast #3210663
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?
Persönliche Seite #3210675
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
Gast #3210678
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
>
> !!!
Gast #3210683
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?
Gast #3210689
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.
Persönliche Seite #3210693
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!
Gast #3210697
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.
Persönliche Seite #3210700
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.
Gast #3210705
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?
Persönliche Seite #3210730
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.
Gast #3210739
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
Gast #3210744
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.
Persönliche Seite #3210756
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".
Gast #3210761
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?
Persönliche Seite #3210771
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.
Gast #3211524
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.
Gast #3211811
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.
Gast #3211859
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.
Gast #3211862
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
Gast #3211964
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.
Gast #3211972
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?
Gast #3211975
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.
Gast #3212131
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.
Gast #3212210
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
Gast #3213335
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.
Gast #3213354
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.
Gast #3213394
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?
Gast #3213487
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.
Gast #3213571
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.
Gast #3213810
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.
Gast #3214041
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.
Gast #3214075
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.
Gast #3214130
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.
Gast #3214765
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren