学校培训室8台机电自动化培训设备模拟了工业生产制造现场,真实再现了工业生产线中的进料、检测、搬运、切割、加工、装配、运输、分拣过程,是典型的自动化生产线。该设备有大量的光电传感器来检测材料产品,所以我希望光电传感器能做一个小的单片机应用,并使用光电传感器来检测传送带上的产品数量。
说做就做,手头碰巧有一个小车避障红外光电传感器E18-D80NK
如下图所示。E18-D80NK-N这是一种集发射和接收于一体的光电传感器。发射光调制后发出,接收头解调输出反射光。有效避免可见光的干扰。透镜的使用也使传感器能够检测到最远80厘米的距离(由于红外光的特性,不同颜色的物体可以检测到不同的最大距离;白色物体最远,黑色物体最近)。可根据要求通过尾部电位器旋钮调节检测障碍物的距离。该传感器具有探测距离长、可见光干扰小、价格便宜、装配方便、使用方便等特点,可广泛应用于机器人避障、装配线计件等场合。其主要参数如下:工作电压5V,工作电流10-15mA,驱动电流100mA,感应距离3-80cm。棕色线是VCC,蓝色线为GND,黑色线为out即传感器输出,正常状态为高电平输出,检测物体目标后输出低电平。因为传感器是NPN类型泄漏输出,因此连接到单片机时需要连接拉电阻,上拉电阻选择1K的即可。
-
电路连接
黑线即E18-D80NK输出接单片机P3.产品技术处理应通过外部中断进行。黑线应连接1K电阻的到VCC,棕色直接在这里VCC线上,棕色VCC线接5V单片机电源输出。四位数码管显示。
2.主要程序
主要程序为中断处理和结果显示。
中断处理代码如下所示。中断响应后,判断传感器时间再判断传感器的状态。确定是否真的检测传送带上的物品,以消除扰动对测量结果的影响。通过传感器的产品大约需要700-10000ms传感器在此期间输出低电平。扰动持///续时间短,20-150ms所以这里选择延迟200左右ms左右,消除扰动影响。
void Exit0Int() interrupt 0 { EX0 = 0; //关中断 Delay_ms(200); if(!key1) { count ; TR0=1; LEDdisplay(count); } else EX0=1; } /******************************************************************************* * 函 数 名 :LEDdisplay * 函数功能 :循环显示每个位置的数据 * 输 入 :num要显示的数据 * 输 出 :无 *******************************************************************************/ void LEDdisplay(unsigned int num) { unsigned char qian,bai,shi,ge; qian=num/1000; bai=num00/100; shi=num0/10; ge=num; wela_1 = 1; //关闭所有数码管 wela_2 = 1; wela_3 = 1; wela_4 = 1; wela_4=0; //显示千位 LED_PORT=table[qian]; Delay_ms(1); LED_PORT = 0xff; wela_4=1; wela_3=0; //显示百位 LED_PORT=table[bai]; Delay_ms(1); LED_PORT = 0xff; wela_3=1; wela_2=0; //显示十位 LED_PORT=table[shi]; Delay_ms(1); LED_PORT = 0xff; wela_2=1; wela_1=0; //显示个位 LED_PORT=table[ge]; Delay_ms(1); LED_PORT = 0xff; }
3.运行效果(如视频所示)
传送带产品计数器
完成代码后,请在微信官方账号后台回复产品计数器,获取下载链接。