【STM32学习】(26)STM32实现舵机旋转并实现超声波检测
单片机型号:STM32F103C8
功能要求:
要求通过STM32实现舵机180°旋转,超声波放置在舵机上,实现一边旋转一边测距,同时可以设置测距的最大距离。
设计的STM32的技术有:串口中断,外部中断,定时器中断,PWM,滴答定时器等
超声波使用的型号如下:
舵机的型号如下(其它型号同样适用):
超声波测距是通过定时器加中断实现的,接线:
VCC——+5V
GND——GND
Trig——PC7
Echo——PC8 (同时映射为外部中断口8)
代码实现依据:
舵机的实现:因为舵机需要通过PWM才能驱动舵机正常转动,时序图如图:
舵机的主要组成部分为伺服电机,所谓伺服就是服从信号的要求而动作。在信号来之前,转子停止不动;信号来到之后,转子立即运动。因此我们就可以给舵机输入不同的信号,来控制其旋转到不同的角度。
舵机接收的是 PWM 信号,当信号进入内部电路产生一个偏置电压,触发电机通过减速齿轮带动电位器移动,使电压差为零时,电机停转,从而达到伺服的效果。简单来说就是给舵机一个特定的 PWM 信号,舵机就可以旋转到指定的位置。舵机上有三根线,分别是 GND、VCC 和 SIG,也就是地线、电源线和信号线,其中的 PWM 波就是从信号线输入给舵机的。一般来说,舵机接收的 PWM 信号频率为 50HZ,即周期为 20ms。当高电平的脉宽在 0.5ms-2.5ms 之间时舵机就可以对应旋转到不同的角度。
代码中使用PA6口作为PWM输出引脚。
同时配置了串口,并设计了测量范围控制,控制器测量的最远距离。
由于代码设计文件比较多,无法一一粘贴。
模块名称 HC-SR04 |
STM32的IO口 | 工作模式 |
GND | GND | - |
VCC | +5V | - |
Trig | PC7 |
GPIO_Mode_Out_PP (推挽输出) |
Echo | PC8 |
GPIO_Mode_IN_FLOATING (浮空输入) |
- | PB6 | USART1_TX(需要映射) |
- | PB7 | USART1_RX(需要映射) |
模块名称 舵机 |
STM32的IO口 | 工作模式 |
DATA | PC6 |
GPIO_Mode_AF_PP (需要输出PWM) |
GND | GND | |
VCC | +5V | |
代码片段:
/****************************************函数名称:void SteeringEngineAndUltrasonic(uint8_t fun)函数参数:uint8_t fun:指定TFT显示屏的功能,0X01显示第一页,0X02显示第二页,10-1F选择第一页的第几行数据,20-2F选择第二页的第几行数据函数返回值:无 函数功能:舵机与超声波测距,舵机左右旋转180°,边旋转边测距创建作者:创建时间:2021.4.30联系方式:QQ:修改作者:修改时间:修改说明:
****************************************/
void SteeringEngineAndUltrasonic(uint8_t fun)
{s32 rang = 0;int i;for(i = 1950;i >= 1805;i--){TIM_SetCompare1(TIM3, i);// 设置占空比rang = Ultrasonic_Ranging();//USART1_printf(USART1,"\r\nrang=%d\n",rang); // 发至串口助手显示sendDataToTFT(fun, rang); // 可以输出到液晶屏显示delay_ms(20); }for(;i <= 1950;i++){TIM_SetCompare1(TIM3, i);// 设置占空比rang = Ultrasonic_Ranging(); //USART1_printf(USART1,"\r\nrang=%d\n",rang); // 发至串口助手显示sendDataToTFT(fun, rang); // 可以输出到液晶屏显示delay_ms(20);}
}
注意:我们这里使用了串口屏,如果需要发送至串口助手显示,需要放开USART1_printf(USART1,"\r\nrang=%d\n",rang); 然后将sendDataToTFT(fun, rang);注释掉就可以。
代码可链接下载:
(1条消息) 舵机加超声波测距源码.7z-电信文档类资源-CSDN下载
【STM32学习】(26)STM32实现舵机旋转并实现超声波检测相关推荐
- 【STM32学习 自制STM32游戏机】
2020年科协招新需要出训练题,让新生了解一下单片机,所以我这边打算出一道游戏机的题,让新生用单片机实现一个游戏机,共3个游戏可选,分别为:贪吃蛇,打地鼠和推箱子,由于是针对于0基础新生,所以在指标上 ...
- 【stm32学习】stm32最小系统和程序下载方式
文章目录 前言 一.程序下载 1.USB下载方式 2.J-LINK下载方式 前言 stm32学习过程,是从正点原子的开发板开始的,但是正点原子的开发板实在是太大了,而且不便宜,不适合一些实际项目制作, ...
- STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)
本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...
- 《STM32学习笔记》2——开发环境的建立
接上文,文中的图片知识,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.接口定义 1 芯片引脚整体简介 2 各部分引脚介绍 二.开发板简介 三.IS ...
- stm32学习笔记-6TIM定时器
6 TIM定时器 文章目录 6 TIM定时器 6.1 TIM定时中断原理 6.2 TIM定时中断相关实验 6.2.1 实验:定时器定时中断-内部时钟 6.2.2 实验:定时器定时中断-外部时钟 6.3 ...
- stm32的语音识别_免费开源基于STM32的智能垃圾桶之舵机控制(HAL库)
大家好,我是『芯知识学堂』的SingleYork,前面给大家简单介绍了<基于STM32的智能垃圾桶之成员简介>.<基于STM32的智能垃圾桶之语音识别>和<基于STM32 ...
- STM32学习之TFTLCD
前言 之前的STM32博客学习了从0新建工程,C语言知识复习,总线时钟等基础知识,现在根据手册开始正式的开发项目,本篇博客主要是理解文档中的TFTLCD部分的学习 学习资料来自:STM32F407最小 ...
- STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...
- STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)
本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...
最新文章
- JAVA单向/双向链表的实现
- JS编程建议——42:用好正则表达式静态值
- 在Google的GPU上永远免费训练您的机器学习模型
- 深度学习总结:Tensorboard可视化里面的events, graph, histogram
- 用MS SQL Reporting Services生成报表
- git 代理 git_五分钟解释Git的要点
- JAVA学习-JAVA实现一元二次方程求解
- doc2html asp,ASP常见问题及解答(3)-ASP教程,ASP技巧
- 安装插件报错:error: Microsoft Visual C++ 14.0 is required...
- B+/-Tree原理
- jquery源码_详细中文注释
- Ubuntu18.04创建WiFi热点
- vivox5l的Android是5.0,步步高Vivo X5 X5L刷机教程(官方固件rom升级教程)
- html怎么打五角星符号怎么打出来,电脑小技巧 五角星符号在哪里打出来 - 驱动管家...
- LINUXmint18.2添加国内源以及安装各种流行软件(网易云音乐,搜狗,谷歌浏览器,virtualbox虚拟机)
- linux:shell命令之软硬链接
- Btree/B+tree原理及区别(详解)
- 4210: 孙壕请一盘青岛大虾呗【递归/注意结束条件】
- 工控服务器什么作用,工控机和服务器有什么区别
- 家用 NAS 服务器(4)| MergerFS和SnapRaid数据定时备份