【基于STM32】Stduino拓展学习(二)SG90舵机
本文转载自:http://www.stduino.com/forum.php?mod=viewthread&tid=64&extra=page%3D1=
关键词:
51、stm32、arduino、stduino单片机、stduino UNO&Nano、SG90舵机
说明:
伺服电机是一种有输出轴的小型设备。通过向伺服发送信号,可以将该轴转到特定角度。
实际上,伺服电机用于无线电控制的飞机中来定位控制面,如升降舵和方向舵。它们还用于无线电控制的汽车,木偶,当然还有机器人。正是因为早期在模型上使用最多,主要用于控制模型的舵面,所以俗称舵机。
舵机工作分成两个部分,检测舵机当前角度以及控制舵机转到特定角度。
基准信号
舵机内部有一个基准电路,产生周期为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控制伺服电机带动传感器左右旋转
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
IDE当前支持的功能有:
- GDB调试
- 封装库下载安装
- 代码自动补全提示
- 中英文模式
- UTF-8\GBK编码格式
- 代码快速格式化
- SWD\串口程序下载&调试(已验证)
- DFU程序下载方式(待验证)
- USB HID程序下载方式(待验证)
- maple DFU程序下载方式(待验证)
- maple DFU2程序下载方式(待验证)
- MassStorage程序下载方式(待验证)
更多功能细节请前往www.stduino.com进行了解
已经支持的芯片&板型列表:
- 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
更多功能集成正在进行中~