
Entrenador atmega328p
davixcky/entrenador-atmega328p
Entrenador de microcontroladores con ATMega328P (DIP) - Sistemas Embebidos 1, actividad 10.1.12

Closed Loop Position Control for DC Servo Motors. STEP / DIR compatible Driver
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.
Control de lazo cerrado para motores DC utilizando un ATMEGA328p (corazón del Arduino UNO) y un puente H tipo L293.
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.
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.
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
El proyecto depende de cuatro librerías:
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 |
Circuito
GPLv2
Tapia Favio
Por favor agradecería que me envies cualquier duda y/o comentario para mejorar el proyecto, gracias.
Mail: technicc (at) gmail.com
| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 0.1uF | Capacitors_ThroughHole:C_Disc_D3.8mm_W2.6mm_P2.50mm | C5, C6, C7, C8, C9, C10 |
| 2 | 22pF | Capacitors_ThroughHole:C_Disc_D3.8mm_W2.6mm_P2.50mm | C3, C4 |
| 2 | LED | LEDs:LED_D3.0mm | D1, D2 |
| 1 | 100uF/16V | Capacitors_ThroughHole:CP_Radial_D5.0mm_P2.00mm | C2 |
| 1 | 100uF/25V | Capacitors_ThroughHole:CP_Radial_D5.0mm_P2.50mm | C1 |
| 1 | 10K | Resistors_ThroughHole:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2 |
| 1 | 16Mhz | Crystals:Crystal_HC52-6mm_Vertical | Y1 |
| 1 | 1K | Resistors_ThroughHole:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_Vertical | R1 |
| 1 | 470 | Resistors_ThroughHole:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R3 |
| 1 | ATMEGA328P-PU | Housings_DIP:DIP-28_W7.62mm | U2 |
| 1 | BARREL_JACK | Connect:JACK_ALIM | J1 |
| 1 | Control de entrada | Socket_Strips:Socket_Strip_Straight_2x04_Pitch2.54mm | J2 |
| 1 | ICSP | Pin_Headers:Pin_Header_Straight_2x03_Pitch2.54mm | J5 |
| 1 | L293D | Housings_DIP:DIP-16_W7.62mm | U3 |
| 1 | LM7805 | Favio:TO-220_Vertical-fav | U1 |
| 1 | Motor1 | Socket_Strips:Socket_Strip_Straight_2x03_Pitch2.54mm | J3 |
| 1 | Motor2 | Socket_Strips:Socket_Strip_Straight_2x03_Pitch2.54mm | J4 |
| 1 | Reset | Buttons_Switches_ThroughHole:SW_PUSH_6mm | SW1 |
| 1 | Serial | Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm | J6 |
It measures 51.7 × 79.4 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).

davixcky/entrenador-atmega328p
Entrenador de microcontroladores con ATMega328P (DIP) - Sistemas Embebidos 1, actividad 10.1.12

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

not-forest/rp2040-12V-motor-regulator
Small motor regulator circuit with H-Bridge driver source code for RP2040 Zero microcontroller.

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

ataweg/DataLogger
DataLogger using "Arduino UNO" board and Greiman SdFat library


