Diseño e implementación de un controlador de posición angular para mecanismo motorizado con motor DC (trabajo en contexto académico)

(Academic work – Angle control with DC motor and Arduino)

En lo que sigue se expone el diseño e implementación de un controlador de posición angular para motor DC de imanes permanentes, basado en topología Convertidor Buck controlado por lazo de realimentación PI para el voltaje de armadura y control proporcional P de velocidad. Los requerimientos de posición angular son ingresados desde un computador, vía puerto serie. La posición angular del eje motriz se mide a través de un encoder óptico rotatorio, cuya construcción se detalla.

Lo implementé en base a Arduino Uno,  el cual controlaba el ciclo de trabajo de un convertidor buck que alimentaba el motor DC. Mis agradecimientos a Carlos M. y Waldo M., quienes ayudaron bastante con facilitar el espacio de trabajo y algunos insumos.

I.   El Encoder rotatorio

Un encoder rotatorio es un dispositivo que permite conocer la posición angular de un eje en todo instante t, con una determinada precisión Δθ. Los hay para medición de posición y velocidad en máquinas giratorias, en perillas para control de aparatos electrónicos en instrumentos de medición, entre otras aplicaciones.

En el mercado hay encoders en base a conmutadores mecánicos (más económicos, pero menos durables, ruidosos y para bajas velocidades) y ópticos (cuyo contacto de cierre y apertura de conmutadores internos del encoder se hace en forma óptica, prácticamente sin desgastes mecánicos, facilitando su operación a altas velocidades de giro con alta resolución – más de 200 pasos por giro [1]-). En lo que sigue, se hará referencia a la construcción de un encoder rotatorio de tipo óptico.

Fig. 1 Esquemas básicos de encoder rotatorio óptico. Al lado izquierdo, con disco perforado; al lado derecho, con disco reflector. Fuente imagen: www.sinotech.com

Se adopta la topología de encoder rotatorio mostrado al lado derecho de la Fig.1, donde el desplazamiento Δθ es indicado al microcontrolador a través de un emisor-receptor de luz infrarrojo, el cual entrega como salida un 1 lógico (+5Vdc) cuando hay reflexión de la luz en el disco, y un 0 lógico (0 Vdc) cuando no la hay. Estos valores de tensión se obtienen a partir de un circuito comparador alimentado con +5Vdc, ideal para los pines de entrada del Arduino Uno. De hecho, la implementación en hardware se hizo a través del módulo KY-033 diseñado para Arduino. A nivel de programación, se detectan los flancos de subida y bajada para efectos de sumar o restar pasos de Δθ. En la Fig. 2 se muestra el disco implementado en esta experiencia, con un total de 24 flancos subida-bajada por vuelta (en total), distribuidos en forma uniforme por la circunferencia del disco, resultando en una resolución de 15° sexagesimales.

Fig. 2 Disco empleado en el encoder rotatorio.

En caso que se deseara medir el sentido de giro, sería necesario instalar un segundo emisor y receptor de luz, desfasado en 90° eléctricos respecto del primero. Conociendo el orden en que se producen los flancos de subida y bajada en cada sensor fotoeléctrico, es posible conocer el sentido de giro. Sin embargo, en nuestro caso controlamos el sentido de avance a través de la polaridad aplicada al motor DC, por lo cual es suficiente implementar un único sensor fotoeléctrico.

II. Implementación

El hardware se desarrolló en base a la tarjeta Open Source de fácil programación Arduino Uno, aprovechando que disponemos de una unidad, y además porque posee pines para interrupciones, puerto serie vía USB, Timers, ADCs y su velocidad de reloj es adecuada para esta aplicación (16 MHz).

La lógica de operación se muestra en la Fig. 3, donde podemos apreciar dos lazos de control concatenados, uno para la velocidad y otro para el voltaje de armadura.

Fig. 3 Esquema de control de posición implementado.

A nivel global se maneja la velocidad mediante un control proporcional P cuya referencia se define desde el computador (vía puerto Serial – USB) y con lazo de control realimentado a través de las interrupciones provenientes desde el encoder óptico, las que definen la posición angular actual del disco a través del valor incremental dado por la suma reiterada (o resta, según sea el sentido giro – polaridad aplicada al motor DC -) de la resolución del encoder. En nuestro caso, de acuerdo a la Fig. 2, se tiene una resolución Δθ = 15°, puesto que las interrupciones (o incrementos) actúan tanto en flancos de subida como de bajada del sensor óptico. Así se obtiene la posición actual y, restándola a la referencia, obtenemos el error de posición, valor que ocupamos como entrada al control proporcional.

Fig. 4 Control proporcional para lazo de control de velocidad.

Es suficiente ocupar un control proporcional para la posición puesto que en un motor DC de imanes permanentes, la velocidad angular de giro es aproximadamente proporcional a la tensión de armadura aplicada, considerando una inercia constante en el sistema rotatorio. Como en nuestro caso experimentalmente hemos comprobado que prácticamente no hay un efecto visible de inercia mecánica una vez el dispositivo alcanza el valor referencia de ángulo (no hay sobrepasos) para velocidades bajas; a lo que sumamos que la resolución del encoder es de 15°, no es necesario el uso de control integral puesto que el error en estado estacionario será imperceptible por nuestro lazo de realimentación. Sin embargo, es muy delicado el ajuste del control proporcional, puesto que ante una ganancia excesiva se tiene dificultades desde el punto de vista mecánico y de errores de medición en el encoder óptico. Luego de diversas pruebas para diferentes tipos de control y condiciones de saturación, se concluye que la función de control mostrada en la Fig. 4 satisface todos los requerimientos de nuestro sistema: se adapta a la capacidad de conteo del encoder óptico, actúa en forma adecuada en el motor DC sin que se trabe en mecanismo reductor de revoluciones (si este se ubica físicamente en forma conveniente) y además permite la conexión de esta tensión al ADC del Arduino, previo filtro pasa bajos.

Para el control proporcional integral PI de voltaje se han utilizado los valores Kp = 10, Kv = 10 y tiempo de integración de Ts = 1 [ms], con resultados satisfactorios puesto que la dinámica con que nuestro convertidor llega al valor de referencia es mucho más rápida que las definidas por la mecánica del sistema (que determinan el control de velocidad – posición). Si se desea profundizar en el funcionamiento del control de voltaje DC a través de lazo PI (proporcional – integral), se sugiere revisar el informe del Taller 1.

Es importante mencionar que el convertidor Buck construido solamente es capaz de entregar tensiones mayores o iguales a cero e inferiores al valor de entrada DC (que, en nuestro caso, para efectos de simplificar la implementación, se ha definido igual a Vin = 5 [V]), por lo que no es suficiente para que el motor gire en ambos sentidos ni alcance velocidades de giro muy elevadas. Por lo mismo, la lógica de control considera que en caso que al PI de voltaje se le solicite una acción de control con voltaje de salida negativo (velocidad de giro en sentido contrario), para efectos de la definición del ciclo de trabajo del convertidor considera el valor absoluto de dicha referencia de tensión, y mediante un puente H se entrega la polaridad correcta a la tensión de armadura (mostrado en Fig. 5). Por otro lado, se define valores de saturación para evitar que el convertidor opere por sobre sus límites teóricos, más aún, por sobre o por debajo de sus límites prácticos [D = 0.2 a 0.8, observados experimentalmente]. Esto porque para valores del ciclo de trabajo cercano a los extremos 0 o 1, el comportamiento del convertidor es inestable, especialmente en nuestro caso por el apagado lento del optoacoplador con fototransistor Darlington utilizado (4N32), único disponible y de adquisición personal al momento de implementar el circuito. Además, en la práctica el motor es altamente no lineal, principalmente por problemas de lubricación en la caja reductora, haciendo crítica la correcta definición de estos márgenes de operación.

En la Fig. 5 se aprecia un diagrama de bloques representativo del hardware implementado, mientras que conexionado del Arduino Uno se muestra en la Fig. 6.

Fig. 5. Esquema funcional de control angular con motor DC.
Fig. 6 Diagrama de conexión de Arduino Uno para control de posición angular de motor DC.

Respecto del Arduino UNO, de acuerdo a lo mostrado en Fig. 6, se tiene las siguientes conexiones:

        • Interfaz USB para comunicación serial hacia PC.
        • PIN 3 Salida PWM
        • PIN 7 Sentido de avance hacia adelante
        • PIN 8 Complementario PIN 7
        • PIN 2 Entrada Pulsos Encoder Óptico (Interrupción)
        • PIN A3 Entrada ADC sensor Vout
        • PIN 13 Salida LED indicador posición alcanzada

Para efectos de la generación de señal PWM, se ha establecido como N = 32 el valor de división (prescaler) de la frecuencia de reloj para el Timer que se usa en nuestro generador PMW, y se ha definido como valor máximo del contenedor de fase Tocr = 100 (equivalente a un ciclo de trabajo D=1, es decir, del 100%), quedando el ciclo de trabajo expresado con resolución de 1%. Considerando que la frecuencia de reloj del Arduino Uno es de Fclk = 16[MHz] y que el Timer avanza 1 unidad por ciclo, se tiene una frecuencia de conmutación PWM de fPWM = 5 [kHz], lo que es adecuado para nuestro hardware.  Recordemos que, por el largo tiempo de apagado del Optoacoplador, no es posible ocupar frecuencias superiores a 5 [kHz], tal como se indica en informe del Taller 1. Se dispone una resistencia (ampolleta 12[VDC]/5W) en forma paralela a la carga DC del motor, para así incrementar la corriente de carga y asegurar que el sistema operará en modo de conducción continua de corriente.

La topología implementada para el convertidor reductor de tensión es la mostrada en la Fig. 5. Utiliza el N-MOSFET IRFP450 de International Rectifier, y como GATE Driver un Totem-pole basado en transistores bipolares complementarios 203904 (NPN) y 2N3906 (PNP), excitados a través del Optoacoplador 4N32 open-collector. Es idéntica a la utilizada en el Taller 1, pero con algunas modificaciones que se indican a continuación:

      • Voltaje de alimentación etapa de potencia Vin = 5[VDC]
      • Diodo Zener es D1 = 1N4732A (4.7 [V])
      • Lazo de realimentación está formado sólo por filtro pasa-bajos capacitivo de 1uF, muy cerca de PIN del ADC.
Fig. 7 Convertidor Buck y adaptador de voltaje implementado, el que se ha ajustado para tensiones de 0~5[V].

El circuito capaz de generar los pulsos para llevar a cabo las interrupciones que definen los incrementos (o reducción, según sea el sentido de giro), se muestra en la Fig. 8, donde la tensión presente en el divisor de tensión formado por el fotodiodo D1 y R2 depende de la luz que recibe D1, proveniente de las zonas blancas del disco rotatorio mostrado del encoder (mostrado en Fig. 2). El voltaje umbral (por ende, la sensibilidad) es ajustado a través del potenciómetro R3. En la práctica, este circuito se implementó a través del módulo KY-033 para Arduino.

Fig. 8 Circuito sensor de línea oscura. En la práctica, se ha implementado a través del módulo KY-033 para Arduino. R3 ajusta el umbral de activación (sensibilidad).

Por otro lado, se implementó un circuito inversor de polaridad del motor DC para permitir el giro de este en ambos sentidos. En primer lugar, se utilizó un puente H en base a transistores bipolares (BJT) complementarios, comandados desde los pines de sentido de giro complementarios entre sí (pines 7 y 8 del Arduino). El circuito fue el mostrado en la Fig. 7. Se utilizaron los transistores complementarios FJP3305 (NPN) y 2SA940 (PNP), con encapsulado TO-220, disponibles en laboratorio. También hubiese sido adecuado el uso de los transistores TIP41C y TIP42C, más económicos que los anteriores. Luego de varias pruebas, se observó que el comportamiento del puente inversor (o intercambiador de polaridad, para que no se confunda con el concepto de inversor que habitualmente se ocupa en electrónica de potencia) es adecuado, pero la caída de tensión en el puente fue del orden de 1.5 ~ 2 [V], afectando el desempeño del control de velocidad puesto que alimentamos el convertidor con sólo 5 [V]. En todo caso, el control funcionó, pero se trababa con facilidad por las no-linealidades del sistema mecánico al contar con una menor tensión de armadura. También se observó que, al no haber sobrepasos, el dispositivo no requiere conmutaciones de alta velocidad en el cambio de polaridad de la tensión aplicada al motor, por lo cual un mecanismo basado en relés mecánicos se consideró una solución adecuada. Esta opción es la mostrada en la Fig. 9.

Fig. 9 Puente H para intercambiar polaridad en motor DC en base a transistores bipolares.
Fig. 10 Puente H para intercambiar polaridad en motor DC en base a relés electromecánicos. En la práctica, se utilizó el módulo 2CH Relay Module de Arduino.

El puente H en base a relés electromecánicos, si bien opera a velocidades mucho más bajas que uno de estado sólido, tiene la ventaja que la caída de tensión entre contactos cerrados es prácticamente cero, y tolera altos niveles de corriente y tensión (aunque en nuestro caso, ambas variables son bajas). Si sumamos aquello a que disponemos del módulo de 2 relés para Arduino, lo que nos permite ahorrar gran cantidad de cables sobre nuestro protoboard, optamos por utilizar esta opción. Así se reduce la probabilidad de fallas durante la presentación de este setup, debidas muchas veces a cables sueltos o errores de conexión involuntarios en el protoboard. En la Fig. 10 se muestra el circuito basado en relés electromecánicos, implementado en la práctica con un módulo accesorio Arduino.

El software de control se puede resumir en el diagrama de flujo mostrado en la Fig. 11.

Fig. 11 Funcionamiento simplificado del software implementado en Arduino Uno.

En la Fig. 12 tenemos el setup de esta experiencia. Se utilizó una fuente lineal de laboratorio, dual, con salidas configuradas a 5 [V] (alimentación del circuito de potencia) y 10 [V] (polarización del circuito de disparo del MOSFET, flotante respecto de la anterior).

Fig. 12. Setup implementado, completamente funcional.

Se ha probado el setup satisfactoriamente con ángulos de referencia positivos y negativos, con valores de varias vueltas completas del encoder (por ejemplo 3600°, equivalentes a 10 vueltas completas), o a fracciones de esta (por ejemplo 15°, ó -30°), o a combinación de ambas (por ejemplo, 375° o -105°) con resultados totalmente satisfactorios.

La solución aquí presentada demuestra ser efectiva para un amplio rango de ángulos objetivo, ya sean positivos o negativos. Pruebas realizadas mostraron resultados satisfactorios para ángulos entre -10000° y +10000°, con una adecuada precisión.

Mejorando la robustez mecánica del encoder óptico, incrementando la capacidad de potencia del convertidor Buck y adaptando los lazos de control (en software y hardware), esta implementación es perfectamente extrapolable para aplicaciones industriales, resguardando cumplir las exigencias constructivas para este tipo de equipos.

Convertidor buck (reductor de tensión) con DSP TMS320F28335 (trabajo en contexto académico).

(Academic work – buck converter with DSP F28335 Texas Instruments)

En el contexto de un magíster en ciencias que estoy cursando actualmente, junto a mi compañero de clase Waldo M. tuvimos de desarrollar el trabajo que muestro a continuación. Es la primera actividad de un curso que contempla una serie de experiencias de laboratorio en el ámbito de la electrónica de potencia.

Introducción

Se conoce por Convertidor Buck (o convertidor reductor, o step-down)  no aislado al circuito cuya topología es la mostrada en la figura 1, donde el conmutador representa un dispositivo semiconductor de alta velocidad como MOSFET o IGBT, operando en modo apagado (o abierto, es decir, en alta impedancia) y encendido (o cerrado, saturado, es decir, a resistencia mínima) según una señal de encendido proporcionada por un dispositivo controlado digitalmente (como un microcontrolador, DSP o computadora) o analógico (por ejemplo, el circuito integrado TL494, ampliamente utilizado en fuentes de poder conmutadas de bajo costo).

Figura 1. Topología básica del convertidor buck (o step down, reductor de tensión) no aislado.

En síntesis, el convertidor buck opera a través de ciclos repetitivos de carga y descarga del inductor L1 y capacitor C1, mostrados en la figura 1. En régimen permanente, cuando el conmutador (switch) está cerrado, la tensión de entrada Vin produce un incremento en la magnitud de la corriente circulante por L1, la que continúa circulando cuando el conmutador se abre gracias al diodo D1. El capacitor C1 reduce el rizado generado por la conmutación en la inyección de corriente al inductor. En la figura 2 se aprecia el funcionamiento básico recién descrito y formas de corrientes y voltajes en componentes del circuito.

Figura 2. Operación básica del convertidor buck y formas de corrientes y voltajes en componentes del sistema, considerando modo continuo de operación.

Dependiendo de la corriente circulante por la carga, voltaje de salida, frecuencia de conmutación e inductancia de la bobina L1, podemos diferenciar la operación de convertidor Buck como modo continuo (cuando la corriente por L1 > 0  para todo t) y modo discontinuo (si en parte del ciclo de trabajo la corriente por el inductor se hace nula). Las ecuaciones que relacionan voltaje de salida y ciclo de trabajo son muy diferentes, y se muestran a continuación:

Ecuación 1. Relación de voltajes para operación en modo continuo.

        Ecuación 2. Relación de voltajes para operación en modo discontinuo.

Donde:

es el ciclo de trabajo del conmutador PWM, fPWM es la frecuencia de conmutación [Hz]. La ecuación (2), que define la tensión de salida para modo discontinuo, es válida cuando la corriente de carga es menor al valor definido por:

Ecuación 3. Corriente de carga límite entre modo continuo y discontinuo.

El convertidor buck operará en modo continuo si la corriente de salida es superior al valor límite dado por la ecuación (3), relación que se cumplirá en todos nuestros análisis posteriores.  Basta con verificar (por ley de Ohm) corriente de carga según RCARGA y tensión de salida VOUT.

Diseño

Se decide utilizar la frecuencia PWM fPWM = 5 [kHz], definida en base a experiencia práctica en el uso del optoacoplador 4N32 (única unidad disponible al momento de realizar la experiencia). Esta es la máxima frecuencia a la cual se han obtenido resultados experimentales satisfactorios, pues el tiempo de apagado del transistor Darlington de salida de este dispositivo se hace significativo para frecuencias superiores.

Se dispone del núcleo toroidal de ferrita B64290L22X830, hecho de material N30, con AL = 5000±25% [nH], adecuado para operar hasta una frecuencia de conmutación de 400 [kHz] (a frecuencias superiores, el núcleo toroidal se calienta y con ello disipa potencia, arriesgando la modificación de sus características ferromagnéticas en forma permanente). Además, se cuenta con un condensador electrolítico de 100[uF]/100VDC (notar la elevada tensión de ruptura de dieléctrico, pensado en soportar eventuales transitorios e incrementar vida útil, en desmedro de mayor costo y volumen). Un valor muy elevado del inductor reducirá el rizado en la onda de corriente, pero a la vez incrementará las inercias del sistema, haciendo más lenta la respuesta ante cambios en la referencia y transitorios más pronunciados y duraderos. Por otro lado, un valor muy reducido incrementará el rizado y, en caso extremo, puede elevar la corriente en el dispositivo de conmutación en forma excesiva durante tON cuando la tensión en la carga es pequeña (por ejemplo, cuando el capacitor está descargado al inicio de operación del dispositivo). Es importante tener presente que mayores valores de inductancia se traducen en mayor volumen de esta y costo, por lo que conviene incrementar la frecuencia de conmutación y así reducir las constantes de tiempo asociadas a L y C. Sin embargo, al incrementar la frecuencia también aumentan las pérdidas de potencia en el núcleo del inductor, pérdidas por efecto pelicular en conductores y en capacitancias internas de semiconductores. Considerando como criterio de diseño un rizado r máximo del 2% de la corriente promedio en inductor para una frecuencia de conmutación fPWM = 5 [kHz], tenemos que:

y como AL = L/N^2, con N = número de espiras en inductor, tenemos que se requiere N » 77 espiras. En laboratorio se dispone de inductor construido con este núcleo toroidal, con una inductancia de 36 [mH] (medidos a 1 [kHz]). Por otro lado, cálculos preliminares estiman que, para este toroide y número de espiras, la corriente de saturación del inductor será del orden de 5 [A], por lo cual si se supera dicho valor se reduce el valor de L, alterando los parámetros de diseño del convertidor. Se procurará no superar dicha corriente máxima.

En la fórmula recién señalada se ha despreciado la caída de tensión en diodo y MOSFET, así como el valor normalizado del rizado en la tensión del condensador respecto de su valor promedio. Esto es razonable, dado que la reactancia capacitiva de nuestro condensador de 100 [uF]/100VDC para la frecuencia fundamental es mucho menor que la reactancia inductiva del inductor:

Para las frecuencias armónicas, esta desigualdad continúa creciendo. Se hace conveniente el uso de condensadores adecuados para rizado (por ejemplo, de mica) de alta frecuencia en paralelo al condensador electrolítico de alta capacidad, ubicados convenientemente en circuito impreso para incrementar vida últil del capacitor electrolítico (siendo este el que más suele deteriorarse a medida que avanza el tiempo).

El diodo seleccionado para esta fuente es el MUR840, especial para conmutaciones de alta velocidad. Es capaz de soportar corriente promedio de 8 [A], más que suficiente para nuestro propósito.

Simulación

Se desarrolla en el software Matlab Simulink, de acuerdo a los diagramas mostrados a continuación para el convertidor (figura 3) y generador PWM (figura 4).

Figura 3. Esquema simulado en MATLAB Simulink del convertidor Buck. Los parámetros son L1= 36 [uH] C1= 100 [uF], RCARGA = 10 [Ohmios] y fpwm= 5 [kHz].
Figura 4. Esquema de circuito de disparo, simulado en MATLAB Simulink.

Ensayando diferentes parámetros de ganancia para el controlador PI se observa que un incremento en la constante de control proporcional Kp reduce el tiempo que tarda la salida en aproximarse al valor de referencia, pero no elimina el error de estado estacionario (diferencia entre voltaje de referencia y salida del convertidor cuando t tiende a infinito) y puede generar sobrepasos importantes (sobretensiones, lo que puede generar daños en la carga). Por otro lado, incrementos en la constante de integración Ki permite reducir a cero el error de estado estacionario, pero puede empeorar la respuesta transitoria del convertidor (se hace más lenta). Para ver comparativa ante diferentes valores de Kp y Ki, ver figura 5. También es importante mencionar que ganancias excesivas en el lazo de control puede conllevar problemas operativos a la unidad, dada la amplificación de errores de medición y la alta exigencia a los actuadores (saturación del parámetro de control D, lo que es especialmente relevante por el comportamiento inestable del convertidor cuando D se aproxima a sus límites teóricos, siendo recomendable su operación con valores entre 0.2 y 0.8).

Figura 5. Respuesta del convertidor controlado ante variación en la tensión de referencia. Vref = 6 [V] para t<1 [s], y Vref = 10 [V] para t≥1 [s].
Figura 6. Respuesta del convertidor controlado por PI con Kp = Ki = 10. Vref = 6 [V].

En la figura 6 se muestra la respuesta del sistema, considerando un control PI con Ki = Kp = 10. Se ha variado en forma importante la resistencia de carga (como podría ser el torque mecánico aplicado al eje del motor DC), en (a) con un aumento de la corriente de carga (rotor haciendo más esfuerzo mecánico), mientras que en (b) con una reducción de este. Notar que teóricamente el lazo logra controlar la tensión de salida. Este ejercicio está pesado sólo a modo de ejemplo, pues el efecto se hace mas visible en estas magnitudes para la carga. Sin embargo, para evitar exigencias sobre las componentes semiconductoras y el toroide, las corrientes en régimen permanente de carga se trabajarán por debajo de los 3 [A].

Implementación

Para la generación del PWM e implementación del controlador PI para el voltaje de salida se utiliza la tarjeta de desarrollo TMDSDOCK28335, basada en DSP de Texas Instrument TMS320F28335. Su configuración se realiza a través de interfaz USB – JTAG, utilizando Matlab Simulink y el software especializado TI Code Composer Studio.

El circuito implementado es el mostrado en la figura 7.

Figura 7. Esquemático del circuito implementado.

La implementación requirió el uso de 2 fuentes de poder DC flotantes entre sí. La primera para alimentar la etapa de potencia (esquema mostrado en la figura 1) y lazo de realimentación; y la segunda exclusivamente para el circuito de disparo del MOSFET IRFP450. La aislación galvánica entre el circuito de disparo es necesaria pues la fuente (Source) del MOSFET se encuentra a un voltaje variable, distinto de la referencia GND, y el voltaje de encendido del MOSFET debe ser aplicado entre compuerta y fuente del MOSFET. La tensión de esta fuente está dada por la requerida por el MOSFET entre compuerta GATE y fuente SOURCE para operar en modo saturado, en nuestro caso de 10 [V] típico. Esta no debe superar los 20 [V], para así no dañar la aislación existente entre compuerta y fuente del MOSFET (muy sensible a sobretensiones). A través de simulación, se ha comprobado que ningún componente está operando por encima de sus valores máximos, por lo que no se esperaba (ni hubo) dispositivos dañados.

En el lazo de realimentación se ha considerado una resistencia variable R5 (potenciómetro) para el ajuste del divisor de tensión (formado por R1 y R5) que permite adecuar los niveles de tensión a los que soporta la entrada ADC del DSP (0 a 3.3 V), el que se hace proporcional al voltaje de salida del convertidor.  El amplificador operacional LM358N puede operar desde los 3 VDC con alimentación simple (referida a GND, no diferencial), y en nuestro caso tiene la función de mostrar una alta impedancia hacia el divisor de tensión (y así no modificar la tensión observada entre R1 y R5, mejorando la estabilidad de las mediciones), y una baja impedancia hacia la salida, donde se conecta el ADC. Además, al alimentarse con +3.3 VDC, permite limitar el rango de tensión que llega al ADC, proporcionando protección a este input del DSP. Los capacitores C4 y C5 están para eliminar componentes de ruido en alta frecuencia presentes en el lazo de realimentación, mientras que el diodo zener D2 tiene la misión de proteger la entrada del ADC ante sobretensiones y estática.

Fotografía 1. Setup implementado.

Fue necesario reducir el valor de R4 a 330 [Ohmios], puesto que el apagado del transistor Darlington de salida del optoacopador era muy lento con resistencias más elevadas. La corriente circulante se incrementa por el circuito de disparo (del orden de 50 [mA]), pero funciona en forma estable y sin calentarse.

Luego de jugar con los valores de Kp y Ki, y ajustar la lectura del ADC de realimentación a través del potenciómetro R5, se obtuvo como resultado un convertidor buck muy estable, con precisión del orden de 0.1 [V] .  Variando los valores de carga verificamos que el controlador PI anda bastante bien, y que para cargas más grandes (en nuestro caso, superiores a 1 [A]) el rizado hacía que el inductor emitieria ruido audible de 5 [kHz], nuestra frecuencia de conmutación. El rango de operación satisfactoria del convertidor que obtuvimos es de aproximadamente 3 a 10 [VDC], con 12 [VDC] como entrada.

Para más información respecto de este proyecto, puedes solicitarla a través del formulario de contacto o por correo. Saludos y buen fin de semana.

Emerson Sebastián.