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

基于陀螺仪传感器与 Arduino Nano 的精准钻床钻深显示器

核心硬件

组件 数量/规格
Arduino Nano R3 1
GY-521 (MPU-6050) 六轴模块 1
8 位 7 段数码管模块(MAX7219 SPI) 1
轻触按键 1
拨码开关(电源) 1
6×AA 电池盒(或 5V 移动电源) 1
3D 打印外壳(含钻床手轮适配座) 1 套
钕铁硼强磁(φ10×3 mm) 1

设计缘起

台钻手轮旋转约 270° 对应 0~50 mm 钻深,原厂刻度尺读数费眼且需记忆目标深度。利用 MPU-6050 加速度计测量手轮转角,经 Arduino 换算实时显示当前钻深与目标深度,到达目标自动提示“StOP”,免去老花眼困扰,且断电数据不丢失(下次开机需重新归零)。

安装结构设计

  1. 传感器座:Fusion 360 设计,内孔套钻床手轮轴端 SW17 六角螺母,外壳卡扣固定 GY-521,确保 Z 轴垂直于手轮平面。STL 文件见 CAD 栏。
  2. 主机盒:磁吸固定于钻床铸铁机身侧面,随时拆卸不妨碍操作。
  3. 接线:
模块 Nano 引脚
MPU-6050 (I2C) SDA→A4, SCL→A5, VCC→5V, GND→GND
MAX7219 (SPI) DIN→D12, CLK→D11, CS→D10, VCC→3.3V, GND→GND
按键 D9 (内部上拉)

核心算法

  1. 唤醒 MPU-6050:写寄存器 0x6B=0,必须 delay(1000) 等待稳定,否则外部供电时传感器无数据(作者踩坑最久处)。
  2. 零偏校准:开机采样 100 次 X/Y/Z 加速度,计算静态角度误差均值 AccAngleErrorX。
  3. 实时角度融合:
    AccAngleX = atan2(Ay, sqrt(Ax²+Az²)) * RAD2DEG - AccAngleErrorX
    TotalAngleX = 0.5 * TotalAngleX + 0.5 * AccAngleX(一阶互补滤波)
  4. 映射至 0~360°:利用 Ax/Ay/Az 符号判断象限,修正 TotalAngleX 到 DrillingMachineAngle(0~360°),近 360° 时归零显示。
  5. 角度→钻深换算:实测手轮最大转角 316° 对应 50 mm,currentPos = 50.0/316.0 * DrillingMachineAngle。
  6. 目标设定:按键按下瞬间锁存 stopPos = currentPos,右侧 4 位显示“8888”确认 1 秒。
  7. 到达判定:currentPos >= stopPos 时右侧显示 “5t0P”(小写 t 用 setRow(0,2,B00001111) 拼凑),否则显示剩余深度 stopPos - currentPos(1 位小数)。

完整 Arduino 代码

/* drilling-depth.ino  关键片段 */
#include <Wire.h> #include <math.h> #include <LedControl.h>
#define MPU 0x68
LedControl lc(12,11,10,1); // DIN,CLK,CS,devices
float AccAngleErrorX, TotalAngleX, currentPos, stopPos;
const float RAD2DEG = 180/PI;

void setup() {
  Wire.begin();
  Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true);
  delay(1000); // 关键!
  Wire.beginTransmission(MPU); Wire.write(0x1C); Wire.write(0x10); Wire.endTransmission(true); // ±8g
  // 校准零偏
  for(int i=0;i<100;i++){ readAccel(); AccAngleErrorX += atan2(Ay,sqrt(Ax*Ax+Az*Az))*RAD2DEG; }
  AccAngleErrorX /= 100;
  pinMode(9,INPUT_PULLUP);
  lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0);
}

void loop() {
  readAccel();
  float AccAngleX = atan2(Ay,sqrt(Ax*Ax+Az*Az))*RAD2DEG - AccAngleErrorX;
  TotalAngleX = 0.5*TotalAngleX + 0.5*AccAngleX;
  // 象限修正
  float delta = 0;
  if (Az < 0) delta = 180 - TotalAngleX*2;
  else if (Ay < 0) delta = 360;
  float angle = TotalAngleX + delta;
  if (angle > 350) angle = 0;
  currentPos = 50.0/316.0 * angle;

  if (digitalRead(9)==LOW) { stopPos=currentPos; show8888(); delay(1000); }
  if (stopPos>0) {
    if (currentPos >= stopPos) showSTOP();
    else showRemain(stopPos - currentPos);
  } else showBlankRight();
  showCurrent(currentPos);
  delay(200);
}

完整代码含 readAccel()、showCurrent()、showRemain()、showSTOP() 等函数,见 Code 栏下载。

实测效果

基于陀螺仪传感器与 Arduino Nano 的精准钻床钻深显示器

视频演示:钻深显示器实测。传感器响应极快,显示值与机械刻度尺误差 < 0.2 mm,亮度在车间强光下清晰可读。

经验总结

原理图与 3D 模型

基于陀螺仪传感器与 Arduino Nano 的精准钻床钻深显示器

CAD 文件:drilling-depth-3d-model_Yn2q0MSNa4.zip(含传感器座、主机盒、电池盖 STL)。

制造工艺

  1. 树莓派传感器数据融合实战:GPS 与 MPU‑9150 IMU 的 I²C 与 UART 接入
  2. 树莓派接 KY‑033 循迹/门状态传感器:简易 Python 实现
  3. 树莓派构建稳健传感器 API:基于 GY‑91 多功能模块的 Flask 实现
  4. 树莓派自动化气雾栽培系统:湿度传感器智能控制
  5. 掌握树莓派 GPIO:在 B+/Model 2 上接入 PIR 运动传感器
  6. 将 Acconeer A111 脉冲雷达与树莓派集成:实用指南
  7. HC‑SR501 PIR 运动传感器与树莓派接线、校准与 Python 编程全指南
  8. Python/MicroPython 传感器记录仪:无缝写入 Google Sheets
  9. Portenta H7 对接 MAX6675 热电偶温度传感器教程
  10. 基于模拟传感器的高精度压力与气流测量装置
  11. K30 CO₂ 传感器:室内空气质量实时监测
  12. 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino