Autor Tema: ADC y LCD  (Leído 1919 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
ADC y LCD
« en: 07 de Abril de 2023, 21:05:26 »
Buenas noches, me ganó el ADC no lo puedo configurar, me pueden dar una mano. Les subo los archivos para que lo vean si tienen tiempo. Lo pude configurar pero la lectura me sale siempre cero. 
* Desktop.zip
(31.65 kB - descargado 107 veces)

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:ADC y LCD
« Respuesta #1 en: 07 de Abril de 2023, 23:06:51 »
perfecto amigo quique, como comentaba el amigo fer en el post anterior después de tu lectura analógica tienes que poner el bloque de convertir el registro descarga a bcd para que puedas verlo en el lcd, ponle ese bloque y checa que hace tu programa.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:ADC y LCD
« Respuesta #2 en: 07 de Abril de 2023, 23:58:44 »
La conversion analogica digital tiene la opcion convertir a BCD automáticamente, se puede usar esa opción?

 

* Conversion A-D.png
(10.38 kB, 787x452 - visto 225 veces)

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:ADC y LCD
« Respuesta #3 en: 08 de Abril de 2023, 02:20:02 »
pero por supuesto amigo quique, aunque si pudieras probar las dos maneras  para que cheques si hay alguna diferencia e igual en el asm que genera cheques pero si también se puede usar.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ADC y LCD
« Respuesta #4 en: 08 de Abril de 2023, 04:32:40 »
Quique,
Lo que también te puede estar pasando es que en tu conversion al ser de 10 bits el valor del registro descarga podrá tener un valor de 0 a 1023.

Evidentemente este valor puede no ser descriptivo para ti. El micro solo lee valores de 0 a 5V. Por lo tanto si necesitas tener una correspondencia entre el valor del conversor ADC y el valor real de la entrada en voltios, debes si o si hacer una conversión.

Esto se realiza con el uso del bloque escalar que se encuentra dentro de las operaciones matemáticas. Con el uso de este bloque ya puedes tener un valor real de la conversión realizada ya sea en voltios, temperatura, etc.

Para finalizar después de este bloque de escalado ya si debes usar el bloque de convertir en BCD y después asignar los valores al dispositivo LCD como ya se te ha indicado.

F.
Todos los días se aprende algo nuevo.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:ADC y LCD
« Respuesta #5 en: 08 de Abril de 2023, 09:19:25 »
Bien, estoy intentando con la función escalar, hay alguna fórmula para convertir los valores de entrada a los valores que se muestran en el lcd?. Les pido que disculpen las preguntas pero sobre este tema no he podido encontrar nada en la red.

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:ADC y LCD
« Respuesta #6 en: 08 de Abril de 2023, 15:18:02 »
buenas amigo quique, en la red hay mucha info y como dice el amigo fer lo mejor es hacer la conversión o escalarlo, pero si te fijas en la imagen que mandaste dice medir voltaje, niple ya tiene esa función sin que hagas algún otro movimiento solo activa la casilla y listo a y como esta en tu lcd recuerda que de izquierda a derecha esta primero centenas, decenas y unidades no unidades, decenas y centenas como tu las tienes, te sugiero que lo hagas igual que la otra vez de las 2 maneras escalando y con la casilla para que cheques.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:ADC y LCD
« Respuesta #7 en: 08 de Abril de 2023, 16:24:38 »
Hola TSU, si hay algo en la red te agradecería que me pases la información, en cuanto a la lectura necesito medir valores entre 10 y 0 volts, pensé en reducirlo con divisor resistivo justo a la mitad para que entren al PIC de 5 a 0 volts. Los valores a medir son con 2

decimales, por eso puse en el lcd unidades de un registro y centenas y decenas del otro. Al parecer eso anda lo que no puedo es ver en el lcd lo mismo que estoy leyendo o sea tensiones entre 10 y 0 volts. Activando la casilla medir voltaje se pone mucho peor, no le echo la

culpa a Niple seguramente soy yo que no le encuentro la vuelta. Aunque es muchiiiiisimo mas facil que el assembler tiene sus cosa y no hay mucha documentación, o por lo menos yo no la tengo. Gracias nuevamente a Uds. por ayudarme. Lo que me parece extraño es que

nadie haga ninguna pregunta, parece que soy el único que no sabe del tema.

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:ADC y LCD
« Respuesta #8 en: 08 de Abril de 2023, 18:13:18 »
ok creo ya se por donde vas, aquí te recomiendo que uses un hardware para ese propósito y al final la lectura será diferente para visualizar los 10 volts, aquí si necesitaría saber que tanto conocimiento tienes en electrónica para mas o menos dar una solución ya que con niple pues solo seria en el apartado de leer de 0 a 5 pero fuera del micro seria acople de 0 a 10

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ADC y LCD
« Respuesta #9 en: 08 de Abril de 2023, 18:59:56 »
quique,
Si quieres medir valores de 0 a 10V vas a tener que utilizar algo de hardware externo para limitar los valores a medir entre 0 y 5V. Por ejemplo para probar puedes usar 2 resistencias de 1K usadas en serie de forma que el punto medio lo lleves a la entrada dl pic. Un extremo de la serie lo llevas a 0V y el extremo libre de la serie lo llevas al sensor donde mides los valores de 0 a 10V. Con esto ya lo limitas a a un máximo de 5V (esto no es lo mas fiable pero para probar creo que valdrá).

Luego en Niple colocas el bloque de conversor ad y selecciona el valor de la conversión de 10bits (necesitas que el registro donde se guarde la conversión sea de 16bits). Con esto cuando el sensor entregue 0V el convertidor leerá 0 y cunado tu sensor marque 10V(5V en el pic) el convertidor leerá 1023.

A continuación, debes de insertare el bloque de escalar dentro de los valores de origen seleccionas 0 y 1023 y en la escala de destino eliges  como valores 0 y 1000. Aquí ya puedes hacer 2 opciones o marcar que el resultado se guarde en BCD o bien después de insertar el bloque de escalar añadir el bloque de convertir a BCD. Con esto, una vez en BCD ya tienes el valor de 1000 descompuesto en: unidad de mil(1), centena(0), decena(0) y unidad(0) y por tanto puedes representar ya el valor en el display LCD.

Ahora bien, como quieres ver valores decimales(con 2 dígitos) a la hora de representar el valor BCD en el LCD debes de realizarlo de la forma siguiente:
unidad de mil--centena-- ahora debes de añadir un carácter fijo (punto o coma según tu gusto)--decena --unidad.

De esta forma cuando tu valor a leer sea por ejemplo  7,64 el convertidor estará leyendo 782 que una vez escalado el valor será de 764 y por tanto en el display verías la cifra 07.64 (el 0 de las unidades de mil puedes decir dentro de la configuración del mensaje del LCD que no se muestre si el valor es un 0).

Espero que esta explicacion te sirva.

F.
Todos los días se aprende algo nuevo.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:ADC y LCD
« Respuesta #10 en: 08 de Abril de 2023, 19:25:09 »
Gracias Fermín por la explicación detallada, ya está funcionando perfecto en Proteus, la única duda que tengo es de que manera calculaste el número del escalado, en este caso (1000).
« Última modificación: 08 de Abril de 2023, 19:53:23 por QUIQUE62 »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ADC y LCD
« Respuesta #11 en: 08 de Abril de 2023, 20:33:50 »
Quique,

No calcule nada de ninguna forma. simplemente si tienes que leer 10V  y además con 2 decimales y eso es lo que tienes que representar pues listo. 10 mas el punto y los dos decimales 00 equivalen a 1000.

Ese es valor máximo que quieres leer cuando tu entrada tenga el valor máximo y por tanto en adc tendrá el valor máximo 1023. Así que basta de decirle que cuando el máximo tenga 1023 (10V a la entrada reducidos a 5V) pues que ese valor 1023 sean 1000 de acuerdo a lo explicado en el párrafo anterior.

Cualquier valor intermedio se corresponderá con la relación de escalado indicado en el post anterior. Como es una relación reductora: 1000/1023=0.97751.
Por tanto si quieres saber cualquier valor intermedio del ad te basta dividir el valor de la entrada por 0.97751 y si quieres saber el valor real de la conversión sabiendo el valor del conversor ad te basta con multiplicar el valor leido del ad por 0.97751.

Los valores intermedios del conversor puedes verlos directamente en el bloque del escalado si mueves el cursor del origen a la derecha de la ventana del escalado. El factor de la escala ya lo ves también en esa ventana es decir x/1023 y tu x en este caso es 1000 por eso si ves la figura observarás que es una reducción. En caso de que quisieras un valor mayor de 1023 por ejemplo 1500 ya verias que te cambia la figura y seria como una amplificación por eso el valor de la escala también te varia y te pone x*

F.
Todos los días se aprende algo nuevo.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:ADC y LCD
« Respuesta #12 en: 09 de Abril de 2023, 19:33:14 »
Gracias por todo Fermín, muy clara la explicación.