Forum: Mikrocontroller und Digitale Elektronik PIC18F2553 ADC Problem. Hilfe!


von Andreas B. (biosniper)


Angehängte Dateien:

Lesenswert?

Ich habe mir ein kleines Speicheroszilloskop mit PICs gebaut um die 230 
Volt gleichgerichtete Netzspannung auszumessen.
Ein PIC als USB-Device, verbunden per SPI mit einem zweiten PIC18F2553 
zum Messen des Signales per ADC-AN0.
336 Messpunkte landen dann in meinem PC Programm und werden dort in ein 
Chart ausgegeben. Siehe angehängtes Bild.

Die Sinuspannung wird gleichgerichtet mit MUR160 Dioden, dann mit 
Widerständen (1,9M und 24K) durch 80,2 geteilt und zu einem AD820 
(Rail2Rail als Impedanzwandler) geleitet, GND des AD820 ist verbunden 
mit einem ICL7660 (Ladungspumpe, -4,8V).
Der Ausgang des AD820 ist direkt verbunden mit einem PIC18F2553 
12Bit-ADC PIN-AN0.

Als Präzisionsspannungsreferenz ein LT1021 5,00 Volt

Zum Testen benutze ich vorerst einen 6V Netztrafo (Umax = 10,2 V) => 
Umax-AN0 = 127 mV (10,2V / 80,2); (1 ADC-Digit = 1,22 mV)

Leider habe ich ein unlösbares Problem, immer nach der ersten Halbwelle 
geht die Sinusspannung nicht ganz auf 0 Volt runter.
Das passiert immer bei jeder 2. Halbwelle. Das Merkwürdige ist, dass 
mein Oszilloskop einen korrekten Sinusverlauf am PIN-AN0 anzeigt.

Einen Übertragungsfehler zum PC, sowie einen Abspeicherfehler der 
ADC-Daten im PIC kann ich ausschliessen.
Ich habe mir ADC-Messwerte an der betreffenden Stelle bei 10 ms per 
LED-Blinken ausgeben lassen und optisch mitgezählt. Alles korrekt, die 
Daten landen auch korrekt im PC.
Man sieht auch an dem Bildchen, das leichte Spannungszittern bei um 10 
ms, das zeigt, dass da tatsächlich gemessen wird.

Einen Messfehler des ADC kann ich ziemlich ausschliessen, denn der ADC 
misst tatsächlich richtig.
Der PIC wird mit 48 MHz betrieben, der ADC mit Fosc/64 getaktet.
Ich habe auch versucht die Referenzspannungen von Intern zu nehmen, TAD 
20 oder 0 macht auch keinen Unterschied, da ich ja den ADC-Channel nicht 
wechsele.

Warum misst mein Oszilloskop (Messeinstellung: DC) ein sauberes 
gleichgerichtetes Sinussignal und der PIC misst Müll bei 10 ms ?

Ich habe den Verdacht, dass der Ausgang meines OPAMPs AD820 
(Impedanzwandler) vielleicht mit einem Widerstand mit GND verbunden 
werden sollte um da für eine Grundlast zu sorgen.

Eine andere Idee habe ich da nicht mehr, ich bin am Ende meiner 
Weisheit.

Vielleicht habt ihr ja noch einen Tipp für mich, hier laufen ja zum 
Glück gute Leute rum.

von Krapao (Gast)


Lesenswert?

> Die Sinuspannung wird gleichgerichtet mit MUR160 Dioden
> mein Oszilloskop einen korrekten Sinusverlauf am PIN-AN0 anzeigt.

Hört sich für mich nicht korrekt an: Halbwellen würde ich am PIC-Eingang 
erwarten, keinen Sinus. vgl. Figure 43 im Datenblatt.

> GND des AD820 ist verbunden mit einem ICL7660 (Ladungspumpe, -4,8V).

Warum? Der AD820 kann doch Single-Supply. Die entsprechende Schaltung 
ist ja als Applications Information im Datenblatt drin.

> Ich habe den Verdacht, dass der Ausgang meines OPAMPs AD820
> (Impedanzwandler) vielleicht mit einem Widerstand mit GND verbunden
> werden sollte um da für eine Grundlast zu sorgen.

Bei einem AVR würde ich bzgl. Pull-Down Lastwiderstand am Ausgang des 
OPA zustimmen. In den AVR Datenblättern steht drin, an welcher 
Quellenimpedanz der ADC messen möchte.

> Ich habe den Verdacht, dass der Ausgang meines OPAMPs AD820

Bei Verdacht auf Störung durch den AD820: Teste deine Schaltung halt mal 
ohne diesen Teil. Digitalisiert dein unbekanntes PIC-Programm eine 
gleichgerichtete und per Spannungsteiler angepasste Spannung gleicher 
Frequenz richtig, wenn du den Schaltungsteil mit dem Impedanzwandler 
nicht drin hast?

von Andreas B. (biosniper)


Lesenswert?

Krapao schrieb:
>> Die Sinuspannung wird gleichgerichtet mit MUR160 Dioden
>> mein Oszilloskop einen korrekten Sinusverlauf am PIN-AN0 anzeigt.
>
> Hört sich für mich nicht korrekt an: Halbwellen würde ich am PIC-Eingang
> erwarten, keinen Sinus. vgl. Figure 43 im Datenblatt.
>

Es sind ja auch Halbwellen, das sieht man doch auf dem angehängten Bild.

>> GND des AD820 ist verbunden mit einem ICL7660 (Ladungspumpe, -4,8V).
>
> Warum? Der AD820 kann doch Single-Supply. Die entsprechende Schaltung
> ist ja als Applications Information im Datenblatt drin.
>

Damit der OPAMP Ausgang ganz auf 0 Volt runtergeht. Bei mir nähert er 
sich dadurch bis auf 0,3mV an 0Volt an. Die Ladungspumpe ist 
erforderlich, R2R bedeutet nicht, das der OPAMP-Ausgang 0Volt schafft, 
das wären dann z. B. nur 200mV, und das reicht mir nicht.

>> Ich habe den Verdacht, dass der Ausgang meines OPAMPs AD820
>> (Impedanzwandler) vielleicht mit einem Widerstand mit GND verbunden
>> werden sollte um da für eine Grundlast zu sorgen.
>
> Bei einem AVR würde ich bzgl. Pull-Down Lastwiderstand am Ausgang des
> OPA zustimmen. In den AVR Datenblättern steht drin, an welcher
> Quellenimpedanz der ADC messen möchte.

Was da in dem Datenblatt steht hat aber nichts mit einem Widerstand => 
GND zu tun. Damit ist der Innenwiderstand der zu messenden Spannung 
gemeint. Der Ladekondensator im ADC muss aufgeladen werden, ausserdem 
existieren dort Leckströme.

>> Ich habe den Verdacht, dass der Ausgang meines OPAMPs AD820
>
> Bei Verdacht auf Störung durch den AD820: Teste deine Schaltung halt mal
> ohne diesen Teil. Digitalisiert dein unbekanntes PIC-Programm eine
> gleichgerichtete und per Spannungsteiler angepasste Spannung gleicher
> Frequenz richtig, wenn du den Schaltungsteil mit dem Impedanzwandler
> nicht drin hast?

Kann ich nicht, weil sonst zu wenig Strom zur Verfügung steht, damit 
kann der ADC nicht korrekt messen. Der Spüannungsteiler hat 2M 
Widerstand, und 2k sind erlaubt.

von Andreas B. (biosniper)


Lesenswert?

Ich muss mich in einem Punkt korrigieren, habe gestern den 
Masseanschluss vom Oszilloskop dummerweise direkt an die Wechselspannung 
angeschlossen.

Jetzt aber an GND (also, nach dem Gleichrichter) und da zeigt sich das 
gleiche Bild wie das, welches auch der PIC misst.

Scheint also wohl alles in Ordnung zu sein. Muss eventuell irgendwas mit 
Remanenz des Eisenkerns des Trafos oder so zu tun haben.
Hatte ich auch schon gestern in Erwägung gezogen diese Idee.

von Andreas B. (biosniper)


Lesenswert?

Die Fehlstelle bei 10 ms entsteht direkt nach den 4 Gleichrichterdioden.

Das Eingangssinussignal vom Trafo weist diese Fehlstelle nicht auf.

Keine Ahnung warum.

Ein Lastwiderstand am Trafo vor dem Gleichrichter von 68 Ohm der 0,5 
Watt verbrutzelt hat daran auch nichts geändert.

Auch nachdem ich mein 12 V Schaltnetzteil abgezogen habe, mit dem ich 
die Platine versorge, bleibt der Fehler vorhanden.

Sind die Dioden (MUR160) dafür ungeeignet oder ist vielleicht eine 
defekt (kann ich mir eigentlich nicht vorstellen) ?

von Anja (Gast)


Lesenswert?

Andreas Bayer schrieb:
> Sind die Dioden (MUR160) dafür ungeeignet oder ist vielleicht eine
> defekt (kann ich mir eigentlich nicht vorstellen) ?

Nein die sind nicht defekt: das sind 1A Dioden die mit einem maximalen 
Leckstrom von 150 uA spezifiziert sind.
Außerdem haben diese eine Eigenkapazität in der Größenordnung ca 100pF.

Eine deiner Dioden scheint sich an den Datenblattwert zu halten die 
andere ist halt ein Streber (und damit besser als notwendig).

Wenn Du das ganze später direkt an 230 V hängen willst ist der 1,9M 
Widerstand hoffentlich entsprechend hochspannungsfest. Normale 
Widerstände sind nur für 100-200V Spitzenspannung spezifiziert.

Ich hätte für so eine Schaltung eher einen aktiven Gleichrichter mit 
entsprechend schnellen Dioden (1N4148/1N4448) aufgebaut.

Gruß Anja

von Andreas B. (biosniper)


Angehängte Dateien:

Lesenswert?

Danke für die Info, also, die Dioden sind ungeeignet für 2 MOhm.

Das mit dem aktiven Gleichrichter gucke ich mir mal an.

Habe jetzt mal eine einzelne 1N4007 eingelötet, statt der 4 MUR160.
Das Bild dazu ist im Anhang.

Gegen die zackigen Spannungsverläufe muss ich auch noch was unternehmen, 
ohne das Signal zu sehr zu verfälschen.

Mit den Widerständen gibt es keine Probleme ich habe 3 Stück in Reihe 
geschaltet.

1N4148 hat nur 100V Sperrspannung, soll ich da 3 Stück in Reihe schalten 
oder gibt es da auch was sperrspannungsfesteres?

von Anja (Gast)


Lesenswert?

Andreas Bayer schrieb:
> 1N4148 hat nur 100V Sperrspannung, soll ich da 3 Stück in Reihe schalten
> oder gibt es da auch was sperrspannungsfesteres?

natürlich nicht: Du sollst die nach deinem Pufferverstärker im 
Rückkopplungszweig des aktiven Gleichrichters schalten.

http://www.ti.com/lit/an/snla140a/snla140a.pdf#page=18

Gruß Anja

von Andreas B. (biosniper)


Lesenswert?

Ich habe es aber mit 400V Spitzenspannung zu tun, da weiss ich jetzt gar 
nicht wie ich das da ankoppeln könnte.

Das ist mir jetzt auch etwas zu kompliziert mit dem ganzen 
Verstärker-Klimbim. Ich wollte auch was einsetzen, was die Sinuskurve 
möglichst nicht verzerrt.

Ich habe jetzt eine brauchbare Diode gefunden, denke ich mal: 1N3595

1 nA Rückwärtsleckstrom und 150V Sperrspannung. Eine mit einer größeren 
Sperrspannung, bei gleichzeitig niedrigem Rückwärtsleckstrom konnte ich 
nicht finden.

Müsste ich nur mal testen, ob man davon 3 Stück in Reihe schalten kann, 
ohne das sie abbrennen. Es sind ja keine Avalanche-Dioden.

von Andreas B. (biosniper)


Angehängte Dateien:

Lesenswert?

Wollte euch mal zeigen wie es jetzt aussieht.

Ich habe an den Impedanzwandlerausgang 2k und danach 330p rangehängt. 
Über die Diode 1N4007 einen 100nF Kondensator.

Ich denke mal, ich bin zufrieden damit.

von Andreas B. (biosniper)


Lesenswert?

Habe jetzt einen BA159 (max. 1000 Volt) drin.

25 nA leakage current bei 25°C und 400 Volt.

Ausserdem ist er 500ns schnell.

Was besseres für Netzspannung konnte ich nicht finden, der reicht aber 
völlig.

http://www.datasheetcatalog.org/datasheet/dccomponents/BA157.pdf

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.