Liste der Anhänge anzeigen (Anzahl: 2)
ADCIN Problem - Meßwerte ändern sich automatisch
Hallo,
ich habe einen PIC 16F876 bei dem ich einen Digitaleingang zum setzen von 4 Meßwerten nutze. Liegt an dem Setzen-Port ein high an, dann werden die ersten 4 AD-Wandler abgefragt und der Wert in jeweils einer Variable gespeichert. Dann werden kontinuierlich die Werte an den AD-Wandlern gemessen und wenn sich dort der Meßwert ändert, dann wird ein Ausgabeport auf high gelegt.
Das Programm funktioniert auch ca. 30 Sekunden problemlos, aber dann hat der AD-Wandler auf einmal einen anderen Meßwert und der Alarm wird ausgelöst. Die Eingänge sind alle per Pull-Down auf Messe gezogen und werden nicht verändert.
Meine Vermutung ist, dass im Programm noch irgendwelche Vorgaben fehlen (z.B. interne Referenzspannung oder so etwas...), aber ich habe schon in allen mir bekannten Beispielen und Anleitungen nachgelesen, jedoch nichts passendes gefunden.
Die Schaltung dient zum Erkennen von einer Überlastung an 4 Gleichstrommotoren. Diese werden über H-Brücken betrieben, an einem MosFet wird die abgefallene Spannung gemessen, über einen OP verstärkt und der Pic wertet dann die Änderung aus und gibt einen Alarm an den Hauptcontroller.
Hat jemand eine Idee, was in dem Programm noch falsch ist?
Mfg,
Thorsten
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
habe die Sample-Zeit hochgesetzt, das brachte jedoch keinen Erfolg.
Dann habe ich mal ein kleines Testprogramm geschrieben. Dieses liest Kanal 0-3 vom AD-Wandler ein und wenn ein Wert gemessen wird, der über 0 liegt (Eingange sind mit Pulldown an Masse), dann leuchtet am Ausgang eine entsprechende LED.
Dieses Programm (Beispiel 1) funktioniert einwandfrei.
Aber dann kommt das Problem. Im 2. Beispiel habe ich bei Kanal 1 dann die Abfrage so geändert, dass nur bei ca. 2,5V am Eingang die entsprechende LED leuchten soll. Alle anderen Kanäle sind wie im 1. Beispiel. Lege ich dann an einen Eingang eine Spannung > 0 Volt an, dann leuchten die 4 LED´s der einzelnen Kanäle, wie sie gerade Lust haben. Ich habe da noch keine Gesetzmäßigkeit feststellen können.
Kann dieses Problem nicht verstehen. Ich glaube fast, dass da im Compiler ein Fehler ist.
Hat jemand hierzu vielleicht eine Idee?
Mfg,
Thorsten Wurm