说明: 伺服电机是一种有输出轴的小型设备。通过向伺服发送信号,可以将该轴转到特定角度。
实际上,伺服电机用于无线电控制的飞机中来定位控制面,如升降舵和方向舵。它们还用于无线电控制的汽车,木偶,当然还有机器人。正是因为早期在模型上使用最多,主要用于控制模型的舵面,所以俗称舵机。 舵机工作分成两个部分,检测舵机当前角度以及控制舵机转到特定角度。 基准信号 舵机内部有一个基准电路,产生周期为20ms、宽度为1.5ms的基准信号。基准信号(1.5ms)与控制信号(0.5ms~2.5ms)相比较,从而判断舵机应该往何种方向转动以及转动的角度大小。 例如,1.5毫秒脉冲(控制信号,周期20ms)将使电机转到90度位置(通常称为中性位置)。如果脉冲短于0.5毫秒,则电机将轴转到更接近-90度。如果脉冲为2.5毫秒,则轴转接近+90度。 控制信号 舵机的控制信号为Stduino板输出的PWM信号,周期为20ms,其中脉冲宽度从0.5ms~2.5ms,对应舵盘的0°到180°,呈线性变化。 也就是说,给舵机提供一定的脉宽,它的输出轴就会保持在一个与之对应的角度上,直到下一个不同的脉宽出现,转到新的对应角度。 反馈信号 舵机接收来自信号线的控制信号,电机在转动时,会带动反馈电位计的转动,电位计将输出一个电压信号到舵机控制板,进行反馈,该信号与控制信号进行比较,从而调整转动方向与速度,直到反馈信号与控制信号相同。
实验目的:控制舵机由左向右转动180°,再反方向转回。
器材:Stduino Nano/UNO;4位数码管;杜邦线;SG90舵机
电路连接:
代码展示: #include <Servo.h>
Servo myServo; //创建一个舵机控制对象
int pos=0; //角度(0~180°)
void setup()
{
myServo.attach(12); // 该舵机由Stduino第12脚控制
myServo.write(pos);
delay(15);
}
void loop()
{
for (pos = 0; pos <= 180; pos += 1)
{
myServo.write(pos);
delay(15);
}
delay(60);
for (pos = 180; pos >= 0; pos -= 1)
{
myServo.write(pos);
delay(15);
}
delay(60);
}
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。IDE当前支持的功能有:
GDB调试
封装库下载安装
代码自动补全提示
中英文模式
UTF-8\GBK编码格式
代码快速格式化
SWD\串口程序下载&调试(已验证)
DFU程序下载方式(待验证)
USB HID程序下载方式(待验证)
maple DFU程序下载方式(待验证)
maple DFU2程序下载方式(待验证)
MassStorage程序下载方式(待验证)
更多功能细节请点击图片上水印显示的网址进行了解
已经支持的芯片&板型列表:
Stduino UNO&Nano
Nucleo 144 boards
Nucleo 64 boards
Nucleo 32 boards
Discovery boards
Eval boards
STM32MP1 series coprocessor boards
Generic STM32F0 boards
Generic STM32F1 boards
Generic STM32F3 boards
Generic STM32F4 boards
Generic STM32H7 boards
Generic STM32L0 boards
3D printer boards
LoRa boards
Electronic Speed Controller boards
Generic flight controllers
Garatronics boards
Midatronics boards
更多功能集成正在进行中~
|