Inversor trifásico con DSP TMS320F28335, IGBTs IRG4PC30UD y driver IR2104. Trabajo en contexto académico.

(Three phase power inverter, with TMS320F28335 and IGBTs – academic work)

En el contexto de un curso de magíster,  con mi compañero Waldo Monsálvez implementamos un inversor trifásico para energizar una máquina de inducción. Waldo se encargó del trabajo con Matlab y su conexión al F28335, y yo de diseñar y construir todo el hardware. La idea era implementar un control Voltaje/Frecuencia en base a un VSI (inversor fuente de voltaje), con lazo de control para el voltaje. Y lo logramos. En el siguiente video podemos ver este setup en acción.

Es importante mencionar que lo hicimos con lo que teníamos a mano… y no me quedaban disipadores térmicos para los IGBTs ni LDO’s; pero afortunadamente nuestro requerimiento de corriente en la carga es bajo (la máquina de inducción está en vacío), así que no tenemos problemas de calentamiento. Espero conseguir una placa de aluminio y aisladores para tener el setup al 100%.

¿Por qué relación voltaje/frecuencia constante en nuestro motor de inducción?

En máquina de inducción es necesario reducir la tensión de alimentación (respecto de la nominal) cuando la frecuencia de la corriente alterna aplicada es inferior a la nominal, puesto que de no hacerse así, es posible que se sature el hierro del motor, incrementando la corriente de magnetización de la máquina. Por ello, cuanto más baja sea la frecuencia de la corriente AC, menor debe ser la tensión aplicada al motor.

¿Cómo funciona nuestro inversor?

Se trata de un inversor trifásico fuente de voltaje (VSI), implementado de acuerdo al diagrama mostrado en la Fig. 1. Podemos ver el esquema de control, donde se ingresa – desde un PC externo – como referencia la frecuencia de la corriente alterna trifásica que se aplicará a la máquina. Internamente, se define el voltaje fase – fase referencia con un valor proporcional a la frecuencia ingresada (en nuestro caso, esta razón voltaje/frecuencia = 1, donde el voltaje se expresa en [V] y la frecuencia en [Hz]). A través de un operador PI (proporcional – integral) se construye un lazo de control para el voltaje.

Fig. 1 Inversor fuente de voltaje (VSI), control voltaje – frecuencia con lazo abierto de velocidad y control PI de voltaje. Créditos de esta figura a Waldo.

La implementación se hace de acuerdo al diagrama de bloques de la Fig. 2.

Fig. 2 Diagrama de bloques con el hardware del VSI implementado. En gris, bloques para construir a futuro.

Consta de las siguientes componentes, totalmente funcionales:

    • Tarjeta de desarrollo para DSP de Texas Instruments TMS320F28335. A través de interfaz USB, mantiene comunicación con un computador externo.
    • Puente inversor trifásico en base a IGBT IRG4PC30UD, dos por cada fase (x6).
    • Circuito driver basado en IR2104, uno por cada fase (x3).
    • Circuito acondicionador de señal, que recibe hasta 80[Vpp] conmutados a 10[kHz], y entrega a su salida una señal alterna con valor medio 1.5[Vdc] y amplitud máxima 3[Vpp]. Se basa en amplificadores operacionales TL074, cuenta con filtro pasa bajos de 1 polo a 500[Hz] y aislación galvánica a través de transformadores.

En la Fig. 2 se considera además otras unidades funcionales, las que se proponen como trabajo futuro. Estas son:

    • Circuito conversor Digital – Análogo (DAC) con comunicación SPI para visualización de señales internas del DSP en osciloscopio, basado en MCP4822.
    • Encoder óptico que entrega 2 pulsos por giro de la máquina de inducción, para medición de velocidad angular a través de señales de interrupción en DSP. Se propone utilizar el módulo KY-033 para Arduino, en forma similar a como se hizo en Taller 2.

En Fig. 3 podemos ver la electrónica.

Fig. 3 Electrónica de nuestro setup, montada sobre un trozo de melamina (construcción clásica que uso desde mi época de pregrado).

A continuación una breve descripción de cada parte del hardware.

El DSP de control…

Utilizamos la plataforma de desarrollo de Texas Instruments, basada en el DSP TMS320F28335, modelo TMDSDOCK28335 (para más info, ver este link en la web de Texas Instruments).

Fig. 4 Tarjeta de desarrollo TMDSDOCK28335 de Texas Instruments.

Respecto del DSP, los pines utilizados son los siguientes:

Función Pin tarjeta DSP
PWM Fase A 00
PWM Fase B 02
PWM Fase C 04
Voltaje A-B A0
Voltaje B-C A1

Tabla 1. Pines de conexión del DSP hacia etapa de potencia y medición de voltajes.

La  programación se hizo con el software Code Composer Studio de Texas Instruments y Matlab, a través del cual se refrescaban parámetros que facilitaron la sintonía del control PI. Además, por esta vía se ingresaba la frecuencia de referencia.  Si deseas más detalles en la forma que programamos el DSP, no dudes en escribir.

Etapa de potencia y drivers…

La etapa de potencia se basa en los IGBT´s IRG4PC30UD, y como driver para estos dispositivos ocupamos los IR2104 (uno por cada fase del inversor, dado que entrega salidas complementarias y galvánicamente aisladas, que consideran tiempos de retardo para evitar cross-conduction).

En la Fig. 5 se muestra esquemático con etapa de potencia y drivers, las que en el montaje se han dispuesto en forma separada. Esto es posible puesto que la frecuencia de conmutación PWM es bastante baja (s´olo 10kHz) por lo que no hay inconvenientes con inductancias y capacitancias par´asitas del circuito.
De acuerdo a indicaciones del fabricante de los IR2104, la tensión DC máxima del bus de potencia es +600 Vdc. En nuestro caso, por seguridad y dado que se adapta a las tolerancias de tensión de nuestro circuito de acondicionamiento de señal y entrada del ADC, trabajaremos sólo con +40Vdc.

Fig. 5 Drivers y etapa de potencia.

Y el acondicionador de señales para los ADC (muestra de voltajes fase-fase)…

En la Fig. 6 se muestra el circuito de acondicionamiento de señal, que permite adaptar la tensión alterna y conmutada de los voltajes fase – fase vab y vbc, con valor medio 0, a la entrada de conversores análogo – digital del DSP, cuyo rango de operación es 0 a 3 V. Para ello, el circuito de la Fig. 3 realiza las siguientes operaciones:

    • A través de transformadores cuya relación de transformación es 220/12 Vac, se obtiene aislación galvánica entre la tensión trifásica de salida y la etapa de medición, se reduce la tensión por un factor 1/18; y también se filtra parcialmente la componente de alta frecuencia de salida (10kHz y armónicas de esta frecuencia).
    • Se reduce la tensión en 1/3, a través de un divisor de tensión resistivo.
    • A través de amplificadores operacionales y una red RC, cuyo polo se ubica a una frecuencia de 1kHz, se filtra la componente de alta frecuencia (10kHz y sus armónicas). La salida del circuito acondicionador de señal es de baja impedancia.
    • El circuito con amplificadores operacionales también suma la tensión de 1.61Vdc (medido, idealmente 1.5Vdc) a la tensión alterna de salida, permitiendo que semiciclos positivos y negativos estén dentro del rango de tolerancia del ADC. El valor medio utilizado fue 1.61V – medido en el divisor de tensión formado por R7 y R8 – (este valor se usa para calibrar el software).
    • Finalmente, un diodo Zener 1N4728 elimina sobretensiones que pudieran dañar las entradas analógicas del DSP.
Fig. 6 Circuito acondicionador de señal. Recibe voltajes Fase-Fase 80Vpp, y a la salida 0 a 3V, con 1.61V valor medio. Filtra componentes de alta frecuencia PWM (10 kHz y armónicas).

Y para cerrar este artículo de mi blog, una vista general del setup. Hay mucho más trabajo del que se ve a simple vista – especialmente en el lazo de realimentación de voltaje -, pero espero que con este artículo se les haga más fácil a quienes necesiten implementarlo  a futuro.

Fig. 7 Setup implementado con nuestro inversor trifásico.

Mis agradecimientos a Duberney Murillo (LARI) por sus valiosos consejos y por facilitarnos un espacio de trabajo.

Saludos y buena semana,

Emerson

Antena multibanda para HF, bandas de 40, 20 y 11/10 metros.

(HF End Fed Half Wave multiband antenna, for 40, 20 and 11/10 meter band).

Buscando una alternativa fácil de instalar, simple y menos aparatosa para implementar una antena multibanda capaz de operar en las bandas de 40, 20 y 11/10 metros, llegué a la famosa antena de media onda alimentada en un extremo. A través de E-bay adquirí una versión comercializada por Par Electronics, la EF-10/20/40 MKII, con la que comprobé efectividad y bajo ruido de este tipo de antenas cuando operan en forma horizontal.

Si deseas conocer en detalle esta antena, te recomiendo visitar el excelente sitio web de Steve Yates AA5TB (www.AA5TB.com). Por mi parte, haré sólo una breve descripción teórica, pues me enfocaré en la construcción de esta EFHW para 10/11, 20 y 40 metros, y en mostrar los resultados obtenidos. Los detalles constructivos están basados en el artículo publicado por PA3HHO (https://pa3hho.wordpress.com/end-fed-antennes/multiany-band-end-fed-english/). Mi idea es reproducir este trabajo y contar mi experiencia. En caso de surgir alguna mejora posible, también la comentaré.

¿En qué consiste la antena EFHW (Antena Multibanda de Media Onda Alimentada en un Extremo)?

Es un dipolo de media onda, pero en vez de conectarse la línea de bajada en el centro, se conecta en un extremo (ver Fig. 1). A mi parecer, la gran gracia de esta antena es que podemos utilizar el mismo hilo radiante para varias bandas de frecuencias armónicas, puesto que un hilo conductor de media onda a la frecuencia F, resonará en onda completa completa a 2*F, y en 3/2 de onda a 3*F, y así sucesivamente, siendo el punto de alimentación (en un extremo) siempre de impedancia muy elevada. Por ello, podemos construir antenas mutibanda utilizando un único hilo radiante, lo que hace más facil su instalación y uso como antena portable (por ejemplo, en salidas a acampar).

Al alimentarse en un extremo, como se mencionó anteriormente, la impedancia en el punto de alimentación es altísima (de 2000 a 3000 Ohmios), y por lo mismo requiere un adaptador de impedancias si se quiere conectar a la línea de 50 Ohmios. Típicamente, se usa un transformador de banda ancha con núcleo de ferrita toroidal o binocular, como veremos más adelante.

Fig.1. Comparación entre dipolo de media onda alimentado en el centro, y dipolo alimentado en un extremo. En amarillo, forma aproximada de distribución de la corriente. Notar que es máxima en el centro, lo que explica el hecho que también la impedancia es mínima; mientras que el el extremo la corriente es mínima (y máximo el voltaje), definiendo una alta impedancia.

Si se tiene una alta impedancia en el punto de alimentación, observaremos que la tensión de RF durante TX se eleva a varios kV si utilizamos potencia considerable, lo que hace críticas las características constructivas del módulo adaptador de impedancia. Por otro lado, habitualmente se ocupa el recubrimiento exterior (malla) del cable coaxial de bajada de antena como contrapeso (o contra-antena), lo que hace que este se comporte como parte del sistema radiante y por lo mismo se generan corrientes en modo común que eventualmente pueden afectar el rendimiento de la antena y la captación de ruido. Estas corrientes de modo común se pueden reducir drásticamente mediante el uso de un filtro de modo común (o balún de corriente, o choque de RF), el que debe ser instalado previo al ingreso de la línea coaxial al cuarto de radio. Así evitaremos meter RF en nuestros equipos cuando estemos en TX, y a la vez reduciremos la captación de ruido por parte de la línea coaxial en RX.

Para la adaptación de impedancias, la razón de transformación más utilizada es 1:8, donde en el lado de baja impedancia tenemos la línea de 50 Ohmios y en el lado de alta se coloca el hilo radiante de longitud eléctrica equivalente a media longitud de onda de la señal radiada (o recibida). Con esta razón de transformación tenemos mayor independencia de la R.O.E. (SWR) respecto del largo de la contra-antena (o contrapeso de la antena), siempre y cuando este sea superior al 10% de la longitud de onda de operación de la antena (ver sitio de AA5TB). Por lo mismo, si se trata de antenas multibanda, podemos escoger una longitud de contra-antena entre el 10% y 50% de la correspondiente a la frecuencia más baja de operación (en nuestro caso, banda de 40 metros).

Construyamos nuestra EFHW.

El diseño para las bandas de 40, 20 y 10 metros es el mostrado en la siguiente figura:

Fig.2. Esquema eléctrico de una antena EFHW de 3 bandas. N = 2 y M = 16, sobre núcleo toroidal de ferrita FT140-43. C = 150 pF/ 500V cerámico. Se utiliza el cable coaxial de bajada como contra-antena.

En 40 metros, el hilo se comporta como un brazo de media longitud de onda, recortado gracias a la presencia del inductor L, en nuestro caso de 34 uH. De este modo, logramos acortar el largo total de la antena, o sea D1 + D2 es menor que media longitud de onda en 40 metros, lo que a su vez reduce el ancho de banda y rendimiento en 40 metros.

Para las bandas de 20 y 10 metros, el inductor L se comporta como un choque de RF, es decir, como una impedancia tan elevada que prácticamente no permite el paso de corriente de RF hacia el tramo final de la antena (D2). De este modo, para 20 y 10 metros el largo total de la antena es D1, donde en el caso de 20 metros corresponde a media longitud de onda, mientras que en 10 metros a una longitud de onda completa, donde ambas maximizan su impedancia en el extremo. 

Fig. 3 Antena EFHW para las bandas de 40, 20 y 10/11 metros.
Fig. 4 Adaptador de impedancias antena EFHW para 40, 20 y 10 metros.

El transformador se ha hecho en base al toroide FT140-43 (Ver http://toroids.info/FT140-43.php), formado por 2 espiras bifilares + 14 espiras, con hilo de cobre esmaltado tipo 18 AWG. El secundario lo he enrollado en partes opuestas del toroide, con el objetivo de reducir capacitancias parásitas entre ambos extremos del bobinado. El toroide está recubierto de cinta dieléctrica para proteger la aislación del hilo que conforma el adaptador de impedancias, lo que no significa un problema pues en QRP no tendremos calentamiento del núcleo toroidal.

Para acortar la longitud de la antena de 40 metros, y también para aislar el último tramo de la antena (D2) en la operación de las bandas de 20 y 10 metros, se utiliza un inductor de L = 34 uH. Consiste en 65 vueltas de hilo 18 AWG sobre una tubo de PVC de 1 pulgada de diámetro.

Con el objetivo de obtener una satisfactoria operación del adaptador de impedancias en la banda de 10 metros, he colocado un capacitor de 150 pF en paralelo con el lado de baja impedancia del transformador (probando desde 50pF hasta 200pF, es el que mejor resultado ha dado). Debe soportar por lo menos 500V, como es en este caso, lo que es suficiente para operar equipos con potencias QRP (5W P.E.P o inferior), pues cuando se eleva la R.O.E. esta tensión puede llegar a máximos bastante elevados.

Luego de varias pruebas, las longitudes óptimas para D1 y D2 son:

D1 = 10.1 [m]

D2 = 1.6 [m]

Ajustadas a mi instalación en particular. Dependiendo del valor exacto de la inductancia, de la disposición del hilo radiante (horizontal, vertical o «v» invertida), del entorno (influencia de estructuras conductoras cercanas), tipo de suelo, trazado de la línea de bajada y postura de balún para filtrar corrientes en modo común, estas longitudes pueden variar.  

Ensayos preliminares me han mostrado resultados interesantes… QSOs en la banda de 40 metros a más de 500 km de distancia, y en 10 metros a más de 2.000 km!, con sólo 5 W p.e.p. Una maravilla. Es ideal para salidas a terreno, pues su instalación es muy sencilla. Faltaría medir su eficiencia, especialmente el efecto del transformador toroidal, pero independiente de eso, lo fácil de su construcción, instalación, operación multibanda y experiencia de uso la hacen una opción interesante.

ACTUALIZACIÓN 06/10/2020: llegaron mis núcleos toroidales FT240-43!! pronto un nuevo artículo referente a esta antena…

Aunque… por el momento, un adelanto en la Fig. 5:

Fig.5 Construcción de un nuevo adaptador de impedancias, basado en el núcleo toroidal de ferrita FT240-43.

Luego de revisar experiencia práctica de entusiastas experimentadores, he considerado en este nuevo diseño el uso de 2 núcleos toroidales apilados de tipo FT240-43. Según algunos autores, la eficiencia de este transformador es superior al 80% en toda la banda de HF, cuando se le utiliza con una relación de transformación de 49:1, un capacitor de 100 pF en paralelo con la entrada y una carga resistiva pura de 2450 Ohmios. Mi idea es probar este diseño de adaptador de impedancias para utilizar esta antena con más potencia  (los 100 Wpep que entrega mi FT-450D) y extender el uso a la banda de 80 metros.

Más información en este link (antena multibanda para 80/40/20/10 metros).

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.