光电传感器感应单片机控制的电机系统
我补充一下,光电耦合器的原理和光电对管差不多,只是里面嵌了发光管和光敏管,而且值得注意的是光电耦合器的规格只有多少电压,没听说有多少电流。用光电耦合器比三极管更直接。实际上,不建议使用光耦作为驱动器。我的电路是用l298n驱动12v电机。
对了,电路图中有一个电机后面跟着一个电容,主要是针对电机调速,但是我的电机灵敏度差,加一个电容起到缓冲作用,这是l298芯片的典型电路方式所没有的。
我最近对跟踪车的结论做了如下报告。。。
实际上,是否使用光电隔离取决于你所驱动的电机的电流。如果电流小于1 A,则不需要光电耦合。。。光耦驱动似乎不起作用,而且不稳定。
测速的码盘最好做的尽量密一点,否则实际操作中会有晃动等诸多原因会让结果误差非常大,因为一般光电开关都会有聚光镜,即使很小的晃动也能感觉到。
跟踪小车
监制:李静
通过造车,可以加深对单片机控制的熟练度,同时学习项目开发的流程。
小车按照给定的路线行走,具有计时、显示运行时间、计时、粗略测量行走距离等功能。
第一,?设计任务:
1,设计要求
(1)自动寻迹车开始处于设置模式,通过按键设置运行时间。设定时间完成后,按启动键启动汽车,并显示当前运行时间。
(2)汽车按指定路线行驶,自动区分直行轨道和绕行轨道,在指定绕行处转弯,实现灵活前进和转弯功能。
(3)汽车在预设时间后会自动停止,3秒后数码管会显示行走时间和行走距离。
(4)右键停止和提前结束,显示行走时间和距离。
2、汽车跟踪的原理
这里的跟踪是指汽车在白色地板上沿着黑线行走,通常的方法是红外探测。
红外探测法,即利用红外线在不同颜色的物体表面具有不同反射性质的特点,在汽车行驶过程中不断向地面发射红外线,当红外线遇到白纸地板时发生漫反射,反射光被安装在汽车上的接收管接收;如果遇到黑线,红外光会被吸收,车上的接收管接收不到红外光。单片机根据是否接收到反射的红外光来确定黑线的位置和汽车的行走路线。红外探测器的探测距离有限,一般最大不应超过3cm。
第二,?方案演示:
根据设计要求,该系统主要由控制器模块、电源模块、跟踪传感器模块、DC电机及其驱动模块、电压比较模块等组成。
为了更好地实现各个模块的功能,我们设计了几种方案,并分别进行了演示。
3.1车身设计
方案1:买一辆玩具电动车。购买的玩具电动车具有完全装配好的车架车轮、电机及其驱动电路。然而,一般来说,玩具电动车具有以下缺点:首先,由于其紧凑的装配,各种所需传感器的安装非常不方便。其次,这种电动车通常是前轮转向后轮驱动,无法适应本题的栅格地图,无法方便快捷地保持坐标转动90度甚至180度。第三,玩具电动车的电机多为玩具DC电机,扭矩小,空载速度快,负载性能差,调速困难。而且这种电动车一般都比较贵。所以我们放弃了这个计划。
方案二:自己做电动车。经过反复考虑和论证,我们制定了左右轮分开驱动,前万向轮转向的方案。即左右车轮由两台转速和扭矩基本相同的DC电机驱动,在车身头部安装一个万向轮。因此,它可以轻松实现与汽车相同坐标的90度转弯。
在安装过程中,我们确保两个驱动电机同轴。汽车前进时,左右驱动轮和前万向轮形成三点式结构。这种结构使汽车行驶平稳,可以避免后轮过低导致左右驱动轮驱动力不够的情况。为了防止汽车重心偏移,前万向轮起支撑作用。
对于边框材质的选择,我们通过比较选择了铝合金。铝合金制成的车架比塑料车架更坚固,比铁制汽车更轻便、更美观。
3.2控制器模块
方案1:采用stc宏景公司的stc 89c52单片机作为主控制器。Stc89c5是一款低功耗、高可靠性、超低价格、高性能的8位单片机。芯片包含32k空间,可重复擦除100000次。有32个IO口,stc系列单片机可以在线编程调试,方便下载程序和调试整机。
从方便的角度出发,我们选择了这个方案。
3.3电源模块
方案1:12V电池给DC电机供电,12V电压降压稳压给单片机系统和其他芯片供电。电池具有强大的电流驱动能力和稳定的电压输出性能。虽然电池的尺寸过大,在小型电动车上使用非常不方便,但是因为我们的车身设计留有足够的空间,而且电池的价格也比较低。所以我们选择了这个方案。
综上所述,我们选择了这个方案。
3.4稳压模块
方案1:用7805直接减压,并使用大型散热器。虽然结构和原理简单,但是电流太大,导致电路不稳定,容易烧坏稳压块。我们放弃了这个计划。
方案二:用两个7805直接稳压到5V。理论上因为压降太大,容易烧坏稳压块,所以并联使用两个7805。然而,在两个稳压块中存在gift问题,然后通过修改电路解决了该问题。最后我们选择了这个方案。
3.5跟踪传感器模块
方案1:光敏检测器由光敏电阻组成。光敏电阻的阻值会随着环境光的变化而变化。光线照在白线上时,发光强,光线照在黑线上时,发光弱。所以当光敏电阻在白线和黑线以上时,电阻会有明显的变化。通过比较电阻的变化值,可以输出高低电平。
但是这种方案受光照影响较大,不能稳定工作。所以我们考虑其他更稳定的方案。
方案二:使用RPR220光电管。RPR220是一款集成反射式光电探测器。它的发射器是砷化镓红外发光二极管,接收器是高灵敏度硅平面光电晶体管。
RPR220采用DIP4封装,具有以下特性:
塑料镜片可以提高灵敏度。
内置的可见光滤镜可以减少离散光的影响。
体积小,结构紧凑。
当LED发出的光反射回来后,经过lm339电压比较芯片,与mosfet进行比较,输出高低电平。可以通过调整mosfet来调整传感器单元的灵敏度。光电管调理电路简单,工作性能稳定。
所以我们选择了方案二。
3.6电机模块
该系统是一种智能电动汽车。对于电动汽车来说,选择其驱动轮的驱动电机非常重要。因为这个实验是为了实现路径的精确定位和精确测量,所以我们综合考虑了两种方案。
方案1:采用DC减速电机。该DC减速电机具有转矩大、体积小、重量轻、装配简单、使用方便的优点。因为原来的动力是由内部的高速电机提供的,可以带动变速(减速)齿轮组,可以产生更大的扭矩。
因为我们用软件给电机调速,实际值比这个小。
注:理论值用于实际计算。
能更好的满足系统的要求,所以我们选择了这个方案。
3.7电机驱动模块
方案1:电机驱动芯片采用专用芯片L298N。L298N是全桥驱动芯片,高压大电流,对应频率高。一个L298N可以分别控制两个DC电机,它还有一个控制使能端子。使用该芯片作为电机驱动具有操作方便、稳定性好、性能优异等优点。
方案2:对于DC电机,驱动电路由分立元件组成。由分立元件组成的电机驱动电路结构简单,价格低廉,在实际应用中得到广泛应用。但是这个电路的性能不够稳定。
所以我们选择了方案1。
第三,?分析和计算:
1传感器模块的设计
所以我们考虑使用比较器的方案。
图中可调电阻RV1可以调节比较器的mosfet,为该电路供电的电池的压降通过实验得到验证。因此,我们选择该电路作为传感器检测和调理电路。
2.跟踪光电管的安装
考虑到设计要求,本设计只需要四对光电传感器就可以完成设计要求,这四对光电传感器排成一条直线,中间两对传感器用来校正小车的跟踪路线,保证小车的直线度。两侧传感器用于检测汽车越线,可以实现汽车转弯。
4.电机驱动电路的设计。
我们使用电机驱动芯片L298N作为电机驱动器,驱动电路的设计如图7所示:
L298N的5、7、10和12脚与单片机相连。通过对单片机编程,可以实现两台DC电机的PWM调速和正反转功能。这里的二极管用来释放电机线圈自感应的电能。
电容器c3起缓冲作用。测试后,当调整速度时,下面的电机接收高脉冲电流。因为DC电机的灵敏度不是很好,所以我们也考虑用长周期的脉冲,但是因为数码管的扫描会比较慢,所以数码管会震动。综合考虑,我们选择电容起到缓冲作用。
4、测量距离设计
我们用光电管感应轮子的黑白条纹来计算轮子的旋转角度,间接测量行走距离。
实际操作中会出现车轮打滑,黑白纸带表面不光滑不平整,轮轴不牢固,内外晃动等情况。因为rpr220有一个电容,所以即使很小的变化也会有反应。实际测试传感器发出的信号远大于理论。当电池电量过低时,这种现象会更加不准确、不规律(有时大,有时小)。即使在电量充足的情况下,也有很大的误差,超过一定距离,结果就没有意义了,所以我们把最大估计距离限制在6米左右,所以这个设计是一个粗略的测量距离。
第四,?总电路图和元件清单
经过反复论证,我们最终确定了如下方案:
(1)车体采用铝合金框架手工制作。
(2)采用stc89c52单片机作为主控制器。
(3)12V电池为DC电机供电,12V电压由两个7805(带大散热片)并联降压稳压,为单片机系统及其他芯片供电。
(4)用RPR220光电装置跟踪管子。
(5)采用L298N作为DC电机的驱动芯片。
动词 (verb的缩写)?软件实现
3.1主程序流程图
我们设计的软件的主程序流程图如图所示:
第六,?测试:
七、?创新
本工作对连接lm339电压比较器控制mosfet阻值的方法进行了改进,用统一的变阻器代替了连接四个变阻器,方便了灵敏度的调节。光电传感器电路也有变化。发射极和集电极直接接5V电源,可以让电流更大。实验证明,打开三极管时,电流不足以烧坏三极管。
DC与电容并联,电容c3起缓冲作用。测试后,当调整速度时,下面的电机接收高脉冲电流。因为DC电机的灵敏度不是很好,我们也考虑使用长周期脉冲,但是因为数码管的扫描会比较慢,所以数码管会振动。同时考虑用时钟中断扫描刷新数码管,但那样会造成频繁中断(50ms左右),刷新数码管需要很长时间(24ms左右)。综合考虑,我们选择电容起到缓冲作用。
八、?感受和经历
P0?如果想当io口用,必须加上拉电阻,即使用上拉电阻,驱动能力也不是很好。本作采用* * *阴极数码管,驱动电路设计比较复杂,数字不够亮。最好用* * *阳极数码管,三极管驱动,可能会更好。
由于单片机对数码管的扫描频率很高,所以在设计程序时就要求主程序的周期不能太长,这对于我们的汽车执行跟踪、调速、定时、计时、测距、转弯等功能是非常苛刻的。综合考虑后,我决定主要功能只有刷新数码管和检测黑线的功能,其余功能都要用中断来处理,而且需要的中断时间不能太长。到目前为止,这些已经使我的程序长达350行。
起初,我们设计精确地测量距离,但误差是不可避免的。由于硬件的限制和对事实的尊重,我们降低了标准。你将来可以在这里改进和扩展。
在整个测试阶段,我们充分考虑了程序功能的连续性和兼容性。由于89c52单片机的速度限制,以及数码管实时刷新频率的需要,我们无法设计出速度太高的小车。经过反复测试和综合考虑,我们采用目前的方案。
九、?结束语
我们的跟踪车在满足设计要求的前提下,充分考虑了外观、成本等问题,在性能和价格之间做了很好的平衡。因为设计要求不复杂,所以我们没有给电路增加冗余功能。
由于作者水平有限,部分观点有误。希望指正和指教,在此感谢。
特别感谢:
有老师和实验室老师的指导,有、张、黄等前辈的建议和指教,还有、吴匡及整个团队成员,没有你们,就没有我们的今天。
2010 5?月份?
李静
程序片段
/*******************************************
数码管刷新功能
********************************************/
作废?显示(uchar?qw,uchar?bw,uchar?sw,uchar?Gw)//显示功能
{
P2 = 0x E0;
p 1 = tabledu[qw];
延迟(6);
P2 = 0xd 0;
p 1 = tabledu[bw];
延迟(6);
P2 = 0xb 0;
p 1 = tabledu[SW];
延迟(6);
P2 = 0x 70;
p 1 = tabledu[GW];
延迟(6);
P2 = 0x0f;//
}
/*******************************************
任务初始化功能
********************************************/
作废?Init0 () Task 1初始化函数
{
EA = 1;
EX0 = 1;
ex 1 = 1;
it 1 = IT0 = 1;
P0 = 0x00
flag = 1;
姬叔= 0;//
}
作废?Init()//任务2初始化函数
{
EA = 1;
TH0 =(65536-50000)/256;//初始化正1计数器。
TL0 =(65536-50000)% 256;
ET0 = 1;
TR0 = 1;
th 1 =(65536-50000)/256;//初始化正1计数器。
TL 1 =(65536-50000)% 256;
et 1 = 1;
tr 1 = 1;
TMOD = 0x 11;
dsh =(qw * 10+bw)* 60;//
姬叔= 1;//
}
作废?苏杰()
{
if(flag2==0)
{
flag 1 = 1;
flag 2 = 1;
CNT 1 = 0;
}
ET0 = 0;
P0 = 0;
显示器(宽、宽、宽、宽);
}