Ingenieria
Medición de nivel de tanque con sensor MPX10DP en cañería de bajada
Esquema:
GP2
AN0
PIC
12F675
Amplif
diferencial
sensor
GP1GP1:se conecta rele a bomba de agua
GP2: se conecta led indicador
Entrada: Pin An0 del PIC (rango de 2,5 v a 3 v)
A continuación se envía programa fuente en asembler:
list p=12f675;list directive to define processor
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
#include "p12f675.inc";processor specific variable definitions
#define LED GP2
#define BOMBA GP1
nivel_superiorH equ 0x20
nivel_superiorL equ 0x21
nivel_inferiorH equ 0x22
nivel_inferiorL equ 0x23org 0
bsf STATUS,RP0 ; select bank 0
movlw 11h ; 00010001 AN0 as analog input Fosc/8
movwf ANSEL
movlw B'00000111'
movwf OPTION_REG;
bcf TRISIO,LED ;LED pin output
bcf TRISIO,BOMBA ;BOMBA pin activación
bcf STATUS,RP0
movlw B'10000001' ; Right justified
movwf ADCON0
clrf GPIOloop:
call read_ADC ;read ADC
movlw 0x02
movwf nivel_superiorH
movlw 0x53
movwf nivel_superiorL
call compara_superior ;nivel superior tanque
movlw0x02
movwf nivel_inferiorH
movlw 0x0B
movwf nivel_inferiorL
call compara_inferior ;nivel inferior
goto loop
read_ADC:
bcf STATUS,RP0
bsf ADCON0,GO ;inicia conversion
WaitADC:
btfsc ADCON0,GO
goto WaitADC ; wait ADC finalize
nop
nop
nop
bcf PIR1,ADIF ; clear flag
returncompara_superior ;compara unsigned 16-bit
bcf STATUS,RP0
movf ADRESH,w
subwf nivel_superiorH,w
btfss STATUS,C ;nivel>limite superiorH..zc,
;nivel<limite superiorH .zC,...
Regístrate para leer el documento completo.