1、赛题回顾
2、硬件说明
2.1、电机驱动
电机驱动电路由TB6612FNG芯片与0.1uF的瓷片电容构成。这里瓷片电容于过滤高频杂波,保证整体电路的稳定性。该驱动电路可以实现输入两路PWM波,驱动两路电机。而且可以通过控制芯片的引脚A端和引脚B端的输入实现正转和反转,相比于三极管驱动电机,选用TB6612FNG驱动可以实现正反方向的控制,而不是单一方向的驱动,使得电机控制更加迅速灵敏。电机驱动电路如图所示,设计时直接置高TB6612FNG的STBY引脚,使能芯片,让其可以正常工作。
2.2、红外循迹
循迹直接使用红外循迹模块
2.3、超级电容无线充电电路
3、程序设计
3.1、系统初始化
delay_init(); //=====延时函数初始化
NVIC_Configuration(); //=====中断优先级分组
LED_Init(); //LED初始化
key_Init(); //题目按键初始化
TIM2_Getsample_Int(10000-1,72-1); //100ms中断初始化 60s定时用
if(KEY2==1) //如果两个按键都按下则进入发挥1题目
{
flag2=1;
}
else{ flag1=1; } //没按下正常进行
while(flag1||flag2) {;} //等待标志位在中断中置零(flag1等于一进行60s等待置一) //flag2等于1,TIM2中断中等待30sflag1=0,即跳出循环,目的是为了等待电压稳定后采集电压
PA1_Init(); //断电输出信号端初始化
if(zq) //判断自启标志位是否为1
{
while(PA1==1){;} //等待断电
}
TIM4_PWM_Init(899,0); //电机PWM频率=72000000/900=80Khz
MOTOR_DIR_GPIO_Config2(); //电机AB 的4个输出口初始化
YOU_Init(); //循迹传感器左右
ZUO_Init();
3.2、程序主函数
while(1)
{
if(KEY1==0) //基础第二问
{
if(xyou==0&&xzuo==0){ting();} //遇到B黑点停 0代表遇到黑线 1代表没有遇到黑线
if(xyou==0&&xzuo==1){you3();}
if(xyou==1&&xzuo==0){zuo3();}
if(xyou==1&&xzuo==1){ABZ3();}
}
if(KEY1==1) //基础第3问
{
if(xyou==0&&xzuo==1){you3();}
if(xyou==1&&xzuo==0){zuo3();}
if(xyou==1&&xzuo==1){ABZ3();}
if(xyou==0&&xzuo==0){ABZ();delay_ms(250);} //遇到黑点继续走 延迟15ms。为了防止黑点对寻迹造成影响
}
if(KEY2==1) //发挥1
{
if(xyou==0&&xzuo==1){you3();}
if(xyou==1&&xzuo==0){zuo3();}
if(xyou==1&&xzuo==1){ABZ3();}
if(xyou==0&&xzuo==0){ABZ();delay_ms(250);} //遇到黑点继续走 延迟15ms。为了防止黑点对寻迹造成影响
}
}