domingo, abril 19, 2009

Fuente de alimentación digital

Fuente de alimentación digital






Descripción
Este proyecto se basa en las modificaciones de Osvaldo Valdorre (ver hilo del foro TodoPic) a la fuente de alimentación publicada por la revista elektor número 260.

La fuente tiene las siguientes características

• Tensión de entrada: 220VAC
• Tensión de salida: 0 a 25VDC con una corriente de 0 a 2.5A.
• Precisión de la regulación
• 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 mecánico u óptico.
• Ventilación controlada de acuerdo al consumo de corriente.
• Lectura del consumo de corriente, con indicación 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 ventilación por lectura de temperatura.
• Líneas de alimentación de circuito de control separado de la parte de potencia.
• Información de todos los valores por medio de LCD 16x2 con control de contraste y backlight.
• Control y comunicación por RS232 con PC u otra placa de control.
• Código 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 electrónica, por sus ayudas en mi carrera por armar esta fuente en muy poco tiempo.


Licencia

Esta documentación se encuentra disponible bajo la licencia Creative Commons (Attribution-Share Alike 3.0 Unported)


Objetivo
Una fuente de alimentación es una de las herramientas más usadas en un laboratorio electrónico, existen en el mercado de varios tipos, con voltaje fijo, regulables en forma analógica, fuentes conmutadas (como las de PC) que proveen tensiones variadas (12v, -12v, 5V, -5V) con altos amperajes.
La idea de esta fuente de alimentación es que sea una fuente analógica controlada/regulada por el microcontrolador de fácil armado, barata y con múltiples prestaciones con posibilidades de expansión.


Restricciones de diseño
Dado que la disipación en calor para 25V a 3 o 4A puede comprometer algunos componentes se debe contar con ventilación forzada controlada por temperatura y consumo.

Las líneas de alimentación externas deben estar separadas de la parte de control, esto reduce posibles caídas de tensión por el uso de la ventilación, la luz trasera del LCD u otros dispositivos.

Para facilitar la construcción los PCBs se diseñarán a una cara sin puentes sin impedir el uso de métodos de menor costo como la transferencia de toner por calor.

El peso de dos transformadores más la electrónica 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 programación debe ser C dado que es fácil de entender para una amplia mayoría de personas, pero con rutinas en assembler cuando se requiera eficiencia de ejecución.

El compilador debería ser gratuito y sin límite en la generación del archivo HEX para el PIC.

El código 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 analógica 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 analógica
El circuito regulador está dominado por el componente LM324N, un operacional cuadrúple que nos da la posibilidad de una tensión máxima 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 análisis

Etapa de alimentación



En esta fuente la etapa de control (parte digital) es la más elaborada, y la parte analógica es la clásica 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.

Regulación de tensión
El funcionamiento sería 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 tensión 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 tendría 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 corrección, entonces veremos que este tiene esta fórmula:

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 habría:

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 tensión y la compara con la tensión 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). Regulación de corriente



Lo mismo es con la corriente, siguiendo el ejemplo propuesto, si hay un consumo de 2.5A, tendríamos 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 máximo preseleccionado.

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

Análisis del encoder

Encoder para rotación continua con tres pines de salida.
Dos canales de salida de código grey (http://es.wikipedia.org/wiki/Código_Gray).
Genera tres secuencias binarias 11,10, 00, 01 por cada giro.
Código Gray de dos bits
00
01
11
10

El encoder posee tres terminales, uno es el común, 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

Rotación en sentido horario ->
00 01 11 10 00
<- antihorario="" en="" n="" rotaci="" sentido="" span="" style="font-weight: bold;">Conección 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 publicación "Quadratrack: Using Mechanical Rotary Encoders" es el autor original de la lectura del encoder en el código ASM de Valdorre.

URL: http://www.mcmanis.com/chuck/robotics/projects/lab-x3/quadratrak.html

Citando al autor:
Para una interrupción de 1khz desde el TMR0 en un sistema a 4MHZ se debe hacer este código (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 interrupción debería 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 interrupción TMR0 para asegurar un ratio de ticks (y además esta es la primer interrupción 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












Soñando un poco...


El diseño 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 alimentación digital.

Leyendo mediciones.
Por un lado tenemos al voltímetro abajo, el lcd arriba, y a la derecha un programa de comunicación 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 módulos, pickit 2 clone reloaded,FT232 para conversión 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 mecánico con una simple línea de código:

#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 más area marcada para ayudar al ataque ácido.


Luego de 4 horas de laburo tenemos la placa de control funcionando, un agregado más a la fuente de valdorre es que dispone de conección ICSP para no tener que sacar el micro, que tiene la extraña costumbre de no hacer caso a entrar o salir de los zócalos 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 ventilación 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 faltaría el panel frontal en blanco con letras negras y de la parte trasera todavía me falta el conector RS232.






Videos de la fuente funcionando:








Descargas en la sección correspondiente del blog.

49 comentarios:

  1. Excelente amigo Felix. La armare lo mas pronto que pueda y te dare mis comentarios. Gracias por compartir tu diseño. Saludos desde Venezuela.

    ResponderBorrar
  2. Me encanta, creo que incluso sera mi primer proyecto con microcontroladores. (Bueno aparte del grabador, pero es q sin grabador no hay proyectos..)Se ve magnifico, gran trabajo y gracias por compartirlo sobre todo

    ResponderBorrar
  3. Hola Felixisl guardar guardar el proyecto es muy importante para la mesa de trabajo y ficou otimo, me pregunto si usted tiene una posibilidad de aumentar el voltaje y la corriente de alimentación de 30V x 5A aumentar el importe del curso Trasistor. Gracias

    ResponderBorrar
  4. Hola Rodrigo, para aumentar el voltaje a 30V x 5A es necesario recalcular todo los valores del circuito, cambiar la configuración darlington, etc.

    saludos

    ResponderBorrar
  5. Hola, estoy construyendo la fuente; ya tengo la mayoría de los componentes, pero no encuentro las resistencias de 0.51 ohm; ese valor debe ser muy exacto? (como para ponerle pares de resistencias de 1ohm en paralelo ); tampoco encontré la NTC, pero dispongo de un lm35, funcionará?

    Gracias y felicitaciones por tu trabajo!!!

    ResponderBorrar
  6. Hola Felixls, me quedó una pequeña duda luego que ví la placa de tu fuente en la foto, y noté que allí los condensadores de 1000uF están con la polaridad invertida.. no entiendo¡¡

    ResponderBorrar
  7. Hola Conejo, no es necesario que sea exacto el valor de las resistencias
    En cuanto a las fotos y el condensador, resulta que el pcb de la foto no es el mismo que el publicado por problemas que resolví cortando pistas y soldando cables.
    El diseño correcto es el publicado en los archivo .pdf
    Una cosa más,la resistencia R1 es de 330ohm, figura de 12k 1w y no es así.
    saludos

    ResponderBorrar
  8. Hola de nuevo¡ Perdona la molestia, pero ras una tarde entera de intentar compilar el código (Bajo windows) sólo para comentar el #define USAR_PULSADORES para utilizar un encoder en lugar de pulsadores, me encuentro frustrado.. instalé el sdcc y el gputils, e intenté utilizar lo escrito en Compilación.txt pero tampoco resulta.. me podrías guiar un poco?

    ResponderBorrar
  9. Conejo, la forma de compilar es esta:

    sdcc -mpic14 -p16f877a -Wl -I "ruta-al-directorio-pic" -I ".\include" -l ".\lib\felixls.lib" fuente.c

    reemplazando ruta-al-directorio-pic por la ubicación de la carpeta "sdcc\include\pic"


    saludos.

    ResponderBorrar
  10. Gracias¡¡ Funciona perfecto el encoder¡¡

    Ya mi fuente está casi lista... sólo falta poner todo en la caja pero antes añadiré un condensador adicional a la salida (de otro modo, la lectura del voltímetro es errática), tal vez le ponga cable blindado a las entradas ADC del pic, modificaré el código para que funcione con un LM35 (no conseguí el termistor) y para que al encender la fuente la corriente de corte sea más alta.

    De nuevo Gracias¡¡¡

    ResponderBorrar
  11. La lectura del voltímetro se podría mejorar copiando el código del cargador de baterías.

    Básicamente lo que hice fue tomar 8 muestras y sacar un promedio, modifica el código y vas a ver como se estabiliza.

    saludos.

    ResponderBorrar
  12. Hola felixls, gracias por tu ayuda:

    aunque no pude modificar el código para que leyera 8 veces y promediara los valores del adc, (ya que lo intenté de muchas maneras y en la simulación de proteus se veía que el pic entraba en un bucle, o al compilar salía un error de memoria, etc...incluso utilizando algo del código del cargador) ya armé la fuente y quedó muy bien; las fotos están en el hilo de la fuente en el foro todopic ( bajo mi nickname, anfegori91 ). Pienso implementar la función de guardado en eeprom de los últimos valores utilizados (como la original), como también la posibilidad de modificar los voltajes prefijados.

    Suerte¡¡

    ResponderBorrar
  13. Excelente!!!, felicitaciones!!!

    Te pido autorización para publicar las fotos de tu fuente en mi blog con tu nombre obviamente

    saludos y muy buen laburo!

    ResponderBorrar
  14. Claro¡ si puedes publicarlas, mi nombre es Andrés Gómez y vivo en Colombia.

    ResponderBorrar
  15. Hola Felixls,una consulta como esta ahora el codigo se puede usar con un encoder mecanico,si no
    que tengo que arreglar en el codigo,y otra consulta aprovechandome de tu gentileza donde ba el codigo para mejorar la estabilidad,como lo explicas mas arriba desde ya gracias.luis de Quilmes

    ResponderBorrar
  16. Que tal Luiz, feliz año!

    El código tal cual está publicado es para usar un encoder mecánico.

    En cuanto al código de la fuente, voy a actualizarla (ahora que se vienen mis vacaciones) ya que quiero agregarle un par de cosas además de la estabilidad de las lecturas.

    saludos!

    ResponderBorrar
  17. Hola Andres he publicado tu articulo en mi blog www.blog.mbj.com.mx te he dado los creditos a ti espero no te moleste si no estas de acuerdo borrare de inmediato el post, Saludos
    Marco

    ResponderBorrar
  18. Gracias Felixls,te deceo un buen año y que sigan los proyectos,perfecto espero la modificacion,ya compre la mayoria de los componentes,nuevamente gracias

    ResponderBorrar
  19. Hola MJB, como te va, mira mi nombre es Felixls, Andrés es un usuario que realizó la fuente en base a mis esquemáticos y código fuente.

    Ningún problema que publiques sobre esta fuente o modificaciones mientras se mencione el autor original y se publiquen dichas modificaciones de acuerdo a la licencia de mis obras.

    saludos!

    ResponderBorrar
  20. Hola felixls, la verdad no entiendo como armaste la configuracion para realizar la medicion de corriente, me harias el favor de explicarme mas o menos, porque la verdad no me cierra del todoo. ¿Porque a la resistencia sensora no la pusiste en serie al circuito?

    ResponderBorrar
  21. Hola patricio, la resistencia está en serie con la carga, revisa el esquemático.

    El concepto es simple, busca en internet por temas de resistencias shunt, y caidas de tensión.

    Lo que se usa aquí es una resistencia de 0.1 ohm (10 resistencias de 1ohm en paralelo), cuando la corriente en la carga es de 2.5A, por ejemplo, la caida de tensión es (V=I*R) V=2.5*0.1=0.25V para llevarlo al rango de lectura del PIC (0 a 5V) a esos 0.25V (máximos) tendríamos que multiplicarlo por 20 y para ello se utiliza el amp. operacional.

    saludos.

    ResponderBorrar
  22. Hola felix una pregunta se le tiene quemodificar mucho a este circuito para que funcione con 110v???? Por que si no me equivoco es para 220v verdad??? Podrias ayudarme???

    ResponderBorrar
  23. Disculpa Felix por contestale a Uriel Tenes que
    comprar un trafo de 110volt con la salida 24volts esto despues es lo mismo.

    ResponderBorrar
  24. Ah ok milroc muchas gracias por contestar si no me equivoco entonces son dos transformadores verdad uno de 24 y otro de 12 solo otra pregunta hay cuatro conectores uno en donde es de 24 el otro para 12 y el otro es la salida mi pregunta es para que sirve el otro conector un cuarto que aparece en tre el bc548, las resistencia de 1ohm y el capacitor c9. Gracias y disculpa las molestias

    ResponderBorrar
  25. OK.Uriel,son dos uno es el de la alimentación principal y uno para alimentar 7805,y el conector que te falta es para el ventilador,manejado por el pic.

    ResponderBorrar
  26. Disculpe mi ignorancia supina amigo felix, pero me podrías decir donde y como se llaman los lugares en donde se pueden fabricar esas cajas metalicas las cuales presentas como imagenes en vista del frente y vista posterior.
    Muchas gracuas por su respuesta. Saludos.

    ResponderBorrar
  27. saludos felixs me gusto mucho tu proyecto. quisiera por favor me explicaras como controlas la tension de salida? q tipo de señal hay en llave_corriente , llave_tension , a/d tension?
    saludos

    ResponderBorrar
  28. LeisoJ, la vista frente y posterior la dibujé con el programa Sketchup de Google. Saludos

    Joel, la regulación de tensión/corriente se realiza por pwm filtrado, esta señal ingresa al operacional que actúa de comparador y varía en su salida la tensión de referencia de los darlington. Saludos.

    Disculpen la demora.

    ResponderBorrar
  29. Hola, estoy simulando en isis la fuente y no funciona es decir al variar el pwm de corriente y el pwm de tension no cambia la salida se mantiene cte en 0.17 A. El lm324 va alimentado en fuente simple a 5v ?. Saludos.

    ResponderBorrar
    Respuestas
    1. Hola Martin, el LM324 va alimentado como figura en el esquemático, con la salida del puente rectificador, si el trafo es de 24VAC, rectificado serían unos 24*14142 = 33v

      saludos.

      Borrar
  30. hola felixs quisiera saber como es el comportamiento especifico de la llave de tension y la llave de corriente en tu circuito, estoy haciendo tu fuente pero me gustaria saber que suceden en estos puntos.
    muchas gracias

    ResponderBorrar
    Respuestas
    1. Hola Fabian, las "llaves" regulan la salida por medio de la salida de los comparadores entre la señal pwm llevada a continua y el voltaje/corriente de salida.

      saludos

      Borrar
  31. Hola Felix ´primero que nada Felicidades por tu proyecto, es el mejor que he visto. Pro cierto me gustaria hacer tu proyecto, solo que no encuentro el archivo pdf que mencionas, de casualidad podrias decirme en que parte esta o mandarmelo porfa, te lo agradeceria muchisimo. SAludos

    ResponderBorrar
    Respuestas
    1. Está en esta página, lo mencioné varias veces ya... será que no está muy visible?

      Borrar
  32. SE ve de pelos, felicitaciones yo necesito una de esas creo que me voy a nimar

    ResponderBorrar
  33. Hello, can you publish the source code?

    ResponderBorrar
  34. the code is publish at the top in the left.
    hola amigos alguien lo tiene simulado en isis lo arme pero no me funciona
    quiero saber como usar pulsadores en ves de el encoder.
    gracias ia voy consiguiendo materiales esto esta exelente

    ResponderBorrar
  35. the code is publish at the top in the left.
    hola amigos alguien lo tiene simulado en isis lo arme pero no me funciona
    quiero saber como usar pulsadores en ves de el encoder.
    gracias ia voy consiguiendo materiales esto esta exelente

    ResponderBorrar
  36. the code is publish at the top in the left.
    hola amigos alguien lo tiene simulado en isis lo arme pero no me funciona
    quiero saber como usar pulsadores en ves de el encoder.
    gracias ia voy consiguiendo materiales esto esta exelente

    ResponderBorrar
  37. ola me gusto mucho tu proyecto pero pretendo usar otro pic e integrar otro tipo de encoder y display pero tengo dudas de como funciona ya con el pwm de corriente, porque he observado si se envia a 5v la llave de corriente se cae la fuente osea se proteje y si se envia a gnd se envia toda la corriente, explicame eso el pwm en ciclo de trabajo el 100% osea toda la corriente seria cuando trabaje a 0 % en el programa gracias

    ResponderBorrar
  38. hola felixls,interesantes proyectos,mira la fuente me funciona muy bien y lo uso en mi laboratorio...pero al querer compilar el codigo para modificarlo me sale lo siguiente:

    Clean: Deleting intermediary and output files.
    Clean: Deleted file "fuente.O".
    Clean: Deleted file "adc.O".
    Clean: Deleted file "delay.O".
    Clean: Deleted file "lcd.O".
    Clean: Deleted file "serie.O".
    Clean: Deleted file "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\fuente.hex.HEX".
    Clean: Done.
    Executing: "C:\Program Files (x86)\SDCC\bin\sdcc.exe" fuente.c -mpic14 -l -c -p16F877A --debug
    message: using default linker script "C:\Program Files (x86)\gputils\lkr\16f877a.lkr"
    error: missing definition for symbol "_lcd_message", required by "fuente.o"
    error: missing definition for symbol "_leccar", required by "fuente.o"
    error: missing definition for symbol "_putchar", required by "fuente.o"
    error: missing definition for symbol "_adc_init", required by "fuente.o"
    error: missing definition for symbol "_delay_ms", required by "fuente.o"
    error: missing definition for symbol "_delay_us", required by "fuente.o"
    error: missing definition for symbol "_adc_startread", required by "fuente.o"
    error: missing definition for symbol "_init_serie", required by "fuente.o"
    error: missing definition for symbol "_lcd_send", required by "fuente.o"
    error: missing definition for symbol "_lcd_init", required by "fuente.o"
    error: missing definition for symbol "_print", required by "fuente.o"
    Executing: "C:\Program Files (x86)\SDCC\bin\sdcc.exe" adc.c -mpic14 -l -c -p16F877A --debug
    message: using default linker script "C:\Program Files (x86)\gputils\lkr\16f877a.lkr"
    error: missing definition for symbol "_delay_ms", required by "adc.o"
    error: missing definition for symbol "_delay_us", required by "adc.o"
    error: missing definition for symbol "STK00", required by "adc.o"
    error: missing definition for symbol "STK01", required by "adc.o"
    WARNING: function 'main' undefined
    Executing: "C:\Program Files (x86)\SDCC\bin\sdcc.exe" delay.c -mpic14 -l -c -p16F877A --debug
    message: using default linker script "C:\Program Files (x86)\gputils\lkr\16f877a.lkr"
    error: missing definition for symbol "STK00", required by "delay.o"
    error: missing definition for symbol "STK01", required by "delay.o"
    error: missing definition for symbol "STK02", required by "delay.o"
    WARNING: function 'main' undefined
    Executing: "C:\Program Files (x86)\SDCC\bin\sdcc.exe" lcd.c -mpic14 -l -c -p16F877A --debug
    message: using default linker script "C:\Program Files (x86)\gputils\lkr\16f877a.lkr"
    error: missing definition for symbol "_delay_ms", required by "lcd.o"
    error: missing definition for symbol "_delay_us", required by "lcd.o"
    error: missing definition for symbol "STK00", required by "lcd.o"
    error: missing definition for symbol "STK01", required by "lcd.o"
    WARNING: function 'main' undefined

    ResponderBorrar
  39. Executing: "C:\Program Files (x86)\SDCC\bin\sdcc.exe" serie.c -mpic14 -l -c -p16F877A --debug
    message: using default linker script "C:\Program Files (x86)\gputils\lkr\16f877a.lkr"
    error: missing definition for symbol "STK00", required by "serie.o"
    error: missing definition for symbol "STK01", required by "serie.o"
    WARNING: function 'main' undefined
    Executing: "C:\Program Files (x86)\SDCC\bin\sdcc.exe" "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\fuente.o" "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\adc.o" "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\delay.o" "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\lcd.o" "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\serie.o" "C:\Users\RODRI\Desktop\DigitalPowerSupply-src\felixls.lib" -o"fuente.hex.HEX" -mpic14 -I -c -p16F877A -Wl -c
    message: using default linker script "C:\Program Files (x86)\gputils\lkr\16f877a.lkr"
    Loaded C:\Users\RODRI\Desktop\DigitalPowerSupply-src\fuente.hex.COF.
    BUILD SUCCEEDED: Mon Apr 22 14:17:36 2013

    yo trabajo con el sdcc pero atreves de mplab ide,porque me parece muy complicado eso de compilar por cmd.
    bueno,un saludo y apreton de manos,te deseo existos en los proyectos que realizas...

    ResponderBorrar
  40. Hi! My friend Felix.
    Thanks so much from this exellente Power supply v1.0.
    My friend Felix please would you like to explaine me how I can control output voltage and amps.
    and what is:AUX0-7, AUX8-9.
    Did you use trim pot? to control out voltage and amps.
    Best Regards
    Vanja HALULIC vhalulic@comcast.net
    PS
    I have made yours universal battery charger and working perfect.

    ResponderBorrar
  41. Hi my friend Felix again.
    Please would you like to explain me:
    1.- Is the transistor Q4 PNP tip
    2.- Is the resistor R1 12k/1W
    I have made your PWR v1.0.
    I can to adj out amps between 0.000A to 2.560A but output voltage is 00.000V
    and I can not to adj output voltage!
    If you amigo Felix have a time to help me it will be nice!
    Best Regards
    Vanja

    ResponderBorrar
    Respuestas
    1. I have the same problem. Did you solve it and how. thanks.

      Borrar
  42. buenas noches

    Arme la fuente, los controles me funcionan bien a excepcion de la parte de voltaje, cuando voy a variar el voltaje, permanece en cero, que puedo hacer.
    muchas gracias por su colaboracion

    ResponderBorrar
  43. Dear Felix, everything is ok but the voltage is zero. I can not find the problem. Please help me.

    ResponderBorrar
  44. sALUDOS FELIX, YA YO POSEO UNA FUENTE dc-dc DE 25VDC Y 2.5A. QUISIERA SABER SI PUEDO USAR EL PIC Y LA LCD COMO AMPERIMETRO Y VOLTIMETRO SIN REALIZAR NINGUNA MODIFICACION?

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.