Vous êtes sur la page 1sur 22

INICIO

o
o
o
o
o
o
o

PROYECTOS
Digital Power Supply 1.0
Digital Power Supply 2.0
Dimmer muuy bsico
Electroestimulador
Multiboard PIC Trainer 1.0
Multiboard PIC Trainer 2.0
Multiboard Micro Trainer 3.0

o
o

Pickit 2 Clone
Reloj amanecer

Sombrero matriz de led

Termostato

Universal Battery Charger

o
o

USBasp Clone
USB LC Meter

o
o

USBTIR

TUTORIALES
Diseo de circuitos impresos con KiCAD

Tutorial AVR desde 0

EXPERIMENTOS
Coneccin usb-serial con PIC 16F628

o
o

Ethernet, te encontr
Hacer PCBs con burbujas

o
o

Motor de Bedini
Reparando un router wireless WRT54G

PROGRAMACIN
Jal Eclipse Plug-in

INFORMACIN
TIEMPO LIBRE

domingo, abril 19, 2009

Fuente de alimentacin digital


Fuente de alimentacin digital

Descripcin
Este proyecto se basa en las modificaciones de Osvaldo Valdorre (ver
hilo del foro TodoPic) a la fuente de alimentacin publicada por la
revista elektor nmero 260.
La fuente tiene las siguientes caractersticas
Tensin de entrada: 220VAC
Tensin de salida: 0 a 25VDC con una corriente de 0 a 2.5A.
Precisin de la regulacin
Gruesa: 1V / 100mA
Fina: 100mv / 3mA
Uso del microcontrolador PIC 16F877A de Microchip dejando
disponibles para el uso 10 puertos.
Ajuste por medio de pulsadores y encoder mecnico u ptico.
Ventilacin controlada de acuerdo al consumo de corriente.
Lectura del consumo de corriente, con indicacin de sobre corriente
visual y auditiva.
Memorias preseleccionadas (2.5, 3, 3.3, 5, 9 y 12 voltios a 0.5A, 1A
y 2.5A).
Control de ventilacin por lectura de temperatura.
Lneas de alimentacin de circuito de control separado de la parte
de potencia.
Informacin de todos los valores por medio de LCD 16x2 con
control de contraste y backlight.
Control y comunicacin por RS232 con PC u otra placa de control.
Cdigo escrito en C del compilador SDCC.

Agradecimientos
Totalmente agradecido con Osvaldo Valdorre por crear esta fuente y
compartirla con la comunidad.
Un especial agradecimiento a los integrantes del Foro uControl - El
mejor foro de internet para los amantes de electrnica, por sus
ayudas en mi carrera por armar esta fuente en muy poco tiempo.

Licencia
Esta documentacin se encuentra disponible bajo la licencia Creative
Commons (Attribution-Share Alike 3.0 Unported)
Objetivo
Una fuente de alimentacin es una de las herramientas ms usadas
en un laboratorio electrnico, existen en el mercado de varios tipos,
con voltaje fijo, regulables en forma analgica, fuentes conmutadas
(como las de PC) que proveen tensiones variadas (12v, -12v, 5V, -5V)
con altos amperajes.
La idea de esta fuente de alimentacin es que sea una fuente
analgica controlada/regulada por el microcontrolador de fcil
armado, barata y con mltiples prestaciones con posibilidades de
expansin.
Restricciones de diseo
Dado que la disipacin en calor para 25V a 3 o 4A puede
comprometer algunos componentes se debe contar con ventilacin
forzada controlada por temperatura y consumo.
Las lneas de alimentacin externas deben estar separadas de la
parte de control, esto reduce posibles cadas de tensin por el uso de
la ventilacin, la luz trasera del LCD u otros dispositivos.
Para facilitar la construccin los PCBs se disearn a una cara sin
puentes sin impedir el uso de mtodos de menor costo como la
transferencia de toner por calor.
El peso de dos transformadores ms la electrnica en general puede
llevar a que la fuente tenga un peso importante (3kg en mi caso), es
por ello que se utilizar un gabinete de aluminio de 3mm.
El lenguaje de programacin debe ser C dado que es fcil de entender
para una amplia mayora de personas, pero con rutinas en assembler
cuando se requiera eficiencia de ejecucin.

El compilador debera ser gratuito y sin lmite en la generacin del


archivo HEX para el PIC.
El cdigo debe estar muy comentado en cada una de sus fases para
facilitar al que desee adaptar el trabajo a sus necesidades.

Hardware
El circuito est formado por dos partes, una analgica con
transistores de paso, operacional LM324N, transformadores,
regulador 7805, entradas y salidas de control.
La parte de control est formada por el microcontrolador, el LCD, el
buzzer, conector ICSP, y conectores a pulsadores de entrada y
encoder si se elige usar.
Parte analgica
El circuito regulador est dominado por el componente LM324N, un
operacional cuadrple que nos da la posibilidad de una tensin
mxima de 32V y con el uso de resistencias de baja tolerancia (en mi
caso utilizo de 5%, pero se recomienda del 1%).
El circuito lo divid en secciones para su mejor entendimiento y
anlisis
Etapa de alimentacin

En esta fuente la etapa de control (parte digital) es la ms elaborada,


y la parte analgica es la clsica con el agregado de control contra
cortocircuitos provistos por T1,T2,T3 (BC547) y las resistencias de
0.51ohm que aterrizan la base de los transistores de potencia Q1..3.

Regulacin de tensin
El funcionamiento sera as, la fuente de corriente constante formada

por D4, D5, R5, Q4 y R1 provee de 2mA a la base de los darlington.


La referencia de dichos transistores est controlada por los
operacionales de la parte de control.

Se realiza con el divisor de tensin formado por R13, R14 y R17, pero
como la lectura se ve afectada por la corriente suministrada y que cae
en resistencia Rs (resistencia shunt, las 10 resistencias de 1ohm en
paralelo) cuando a la salida tendra que haber 25v, se tendr 25.25v,
es por ello que se usa el IC1D que es un amplificador inversor, si hay
un consumo de 2.5A por ejemplo, aparece una caida de 0.25V en los
extremos de la Rs.
Como dije, IC1D entonces se lo usa para realizar dicha correccin,
entonces veremos que este tiene esta frmula:
Vo = -(R18/(R19+R20)) * Vin
entonces si Vin como dijimos es 0.25V
Vo = -(10k/40k)*0.25
Vo = -0.0625V (recuerden este numerillo)
Ok, el potencial entre los 25.25v y la referencia -0.0625v nos da
25.3125v, luego a la salida del divisor resistivo formado por R13, R14
y R17 habra:
Vo = Vi * (R17 / (R17 + R13 + R14) = 5.0625v
y como el amplificador LM324 tiene una referencia de masa de
-0.0625 gracias al diodo D9.
El voltaje queda en 5V listos para entrar en el comparador IC1A
IC1A recibe la salida del divisor de tensin y la compara con la
tensin seleccionada ya que
Vo = Vs+ siempre que V1 > V2
Vo = Vs- siempre que V1 < V2 De esa forma regula el voltaje de
salida (o corta si el voltaje supera el valor deseado). Regulacin de
corriente

Lo mismo es con la corriente, siguiendo el ejemplo propuesto, si hay


un consumo de 2.5A, tendramos a la entrada del operacional no
inversor 0.25v y ya que
Vo = (1+ 19k/1k) * 0.25 = 5V
Y la salida va a parar a la entrada inversora del IC1C y sucede lo
mismo que en IC1A, es decir se regula la referencia de los
transistores o se corta si se supera el mximo preseleccionado.
-----------------------Anlisis del encoder
Encoder para rotacin continua con tres pines de salida.
Dos canales de salida de cdigo grey
(http://es.wikipedia.org/wiki/Cdigo_Gray).
Genera tres secuencias binarias 11,10, 00, 01 por cada giro.
Cdigo Gray de dos bits
00
01
11
10
El encoder posee tres terminales, uno es el comn, y los otros son las
salidas digitales generadas por los contactos internos del dispositivo.
Genera la siguiente secuencia
Canal A B
Estado1 0 0
Estado2 0 1
Estado3 1 1
Estado4 1 0
Rotacin en sentido horario ->

00 01 11 10 00
< - Rotacin en sentido antihorarioConeccin al PIC
El terminal del medio va a masa y los otros dos se conectan cada uno
a una resistencia de pullup de al menos 1k a VCC.

Chuck McManis y su publicacin "Quadratrack: Using Mechanical


Rotary Encoders" es el autor original de la lectura del encoder en el
cdigo ASM de Valdorre.
URL: http://www.mcmanis.com/chuck/robotics/projects/labx3/quadratrak.html
Citando al autor:
Para una interrupcin de 1khz desde el TMR0 en un sistema a 4MHZ
se debe hacer este cdigo (en ASM):
; * * * * * *
; * BANK 1 Operations
; * * * * * *
BSF STATUS,RP0 ; Set Bank 1
MOVLW B'0000010' ; Set TMR0 prescaler to 8
MOVWF OPTION_REG ; Store it in the OPTION register
CLRF TRISB ; B all outputs
BSF TRISB,QUAD_A ; Except for Quadrature inputs
BSF TRISB,QUAD_B
; * * * * * * * * * * *
; * BANK 0 Operations *
; * * * * * * * * * * *
CLRF STATUS ; Back to BANK 0
BSF INTCON, T0IE ; Enable Timer 0 to interrupt
BCF INTCON, T0IF ; Reset interrupt flag
BSF INTCON, GIE ; Enable interrupts

Luego el servicio de interrupcin debera ser:


; Interrupt Service Routine Pre-amble, save state,
; reset status to BANK 0
INTR_PRE:
MOVWF TMP_W ; Copy W to temp register
SWAPF STATUS,W ; Swap Status and move to W
MOVWF TMP_STATUS ; Copy STATUS to a temp

CLRF STATUS ; Force Bank 0


;
; State is saved, and we've expended 3 Tcy plus the
; 3 Tcy (4 worst case) of interrupt latency for a total
; of 6(7) Tcy.
;
; Now loop through until we've satisfied all the
;pending interrupts.
;
ISR_0:
; ... test bit to see if it is set
BTFSS INTCON,T0IF ; Timeer0 Overflow?
GOTO ISR_1 ; No, check next thing.
;
; Else process Timer 0 Overflow Interrupt
;
BCF INTCON, T0IF ; Clear interrupt
MOVLW D'133' ; Reset 1khz counter
MOVWF TMR0 ; Store it.
CALL QUAD_STATE ; Check Quadrature Encoders.
GOTO ISR_1 ; Nope, keep counting
ISR_1:
;
; Exit the interrupt service routine.
; This involves recovering W and STATUS and then
; returning. Note that putting STATUS back
; automatically pops the bank back as well.
; This takes 6 Tcy for a total overhead of 12 Tcy for sync
; interrupts and 13 Tcy for async interrupts.
;
INTR_POST:
SWAPF TMP_STATUS,W ; Pull Status back into W
MOVWF STATUS ; Store it in status
SWAPF TMP_W,F ; Prepare W to be restored
SWAPF TMP_W,W ; Restore it
RETFIE

Como se puede ver, primero se recarga la interrupcin TMR0 para


asegurar un ratio de ticks (y adems esta es la primer interrupcin
verificada!)
Luego se verifica el estado del encoder en la llamada a QUAD_STATE:

;
; QUAD State
;
; A quadrature encoder traverse a couple of states
; when it is rotating these are:
; 00 | Counter
; 10 | Clockwise
; 11 | ^
; 01 V |
; 00 Clockwise |
;
;
QUAD_STATE:
BCF STATUS,C ; Force Carry to be zero

MOVF PORTB,W ; Read the encoder


ANDLW H'6' ; And it with 0110
MOVWF Q_1 ; Store it
RRF Q_1,F ; And rotate it right.
RLF Q_NOW,F ; Rotate Q_NOW Left
RLF Q_NOW,W ; by two
IORWF Q_1,W ; Or in the current value
MOVWF QUAD_ACT ; Store at as next action
MOVF Q_1,W ; Get last time
MOVWF Q_NOW ; And store it.
;
; Computed jump based on Quadrature pin state.
;
MOVLW high QUAD_STATE
MOVWF PCLATH
MOVF QUAD_ACT,W ; Get button state
ADDWF PCL,F ; Indirect jump
RETURN ; 00 -> 00
GOTO DEC_COUNT ; 00 -> 01 -1
GOTO INC_COUNT ; 00 -> 10 +1
RETURN ; 00 -> 11
GOTO INC_COUNT ; 01 -> 00 +1
RETURN ; 01 -> 01
RETURN ; 01 -> 10
GOTO DEC_COUNT ; 01 -> 11 -1
GOTO DEC_COUNT ; 10 -> 00 -1
RETURN ; 10 -> 01
RETURN ; 10 -> 10
GOTO INC_COUNT ; 10 -> 11 +1
RETURN ; 11 -> 00
GOTO INC_COUNT ; 11 -> 01 +1
GOTO DEC_COUNT ; 11 -> 10 -1
RETURN ; 11 -> 11
INC_COUNT:
INCF COUNT,F
MOVLW D'201'
SUBWF COUNT,W
BTFSS STATUS,Z
RETURN
DECF COUNT,F
RETURN
DEC_COUNT
DECF COUNT,F
MOVLW H'FF'
SUBWF COUNT,W
BTFSS STATUS,Z
RETURN
INCF COUNT,F
RETURN

Soando un poco...

El diseo del gabinete para fuente lo estoy realizando con el software


gratuito de google llamado SketchUp.
Vista del frente

Vista posterior

Luego de teclear bastante, tengo programada y funcionando 100% la


parte de control de la fuente de alimentacin digital.
Leyendo mediciones.
Por un lado tenemos al voltmetro abajo, el lcd arriba, y a la derecha
un programa de comunicacin serial donde puedo comunicarme con
la fuente.

Trabajando sobre el prototipo de la placa de control.


Aqu pueden ver al multiboard funcionando junto a sus amigos
mdulos, pickit 2 clone reloaded,FT232 para conversin RS232 a USB
para control desde la PC, LCD de la fuente, placa de potencia, etc.

El software est programado en C, totalmente explicado con


comentarios y es posible reemplazar el uso del encoder ptico por
dos pulsadores o un encoder mecnico con una simple lnea de
cdigo:
#define USAR_PULSADORES
El compilador usado es el SDCC, un compilador gratuito, que uso
desde un editor de texto llamado ConTEXT.
Bueno, esta es la placa de control, va atornillada en el frente.

Es importante ver que del modelo con plano de masa le agrego


igualmente ms area marcada para ayudar al ataque cido.

Luego de 4 horas de laburo tenemos la placa de control funcionando,


un agregado ms a la fuente de valdorre es que dispone de coneccin
ICSP para no tener que sacar el micro, que tiene la extraa
costumbre de no hacer caso a entrar o salir de los zcalos de 40
pines.

El LCD de 16x2 va soldado con pines a la parte posterior del pcb. No


soldar hasta saber que todo funciona ok, o de lo contrario te va a
costar bastante la "desoldadita".

Software de control arrancando

1,2,3 probando, todo ok!

Control ventilacin por temperatura


Utilizo un NTC de 10k
El esquema es el siguiente:
entrada analogica RA2---------o------------NTC-------O 5V
|
Resistencia de
470 OHM
|
GND
Este componente no est en la placa de control, ya que lo arm de
esta manera:

Le faltara el panel frontal en blanco con letras negras y de la parte


trasera todava me falta el conector RS232.

Vous aimerez peut-être aussi