news 2026/6/11 4:50:09

从玩具车到传送带:5个Arduino+MG995/996R的实用小项目源码分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从玩具车到传送带:5个Arduino+MG995/996R的实用小项目源码分享

从玩具车到传送带:5个Arduino+MG995/996R的实用小项目源码分享

当你手里拿着一台MG995或MG996R连续旋转舵机时,是否曾想过这个看似简单的元件能玩出多少花样?不同于普通舵机的角度定位功能,连续旋转舵机更像是一个可调速的小马达,这恰恰为创客们打开了无限可能。本文将带你跳出传统教程框架,直接进入五个真实可落地的项目实践,每个项目都配有核心代码和关键实现思路。

1. 简易循线小车驱动系统

连续旋转舵机在机器人领域最常见的应用就是作为移动平台的动力源。相比直流电机,它自带减速箱和驱动电路,省去了额外的电机驱动模块。

材料清单:

  • Arduino Uno ×1
  • MG996R舵机 ×2
  • 红外循线传感器 ×3
  • 小车底盘套件 ×1
  • 18650电池 ×2

接线示意图:

// 引脚定义 #define LEFT_MOTOR 9 #define RIGHT_MOTOR 10 #define SENSOR_L A0 #define SENSOR_M A1 #define SENSOR_R A2

核心控制逻辑采用经典的PID算法:

#include <Servo.h> Servo leftWheel, rightWheel; void setup() { leftWheel.attach(LEFT_MOTOR); rightWheel.attach(RIGHT_MOTOR); // 初始化传感器引脚为输入 pinMode(SENSOR_L, INPUT); pinMode(SENSOR_M, INPUT); pinMode(SENSOR_R, INPUT); } void loop() { int sensorValues[3] = { digitalRead(SENSOR_L), digitalRead(SENSOR_M), digitalRead(SENSOR_R) }; // PID计算误差值 float error = sensorValues[0]*0.5 + sensorValues[1]*0 - sensorValues[2]*0.5; // 基础速度+纠偏输出 int baseSpeed = 1600; // 基础前进速度 leftWheel.writeMicroseconds(baseSpeed + error*50); rightWheel.writeMicroseconds(baseSpeed - error*50); delay(10); }

调试技巧:实际运行时可能需要根据地面反光情况调整红外传感器的阈值,可通过串口监视器实时观察传感器读数。

2. 迷你物流传送带模型

利用舵机的持续旋转特性,配合3D打印的传送带轮和硅胶皮带,可以搭建一个微型物流分拣系统原型。

关键参数计算:

项目参数值说明
传送带长度30cm硅胶带周长
运行速度5cm/s对应舵机1600μs脉冲
最大载重200g需考虑舵机扭矩

电机控制代码特别添加了软启动功能:

void gradualStart(Servo &motor, int targetSpeed) { int current = 1500; // 停止状态 while(current != targetSpeed) { current += (targetSpeed > current) ? 10 : -10; motor.writeMicroseconds(current); delay(50); } } void setup() { Servo conveyorMotor; conveyorMotor.attach(6); // 启动传送带 gradualStart(conveyorMotor, 1600); // 运行30秒后停止 delay(30000); gradualStart(conveyorMotor, 1500); }

传送带结构设计要点:

  • 主动轮直径需与从动轮保持一致
  • 皮带张力要适中,过紧会增加负载
  • 可在框架加装轴承减少摩擦

3. 智能宠物喂食器旋转机构

将舵机与螺旋送料机构结合,可以制作定时定量的自动喂食装置。MG996R的金属齿轮能承受饲料的轻微反作用力。

核心功能实现:

#include <RTClib.h> RTC_DS3231 rtc; void dispenseFood(int seconds) { Servo feeder; feeder.attach(5); // 正向旋转出料 feeder.writeMicroseconds(1300); delay(seconds * 1000); // 短暂反转防止卡料 feeder.writeMicroseconds(1700); delay(300); feeder.writeMicroseconds(1500); } void setup() { rtc.begin(); // 设置每天08:00和18:00自动喂食 DateTime now = rtc.now(); DateTime nextMorning = DateTime(now.year(), now.month(), now.day(), 8, 0, 0); DateTime nextEvening = DateTime(now.year(), now.month(), now.day(), 18, 0, 0); } void loop() { DateTime now = rtc.now(); if(now.hour() == 8 && now.minute() == 0) { dispenseFood(3); // 出料3秒 delay(61000); // 防止重复触发 } if(now.hour() == 18 && now.minute() == 0) { dispenseFood(3); delay(61000); } }

机械结构制作建议:

  1. 使用PVC管作为储料仓
  2. 3D打印螺旋推料杆
  3. 出料口加装挡板防止潮湿
  4. 整体结构要便于拆卸清洗

4. 旋转展示平台控制系统

博物馆或商场常见的展品旋转台,用Arduino+MG995就能低成本实现。通过电位器可手动调节转速和方向。

电路连接方式:

  • 舵机信号线 → Arduino D9
  • 10K电位器 → Arduino A3

交互控制代码:

void setup() { Serial.begin(9600); servo.attach(9); } void loop() { int potValue = analogRead(A3); int speed = map(potValue, 0, 1023, 1300, 1700); // 死区过滤 if(abs(speed - 1500) < 50) speed = 1500; servo.writeMicroseconds(speed); // 调试输出 Serial.print("Pot: "); Serial.print(potValue); Serial.print(" → Speed: "); Serial.println(speed); delay(100); }

转速校准方法:

  1. 将电位器旋至中间位置
  2. 微调代码中的map()参数
  3. 用秒表测量实际转速
  4. 重复调整直到符合要求

5. 雷达扫描模拟器

结合超声波传感器和连续旋转舵机,可以制作有趣的雷达扫描演示装置。舵机带动传感器匀速旋转,实时显示障碍物分布。

系统架构:

[超声波传感器] ←I2C→ [Arduino] →PWM→ [MG995舵机] ↓ [OLED显示屏]

核心扫描算法:

#include <Wire.h> #include <Servo.h> #include <Adafruit_SSD1306.h> Servo scanner; Adafruit_SSD1306 display(128, 64, &Wire); void setup() { scanner.attach(9); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); } void loop() { for(int angle = 0; angle <= 180; angle += 5) { // 控制舵机转到指定角度 int pulse = map(angle, 0, 180, 1000, 2000); scanner.writeMicroseconds(pulse); // 获取距离数据 float distance = getSonarDistance(); // 极坐标转直角坐标 int x = 64 + distance * cos(radians(angle)); int y = 32 - distance * sin(radians(angle)); // OLED显示 display.drawPixel(x, y, WHITE); display.display(); delay(50); } } float getSonarDistance() { // 模拟超声波测距代码 return random(10, 100); }

性能优化建议:实际应用时可考虑添加滑动平均滤波算法处理距离数据,减少误报。扫描速度不宜过快,建议每度间隔不小于30ms。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 4:49:52

OpenROAD实战:3种高效部署RTL-to-GDSII芯片设计工具的方法

OpenROAD实战&#xff1a;3种高效部署RTL-to-GDSII芯片设计工具的方法 【免费下载链接】OpenROAD OpenROADs unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/ 项目地址: https://gitcode.com/gh_mirrors…

作者头像 李华
网站建设 2026/6/11 4:48:51

语义ID技术在广告推荐系统中的应用与优化

1. 语义ID技术背景与行业痛点 在广告推荐系统中&#xff0c;商品和用户的精准匹配一直是核心挑战。传统方法通常依赖连续的向量表示&#xff08;embeddings&#xff09;进行相似度计算&#xff0c;但这种表示方式存在两个显著缺陷&#xff1a;首先&#xff0c;高维向量的存储和…

作者头像 李华
网站建设 2026/6/11 4:48:51

2026东莞环保公司最受欢迎的优质厂家推荐|权威推荐榜

在粤港澳大湾区制造业绿色转型加速的背景下&#xff0c;东莞及周边地区聚集了一批技术扎实、服务成熟的环保企业&#xff0c;覆盖废气治理、废水处理、环保设备研发、智慧环保运维等全链条需求。本文聚焦广东玮霖环保科技有限公司、东莞市鑫霖环保设备有限公司、惠州市玮霖环保…

作者头像 李华