Conversión analogica a digital
Whats the problem?
Se necesita programar un micro para que controle 2 valvulas, una de entrada (pump1) y una de salida (pump2), ademas de un motor (mezclador). El sensor sera un medidor de nivel, rango de medición 0-5v (0- 100% respectivamente). Se necesita que al arranque la valvula 1(pump1) este encendida y lo demas apagado, al pasar del 40% de la capacidad del tanque encende el motor, luego si pasa el 80% de la capacidad se apaga la valvula 1 (pump 1). Al cabo de un segundo apagar el motor y encender la valvula 2 (pump 2). Por ultimo si baja a 0% de la capacidad se apaga la valvula 2 (pump 2).
Programa en assembler para MPLAB
- LIST P=16F877A
- INCLUDE < P16F877A.INC >
- ORG 0000H
- BSF STATUS,RP0
- CLRF TRISB
- BCF STATUS,RP0
- MOVLW B'10011001'
- MOVWF ADCON0
- MOVLW B'00000001'
- MOVWF PORTB
- INICIO
- MEDIR1
- CALL ANALOG
- MOVLW .102
- SUBWF ADRESH,W
- BTFSS STATUS,C
- GOTO MEDIR1
- BSF PORTB,3
- MEDIR2
- CALL ANALOG
- MOVLW .204
- SUBWF ADRESH,W
- BTFSS STATUS,C
- GOTO MEDIR2
- BCF PORTB,0
- RETARDOS
- MOVLW .250
- MOVWF 20h
- L1
- MOVLW .250
- MOVWF 21H
- L2
- MOVLW .20
- MOVWF 22H
- L3
- NOP
- DECFSZ 22H
- GOTO L3
- DECFSZ 21H
- GOTO L2
- DECFSZ 20H
- GOTO L1
- BCF PORTB,3
- BSF PORTB,1
- MEDIR3
- CALL ANALOG
- MOVLW .0
- SUBWF ADRESH,W
- BTFSS STATUS,Z
- GOTO MEDIR3
- BCF PORTB,1
- GOTO INICIO
- RET_20
- MOVLW .33
- MOVWF 23H
- DECFSZ 23H
- GOTO $-1
- RETURN
- ANALOG
- CALL RET_20
- BSF ADCON0,GO
- BTFSC ADCON0,GO
- GOTO $-1
- RETURN
- END
Simulación en proteus para probar el codigo .HEX generado por la compilación del programa en MPLAB.