Buenas
Lo prometido
Este es el programa de un voltimetro de 0 a 50 volts.-
Se ensayo linealidad con un tester fluke 189 y la mantiene.-
Las conexiones son las siguientes:
entrada de tension: a través de un divisor resistivo formado por
una resistensia de 47k en serie con un preset de 10k,del punto
medio del preset se conecta a RA0 poniendo en serie una resistencia
de 1k como proteccion de la entrada y un capacitor de 1micro en
paralelo a masa como filtro de entrada.-
A puerto B van conectados 3 displays de 7segmentos catodo comun
coincidiendo los segmentos de a-f con b0 a b6 (conectar en serie
con los segmentos resistencias de 470ohm)
Cada catodo comun va conectado al colector de transistores 2a238
cuyos emisores van a masa,las bases de los transistores se
conectan a través de resistencias de 10k al portc,0 para el
digito menos significativo (decimas de volt),portc.1 para unidades
de volt y portc,2 para decenas de volt.-
Espero que alguien dibuje el esquematico y/o el pcb.-
Saludos
Jorge
"****************************************************************
"* Name : voltim_876.BAS *
"* Author : Jorge ansuini *
"* Notice : Copyright (c) 2004 jorge ansuini *
"* : All Rights Reserved *
"* Date : 27/02/2004 *
"* Version : 1.0 *
"* Notes : voltimetro com display multiplexado y 16f876 *
"* : FUNCIONA *
"****************************************************************
define osc 8
digit1 VAR Byte
digit2 VAR Byte
digit3 VAR Byte
veces var byte
cuenta var word
cuenta2 var word
intermedia VAR word
symbol digi1=portc.0
symbol digi2=portc.1
symbol digi3=portc.2
symbol digito=portb
TRISA = %11111111
ADCON1 = %10001110
ADCON0 = %11000101
TRISB = %00000000
TRISC = %00000000
inicio:
cuenta=0
for veces= 0 to 49
ADCON0.2 = 1
no_termino:
gosub display
IF ADCON0.2 = 1 Then no_termino
intermedia.highbyte = ADRESH
intermedia.lowbyte = ADRESL
cuenta=intermedia+cuenta
next veces
cuenta2=cuenta
gosub display
goto inicio
end
display:
digit3 = cuenta2 dig 4
digit2 = cuenta2 dig 3
digit1 = cuenta2 dig 2
LOOKUP2 DIGIt3,[63,6,91,79,102,109,125,7,127, 111],digito
high digi3
pause 1
low digi3
LOOKUP2 DIGIt2,[63,6,91,79,102,109,125,7,127, 111],digito
high digi2
pause 1
low digi2
LOOKUP2 DIGIt1,[63,6,91,79,102,109,125,7,127, 111],digito
high digi1
pause 1
low digi1
return