亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

旋转编码器原理与 Arduino 实战:从基础到步进电机控制

增量式旋转编码器工作原理

编码器内部圆盘有等间距触点,公共引脚 C 与 A、B 两路输出接触,产生**相位相差 90° 的方波**(正交编码)。

只需检测 A 的跳变沿,读取 B 电平即可判断方向并计数。

Arduino 基础读取代码

#define outputA 6
#define outputB 7
int counter = 0;
int aLastState;

void setup() {
  pinMode(outputA, INPUT);
  pinMode(outputB, INPUT);
  Serial.begin(9600);
  aLastState = digitalRead(outputA);
}

void loop() {
  int aState = digitalRead(outputA);
  if (aState != aLastState) { // 检测到脉冲
    if (digitalRead(outputB) != aState) counter++; // 顺时针
    else counter--; // 逆时针
    Serial.print("Position: "); Serial.println(counter);
  }
  aLastState = aState;
}

模块自带按键(按下接地),可扩展复位/确认功能。典型分辨率 30 脉冲/圈。

进阶应用:编码器控制步进电机角度

结合 A4988 驱动,编码器每格对应 1.8°(全步)或细分后更小角度。代码中累计 angle 变量,正转调用 rotateCW(),反转调用 rotateCCW(),LCD 实时显示当前角度。

void rotateCW() {
  digitalWrite(dirPin, LOW);
  digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
  digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
}
void rotateCCW() {
  digitalWrite(dirPin, HIGH);
  digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
  digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
}

可用于手动微调平台、CNC 手轮、机械臂示教器等场景。

制造工艺

  1. Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
  2. 自制高精度测距轮:Arduino Nano + 旋转编码器 + 1602 LCD
  3. u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
  4. Blynk + Arduino 读取 DHT11 温湿度数据教程
  5. 热敏电阻测温轻松上手:Arduino 分步实战教程
  6. Arduino 合成乐音:从零实现 88 键钢琴全音域
  7. Arduino 连接 NMEA-0183 设备全攻略:从硬件接线到协议解析
  8. Arduino Modbus 从机开发全攻略:基于 RS485 扩展板的分步实现指南
  9. 语音控制 LED:Arduino Micro + BitVoicer Server 语音识别实战
  10. 自制 AI 助手机器人:Arduino 与 Python 协同实现语音交互与肢体动作
  11. 树莓派 3 + Arduino 驱动 NeoPixel 灯带:Web 网页端炫彩动画控制器
  12. 精通 C# Queue:Enqueue、Dequeue 与先进先出操作全解析