使用Arduino开发板控制伺服电机

本文介绍了如何使用Arduino控制伺服电机的基础知识。伺服电机通过3根线连接,利用PWM信号确定旋转位置,并能抵抗外部力保持位置。使用Arduino的Servo库可以轻松实现伺服电机的定位。基本步骤包括创建伺服对象,关联到信号引脚,然后通过write方法设定位置。示例代码展示了如何在Arduino Uno上控制伺服电机在0到180度之间移动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大多数情况下,直流电机控制的控制方法都是非常简单的(只需要连接电源和地)。伺服电机有一些不同,它使用3根线连接(电源、地和信号)将电机移动到某个旋转位置。该位置由信号线上发送的信号决定。一旦电机到达信号指定的位置,它将保持其位置,并抵抗试图将其从该位置移动的任何外力。该电阻称为伺服的转矩额定值,可在数据表中找到。
脉冲宽度调制PWM:
参考:PWM占空比控制电机转速
当我们使用Arduino编程时,这种伺服电机背后的理论并不太重要。我们可以导入一个库来满足大多数的PWM应用场景。该库称为Servo库,您可以在Arduino参考页查看的该库的所有不同函数,或者在太极创客上有相应的中文版关于库的介绍。

使用伺服库的基本操作如下:
(参考:【【太极创客】零基础入门学用Arduino 第二部分 meArm机械臂 合辑-哔哩哔哩】)

  1. 将伺服电机命名servo,可以使用Servo [servo name];函数实现。
  2. 将伺服关联到一个引脚,这个引脚将是我们伺服的信号引脚,并使用 [servo name].attach([PinNumber]);
  3. 为伺服的位置创建一个变量(或者只是使用一个整数值)
  4. 现在我们可以使用[servo name].write([position integer])写入伺服的位置。

以Arduino Uno和一个小型爱好伺服为例,您的设置应该看起来像这样,请注意,我们使用的PWM引脚10,但可以使用任何PWM引脚!
在这里插入图片描述

#include  //import the servo library

Servo coreservo; //Name the Servo

void setup() {
  coreservo.attach(10); 
  /*Attach the named servo object to Digital IO 13, use following syntax: 
  servoname.attach(Pin#, minimum Pulse width (ms), maximum pulse width (ms)); 
  if you want to define the pulse widths for your motor*/

}

void loop() {
  coreservo.write(0);
  delay(200);
  coreservo.write(90);
  delay(200);
  coreservo.write(180);
  delay(200);
  /* If you wanted to read the angle of your servo at any given time, use servoname.read();
   * If you wanted to write a pulse of a certain width use servoname.writemicroseconds(value in microseconds);
   */
}
本设计Mechaduino是一款经济实惠的开源工业伺服电机,位置,扭矩,速度和自定义模式,且与Arduino的兼容。工程师使用伺服电机来实现机器人,自动化和数控制造等应用所需的精密运动。像RC伺服系统一样,工业伺服系统主动纠正外部干扰。与RC伺服系统不同,工业伺服系统可以提供非常精确的运动,并且通常支持先进的运动控制模式。运动的控制模式工业伺服电机工Mechaduino 0.2实物截图: 工业伺服电机Mechaduino特点: 位置,速度,扭矩环路 步进和方向输入,用于与步进电机/步进棒的插入兼容性 I2C,串行输入 可定制/开源,可访问内部变量 透明和用户可定义的控制算法(商业伺服器通常缺乏这个) Arduino的的的的的兼容易于使用的界面 高分辨率指向(小于0.1度) 低成本(不应该是步步高+步枪成本的巨大飞跃) 用于电机间通讯的串行接口 板载处理器可以独立应用于简单应用 可调整换向轮廓 PID自整定 抗龋齿能力强 Arduino的的的兼容,开源工业伺服电机Mechaduino系统设计框图: 工业伺服电机工工工工由四个主要组成部分: 1)实际电机,通常为无刷直流品种。当您看到工业伺服电机时,成本的一大部分是电机本身。它们通常是定制的,或至少内置数量有限,这意味着$$$。瓦特瓦特,我猜想,生产NEMA 17或NEMA 23步进电机的质量是工业伺服使用的BDC电机的十分之一和百分之一虽然他们的设计是针对“步进”进行优优的,但步进电机实际上只是50极无刷直流电机。它们可以像更传统的三相BDC电机一样受到控制。这就是计划。这是工作! 2)用于反馈的传感器,通常为编码器。光学编码器是非常标准的,但如果您想要高分辨率和/或绝对位置信息,则可以获得相当昂贵的代价。我们对AMS等供应商提供的一些便宜,高分辨率的磁编码器感兴趣。事实证明,尽管他们声称12和14位分辨率(分别为0.09和0.02度),它们但在一定程度上的英文非线性的!然而,我们发现这种非线性是非常可重复的,我们能够开发一种快速,自包含(电机)校准程序,可以将分辨率恢复到0.1度以上(稍后再来)这是一个重要的设计工作,值得自己的构建日志!) 3)驱动电路/电力电子元件激励电机绕组。许多工业伺服系统使用离散ħ桥。每相需要自己的ħ桥(对于两相电动机...三相电动机中的每个半桥),其由至少4个(如果不是8个)(...包括续流二极管)分立开关装置组成。投入门驱动电路,事情开始变得昂贵。我们希望找到一个可以提供电流反馈的单芯片集成解决方案,我们发现在A4954双通道PWM驱动器中。 4)控制电子通常是微控制器或FPGA。在此之前,我们决定使用Arduino兼容性是为了使固件尽可能方便。我们选择使用SAMD21 ARM M0 +(Arduino Zero兼容)处理器来平衡成本和性能。我们的面包板原型系统验证了该处理器能够执行必要的算法....
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值