TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: carcamusa en 13 de Diciembre de 2002, 06:24:00
-
Hola, es la primera vez que tengo contacto con este foro y estoy desesperado. Tengo en el coche una alarma patrol line Phyco, de esas que llevan una especie de tarjeta que abre el coche cuando te acercas. Dentro de la tarjeta hay un emisor (433mhz) el chip y un detector de movimiento muy sensible (es una lamina circular metalica dorada). MI problema es que la susodicha tarjetita tiene un sistema auto Off y se queda inactiva cuando pasan dos minutos sin detectar movimiento. Imaginaros me quedo esperando a alguien en el coche y a los dos minutos la alarma empieza a sonar, me bajo a poner gasolina y si hay alguien en el coche y le dejo la tarjeta para que no se cierre la tiene que estar moviendo, en fin un coñazo. Puentee el detector de movimiento para intentar que estuviera siempre activo aunque me durara menos la pila pero no funciono porque si los dos cablecitos estan pegados no rula, tiene que ser con un pequeño roce de un cable y otro. Tambien he pensado en leer el codigo del chip y cambiarlo pero esta protegido. Lo unico que se me ocurre es añadirle un chip smd (hay especio de sobra en la tarjeta) que pueda genera el mismo impulso que genera el detector de movimiento, es decir, que genere ese conctacto, y con eso engañar al chip de la propia tarjeta y ya ponerle el tiempo que yo quiera que este generando ese impulso (serian unas tres horas). La tarjeta esta alimentada con una pila de 3 voltios. Lo que os pediria a vosotros expertos en el tema es si esto que he pensado es viable y con que chip puedo solucionarlo y si seria complicado el codigo. Tengo en mi casa algun 16f84 smd que creo que podrian funcionar??.Incluso he pensado en ponerle el circuito de los pin esos que dan de propaganda que tienen un led intermitente y aprovechar el impulso del led para acoplarlo al detector de movimiento, pero estoy un poco perdido y no se si seria posible. Os agradeceria mucho que me ayudarais con este tema ya que estoy un poco desesperado con la alarmita de las narices.
Gracias y saludos a todos
-
Si no te entiendo mal, lo que tu quieres es una especie de pulsador cada x tiempo. Además realizar esto con un, por ejemplo 16F84.
Si es así, es fácil, pues tu puedes lleva a masa o a +Vcc cualquier pin en un instante determinado. Dependiendo del circuito que tengas, es posible que quizás necesites un transistor exterior (eso hay que ver la corriente que debe soportar, que será pequeña). el F84 no se si tiene oscilador RC, pero hay otro chip que es el 16F628, que lleva oscilador interno y no necesitarías poner exteriormente ni cristal ni nada, aunque sobraría mucho micro para hacer esta tarea. Hay otros micros como el 12c508 que son más pequeños y tambien podrían valerte. El código para activar un pin cada 60 segunos, por ejemplo es muy simple. En PBP que es lo que yo uso es poner un pause y despues activar el pin, y así siempre. Es decir 3 instrucciones.
Si nos das unos detalles más de conexión podemos decirte algo más detallado.
Saludos.
Ricky
-
Hola, em primer lugar gracias Ricky por contestar. Bueno vamos al lio. Te coloco una imagen del circuito y he señalado los dos puntos que hacen la union que excitan al chip que lleva el circuito (el chip esta debajo de ese circulo de metal por eso no se ve), la union no puede ser fija porque como te dije no funciona. Bueno, como veras la pila es de 3v y el consumo es importantisimo por eso me gustaria que me dijeras que chip podria hacer esto y que fuera pequeño y de bajo consumo y que no necesitara cristales o transistores externos. Por lo que me dices basta con un codigo pequeño y la cosa parece simple. A ver si me puedes decir que chip seria el ideal y como iria el conexionado. Otra cosilla, se trataria despues de general un hex y grabarlo con un t-20 ¿no?. De programacion no entiendo mucho, tengo el mpasm de microchip para pasar los asm a hex, no se si este compilador entendera el codigo hecho con Pic Basic Pro (eso significa PBP ¿no?). Como veras estoy bastante perdido. Te agradeceria mucho que me escribieras las instrucciones para que el chip que me digas haga los contactos por un tiempo de 3 horas cada vez que sea excitado por el sensor de movimiento que es la chapa circular dorada.
Espero no ser muy pesado pero es que estoy desesperado.
Saludos y gracias
-
Hola, por lo que se aprecia en la foto,el disco plateado que indicas con A y B ... es un beeper piezoelectrico, sim ilar a las campanillas de los telefonos, o las tarjetas musicales.... ¿lo emplearan como microfono?... estas seguro que es el sensor?.. si es asi, detectan audio... se podrian generar pequeños chasquidos...
avisanos si es posible ok? 
-
Hola,
Perdona por la tardanza, pero he estado fuera y no he podido conectarme.
Efectivamente el disco es una cerámica piezoeléctrica, que puede trabajar con ultrasonidos para detectar el movimiento de personas u objetos.
Una idea, si eliminamos el posible detector de movimiento que consideramos que es la cerámica, quizás se termine tu problema. Intenta desoldar los contactos de la cerámica piezoeléctrica y prueba. Ten cuidado porque es de un material frágil y puede partirse.
Saludos.
Ricky
-
Hola y gracias a los dos por intentar ayudarme. Os explico:
Todopic: Es efectivamente un piezoelectrico y sí es lo que detecta movimiento, pues lo he anulado para hacer pruebas y la tarjeta deja de funcionar. Lo que no creo es que detecte audio, o por lo menos a niveles normales pues la he tenido en una mesa con conversacion normal y la tele puesta y no se activa. Hombre es posible que si la pongo al lado de un altavoz a toda pastilla se active pero estoy seguro que el sistema se activa por movimiento. Sobre activarla por chasquidos no se que decirte, explicate un poco mas.
Ricky: Ya he hecho lo que me dices, es decir desoldar el cable de la cerámica pero no funciona, solo se activa si unes el cable del circulo blanco con el cable del circulo dorado y si mantienes esta union tampoco funciona. Se trata de pegar lo cables y separarlos y pegarlos otra vez (contactos intermitentes) asi es como unicamente funciona. Creo que el chip debe reconocer cambios de estado y si no no funciona.
He pensado que si saco un pequeño cable de cada uno de los dos contactos (A y B) y se los meto a un chip (patillas de entrada) de forma que cuando el chip detecte el cierre saque una señal por una patilla de salida y esta patilla la conecto de alguna forma al circuito para activar el chip de la tarjeta creo que podria funcionar. lo que no se es a donde conectar la salida del chip adicional. En resumen seria hacer que un chip adicional detectara el cierre y estuviera dos horas haciendo contactos intermitentes. No se si me he explicado bien. Ya me contareis que os parece la idea.
Bueno a ver si podemos hacer que esto rule, no creo que sea tan dificil viendo lo que sois capaces de hacer.
Saludos y gracias a los dos.
-
Hola carcamusa,
Vamos a ver, lo que entiendo es que lo que si te funciona es hacer un corto entre A y B durante un instante corto de tiempo y soltar.
Bien, tienes que mirar si hay tensión entre los pines A y B. Seguramente no habrá ya que es una cerámica y le meterán una señal de 40 KHz durante un instante corto entre ambos pines. El problema estriba en hacer un corto entre A y B. Tienes que probar con un transistor, ya que con el chip directamente no se ouede hacer el corto y con un rele extern es impensable por tamaño y por consumo. La idea es utilizando un 2n2222 (que se puede encontrar en encapsulado sot23, muy pequeño), pones desde A una resistencia de 470 OHm al coletor del 2n2222 y desde el emisor conectas a B. En la base pones otra resistencia digamos de 1K (estas R pueden ser en SMD para que ocupen poco). Bueno la prueba es como sigue: en la resistencia de base conectas y desconectas +Vcc (que en tu caso son 3voltios) con una cadencia de 1 segundo y compruebas si detecta el movimiento. Si este circuito anula la detección, entonces se puede pasar al generador de pulsos con el micro, por ejemplo un 12LC508A que trabaja a partir de 2.5V. Habría que intentar meter al micro durante el periodo de cuenta en sleep, esto o se si se puede hacer, es para ahorar pila de litio, ya que sino te la merinda en unos días, pues el micro consume algún miliamperio en funcionamiento normal.
Saludos
Ricky
-
Hola Ricky, voy a probar lo que me dices a ver que es lo que pasa, pero creo entender que en caso de que funcione estaria siempre haciendo cortos entre a y b, tampoco me dices si tengo que desoldar los cables de la lamina circular para anularla o le pongo los componentes que me dices sin anular la lamina circular.
Lo que pretendo es que cuando por movimiento se produzca el corto, es decir lo que pasa ahora, pues el circuito que le añada siga haciendo cortos por unas dos horas y luego pase a sleep, ya que lo que hace ahora es estar solo dos minutos y luego sleep. No se si la idea de lo que me has explicado es esta o que este todo el rato haciendo cortos. Bueno ya me contaras.
Probare lo que me has dicho y te dire los resultados
Saludos Ricky
-
Hola carcamusa,
De momento esto es una idea para provocar el corto a ver si lo podemos engañar. De este modo, con el transistor, provocaríamos a mano los cortos para ver si vamos por buen camino. Después el timer lo podemos hacer con un micro cada x tiempo y que ataque al transistor. No desueldes nada, en paralelo con lo que tienes pones el transistor según te he indicado. Cuando lo hayas probado me dices algo y según vaya así podemos hacer.
Saludos
Ricky
-
he estado leyendo las sugerencias que le han dado a carcamusa , en realidad lo ke le vengo a decir a carcamusa es una solucion muy simple. primero el disco es un piezo electrico y como tal lo ocupan como sensor de vibracion por lo general para cocuparlo como tal los fabricantes lo sujetan muy bien y aparte le ponen un peso extra(le soldan algo para que pese mas) y puedan sentir mas la vibracion . bueno para la solucion que te digo no es mas que ponerle un mic de electret en paralelo con el piezoelectrico. para que aparte de vibracion detecte RUIDO ! que es lo que mas se hace en un coche(motor ,clima, voces , auto estereo etc).y asi te evitas estarle mandando pulsos cada determinado tiempo,ya que el mismo ruido se va a encargar de eso para conectar el mic solo tienes que alimentarlo directamente con una resistencia de 1k aprox por el lado posistivo del mic(recuerda que el mic de electret tiene polaridad) y entre la conexion de la resistencia y el mic sacas la salida para el punto B con un capacitor ceramico (de su valor dependera la sensibilidad del mic y la recepcion de ciertos ruidos ).bueno espero funcione la solucion que aqui te puse SUERTE.......
-
Hola, sois de P.M. vaya tela de foro. Voy a probar las dos cosas y a ver que pasa. Hoy ya no puedo porque es sabado y no puedo comprar los componentes, pero lo hare el lunes. Muchas gracias a los dos. Una cosilla acido, que condensador le puedo poner para que tenga la mayor sensibilidad posible? ya que este circuito va dentro de una cajita de plastico y puede amortiguar bastante el sonido. Buno pues probare las dos cosas aunque me parece que la idea de acido si funiona quizás consuma menos pila que la de Ricky. Porbaré las dos a ver que pasa. Muchas gracias a los dos. Ya os contare
Saludos
-
Hola, he encontrado por el cajon de la electronica un micro electret y he hecho lo que me dijo acido, pero solo he encontrado tres condensadores, uno de 100.000 picoF (104 es lo que pone) y otro de 220.000 picoF (224 es el numero que pone) y otro de forma de lenteja de 100 pF (pone 101) ¿creo que la interpretacion de la capacidad es esta? ¿no?. Bueno pues el tema es que creo que los condensadores no son los correctos pues con los dos primeros siempre esta activando el sistema aunque la habitacion este en silencio absoluto y con el de 100pf el sistema no se activa ¿de que capacidad tengo que poner el condensador para que sea sensible pero no este siempre activando el sistema aunque no haya ruido?. Otra cosa que no estaria mal tampoco seria dejarlo siempre emitiendo (con el 104 y el 224 se produce esto), pero ¿Cuando duraria la pila cr2450? ¿Consume mucho el electret?.
Ricky, lo tuyo no lo he podido probar porque el transistor no lo tenia, ya lo probare mañana y te cuento. Otra cosa, en los transistores el colector es la patilla izquierda, el emisor la derecha y la base es la central ¿no?.
Bueno pues muchas gracias y ya me direis.
Saludos
-
carcamusa mira sobre los condesadores tienen que ser de tipo experimental te puse de tipo ceramico (por que estos permiten pasar nada mas ciertos ruidos o frecuencias)pero tambien puedes usar electroliticos como yo desconosco el circuito nada mas me fui guiando ´por el tipo de sensor ,no te puedo decir exactamente de que tipo de condesador debe llevar,pero si debe de funcionar el circuito.espero que tengas suerte .......
el consumo del electret es minimo, pero si te sugiero que pongas un interruptor para cuando quieras darlo de alta o baja .
-
Gracias acido, voy ahora mismo a la tienda a ver que me cuentan y compro el transistor para hacer tambien la prueba de ricky.
Saludos, gracias.
-
Hola, ya he hecho todas las pruebas la del micro que la hice ayer y la del transistor que la acabo de hacer. Bueno Ricky, el tema funciona y efectivamente cuando toco la base con +vcc el sistema se activa. ¡¡funciona de maravilla!!. Otra cosa, sin conectar nada adicional entre los puntos a y b hay tension, el tester me registra en la escala de 2000m de DCV el valor de 375. Tambien me he dado cuenta que el punto A tiene continuidad con el negativo de la pila. Estoy alucinando porque parece que esto va por buen camino.
Ahora el tema es como hacemos el resto.
Yo creo (en mi inexperiencia) que de lo que se trata es que conectemos a y b a dos patillas del chip y cuando este (el chip) detecte el corto (que se produce cuando el piezoelectrico detecta movimiento) entonces hacemos que saque por otra patilla de forma intermitente y por el tiempo que queramos +vcc al transistor y despues del tiempo que sea que pase a sleep. Pero bueno ya me contaras tu que yo soy novato en esto.
He estado mirando un transistor que tego en smd es el BCR119 que ya lleva la resistencia de base incorporada y si vale nos ahorrariamos meter un componente. Las caracteristicas del transistor son las siguientes:
-transistor de silicio NPN con integrated resistor
-SMD, Resistencia Base 4,7K ohmios; 50v; 0,1A
Otra cosa, si cogemos el chip 12LC508A, este se podria programar con un t-20 y el icprog???. El icprog lo contempla en los tipos que soporta, y el t-20 que tengo tiene un zocalo de 8 patillas, otro de 18 y otro de 28.
Bueno muchas gracias por todo y espero noticias para seguir adelante.
Saludos
-
Hola carcamusa,
El transistor vale, la R es un poco alta pero yo creo que funcionará sin problemas: -transistor de silicio NPN con integrated resistor-SMD, Resistencia Base 4,7K ohmios; 50v; 0,1A
Vamos a ver si lo he entendido, tu lo que quieres es producir cortos entre A y B cada x tiempo para engañar al receptor y que se crea que hay movimiento y entonces no conecte la alarma. Esta es la idea que yo tengo de lo que queremos conseguir. Confirma si estoy en lo cierto.
Bueno como el circuito de excitación funciona bien, ahora lo que tenemos que hacer es coger el micro y programarlo para que cada x segundos ponga un 1 (+5V) en una de sus patas que irá conectada a la base del transistor (a través de la resistencia). Con esto cosigo que cada x tiempo se produzca el corto deseado y se detecte movimiento (virtual en este caso).
El micro podría ser el que dices ya que funciona con baja tensión (recomendado en esta aplicación). En cuanto al grabador, no he utlizado el TE-20 ni el ICProg, pero si viene en la lista de los que soporta sebería funcionar con él.
Ahora nos quedaría hacer el programa para que cada x tiempo genere un pulso en un pin. Debes especificar qué pin y el tiempo para poder continuar. La programación sería por ejemplo en PBP con el comando NAP que es un pause con bajo consumo, con lo que el consumo durante la espera se reduce al mínimo. Este comando no es tan preciso como el PAUSE, pero tiene la ventaja del consumo. Luego pondríamos un uno en el pin elegido como salida durante un corto instante y lo volveriamos a poner a cero el pin. después nuevamente a esperar otro periodo y así indefinidamente hasta 2 horas que tendrías que determinar lo que quieres que haga.
Saludos
Ricky
-
También podemos usar el comando SLEEP con saltos de 2.3 segundos y que pone tambien en bajo consumo al bicho (perdón, al micro).
Saludos.
Ricky
-
Hola Ricky, te voy a explicar detalladamente de lo que se trata pues la primera parte creo que no me he explicado bien.
El chip tiene que ser excitado en un primer momento por el movimiento registrado en el piezoelectrico, pues si no estaria siempre funcionando y la pila se iria al garete, es decir, el chip detecta un primer corto debido al movimiento real a traves del piezoelectrico, este corto inicial por movimiento real es lo que activa el chip y luego este ya comienza a hacer cortos por un tiempo de 2 horas y despues pasa a sleep. Cuando el chip detecta otro corto por motivo de movimiento real vuelve a activarse y esta dos horas haciendo cortos....etc.
por pasos:
-se produce movimiento real y se produce un corto en el piezoelectrico que debe ser registrado por el chip para comenzar el ciclo
-comienza el chip a producir cortos por si mismo durante dos horas
-a las dos horas el chip pasa a sleep y espera el primer corto producido por movimiento real en el piezoelectrico.
Sin hacerle nada el sistema detecta el movimiento pero a los dos minutos si no hay mas cortos se desactiva y lo que pretendo es ponerle el chip para que cuando haya movimiento el chip se encarge de hacer cortos durante dos horas.
Creo que quizass lo que no hayas entendido bien es que el chip que le pongamos debe ser activado en un primer momento por movimiento real a traves del corto que se produce en el piezoelectrico.
Bueno Ricky creo que me he explicado lo mejor que he podido. Saludos y ya me diras.
Gracias
-
Hola carcamusa,
Esa primera activación no la había tenido en cuenta, se me había escapado en algún momento.
Tenemos que pensar algo para la activación, quizá entre uva y uva surja alguna idea.
Feliz 2003
Saludos
Ricky
-
[cita title=Escrito originalmente por AciD0]
Hola es mi primera vez que entro en este foro para electronicos
quisirea saber si me puedes ayudar:
NECESITO QUE ME AYUDEN A ENTENDER LA FORMA DE CONFIGURACION DEL TIMER TMR0 DEL PIC POR MEDIO DE SOFTWARE YA QUE NECESITO SABER AL MOMENTO DE REALIZAR UN PROGRAMA QUE ME DE 1 SEGUNDO DE TIEMPO ANALIZANDOLO VEO QUE HAY UN DESFAZAMIENTO EN EL TIEMPO CON RESPECTO A UN CRONOMETRO COMO INSTRUMENTO DE MEDICION DEL TIEMPO REAL.
SOLO DESEO SABE AQUE SE DEBE ESE PROBLEMA Y SI USTEDES ME PUEDEN AYUDAR A SOLUCIONAR ESTE DETALLE (ERROR)
-
No hago mas que darle vueltas al tema y no encuentro una solución válida. No podemos usar la misma cosa (El transistor para producir cortos que es en principio una salida) como entrada. O quizá si. Si solo le hacemos caso para arrancar la primera vez y ya cuando nosotros producimos el corto no hacemos ni puto caso, pues sería una idea válida. esto tengo que pensarlo y es una posibilidad.
Hago el esquema y te mando un mensaje.
Creo que podemos conseguirlo. Ten un poco de paciencia.
Saludos
Ricky
-
Hola Cronico, por lo que veo, empleas mal la interrupcion, ya que al ocurrir una in terrupcion, el m icro salta a la posicion 04... es decir, te va al principio del programa... y finalmente atiende tu BTFS...
;
;-------------------------------------------------------------------
;- ISR -
;-------------------------------------------------------------------
;
ORG H"000"
goto Inicio
;
ORG H"004"
;
Interrupciones ;interrupciones
;
bcf INTCON,GIE ;Asegura la
btfsc INTCON,GIE ;deshabilitacion
goto Interrupciones ;global de las interrupciones
;
;Salva registros
;
movwf SALVAW ;Salva W
swapf STATUS,W ;Invierte STATUS --> W
movwf SALVASTATUS ;Salva STATU
;
;Selector
;
btfsc INTCON,T0IF ;? Hubo sobrefujo en TMR0 ?
goto T0 ;Si
btfsc INTCON,INTF ;? Hubo interrupcion en RB0 ?
goto In ;Si
btfsc INTCON,RBIF ;? Hubo algun cambio de RB4-RB7 ?
goto Rb ;Si
Ee
bsf STATUS,RP0 ;Banco 1
bcf EECON1,EEIF ;Pone a cero el indicador para poder salir de la ISR
bcf STATUS,RP0 ;Banco 0
goto RestaurarRegistros ;Retorna habilitando todas las interrupciones
T0 bcf INTCON,T0IF ;Pone a cero el indicador para poder salir de la ISR
goto RestaurarRegistros ;Retorna habilitando todas las interrupciones
In bcf INTCON,INTF ;Pone a cero el indicador para poder salir de la ISR
goto RestaurarRegistros ;Retorna habilitando todas las interrupciones
Rb bcf INTCON,RBIF ;Pone a cero el indicador para poder salir de la ISR
RestaurarRegistros
swapf SALVASTATUS,W ;Invierte STATUS --> W
movwf STATUS ;Restaura STATUS
swapf SALVAW,F ;Invierte --> F
swapf SALVAW,W ;Restaura W
retfie ;Retorna habilitando todas las interrupciones
uy uy uy que feo queda... te adjunto el asm ok
-
HOla ricky, el piezo electrico activa de alguna forma el chip original que lleva el circuito, es decir, que de alguna forma el piezo pone en marcha el chip pero por mas vueltas que le doy no se como, seguro que encuentras una solucion.
Estoy empezando a trastear con el proteus y esto es la leche, menudo programa y menuda currada se han tenido que pegar para hacerlo es impresionante.
Bueno Ricky veras como se te ocurrirá algo.
Saludos