Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

27/12/2010 #1


Voltímetro con el ADC del PIC
Buenas gente.. estaba buscando algo simple de hacer con un pic.. para hacer un voltimeto digital..

por la web encontre este que es muy sencillo y muestra el voltaje.. en un LCD

http://electronico-etn.blogspot.com/...pic-y-lcd.html

alguien podria darme la formula o que cambio debo realizar en el codigo para en vez de medir de 0 a 5+ volts como lo hace.. que sea de 0 a 6volts????

saludos..
28/12/2010 #2


Hola, el cambio en código lo tendrías que hacer en esta parte: // p = 5.0 * q / 1024.0; antes de esto tendrías que realizar un acondicionamiento de la señal de entrada porque en 6V estarías sobrepasando el Vmax de entrada al convertidor AD
28/12/2010 #3


1024
si si.. de hecho eso es lo que necesito saber como se calcularia :S
28/12/2010 #4


1024
en realidad.. ncesito armar el circuito para monitorear un pack de baterias AA de 4,8 v per cuando las cargo a full en el tester.. marcan unos 5,6volts..

segun lei por ahi.. las pilas AA recargables son de 1,2 v cuando estan cargadas.. llegan a 1,4v y bueno aqui el dilema.. alguna ayuda?
28/12/2010 #5


Podrías calcular un circuito con amplificadores operacionales para acondicionar la señal de entrada, es una manera simple.
28/12/2010 #6

Avatar de Americo

quieres medir hasta 6 voltios... ??
yo lo haria recontra sencillo, a la entrada del pic realizar un divisor de voltaje por ejemplo a la mitad usando 2 resistencias del mismo valor. ahora bien...en el lcd te dara el valor de 3 voltios cuando midas 6 voltios... esto se soluciona facilmente con modificar el codigo que te dijo el amigo 1024 //p = 5.0 * q / 1024.0;
tambien se lo haria con operacionales.. solo depende del tratamiento que le daras

saludos
28/12/2010 #7


bien muchas gracias... si he visto que hay alternativas asi.. modificando el codigo.. agregando divisores.. que se yo..

el tema es que ese dato 5*q /1024 parte de alguna formula.. y en este caso esta calculado para 5v.. y anda perfecto en proteus.. si yo cambio el 5 por el 6.. mide cualquier cosa.. me podrias decir como es el tema de agregar unas resistencias.. o como sugeris vos?


estoy perdido con esto :S

ya creo q no lo hago con pic y termino armando uno con el lm3914

jajja porfas

algun esquemita -..
28/12/2010 #8


La parte de 5*q /1024 tiene que ver con el numero que entrega el convertidor AD(q), que en este caso esta configurado para una conversión de 10bits(0<q<1024) entonces para mostrar el valor de voltaje en el LCD se aplica esa operación
29/12/2010 #9


gracias por los aportes.. pero alguien me puede decir como es la formula?? como se calcula para 6 volts..?? como agrego resistencias como hago algo? ya se que modificando eso se varia la medida.. pero no se coo buscar info sobre eso :S
29/12/2010 #10


Monta dos resistencias de 10k en serie, asi:
ver imagen adjunta.

y en el codigo cambia la formula quedando asi:

p = 10.0*q/1024;

Y te voy a explicar de donde sale la forma.
Primero sabemos que el valor que entrega el read_adc(); es un numero entero entre 0 y 1024 dependiendo del valor de voltaje que halla en el pin. Recordar que este voltaje va de 0 a 5 v.

Entonces haciendo una regla de tres simple, donde q es el valor leido del adc.
1024 → 5v
q → p
asi tenemos que p = 5.0*q/1024

Al poner las dos resistencias en serie lo que hacemos es un dividor de tension, (http://es.wikipedia.org/wiki/Divisor_de_tensi%C3%B3n), como las dos resistencias que utilizamos son iguales, el valor del voltaje en la pin del pic sera la mitad del valor que se este midiendo.

Asi podemos formar de nuevo nuestra formula.
Cuando se le aplican 10v, tenemos 5 en el pin y el valor del adc sera de 1024.

10v → 1024
p → q

de nuevo tenemos que p = 10.0*p/1024;

Espero haber sido lo suficientemente claro,

Saludos
Imágenes Adjuntas
Tipo de Archivo: png Selección_026.png (18,6 KB (Kilobytes), 863 visitas)
29/12/2010 #11


excelente.. te pasaste.. muchisimas gracias!!! te debo una cerveza loco!
jaja

feliz año para todos
20/08/2011 #12


Voltimetro hasta 100vdc
Muchas gracias MVB, io hice el ajuste necesario para hacerme un voltimetro de 0 - 100Vdc.
Les dejo los archivos para Uds del voltimetro, por si acaso qieren hacerle modificaciones o mejor aun implementar ademas un amperimetro.
El extracto contiene:
- Archivo *.bas del programa
- Archivo *.HEX
- Esquematico en ISIS PROTEUS
Nota: el compilador que estoy usando es el PROTON IDE DEVELOPMENT SUITE. Ademas deben tener instalado el MPLAB, por si quieren hacer nuevas modificaciones.
Gracias.
Archivos Adjuntos
Tipo de Archivo: rar VOLTIMETRO.rar (16,5 KB (Kilobytes), 2370 visitas)
27/11/2011 #13


hola amigos disculpa

1 tu voltimetro mis respetos
2 crees q sea capas de soportar la bateria de un auto
dijo por el amperaje o tengo q agregarle otra cosa


saludos
27/11/2011 #14


No importa el amperaje de lo que se mide, siempre y cuando el voltaje este en el rango todo estara bien.
Eso si, a mayor amperaje mas cuidado debes tener pues si hay un corto o algo similar en la medicion las consecuencias pueden ser mayores.

saludos.
27/11/2011 #15


para eso un fusible o me equivoco
28/11/2011 #16


hi amigo adiktofer disculpa lo tendras en c es que lo quiero modificar pero mi mplab me marca q todo es error te lo agradeceria
03/12/2011 #17


hola disculpen me podrian ayudar pasar este programa para el pic18f4550

se los agradeceria he tratado pero no me funciona


#include <16f877a.h>
#use delay(clock=16000000)
#fuses xt,put,nowdt,protect,nobrownout,NOLVP,NOCPD
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09

#include "lcd.c"

char temp;

void main(){

set_tris_a(0x01);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_e(0x00);
porta = 0x00;
portb = 0x00;
portc = 0x00;
portd = 0x00;
porte = 0x00;

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);

lcd_init();

for(;{
temp = read_adc();
lcd_putc("\f Pic Termometro ");
printf(lcd_putc,"\n %d%cc",temp*2,0xdf);
delay_ms(1000);
}
}
03/12/2011 #18


Tenes que hacer un divisor resistivo para que cuando entren 6volts te lo deje en 5v que es lo maximo que podes medir con el pic. Despues modificas el codigo asi... p = 6.0 * q / 1024.0;

apocalypsys dijo: Ver Mensaje
hola amigos disculpa

1 tu voltimetro mis respetos
2 crees q sea capas de soportar la bateria de un auto
dijo por el amperaje o tengo q agregarle otra cosa


saludos
No tiene nada que ver el amperaje si estas idiendo voltaje yo tengo hecho un voltimetro en mi moto con un 16f819 y anda bien. Solo tenes que hacer un divisor resistivo de acuerdo al voltaje que quieras medir, al pic nunka deben llegar mas de 5v
03/12/2011 #19


hol amigo como que lo compilastes el del voltimetro
04/12/2011 #20


me podrian ayudar a cambiar el puerto de la señal de entrada de este programa en lugar de ra0 sea ra1 por favor me urge y como pudo unir dos programas para el mismo pic se los agradeceria


#include <16f877a.h>
#fuses hs,nowdt,noput,nolvp
#device adc=8
#use delay(clock=20M)
#define LCD_DATA_PORT getenv("SFR:PORTB")
#define LCD_ENABLE_PIN PIN_B2
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#include <lcd.c>

int8 q;
double p=0;
//****************** defino funcion ADC ***************
void modulo_adc();

//***************** programa principal ***************

void main(){

SETUP_ADC_PORTS(AN0); // defino el pin analogo a usar
setup_adc(ADC_CLOCK_INTERNAL); // define el tipo de clock a usar
lcd_init(); // inicializo el lcd

while(true){
modulo_adc();


lcd_gotoxy(4,1);
printf(lcd_putc,"VOLTS:%1.3f",p);



}
}
//*********** funcion ADC****************

void modulo_adc()
{ set_adc_channel(0);
delay_us(20); // tiempo de conversion
q= read_adc(); // lectura del valor
p=50.0*q/127.5; // conversion adc
}
Tema Cerrado
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.