Sunteți pe pagina 1din 11

INTRODUCCIÓN A LA MECATRÓNICA

“Control de motor de paso y servo motor”

Fecha:

8/15/2019

Paralelo:
3

Integrantes:

Gabriel Benitez

Gustavo Sabando

Anthony Madezco

Año

2019
Marco Teórico
En el tema de las máquinas eléctricas, encontramos los motores, que se encargan de transformar
la energía eléctrica en energía mecánica. Están compuestos en su mayoría por un estator, que se
encuentra fijo y es donde está el embobinado que genera el campo magnético, y por un rotor
que puede rotar libremente al reaccionar con el campo del estator.
A diferencia de los motores de combustión, estos toman energía eléctrica y la transforman en
movimiento sustentando su funcionamiento en principios físicos como:
Ley de Faraday
Que habla acerca de como la variación de campo magnético produce un campo eléctrico,
representando ahí una fuerza electromotriz. Este principio es muy utilizado en los motores de
CA.

Ley de Lorentz
Es la fuerza que ejerce un campo magnético o electromagnético sobre una partícula que tiene
velocidad, en los motores el campo electromagnético en el estator realiza un momento sobre el
campo electromagnético en el rotor haciéndolo girar.

Existen diferentes tipos de motores, entre estos tenemos a los de corriente directa, corriente
alterna y los especiales.
Motores especiales.
Motor de paso
- Ideales para trabajos de precisión
- Se mueven un paso por cada pulso que se aplique
- Por lo general se mueven un delta α, que puede variar entre 90 a 180

Funcionamiento
Para entender su funcionamiento, hay que conocer un poco de como están constituidos.
Normalmente los motores de paso poseen un rotor que es un imán permanente y varias bobinas
en el estator que permiten un movimiento preciso del eje. Para que operen se debe aplicar una
conmutación externa manejada por un controlador.
Los de tipo unipolar, suelen tener de 5 a 6 cables de salida, con la siguiente conexión
Este tipo de motor en el más práctico a controlar y dependiendo de la señal conmutada enviada
por el controlador, la placa de control interna las interpretará y generará el movimiento del
motor.
Secuencias de manejo
Existen tres tipos posibles de secuencias para el control, dos de ellas poseen 4 pasos y la restante
tiene 8. Ejecutarlas en algún orden y en otro contrario generará giros hacia un lado y otro.
Secuencia Normal: Con esta frecuencia el motor avanza paso por paso, ya que activa dos bobinas
para cada paso, aumentando la precisión del control y el torque de salida.

Secuencia Wave drive: Esta secuencia es muy similar a la normal de 4 pasos, con la diferencia de
que aquí se activa una bobina a la vez, lo que disminuye el torque de salida y la retención es
menor.

Secuencia medio paso: Es como una combinación de las dos anteriores, ya que energiza las
bobinas de manera que son dos a la vez, pero luego de eso energiza una. Consta de 8 pasos en
lugar de 4
Para el control del motor, se debe tener en cuenta que posee una caja reductora de 1 sobre 64, además
que un giro del rotor interno se da cada 8 ciclos y que cada ciclo está compuesto de 4 pasos en el caso de
las secuencias de paso completo y de 8 pasos para la secuencia de medio paso. El eje externo, que es el
visible por nosotros, gira una vuelta cada 64 vueltas del rotor del motor. Por ejemplo, utilizando la
secuencia normal que posee 4 pasos, para hacer mover el eje exterior se necesitarán 4*8*64 pasos.

Servomotores

Son motores Dc que poseen una placa de control y un encoder que les permite controlar su posición y
velocidad.

Requieren de un controlador externo y son utilizados para tareas de alta precisión y gran torque.
Funcionamiento

El funcionamiento de estos motores es algo complejo, son motores de corriente continua pero poseen
una placa de control que reacciona ante señales pwm para setear la posición en la que se requiere estar,
y además tienen una caja reductora que incremente el torque de salida.

La placa de control interpreta los valores promedio de la señal de pwm y ubica el rotor en la posición
consecuente,

Ejemplo

un código básico para posicionar el servo en los ángulos 0º, 90º y 180º.
Esquema del circuito
Código de la práctica

#include <Servo.h>
Servo servoMotor;

int IN1 = 8; // pin digital 8 de Arduino a IN1 de modulo controlador


int IN2 = 7; // pin digital 9 de Arduino a IN2 de modulo controlador
int IN3 = 10; // pin digital 10 de Arduino a IN3 de modulo controlador
int IN4 = 11; // pin digital 11 de Arduino a IN4 de modulo controlador
int demora = 20; // demora entre pasos
int entrada = HIGH;

// medio paso
int paso [8][4] = // matriz (array bidimensional) con la secuencia de pasos
{
{1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};

void setup() {
pinMode(IN1, OUTPUT); // todos los pines como salida
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
servoMotor.attach(9); // sevomotor conectado al pin 9
servoMotor.write(0); // servomotor seteado en el angulo 0
Serial.begin(9600);
}

void loop() {
if (Serial.available() > 0) { // espera que el usuario digite una tecla
int leer = Serial.parseInt();
if (leer > 0) { // solo se ejecuta cuando la tecla es presionada
Serial.println("Digite 2 mayor velocidad, Digite 1 menor velocidad, Digite 3 sentido anti-manecilla,
Digite 4 senido manecilla: ");
delay(500);
if (leer == 2) {
demora = 2; // velocidad entre pasos mas rapido

}
else if (leer == 1) {
demora = 10; // velocidad entre pasos mas lento

}
else if (leer == 3) {
entrada = HIGH; // entra al sentido de la anti-manecilla
}
else if (leer == 4) {
entrada = LOW; // entra al sentido de la manecila
}
if (entrada == LOW) {
int pass = 170;
for (int i = 0; i < 512; i++) // 512*8 = 4096 pasos
{
if (i % 3 == 0) { // para todo valor divisible a 3 se ejecuta un angulo, se hace esto para que el
servomotor rote aproximadamente a los pasos del motor

servoMotor.write(pass);
pass--;
}
for (int i = 0; i < 8; i++) // bucle recorre la matriz de a una fila por vez
{ // para obtener los valores logicos a aplicar
digitalWrite(IN1, paso[i][0]); // a IN1, IN2, IN3 e IN4
digitalWrite(IN2, paso[i][1]);
digitalWrite(IN3, paso[i][2]);
digitalWrite(IN4, paso[i][3]);
delay(demora);
}
}

else if (entrada == HIGH) {


int pass = 0;
for (int j = 0; j < 512; j++) // 512*8 = 4096 pasos
{
if (j % 3 == 0) {
servoMotor.write(pass); // para todo valor divisible a 3 se ejecuta un angulo, se hace esto para que
el servomotor rote aproximadamente a los pasos del motor
pass++;
}
for (int j = 7; j >= 0; j--)
{
digitalWrite(IN4, paso[j][3]); // bucle recorre la matriz de a una fila por vez
digitalWrite(IN3, paso[j][2]); // en sentido inverso
digitalWrite(IN2, paso[j][1]);
digitalWrite(IN1, paso[j][0]);
delay(demora);
}
}

}
}

S-ar putea să vă placă și