TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: dunkelheit en 18 de Junio de 2011, 12:04:08
-
Hola estoy haciendo un proyecto de una cerradura electronica que contiene los siguientes dispositivos
-Tablero matricial 4x4
-LED LM016L
-Speaker
-Motor Paso a Paso
Mi duda es, ¿es suficiente con un pic16f84A para organizar todos estos dispositivos?.
Es decir mi funcionamiento seria.
Ingreso la clave por medio del tablero, el lcd siempre mostrara si es correcto o no o tambien si se abre la cerradura o se esta cerrando, el motor paso a paso simula un jale de puerta (abriendose) luego que la contraseña es correcta mientras se va abriendo el speaker emite un sonido.
Si es posible que funcione con un solo pic me podrian ayudar a organizar los puertos A y B para conectar estos dispositivos.
Gracias.
-
Cuantos pines necesitas para conectar los dispositivos y cuantos pines dispones? Averigua y estudia la posibilidad de colocar el teclado y el LCD en el mismo puerto (Busca información, en el foro se ha hablado del tema). Luego, el firmware será realizado en asm, basic o C? Si lo pines son suficientes podrías estudiar la posibilidad de usar un 16F628 o 16F648 (Tienen más memoria de programa). Si se necesitan más pines tienes 16F873, 16F874, 16F883, ect...
Saludos!
-
buenos dias
lo que pasa es que el 16f84a es un pic bastante viejo podrias pensar en una familia de pic mas nuevos como el 16f1827 o el 16f628a si quieres un pic pequeño o un 16f883, pero aun asi con el 16f84a lo podrias hacer
francisco
-
Gracias por responder, es necesario usar el pic16f84 por eso me tengo que adecuar a las soluciones.
el tablero es 4x4 asi que usaria 8 pines.
el lcd usaria 4 de datos y 2 que controlen la lectura y escritura
el speaker solo necesita 1
y el motor paso a paso 4.
lo estoy haciendo en asm (mplab)
Yo he visto entrenadores que tienen conectados muchos dispositivos, espero que me ayuden a adecuarlo. gracias
-
Bien, de alcanzar, alcanzan justo! Puerto B para LCD y teclado, RA0 a RA3 para PAP, y RA4 (Colector abierto, ojo) para speaker. Busca como conectar un lcd y teclado al mismo puerto, se agregan un par de diodos me parece.
Saludos!
-
gracias por responder, lo unico que encontre fue:
Encontre : http://www.x-robotics.com/rutinas.htm#TOP que indica para solo tener 5 pines con los diodos, pero no entiendo como captaria la informacion.
tambien encontre: http://www.todopic.com.ar/foros/index.php?topic=18911.0 para usar solo un pin pero no sabria como implementarlo con el 16f84A ya que no cuenta con ADC, usar externo? cual? y como se haria la comparacion? o como captaria la informacion?
---------------------------------------------------------
Me pregunte si se puede hacer que con un PCF8591 convierta la entrada analogica ? y en la programacion del pic se tenga una tabla con los valores?
-
amigo,es que no ha comprendido lo que dice nuestros amigos ,con todos eso que quiere hacer te sera fastidioso, si logra controlar todas las RAM , ya que ese pic no tiene muchas capacidad para todoslos que quiere hacer, lo que podia hacer es con 2 uno el teclado y el LCD y el otro envia los comandos, asi tiene un Zocalo de 40 pata con 2x16F84.
otro consejo que te doi es, que comienze con lo que sabe y entonce comenta tus dudas aqui, de ese Pic16F4 hay de todos en nuestros foros solo es emplear las palabras magica de busquedas,cosas concretas. :mrgreen:
Saludos
-
Gracias por responder, pero eso no tendria el sentido de programa, lo que quisiera es que con un solo pic (una sola programacion) haga funcionar todo ese sistema.
-
Creo que aqui esta lo que necesitas.
http://www.todopic.com.ar/foros/index.php?topic=23812.0
Como ya te dijeron otros compañeros, el16f84 se te hara muy justo, tienes otros PICs mucho mas baratos y mucho mejores.
-
Hace mucho que no uso un 84, pero en asm el trabajo aue necesita realizar me parece que alcanza... queda ver como trabajar todo el conjunto, informacion hay, solo hay que buscar, estudiar y practicar....
Saludos
-
bueno aca en mi pais es dia del padre ... asi que saludos para todos los que son, estuve investigando y el lcd con el teclado matricial por compartir los pines de datos hacen que cuando se aprete un boton del teclado se modifique lo que se muestra? habra algun tipo de solucion :S
-
deberias usar un pic de 28 pines, el 16f84a se te queda corto
-
hola tengo un problema con la libreria TECLADO.INC
me la descargue de esta pagina: http://www.dackenperu.com/codigo-Librerias-Assembler-1.html el cual tambien me descargue los de lcd y no tuve ningun problema.
pero esta vez me bota este tipo de error:
Error[151] C:\USERS\JOHN\DESKTOP\PROYECTO ARQUI\TECLADO.INC 52 : Operand contains unresolvable labels or is too complex
el cual apunta a esta parte del codigo:
Teclado_FinTablaHex
;
; Esta tabla se sitúa al principio de la librería con el propósito de que no supere la
; posición 0FFh de memoria ROM de programa. De todas formas, en caso que así fuera
; visualizaría el siguiente mensaje de error en el proceso de ensamblado:
;
IF (Teclado_FinTablaHex > 0xFF)
ERROR "Atención: La tabla ha superado el tamaño de la página de los"
MESSG "primeros 256 bytes de memoria ROM. NO funcionará correctamente."
ENDIF
:S como podria solucionarlo
al eliminarlo ya no sale el error, pero es correcto eliminarlo?
-
Ahora estoy usando el PCF8591 para recibir señal analogica de los teclado, me funciona bien, pero el modo de llamado que uso es polling, pero como podria hacer que solo funcione cuando apreto un boton (cuando apreto las resistencias se suman y dan un valor de los voltios este se transforma en el pcf8591 y luego se transfiere a la ranura RA3 y RA4) ya que este no cuenta con pin de interrupcion.
ORG 0
goto Inicio
ORG 4
goto ServicioInterrupcion
Inicio
call LCD_Inicializa
call I2C_EnviaStart ; Va a configurar el PCF8591.
movlw PCF8591_DireccionEscritura ; Apunta al dispositivo.
call I2C_EnviaByte
movlw b'00000000' ; Carga la palabra de control utilizando la
call I2C_EnviaByte ; entrada AIN0 en modo simple.
call I2C_EnviaStop ; Termina la configuración
call I2C_EnviaStart ; Comienza a leer.
movlw PCF8591_DireccionLectura ; Apunta al dispositivo.
call I2C_EnviaByte
call I2C_LeeByte ; La primera lectura es incorrecta y por lo tanto
; la desecha.
Principal
call I2C_LeeByte ; Lee la entrada analógica.
call Visualiza
goto Principal
ServicioInterrupcion
; Subrutinas "Visualiza" ----------------------------------------------------------------
CBLOCK
Auxiliar
ENDC
Visualiza
movwf Auxiliar ; Lo guarda.
movlw teclaD
subwf Auxiliar,W
btfss STATUS,Z
call LCD_Linea1 ; Se sitúa al principio de la primera línea.
movlw MensajeIntro ; Visualiza la tensión deseada.
call LCD_Mensaje
call LCD_Linea2 ; Se sitúa al principio de la primera línea.
movf Auxiliar,W ; Recupera el dato a visualizar y lo
call LCD_Nibble ; unidades de voltios.
return
-
pero el modo de llamado que uso es polling, pero como podria hacer que solo funcione cuando apreto un boton (cuando apreto las resistencias se suman y dan un valor de los voltios este se transforma en el pcf8591 y luego se transfiere a la ranura RA3 y RA4) ya que este no cuenta con pin de interrupcion.
En el 16f84A solo tienes interrupciones externas en el PORTB, y en RA4 para el TIMER0, si tienes libre RA4 y no usas el TIMER0,hay una manera de usarla como interrupcion externa, pero ¿como harias para que se produzca un cambio de 0 a 1 en RA4?. No podrias usar el TIMER0 y es el unico que tienes...no se si seria buena solucion.