Professional Documents
Culture Documents
R1 = 90K (90000 )
R2 = 10K (10000 )
Vin = 12v
10000
( 12)
1.2v
90000 + 10000
Como vemos hemos transformado 12v en 1.2v asi el
microcontrolador podria interpretar dichas lecturas sin ningun
problema y tener nuestro resultado.
R1 = 100K
R2 = 10K
Vin = 12v
Vout = 1.09v
Un resultado muy disparejo al esperado que es 1.2v, mi idea fue la
siguiente, armar en proteus el siguiente esquema:
LCD1
LM016L
C1
C2
33pF
33pF
13
14
100K
2
3
4
5
6
7
+88.8
D1
R4
1N4733A
10K
Volts
8
9
10
R3
10k
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
U1
CRYSTAL
R2
4
5
6
1
2
3
V SS
V DD
V EE
X1
RS
RW
E
R2(1)
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
PIC16F877A
DEFINE OSC 4
; Define el oscilador
DEFINE LCD_RSBIT 2
; Bit puerto C2
; Definir E puerto C
DEFINE LCD_EBIT 3
; Bit puerto C3
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
; Usar el clock RC de AD
TRISA = 1
TRISA.0 = 1
LCDOUT $FE, 1
; Limpiar la LCD
PAUSE 500
INICIO:
; Bloque de rutina
ADCIN 0, vin
; PAUSA
GOTO INICIO
; Volver al inicio
END
; Fin
Como se observa, as pude determinar que el valor para la ecuacin que iba a
formular era el 1152, proced a la siguiente formula:
Vout = Vin / 1152
Ejemplo: Vout ser una variable que nos mostrara el resultado final que es el
voltaje, Vin es la variable de los datos ledos de RA0 y lo dividimos sobre
1152.
Vout = 7168/1152
Vout = 6.22 => 6v
Todo lo anterior mostrado fue para poder calcular y sacar la ecuacin exacta
para tener los resultados esperados, el inconveniente es que solo puede medir
de 0v a 29v, de all en adelante empieza a tener mrgenes de error.
Ahora vamos a disear nuevamente el programa pero le vamos a incluir la
formula y as obtener la conversin:
DEFINE OSC 4
; Define el oscilador
; Bit puerto C2
; Definir E puerto C
DEFINE LCD_EBIT 3
; Bit puerto C3
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
TRISA = 1
TRISA.0 = 1
LCDOUT $FE, 1
; Limpiar la LCD
PAUSE 500
INICIO:
; Bloque de rutina
ADCIN 0, vin
; PAUSA
GOTO INICIO
; Volver al inicio
END
; Fin
LCD1
C1/CLKIN
C2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
0/AN0
1/AN1
2/AN2/VREF-/CVREF
3/AN3/VREF+
4/T0CKI/C1OUT
5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
0/AN5/RD
RC1/T1OSI/CCP2
1/AN6/WR
RC2/CCP1
2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
LR/Vpp/THV
RC5/SDO
RC6/TX/CK
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
RS
RW
E
4
5
6
1
2
3
VSS
VDD
VEE
LM016L