首先:摄像头采集图像,采集是一张一张的,在每一张图片然后根据二维数组识别黑白边界,进而通过每一行得到黑白边界求出中值点,车随中值点构成的中值线驱动电机的行驶,电机有加速和刹车,还有倒转,刹车时duty=150,往上加到200是倒转快,往下减到100正转快,120是测试速度。
占空比:duty/312 一般情况下,占空比为50%的时候车就会刹车。
其中duty作为变量适合调试,调试合适的占空比.最后比赛的时候直接用调试出来的最合适的值作为参考值.
另外:duty的值是测试值,应该小于计算出来的值。
PLL ->core=200M
总线频率:bus=core/2=100M Hz
1M=1000000
所以总线频率为100 000 000Hz
总线频率/分频/频率=模拟计数值
又因为:(5)2^5=32;所以分频为32;
100 000 000/32Hz/100Hz=31250
而模拟技术值最大为65535 即0~65535
//设置分频器
//MCG=PLL core=MCG
SIM_CLKDIV1= SIM_CLKDIV1_OUTDIV1(0) //core=MCG
//等待始终状态位更新
while........
core_clk_
M=50*().........
bus_clk_M=core_clk_M/5;这里原来是除的5 现在我们调为2
在测试电机驱动的时候,需要用到150/312
在测试舵机的时候,需要用到 100 000 000/32/100=31250 其中那个100是舵机是频率!
分频!!!!!!!!! 嵌入式
波!
pd算法
总中断:将while里面的程序压到中断里面去(相当于打包到中断),然后中断(定时中断)在规定的时间内运行完,这样就会避免一些不必要的情况发生:
第一:程序放在定时中断,防止放在while里面出现无限循环。中断规定时间内运行完成,不会出现卡死。
中断:中断假如设置为1s钟,而程序运行需要0.5s,那么在后面的0.5s内并不需要运行程序,在这1s后进入下一个中断,
当程序运行完,如果中断没有完,不会进行下一个中断,而是等中断时间到了后,进入下一个中断,开始下一个程序,这样做的好处是,如果在一个中断的时候程序运行的时候出现错误的时候,到了中断时间后就会跳出这段程序,到下一个中断去。
智能车调试:
第一:下载程序 稳压源供7V电压,0.2A电流
第二:电机驱动测试 稳压源提供7V电压,1.5~2.0V电流,其实1.8比较合适
第三:舵机测试 电压7V~7.2V 因为电池用的是7.2V 舵机电流测试输入1A,或者1.5以下,1A为适中;
光电四轮B车模 单电机
光电四轮C车模 双电机
整体 三个方向的做法
mian.c 定时中断在PIT里面 中断服务函数。
采集 计算偏差量 转向控制 输出转向 电机赋值 (电磁组)
采集 ov7620里面采集 计算偏差量 图像处理 各个情况 用一个函数
判断各种情况 赋值
框架搭在中断里面
新建一个框架 工程程序框架
关中断 就会进入PIT文件里面 (直立)