使用STM32F1系列芯片,寻仙模块采用光电对管,使用PID算法调节占空比,输出不同的PWM波,差速寻线
单片机源程序如下:
- # include "stm32f10x.h"
- # include "public.h"
- volatile uint32_t time = 0; // ms 计时变量
- int Shut = 3 ; //停车判断
- int k = 30000 ;
- int Ultrasonic_Sing = 1 ;
- int main(void)
- {
- Period = 1600 ; //给定占空比,调节初始速度
- trackingCarInitialization() ; //初始化函数
- PID_Set(&PID_Tracking_The_Car,45,280,10);//PID参数设置
- Ultrasonic_Star() ; //超声波启动
- while(k--)
- {
- Motor_PID_Control() ;
- }
- k = 30000 ;
- while(1)
- {
- if(time>=300) /*********超声波定时测距 300*(1ms)=0.3s ***********/
- {
- Ultrasonic_Length=Hcsr04GetLength();
- time = 0 ;
- }
- Motor_PID_Control() ; // PID调节控制小车转速
- if(ShutDown<2)
- {
- Shut-- ;
- if(Shut==0)
- {
- goto ShutDown_The_Car ;
- }
- while(k--)
- {
- Motor_PID_Control() ;
- }
- }
- k=30000;
-
- Trans_Isand_Runing() ;//环岛
- gotoAquare_Bent() ; //过直角弯道
- }
- ShutDown_The_Car:
- TIM_SetCompare2(TIMx,0);//左侧控制
- TIM_SetCompare1(TIMx,0);//右侧控制
- return 0;
- }
-
复制代码
所有资料51hei提供下载:
Tracking The Car.rar
(286.56 KB, 下载次数: 129)
|