Arduino控制MG996R高扭矩伺服电机教程
创作时间:
作者:
@小白创作中心
Arduino控制MG996R高扭矩伺服电机教程
引用
CSDN
1.
https://blog.csdn.net/acktomas/article/details/139993620
本教程将介绍如何使用Arduino控制MG996R高扭矩伺服电机。通过本教程,你将学习到所需的硬件、接线方法、Arduino代码以及如何控制电机速度等内容。
所需硬件
- 1 × Arduino UNO 或 Genuino UNO
- 1 × USB 2.0 电缆 A/B 型
- 1 × MG996R 伺服电机
- 1 × 跳线
- 1 × (可选) 9V 电源适配器
- 1 × (推荐) 螺钉接线端子屏蔽层
- 1 × (可选) Arduino Uno 透明亚克力外壳
关于伺服电机
MG996R伺服电机是一款高扭矩伺服电机,能够举起高达15kg的重量。电机可以将其手柄旋转 0° 至 180°,从而提供对角度位置的精确控制。有关伺服电机的基本信息,请参阅Arduino - 伺服电机教程。
引脚排列
本例中使用的MG996R伺服电机包括三个引脚:
- VCC 引脚:(通常为红色)需要连接到 VCC (4.8V – 7.2V)
- GND 引脚:(通常为黑色或棕色)需要连接到 GND (0V)
- 信号引脚:(通常为黄色或橙色)接收来自Arduino引脚的PWM控制信号。
接线图
由于MG996R是一款高扭矩伺服电机,因此它消耗了大量的动力。我们不应该通过Arduino的5v引脚为该电机供电。相反,我们需要使用MG996R伺服电机的外部电源。
此图像是使用 Fritzing 创建的。点击放大图片
Arduino代码
/*
* Created by ArduinoGetStarted.com
*
* This example code is in the public domain
*
* Tutorial page: https://arduinogetstarted.com/tutorials/arduino-mg996r
*/
#include <Servo.h>
Servo servo; // create servo object to control a servo
void setup() {
servo.attach(9); // attaches the servo on pin 9 to the servo objectư
servo.write(0); // rotate slowly servo to 0 degrees immediately
}
void loop() {
for (int angle = 0; angle <= 180; angle += 1) { // rotate slowly from 0 degrees to 180 degrees, one by one degree
// in steps of 1 degree
servo.write(angle); // control servo to go to position in variable 'angle'
delay(10); // waits 10ms for the servo to reach the position
}
for (int angle = 180; angle >= 0; angle -= 1) { // rotate from 180 degrees to 0 degrees, one by one degree
servo.write(angle); // control servo to go to position in variable 'angle'
delay(10); // waits 10ms for the servo to reach the position
}
}
快速步骤
- 通过USB线将Arduino连接到PC
- 打开Arduino IDE,选择正确的板卡和端口
- 复制上面的代码并使用Arduino IDE打开
- 单击Arduino IDE上的“上传”按钮,将代码上传到Arduino
- 查看结果:伺服电机从 0 到 180° 缓慢旋转,然后从 180° 缓慢旋转到 0°
代码说明
阅读代码注释行中的逐行说明!
如何控制伺服电机的速度
通过使用 map() 和 millis() 函数,我们可以在不阻塞其他代码的情况下平稳地控制伺服电机的速度
/*
* Created by ArduinoGetStarted.com
*
* This example code is in the public domain
*
* Tutorial page: https://arduinogetstarted.com/tutorials/arduino-mg996r
*/
#include <Servo.h>
Servo myServo;
unsigned long MOVING_TIME = 3000; // moving time is 3 seconds
unsigned long moveStartTime;
int startAngle = 30; // 30°
int stopAngle = 90; // 90°
void setup() {
myServo.attach(9);
moveStartTime = millis(); // start moving
// TODO: other code
}
void loop() {
unsigned long progress = millis() - moveStartTime;
if (progress <= MOVING_TIME) {
long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle);
myServo.write(angle);
}
// TODO: other code
}
函数参考
- map()
- millis()
- Servo.attach()
- Servo.write()
- Servo.writeMicroseconds()
- Servo.read()
- Servo.attached()
- Servo.detach()
热门推荐
铝坨坨键盘深度评测:优点、缺点与用户反馈全解析
肺结节分几种类型哪个严重
浙江宁波慈城:揭秘“江南第一古县城”复兴新篇章
迈阿密大学供应链管理专业必修课程详解
显存温度过高的危害与应对措施(揭开显存温度高的神秘面纱,保护您的显卡)
午睡就像开盲盒,掌握技巧,拒绝“巨累、巨困”!
“一阳穿三线”形态解析:真的就是大牛股吗?
黄连阿胶清虚火还是实火 黄连阿胶汤用于什么证
需水量大的植物有哪些?
路径规划市场需求怎么写
猫咪的感受世界(从宠物角度探究猫咪的感官体验)
什么是朋友?就是那个每次都顺走你打火机,还管你要火的那个!
死亡空间剧情解析及顺序梳理 故事背景和结局意义详解
怎么才能控制食欲?5个方法管住嘴,降低热量摄入
探索兴趣爱好和个人特长
法条竞合与想象竞合有什么区别
患有心血管疾病的患者接种 COVID-19 疫苗
简化身份验证、提高支付限额!支付宝、微信优化外籍用户支付体验
冥想:在快节奏生活中寻找内心平静与自我探索的有效方式
中国汽研汽车指数:解读电动汽车车内电磁辐射
牛顿第一定律
未来30年里,最可能被AI取代的职业是……
使用Lucky实现IPv6动态解析和HTTPS访问NAS服务的完整指南
滤毒罐常用型号及使用指南
棕榈树北方可以种吗
DeepSeek视角下的2024年工程机械十项趋势分析
亚冠:神户胜利船VS上海海港比赛分析
故宫文创用苹果皮做小挎包,文创品牌是如何做可持续的?
丝瓜的营养价值和功效作用
如何根据不同销售岗位调整销售业绩考核指标和标准?