目录
项目需求
检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖
发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖
按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖
项目框图
硬件清单
SG90舵机,超声波模块,震动传感器,蜂鸣器
a. sg90舵机介绍及实战
sg90舵机介绍

PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s,20ms左右。
确定周期/频率

如果周期为20ms,即 Tout = 20000us
且要角度精确到度,即一度对应一单位ARR
舵机0~180度,对应占空比 0.5ms~2.5ms/20ms
换算可得 ARR+1 = 1800 ,角度0~180度 对应 ARR 范围 44 ~ 224
则 PSC=799,ARR=1799

通过一个函数来将输入的角度 0~180 转化为对应占空比。
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
//根据输入的角度获取对应pwm占空比参数
uint8_t Angle(uint8_t pwm_pulse)
{
return pwm_pulse + 44;
}
/* USER CODE END 0 */
... ... ... ... ...
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
//设置初始角度为 90
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, Angle(90));
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
//超过180之后回到0度
if(angle > 180) angle = 0;
/* USER CODE BEGIN 3 */
//每1s改变一次角度
HAL_Delay(1000);
//修改比较值,修改占空比
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, Angle(angle));
//每秒转45度
angle += 45;
}
/* USER CODE END 3 */
超声波传感器介绍及实战
超声波传感器介绍
怎么让它发送波
Trig ,给Trig端口至少10us的高电平
怎么知道它开始发了
Echo信号,由低电平跳转到高电平,表示开始发送波
怎么知道接收了返回波
Echo,由高电平跳转回低电平,表示波回来了
怎么算时间
Echo引脚维持高电平的时间!
波发出去的那一下,开始启动定时器
波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间
怎么算距离<

该项目利用SG90舵机控制垃圾桶开闭,结合超声波传感器进行距离检测,当物体靠近至5cm内时自动开启,并在2秒后关闭。同时,系统集成了震动传感器和按键,当发生震动或按下按键时也能触发开盖功能。通过微秒级延时函数和定时器配置实现了精确的控制逻辑。
最低0.47元/天 解锁文章
756

被折叠的 条评论
为什么被折叠?



