Giter Club home page Giter Club logo

dcmotorcontroller's Introduction

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:

Motor 1
Arduino Pin Descripción
10 pwmX, chip enable 1 del L293D
6 in1X, salida hacia el pin 2, IN1, del L293D
5 in2X, salida hacia el pin 7, IN2, del L293D
A2 inAX, entrada A desde el encoder
A3 inBX, entrada B desde el encoder
2 stepX, entrada STEP proveniente del otro Arduino cargado con GRBL
12 dirX, entrada DIR proveniente del otro Arduino cargado con GRBL
Motor 2
Arduino Pin Descripción
11 pwmY, chip enable 2 del L293D
8 in1Y, salida hacia el pin 10, IN3, del L293D
9 in2Y, salida hacia el pin 15, IN4, del L293D
A0 inAY, entrada A desde el encoder
A1 inBY, entrada B desde el encoder
3 stepY, entrada STEP
13 dirY, entrada DIR
Global
Arduino Pin Descripción
A5 entrada ENABLE
Rst Reset del driver

Esquematico



Circuito

Video

YouTube

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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.