AUTOENCENDIDO DE FUENTE ATX, DESPUES DE CORTE ELECTRICO CON PIC 12C509A
Para los que se hayan adelantado, la BIOS de mi equipo no dispone de esta opción).
El problema:
Tengo un equipo, el cual quiero que se encienda automáticamente después de un corte de luz, o si estando apagado (de forma correcta) recibe alimentación.
Despues de toda una tarde buscando soluciones por internet, no encontre nada, asi que me decidi a implementar algun sistema haciendo algo que se me da bien: Programar.
Me baje el manual de unos microcontroladores, y le eche un vistazo a otros cuantos manuales para crear un sencillo programa que hiciese lo siguiente:
- 1.- Al alimentarse el circuito ESPERAR 20sg.
- 2.- Dar un pulso de 1sg de duración
- 3.- Esperar un impulso externo (y si llega, ir a 2)
Va, el programa esta chupao, lo complicao’ (no tengo ni idea de electrónica, bueno algo tengo), es el diseño, asi que ojee otros tantos ejemplillos y coji mi protoboard, lo monte y parece que no se ha cascao’ na’.
Asi que fui al ordenador en cuestion, y lo solde (a lo bruto en la propia placa base), y de momento funciona bastante bien.
Realmente no hace falta soldarlo a la placa base (solo al conector de la fuente ATX), entre los pines de GND y +5vSB de mantenimiento, pero OJO ¡¡ +5VSB mantenimiento es el pin 6 del conector de la fuente ATX!!.
Aqui va el circuito:
+5vo-------------------------------------o-- | +5v o---o-----------------------o-- | | | | 12c509 | | :¨¨¨¨¨|¨¨|¨¨: | .---------------·-. o--------. | | : | | VDD | | : w o o : | | ( T D1 : w \ : | | GP2 GP1 GP0 VSS | | : w \ : | ------.----.---.- o--------· o : | | | | | : | : ·--{R10K}------·|_ | | 2,2K| / BC468 : | : .| ·-o | o-R--|< ¨¨¨¨¨¨¨¨|¨¨¨¨ | P | | \->| GND o------------------o--------o-----------o P = Pulsador Manual, para poder encenderlo como siempre (Mi equipo tiene un encendido un tanto raro por eso lo puse) Y aqui el programa para el pic
12c509-autoboot.asm
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Title "AutoBoot Fuente ATX" LIST P=PIC12C509A #INCLUDE ; Libreria de definiciones ;__CONFIG _CP_OFF & _WDT_OFF & _IntRC_OSC & _MSTCLR_OFF ; CFG Fuses ;-------------- ;- JDsoft ;- Mi primer programa para los pic, usado para resolver el problema ;- del encendido automático de un ordenador con fuente ATX, al conectarse ;- la alimentación despues de un fallo de la misma. ;------------------------------------- GPIO equ 0x06 f EQU 1 ; Destino de operación = registro DelayL equ 0x11 ; delay register LOW byte DelayM equ 0x12 ; delay register MID byte DelayH equ 0x13 ; delay register HIGH byte ORG 0 goto main ORG 0x05 main movwf OSCCAL movlw b'00000110' TRIS GPIO movlw 0x78 ; set DelayH to 20 seg call Delay1000 ; Execute a 20000ms delay inicio BSF GPIO,0 movlw 6h ; set DelayH to 6 call Delay1000 ; Execute a 1000ms delay BCF GPIO,0 ; Esperamos un pulso 'Manual' manual btfsc GPIO,1 ; goto manual ; Loop mientras no se active PortA1 goto inicio ; Ejecutamos el pulso ; ; -------------------------------- ; SUBROUTINE: waste time for [REG_W] mS ; -------------------------------- ; ; movlw 6h ; set DelayH to 3 Delay1000 clrf DelayL ; /R clear DelayL to 0 clrf DelayM ; clear DelayM to 0 movwf DelayH Wait1 decfsz DelayL,f ; subtract 1 from DelayL goto Wait1 ; if not 0, goto Wait1 decfsz DelayM,f ; subtract 1 from DelayM goto Wait1 ; if not 0, goto Wait1 decfsz DelayH,f ; subtract 1 from DelayH goto Wait1 ; if not 0, goto Wait1 return ; finished the delay end
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<
Y pa’ que no tengas que compilarlo, hay va el HEX
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
:020000040000FA :04000000010AC00A27 :100050006C0C2500060C0600780C35090605060C0C :10006000350906042606320A2E0A71007200330092 :0E007000F102380AF202380AF302380A0008D8 :02018000280A4B :00000001FF<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Tuitear 4.528 Veces leído 0 comentarios
29 octubre 2012 en Electronica | tags: Circuitos electrónicos, Electronica