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

Temas similares

04/12/2012 #1


Problema con programa contador de monedas PIC16F873A
Hola, soy José Luis, vengo a hacerles un cuestionamiento, espero puedan ayudarme.

Tengo un circuito, lo adjunto, está en Isis (Proteus), que se compone de un PIC16F873A,de 5 interruptores con optoacopladores y 4 displays de 7 segmentos.

La función del circuito es para un sumador de monedas, se supone que cuando pasa una moneda, interrumpe la luz en determinados optos, según el tamaño de la moneda; la moneda mas grande (en México es la de 10 pesos) bloquea los 5 optos, y la mas pequeña solo uno. Las monedas las simule en Isis con unos switches. Se deben ir sumando los valores, segun su tamaño, y mostrar la suma en un display.

El programa del PIC consta de varios módulos:
  • El que interpreta los valores que le mandan los sensores y los suma en un contador. ("Registro de monedas" en el *.asm que adjunto)
  • El que separa las unidades de las decenas de lo que está en el contador. ("Traspaso de contador a unidades y decenas" en el *.asm que adjunto)
  • El que toma los valores de las unidades y decenas y los despliega en los displays. (Toda la primera parte del *.asm que adjunto)

El tercero no es de mi autoría, lo saque de un código que ví en internet (si debo poner el enlace, solo diganme). Los otros 2 si, los hice como pude, jejeje.

Probé el primero en un circuito de un solo digito, y si los suma, o sea, si sirvió.
Probé el tercero con solo un interruptor, y tambien funcionó.

El problema es a la hora de juntarlos, ya que para hacer que el tercer modulo (que toma valores separados de decenas, unidades y centenas) funcione con el primer módulo (que guarda toda la suma en un solo registro, o sea, en binario) solo se me ocurrió hacerlo con el segundo módulo, pero no funciona. No logro ver porque el display solo muestra ceros en la simulación.

Espero haber sido claro.

Por favor, les pido amablemente que me echen la mano. Gracias.
06/12/2012 #2


Ya logré encontrar el problema, jejejeje, era algo muy tonto, jejejeje. Resulta que el módulo que convierte lo que hay en contador a unidades y decenas, usaba estas dos variables: "unidad" y "decena", y el módulo que las despliega en el display usaba estas otras dos: "UNIDADES" y "DECENAS", el módulo trabajaba bien, solo que como las guardaba en otro lugar, en las variables que usaba el módulo del display siempre había ceros.

Gracias, ya termine mi proyecto, aunque le hice algunas modificaciones, pero la simulación en el proteus sale bien. Al rato crearé otro post para ponerlo y explicarlo, y que quede para futuras referencias.

Saludos.
26/03/2013 #3

Avatar de Finskey

Contador
Buenos dias, el otro dia se me ocurrio hacer un contador con pic, pero no un contador comun y corriente sino un contador que, yo al ingresar un peso , el numero suba, osea que quiero al ingresar una moneda por ej o algo mucho mas liviano el contador suba de 1 en 1. esto es posible? vi muchos post de como hacer un contador sencillo pero quisiera hacerlo hasta 1000, y alguna ves vieron algo parecido? calibrarlo por peso? Muchas gracias , no busco la solución total, solo su opinion y alguna ayuda. Muchas gracias!
26/03/2013 #4

Avatar de Gudino Roberto duberlin

Amigo, explicate con mas detalles, de lo que pretendes realizar.
10/04/2013 #5

Avatar de Finskey

Ya encontre la forma de hacer mi contador de tapitas hasta 10.000 , que era lo que quería saber arriba , ahora el problema es que cuando yo corte la alimentación el contador va a empezar de 0 ,o va a mantener el numero de tapitas contadas durante todo el dia? y hay alguna forma de que el pic recuerde ese numero y que cuando le des tension de nuevo siga contando a partir de ese numero
Imágenes Adjuntas
Tipo de Archivo: jpg ContadorEsquema.jpg (41,7 KB (Kilobytes), 36 visitas)
10/04/2013 #6
Moderador

Avatar de Chico3001

Si el numero lo mantienes en RAM y le quitan la alimentacion, el PIC comenzara desde cero al dia siguiente...

La manera de solucionar eso es detectar que le estan quitando la alimentacion al PIC y en ese momento guardar el dato en la EEPROM, para recuperarlo al dia siguiente...
10/04/2013 #7

Avatar de Finskey

Entiendo lo que decis, esto se puede hacer automáticamente? con algun comando de c? o es necesario usar algun semiconductor?
10/04/2013 #8
Moderador

Avatar de Chico3001

Si el micro tiene memoria EEPROM para datos interna entonces solo es añadir un circuito que detecte que lo quieren apagar y las instrucciones en C....

Si no tiene EEPROM de datos entonces hay que añadir una externa o una bateria para mantenerlo corriendo en modo de bajo consumo
11/04/2013 #9

Avatar de Finskey

En este caso el pic16f628A, tiene 128 bits de EEPROM , algun circuito tipo y alguna intruccion? seguire buscando de todas maneras
Respuesta
¿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.