当前位置:网站首页>【STM32F4系列】【HAL库】舵机模块驱动
【STM32F4系列】【HAL库】舵机模块驱动
2022-08-06 05:20:00 【Hz1213825】
目录
概述
舵机g90系列,这些都是同样的控制方法
舵机一般是指只能转动180°的
本程序兼容180°和360°舵机
调用不同的函数即可
舵机是5V供电,使用3V3单片机使需要使用开漏外接上拉电阻输出5V电平
波形
180°和360°舵机均为周期是20ms的PWM波
180°
将舵机转到最边上(触发到限位装置),此时将最前方当作参考方向
下图的箭头为参考方向
图中的圆为舵机可以转过的区域
将目前下图中的运动状态设为0°
此图是俯视图,也就是将电机轴对向自己,也就是第二个图的指示方向
-90°
-45°
0°
45°
90°
所以说可以看出角度从-90°到90°变化时pwm的高电平宽度在0.5ms-2.5ms内成线性变化
高电平时间为 t 单位ms
角度制角度为
单位°
对应关系为
360°
同样是20ms的PWM波
高电平时间0-0.5ms控制电机正转(电机轴朝向自己顺时针)
在范围内时间越短转速越快
高电平时间1.5-2.5ms控制电机正转(电机轴朝向自己 逆时针)
在范围内时间越长转速越快
当 高电平时间为1.5ms时电机静止
代码
pwm产生
通过定时器中断,通过计数模拟产生PWM波
需要1个GPIO(开漏浮空输出,外接5V上拉电阻)
定时器中断20us触发一次
函数
控制变量
uint16_t Steering_Engine_Count = 0;
uint16_t Steering_Engine_Num = 0;
在定时器中断调用
//定时器中断调用
void Steering_Engine_Action(void)
{
Steering_Engine_Count++;
if (Steering_Engine_Count < Steering_Engine_Num)
HAL_GPIO_WritePin(Steering_Engine_GPIOx, Steering_Engine_GPIO_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(Steering_Engine_GPIOx, Steering_Engine_GPIO_Pin, GPIO_PIN_RESET);
if (Steering_Engine_Count >= 1000)
Steering_Engine_Count = 0;
}
360舵机
// R_L为0正转,1逆转 Speed取值范围0-50 越大越快
void Steering_Engine_360(uint8_t R_L, uint8_t Speed)
{
if (Speed >= 50)
Speed = 49;
if (R_L == 0)
{
Steering_Engine_Num = 75 - Speed;
}
else if (R_L == 1)
{
Steering_Engine_Num = 77 + Speed;
}
}
180舵机
//输入旋转到的角度,以舵机轴可以面向自己的面为0°,面向左为-90°
void Steering_Engine_180(uint8_t Angle)
{
if (Angle >= 180)
Angle = 180;
Steering_Engine_Num = 25 + ((float)Angle / 180 * 100);
}
舵机停止
void Steering_Engine_Stop(void)
{
Steering_Engine_Count = 0;
Steering_Engine_Num = 0;
}
成品
GitHubhttps://github.com/HZ1213825/HAL_STM32F4_Steering_Engine
边栏推荐
- 什么是过滤器
- PCL和VTK的解读
- RESTful API简介及flask实现
- Acrel-EIoT能源物联网云平台助力电力物联网数据服务-Susie 周
- 论文阅读:M2I: From Factored Marginal Trajectory Prediction to Interactive Prediction
- 数据机房中智能小母线与列头柜方案的对比分析-Susie 周
- 第十二章 备份和恢复
- MDK Debug prompts No ULINK/ME Device found after selecting JLINK
- 读取PSACAL VOC,训练FCN全流程
- I2C协议详解 (Based Philips I2C spec)
猜你喜欢
RESTful API简介及flask实现
深度学习框架拾遗:【Pytorch(一)】——Pytorch的核心概念
安科瑞变电站综合自动化系统在变电站的应用-Susie 周
安科瑞预付费系统在某高新技术园区的设计与应用-Susie 周
安科瑞DTSD1352-10(80)A直通式接线方式说明及注意事项-Susie 周
[MM32] eMiniBoard's PWM drive passive buzzer + ADC to adjust LED brightness reference routine (on)
Communication Simple Test - Introduction to Modscan32 - Susie Week
如何使用assoc命令:修改文件关联性。
深度学习框架拾遗:【Pytorch(九)】——Pytorch中阶API
浅谈数据中心供配电设计应用以及监控产品选型-Susie 周
随机推荐
Ankerui, an energy IoT data service platform based on IoT technology-Susie Zhou
文献阅读:医学图像配准的深度学习方法综述
PCL计算点云分辨率
通用信息抽取UIE论文笔记
2020广工文远知行杯新生程序设计竞赛(初赛)B题+C题
LaTeX入门学习(面向初学者)
达梦逻辑备份还原:dimp和dexp
动手学深度学习PyTorch(五):深度学习计算
安科瑞预付费系统在某高新技术园区的设计与应用-Susie 周
MDK Debug prompts No ULINK/ME Device found after selecting JLINK
STM32 reads and writes the mounted SD card through the USB interface (supports the fatfs file system)
马士兵 网络安全工程师
【MM32】EVBoard 之 MM32F3270系列 - ADC通道采集和内部温度传感器
ESP8266 connects to Alibaba Cloud IoT platform through MQTT
VTK寻找最近点
第九章 MySQL编程基础
MDK Debug选择JLINK后提示 No ULINK/ME Device found
jupyter notebook 文件 无显示
Acrel-3000WEB电能管理系统在都巴高速的应用-Susie 周
Linux系统环境:DM8数据库安装