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 之间的任