Hola Amigos
Es un proyecto que tuve que realizar hace mucho, tengo que decir que ya me gradué de la universidad y ahora veo que para las tecnologías actuales está algo desactualizado el proyecto, pero sirve después de todo. Este post y su segunda parte los borré hace tiempo, pero decidí posterlos otra vez. Este es el post original que me pertenece, si ven otra copia es un repost. En resumen es una foto de como se ve el circuito funcionando en Proteus, y todo el código que irá en el microcontrolador, listo para después solo armar el circuito.
Son unas cortinas, activadas por 2 motores de imán permanente, las cuales se abren o cierran independientemente si existe la señal u orden. Tiene 2 formas de funcionamiento: manual o automática. La automática es mediante una fotoresistencia, la cual manda una señaL de abrir cuando hay luz, y cerrar cuando no la hay. Por defecto funciona automáticamente, pero si queremos cambiar a modo manual, osea cuando yo quiera abrirlas, se necesita utilizar un pulsador que indica al sistema que se cambió a manual, al dejar de pulsarlo regresa a automático con la fotoresistencia. Todas estas órdenes son mostradas en una pantalla, también utilicé un Choper en H, el cual me permite invertir el movimiento de los motores. También está un Potenciómetro para controlar la luz del LCD, En total son 2 circuitos uno de control a 5 V y uno de potencia (motores) 9 V. Una de las partes mas difíciles es la programación en Micro-Codec, la cual es el motivo del post. Todos los elementos utilizados los podrán ver en la foto de proteus, excepto las resistencias que van antes de los leds son de 330 ohmios.
Coloqué junto a cada linea de código una explicación:
Cortinas Inteligentes - Código para el Micro-codec
define LCD_DREG PORTB ;BITDE DATOS DEL LCD
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB ;BIT DE REGISTRO DEL LCD
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB ;BIT DE ENABLE
DEFINE LCD_EBIT 4
define ADC_BITS 10 ;NUMERO DE BITTS DEL RESULTADO
DEFINE ADC_CLOCK 3 ;FIJA EL RELOJ
DEFINE ADC_SAMPLEUS 50 ;FIJA EL TIEMPO DE MUESTREO
TRISA=1 ;DECLARO EL PUERTO A COMO ENTRADAS
TRISD=0 ;DECLARO EL PUERTO D COMO SALIDAS
ADCON1=%1110 ;LOS PUERTOS A SON CONVERSORES
fot var byte ;A0 PARA LA FOTORESISTENCIA
pad var PORTA.1 ;A1 PARA EL PULSADOR DE ABRIR DERECHA
pcd var PORTA.2 ;A2 PARA EL PULSADOR DE CERRAR DERECHA
pai var PORTA.3 ;A3 PARA EL PULSADOR DE ABRIR IZQUIERDA
pci var PORTA.4 ;A4 PARA EL PULSADOR DE CERRAR IZQUIERDA
manaut var PORTA.5 ;A5 PARA EL PULSADOR DE CAMBIO DE AUTOMATICO A MANUAL
PRESENTACION:
LCDOUT$FE,1,"ESPOCH"
LCDOUT$FE,$C4,"MECANICA"
PAUSE 400
LCDOUT$FE,1,"REALIZADO POR:"
PAUSE 300
LCDOUT$FE,1,"MI"
LCDOUT $FE,$C1,"STALINROMERO"
PAUSE 300
GOTO INICIO
INICIO:
ADCIN 0,FOT
IF FOT "gt; 0 and PAD=0 AND PCD=0 AND PAI=0 AND PCI=0 AND MANAUT=0 THEN GOSUB JUNTAS
IF MANAUT=1 THEN GOSUB MENS
IF PAD=1 AND PCD=0 AND PAI=0 AND PCI=0 ANDMANAUT=1 THEN GOSUB ABRIRDER
IF PCD=1 AND PAD=0 AND PAI=0 AND PCI=0 ANDMANAUT=1 THEN GOSUB CERRARDER
IF PAI=1 AND PAD=0 AND PCD=0 AND PCI=0 ANDMANAUT=1 THEN GOSUB ABRIRIZQ
IF PCI=1 AND PAD=0 AND PCD=0 AND PAI=0 ANDMANAUT=1 THEN GOSUB CERRARIZQ
IF PAD=0 AND PCD=0 AND PAI=0 AND PCI=0THEN ERROR
MENS:
LCDOUT $FE,1,"SE CAMBIO ELMODO"
LCDOUT $FE,$C1,"A MANUAL"
PAUSE 300
RETURN
JUNTAS:
IF(FOT "gt;= 70) THEN
LCDOUT $FE,1," SE ABRIRAN"
LCDOUT $FE,$C1,"LASCORTINAS"
PAUSE 400
PORTD=%0000
PAUSE 10
PORTD=%1010
PAUSE 1000
PORTD=%0000
ELSE
LCDOUT $FE,1," SE CERRARAN"
LCDOUT $FE,$C1,"LASCORTINAS"
PAUSE 400
PORTD=%0000
PAUSE 10
PORTD=%0101
PAUSE 1000
PORTD=%0000
ENDIF
return
ABRIRDER:
LCDOUT $FE,1," SE ABRIRA"
LCDOUT $FE,$C1,"CORTINA DERECHA"
PORTD=%0000
PAUSE 10
PORTD=%0010
PAUSE 1000
PORTD=%0000
RETURN
CERRARDER:
LCDOUT $FE,1," SE CERRARA"
LCDOUT $FE,$C1,"CORTINA DERECHA"
PORTD=%0000
PAUSE 10
PORTD=%0001
PAUSE 1000
PORTD=%0000
RETURN
ABRIRIZQ:
LCDOUT $FE,1,"SE ABRIRA"
LCDOUT $FE,$C1,"CORTINA IZQUIERDA"
PORTD=%0000
PAUSE 10
PORTD=%1000
PAUSE 1000
PORTD=%0000
RETURN
CERRARIZQ:
LCDOUT $FE,1,"SE CERRARA"
LCDOUT $FE,$C1,"CORTINA IZQUIERDA"
PORTD=%0000
PAUSE 10
PORTD=%0100
PAUSE 1000
PORTD=%0000
RETURN
ERROR:
LCDOUT $FE,1,"NINGUN PULSADOR"
LCDOUT $FE,$C1,"ESTA ACTIVO"
PAUSE 250
GOTO PRESENTACION
END
FIN DEL POST
Mis otros posts
(Click en la imagen para redireccionar)
La Verdadera Montaña Más Alta Del Mundo, en Sudamérica
El mejor atardecer que vi en la vida (volcán)
Exámenes Resueltos de Resistencia de Materiales
El día en que casi muero (Relato Propio)
¿Aprendiendo Alemán?. Esto te será muy útil!
Te ahorro tiempo con el Office Word
Hasta pronto!