||
想不到再次更新是在半年后了,上次LPC2103连载由于一些原因没有继续了,自己也没有继续学习下去,很遗憾,计划没有变化快吧。最近买了雁塔菜农的助学板,还花了一些钱买了一些调试用的必备装备,是准备在这条路上一直走到黑了,呵呵……
言归正传,说说刚完成的项目红外测电机转速。其实软件跟硬件都比较简单,先说硬件吧。
D2为红外发射管,发送红外信号;D1为红外接收管,在电机的转子上面贴一个反射面,这样转子转到一个固定的地方,红外管就能接收反射回来的红外信号。R3的取值可以控制I/O口接收Signal的敏感程度(一般表现为接收管离转子的可工作距离),一般取值在100K~300K都可以,具体值可以自己去调试。当R3较小的时候,Q1导通比较难导通,故可工作的距离会较小;反之,会较大。
如果需要应用在红外识别不仅仅是障碍,而具体到色彩方面的话,则可以通过将这个Q1换成一个比较器,这样就可以达到目的。(下图中的D1不知道是不是接反了,因为我没有接触过BPX65这种型号,我所使用的接收管型号应该是需要按照下面的图反着接)
软件方面稍微比硬件复杂一点点,首先你需要确定你测试的最大转速和最小转速的范围。使用一个外部中断和一个定时器,当红外接收管接收到红外信号时,触发外部中断,进入外部中断后,开定时器计时,并对外部中断计时,进入N次外部中断后,保存这时的定时器值,这样就可以计算出电机转速。
在软件抗干扰方面,做两件事情,一般就可以把干扰去掉。第一,由最大转速计算出每两个外部中断之间的最小时间,如果发现两个外部中断触发小于这个时间,则可忽略不计,认为是干扰,大于这个时间才认为这个外部中断有效。第二,将N次外部中断后的速度用数组保存起来,然后对这个数组中的数据处理去干扰。