PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensoren --> Auswerten



Redals1311
27.06.2008, 16:40
Habe eine frage,
Habe an einem Pic eine Sensorenspannung von 0 bis 5 V anliegen.
Diese muss ausgewertet werden.
Bei einer Reichweite von 10 cm gibt der Sensor eine Spannung von 5 V aus.

Nun möchte ich mit Hilfe des Pics 16f877, diese Spannung auswerten.




;************************************************* **********
;* Name : Datum: 05.03.2008 *
;* ------------ *
;* Funktion : sensor *
;* *
;* Autor : *
;************************************************* **********
LIST p=16F877 ; TAB - otherwise: unnecessary warning
#include <p16F877.inc>
;__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF
__CONFIG 0x3F39
ERRORLEVEL -302

ADW_1 EQU 0x31


Initialisierung:
bsf STATUS,RP0
clrf TRISB
bsf TRISA,0
bcf STATUS,RP0
clrf PORTB
movlw B'00000000'
movwf ADCON1

Main_1

; ADC-Vorbereitungen:
; ADC einschalten
bsf ADCON0, 0 ; ADON=1
; ADC speed für (fosc/32) MHz einstellen
bsf ADCON0, 7 ; ADCS1=1
bcf ADCON0, 6 ; ADCS0=0


Haupt:
clrf PORTB
bcf PORTB,4
clrf ADW_1
bcf ADCON0, 5
bcf ADCON0, 4
bcf ADCON0, 3
call Verzögerung_100us
bsf ADCON0, 2

warte_auf_ADW:

btfsc ADCON0, 2
goto warte_auf_ADW
movf ADRESH,W
movwf ADW_1

movlw D'100'
subwf ADW_1,W
btfss STATUS,Z
goto Test


goto Haupt

Test
bsf PORTB,4
call Verzögerung_1s
call Verzögerung_1s
call Verzögerung_1s
;call Verzögerung_1s
;call Verzögerung_1s

goto Haupt

#include "VERZ/Verz_A.inc"

end



Bei diesem Code wird immer wieder das Zero Flag überprüft. Da sich die Spannung immer um ein paar mV veränder und nie konstant ist, ist das Zero flag auch nur einen kurzen Moment gesetzt.
es sollte aber länger gesetzt sein. damit an einem Portpin ein High signal ausgegeben werden kann
WIe kann ich das realisieren bzw. den code umstellen

Gerko
30.06.2008, 10:38
Ich kenn die Befehle von dem PIC zwar nicht, aber wenn ich das Programm richtig verstehe fragst du ständig den Analogen Eingang ab. wie wäre es wenn du z.b eine Verzögerung einbaust und erst nach einer kurzen Zeit einen neuen Wert vom Sensor einließt?