光电管途径辨认算法
1、红外光电发射接纳管
2、电压比较器
3、HCS12的IO口
4、HCS12的ATD模块
5、HCS12的ECT模块
原理:
1、红外发射管,将红外线信号发射出去,当遇到遮挡物是,会反射回来。假如当部分为黑色时,则不会发射回来(黑色能吸收光线,红外线在遇到黑色遮挡物时,被吸收)。接纳管在接纳到反射的红外线时,其两头的电阻发生变化,然后能够输出不同的电压值,终究依据这些电压值来辨认途径。
2、电压比较器能将接连量转变成开关量,在大于设定的阈值时,输出高电平,小于设定的阈值时,则输出低电平。
3、ADC能将模拟量转化成计算机能够辨认的数字量,但是自己对这些数字信号进行处理,对途径信息进行辨认。
计划:
1、离散型途径辨认算法。
将红外接纳管输出的电压信号经过电压比较器进行电压比较,输出一个开关量,HCS12的IO读取电压比较器输出的开关量。装置若干个光电管排成一排,并且一起读取信息,当与发射管衔接的IO口输入一个0值时,则判别黑色轨迹在该光电接纳管下,经过必定的算法即可求出黑色轨迹和小车的偏移视点。
长处:简略易行。
缺点:
2、接连型途径辨认算法。
将红外接纳管输出的电压信号经过AD转化,比及数字量的的电压信号。经过对这些数字亮的处理能够得到近似于接连的路途信息。
长处:途径信息为接连,途径信息愈加准确。
缺点:
计划挑选:由所以初度触摸途径辨认算法,为了小车能安稳的行进,所以挑选了较为简略完结的离散途径辨认算法。
阐明:
1、光电接纳管为16个,在离前轮Hmm的距离排成一排,一起检测路途信息,每个光电管之间的距离为15mm。
2、16个光电管别离和HCS12的PORTB口和PORTE口衔接。
3、检测时刻距离为10MS。
4、变量iRoutPlace寄存途径信息。
5、数组iPLace寄存途径方位。
6、数组iplaceAngle寄存方向视点。
7、方位信息数据:
8、方位与偏移角的联系。
经过C程序计算出来。程序如下:
#include
#include
void main()
{
int i;
long double h,n;
n=0.0;
h=500.0;
for(i=0;i<16;i++)
{
}
}
运转成果:
方位-弧度角–视点
0–0.000000–0.000000
1–0.029991–1.719230
2–0.059928–3.435372
3–0.089758–5.145373
4–0.119429–6.846244
5–0.148890–8.535093
6–0.178093–10.209149
7–0.206992–11.865795
8–0.235545–13.502579
9–0.263712–15.117239
10–0.291457–16.707714
11–0.318748–18.272153
12–0.345556–19.808919
13–0.371856–21.316590
14–0.397628–22.793961
15–0.422854–24.240034
经过上表能够近似为,每偏移一个方位,视点添加1°。
9、视点信息:
iplaceAngle[]={-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,5,5,6,7,8,9,10,11,12,13}
CODE:
#include
#include
#pragma LINK_INFO DERIVATIVE “mc9s12xs128”
//===========================================================//
//光电管离散途径辨认算法
//PORTB和PORTE接电压比较器的输出端
//16位模数递减计数器进行计数
//author: Yangtze
//time:2009/4/19/15:15:45
//===========================================================//
#define iSampling 10//途径采样时刻设置
int iRoutPlace;
int Angle;
int iPLace[28]={0x7fff,0x3fff,0xbfff,0x9fff,0xdfff,0xcfff,0xefff,
int iplaceAngle[]={-13,-12,-11,-10,-9,-8,
void Init_MDC(void)
{
}
void pllclk(void) //16MHz
{