PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC 18F452 ADC misst 4..20mA Schnittstelle nicht genau



SteffenJ
04.08.2006, 13:15
Hallo zusammen,

ich habe ein Problem mit der AD-Wandlung beim PIC18F452. Ich möchte von einem Helligkeits-Sensor, der mit 24VDC versorgt wird, ein 4..20mA Signal einlesen. Die 4...20mA werden über einen 250Ohm Widerstand in eine Spannung von 1..5V gewandelt und die dann über AN3 gemessen. Nach der Messung soll der 10Bit Wert als PWM wieder ausgegeben werden.
Jetzt das Problem: Bei der Ausgabe des PWM-Signals schwankt dieses um ca. 1mV. Es sinkt sogar unter 1V (bis ca. 0,950V), was ja bei 4mA nicht möglich sein sollte und steigt dann auf 1,05V wieder an. Es sieht aus, als ob das PWM schwingen würde.
Das Ausgangssignal des Sensors ist stabil, sieht also erstmal so aus, als ob Probleme mit der internen Generierung des PWM geben würde. Jetzt habe ich aber statt den 4..20mA mal einfach die 5V Versorgungsspannung des PIC über einen Spannungsteiler mit 2x2kOhm gemessen: Er lieferte mit das gewünschte 50%PWM. dann mit 2k und 3k Ohm: auch das richtige Ergebnis.
Ich habe noch andere Werte, die mir der PIC über PWM ausgeben soll, auch diese stellt er ohne diese seltsamen Schwingungen ein.
Jetzt habe ich die Vermutung, dass es wohl irgendein Massproblem geben könnte, da ich den Masseausgang des 4..20mA Signals auf die Masse des PIC gelegt habe und da eventuell Ausgleichströme fliessen könnten. Anders kann ich mir das nicht erklären.
Könnte mir dabei vielleicht jemand weiter helfen?

Grüsse
Steffen

ps: Ach ja, ich hab die ADC-Messung auch mit LDRs gemacht, auch da sind diese Schwankungen nicht aufgetreten. Die sind nur beim 4..20mA-Signal.

Code zum Auslesen des ADC in C18:

OpenADC( ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_8ANA_0REF, ADC_CH0 & ADC_INT_OFF );

// Sensor einlesen
while (BusyADC());
SetChanADC(ADC_CH3);
while (BusyADC());
ConvertADC();
while (BusyADC());
dat.mw1=ReadADC();

kalledom
04.08.2006, 14:49
Hallo Steffen,
ohne Masse- / GND-Verbindung zwischen PIC und Sensor geht's nicht.
Der Null von den 24V muß an (PIC-) GND, möglichst an der Stelle, wo der 250 Ohm-Widerstand an (PIC-) GND geht, weil die 4...20mA ja wieder zu der 24V-Versorgung zurück sollen und nicht zum PIC.
Der PIC sollte einen Vielschicht-Kondensator 100nF und einen 10µF Tantal auf kürzestem Wege an seinen Versorgungs-Pins haben.
Vref für die Analog-Eingänge gehören an +5V oder eine andere Referenz.

SteffenJ
04.08.2006, 15:04
Hallo Karl-Heinz,

die beiden Kondensatoren, sind das Stützkondensatoren für die Eingangsspannung bzw. Referenzspannung?
Habe gerade die GND von den 24V an die Masse des PIC gehangen. Die Spannung des PWMs schwankt trotzdem zwischen 1,126 und 1,2 hin und her.
Kann ich da sonst noch was machen?

Grüsse,
Steffen

kalledom
04.08.2006, 22:27
Die beiden Kondensatoren sind zum Abblocken von Spitzen, damit der PIC nicht von was anderem gestört wird und die anderen nicht vom PIC; 100nF für die höherfrequenten Spikes, 10µF für evtl. Einbrüche beim Schalten.
Die Referenzspannung sollte auch einen 100nF nach GND haben, damit evtl. Spikes abgefangen werden.
Woher weist Du, daß die Spannung zwischen 1,126 und 1,2V schwankt ? Von einem Meßgerät ? Sind die 24V stabilisiert ? Sind die 5V stabilisiert ?
Kannst Du mit einem Scope messen, ob auf den Gleichspannungen irgendwie Störungen, Rauschen, Schwingen, etc. mit drauf ist ?
Kannst Du feststellen, in welchem Rhytmus die Spannung schwankt ?

SteffenJ
07.08.2006, 09:43
Hallo zusammen,

das mit den beiden Kondensatoren hat geholfen, die Schwingung ein bisschen zu dämpfen. Ich habe jetzt auch herausgefunden, wieso: Es gibt eine 0,33MHz Frequenz beim 4..20mA Ausgang des Sensors. Wenn ich nur an den Ausgang einen 250Ohm Widerstand anschließe, bemerke ich diese Schwingung auf dem DC-Signal. Ist das normal, dass das so schwingt? Muss ich dies immer mit einem Kondensator dämpfen?

Grüsse
Steffen

kalledom
07.08.2006, 13:05
Hallo Steffen,
es ist durchaus möglich, daß die Stromstärke des Sensors über PWM geregelt wird (was wird heute nicht mehr über PWM geregelt ?). Im Datenblatt sollte aber diesbezüglich was drin stehn oder ein Schaltungs- / Anschluß-Beispiel vorhanden sein.
Ob das normal ist, kann ich Dir nicht sagen; was ist normal ?
Was spricht dagegen, einen Sieb-, Glättungs- oder Sonstwas-Kondensator mit anzuschließen, der externe Störungen abblockt ? Oder möchtest Du die Helligkeit 100.000 mal pro Sekunde messen ? Dann stört der Kondensator natürlich, die 0,33MHz aber auch :-)

SteffenJ
07.08.2006, 16:57
Hallo Karl-Heinz,

habe jetzt einen 470nF-Kondensator parallel über den Widerstand geschalten. Die Glättung ist damit ausreichend. Hat mich nur einfach so gewundert, wo die Frequenz herkommen könnte.

Vielen Dank für Deine Hilfe,
Grüsse
Steffen