Está en la página 1de 5

Control lazo abierto de un motor(lectura encoder) con PWM

Febrero 2021
Yeimy Pino , yeimy.pino@unach.edu.ec

Abstract—In this practice we will control a motor with an y que puede ser programada tanto en Windows como macOS y
encoder, to control the motor we will use a transistor as a GNU/Linux. Un proyecto que promueve la filosofı́a ’learning
comparator, the encoder will indicate the rpm in a period of time, by doing’, que viene a querer decir que la mejor manera de
with this we can calculate its speed, with this we can emulate
the rim of a robot and With this, starting from the speed we can aprender es cacharreando.
find the final position of our robot in a certain time
Index Terms—Sensor,Encoder, Rpm

I. I NTRODUCCI ÓN
Hoy en dı́a es muy común encontrarnos con robots que
realizan diferentes tipos de tareas, como limpiar, ensamblar,
explorar, ect. Cada robot tiene diferente programación, es-
tructura, formulación matemática, etc, que lo hace único y
especial.
Como sabemos los robots se mueven con ruedas en su gran
mayorı́a, es por eso que intentaremos simular una rueda del
Fig. 1. Arduino
robot, obtendremos los rpm y la velocidad, para en un futuro
poder determinar la posición y velocidad que tendrá el robot
en un lapso de tiempo. Matlab
Para poder recrear este sistema hemos usado PWM para MATLAB combina un entorno de escritorio perfeccionado
poder simular este funcionamiento, a su vez un sensor de para el análisis iterativo y los procesos de diseño con un
velocidad que actuará como encoder, el mismo que nos contará lenguaje de programación que expresa las matemáticas de
el número de vueltas que da el motor, para posteriormente matrices y arrays directamente.
calcular los rpm y la velocidad. Las apps de MATLAB le permiten ver cómo funcio-
A su vez la mayorı́a por no decir todos los sistemas que fun- nan diferentes algoritmos con sus datos. Realice iteraciones
cionan con algún sensor se suele programar su funcionamiento, hasta obtener los resultados deseados y, después, genere au-
ya sea en traejtas super avanzadas o microprocesadores mas tomáticamente un programa de MATLAB para reproducir o
sencillos. automatizar su trabajo.
Arduino parece ser una opción más factible para poder Sistema de control de lazo abierto
simular su funcionamiento, ya que arduino es muy fácil de Son aquellos en los que la señal de salida no afecta al
usar y también es más común encontrar información que funcionamiento del sistema total. Por ejemplo: un horno de
eventualmente nos ayudara a crear y simular cualquier entorno. microondas que carece de sensor de temperatura de los alimen-
Para las graficas hemos visto conveniente Matlab, este tos (es el que permite calcular automáticamente el tiempo y el
sofware permite la comunicacion con arduino, lo que nos nivel de cocción) al cocinar, el artefacto emitirá las microondas
brinda una buena opción a la hora de poder obtner las graficas a lo largo del tiempo fijado al iniciarse el proceso de cocción,
Uniendo todos estos elementos y electrónica básica de sin tener en cuenta si el alimento está totalmente cocido o no.
circuitos podemos obtner las velocidades y rpms en un lapso
de tiempo.
II. M ARCO T E ÓRICO
Arduino
Arduino es una plataforma de creación de electrónica de Fig. 2. Sistema de control lazo abierto
código abierto, la cual está basada en hardware y software
libre, flexible y fácil de utilizar para los creadores y desar- PWM
rolladores. Esta plataforma permite crear diferentes tipos de PWM son siglas en inglés que significan Pulse Width Modu-
microordenadores de una sola placa a los que la comunidad lation y que lo podemos traducir a español como Modulación
de creadores puede darles diferentes tipos de uso. de ancho de pulso. Puede ser que esto no te diga nada de
Es una placa con todos los elementos necesarios para conec- momento, pero al terminar el artı́culo tomará todo el sentido
tar periféricos a las entradas y salidas de un microcontrolador, del mundo.
La modulación de ancho de pulso está formada por una
señal de onda cuadrada que no siempre tiene la misma relación
entre el tiempo que esta en alto y el tiempo que está en bajo.

En la siguiente imagen vemos una señal que varı́a entre 5


voltios y 0 voltios. A lo largo del tiempo la señal varı́a entre
dos valores de tensión. Durante un tiempo determinado la señal
se encuentra en el nivel alto ( en este caso 5v ) y durante otro
periodo de tiempo se encuentra en el segundo valor de tensión
(en este caso 0v).

Fig. 4. Principales partes del encoder

Especificaciones encoder
Diametro: 25 mm Grosor: 3 mm Agujeros: 20 Eje del
Enconder: 3x5 mm (Para motorreductor Amarillo)
Fig. 3. Señal PWM

El tiempo que la señal se encuentra en el nivel alto ( 5


voltios ) lo denominamos como tiempo on ( Ton ) mientras
que el tiempo que está en nivel bajo lo denominamos tiempo
off ( Toff ). La suma del tiempo on y el tiempo off es el perido
de la señal ( T ).

Y como en toda señal periódica, el inverso de del periodo


( 1 / T ) es la frecuencia de la señal. Fig. 5. Encoder

¿Cómo funciona el PWM? Variando su valor de tensión Motor


entre dos valores conocidos, por ejemplo Vcc y GND en Es uno micro motor de Corriente Continua con caja de en-
periodos concretos de tiempo y con una frecuencia fija. Estos granajes Relación de engranajes 48:1 Rango de alimentación:
periodos reciben nombres especiales. 3 a 9 V Velocidad sin carga 220 RPM Consumo sin carga:
100mA - 6V Consumo con carga 200mA - 6V Torque 0.5
Sensor de Velocidad (Encoder) Kg/cm

El funcionamiento básico de este sensor es el siguiente; Si


se hace pasar cualquier cosa entre la ranura del sensor, este
crea un pulso digital en el pin D0. Este pulso va de 0V a 5V
y es una señal digital TTL. Luego con Arduino podemos leer
este pulso. A continuación describimos las diferentes partes
del encoder:

Pines de conexión del módulo de velocidad (encoder FC-


03) Fig. 6. Motor

VCC: Alimentación del módulo de 3,3V a 12V. GND:


Tierra. D0: Señal digital de los pulsos de salida. A0: Señal
analógica de los pulsos de salida. Señal de salida en tiempo
real. (normalmente no se usa).
III. M ATERIALES IV. I MPLEMENTACI ÓN
1. Computadora,Software de Arduino-Matlab. Para poder recrear el funcionamiento de la llanta de un
robot, hicimos uso del sofaware Arduino donde realizamos la
progrmación de un pwm que controla el motor con encoder,
para este control hicmos uso de un transistor Tip BT 137 cuya
base esta conectada a una resistencia de 330 ohmios y a su vez
al pin 3 de arduino que genera el PWM y haci en transistor
funciona en modo conmutación, el emisor a tierra y el colector
a una entrada del motor.
Número de muescas que tiene el disco del encoder es de 20
El encoder nos da las rpm en un segundo con lo que
podemos calcular la velocidad.
Fig. 7. Computadora-Software-Arduino
Para obtner las graficas hicimos uso del sofware de matlab
donde podemos observar las rpm y velocidades en un lapso
de tiempo.
2. Arduino
Código en Arduino
volatile int cont=0;
volatile int rpm=0;
const int motor=3;
float velocidad = 0;
const int diametro =25;
void setup() {
pinMode(motor,OUTPUT);
Serial.begin(57600);
attachInterrupt(0,interrupcion,FALLING);
}
void loop() {
analogWrite(motor,50);
delay(1000);
Fig. 8. Arduino
rpm=(60*cont)/20;
velocidad = rpm * 3.1416 *diametro * 60 / 1000000; //
3. Encoder-Motor Cálculo de la velocidad en [Km/h]
Serial.println(rpm);
Serial.println(” ; ”);
Serial.println(velocidad);
Serial.println(” ; ”);
cont=0;
} void interrupcion(){
cont=cont+1;
}
Fig. 9. Encoder-Motor
Código en Matlab
clc
clear
delete(instrfind(’Port’,’COM4’));
s = serial(’COM4’,’BaudRate’,9600);
warning(’off’,’MATLAB:serial:fscanf:unsuccessfulRead’);
fopen(s);
fs=1000;
n=10;
y=zeros(n,1);
z=zeros(n,1);
t=linspace(0,(n-1)/fs,n);
L1=line(nan,nan,’color’,’b’,’LineWidth’,2);
L2 = line(nan,nan,’Color’,’r’,’LineWidth’,2);
ylim([0 0.5]);
xlim([0 (n-1)/fs ]);
xlabel(’Tiempo (s)’)
ylabel(’velocidad (km/h)’)
title(’Velocidad del motor’)
grid on
hold on
i = 1;
tic
while 1
if toc ¿ 1/fs
tic
a = fscanf(s,’
y(1:end-1)=y(2:end);
y(end)=a(1)/100;
z(1:end-1)=z(2:end);
z(end)=a(2);
Fig. 11. Velocidad Media
set(L1,’YData’,y,’XData’,t);
set(L2,’YData’,z,’XData’,t);
drawnow
i = i+1;
end
end
fclose(s);
delete(s);
clear s;
Implementación fı́sica del circuito

Fig. 10. Implementación fı́sica

Funcionamiento
Controlaremos el motor con el transistor en modo con-
mutación, el encoder ira tomando el número de interrupciones
por segundo en un flanco de bajada, lo que nos permitira
encontrar las rpm y por ende la velocidad.
En el puerto serial tenemos como primer valor las rpm y
como segundo valor la velocidad en Km Fig. 12. Velocida baja
lleavará a determinar la posición final de nuestro robot en un
lapso de tiempo determinado.
R EFERENCES
1 Gómez, E. (2017). Que es PWM y para que sirve.
(Datos en Lı́nea). https://www.rinconingenieril.es/que-es-
pwm-y-para-que-sirve/
2 Yúbal Fernandez (2020).Qué es Arduino, cómo
funciona y qué puedes hacer con uno. (Datos en
Lı́nea).https://www.xataka.com/basics/que-arduino-
como-funciona-que-puedes-hacer-uno
3 Andromina (2016). Encoder de
cuadratura y Arduino. (Datos en
Lı́nea).http://androminarobot.blogspot.com/2016/08/encoder-
de-cuadratura-y-arduino.html
4 Andromina (2016).Sensor de velocidad IR con el
comparador LM393 (Encoder FC-03). (Datos en Lı́nea).
http://androminarobot.blogspot.com/2016/07/en-este-
Fig. 13. Velocidad alta tutorial-mostramos-como-usar-el.html
5 MathWorks (2020). Matlab. (Datos en
Gráficas de la velocidad y los rpm con diferentes veloci- Lı́nea).https://la.mathworks.com/products/matlab.html
dades en el motor

Fig. 14. Velocidad alta

Fig. 15. Velocidad alta

V. C ONCLUSI ÓN
Los cambios de velocidad que experimenta el motor junto
con el encoder nos entregarán las rpm, con las cuales podremos
obtner la velocidad final del mismo, la mmisma que nos

También podría gustarte