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.685 Veces leído 0 comentarios
29 octubre 2012 en Electronica | tags: Circuitos electrónicos, Electronica




















