jueves, 7 de agosto de 2008

Audiopusher

Bueno, ahora si tengo un solo lugar donde publicar mi proyecto de verano, la idea base "prender la computadora sin estar en casa", y con esto terminé creando un circuito con el que llamando a cierto celular, es capaz de prender una computadora (o cualquier aparato al que se pueda adaptar).

Inicialmente lo postié en psicoxp, pueden acceder a el a través de este enlace Audiopusher, ahora los dejo con la entrada.

Here's my first summer project, I just wanted to turn on/off my computer from my school, to manage my downloads. Why? Just to see if it will work XD, and to keep low the family's electric bill. I'm from Mexico, so it's mostly in spanish, but I translated almost everything, the english part is writed in italic style. I hope that you will understand my english hoho

AVISO... contenido muy técnico.

.::Picar aquí para leer entrada::.
.::Click here to read the entire post::.


Audiopusher, turn on your pc with your cell phone

Bueno aquí les dejo mi proyecto de verano juju, le agrego "subtítulos en inglés" porque quiero postearlo en otro lado también. Si he traducido mal o hay una mejor forma de escribir alguna frase, háganmelo saber por favor.

Con diversos programas uno tiene la posibilidad de manejar una computadora a distancia a través de internet, tal vez estando en la escuela o trabajo podemos revisar y administrar nuestras descargas en la computadora de la casa. Pero quería encontrar una manera de también poder prender la computadora aún sin estar en la casa, para que no fuera necesario prender la computadora cada vez que salgo de mi casa y así preocuparme menos por el gasto de luz, poder prenderla y apagarla cuando quisiera. Así que hice este circuito.
With several programs you can control your computer from another terminal through internet, maybe you’re in the school or work, and you need to manage your downloads in home. But, what can you do if the pc is not precisely turned on? That’s why I made this, I just don’t want to worry about the electric bill, and keep the pc off when i leave home, and turn it on in any moment if I need. So I made this.

En un principio el sensor iba a ser un sensor de llamadas (esos circuitos que se iluminan con leds cuando recibes una llamada) el que activara un PIC, este PIC daría un pulso a un relé que activaría el encendido, y esperaría un tiempo dado antes de permitir otra entrada (debido al encendido intermitente de los leds del sensor que dura cierto tiempo). Mi experiencia con el sensor fue un tanto difícil, no logré excitar las entradas del PIC ni con un buffer CMOS, así que platicando con un amigo, me recomendó usar un opamp, así que empecé las pruebas con el LM386 que funciona con baterías sin problema.
At first, I wanted to use those sensors from the led colored stripes for cell phones, one of them would trigger a relay for 200ms through a PIC, and would keep waiting for 1 minute without being doing anything, after that minute once again would keep waiting for a input from the sensor. But in the tests, I just couldn’t be able to use the signals from the sensor, not even with a CMOS buffer, so I choose to get a signal from an audio amplifier LM386, which even will work with batteries.

El diagrama final es el siguiente:
The final schematic is this:



Tiene un 7805 para usar cualquier regulador de corriente común como alimentación (o batería de 9v), siempre y cuando la fuente sea mayor o igual a 7v, la siguiente etapa se trata de un LM386 como amplificador de la señal proveniente de un altavoz piezoeléctrico (del tipo en que se encuentra en las tarjetas musicales de felicitación), se regula la entrada con un potenciómetro de 10k que sirve para regular la sensibilidad al sonido. La salida del LM386 esta nivelada a 2.5v en reposo según el datasheet, en las pruebas el PIC lo detectaba como 1 lógico, como 2.5v está muy cerca del rango de indeterminado, opté por nivelar la entrada con una compuerta NOT schmitt trigger (en este caso un integrado 7414), algo curioso es que la salida da 0, si esta salida la conectaba a otra compuerta NOT, su salida también daba 0. De la compuerta la señal va al PIC12F508 (el 12C508 puedo encontrarlo con facilidad en mi ciudad y a precios bajos, por lo que opté en usar un 12F508 para hacer el prototipo final, el PICAXE lo usé solo para la prueba de concepto y las pruebas, muy fácil de utilizar, y solo necesité 5 líneas de código), en GP1 muestra si el circuito está en espera por señal (low) o si está en modo de suspensión después de haber recibido una señal (high), este modo de suspensión dura 1 min, pero en programa puede ser más larga la espera si uno desea evitar el accionado del botón de power mientras se está iniciando todavía el SO (por ejemplo mi computadora tarda 4 min en iniciar por completo); en GP0 esta la salida al 2N2222A que controla un rele de 5v el cual acciona el botón.
It has a 7805, to regulate any DC source (a 9v battery or a power regulator) to 5v (it has just to be higher than 7v). The LM386 amplifies the signal from a piezoelectric speaker (those used in toys and musical postal cards) that is regulated with a 10k pot (used like a sensibility control). The output from the LM386 with a power source of 5v is biased to the half of the power source (2.5v). The PIC12F508 take this output like a set, in the tests I try connecting a series of diodes to get a lower signal, but it just work with a PICAXE18 (well I just tested it with the PICAXE and de 12f), the 12f508 didn’t work pretty well, so I use it a Schmitt trigger inverter from a 7414, to get TTL signals. (I use it a 12f508 because I can find a 12c508 very easy in my town and is pretty cheap, and I just used the PICAXE for the proof of concept and tests… easy to handle, and just 5 lines of code). In the schematic, the GP1 indicates the state of the circuit, if is low, it is waiting a signal, if it’s high it has been triggered and for 1 minute will not response to any signal (you could change it for even more time, my computer take 4 minutes to fully boot up, and I really don’t want to shutdown the pc during the boot accidentally); and well, GP0 trigger the 2N2222A that drives a 5v relay that is connected to the power button of the PC.

La aplicación que le di es de la siguiente manera.
My application is in this way…

Un relé integrado al gabinete de la computadora.
A relay connected to the power button’s wires.



Este está conectado al circuito mediante un cable de audio
This is connected to the circuit through a audio cable



El circuito lo metí dentro de una caja de mentas altoids (^_^ siempre quise hacer algo que usara una de esas cajas). Se puede ver que me equivoqué varias veces al hacer los agujeros. La tablilla esta sobre cuatro almohadillas de espuma dura pegadas a la caja, estas elevan el circuito evitando cortos con el metal de la caja. El regulador de 5v también tiene un papel para evitar que toque el metal de la caja.
I put the circuit inside of an altoids’s box (^_^ I always wanted to use one of those boxes). You can see that I made a few mistakes with the drill. The PCB is over 4 pieces of hard foam to prevent short circuits.



Mi control se trata de un celular, cuando salga de casa, dejaré un celular al cual llamaré cuando necesite prender la computadora. Se puede apreciar, el control de sensibilidad a un lado del piezo, y del otro lado, el interruptor de reset. En los agujeros de la tapa, se puede ver el estado del Led de suspensión.
The circuit trigger is a cell phone, when i'll leave home, I just have to place near from the circuit any cell phone, and I will call when I want to turn on the pc. In the holes I can see the light from the led.



Pueden ver que el altavoz piezo eléctrico está en el aire sostenido por los alambres de conexión... el altavoz es muy sensible al contacto directo (el efecto piezo eléctrico es un efécto de la deformación/presión sobre un material). Otra forma para montarlo, sería ponerlo sobre fomi (espuma suave) para que el movimiento no cause roces que activaran el circuito.
I leave the piezo in mid-air with the hard wires because is very sensitive with the vibrations and direct contacts. It could work also above pieces of soft foam glued to the box, to prevent the activation when you move it.

Aquí les dejo el programa, procuré explicar cada línea para que los que apenas empiecen a usar PICs o microcontroladores, puedan comprender como se va desarrollando el programa. Incluyo mi rutina para la espera de 1ms sin interrupciones (el 12F508 no tiene interrupciones) con el oscilador interno de 4MHz.
Here's the code of the PIC, i explain it every line for those who are just starting with PICs (it's only in spanish though) and want to understand how the code works. I also include the subrutine for the pause of 1ms with the internal osc of 4Mhz without interrupts (the 12F508 don't have interrupts)

encendido2rev.asm <-Código ASM
espera1ms.inc <-Archivo include, con la subrutina

------------------------

(Notes) Notas:

Durante las pruebas, probé “bajar” el voltaje poniendo en serie 3 diodos de uso común, las primeras pruebas las realicé con un PICAXE18, que recibió la entrada como 0 lógico, al hacer un sonido cerca del altavoz, lo detectaba sin problemas el PICAXE18, sin embargo cuando cambié al PIC12F508 al conectar directamente o con diodos, la entrada la detectaba siempre como 1, por lo que emplee el 7414 como buffer de entrada. (Podría haber cambiado el programa para que la entrada activa fuera un 0, ya que la entrada siempre la detectaba como 1 lógico, pero como decía, los 2.5v están cerca del rango prohibido de valores lógicos con una fuente de 5v, por lo que no quería errores esporádicos y que funcionara con cualquier entrada TTL, así que opté por dejar el NOT schmitt trigger)
In the test with the PICAXE18, I just needed 3 diodes to get a “low” estate in the inputs of the picaxe, but for the pic I needed a Schmitt trigger inverter. (I could have changed the program itself, to get itself triggered with a low level instead of a high level, but the 2.5v it’s a value very close to the gap where the signal is ambiguous, and could cause an accidental activation, but… you can test it changing the code.. with the Schmitt trigger inverter you can use the signal with every TTL or CMOS device).

Prueba con el PICAXE18 (aquí ya estaba probando el correcto funcionamiento con el hex inversor)
Test of the hex inverter, with the PICAXE18



Intentando aprovechar las salidas del sensor (terminó con un cable más, al darme cuenta que me había equivocado al identificar la masa del circuito), la soldadura a la salida del led resulta un tanto difícil por el tamaño de la conexión, también porque estaba parcialmente cubierta con resina. El alambre lo saqué de un cable de alimentación. Terminé desistiendo de utilizarlo.
Trying to get a use of the signals from the stripe’s sensor (in the end, it finished with one more wire, I get confused about the ground of the sensor). It was pretty hard to get that wire from the LED pad, it was half-covered with resin and it’s a very tiny pad. In the end I didn’t use the sensor.



Sé que el 7414 es un hexinversor, y en el circuito solo necesito una compuerta, pero es lo que tenía a la mano, y el circuito final en PCB no terminó siendo muy grande, si uno se preocupa por el tamaño entonces puede optar por un SN74LVC1G57DBVR que se trata de una compuerta schmitt trigger universal configurable de TexasInstruments, sin embargo se trata de una compuerta con encapsulado SOT-23, y aunque a simple vista esto no parezca gran problema…
I already know that the 7414 is a hex inverter, and that I just need one of them, but I already have it, and the PCB is not so large in the end, if you want an even smaller pcb you could use a SN74LVC1G57DBVR from Texas Instruments, a universal Schmitt trigger gate, but it came in a SOT-23 package. And even if this is not too scary at a first glance…



Uno se enfrenta a esto en realidad…
When you get one of these, it looks like this…



Pretendo usarlo en otros circuitos integrándolo a un porta integrados de 8 pines
I will use it later mounted in a 8 pin IC socket.

No estoy seguro como sea la sensibilidad con otro tipo de "micrófono" me parece que una bocina cualquiera podría ser muy sensible a un buen rango de frecuencias, escogí un altavoz piezo eléctrico debido al tamaño y a que seguramente detectaría menos sonido ambiental, parece que funciona muy bien, la sensibilidad es muy variable, y en el umbral más bajo solo responde a sonidos muy cercanos [que es lo que busco, no quiero que se active con truenos, timbres, ruido de la televisión, etc...].
I'm not pretty sure about how sensible will be the circuit with another type of "speaker/microphone", i think that a regular speaker could be too sensible to a pretty wide range of sounds, I choose a piezo electric speaker because I think that it will be less sensible to the ambiental noise.. and, it works pretty well.



PD: Por publicar...
-> Primeras experiencias con linux, Ubuntu Hardy Heron y Gutsy Ribbon
-> Experiencias Ubuntu, opinión
-> Configuración de Routers 2WIRE
-> Crear una red casera para compartir archivos entre computadoras
-> Acerca de las Ultraportátiles

33 comentarios:

  1. chamako, kambia kolores, demasiado obscuro y kolores k .....en esas proporciones no van, luego o leo, solo vi kosas de paso

    ResponderEliminar
  2. No aflojes amigo! excelente informacion, segui con el blog, te visitaré seguido

    ResponderEliminar
  3. waaaaa!!! felicidades muy buen proyecto tenia pensado algo similar pero me encantu tu proyecto!!! nuevamente felicidades a seguir asi!!!

    hasta pronto!!

    ResponderEliminar
  4. amigo, q grabador usaste para programar el pic 12F508, es q yo tengo el T20 y quemo normal mi 16f84A..... quisiera saber si este me sirve para este pic.... necesito armar este proyecto amigo xD

    ResponderEliminar
  5. Utilicé un PICkit2 genérico (lo compré en mercado libre... buscalo, no cuesta más de 600 con el envío incluido, además de que te regalan el pic que escojas entre los disponibles.... agarré... el que tenía mejores características jajaja)

    Tal vez no es lo mismo que construir uno mismo su programador, pero con este es seguro que tienes gran variedad de PICs para programar, además de que es USB y puedes programar el PIC con cualquier computadora.

    Para programar con el, en vez de usar la base, utilizo el header de 5 pines con el que puedes conectar al programador, a través de este header si pones atención a los datasheet, puedes diseñar tus circuitos para reprogramar ICP (In Circuit Programing, programación sobre el circuito), para evitar estar poniendo y sacando el PIC [solo que tienes que poner ciertas resistencias según recuerdo para aislar las señales de programación del circuito].
    Otra ventaja, es que si te documentas, puedes usarlo como debugger si tienes de los últimos firmware.

    ResponderEliminar
  6. gracias por contestar tan pronto, lamento decirte q me interesa mucho concretar este proyecto, pero se me vienen muchas dudas =(
    no se si te pueda molestar con preguntas q quizas para ti sean obvias... es q no soy tecnico, solo aficionado, pero si eh logrado armar circuitos con pics (solo con el 16F84A).... bueno mis primeras preguntas son:

    1.- El sensor, es un parlante q viene en las tarjetas de felicitacion? yo q sepa es un parlante, y creo q en este circuito funciona como sensor o como microfono?.... o que tipo de elemento es?

    2.- Porke elegiste ese PIC... tb se podra usar el 16F84A, tomando la laogica de tu programa asm?

    Gracias, espero tu comprension amigo, saludos desde Peru....
    Fedayin....

    ResponderEliminar
  7. No hay problema ^_^.

    1.- Sí, esos parlantes que vienen en las tarjetas de felicitación, son un tipo de parlantes llamados "piezoeléctricos", en este circuito funciona como micrófono, aunque debido a que no me interesa reproducir el sonido, lo llamo dentro del proyecto como "el sensor" (este tipo de parlante, cuando se le aplica una señal, funciona como parlante, y cuando se le aplica una presión sonora (sonido) funciona como micrófono, es igual con la mayoría de los parlantes, (aunque no todos los tipos de parlantes, pueden funcionar de las dos formas, sin embargo, este tipo sí).

    2.- Eligí este pic, porque es pequeño, tiene reloj interno, y porque en mi localidad, puedo encontrar la versión "barata" que solo se puede grabar una vez (el 12C508), así que si aprendía a programar, por poco dinero podría hacer nuevos proyectos. Además, constituía un reto jajaja (antes de esto, no había programado nada para un pic)

    Cualquier pregunta que tengas, no dudes en hacerla, saludos desde México.

    ResponderEliminar
  8. gracias por contestar amigo... espero no me dejes en el aire, empezare a armarlo, y de hecho q me vendran mil preguntas, espero me tengas paciencia xD

    hace meses arme un quemador generico TE20-SE, lo saque de un libro y me srivio para grabar el 16F84A, pero tb se adapta a pics con 8 pines, como es este caso... tengo q conseguir el pic q usaste tu, y de acuerdo a eso veo si sigo adelante.... sin soft grabado en el pic, no hago nada =(

    estamos en contacto man, un abrazo

    saludos desde trujillo Peru

    ResponderEliminar
  9. No debería de ser difícil adaptar el código para el 16F84A... solo determina que salidas y entradas usarás, mientras uses un cristal de 4Mhz, los tiempos de los retardos no deberían de cambiar, solo que sí tal vez necesites conocer bien el 16f84a para darte cuenta sobre las cosas que debes de adaptar.
    Por ahí, tamb hice una versión del código para el 16F84A, pero creo que no le di revisiones ni lo comprobé, tengo que revisar que tan diferentes terminaron siendo.
    De todas formas, lo que te recomiendo, es leer atentamente el código para que veas como funciona, y pues puedas adaptarlo al 16F84A.

    Tamb, no es necesario que encuentres el 12F508, mientras sea de 8 patitas (por lo tanto use puertos nombrados como GPIO) y tenga reloj interno, debería de funcionar el código, (además de tener en cuenta si los bit de configuración cambian o no).

    ResponderEliminar
  10. ok amigo, tengo dos preguntas mas... disculpa si te parecen muy noobs xD

    1.- Que voltaje uso? 9v esta bien? se puede sacar la alimentacion de la misma fuente de la PC?... en tal caso, me podrias ayudar con algo simple?

    2.- en tu esquema no entiendo que es RES Y RESGND, lo de POT imgino q es potenciometro, pero RES?

    gracias =)

    ResponderEliminar
  11. 1.- Sí, 9v esta bien, mientras sea más de 7 volts (el regulador 7805 que los regula a 5v para alimentar todo el circuito, necesita que su fuente sea 2 volts mayor al voltaje que pretende entregar). Si usas la fuente de la computadora, aisla muy bien el conector que le pondrás a la computadora, porque la rosca del conector estará en contacto tamb con "el negativo" de la computadora (tierra), y bueno, cuando lo probé yo, al encenderlo activaba automáticamente el relé, una solución a eso, sería hacer un pequeño cambio al circuito (en vez de que el circuito del rele, esté entre la alimentación y el colector del transistor... debería de estar entre el emisor y tierra... hazlo si sabes lo que haces, si tienes duda, pregúntame XD, o alimentalo con una batería)

    2.- RES y RESGND son las terminales en donde va conectado el interruptor de reset.

    ResponderEliminar
  12. hola amigo reikaze, bueno te comento q fui a buscar el bendito PIC, y para mi buena suerte halle el 12C, q creo solo se puede grabar una sola vez.... pero de todos modos algunos componentes no tan dificiles de encontrar, no los halle, es cuestion de buscar en otro lado... tengo el fin de semana para poner en practica tu proyecto xD.. lo ke si me di cuenta es q el 74LS14 tiene muchas patitas xD, bueno imagino q solo se toman la 13 y 12...
    tengo algunas preguntas:

    1.- C2 y C4 son electroliticos? o fijos (de esos ke no tiene polaridad), te lo pregunto xq no le pusiste el signo de + y - xD...y de ser electroliticos, de cuanto voltaje se necesitan, veo q hay de 16v de 25v y de 50v....o es indiferente?

    2.- q hago con los pines sueltos de los IC?
    por ejemplo el pin 7 del IC2, los q no usare del IC4, y el pin 2 y 5 del PIC, los dejo al aire? te lo pregunto xq lei por ahi q siempre se les debe de conectar a alguna carga o algo asi.. sino se averian...

    3.- Sobre la alimentacion, de hecho q necesitare sacarla de la fuente de la pc, amigo... imaginate una bateria de 9v no me duraria ni dos dias prendida (imagino) se gastaria mucha energia y no alcanza el presupuesto. xD

    4.- Que Soft usaste para quemar el pic? estara bien el icprog?... yo use ese para quemar el 16F84A, como te digo probare el quemador TE20 ya q tb trae para kemar pics de 8 pines como el ke se trabaja en este proyecto....


    mil gracias por ayudarme...mas bien disculpa q te este molestando a cada rato....un abrazo...

    ResponderEliminar
  13. 1.- Si, C2 y C4 son cerámicos, no tienen polaridad, aunque depende de la procedencia es probable que los encuentres con el código escrito sobre ellos, que dice 104 (Significa 10 + 4 ceros, o sea 100,000... y las unidades que utiliza ese tipo de código son los pico faradios, 100,000 picofaradios son 100 nano faradios, espero que te sirva esto tamb para el futuro, es bueno conocer el código común de los capacitores cerámicos... aunque tamb hay otros códigos)

    2.- Hmm, no lo había pensado, aunque si había escuchado eso. El 74LS14 es un circuito integrado TTL, los que son susceptibles a descomponerse por cargas estáticas son los integrados CMOS (tienen otras siglas entre el 74 y el 14, como puede ser HS), para el 74LS14 dudo que le pase algo por dejar desconectadas sus patas. El PIC, creo que usa tecnología CMOS, pero los circuitos integrados no los soldé a la placa, les compré unos sockets para quitarlos y ponerlos cuando desee (los sockets si los soldé a la placa), y bueno, todas las patas del socket si las soldé a la placa (las patas que no usé, simplemente les deje su lugar para soldar, pero sin estar conectado a nada del circuito), en mi opinión, al poner los integrados sobre su socket, como las patas no usadas tienen una conexión "física" a la placa de circuito impreso, no deberían de almacenarse cargas estáticas diferentes entre las patas (digo "diferentes" porque cuando existe dos cargas diferentes, existe una diferencia de potencial, o sea un voltaje... al haber una conexión física a la placa de todas las patas (aunque no sea conductiva entre ellas) la carga estática debería ser igual en todas las patas, por lo tanto no debería de haber voltaje entre ellas que pudiera dañarlas. (El voltaje por carga estática para dañar un circuito CMOS, no es necesariamente muy pequeño, pero las cargas estáticas que los humanos y los objetos almacenamos, aunque no lo parezca, es grande, por eso no es raro que incluso diferencia de potencial entre nuestro cuerpo y objetos de metal, a veces cause pequeños "rayos" (toma en cuenta que, vencer la resistencia eléctrica del aire, tampoco es poca cosa) ). Creo que ya me desvié mucho del tema XD.

    Pero bueno mi punto es, te recomiendo que los circuitos integrados los pongas sobre sockets, y soldes todas las patas de los sockets a la placa, las patas que no se utilizan, déjales una pista con perforación para tener donde soldar, aunque no este conectada a nada en particular... así, tienes mayor resistencia mecánica y atas todas las patas a un mismo objeto.

    3.- No creo que gaste mucha energía XD, pero bueno, si vas a usar la fuente de la PC deja pasarte esta modificación.
    http://img386.imageshack.us/img386/3158/2doaudiopusheruz8.jpg
    Ahora, si usarás la fuente, pon mucha atención de conectar la pata que dice RELAY2, a la parte del conector de audio que se conecta a la parte externa del cable de audio, y es que esa parte tamb esta conectada a la rosca metálica que mantiene en su lugar el conector y esta rosca metálica estará en contacto con el chasis de la computadora, el chasis de la computadora está tamb conectada a la Tierra de la computadora, por lo tanto a la tierra de la fuente y de todo aparato que esté conectado al contacto. Si lo analisas bien, si conectaras la pata RELAY1 a la parte que tamb esta conectada a la rosca del conector, entonces cuando el transistor deje pasar corriente, la pata RELAY1 estará tamb conectada a la fuente de 5v, y bueno, habría un corto.

    Resumiendo otra vez XD, asegúrate de conectar RELAY2 a la parte exterior del conector de audio (en el cable de audio, es la parte que hace contacto con la parte que está más cerca del plástico y más lejos de la punta del plug), y RELAY1 conectarlo al contacto que toca la punta del cable de audio.

    4.- Usé uno que viene con mi quemador, es el PICKit2... hmm el 12C, revisa si tu quemador es capaz de quemarlo, por lo menos el mío que es un clon del PICKit2 original de la compañía Microchip, no puede grabarlo, cuando tenga la necesidad, tendré que armar uno que si pueda XD. Revisa si ese que conseguiste de la serie 12C lo puedes quemar con el TE20.

    Por cierto, te recomiendo que antes de hacer la placa de circuito impreso, pruebes todo en una protoboard (una tablilla de experimentación). Las cosas aunque uno las haga al pie de la letra, a veces no suelen funcionar bien XD.

    Bueno Saludoss!!

    ResponderEliminar
  14. Hola, tuve q empezar a recordar como se llegaba a quemar el pic, y recorde q tengo q compilar el asm y convertirlo en hex, y para eso recorde q usaba el MpLab, y pues solo tuve un par de dudas:
    1.- me pedia tipo de pic y habian dos opciones PIC12C508 Y PIC12C508A, pero vi en tu asm estas lineas
    PROCESSOR 12F508
    #include "p12f508.inc"
    y me di con tamaña confusion, de todos modos, escogi PIC12C508.

    2.- Tb me pedia la frecuencia con ke trabajara el pic, y no se xq escogi 4Mhz, creo q lei por ahi en alguna pagina de internet, q era la frecuencia con q trabaja este pic, confirmame si toy equivocado.


    De todos modos espero no malograr mi primer PIC, xD. Obtuve este hex:

    :020000040000FA
    :100000003E0C2500030A180C060066008607060A47
    :100010006100C80C2700060526056100D20C02000D
    :100020007D0C290081032A008A0389004307120AF4
    :10003000E7020D0A0604F00C2700FA0C2800610004
    :10004000D20C02007D0C290081032A008A0389005A
    :100050004307240AE8021F0AE7021D0A2604060ACB
    :021FFE001A00C7
    :00000001FF


    Espero q este en el camino bueno....

    ResponderEliminar
  15. 1.- Hay dos versiones del 12C508... escoge la que se lea en el que compraste, si el que compraste es 12C508, entonces cambia el include por 12C508A, y el PROCESSOR tamb por 12C508A.

    2.- Sí, la frecuencia a la que trabaja es 4Mhz

    Ahora, algo que se me ha olvidado remarcar...
    Y es sobre los relojes internos de los PICs, por lo menos el 12F508A, tiene grabado de fábrica un valor de calibración para el reloj interno, y es el que pongo en una parte del código al registro OSCCAL. No se si en el 12C508 también venga de fábrica grabado ese valor, pero antes de quemarlo sería bueno revisar eso.

    Antes de quemar el PIC, leelo primero, en la última localidad de memoria, tal vez veas un valor, apunta los dos últimos caracteres, y cambia el código.
    En donde dice

    org 0x00
    movlw 0x3E
    movfw OSCCAL
    goto main

    Cambia el 3E por el valor que hayas apuntado...
    Este valor que se encuentra al final, es el valor de calibración del reloj interno, supongo que aunque no lo cambies, debería de funcionar (solo es para calibrar el reloj para que sea lo más exacto posible), pero de preferencia, revisa esos valores, y si lo encuentras, cámbialo por el que te indique tu pic.

    ResponderEliminar
  16. =P me comí una letra

    "escoge la que se lea en el que compraste, si el que compraste es 12C508A, entonces cambia el include por 12C508A, y el PROCESSOR tamb por 12C508A"

    Si ahi en tu pic dice 12C508, entonces déjalo así.

    ResponderEliminar
  17. jjejeje, gracias por contestar tan rapido, y es q en esos minutos despues de q escribi en tu blog, pues me anime a quemarlo, y no se, me parece q ya lo malogre xD..... en mi PIC dice:

    12C508/P
    04 SAW
    0331

    parece q como tu dices, no viene con un valor pregrabado como el 12F508, ya q me hizo una pregunta media rara al kemarlo:

    el osc interno no tiene un valor predefinido, desea usar el valor del fichero (0FFFh)??
    si, no.

    y a la primera le puse no =(

    ahora no se si lo hice bien o mal, despues me salio el mensaje de quemado correcto, asi como cuando quemo el 16F84A.

    Hay alguna forma de saber si lo queme bien???
    o mi otro paso es armar tu circuito directamente..... Me gustaria saber si lo queme bien o mal =(

    PD.. Hay alguna forma de probar tu circuito sin usar aun un rele al reset de la pc?... si conectamos un led, podemos simular su comportamiento con el encendido apagado de dicho led?....

    PD. Ayudame con el rele, me vendieron uno de 5v q tiene como 8 patitas =(

    un abrazo, estamos en contacto amigo....

    ResponderEliminar
  18. Hmm, nunca he quemado un 12C508, si dice que se quemó bien es que se quemó bien el programa XD jajaja, para ver si funciona bien habría que probarlo, pero es sencillo no necesitas armar todo el circuito. Primero alimenta el pic, y en las dos salidas pon led's (uno en GP1 y otro en GP0, claro con sus resistencias limitadoras de 330ohms), conecta tamb el interruptor de reset (recuerda poner la resistencia a 5v, ya que es quien regresará a 1 lógico la pata de reset, cuando dejes de presionar el botón).
    Y pues GP4, llévala a tierra con una resistencia de 1kohm, para simular la entrada de una señal a esa pata, agarra un alambrito que este conectado a 5v (o un interruptor =P) y cuando lo toques con el a GP4, GP0 (la salida que en el circuito va al relé) deberá de encender durante un instante y luego apagarse, GP1 se deberá de mantener prendido durante cerca de 1min, durante ese minuto podrás notar que por más que le mandes señales de 5v a GP4 con el alambrito, no volverá a prender GP0. Cuando pase el minuto y se apague GP1, podrás volver a activar GP0 al ingresarle 5v durante un momento a GP4.

    (Esto es lo que pasa en el circuito ya armado... en GP4 durante un instante le entran 5v cuando el micrófono recibe una señal fuerte, esto corre el programa, y prende durante un instante GP0 (esto activa el transistor que activa al relé tamb durante un instante... en ese momento estamos "simulando" el presionar el boton de encedido durante un momento, pero pues, lo hacemos con un rele, ya no con el dedo), mientras, el programa entra en un ciclo de espera de 1min, como indicador de que se esta en este minuto de espera, se enciende el led conectado a GP1.

    (Este minuto de espera, es porque si el sonido que le llega al circuito, sigue excitando el PIC (que es normal, porque cuando uno llama a un celular, este suena varias veces), entonces el relé se activaria muchas veces, y sería como estar presionando el boton de power de la computadora muchas veces XD, para estar seguro que solo se activara una sola vez el relé, puse un retardo de 1min, tiempo suficiente para que el celular deje de sonar (o uno mismo cuelgue la llamada).

    ResponderEliminar
  19. gracias por la ayuda amigo, te contare mi experiencia, en la noche armo el mini circuito q me describes....
    Hay algo q no me quedo claro, ahora q me fijo bien en el circuito.... cual es la funcion del reset en el circuito??... porke se ke el reset coloca los valores iniciales del pic, algo asi como poner a cero todo.... pero en el circuito q funcion tiene? osea despues de la llamada, hay q presionar reset para ke kede en estado de espera??? no creo sea asi, ya ke seria lo mismo, hay q estar ahi presentes para presionar el reset xd... bueno gracias por la ayuda... un abrazo....

    ResponderEliminar
  20. tengo malas noticias =(

    estes es mi pic, imagino q los pines estan bien numerados, por la muesca:

    http://www.bigpichost.com/files/pj3hpv66hiim27nmv2lm.jpg

    este es el circuito con el q lo alimente (da 5v)
    http://www.bigpichost.com/files/jfi15dpb582cg0yqws9d.jpg

    pero no me funciona =/ quizas haya quemado mal el pic, solo obtengo q prenda el led q esta conectado a GP0 (pin 7) y el GP1 (pin 6), siempre anda apagado (no prende el led), asi le de señal al pin 3 (GP4), solo se apagan los dos leds, cuando pongo el reset a tierra (0 v)....

    no ke hacer =( quizas mejor deba adaptar el programa al uno del PIC16F84A.... voy a ver si me acuerdo un poco de assembler =( tratare de analizar tu codigo man... pucha, di un paso hacia atras, y yo ke pense q ya estaba casi al 90% de lograr el proyecto =/

    ResponderEliminar
  21. El reset, lo puedes usar para las pruebas... porque, si lo estas probando y no quieres esperar 1 minuto, para probar el disparo del GP0, le das reset, y el programa se reinicia, aceptando otra vez entradas. Tamb puede ser que por alguna razón lo hagas ahí cerca... y te diste cuenta que no estaba conectado a la alimentación XD, así conectas la computadora, le das reset y sin esperar ningun tiempo vuelves a intentar encenderla con el cto... Esto puede ser útil si decides aumentar el tiempo de espera (a 4min por ejemplo), ya que 1min puede ser fácil de soportar una espera XD.

    No tengo idea de porque GP1 no prende, tal vez pusiste al revez el led? XD suele suceder, en especial si te guías por el tamaño de los electrodos que se ven dentro de la cápsula, ya que algunos cambian, yo prefiero guiarme con la muesca que tienen a un lado, que siempre indica el cátodo (el que se conecta a negativo).
    Tal vez sea lo del valor de calibración del oscilador, pero no creo.

    Pregunta..
    ¿Después de que se prende GP0, inmediatamente después puedes lograr que prenda otra vez? mandando otra vez señal a GP4.

    Si durante un minuto no se logra encender GP0, significa que esta haciendo el retardo bien, y que por alguna razón, no enciende GP1, puede ser que incluso el led este dañado, o su resistencia este quemada.
    Si cada vez que excitas GP4, prende y se apaga GP0. O se quemó mal, o puede ser lo de el valor de calibración, o el timer sirve mal, o... algo XD.

    Te recomiendo que chekes bien el código, e intentes comprender como funciona, para poder analizar tu circuito y ver que podría ser lo que funciona mal.

    ResponderEliminar
  22. hi.... chekeaba el codigo y me doy cuenta q el algoritmo principal va mas o menos asi:


    -------------------------------
    inicializar
    Espera
    entrada activa en GP4?
    No, vuelve a "Espera"
    Interruptor Activado
    Led de estado de espera prendido
    Esperar 200ms
    Interruptor desactivado
    Esperar 1 minuto
    Led de estado de espera apagado
    go to "Espera"

    --------------------------------------

    de hecho esta muy bien documentado y pues es facil de aplicar al 16F84A, mi pregunta es:

    En int2 e int3 usaste algo asi como bucles anidados.. porke usaste ese modelo?
    veo q usas (240x250ms = 60,000 ms = 60s)
    esperabas alguna ocurrencia en entre estos dos bucles? yo puedo poner directamente un retardo de 1 minuto? o tb tengo q hacer dos bucles?...
    mil gracias por el apoyo.... =)

    ResponderEliminar
  23. De nada, aki ando para ayudar en lo que pueda, se siente bien que alguien desee construir algo que uno hizo ^_^

    Utilizo dos bucles para representar el retraso porque con localidades de memoria de 8 bits, solo puedo restarle a una localidad de memoria 256 unidades... y pues dividiendo los 60,000ms segundos en dos localidades de memoria (240x250=60000) logro trabajar con tal cantidad de retardos de 1ms...

    ¿Porque no usé simplemente un retardo de 1min?

    Porque el archivo include, tamb lo hice yo y me ocupé de que el retardo fuera lo más exacto, contando la cantidad de instrucciones y el tiempo que tardaría en ejecutar cada una de ellas. En los futuros proyectos, era probable que no fuera a trabajar con retardos tan grandes (y que probablemente no fueran precisos), y era muy probable que mi unidad base fuera el milisegundo para otros retardos. Así que no incluí un retardo tan grande como un min en el include, no creí usarlo después, y pues lo cree directo en el código principal.

    Para el 15F84A, por ahí en internet tamb hay includes con retardos, siéntete libre de usarlos con el nuevo código. Yo como quería experimentar con programar retardos, los escribí.

    ResponderEliminar
  24. gracias amigo, avanzare algo hoy dia.... y te cuento..... no creo sea tan dificil adaptarlo al 16F84A (ojala xD), y pues me decidi por ese pic porke parece q el kemador q tengo no graba bien el 508, veremos como me va... gracias, un abrazo

    ResponderEliminar
  25. eureka...... me funciona bien¡¡¡¡ lo adapte al 16F84A y pues ya evalue al micro solo con resistencias y leds.... ahora voy por tu circuito amigo.... ojala me resulte xD.....
    el programa es de logica muy simple, y ya me puse a recordar todo lo de programacion, simulacion en mplab y quemado con el icprog....aun sirve mi quemador xD

    ResponderEliminar
  26. Hola amigo..... te cuento q me resulto de maravillas todo xD (en protoboard).....resulta y trabaja bien.... ahora solo me queda implementar la parte del transistor con el rele, q para mi mala suerte, me parece q no es el ke buscamos....
    necesito dos ayudas por ahora amigo (creo q ya vienen a ser las ultimas xD)

    1.- Ayudame con el rele, yo consegui uno de 8 pines =S aca te escribo las especificaciones...
    HUI KE
    HK19F DC 5V-SGH
    1A 125V AC
    2A 30V DC

    ojala lo hayas visto alguna vez..veo q por debajo tiene un dibujo....mmmm...si gustas te lo grafico.....

    2.- note algo raro, pero logico a la vez....le quite el piezo parlante...tb quite el potenciometro y conecte ese pin del condensador a tierra (en pocas palabras le doy señal cero 0v) y sucede algo curioso, el circuito se activa con solo percibir las ondas q le llegan al celular..sea llamada o sms... no se si sea bueno o malo, pero me funciona mejor xD, ya ke yo no deseo q haya algun ruido... justo te iba apreguntar como hacerlo para ke se active con una fotoresistencia.... q opinas de este comportamiento? xq el campo magnetico del celular activa el circuito?? no te ocurrio a ti?...

    bueno eso es todo por ahora, ya estoy por terminar el proyecto, solo me falta lo ke es el rele y el armado del circuito, te agradezco infinitamente tu apoyo amigo....

    ResponderEliminar
  27. 1.- Pasame una foto del diagrama o dibújamelo para interpretarlo, porque no he trabajado con el, ni encuentro en internet algún articulo que diga como estan las patitas.

    2.- El LM386, cuando no hay diferencia de potencial, tiene una salida estabilizada a 2.5V, de la manera en que esta conectado (según recuerdo) tiene una ganancia de 200, así que los voltajes inducidos en la entrada la tienen fácil para moverse entre estados altos y bajos (con tanta amplificación)... y pues activan el PIC fácilmente con el 7414 (esos cambios, con el 7414, se convierten en cambios de valores TTL, para excitar correctamente el PIC).
    Esto te puede servir para k el circuito no se active con el sonido ambiente.... aunque te deja sin manera de regular la sensibilidad del circuito. Algo k noté tamb, es que así como está construido, si la sensibilidad se pone en valores altos con el potenciómetro, tamb se activa con los pulsos electromagnéticos como te pasó a tí.
    Como es un proyecto al que le puedo cambiar fácilmente el código, por mi parte, le dejo el piezo, ya que tamb con un simple temporizador de cocina, podría prender algún aparato ^_^ (por el sonido de la alarma).

    ResponderEliminar
  28. hola amigo, al fin pude decifrar como funciona este rele de 8 pines (en realidad internamente tiene dos circuitos conmutados).... y ya me funciona xD ......Tengo 3 preguntas esta vez:

    1.- Lo unico de malo (no se ke tan malo), es q como te digo, se activa solo con la señal q le llega al cel... pareciera q el LM386 es el sensible.... no habra alguna forma de protegerlo o apantallarlo, para q funcione con el sonido y no con la señal q le llega del cel?

    es raro q tu no hayas experimentado este fenomeno,....bueno.....

    2.- el proximo paso es probarlo con el power de la pc (me da miedo xd)....

    no se ke precauciones tener.... dime, los coenctores del rele, los conecto directo al boton power de la placa? eso es todo?....

    o tengo q ver algo adicional.....

    3.- recuerdo q me dijiste q le cambie el rele al colector, sacandolo del emisor..en el caso de usar la fuente de la pc...pero porke tendria q hacer eso?....
    mil gracias amigo, ya voy llegando xD

    ResponderEliminar
  29. 1.- Lo que podrías blindar, sería el cable que va desde el piezo hasta la placa, prueba trenzar el par de cables, y luego enrrollarle al rededor papel aluminio, por toda la extensión del cable. Este aluminio primero prueba conectándolo con un caimán a alguna parte que esté conectado al terminal negativo de la batería. Lo que estarías construyendo sería un "Cable Blindado", que es lo que probablemente esté funcionando como antena... Aparte de este tipo de protección, también le puedes hacer una "cascara" o caja de protección al LM386, si abres un celular, puedes ver como protegen los integrados de las radiofrecuencias exteriores, esas cajas protectoras se conectan a la tierra del circuito.
    (Con el altavoz piezoeléctrico, si lo experimenté, cuando aumentaba la sensibilidad con el potenciómetro)


    2.- Conecta las terminales del relé que conmutan (el que está normalmente abierto), en paralelo con el botón.

    3.-
    Sería según esta modificación del circuito

    http://img386.imageshack.us/img386/3158/2doaudiopusheruz8.jpg

    En esta configuración... puedes observar que cuando el transistor esta en Corte (se dice Corte cuando esta funcionando como interruptor abierto... y en Saturación cuando esta funcionando como interruptor cerrado)
    la terminal RELAY1 estaría separada del terminal positivo por una resistencia muy grande (por lo tanto sería como si estuviera desconectado el relé) por lo tanto no se activa el relé.... obviamente cuando el transistor está en saturación, la pata RELAY1 está casi conectada directamente a +5v, y RELAY2 directamente a GND, por lo tanto se activa el relé...

    Ahora..... si usas la fuente.... y conectas el relé de la forma en que estaba antes el circuito....

    RELAY1 estaría conectado directamente a +5v
    y RELAY2 cuando el transistor estuviera en Corte, estaría separado de GND por una resistencia grande.... en la teoría esto significaría que no estaría activado el Relé... PEEEERO, en la práctica RELAY2 será la parte exterior del cable de audio, y como el conector a la computadora estaría empotrado en la carcasa metálica, estaría haciendo contacto directo con la Tierra de la computadora...... por lo tanto a la tierra de la fuente... la misma que alimenta a tu circuito... entonces, aunque el transistor estuviera en corte, la terminal RELAY2 por estar tocando el metal de la carcasa, estaría conectado directamente al Negativo...
    Y pues RELAY1=+5v
    y RELAY2=GND eso activaría el relay sin importar si el transistor esté activo o no.


    Espero no revolterte, leelo con cuidado XD

    ResponderEliminar
  30. jejeje ,gracias amigo... bueno hoy dia tratare de armar de una vez el circuito, ya q ya me funciona en protoboard....

    vere q ideas se me ocurren, pero de todos modos, creo q usare bateria, para no complicarme....para empezar.....

    me dijeron q como se activaria el circuito, si al estar apagada la pc, la fuente no da voltajes... nunca me puse a probar con multitester, pero de todos modos, lo hare primero con bateria...
    mil gracias por tu ayuda... ojala me presten una camara para enviarte fotos de como me quedo todo....

    pd: dame una ayudita para controlar cargas de 220v.... ya tenemos la base, la logica se le agrega al pic, pero me faltaria la parte tecnica xD....

    lei por ahi q se usa triacs o optoacopladores... espero tengas algo por ahi... un abrazo amigo...

    ResponderEliminar
  31. Sep, es cierto, al estar apagada la computadora, la fuente no da voltajes... pero te recomiendo que investigues un poco más.. porque según tengo entendido, la fuente mantiene con energía unas lineas de poca potencia para el encendido de la tarjeta madre, sería cuestión de encontrarlas y usarlas, solo esperando que el circuito no rebase el consumo que soporta tales lineas.

    Sobre controlar cargas de 220v de CA, con los mismos relés se puede, a veces sobre el mismo relé indica, los voltajes y corrientes máximos que puede manejar (hay para todos los gustos y necesidades ^_^). Esto, para cosas que queremos que estén encendidas o apagadas. Algo con traics sería más para regular la potencia que se le administra al dispositivo a controlar, y el circuito es más elaborado también.
    Los optoacopladores, sirven en circuitos como estos, para aislar la parte que controla la potencia eléctrica de la parte de control, es por seguridad del mismo circuito. (Claro en este caso, la potencia a controlar es realmente mínima (un relé) el diodo entre la bobina del relé es suficiente protección, por lo que un optoacoplador no es necesario, en el caso de controlar otras cosas por ejemplo circuitos con triacs, si resultan útiles)

    ResponderEliminar
  32. ando de malas.... me funcionaba bien, pero no se ke paso, q dejo de funcionar =( es mas no hice un pcb para el circuito, solo lo monte en un pre fabricado... y me trae tantos problemas a pesar de ser simple el circuito.....
    y de todos modos se necesita agregarle el piezo, porke en las pocas pruebas q pude hacer, cuando encierro el circuito en alguna caja (yo probe en una de plastico) y no funciona... aunq me gustaria q se active con luz.... de todos modos tendre q ver como le hago un pcb para kemar alguna placa de baquelita... un abrazo amigo... me emocione por las puras xD

    ResponderEliminar
  33. Tranquilo así suele pasar en estas cosas de la electrónica jajaja, así que... acostúmbrate jajaja.

    Intenta doblar ligeramente la tablilla, o presionar partes de la tablilla, para ver en que momentos funciona y en cuando no... al soldar, a veces uno suele desprender pistas por aplicar demasiado calor... si pasó eso, puede que algo esté haciendo corto al moverse debido a que esta medio desprendido (puede darse el caso de que solo funcione cuando esta boca abajo XD... a veces sucede)

    Lo de que no funciona si esta en una caja de plástico... pues podrías sacar un alambre desde donde entra la señal del LM386, podría actuar como antena exterior. Pero si lo quieres multiusos activado con sonido, pues el piezo resulta útil.

    Para activar por luz... busca Fotoresistencias (no fotodiodos ni fototransistores.... fotoresistencias).. y bueno, para conectarlo según recuerdo, tendrías que conectarlo a +5v y la otra terminal a una resistencia de 10k o 1kohm (tienes que hacer pruebas, pero por esos valores) conectada a tierra....

    sería algo así

    +5v
    ---
    |
    /
    \
    / <-Foto resistencia
    \
    |
    |
    --- <- Salida del sensor
    |
    |
    /
    \
    / <-1kohm o 10kohm
    \
    |
    |
    ---
    -

    De entre las dos resistencias sacas la señal del sensor, y la ingresas a los inversores (sin usar el LM386). En esta configuración... cuando le incida luz sobre la resistencia, entregará un estado alto al PIC. Claro... esta el detalle... de que después de un minuto... seguirá en estado alto XD y al terminar el minuto de espera, mandará otra vez la señal al relé que "presionará" el botón otra vez jajajaja, y eso cada minuto mientras incida luz sobre el sensor..
    Debería de modificarse el programa en ese caso.

    ResponderEliminar