dcmotorcontroller
Publickr4fty/dcmotorcontroller
Loading…
Imported from GitHub: kr4fty/DCMotorController · commit 7615685 · license GPL-2.0
Description
Closed Loop Position Control for DC Servo Motors. STEP / DIR compatible Driver
README
DCMotorController
Control de lazo cerrado para motores DC utilizando un ATMEGA328p (corazón del Arduino UNO) y un puente H tipo L293.
Descripción
Este es una pequeña implementación de la librería ArduinoPID, para el control de motores de corriente continua, DC, que cuenten con un encoder acoplado a su eje.
Cuenta con soporte para uno o dos motores, dependiendo de como este configurado dentro de motor.h.
La idea principal del proyecto es la de utilizar MOTORES DC/Servos en proyectos de construcción de CNC en lugar de los tradicionales Motores Paso a Paso (PaP).
El sistema es compatible a nivel de pins de control, con los driver para motores PaP, STEP y DIR, como por ejemplo el Pololu A4988.
Funcionamiento
Un Arduino cargado con GRBL, por ejemplo, envía un pulso a través del pin STEP. Cada pulso que recibe el driver le dice al motor que tiene que avanzar un micropaso.
Luego por medio del pin DIR obtenemos la dirección de avance, si queremos ir en el sentido de las agujas del reloj, o al contrario.
De esta forma, cada vez que el driver recibe un pulso en el pin STEP, el circuito comprueba el estado del pin DIR, y alimenta las bobinas del motor en el orden adecuado.
Parámetros PID
El proceso de sintonizado del PID se hizo de forma experimental, prueba/error, tratando de tener tanto el overshoot como el tiempo de establecimiento los mas chicos posibles. Se llego a la conclusión que para el par de motores utilizados, los parámetros que mejor se ajustaban fueron los siguientes:
-
Setpoint > 50: Kp = 10 // Agresive Kp Ki = 1 // Agresive Ki Kd = 0.01 // Agresive Kd
-
Setpoint =< 50: Kp = 5 // Conservative Kp Ki = 0.1 // Conservative Ki Kd = 0.001 // Conservative Kd
Dependiendo del tipo de Motor/Servo utilizados, estos parámetros deberán ser cambiados. Esto ultimo se realizara modificando los prarametros AGGKp,AGGKi, AGGKd, CONSKp, CONSKi y CONSKd, dentro de motor.h
Características:
- El conjunto Driver-Servo/Motor remplaza al conjunto Driver-Motor/PaP
- El corazón del sistema es un chip ATMEGA328p
- Se puede controlar uno o dos motores simultáneamente
- El Driver tiene cuatro señales de control: DIR, STEP, ENABLE y RESET
- Cada motor puede ser controlado de forma independiente por medio de DIR y STEP
- El sistema de control esta basado en un sistema PID
- El PWM trabaja a una frecuencia de 31.25KHz, imperceptible al oído humano
- Cuenta con un salida por puerto serie para depuración
- Tanto las señales de entrada de los STEPs como las de los encoders, utilizan interrupciones del tipo PIN CHANGE (PCI)
- El diseño del PCB fue realizado en KiCAD
- La etapa de potencia de los motores fue realizada con un puente H del tipo L293D
Firmware
Dependencias
El proyecto depende de cuatro librerías:
- ArduinoPID: Librería principal con la que se realiza el control de lazo cerrado
- EnableInterrupt: Encargada de vincular las interrupciones del tipo Pin-change con la respectiva ISR.
- EncoderPCI: Librería encargada de manejar los Encoders
- DCMotorServoPCI: Es la librería en si, que realiza la gestión y el control del motor dc
Hardware
Pins utilizados:
Esquematico
Video
Motores de corriente continua
Ventajas de los Motores DC frente a los PaP
- Poseen gran velocidad de giro
- Alta aceleración/Par inicial
- Son silenciosos
- Movimiento suave y sin saltos
- Control medianamente sencilla
- Electrónica mas sencilla
- Utiliza realimentación para el control del sistema
- Debido a este ultimo, tiene alta precisión en posición (depende fuertemente del encoder acoplado)
Desventajas de los Motores DC frente a los PaP
- La potencia de funcionamiento pico sólo se desarrolla a altas velocidades
- Debido a sus altas velocidades estos pueden calentarse mas rápidamente (podría necesitar un sistemas de ventilación)
- Inercia mas elevada (depende de la velocidad y la carga acoplada al eje)
Proyectos Similares
- ServoStrap por danithebest91
- SuryaProCell-CNC por suryaprocell
- DC-Servo-Controller por makerbot
- dcservo por misan
Licencia
GPLv2
Autor
Tapia Favio
Feedback
Por favor agradecería que me envies cualquier duda y/o comentario para mejorar el proyecto, gracias.
Mail: technicc (at) gmail.com
No comments yet. Be the first to ask about this board.