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();
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();