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

Temas similares

24/01/2015 #81

Avatar de callecuatro1976

ahora me pasaron este código pero no me funciona si me pueden dar una mano, gracias
25/01/2015 #82
Moderador

Avatar de D@rkbytes

Mira este sencillo programa que puede leer hasta 60V usando el PIC16F676 (Sólo dos dígitos y un 74LS47)
Es que con ese PIC es algo complicado usar más dígitos porque cuenta con pocos pines.
Si usaras otro PIC como el PIC16F88 sería más fácil agregar más dígitos.

El código que adjunto es muy sencillo y fácil de entender, lo comenté para que entiendas lo que hace.
Tal vez te sirva o al menos te dará una idea de como hacerlo con displays de 7 segmentos.

Nota:
Los programas que has subido contienen varios errores y el código se me hace muy extenso para el fin que se le va a dar.
25/01/2015 #83

Avatar de callecuatro1976

ok gracias voy a intentar hacerlo, estoy tratando de aprender y quiero ver distintas opciones , saludos

---------- Actualizado después de 7 minutos ----------

te consulto ya que no me encienden los display que puede ser estoy usando tu código y ejemplo
26/01/2015 #84
Moderador

Avatar de D@rkbytes

callecuatro1976 dijo: Ver Mensaje
Te consulto; ya que no me encienden los display. ¿Qué puede ser?
Estoy usando tu código y ejemplo.
Seguramente tienes algo mal conectado.
¿Ya revisaste bien las conexiones y usando los displays correctos? Son con ánodo común.
28/01/2015 #85

Avatar de callecuatro1976

Como decías, este pic es muy chico. Lo voy intentar hacer con el 16F883 con tres display de 7 segmentos.
Voy a empezar el código basado al que me pasaste y lo subo. Saludos.

---------- Actualizado ----------

Consulta: ¿Cómo puedo acomodar este código para tener un voltímetro con este pic y los display de 7 segmentos?
Ya intenté de todas formas y no me anda.
Archivos Adjuntos
Tipo de Archivo: rar voltimetro display 7 segmentos.rar (7,5 KB (Kilobytes), 46 visitas)
Tipo de Archivo: rar Voltímetro.rar (748 Bytes, 52 visitas)
28/01/2015 #86
Moderador

Avatar de D@rkbytes

callecuatro1976 dijo: Ver Mensaje
Consulta: ¿Cómo puedo acomodar este código para tener un voltímetro con este pic y los display de 7 segmentos?
Ya intenté de todas formas y no me anda.
Ya que cambiaste de PIC por uno con más pines, ahora es más sencillo aumentar los dígitos.
Entonces mira ahora este otro ejemplo con 3 displays de 7 segmentos de cátodo común.
Obviamente la lectura ahora puede llegar hasta 999 pero la dejé en 350 para no arriesgarse tanto.
De todas formas, manejar 350V ya es peligroso y ten en cuenta que este ejemplo es tan solo didáctico.

Ahora se controlan los displays directamente y ya no se hace uso del decodificador 74LS47.
Archivos Adjuntos
Tipo de Archivo: rar 16F883 Voltímetro 7 segmentos.rar (27,9 KB (Kilobytes), 78 visitas)
29/01/2015 #87

Avatar de callecuatro1976

voy a ver si le puedo adaptar un display de estos pero no encuentro la hoja de datos , dicen que son igual al display de 7 segmentos
Imágenes Adjuntas
Tipo de Archivo: jpg 1507121_880185318698585_3758976984595922565_n.jpg (23,0 KB (Kilobytes), 28 visitas)
Tipo de Archivo: jpg 10426108_880185275365256_8821362097466393620_n.jpg (22,2 KB (Kilobytes), 27 visitas)
29/01/2015 #88
Moderador

Avatar de D@rkbytes

callecuatro1976 dijo: Ver Mensaje
voy a ver si le puedo adaptar un display de estos pero no encuentro la hoja de datos. Dicen que son igual al display de 7 segmentos
Sin la hoja de datos va a ser algo complicado averiguar cómo funciona esa pantalla.

Por otro lado, la idea era hacerlo con displays LED de 7 segmentos.
De usar un display LCD, pues mejor usar uno estándar 16x2 y hasta el código es más sencillo.
Aparte, con LCD no se verá tan bonito como con displays LED de 7 segmentos.

En fin, si lo piensas hacer con esa pantalla, ya tienes tarea para rato.

Suerte.
29/01/2015 #89

Avatar de callecuatro1976

// Fórmulas de conversión.
voltaje = valor_adc;
voltaje *=400 ; // Voltaje requerido
voltaje /= 1023; // División entre los bits del conversor


modificando y poniendo el punto puedo modificar el voltaje ?
cambiando el divisor resistivo , ahí lo puse para 40 volt con un divisor de 100 k y 10 k estaría bien asi??
29/01/2015 #90
Moderador

Avatar de D@rkbytes

callecuatro1976 dijo: Ver Mensaje
// Fórmulas de conversión.
voltaje = valor_adc;
voltaje *=400 ; // Voltaje requerido
voltaje /= 1023; // División entre los bits del conversor
¿Modificando y poniendo el punto puedo modificar el voltaje?
Si quieres medir 40 voltios, entonces puedes usar el ejemplo anterior.
Y si es para el ejemplo reciente, puedes usar esta fórmula:
voltaje = (valor_adc * 40 / 1023);
Ya se puede hacer así porque ya no existirá desborde y también puedes cambiar la variable "voltaje" a int16.
Pero te sobrará un dígito y deberás acortar el programa y modificar el diseño para eliminarlo.
callecuatro1976 dijo: Ver Mensaje
Cambiando el divisor resistivo, ahí lo puse para 40 voltios con un divisor de 100 k y 10 k. ¿Estaría bien así?
No. Debes calcular el divisor de tensión para que en su punto medio entregue 5V máximo con 40V de entrada.
Por ejemplo: Cambia R1 por una resistencia de 68K, R2 por 8.2K y RV2 por 3.3K
RV2 lo debes ajustar para obtener una tensión de salida lo más próxima a 5.0 voltios y sin que exceda este valor.
También para eso está el diodo Zener que evita que la tensión supere los 5.1V y así proteger al PIC.

PD: Yo veo 400

Busca sobre divisores de tensión para que lo entiendas.
29/01/2015 #91

Avatar de cosmefulanito04

No es dividido 1023, es 1024 que es la cantidad de niveles.

No confundir con el nivel máximo que si es 1023, pensá que no estás incluyendo el nivel 0.
29/01/2015 #92
Moderador

Avatar de D@rkbytes

cosmefulanito04 dijo: Ver Mensaje
No es dividido 1023, es 1024 que es la cantidad de niveles.

No confundir con el nivel máximo que si es 1023, pensá que no estás incluyendo el nivel 0.
10 bits = 1111111111 = 1023

Si se realiza la división por 1024, el resultado se altera y ya no es mostrado el valor correcto.
29/01/2015 #93

Avatar de cosmefulanito04

Insisto, 1023 es el nivel máximo, pero la cantidad de niveles son 1024, 2^10=1024.

0, 1, 2,............, 1023 => total 1024 niveles.
29/01/2015 #94

Avatar de callecuatro1976

yo quiero medir con decimal osea que mida 14,5 13,4 uso esa formula en el ultimo ejemplo

voltaje = (valor_adc * 40 / 1023);
29/01/2015 #95

Avatar de cosmefulanito04

Lo importante es el nivel de cuantificación, no el nivel máximo.

Fijate, esta fórmula la saqué de la hoja de datos de un atmega8 (obviamente es universal):



Si despejás, obtenés que:



Entonces si usamos una tensión de referencia de 5V, la máxima lectura que podremos hacer será:



Y la resolución será:

29/01/2015 #96
Moderador

Avatar de D@rkbytes

cosmefulanito04 dijo: Ver Mensaje
Lo importante es el nivel de cuantificación, no el nivel máximo.
Comprendo, pero al utilizar la fórmula expuesta con el divisor 1023, se obtiene el valor deseado.
Sé que al usar la división por 1023 se obtiene un rango incompleto, pero no altera el resultado esperado. ADC_2.gif ADC_3.gif
Ahora, me gustaría saber una cosa:
¿Utilizando el factor 1024, qué fórmula se debe usar para mostrar el valor correcto, supongamos VCC = 20V y que el resultado no muestre 1 voltio menos?
29/01/2015 #97

Avatar de cosmefulanito04

D@rkbytes dijo: Ver Mensaje
Comprendo, pero al utilizar la fórmula expuesta con el divisor 1023, se obtiene el valor deseado.
Se obtiene el valor "deseado" mintiendo un poco la escala.

El ADC es capaz de medir hasta (2^(N)-1)*Vres, siempre el último escalón se le escapa.

D@rkbytes dijo: Ver Mensaje
Sé que al usar la división por 1023 se obtiene un rango incompleto, pero no altera el resultado esperado.
En realidad lo alterás un poco modificando la resolución.

Pero por ej. si pretendés calcular el error de cuantización y agregarle tooodos los errores que tenés en la medición, haciendo eso, estás aumentando el error de cuantización y por ende vas a obtener un equipo que mide peor.

D@rkbytes dijo: Ver Mensaje
Ahora, me gustaría saber una cosa:
¿Utilizando el factor 1024, qué fórmula se debe usar para mostrar el valor correcto, supongamos VCC = 20V y que el resultado no muestre 1 voltio menos?
No, si por ej. tomamos a 20V como referencia mediante un divisor de tensión a por ej. 5v, la resolución será la siguiente:



Entonces:



En realidad sin redondear dá 19,98...V, es decir justo el valor de la tensión de resolución, como modificaste un poco la escala, esa diferencia de tensión la tapás.
29/01/2015 #98
Moderador

Avatar de D@rkbytes

OK. También comprendo ese planteamiento, pero lo que se pretende es obtener el valor exacto.
Es decir; si hay 20.0 V a medir, yo quiero obtener esa lectura, o sea, los mismos 20.0V
Entonces, si el ADC a 10 bits me entrega 1023 como máximo:
20 * 1023 = 20460
20460 / 1024 = 19.98046875
Pero: 20460 / 1023 = 20
Y ese error de 0.01953125 al usar 1024 como divisor, es lo que no me agrada.
29/01/2015 #99

Avatar de JoaquinFerrero

La diferencia entre 20/1024 V y 20/1023 V es de 19 millonésimas de V, lo cual es asumible para la mayor parte de aplicaciones.

Entonces, si quieres que te dé 20 V al recibir un valor de 1023, debes partir de un valor de nivel de 20/1023 V.
30/01/2015 #100

Avatar de cosmefulanito04

Lo que debe quedar claro es que no vas a obtener el valor real en toda la escala y si vas a poder informar sobre esa tension final.

Y empeorás un poco la calidad de la medición aumentando el error de cuantización en una cuenta.

Por ej es como los multímetros y su fondo de escala, los que tienen por decir algo... 2000 cuentas, solo son capaces de medir hasta 1999 antes de pasar a otra escala, es decir a fondo de escala te informa por ej. 1,999 v.

Una cosa que se me pasó, está mal decir que "esta es la medición correcta" (o real como puse antes) como si fuera la definitiva, en realidad se debería hablar de "la medición más probable".
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.