Bill of Material
Arduino Uno x 1; L298N 马达驱动 x 1; 带霍尔编码器(增量,正交)的直流电机 x 1; 电位器 x 1;
演示视频
【Arduino 101】霍尔编码器与闭环控制(白话)
控制原理

接线

IDE 代码 I(仅使用A相位)
/*
Bnag Bnang Control with Encoded DC Motor(霍尔编码器与起停控制直流电机)
Last Edited: Feb.27th.2021 by Mun Kim
Contact: robotix.kim@gmail.com
*/
// Motor encoder output pulse per rotation (change as required)// 每圈的脉冲数量,可以从数据手册中查找
int PPR= 3;
// Encoder output to Arduino Interrupt pin// 编码器的A相位接Arduino的D2.
int encoder_A= 2;
// L298n Motor Driver // 马达驱动接线:D5控制PWM, D6与D7控制转动方向
int enB= 5; int in3= 6; int in4= 7;
// Analog pin for potentiometer // 电位器接线:用来控制目标转速(不是PWM)
int pot = 0;
// Pulse count from encoder // 用来储存脉冲数量
volatile long encoderCount = 0;
// One-second interval for measurements // 每一秒进行一次测量与控制,可改小,ie: interval=100;
int interval = 1000;
// Counters for milliseconds during interval // 用来计算时间
long previousMillis = 0; long currentMillis = 0;
// Variable for RPM measuerment //rpm: 实际测到的转速, setRPM:目标转速
int rpm = 0; int setRPM=0;
// Variable for PWM motor speed output // PWM初始值, 可以设为 0-255 之间的任意值
int pwm

本文介绍了使用Arduino Uno、L298N马达驱动和带霍尔编码器的直流电机进行闭环控制的实践,包括材料清单、演示视频、控制原理和IDE代码。代码部分展示了如何通过A相位和A&B相位检测电机旋转方向,并利用中断服务程序实现正交编码器的精确控制。
最低0.47元/天 解锁文章
1261

被折叠的 条评论
为什么被折叠?



