Skip to the content
PCBKitNew board
2 layers51.7 × 79.4 mmControl motor dc, the printed circuit board in 3D

Closed Loop Position Control for DC Servo Motors. STEP / DIR compatible Driver

Size
51.7 × 79.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
32
Pads
116
Tracks, vias
297, 4
Pours
1
Routed
Yes
KiCad
KiCad 4
Created
14 Jun 2017
Updated
13 Nov 2017

Overview

Control motor dc is an open-source printed circuit board by kr4fty, from the kr4fty/DCMotorController repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 51.7 × 79.4 mm with 26 parts on 32 nets, routed with 297 tracks and 4 vias.

It is built around the ATMEGA328P-PU, L293D and LM7805, with the 100UF/16V among its other parts. Its parts include 10 capacitors, 6 connectors, 3 resistors, 3 ICs and 2 diodes. It belongs with the robots and motor control boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

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

Parts

26
QtyValueFootprintReferences
60.1uFCapacitors_ThroughHole:C_Disc_D3.8mm_W2.6mm_P2.50mmC5, C6, C7, C8, C9, C10
222pFCapacitors_ThroughHole:C_Disc_D3.8mm_W2.6mm_P2.50mmC3, C4
2LEDLEDs:LED_D3.0mmD1, D2
1100uF/16VCapacitors_ThroughHole:CP_Radial_D5.0mm_P2.00mmC2
1100uF/25VCapacitors_ThroughHole:CP_Radial_D5.0mm_P2.50mmC1
110KResistors_ThroughHole:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2
116MhzCrystals:Crystal_HC52-6mm_VerticalY1
11KResistors_ThroughHole:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR1
1470Resistors_ThroughHole:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR3
1ATMEGA328P-PUHousings_DIP:DIP-28_W7.62mmU2
1BARREL_JACKConnect:JACK_ALIMJ1
1Control de entradaSocket_Strips:Socket_Strip_Straight_2x04_Pitch2.54mmJ2
1ICSPPin_Headers:Pin_Header_Straight_2x03_Pitch2.54mmJ5
1L293DHousings_DIP:DIP-16_W7.62mmU3
1LM7805Favio:TO-220_Vertical-favU1
1Motor1Socket_Strips:Socket_Strip_Straight_2x03_Pitch2.54mmJ3
1Motor2Socket_Strips:Socket_Strip_Straight_2x03_Pitch2.54mmJ4
1ResetButtons_Switches_ThroughHole:SW_PUSH_6mmSW1
1SerialPin_Headers:Pin_Header_Straight_1x04_Pitch2.54mmJ6

Questions

How big is the Control motor dc PCB?

It measures 51.7 × 79.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Control motor dc use?

26 parts, built around the ATMEGA328P-PU, L293D, LM7805 and 100UF/16V. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Control motor dc KiCad files?

From the kr4fty/DCMotorController repository on GitHub, at the commit this page was made from: the board is hardware/control_motor_dc.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Control motor dc design in my own project?

Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers100 × 90 mmEntrenador atmega328p, the printed circuit board in 3D

    Entrenador atmega328p

    davixcky/entrenador-atmega328p

    Entrenador de microcontroladores con ATMega328P (DIP) - Sistemas Embebidos 1, actividad 10.1.12

    75 parts
  • 2 layers150 × 110 mmKIT ATmega16, the printed circuit board in 3D

    KIT ATmega16

    ndhuy1127/DA2-KIT-ATmega16

    Đồ án 2 HUST 20261 - DA26111: Thiết kế và phát triển KIT ATmega16

    57 parts
  • 2 layers68 × 48 mmMotor 12V controller, the printed circuit board in 3D

    Motor 12V controller

    not-forest/rp2040-12V-motor-regulator

    Small motor regulator circuit with H-Bridge driver source code for RP2040 Zero microcontroller.

    37 partsMIT
  • 2 layers95.9 × 129.5 mmSolderin Station, the printed circuit board in 3D

    Solderin Station

    kr4fty/DiySolderingStation

    Diy Soldering Stations with Atmega (Arduino UNO). Firmware and hardware design included

    73 parts3GPL-2.0
  • 2 layers88.9 × 106.7 mmDataLogger, the printed circuit board in 3D

    DataLogger

    ataweg/DataLogger

    DataLogger using "Arduino UNO" board and Greiman SdFat library

    62 partsMIT
  • 2 layersPinguicaro, the printed circuit board in 3D

    Pinguicaro

    valentinbasel/icaro-pcb

    icaro-pcb

    82 parts5GPL-3.0
  • 2 layers99.2 × 210.1 mmL293d append, the printed circuit board in 3D

    L293d append

    ExploreEmbedded/Motor-Driver-L293D

    210 parts
  • 2 layers46.7 × 63.1 mmL293d motor controller, the printed circuit board in 3D

    L293d motor controller

    Krzysiek-Mistrz/electronics_robotics_designs

    elektronika

    20 parts