Forum: Mikrocontroller und Digitale Elektronik PIC16F ADC_Read verfälscht Signal


von Markus K. (numax)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe einen PIC16F1788 mit dessen ADC ich eine Spannung messen will.
Nun ist es so, dass bei jedem lesen des Wertes die Spannung verändert 
wird (siehe Bild).
Woran liegt das und kann ich das Problem beheben?

Da ich mit relativ hoher Frequenz den Wert lese und sich die Spannung 
schnell ändert wäre ein Kondensator zum glätten nicht möglich.

Ein externer ADC mit digitaler Schnittstelle (z.B. MCP3421) wäre 
möglich, aber nur wenn es keine andere Lösung gibt. Aus Platz und 
Kostengründen.

Programmiert wurde das ganze mit MikroC.

Jemand einen Vorschlag?

Gruß
Markus

von Markus K. (numax)


Lesenswert?

Zur Erklärung:
Das Signal was im Bild zu sehen ist, wird nur in dem Moment erzeugt wenn 
der PIC den Analogwert liest. Kommentiere ich den ADC_Get_Sample(2) 
befehl aus, ist das Signal wieder normal.

von Timmo H. (masterfx)


Lesenswert?

Spannungsquelle zu hochohmig?
Beim ADC ist ein Sample and Hold vorgeschaltet. Sprich da wird ein 
Kondensator aufgeladen und belastet in dem Moment die Spannungsquelle.
Wenn du an der Quelle nichts ändern kannst (z.B. Widerstände des ggf. 
vorgeschalteten Spannungsteilers verkleinern) und dich das Verhalten 
stört kannst du dir mit einem OPV behelfen (Impedanzwandler). Vielleicht 
hilft auch schon ein kleiner Kondensator parallel zu deinem ADC-Eingang 
gegen GND.

: Bearbeitet durch User
von TK (Gast)


Lesenswert?

Hallo Markus,

gibt es zu diesem Bild auch ein Schaltplan, aus dem hervorgeht, wie 
genau Du die Spannungsquelle an den PIC angeschlossen hast?

Gruß
TK

von Markus K. (numax)


Lesenswert?

Das Signal kommt aus einem OP (Transimpendanzwandler) an dessen Ausgang 
ein 51 Ohm Widerstand hängt.
Diesen zu verkleinern wird wahrscheinlich nicht viel bringen ihn zu 
vergrößern verändert nichts.

Ein paralleler Kondensator sollte dann denke ich bei einigen pF liegen, 
oder?

Die Spannungsquelle bekommt dieselbe Versorgungsspannung wie der PIC 
(5V). Die Signalleitung des Sensors ist direkt an den Eingang des PIC's 
angeschlossen.

: Bearbeitet durch User
von TK (Gast)


Lesenswert?

Ja bekommst Du denn ein falsches Ergebnis geliefert?
Ich vermute mal folgendes (abgeleitet aus dem Bild):
- Dein Spannungswert liegt auf ca. 2.2V
- bei 30us wird gesampelt (der int. C schaltet sich zu)
- nach ca. 22us ist die interne Wandlung zu Ende (C wird abgekoppelt)
- der Wert steht im Register
Stimmt der Wert im Register mit der zu erwartenden Spannung überein?

Gruß
TK

von Markus K. (numax)


Lesenswert?

Der Wert im Register entspricht nicht den genannten 2,2V, sondern 
schwankt.

Der Sensor erzeugt eine Wechselspannung die um 2,5V als "Nulldurchgang" 
wechselt. Die Differenz zwischen Spitzenspannung und "Nulldurchgang" 
muss ich messen um daraus den Effektivwert zu berechnen. Wenn der Sensor 
keine Wechselspannung erzeugt, sondern ein Gleichspannungssignal von 
2,5V liefert müsste der Effektivwert 0 sein, dieser schwank allerdings 
was durch die im Bild gezeigte abfrage an Eingang erzeugt wird.

von TK (Gast)


Lesenswert?

OK - jetzt mal mehr Infos:
1) Du hast ein Wechselsignal mit einem 2.5V DC Offset - richtig?
 Wie hoch ist die maximale Frequenz und der Spannungsanteil des Signals?
2) Wie schnell ist Dein ADC im PIC eingestellt (Samplerate, 
Auflösung...)?
3) Was heißt: Der Wert schwankt? (um wieviele Bits?)

Du berechnest den Effektivwert über eine gemessene Periode?
Was kommt denn in dieser Berechnung mit dem uC raus, und wie groß ist 
dann der Fehler zum realen, berechneten Wert?

Gruß
TK

von Torben K. (tokuhila)


Lesenswert?

Wie ist der ADC konfiguriert? Der S&H Kondensator wird nach 2 TAD Zyklen 
abgekoppelt. Dass dein Signal so beeinflusst wird deutet auf ein zu 
hochohmiges Signal hin.

Sollte die Sample-Rate nicht zur Taktfrequenz des uC passen (siehe DB) 
kommt es zu verfälschten Messergebnissen, d.h. auch eine zu geringe 
Sample-Rate führt zu falschen Ergebnissen!

: Bearbeitet durch User
von Dieter W. (dds5)


Lesenswert?

Torben K. schrieb:
> Dass dein Signal so beeinflusst wird deutet auf ein zu
> hochohmiges Signal hin.

Sehe ich auch so. Hinter einem OPV und 51Ohm kann das Signal nicht so 
verkrotzt sein, da ist noch was anderes faul.

von TK (Gast)


Lesenswert?

Daher auch meine bescheidene Frage nach dem Schaltplan

Gruß
TK

von Markus K. (numax)


Lesenswert?

Soo,
ich habe nochmal etwas nach anderen Ursachen gesucht und habe das 
Problem lokalisiert.

Es liegt an meiner Spannungsversorgung.

Betreibe ich das ganze am Labornetzteil schwankt der Messwert um bis zu 
4 Bits, also zwischen 4 und 8 Bit, was durchaus rauschen oder 
Schwankungen vom Netzteil sein können.

Wenn ich das ganze aber wie bisher an einem fertigen Step-Up-Regulator 
betreibe der aus 3 AA Batterien 5V erzeugt, liegt die Differenz zwischen 
den Spitzenspannungen bei 110-120 Bits.

Nun muss ich mich um eine andere Spannungsversorgung bemühen, aber dann 
funktioniert alles soweit.

Trotzdem vielen Dank für die Hilfe.

von Torben K. (tokuhila)


Lesenswert?

Das liegt eher an einem schlechten Schaltungsdesign

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.