基于stm32汽车雨刮器控制系统设计
一.硬件方案
本设计主要由STM32F103C8T6单片机最小系统板+LCD1602液晶显示模块+水流量传感器+雨滴传感器模块+光强检测电路+压力传感器模块+舵机驱动电路+蓝牙模块+电源开关构成;
二.设计功能
- 采用LCD1602液晶显示屏显示当雨水量、是否有雨、舵机转速、压力值;
- 通过雨水传感器实时监测是否有雨,自动/手动启动雨刮器(舵机);
- 水流量传感器检测雨水量大小,自动模式下:根据雨水量大小自动调节雨刮器(舵机)三档转速;采集雨刮器作用于汽车玻璃的压力值,触发阈值进行报警;
- 按键可手动控制雨刮器三档转速;按键1:模式切换;按键2:设置键;按键3:数值加1/加档;按键4:数值减1/减档;
- 无线通信连接手机APP,显示信息,手动控制雨刮器开关与三档转速。
- APP控制指令:“A”:获取传感器数据;“M”:切换控制模式;“B”:切换雨刮器档位;
三.软件设计
主程序源码
/****************主函数***************/
int main(void){ delay_init(); //延时函数初始化 uart_init(9600); //串口初始化为9600TIM3_Int_Init(499,7199);//50ms NVIC_Configuration(); LED_Init(); //初始化与LED连接的硬件接口KEY_Init();EXTIX_Init(); //外部中断初始化Adc_Init();motor_Init();Lcd_GPIO_init(); //初始化lcd引脚Lcd_Init(); //初始化lcd屏幕Lcd_Puts(0,0, " WELCOME ");HX711_GPIO_Init();To_Zero(); buzzer = 0; //硬件动作下delay_ms(1000);buzzer = 1; //关闭while(1){ key_handle(key);APP_handle();if(disFlag==1) //显示{disFlag = 0; get_weight(); //获取压力数据rain=Get_Adc_Average(9,10); //获取雨滴量if(set==0)display(); //更新显示屏数据t_1s++;if(level>0){if(speed>0) //计算舵机档位{speed--;}else {if(window_flag==0)motor_open(); //舵机正转else if(window_flag==1)motor_close(); //舵机反转if(level==1) //档位计算{speed=15;}else if(level==2){speed=7;}else if(level==3){speed=0;}}}if(t_1s>10){t_1s=0;APP_Update();if(weight>setweight){if(buzzer_state==0)buzzer=1;elsebuzzer=0;}else{buzzer=1;}}if(mode==AUTO){calculate_level(); //计算舵机档位}dealLiuliang();//处理数据 } }
}
链接:https://pan.baidu.com/s/1cEhnSmCRhxPY0NZejNvxLQ 提取码: d9fm