Saltar al contenido

Modelo de Motor DC

En este completo artículo, aprenderás sobre el modelado de un motor DC con simulación en MATLAB y Simulink, abordando conceptos clave en el modelo de motores y sistemas electromecánicos. Descubre cómo obtener el modelo lineal de un motor de corriente directa (DC), su importancia en la industria y cómo modelarlo a través de sus ecuaciones diferenciales, obteniendo sus representaciones en función de transferencia y espacio de estados. También te mostraré como encontrar los parámetros de un motor DC de forma experimental para que puedas hacerlo con cualquier motor que tengas en casa.

Antes que nada, te invito a VER EL CURSO GRATUITO DE ANALISIS DE SISTEMAS.

Motor de Corriente Directa DC

El dínamo de corriente directa básico consiste en un elemento con una armadura, escobas y bobinas de campo en serie, paralelo o la combinación de ellas, el cual viene siendo usado por muchos años como un convertidor básico de energía. Estos motores son usados en procesos como elevadores eléctricos, laminadores, vehículos eléctricos y algunas bombas donde se requiere de velocidad variable.

Modelo Electromecánico

Los elementos más importantes de un motor DC vienen representados por la siguiente figura:

Motor de Corriente Directa DC

La armadura del motor DC se modela como si tuviera una resistencia constante R en serie con una inductancia constante L que representa la inductancia de la bobina de la armadura, y una fuente de alimentación v que representa la tensión generada en la armadura.

La primera ecuación se realiza haciendo un análisis de la malla del circuito:

v(t)=Ri(t)+L\dfrac{di(t)}{dt}+E_a(t)

L\dfrac{di(t)}{dt}=v(t)-Ri(t)-E_a(t)\hspace{3em} (1)

Donde E_a(t) (Fuerza contraelectromotriz [volts]) es una tensión generada que resulta cuando los conductores de la armadura se mueven a través del flujo de campo establecido por la corriente del campo i_f

Naturalmente, en toda potencia mecánica desarrollada en el rotor se entrega a la carga mecánica conectado al eje del motor de CC.

Parte de la potencia desarrollada se pierde a través de la resistencia de la bobina del rotor, la fricción, por histéresis y perdidas por corrientes de Foucault en el hierro del rotor.

Desde aquí las perdidas por fricción y parte de la energía desarrollada es almacenada como energía cinética en la masa girante del rotor. La ecuación de la sección mecánica viene dada por el modelo

T_m(t)=J\dfrac{d\omega(t)}{dt}+B\omega(t)

J\dfrac{d\omega(t)}{dt}=T_m(t)-B\omega(t)\hspace{3em} (2)

Donde T_m(t) es el torque del motor de corriente continua, B es el coeficiente de fricción equivalente al motor de CD (corriente continua) y la carga montados sobre el eje del motor, J es el momento de inercia total del rotor y de la carga con relación al eje del motor, \omega(t) es la velocidad angular del motor y \dfrac{d\omega(t)}{dt} es la aceleración angular.

Para poder lograr la interacción entre las ecuaciones anteriores se proponen las siguientes relaciones que asumen que existe una relación proporcional, K_a (Constante contraelectromotriz [v/rad s]), entre el voltaje inducido en la armadura y la velocidad angular del eje del motor.

E_a(t)=K_a\omega(t)\hspace{3em} (3)

Y se supone la siguiente relación electromecánica que establece que el torque mecánico es proporcional, K_m (Constante de Torque [Nm / A]), a la corriente eléctrica que circula por el motor DC.

T_m(t)=K_mi(t) \hspace{3em} (4)

Funciones de Transferencia del Motor de Corriente Continua DC

Comenzamos aplicando transformada de Laplace a las ecuaciones 1 al 4.

Lsi(s)=v(s)-Ri(s)-E_a(s) \hspace{3em} (5)
Js\omega(s)=T_m(s)-B\omega(s)\hspace{3em} (6)
E_a(s)=K_a\omega(s)\hspace{3em} (7)
T_m(s)=K_mi(s)\hspace{3em} (8)

sustituimos ec 7 y ec 8 en la ec 5

Ls\dfrac{T_m(s)}{K_m}=v(s)-R\dfrac{T_m(s)}{K_m}-K_a\omega(s)

v(s)=\dfrac{(R+Ls)T_m(s)}{K_m}+K_a\omega(s)\hspace{3em} (9)

De la Ec 6, podemos obtener la velocidad angular:

\omega(s)=\dfrac{T_m(s)}{Js+B} \hspace{3em} (10)

Sustituyendo Ec 10 en Ec 9

v(s)=\dfrac{(R+Ls)T_m(s)}{K_m}+K_a\dfrac{T_m(s)}{Js+B}

v(s)=\left(\dfrac{R+Ls}{K_m}+\dfrac{K_a}{Js+B}\right)T_m(s)

v(s)=\dfrac{(R+Ls)(Js+B)+K_aK_m}{K_m(Js+B)}T_m(s)\hspace{3em}(11)

De esta forma podemos obtener la función de transferencia que relaciona la salida (torque) del motor de CD con la entrada (voltaje)

\dfrac{T_m(s)}{v(s)}=\dfrac{K_m(Js+B)}{LJs^2+(RJ+LB)s+RB+K_mK_a}

Notemos que el motor posee diferentes salidas como puede apreciarse en el siguiente diagrama de bloques del motor DC.

De la misma forma, se pueden usar las ecuaciones para obtener la función de transferencia que relacionen cualquier salida con la entrada que es voltaje.

Función de transferencia de la fuerza contraelectromotriz con relación al voltaje:

\dfrac{E_a(s)}{v(s)}=\dfrac{K_mK_a}{LJs^2+(RJ+LB)s+RB+K_mK_a}

Función de transferencia de la corriente de armadura con relación al voltaje:

\dfrac{i(s)}{v(s)}=\dfrac{Js+B}{LJs^2+(RJ+LB)s+RB+K_mK_a}

Función de transferencia de la velocidad angular con relación al voltaje:

\dfrac{\omega(s)}{v(s)}=\dfrac{K_m}{LJs^2+(RJ+LB)s+RB+K_mK_a}

Por otro lado si estamos interesados en conocer la posición del motor de corriente directa DC, basta simplemente con integrar la velocidad angular, en otras palabras, simplemente colocamos un integrador a la función de transferencia anterior. Por lo tanto la ecuación que representa la posición del Motor DC es:

\dfrac{\theta(s)}{v(s)}=\dfrac{K_m}{s(LJs^2+(RJ+LB)s+RB+K_mK_a)}

Espacio de Estados

Una vez obtuvimos las funciones de transferencia, el espacio de estados también es muy sencillo de obtener, partiendo de las ecuaciones del 1 al 4, podemos nombrar nuestros estados como:

x_1=\omega
\dot{x}_1=\dot{\omega}
x_2=i
\dot{x}_2=\dot{i}

Reescribiendo las ecuaciones del 1 al 4 usando las definiciones del espacio de estado, se tiene:

\dot{x}_1=-\dfrac{B}{J}x_1+\dfrac{K_m}{J}x_2

\dot{x}_2=-\dfrac{R}{L}x_2-\dfrac{K_a}{L}x_1+\dfrac{1}{L}v

La representación del modelo del Motor DC en espacio de Estados es:

\begin{bmatrix}
 \dot{x}_1\\\\\\\dot{x}_2
 \end{bmatrix}=
 \begin{bmatrix}
 -\dfrac{B}{J}&\dfrac{K_m}{J}\\ \\
 -\dfrac{K_a}{L}&-\dfrac{R}{L}
 \end{bmatrix}
 \begin{bmatrix}
 x_1\\\\\\x_2
 \end{bmatrix}+
 \begin{bmatrix}
 0\\\\\dfrac{1}{L}
 \end{bmatrix}v
\begin{bmatrix}
 y_1\\y_2
 \end{bmatrix}=
 \begin{bmatrix}
 1&0\\
 0&1
 \end{bmatrix}
 \begin{bmatrix}
 x_1\\x_2
 \end{bmatrix}
Laplace y seçales típicas

Transformada de Laplace en Análisis de Sistemas

Cero de una Función de Transferencia

Cero de una Función de Transferencia

Modelo Matemático Tanque Cerrado

Modelado Matemático Tanque Cerrado

Implementación en Simulink del Motor de Corriente Directa DC

Vamos a representar las ecuaciones diferenciales del motor DC usando la lógica de bloques del Simulink / MATLAB, para este ejemplo numérico vamos a establecer los siguientes parámetros:

  • momento de inercia del rotor:
J=0.01\ \rm Kg.m^2
  • constante de fricción viscosa del motor:
B=0.1\ \rm N.m.s
  • constante de la fuerza electromotriz:
K_a=0.01\ \rm V/rad/s
  • Constante del par del motor:
K_m=0.01\ \rm N.m/A
  • resistencia eléctrica:
R=1\ \rm\Omega
  • inductancia eléctrica:
L=0.5\ \rm H

En unidades SI, el par motor y las constantes de emf de retorno son iguales a través de la técnica paramétrico dimensional demostrado que en literatura que es válido para motores DC, basándose en utilizar expresiones que guardan una relación paramétrica dimensional directa entre K_m con la constante de voltaje K_a , es decir:

K_a=K_m

Comprar Motores DC y Placas Microcontroladas

A continuación te dejo algunas placas de desarrollo BARATAS y Motores DC con el ENCODER ya incluido para que puedas implementar estos proyectos y los puedas adquirir desde cualquier parte del MUNDO, a través del sitio web chino de Aliexpress.

Descargar Diagrama en Simulink

Puedes descargar el Archivo de Simulink totalmente Gratis.

⚠️ Antes de descargar el código te invito a que te matricules a mi curso de SIMULINK

DESCARGAR ARCHIVO EN SIMULINK  👉

Ejemplo Experimental del Modelo del Motor DC

El modelo presentado anteriormente, depende de vários parámetros los cuales son necesarios para la resolución de las ecuaciones diferenciales. A continuación mostraremos como determinar de forma rápida estos parámetros de forma experimental.

Disclaimer: Los instrumentos que voy a usar no son de la mejor calidad, por lo tanto ajustaré el modelo con un algoritmo de optimización. Y el procedimiento completo, tomando vários datos, lo dejaré en la bibliografía.

El motor empleado para este modelo es un motor de 6V con una caja de engranajes de metal 34: 1 y un codificador de cuadratura integrado que proporciona una resolución de 11 conteos por revolución del eje del motor, lo que corresponde a 374 conteos por revolución del eje de salida de la caja de engranajes.

Suscríbete a este sitio WEB para estar enterado de las nuevas entradas!

Resistencia de Armadura

Hay vários métodos para determinar la resistencia R de la armadura del Motor, para este caso, usaré el método más sencillo que es medir directamente los devanados de la armadura del motor con un multímetro.

R=3.4\Omega

Inductancia de la Armadura

La inductancia de armadura (L) también puede ser medida de los devanados del motor (Cables de alimentación del motor) utilizando un inductómetro. Como yo no poseeo esta herramienta, voy a suponer una inductancia pequeña debido al tamaño del motor, y dejaré que mi algoritmo de optimizacón determine este parámetro.

L=1.5mH

Constante electromotriz y de torque

De la ecuación (3) podemos extraer la constante contraelectromotriz K_a

K_a=\dfrac{E_a}{\omega(t)}

Aplicando Ley de Kirchoff: E_a=v-iR

K_a=\dfrac{v-iR}{\omega(t)}
Fuerza Contraelectromotriz
  • K_a Constante electromotriz
  • v Voltaje aplicado
  • i corriente de la armadura consumida por el motor
  • R Resistencia de la armadura en Ohms
  • \omega(t) Velocidad en Radianes por Segundo

Con el siguiente circuito y algún tacometro o micrcocontrolador que lea el encoder del motor podemos determinar el voltaje, la corriente y la velocidad para el cálculo de la constante K_a

Calcular constante contraelectromotriz
Va (v)Ia (A)W(RPM)W(rad/s)
5.280.19189.519.84444
K_a=\dfrac{5.28-(0.19)(3.4)}{19.84}=0.2335v/rad\ s

Dado que la constante electromotriz de voltaje es igual a la constante de torque tenemos:

K_a=K_m=0.2335 N.m/A

Constante de tiempo mecánica

Debido a la relación directa entre la tensión de armadura y la velocidad del eje del motor, al momento de aplicarle un escalón de voltaje al motor, podemos observar una respuesta transitoria de velocidad para condiciones de carga fija. A partir de esta respuesta podemos encontrar la constante de tiempo, el cual es el 63.2% del crecimiento de la dinámica hasta llegar al estado estable. Ese tipo de dinámicas ya fue explicada en nuestra entrada de Sistemas de Primer Orden.

Para el caso del motor, deberemos colocar un osciloscópio en los bornes del motor y generar escalones entre +5v y 0v para poder observar esa dinámica. Podemos valernos de un generador de señales, o utilizar algún código para manipular motores con Arduino por ejemplo. O sencillamente conectar el motor directo a la fuente y capturar el momento exacto cuando ocurre la transición de voltaje.

t_m=0.025s

Momento de Inercia J

La siguiente ecuación es empleada para determinar el momento de inercia J utilizando los parámetros que tenemos hasta este momento.

J=\dfrac{t_mK_aK_m}{R}
J=\dfrac{(0.025)0.2335)^2}{3.4}=0.000400955\ kg.m^2

Corriente de Arranque y Torque de Fricción

Mediante una variación de voltaje DC sobre los terminales del motor, se debe incrementar la tensión gradualmente hasta que se observe que el eje del motor comienza a girar, allí se suspende el incremento de voltaje y se toma la lectura del amperímetro para saber cual es la corriente necesaria para el arranque del motor, i_{arr}.

Con esto podremos calcular el torque de fricción T_f a través de la siguiente ecuación:

T_f = K_mi_{arr}

En mi caso voy a asumir el Torque de fricción nulo dado que no tengo carga en el motor y no poseo en este momento una fuente regulable, sin embargo puede calcularse facilmente este parámetro.

T_f=0

Constante de Fricción de Coulomb

Esta expresión se obtiene cuando el motor se encuentra en estado estable, o sea alcanza una velocidad constante, aplicando la ecuación (2) colocando las derivadas en cero dado que estamos en estado estacionario, tenemos que:

B=\dfrac{T_m}{\omega(t)}

Donde T_m es el torque mecánico dado por la expresión (4), sin embargo a la ecuación anterior podemos adicionarle el torque generado por la carga que acabamos de calcular es decir el torque de fricción, en ese caso si consideramos este parámetro podemos usar la siguiente expresión:

B=\dfrac{T_m-T_f}{\omega(t)}
  • B Constante de fricción de Coulomb
  • T_m torque mecánico
  • T_f torque de fricción
  • \omega(t) velocidad en radianes

Vemos que nuevamente necesitamos medir la velocidad, para mi caso voy a utilizar los mismos datos que obtuve al calcular la constante electromotriz, sin embargo puedes tomar diversos datos en diferentes puntos de voltaje, como expresado en los trabajos presentados en la bibliografía.

T_m=K_mi(t) = (0.2335)(0.19)=0.0443681\ N.m
B=\dfrac{0.0443681}{19.84}=0.002235795\ N.m.s

Parámetros del Motor de 6v DC

La siguiente tabla resume todos los parámetros encontrados en esta práctica:

ParámetroSímbolo ValorUnidad
Momento de InerciaJ0.00040095Kg.m^2
Constante de Fricción viscosaB0.00223579N.m.s
Constante de Fuerza ElectromotrizKa0.23351629V/rad s
Constante del Par del MotorKm0.23351629N.m/A
Resistencia de ArmaduraR3.4Ohms
Inductancia eléctricaL0.0015H

Con los datos anteriores, aplicamos un algorítmo de optimización para ajustar un poco mejor los parámetros del modelo:

Obteniendo los siguientes parámetros optimizados, que son bastante próximos a los parámetros experimentales que ya habíamos obtenido.

ParámetroSímbolo ValorUnidad
Momento de InerciaJ0.00048115Kg.m^2
Constante de Fricción viscosaB0.0026829N.m.s
Constante de Fuerza ElectromotrizKa0.22076V/rad s
Constante del Par del MotorKm0.22076N.m/A
Resistencia de ArmaduraR4.08Ohms
Inductancia eléctricaL0.011307H

La respuesta del Motor DC Real comparado con el Modelo presentado aquí lo podemos comparar a continuación:

Modelado Experimental de un Motor DC
Modelado Experimental de un Motor DC

Podemos apreciar que el modelo matemático del Motor de imán permanente DC con los parámetros obtenidos experimentalmente y levemente ajustados con un algoritmo de optimización representan adecuadamente el comportamiento real de la velocidad del motor DC.

Bibliografia

Los siguientes sitios WEB fueron consultados para la elaboración de este post:

  1. Ctms.engin.umich.edu. 2021. Control Tutorials for MATLAB and Simulink – Motor Speed: System Modeling. [online] Available at: https://ctms.engin.umich.edu/CTMS/index.php?example=MotorSpeed&section=SystemModeling [Accessed 27 June 2021].
  2. My.mech.utah.edu. 2021. DC Motor Characteristics. [online] Available at: [Accessed 27 June 2021].
  3. Cerón-Morales, I., Vázquez-Espinoza, J. and Aquino-Díaz, E., 2021. Modelo matemático del motor de corriente directa. [online] researchgate. Available at: [Accessed 27 June 2021].
  4. Canal, I., Valdiero, A. and Reimbold, M., 2021. Modelagem Matemática de Motor de Corrente Contı́nua e Análise Dinâmica. [online] Proceeding Series of the Brazilian Society of Computational and Applied Mathematics. Available at: [Accessed 27 June 2021].
  5. Carlos Gerardo, H. and Manuel Guillermo, Q., 2013. Obtención experimental de los parámetros del motor que se utilizará en el sistema de locomoción de una esfera rodante. Trabajo de Grado. Universidad Pontificia Bolivariana. Available at:
  6. Solarte Rosas, C. and Muñoz Ordoñez, J., 2015. Controlador Electrónico para Articulaciones Rotoides. Trabajo de Grado. Universidad del Cauca, En ESPECIAL EL ANEXO A:

Bueno Controleros y Controleras eso es todo por la entrada del dia de hoy, ya tenemos otro modelo matemático y otro tipo de procesos, el cual podremos modelarlo posteriormente con algún tipo de controlador que desarrollemos en el sitio web o en el canal de YouTube.

Si les ha gustado el contenido del post y el contenido del video, no olvides compartirlo, si crees que esta información te fue de utilidad y te gustaría contribuir con mi trabajo, quizas podrías invitarme a un cafe: Invitar a un Café a Sergio Castaño.

Nos vemos en la próxima queridos amigos, que tengan un excelente día.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (25)

Buenas, en corriente continua, ¿la caída del voltaje en la bobina no sería nula, es decir:
L * (di/dt) = 0?

Responder

Isabel, efectivamente tienes un punto válido. En un circuito de corriente continua (DC), la caída de voltaje a través de una inductancia se determina por la tasa de cambio de la corriente a través del tiempo, representada por L * (di/dt). En estado estacionario, donde la corriente es constante, la derivada de la corriente con respecto al tiempo es cero, y por ende, la caída de voltaje en la inductancia también sería cero, L * (di/dt)=0. Esto significa que una vez que el motor DC alcanza su régimen permanente y la corriente se estabiliza, la inductancia de la bobina de la armadura no contribuirá a una caída de voltaje. No obstante, durante los estados transitorios, como al inicio o cuando hay fluctuaciones de carga, la inductancia sí tendrá un efecto y habrá una caída de voltaje asociada a ella.

Responder

Hola Sergio, ¿cómo analizo la respuesta a mi motor si le meto una corriente alterna?

Responder

Quiero realizar el control de velocidad de un motor dc. Acoplanto un segundo motor el cual me serviria de sensor. Puedo hacer eso?

Responder

Es algo asi como un Motor-Generador. Puedes hacerlo, ya que mediras indirectamente la velocidad por medio del voltaje inducido en el segundo motor. Eso si, tendrás que determinar bien la relación con la velocidad para que dicha medida sea acurada.

Responder

Buenas tardes, si tengo un motor DC de voltaje nominal de 12 V y lo necesito a 9 V realizo el mismo procedimiento y luego adapto los resultados de los valores del motor a lo que necesito ?

Responder

Hola Sergio, buenas noches. Una pregunta para la obtención de la Constante electromotriz es necesario alimentar nuestro motor a su voltaje máximo o dicha constante va a ser la misma a cualquier voltaje, o que voltaje recomendarías para sacar estos parámetros a un motor de 12V DC, por cierto muchas gracias por dedicar tiempo a el aprendizaje de otros.

Responder

Según la bibliografía que consulté era empleado el voltaje nominal, por lo tanto, usa los 12v para estimar ese parámetro. Recuerda que los 12v son solo para el motor, el arduino o microcontrolador deben ir a 5v. Saludos.

Responder

Buenas noches, al momento de compilar el programa Parametros_Motor con Motor_Modelo6v_2015a pero al compilar se demora demasiado el programa en guardar los parámetros y cuando pongo detener me sale un error que dice Error evaluating registered method ‘Outputs’ of MATLAB S-Function ‘sserialrb’ in ‘MotorModelo6v_2015a/Arduino/Serial Receive’.

Responder

Pues parece un error de comunicación con tu arduino, debes verificar primero si el arduino está bien conectado con simulink, si esta configurado el puerto COM adecuado.

Responder

falta una J en la ec 6

Responder

Gracias Manuel por la observación, ya lo he corregido. Saludos.

Responder

Buenas tardes, Muchas gracias por este aporte, mi pregunta es como o en base a que se estiman J y B.

Responder

Hola Esteban, he adicionado un video junto con los cálculos de como estimar estos parámetros del motor DC. Saludos.

Responder

Hola sergio. Que pasa si en el ejercicio teórico de variables de estado del motor cc, este cuenta con un Par de carga? se tomaría como una perturbación o como la incluyo en las matrices?
(mi ecuación mecanica me queda: dx2/dt= -B/J x1 + km/J x2 – Tc/J ) Tc= par de carga

muy buen post

Responder

Hola Juan, gracias por el comentário. Efectivamente el par de carga entra como un tercer vector en el espacio de estados como una perturbación. con la ecuación diferencial que muestras, pero ten en cuenta que es en la ecuación diferencial 1, no en la 2. O sea dx1/dt= -B/J x1 + km/J x2 – Tc/J.
Saludos.

Responder

Hola, Buenas Tardes, matlab da la posibilidad de realizar todos esos cálculos y despejes mediante códigos y llegar a la función de transferencia para despues enviarla automáticamente a simulink

Responder

Hola Juan Pablo, si, de hecho todas las variables que tengas cargadas en el Workspace de Matlab, puedes usarlas tranquilamente en el Simulink. Saludos.

Responder

gracias por el video bro exelente trabajo

Responder

Que bueno que te gustó Joel. Saludos!

Responder

MUCHAS GRACIAS POR TU TIEMPO MI ESTIMADO

Responder

Que bueno que te sirvió Ali, saludos!

Responder

Saludos no puedo abrir el archivo de simulink del motor me dice que esta en version 2018 y que lo exporte para 2017

Responder

Hola Francisco, ese es un problema del Simulink, dado que el archivo fue creado en la versión 2018, no te deja abrir si tienes una versión antigua a esa. Lo que puedes hacer es seguir el video y crear tu mismo la función de Simulink, en el video esta bastante detallado como crear el archivo.

Responder

Gracias ya lo hice. Puedes ayudarme a sacar las otras ecuaciones de transferencia hice los calculos pero me salieron mal

Responder