TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: piriots en 31 de Julio de 2004, 15:38:00

Título: Control de reles a distancia mediante IR
Publicado por: piriots en 31 de Julio de 2004, 15:38:00
Hola gente de todopic!!!!!!! Hace tiempo que tengo un proyecto en mente y ahora me he decidido ha llevarlo a cabo.

El proyecto consta del control de 7 reles mediante un emisor y un receptor de IR.

El emisor-receptor, usare este circuito http://www.pablin.com.ar/electron/circuito/varios/ir1ch/index.htm

En el emisor quiero poner un pic para contar las veces que se pulsa el pulsador y representarlo en un display de 7 segmentos, este numero, representara el rele que se activara. El reset del pic sera manual, y asi despues de pulsar el numero de veces para encender el rele correspondiente, poder reiniciar el programa para poder activar otro.

En el receptor incluire un pic que interprete el numero de pulsos que le lleguen, y segun ese numero, activar la salida correspondiente. Para conectar los reles al pic utilizare un ULN2003 y asi me ahorro los Darlington y los didodos de proteccion.

Tanto el pic del emisor como el del receptor serian un 16F84A.

La semana k viene empezare a colgar los eskemas.

Alguien se apunta al proyecto??
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 31 de Julio de 2004, 15:44:00

Yo me apunto

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 02 de Agosto de 2004, 12:53:00
Bueno, ya tengo la parte del emisor con el pic para que cuente las veces que se pulsa el pulsador, he simulado en proteus y no rula , pero no se si es k lo hago mal o es que proteus falla o k pasa, ahora lo voy a probar en la proto board y os cuento.

SAlu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 02 de Agosto de 2004, 13:37:00
¿Teneis fuente de alimentación para los +9V y -9V?

Si en algo puedo ayudaros en la programación (que supongo será en ensamblador) aquí estoy.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 02 de Agosto de 2004, 14:28:00
Pues no tengo fuente para los -9v pero para k son los -9v??Bueno ya e montado el circuito en la protoboard y funciona pero ( siempre tiene k haber un pero) algunas veces el display se vuelve loco y comienza a contar sin k pulses el pulsador, pero esto creo k debe de ser cosa de algun falso contacto de la protoboard, o a lo mejor es cosa de los rebotes?? Los rebotes no creo que sean pk en el programa hay una subrutina de retardo para evitar los rebotes. El programa es este
Codigo:
;************************************ Pulsador_01.asm ***********************************;;;; Cada vez que presione el pulsador conectado al pin RA4 incrementa un contador visualizado; en el display.;; ZONA DE DATOS **********************************************************************   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC   LIST      P=16F84A   INCLUDE     CBLOCK  0x0C   Contador            ; El contador a visualizar.   ENDC#DEFINE Pulsador   PORTA,4         ; Pulsador conectado a RA4.#DEFINE Display   PORTB         ; El display está conectado al Puerto B.; ZONA DE CÓDIGOS ********************************************************************   ORG   0         ; El programa comienza en la dirección 0.Inicio     bsf   STATUS,RP0      ; Acceso al Banco 1.   clrf   Display         ; Estas líneas configuradas como salidas.   bsf   Pulsador         ; Línea del pulsador configurada como entrada.   bcf   STATUS,RP0      ; Acceso al Banco 0.   call   InicializaContador      ; Inicializa el Contador y lo visualiza.   call   VisualizaPrincipal   btfsc   Pulsador         ; ¿Pulsador presionado?, ¿(Pulsador)=0?   goto   Fin         ; No. Vuelve a leerlo.   call   Retardo_20ms      ; Espera que se estabilicen los niveles de tensión.   btfsc   Pulsador         ; Comprueba si es un rebote.   goto   Fin         ; Era un rebote y sale fuera.   call   IncrementaVisualiza      ; Incrementa el contador y lo visualiza.EsperaDejePulsar   btfss   Pulsador         ; ¿Dejó de pulsar?. ¿(Pulsador)=1?   goto   EsperaDejePulsar      ; No. Espera que deje de pulsar.Fin   goto   Principal; Subrutina "IncrementaVisualiza" ---------------------------------------------------------IncrementaVisualiza   incf   Contador,F      ; Incrementa el contador y comprueba si ha   movlw    d"10"         ; llegado a su valor máximo mediante una   subwf   Contador,W      ; resta. (W)=(Contador)-10.   btfsc   STATUS,C      ; ¿C=0?, ¿(W) negativo?, ¿(Contador)<10?InicializaContador   clrf   Contador         ; No, era igual o mayor. Por tanto, resetea.Visualiza   movf   Contador,W   call   Numero_a_7Segmentos   ; Lo pasa a siete segmento para poder ser   movwf   Display         ; visualizado en el display.   return   INCLUDE    ; Subrutina Numero_a_7Segmentos   INCLUDE    ; Subrutinas de retardo.   END            ; Fin del programa.   
Gracias por tu oferta pocher. Si, la programacion  es en ensamblador.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 02 de Agosto de 2004, 20:01:00
Por qué no haces que el pulsador sea la interrupción RB0?? De esa manera puedes usar la función sleep que se desactiva en el momento de la interrupción y eso hará que la pila dure más.

Sabes? sería bueno ver el diagrama que tienes en mente.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 03 de Agosto de 2004, 00:33:00
Sí, si el emisor va a ser alimentado con pilas, hazlo trabajar en modo sleep para que el consumo sea de uA, de lo contrario las pilas te duranran un suspiro.

Para ahorrarte todo el jaleo de detectar si el pulsador está pulsado o ha sido soltado,  porque no lo metes en RB0 (detección por flanco)?, como comenta Carlete.

Ah lo de los -9V es porque en el receptor tienes un operacional, el LM308, que tiene alimentación simétrica.

Un saludo
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 03 de Agosto de 2004, 11:29:00
Pues no he usado la interrupcion en RB0 porque, el display de 7 segmentos ocupa este puerto, y para poder usalrlo tendria k modificar la subrutina de gobierno del display y no tengo ni idea de como hacerlo. Esto del consumo ya lo habia pensado, y queria meterle un interruptor, para encender el circuito solo cuando se vaya a utilizar el mando.

Sobre el diagrama ahora  hago el del emisor y lo cuelgo.

SAlu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 03 de Agosto de 2004, 12:49:00
Ahi va el diagrama del emisor.



Sobre esto que os he comentado, que el circuito va contando solo sin que se pulse el pulsador, que opinais??

Sobre los -9v no le veo problema, ya que el receptor se alimentara con una fuente de pc, pongo 12v y con un 7909 tengo los -9v
EDITO:
He modificado el esquema porque he visto un error, el pulsador que daba la señal al pic era externo, y tiene que ser el que activa el sensor de IR.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 03 de Agosto de 2004, 17:53:00
Una pregunta:

Viendo el diagrama me doy cuenta que independientemente del número que muestre el display, el emisor de IR siempre va a emitir la misma señal (sin ningún tipo de codificación), por lo tanto cómo vas a controlar que se accione un relé u otro relé si siempre se emite la misma señal?

Otra cosa que se me ocurre si no quieres usar el sleep, es que el circuito se energice al accionar el pulsador de RA4, eso de hecho lo vi en otro circuito de control remoto que usa RF en lugar de IR aquí:

http://www.interq.or.jp/japan/se-inoue/e_pic6_81.htm

Claro, habría que hacer varios cambios en el circuito porque cambia la filosofia de trabajo. Tal vez se podría hacer una rutina para que si presiono el pulsador por períodos de corta duración, vaya cambiando el numero del display y cuando deje presionado el pulsador por 2 segundos, se emita el código por IR. También habría que usar la EEPROM de datos para no perder el número del display al desenergizar. Si... se ve interesante.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 03 de Agosto de 2004, 18:38:00
Pues yo pensaba hacer que el pic del receptor contara el numero de pulsos que envia el emisor y dependiendo de esto activara la salida correspondiente.

Sobre lo de la eeprom, nunca he trabajado con ella.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 03 de Agosto de 2004, 20:00:00
Piriots, si te fijas en el circuito emisor de pablin, este es un oscilador de frecuencia X, por lo tanto al cerrar el pulsador el oscilador comenzará a emitir pulsos que no dependen de las veces que se presione el pulsador.

Por otro lado, en el circuito receptor, tienes el LM308 que actua como amplificador y también como filtro pasa banda para solo dejar pasar la señal IR de frecuencia X del emisor.
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 04 de Agosto de 2004, 03:19:00
Yo creo que sí que se puede hacer. Al accionar el pulsador se generaran pulsos, al recibirlos el receptor cerrará el relé, o activará un pin del PIC y este contará un pulso. Al soltar el pulsador no se generaran pulsos con lo que el relé se abrirá, en nuestro caso se desactivará el pin del PIC ... etc para más pulsos. Lo único que habrá que tener en cuenta son los tiempos, ya que el PIC receptor debe esperar un cierto tiempo constante durante el cual aseguraremos que se ha dejado de contar, así mismo no te puedes dormir entre pulsación y pulsación.

El pulsador de IR en el circuito está mal puesto: se produce un corto.

El pulsador de ON-OFF también está mal puesto: se enciende el LED sin cerrar el pulsador.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 04 de Agosto de 2004, 13:45:00
Pues teneis toda la razon, modifike el eskema ayer x la noche cuando llegue de fiesta y a akellas oras uno no esta a tope. Ahora lo arreglo.


Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 04 de Agosto de 2004, 21:59:00

Es cierto Pocher, de esa manera creo que si funcionaría, pero veo un problemita... Que pasaría ai alguien acciona el control de la TV cerca del receptor???  Es probable que se comiencen a disparar los relés como locos.  

 
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 05 de Agosto de 2004, 01:07:00
Sí claro, claro, solución coger la TV y llevartela a otra habitación ... o sería mejor quizá coger las placas y llevártelas a otra habitación.

Fuera bromas Carlete, lo ideal sería codificar las frecuencias pero el amiguete Piriots lo quiere hacer así y para empezar no está mal.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 05 de Agosto de 2004, 14:39:00
Yo tambien creo que seria mejor codificar las frecuencias, pero en esto ando bastante perdido, si me podeis orientar en como hacerlo, podriamos reconducir el proyecto. Esto de la tele lo habeis dicho en coña pero no es tan en coña pk tengo la tele al lado de donde tendria k ir el receptor.

En este link ay un emisor-receptor de IR codificado, si os parece empezamos a trabajar con el ??

http://www.pablin.com.ar/electron/circuito/varios/remotoir/index.htm
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 05 de Agosto de 2004, 16:59:00
JAJAJAJA  Pocher, buena respuesta. Si, definitivamente estoy de acuerdo contigo.

Piriots, yo te recomendaría comenzar haciendo un circuito más simple, tal vez controlando un solo relé.

Si quieres controlarlos todos, yo me eliminaría la etapa del oscilador IR y lo que haría es poner al PIC a emitir los pulsos por IR (sin un oscilador) directamente según el número que coloques.. En el receptor lo que haces, como dice Pocher es contar los pulsos y accionas el relé correspondiente.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 05 de Agosto de 2004, 18:44:00
Si he entendido bien,el emisor se trataria de conectar un pulsador al pic, y el emisor de IR en otra patilla del pic y hacer que el emisor envie tantos pulsos como veces se pulsa el emisor, en resumen cada vez que se pulsa el pulsador tiene que llegar un 1 al emisor IR.¿¿ Es correcto esto??
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 07 de Agosto de 2004, 16:04:00
Entendido, entonces en el receptor tendria que poner el receptor ir, el LM 308 y en vez del descodificador 567 poner el PIC que cuente el numero de pulsos, y dependiendo de esto encender el rele correspondiente.

La patilla que tengo que conectar al pic es la 6 del 308?? o como??
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 07 de Agosto de 2004, 16:31:00


Piriots, el LM308 del circuito de Pablin está para amplificar la señal IR y además es un filtro pasa banda para solo dejar pasar la frecuencia del emisor que él propone. Por lo tanto, si dejas el 308 debes asegurarte que el emisor transmita el tren de pulsos a la misma frecuencia ya que de lo contrario el 308 filtrará la señal y no llegará al PIC receptor.

Yo quitaría el LM308 y colocaría otro OPAMP sin configuración de filtro (solo para amplificar la señal IR). Claro que de esta manera tendrás el problema de la interferencia por cualquier aparato de IR independianemente de la frecuencia (porque ya no hay filtro).
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 07 de Agosto de 2004, 17:31:00
Piriots, navegando por ahí conseguí una página que me pareció buena y te puede ayudar en este proyecto y en muchos otros:

http://www.geocities.com/electronic_death/circuitos.htm

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 07 de Agosto de 2004, 18:17:00
Pues no me carga el link. Ahora estoy buscando info sobre como conecto el operacional, pk el bicho este tiene topecientasmil aplicaciones , en este caso es amplificador no inversor??

Un LM324 te parece ok?
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 07 de Agosto de 2004, 18:55:00

Si, el LM324 puede servir o también el 741.

Sobre el Link, es cierto, a veces funciona y aveces no. debe ser el hosting. En el momento que lo agarres activo aprovecha y bájate todos los circuitos que puedas
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 08 de Agosto de 2004, 13:20:00
Bueno, aki no se los disparates que debo de haber echo pero bueno, echarle una ojeada, esto seria el receptor, cuando esto este ok esta parte ya añadire el pic, el ULN2003 y los reles.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 08 de Agosto de 2004, 16:35:00
Mira, no se tendría que ponerme a calcular y me da mucha flojera

Sin embargo tengo un circuito que me ha funcionado antes como amplificador de señal.

R4,R2,R5=10K
R3=POT 100K
C1,C2=0,1uF
IC1=741

Saludos,

Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 09 de Agosto de 2004, 14:56:00
Me puedes pasar el diagrama de este circuito, es k nunca e usado operacionales y ando muy perdido...

Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 09 de Agosto de 2004, 16:33:00
No se por qué no me permite colocar una imagen. Tienes un correo para enviártela?

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 09 de Agosto de 2004, 17:39:00
Mi correo es piries69@hotmail.com.

Salu2 y gracias por tu ayuda
Título: RE: Control de reles a distancia mediante IR
Publicado por: Leonsport en 11 de Agosto de 2004, 08:08:00
Has pensado en hacerlo con 2 pics?
un pic q haga de emisor y otro pic con un receptor q infrarrojo q decodifique los datos del emisor y los represente.
Lo unico es utilizar un protocolo para la comunicacion.
salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 11 de Agosto de 2004, 11:26:00
Pues si, habia pensado en acerlo con 2 pic, y que protocolo se tendria que seguir?? de protocolos no tengo ni idea, o sea k tendre k investigar , ahora ando mu liado con un pc k me ta dando problemas y lo tengo k solucionar, cuando lo tenga ya subire el esquema del emisor y el del receptor a ver como lo veis y seguimos con esto aver si entre todos lo sacamos adelante.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: Leonsport en 11 de Agosto de 2004, 11:36:00
protocolos tienes ..... rc5 de philips, sony, daewoo....etc.
También puedes hacerte uno propio, por ejemplo q para cada boton q pulses t salga por una patilla una secuencia de pulsos de x duración. Para el receptor tendrías q cojer esos  datos y decodificarlos.
Si t decides por hacerlo con los pics avisas y t ayudamos todo lo posible.
También hay unos integraos q con solo unos pocos componentes pasivos t configuras tu emisor y receptor y a rular sin problemas.
salu22
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 11 de Agosto de 2004, 14:49:00
Pues creo que seria mejor utilizar mi propio protocolo, en cuanto al emisor, se conectarian 7 pulsadores, RB0:RB6, depende de qual pulses salen una determinada sequencia de pulsos. A RB7 se conectaria el emisor IR. En RA0, RA1,RA2 y RA3 se podria poner un display de 7 segmentos, y que marque el numero del interruptor que pulsas.

Una cosa, ay alguna manera de eliminar los rebotes en los pulsadores por hard??, no se utilizando algun condensador o algo asi??, asin se simplificaria un poco el soft.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 11 de Agosto de 2004, 15:06:00
Si.
Por hardware puedes usar un chip de seguidores o negadores smith trigger, pero te los puedes ahorrar si haces una pequeña rutina en el pic que tome un tiempo para que garantice la estabilidad de la señal del pulsador. También te recomiendo que uses flanco descendente para detectar la señal.

Saludos,

Título: RE: Control de reles a distancia mediante IR
Publicado por: Nocturno en 12 de Agosto de 2004, 03:23:00
Con respecto al protocolo, puedes inventártelo y programar el emisor en un pic y el receptor en el otro.

Pero te recomiendo que utilices cualquiera de los que ya está inventado y que además viene implementado en los lenguajes de alto nivel (al menos en Basic y en C). Me refiero al RS232 y al I2C.

Cualquiera de ellos son más que suficientes para lo que necesitas y muy fáciles de usar.
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 12 de Agosto de 2004, 05:25:00
Sí pero es que se trata de una conexión sin cables.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Nocturno en 12 de Agosto de 2004, 05:36:00
Vaya, ahora he sido yo al que se le va la olla, jejeje.

Título: RE: Control de reles a distancia mediante IR
Publicado por: gauchosuizo en 12 de Agosto de 2004, 06:13:00
hola

@pocher

que importa que sea una conexion sin cables. A mi parecer un protocolo como el RS232 tendria que funcionar.
8 Bits = 1 Startbit, 6 Databits y 1 Stopbit. Yo pienso que puede ser tambien algun otro protocol, pero tiene  que ser asincronico, quiere decir que no necesite un Clock de referencia.

O me equivoco??
Título: RE: Control de reles a distancia mediante IR
Publicado por: Nocturno en 12 de Agosto de 2004, 06:19:00
Pero tanto el protocolo RS232 como el I2C necesitan un canal de retorno, y en este caso la comunicación va a ser unidireccional, así que no se pueden implementar. Realmente se me fue la olla
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 12 de Agosto de 2004, 15:02:00
Bueno, en verano los colegas dan mucha caña y tengo esto un poca abandonado. Muchas gracias por vuestras respuestas, Leonsport, los condensadores de que valor tienen que ser, supongo que seran ceramicos no??

A ver si mañana me pongo las pilas y subo los esquemas del emisor y del receptor y un diagrama de los pulsos que quiero usar.



SAlu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: Leonsport en 12 de Agosto de 2004, 18:01:00
Yo utilizo de esos ceramicos con valor de 1uF.
salu22
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 13 de Agosto de 2004, 13:21:00
Bueno, ahi van los esquemas del emisor y el receptor. A ver si tan ok.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 13 de Agosto de 2004, 15:25:00
Piriots, no puedo escribir mucho ahora, pero a grandes rasgos en el emisor veo que puedes optimizar un poco el circuito disminuyendo hardware, que tiene costo $, y colocando un poco de software, que te sale gratis.

Bueno, yo remplazaría todos los pulsadores por uno solo de manera que cada vez que lo pulses se incremente un contador interno del micro que podía ser un registro de la RAM y mientra esté presionado se transmita la señal. También puedes eliminar el driver del display y conectar éste directamente al micro. Hay rutinas tabuladas en libros para manejar displays de 7 segmentos sin driver.

Bueno luego me fijo en el receptor.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 13 de Agosto de 2004, 15:27:00
Bueno los pulsos que manda el emisor serian como estan en el grafico que adjunto.



para el seft del receptor pues testearia RA4, si es 1 vuelve a  testear el cabo de 300ms si es 0 indica que el  pulso se ha acabado y enciende el primer rele, si es 1 indica que el pulso sigue, vuelve a testear al cabo de otros 300ms, si es 0 enciende el segundo rele, y si es 1 vuelve a testera al cabo de otro rato, y asi asta el final.

Os parece bien asi??, es la forma mas sencilla que se me a ocurrido.

Bueno, ahora os dejo, me voy pa Salou a empezar el botellon y luego de discos k aki en españa son las 22:30  , si el hard esta ok y mañana no tengo mucha resaca a ver si hago el programa del emisor.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 13 de Agosto de 2004, 18:07:00
Piriots, creo que hay un error en el tiempo de muestreo del PIC receptor ya que si el muestreo es cada 300ms nunca vas a poder detectar las señales porque estas tienen una duración mucho menor.

Me parece buena tu idea

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: BLACKPIC en 13 de Agosto de 2004, 22:20:00
hola a todos los del foro no soy muy experto en esto de los PIC pero quise ayudar en algo.. amigo CARLETE 71 A QUI TE DOY ESTA PAG. A VER SI TE SIRVE en algo AMIGO...... Y GRACIAS POR AYUDARME...

http://www.geocities.com/electronic_death/circuitos.htm



SALUDOS PARA TODOS DESDE Republica Dominicana...
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 13 de Agosto de 2004, 22:25:00

Gracias Novato
Título: RE: Control de reles a distancia mediante IR
Publicado por: Nocturno en 14 de Agosto de 2004, 00:59:00
Novato, no puedo ver la página que has publicado. Dice que está suspendida por inactividad.

¿Tú has podido, Carlete?
Título: RE: Control de reles a distancia mediante IR
Publicado por: Modulay en 14 de Agosto de 2004, 03:11:00
Después de leer el post me he dibujado el esquemilla con los cálculos para un paso banda por si os puede interesar para filtrar el asunto.
Si a alguno le interesa,que me lo diga y se lo mando al privado.
Un saludo
Título: RE: Control de reles a distancia mediante IR
Publicado por: Leonsport en 14 de Agosto de 2004, 06:03:00
Me parece buena tu idea, pero yo simplificaria  mas esos circuitos.
salu222
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 14 de Agosto de 2004, 06:13:00
Escrito originalmente por nocturno66
Novato, no puedo ver la página que has publicado. Dice que está suspendida por inactividad.

¿Tú has podido, Carlete?


Si Manolo, lo que pasa con esa página es que aveces la puedes ver y otras veces no. Es muy buena porque tiene muchos esquemas. Lo que te recomiendo es que cuando tengas suerte de que esté activa, bájate todo lo que te interese por que es muy inestable.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 14 de Agosto de 2004, 07:08:00
Queria decir cada 300us,esto en los primeros pulsos, luego tendria que ser un poco mas. En cuanto al hard del emisor, yo lo dejaria asi.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 14 de Agosto de 2004, 15:14:00
Estoy aciendo el soft para el emisor y me ha surgido una duda, como lo hago para que cuando x ejemplo mande el pulso para encender el primer rele salga un 1 en el display.

He echo esto y no me rula, seguramente me he liado con el mov y sus variables.

ahi va el codigo.

Codigo:


RELE1
   bsf      PORTB,7            ;Emite un pulso poritivo por RB1
   call   Retardo_500micros   ;de 500 micro segundos de longitud
   bcf      PORTB,7            ;Termina de enviar el pulso
   movlw   b"00001"         
   movwf   PORTA            ;Muestra un 1 en el display
   call   Retardo_5s         ;durante 5 segundos
   movlw   b"00000"
   movwf   PORTA            ;vuelve a poner el display a 0.

Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 14 de Agosto de 2004, 15:27:00
Definiste bien los bits de entrada y los de salida?

No le veo nada raro a la rutina que colocaste, claro que tal vez por no estar completa pede ser que no se vea el error. Los mov me parecen bien. Claro que no se si estarán bien las subrutinas de retardo.

Las ultimas dos instrucciones las puedes cambiar por un

clrf   porta

Tal vez sería bueno que coloques el programa completo.

Una pregunta, lo estás simulando con algún software??

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 14 de Agosto de 2004, 15:43:00
Estoy simulando con proteus. Pero no se si fiarme mucho porque ningun programa que tenga pulsadores me rula bien en proteus, luego en protoboard si k rulan.

Ahi va lo que tengo del programa.

Codigo:

;******************************************Emisor IR.asm*************************************
;
; El programa testea el estado de los pulsadores conectados a RB0:RB6 y emite un pulso durante
; un periodo de tiempo determinado en RB7
;

;ZONA DE DATOS*******************************************************************************

   LIST   P=16F84         ;El ucontuolador utilizado
   INCLUDE   "p16f84.inc"   ;Define los registros mas utilizados


;ZONA DE CODIGOS*****************************************************************************

   ORG      0            ;El programa empieza en la direccion 0

INICIO
   bsf      STATUS,RP0      ;Me situo en el banco 1
   clrf   TRISA         ;Puerto A configurado como salida
   movlw   b"11111110"      ;RB0:RB6 configurado como entrada, RB7 configurado como salida
   movwf   TRISB         
   bcf      STATUS,RP0      ;Acceso al banco 0
   
TESTEA
    btfss   PORTB,0         ;Testea RB0, si=1 se salta la siguiente instruccion
    goto   RELE0         ;Si RB0=0 va a RELE0
    btfss   PORTB,1         ;Testea RB1, si=1 se salta la siguiente instruccion   
    goto   RELE1         ;Si RB1=0 va a RELE1
   btfss   PORTB,2         ;Testea RB2, si=1 se salta la siguiente instruccion
   goto   RELE2         ;Si RB2=0 va a RELE2
    btfss   PORTB,3         ;Testea RB3, si=1 se salta la siguiente instruccion   
    goto   RELE3         ;Si RB3=0 va a RELE3
   btfss   PORTB,4         ;Testea RB4, si=1 se salta la siguiente instruccion
   goto   RELE4         ;Si RB4=0 va a RELE4
   btfss   PORTB,5         ;Testea RB5, si=1 se salta la siguiente instruccion
   goto   RELE5         ;Si RB5=0 va a RELE5
    btfss   PORTB,6         ;Testea RB6, si=1 se salta la siguiente instruccion   
    goto   RELE6         ;Si RB6=0 va a RELE6
    goto   TESTEA         ;Vuelve a testear las entradas
   
;PULSOS PARA LA ACTIVACION DE LOS RELES****************************************************

RELE0
   bsf    PORTB,7            ;Emite un pulso positivo por RB7
   call   Retardo_200micros   ;de 200 micro segundos de longitud
   bcf      PORTB,7            ;Deja de emitir el pulso
   goto   TESTEA            ;Vuelve a testear los pulsadores
   
RELE1
   bsf      PORTB,7            ;Emite un pulso poritivo por RB7
   call   Retardo_500micros   ;de 500 micro segundos de longitud
   bcf      PORTB,7            ;Termina de enviar el pulso
   movlw   b"00001"         
   movwf   PORTA            ;Muestra un 1 en el display
   call   Retardo_5s         ;durante 5 segundos
   movlw   b"00000"
   movwf   PORTA            ;vuelve a poner el display a 0.
   goto   TESTEA
   
RELE2
RELE3
RELE4
RELE5
RELE6

   INCLUDE <RETARDOS.INC>   
   END



Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 14 de Agosto de 2004, 16:21:00

Piriots, si quieres pon el archivo .asm completo para poder simularlo ya que me da "n" errores por variables no definidas, etc.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 14 de Agosto de 2004, 18:21:00
En cuanto tenga el programa acabado lo posteo, lo de las variables no definidas debe ser porque no tienes la libreria de subrutinas que uso yo, porque lo he compilado y no tengo ningun problema con las variables.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 14 de Agosto de 2004, 18:51:00
En el otro post, el ultimo include que no sale es INCLUDE "RETARDOS.INC"La libreria de retardos es esta:
Codigo:
;**************************** Librería "RETARDOS.INC" *********************************;;   ===================================================================;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS";     E. Palacios, F. Remiro y L. López.;      Editorial Ra-Ma.  www.ra-ma.es;   ===================================================================;; Librería con múltiples subrutinas de retardos, desde 4 microsegundos hasta 20 segundos. ; Además se pueden implementar otras subrutinas muy fácilmente.;; Se han calculado para un sistema microcontrolador con un PIC trabajando con un cristal; de cuarzo a 4 MHz. Como cada ciclo máquina son 4 ciclos de reloj, resulta que cada; ciclo máquina tarda 4 x 1/4MHz = 1 µs.;; En los comentarios, "cm" significa "ciclos máquina".;; ZONA DE DATOS *********************************************************************   CBLOCK   R_ContA            ; Contadores para los retardos.   R_ContB   R_ContC   ENDC;; RETARDOS de 4 hasta 10 microsegundos ---------------------------------------------------;; A continuación retardos pequeños teniendo en cuenta que para una frecuencia de 4 MHZ,; la llamada a subrutina "call" tarda 2 ciclos máquina, el retorno de subrutina; "return" toma otros 2 ciclos máquina y cada instrucción "nop" tarda 1 ciclo máquina.;Retardo_10micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.Retardo_5micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.Retardo_4micros            ; La llamada "call" aporta 2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;; RETARDOS de 20 hasta 500 microsegundos ------------------------------------------------;Retardo_500micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   movlw   d"164"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_200micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   movlw   d"64"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_100micros            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"31"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_50micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   movlw   d"14"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_20micros            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"5"         ; Aporta 1 ciclo máquina. Este es el valor de "K".;; El próximo bloque "RetardoMicros" tarda:; 1 + (K-1) + 2 + (K-1)x2 + 2 = (2 + 3K) ciclos máquina.;RetardoMicros   movwf   R_ContA         ; Aporta 1 ciclo máquina.Rmicros_Bucle   decfsz   R_ContA,F      ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar).   goto   Rmicros_Bucle      ; Aporta (K-1)x2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:; - Retardo_500micros:   2 + 1 + 1 + 2 + (2 + 3K) = 500 cm = 500 µs. (para K=164 y 4 MHz).; - Retardo_200micros:   2 + 1 + 1 + 2 + (2 + 3K) = 200 cm = 200 µs. (para K= 64 y 4 MHz).; - Retardo_100micros:   2     + 1 + 2 + (2 + 3K) = 100 cm = 100 µs. (para K= 31 y 4 MHz).; - Retardo_50micros :   2 + 1 + 1 + 2 + (2 + 3K) =  50 cm =  50 µs. (para K= 14 y 4 MHz).; - Retardo_20micros :   2     + 1     + (2 + 3K) =  20 cm =  20 µs. (para K=  5 y 4 MHz).;; RETARDOS de 1 ms hasta 200 ms. --------------------------------------------------------;Retardo_200ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"200"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_100ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"100"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_50ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"50"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_20ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"20"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_10ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"10"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_5ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"5"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_2ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"2"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_1ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"1"         ; Aporta 1 ciclo máquina. Este es el valor de "M".;; El próximo bloque "Retardos_ms" tarda:; 1 + M + M + KxM + (K-1)xM + Mx2 + (K-1)Mx2 + (M-1) + 2 + (M-1)x2 + 2 =; = (2 + 4M + 4KM) ciclos máquina. Para K=249 y M=1 supone 1002 ciclos máquina; que a 4 MHz son 1002 µs = 1 ms.;Retardos_ms   movwf   R_ContB         ; Aporta 1 ciclo máquina.R1ms_BucleExterno   movlw   d"249"         ; Aporta Mx1 ciclos máquina. Este es el valor de "K".   movwf   R_ContA         ; Aporta Mx1 ciclos máquina.R1ms_BucleInterno   nop            ; Aporta KxMx1 ciclos máquina.   decfsz   R_ContA,F      ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar).   goto   R1ms_BucleInterno      ; Aporta (K-1)xMx2 ciclos máquina.   decfsz   R_ContB,F      ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar).   goto   R1ms_BucleExterno    ; Aporta (M-1)x2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:; - Retardo_200ms:   2 + 1 + 2 + (2 + 4M + 4KM) = 200007 cm = 200 ms. (M=200 y K=249).; - Retardo_100ms:   2 + 1 + 2 + (2 + 4M + 4KM) = 100007 cm = 100 ms. (M=100 y K=249).; - Retardo_50ms :   2 + 1 + 2 + (2 + 4M + 4KM) =  50007 cm =  50 ms. (M= 50 y K=249).; - Retardo_20ms :   2 + 1 + 2 + (2 + 4M + 4KM) =  20007 cm =  20 ms. (M= 20 y K=249).; - Retardo_10ms :   2 + 1 + 2 + (2 + 4M + 4KM) =  10007 cm =  10 ms. (M= 10 y K=249).; - Retardo_5ms  :   2 + 1 + 2 + (2 + 4M + 4KM) =   5007 cm =   5 ms. (M=  5 y K=249).; - Retardo_2ms  :   2 + 1 + 2 + (2 + 4M + 4KM) =   2007 cm =   2 ms. (M=  2 y K=249).; - Retardo_1ms  :   2 + 1     + (2 + 4M + 4KM) =   1005 cm =   1 ms. (M=  1 y K=249).;; RETARDOS de 0.5 hasta 20 segundos ---------------------------------------------------;Retardo_20s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"200"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_10s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"100"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_5s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"50"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_2s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"20"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_1s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"10"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_500ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"5"         ; Aporta 1 ciclo máquina. Este es el valor de "N".;; El próximo bloque "Retardo_1Decima" tarda:; 1 + N + N + MxN + MxN + KxMxN + (K-1)xMxN + MxNx2 + (K-1)xMxNx2 +;   + (M-1)xN + Nx2 + (M-1)xNx2 + (N-1) + 2 + (N-1)x2 + 2 =; = (2 + 4M + 4MN + 4KM) ciclos máquina. Para K=249, M=100 y N=1 supone 100011; ciclos máquina que a 4 MHz son 100011 µs = 100 ms = 0,1 s = 1 décima de segundo.;Retardo_1Decima   movwf   R_ContC         ; Aporta 1 ciclo máquina.R1Decima_BucleExterno2   movlw   d"100"         ; Aporta Nx1 ciclos máquina. Este es el valor de "M".   movwf   R_ContB         ; Aporta Nx1 ciclos máquina.R1Decima_BucleExterno   movlw   d"249"         ; Aporta MxNx1 ciclos máquina. Este es el valor de "K".   movwf   R_ContA         ; Aporta MxNx1 ciclos máquina.R1Decima_BucleInterno             nop            ; Aporta KxMxNx1 ciclos máquina.   decfsz   R_ContA,F      ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar).   goto   R1Decima_BucleInterno   ; Aporta (K-1)xMxNx2 ciclos máquina.   decfsz   R_ContB,F      ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar).   goto   R1Decima_BucleExterno   ; Aporta (M-1)xNx2 ciclos máquina.   decfsz   R_ContC,F      ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar).   goto   R1Decima_BucleExterno2   ; Aporta (N-1)x2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:; - Retardo_20s:   2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 20000807 cm = 20 s.;         (N=200, M=100 y K=249).; - Retardo_10s:   2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 10000407 cm = 10 s.;         (N=100, M=100 y K=249).; - Retardo_5s:      2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) =  5000207 cm =  5 s.;         (N= 50, M=100 y K=249).; - Retardo_2s:      2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) =  2000087 cm =  2 s.;         (N= 20, M=100 y K=249).; - Retardo_1s:      2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) =  1000047 cm =  1 s.;         (N= 10, M=100 y K=249).; - Retardo_500ms:   2 + 1     + (2 + 4N + 4MN + 4KMN) =   500025 cm = 0,5 s.;         (N=  5, M=100 y K=249).;   ===================================================================;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS";     E. Palacios, F. Remiro y L. López.;      Editorial Ra-Ma.  www.ra-ma.es;   ===================================================================
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 16 de Agosto de 2004, 11:42:00
Bueno, esto es para volverse uno medio loco. He montado el circuito en una protoboad, pero sin pulsadores, poniendo las patillas directamente a 1 o 0, y el programa parece funcionar ok, dependiendo de la entrada que pongo a 0, sale el numero en bcd hacia el 4511 y aqui es donde esta el problema, si no conecto la patilla 5 a masa el display no enciende, y si la conecto, solo sale un 8 y no muestra la informacion que tendria que mostrar.

Simulando en proteus, el display marca 0 cuando no hay ninguna entrada activada, y sin embargo no va cambiando el numero del display.

Que puede estar pasando?? He conectado mal el 4511??

Bueno voy a seguir probando un rato mas, si hay alguna novedad os lo cuento.
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 16 de Agosto de 2004, 13:45:00
Piriots no tengo muy claro la forma en que el receptor va a averiguar y distinguir correctamente la frecuencia que le está entrando. En definitiva se trata de averiguar qué frecuencia es la que entra, yo para esto emplearía un módulo de captura.

Hazlo a tu manera y si no te va te digo como lo haría yo.

Lo del display será una tontería, seguro que lo solucionas.

un saludo
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 16 de Agosto de 2004, 14:28:00
Bueno, llevo toda la tarde peleando con lo del display y estoy por pensar k mi protoboard es una mierda. A las patillas que estan si dejo el 4511 sin enviarle informacion el display tendria k marcar 0, y siempre marca 8, lo que he visto es que a las patillas que no hay nada conectado les llega 2.5v. De donde sale este voltage, creo que la protoboard debe de tener algun falso contacto que me esta haciendo romper la cabeza.

Que creeis vosotros??
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 16 de Agosto de 2004, 17:31:00
Pues ya he solucionado lo del display, sabeis que le pasaba??? pues nada. Os cuento, no se que coño pasa que si cuando el circuito esta en marcha, si pongo la mano encima de la mesa donde tengo la protoboard, el display marca 8 y no hace nada, y si no toco la mesa rula bien. A que es debido esto??
Título: RE: Control de reles a distancia mediante IR
Publicado por: Modulay en 16 de Agosto de 2004, 23:17:00
Como tienes conectado el pin de reset? Por lo que veo en el esquema está directo a Vcc.Yo pondría una resistencia de 10K.
Ya tengo mi led infrarrojo y mi fototransistor!!
Me han salido mas baratos de lo que suponía,60 céntimos de euro cada uno.
El fototransistor tb es igual que un led,de color transparente,con su cátodo y su ánodo.
¿Cómo es la correspondencia de estos dos terminales con colector y emisor?
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 17 de Agosto de 2004, 08:01:00
Jajajaja, bueno te digo que cosas como esas me sucedieron cuando hice mi tesis. La verdad no soy experto en esas cosas, pero si te digo que he averiguado un poco y muchas veces nuestro circuito es afectado por muchos factores. Recuerda que las condiciones ideales solo las ves en el papel y es muy diferente al mundo real donde te afectan cosas como:
La humedad del ambiente, mal estado del protoboard, capacitancias que se forman por las líneas del protoboard, polvo en el circuito (todo esto afecta mucho más cuando en estas condiciones usas osciladores de alta frecuencia), estática del cuerpo, entradas de chips en alta impedancia (ruidos), etc.… en fin, un sin número de causas que a veces llamamos Murphy o cangrejos, pero que en definitiva afectan al circuito.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 17 de Agosto de 2004, 14:32:00
Buf bueno, el 4511 ya rula ok pero no consigo hacer que salgan los numeros en el display, cuando lo conecto al pic, independiente de la entrada que este activa, siempre hay todas las salidas a 1.
A ver si alguien es tan amable de simular el programa a ver si me puede decir el error.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 18 de Agosto de 2004, 14:33:00
Piriots el pin 5 del 4511 debe de ir a masa no a Vcc.

He conseguido simular correctamente el circuito en PROTEUS; pero eliminando el archivo .inc y todas las llamadas a temporizaciones.

¿Funcionará físicamente con las temporizaciones,? ... repásalo
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 18 de Agosto de 2004, 14:41:00
Lo del pin 5 del 4511 ya lo hice, si estaba conectado a vcc el display no se encendia.

Pues fisicamente, el display solo marca 0.  Sin un osciloscopio no se como puedo ver si los pulsos tienen la temporizacion adecuada o saber si se mandan estos pulsos o no.  
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 18 de Agosto de 2004, 23:56:00
Oye Piriots ya he conseguido que funcione con el archivo de las temporizaciones. Con las prisas había colocado en mala posición el INCLUDE "Retardos.inc".

Después del ORG    0x00 debes de colocar:

   GOTO    INICIO
   ORG    0x05

   INCLUDE "Retardos.inc"

... y así te funcionará (coloca el osciloscopio y lo compruebas)

Un saludo y me voy de nuevo.
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 19 de Agosto de 2004, 11:35:00
Muchas gracias pocher!!! pues si que rula, pero sin los condensadores para eliminar los rebotes, sipongo estos condensadores ya no rula, o sea que tocara eliminar los rebotes por soft.
Cuando este el programa terminado lo posteo.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 19 de Agosto de 2004, 16:08:00
Piriots, puede ser que no estés colocando bien los condensadores o tal vez el valor de los mismos no es el adecuado.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 20 de Agosto de 2004, 11:31:00
Bueno, he modificado el esquema del emisor para hacer las correcciones necesarias y ahora ya rula todo.

Pues ahora empezare con el receptor, el hard esta ok?? o me he colado en elgun sitio?
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 22 de Agosto de 2004, 10:19:00
Hola gente de todopic!! Bueno la cuestion es que estoy hacioendo el soft del receptor, y tengo un problema con la parte del contador. Yo he echo esto pero no rula, no se como hacerlo. A ver si alguien me echa una mano
Codigo:
;CONTADORES*************************************************************************************;; Los contadores se encargan de saber si es la primera o la segunda vez que llega un determinado ; pulso a RA4, si es la primera vez que llega el pulso enciende el rele, si es la segunda vez lo; apaga.ContadorRele1      incf   Contador0,F         ; Incrementa el Contador y comprueba si es 1 o 2 mediante restas   movlw   d"2"            ; Resta 2 al contador   subwf   Contador0,W         ; W = contador -2   btfsc   STATUS,C         ; ¿C=0?   goto    Rele_ON            ; Es la primera vez que se pulsa, enciende el rele   goto   Rele_OFF          ; Es la segunda vez que se pulsa, apaga el rele   Rele_ON   bsf      PORTB,0   goto   MidePulsos   Rele_OFF   bcf      PORTB,0   goto   MidePulsos      End   
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 22 de Agosto de 2004, 10:35:00
Piriots, una pregunta: Usas algún simulador?

La mayoría de estos tienen una facilidad que les permite correr los programas paso a paso y ayuda mucho a localizar las fallas en los programas. Trata de correr el programa completo de esta manera, seguro que vas a encontrar el problema.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 22 de Agosto de 2004, 12:53:00
Para simular uso Proteus, como se hace esto de simular el programa por partes?
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 22 de Agosto de 2004, 13:34:00

Cuando estés corriendo el programa le das al botón de Pausa que está abajo a la izquierda. Luego te aparecerá la ventana con el programa y en esa ventana, en la parte superior derecha tienes varios botones para simular paso a paso.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 22 de Agosto de 2004, 14:27:00
No me aparece esta ventana que dices, pero, una cosa. Volviendo al emisor, si pongo el  osciloscopio, no veo los pulsos que tendrian que salir por RB7, y los pulsadores conectados a RB0 y RB2, al pulsarlos no se modifica el display.

Jder k pesao k soy, os agradezco muuuuucho vuestra paciencia.
Título: RE: Control de reles a distancia mediante IR
Publicado por: pocher en 23 de Agosto de 2004, 04:28:00
¡Como que no te funciona! ... aquí lo tienes: http://miarroba.com/foros/ver.php?foroid=256746&temaid=2231327
Respecto al receptor sigo sin tener claro como vas a distinguir las frecuencias para que te active uno u otro relé.

Otra cosa los números 200us, 500us, 1ms, 5ms, 20ms, 100ms y 200ms los has puesto "a voleo" (¡al hazar!) ? ... no son muy simétricos que digamos.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 23 de Agosto de 2004, 10:35:00
Piriots, te copio algo que puse en otro post de ultrasonidos que me parece que te puede servir:


Cito:

“Casualmente estoy haciendo algo parecido pero con IR. Inicialmente amplifiqué la señal con un OPAMP, pero no podía alejarme más de 2m, luego amplifiqué la señal con 2 OPAMP en cascada y podía alejarme hasta casi 10m. Luego se me generó el problema de que solo funcionaba de día porque en la noche, al encender la luz ésta emite radiación IR a 60Hz , por lo que tuve que diseñar un filtro activo usando cascada de bloques de segundo orden y resuelto el problema. A pesar de que estoy usando 3 OPAMP no hay problema porque un Chip LM324 trae 4.

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 24 de Agosto de 2004, 11:57:00
Pocher ahora si k rula, el problema estaba en k el asm que tenia yo habia un error, rb0 estaba como salida y rb7 como entraba y por esto no vaia nada en el osciloscopio.

Respeto a los numeros no son a boleo, los e elegido porque son los que hay en la libreria de subrrutinas y las e escogido de manera que haya un retardo entre  dos pulsos por esto no son muy simetricos.

Respecto al emisor para encender un rele u otro va a "medir la longitud del pulso"

Testeo rA4 que es donde entra la señal, si es 1 vuelvo a testear al cabo de 400microsegundos de manera que cuando teseta, si el pulso es  el que enciende el primer rele detectara un 0 y si es el que enciende el segundo rele detectara un 1.

Con el codigo lo veras mas claro.

Codigo:


   btfss   PORTA,4            ; Testea RA4
   goto   MidePulsos         ; Es 0 y vuelve a testear
   call   Retardo_200micros   ; Espera a ver si termina 1 el pulso
   call   Retardo_200micros   ;
   btfss   PORTA,4            ; Velve a testear
   goto   ContadorRL1         ; Es 0, ha terminado el 1 pulso, va al contador del 1 rele
   call   Retardo_200micros   ; Es 1, espera a ver si termina el segundo pulso
   btfss   PORTA,4            ; Velve a testear.
   goto   ContadorRL2         ; Es 0, ha terminado el 2 pulso, va al contador del 2 rele
   call   Retardo_500micros   ; Es 1, espera que termine el tercer pulso
   btfss   PORTA,4            ; Vuelve a testear
   goto   ContadorRL3         ; Es 0, ha terminado el 3 pulso, va al contador del 3 rele
   call   Retardo_5ms         ; Es 1, espera a ver si termina el 4 pulso
   btfss   PORTA,4            ; Vuelve a testear
   goto   ContadorRL4         ; Es 0, ha terminado el 4 pulso, va al contador del 4 rele
   call    Retardo_20ms      ; Es 1, espera a ver si termina el 5 pulso
   btfss     PORTA,4            ; Vuelve a testear
   goto   ContadorRL5         ; Es 0, ha terminado el 5 pulso, va al contador del 5 rele
   call   Retardo_100ms      ; Es 1, espera a que termine el 6 pulso
   btfss   PORTA,4            ; Vuelve a testear
   goto   ContadorRL6         ; Es 0, ha terminado el 6 pulso, va al contador del 6 rele
   call   Retardo_20ms      ; Es 1, espera a que termine el 7 pulso
   btfsc   PORTA,4            ; Vuelve a testear
   goto   ContadorRL7         ; Es 1, detecta el 7 pulso, va al contador del 7 rele
   



Ahora estoy liado con el codigo de los contadores, a ver si me sale.

Los contadores son para saber si es la primera o la segunda vez que le llega el pulso.

Al principio el contador tiene que valer 2 y cada vez que le llegue el pulso correspondiente restar 1, de manera que si el resultado es diferente de 0 enciende el rele y si es 0 lo apaga.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 27 de Agosto de 2004, 20:33:00
Piriots, cómo va todo? Llevo tiempo que no veo comentarios del circuito, te funcionó? Explotó?

Bueno, quería darte una recomendación para la puesta a punto y es la prueba por etapas. Por ejemplo: como comentaste que terminaste el emisor deberías probar que está emitiendo la señal tal y como la diseñaste. Podrías usar un fototransistor con una resistencia en colector, el emisor a tierra y le pegas el osciloscopio en el colector y verificas que trabaja bien.

Para el receptor, antes de llegar al PIC te recomiendo que verifiques que la señal que le llega a éste también es la que quieres. para eso seguramente tendrás que amplificar la señal que llega al fototransistor y seguidamente filtrarla para evitar que la emisión IR de la luz eléctrica te interfiera.

Yo creo que cuando verifiques que esto trabaja podrás chequear si el programa del PIC te manipula correctamente la señal de entrada para el control de los relés.

Bueno, es solo una sugerencia. Creo que es una buena forma para ir descartando fallas, porque normalmente cuando se monta todo de una sola vez y luego se ve que no funciona es mucho más difícil encontrar el o los problemas que afectan al circuito. Espero que te salga todo bien.

Suerte!!!

Saludos,
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 28 de Agosto de 2004, 14:49:00
Es que estos dias ando demasiado liado y he dejado el circuito un poco abandonado, no estoy en casa mas que para comer y dormir  , estamos montando unas farras con los colegas es k ya se temina el verano y ai que abrobechar pk se termina la buena vida, pero en cuando haya novedades os las hare saber.

Salu2
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 07 de Septiembre de 2004, 19:46:00
Piriots, navegando por un link que colocó alguien en el foro encontré este control remoto con PIC que te puede interesar.

Saludos,

Se llama: Activación de carga con infrarrojo

http://www.mundomicro.com.ar/index.html
Título: RE: Control de reles a distancia mediante IR
Publicado por: piriots en 08 de Septiembre de 2004, 15:33:00
Muchas gracias Carlete, lo tendre en cuenta cuando reemprenda el proyecto.

Ya se k ultimamente estoy un poco desaparecido, pero sigo aki es que me ha caido encima una gorda.

Las pruebas de acceso a la universidad me an salido como el culo, y ahora tendre k hacer un CFGM de Desarrollo de productos electronicos. El caso es que tendre que hacer 20 KM todos los dia y con la moto como que no es plan, en invierno hace un frio que te cagas. Ahora me estoy sacando el carne de coche, y esto tiene prioridad sobre los pic.

Por cierto, en breve dispondre de insoladora para hacer placas. Ya dispondria de ella si no fuera porque los @#~%&ªº"@ que hacen el transporte (la he conprado por internet a www.micropik.com) se la cargan, me han llegado 2 insoladoras con los tubos rotos. Suerte que la gente de micropik son muy serios y efectivos y se hacen cargo de la reparacion y el transoprte sin ningun cargo para mi.

En cuando haya hecho mis primeras plakitas que funcionen ya pondre fotos.

Ostia que rollazo que os he pegado!!!!!!!!!!!!!!

Bueno Salu2 a toda le gente del foro des de Tarragona.
Título: RE: Control de reles a distancia mediante IR
Publicado por: Carlete71 en 08 de Septiembre de 2004, 16:59:00

No me imagino lo que debe ser 20Km en moto en invierno, pero no debe ser fácil.

Saludos,