如何区别接收管的c引脚和e引脚
发布时间:2013/11/18 20:21:02 访问次数:1061
在确保发射管正常发射且用手遮挡酌情况下,DF30FC-60DS-0.4V(81)一端接高电平,另一端的平也接近高电平,那么接近高电平的就是e引脚了。除去发射信号,此时已经判断出的e引脚应该就接近低电平了。原理是这样的:当有红外光照射到光电三极管时,c与e之间就会导通,导通电压在0.4V左右。
经过这样的判断与测试过程,大家是否自己也能编写相应的程序,来判断是否有物体接近传感器了呢?不过在这次应用中,我并没有让c引脚接高电平,从而判断e引脚的状态。因为这样的话,传感器的e引脚耍接一个下拉电阻。而M8单片机的引脚仅仅能设置上拉电阻。因此,为了简化制作,我通过程序设置传感器的e引脚输出低电平,传感器的c引脚通过M8单片机的PC5上拉。这样,当手靠近传感器时,就会因为手反射回的红外光,而使得c引脚接近低电平。同样,红外遥控器对着它照射也会拉低c引脚。因此,在单片机的程序中,我们不能仅仅通过读取c引脚的电压值是否接近0来判断手是否靠近收纳桶。
程序可以说相当简单,舵机仅仅用了1 0次循环来实现1 0次50Hz(其实舵机可以接收50—333Hz不等的频率)的PWM这两个函数可以控制舵机转到两个极限的角度,起到拉升盖子的作用。-00()这个函数的实际作用效果是打开盖子,而一90()这个函数则是用于关闭盖子。大家可以调整PORTB.1=1话句后面的延时时间参数(延时时间就是高电平的时间),来微调该舵机的两个相对位置。
看这个函数的名字,大家就能想到它的作用了吧?这是读红外传感器的状态函数,当全局变量state=l时,表示没有物体遮挡、盖子关闭。当全局变量state=2时,表示有物体遮挡、盖子打开。PORTC.2控制着传感器发射的状态,当PORTC.2=1时,关闭红外的发射,等于O时开启红外发射。由于我们是要判断手是否靠近传感器,如果简单地判断ADC的数值是否接近O的话,那是不行的,因为在阳光下,ADC的数值就接近O。所以,我们实际要判断的是:物体靠近而引起的变化,即程序中的H-L的差值。
由于开启和关闭传感器需要时间,ADC转换也同样需要时间,这段时间完全有可能因为你看电视时换频道而错误触发(遥控器发射红外光嘛),因此程序采样了20次。如果20次总计100ms左右的时间内,差值一致的话,则判断有人手靠近,否则从头再检测20次。这样就保证了稳定而可靠的感应。
大家可以通过修改H-L的差值,来改变感应的实际距离。当H-L≥6时,感应的距离约为20cm。H-L的差值并非和距离成线性关系,差值在接近1时感皮的距离最远,约30cm左右。但是你也不希望当在30cm时,盖子连续不断地抖动开关吧。所以,在程序中我就设置H-L≤6(≤20cm距离)时就关闭盖子。当H-L≥12(≤15cm距离)时就打开盖子。
制作好的效果图如图7所示,本制作的单片机程序可以从《无线电》杂志网站www.radio.com.cn上下载,使用GVAVR编译,点击工程文件即可直接打开修改。当然你不想修改完善的话,可以直接烧录编译好的HB汶件
经过这样的判断与测试过程,大家是否自己也能编写相应的程序,来判断是否有物体接近传感器了呢?不过在这次应用中,我并没有让c引脚接高电平,从而判断e引脚的状态。因为这样的话,传感器的e引脚耍接一个下拉电阻。而M8单片机的引脚仅仅能设置上拉电阻。因此,为了简化制作,我通过程序设置传感器的e引脚输出低电平,传感器的c引脚通过M8单片机的PC5上拉。这样,当手靠近传感器时,就会因为手反射回的红外光,而使得c引脚接近低电平。同样,红外遥控器对着它照射也会拉低c引脚。因此,在单片机的程序中,我们不能仅仅通过读取c引脚的电压值是否接近0来判断手是否靠近收纳桶。
程序可以说相当简单,舵机仅仅用了1 0次循环来实现1 0次50Hz(其实舵机可以接收50—333Hz不等的频率)的PWM这两个函数可以控制舵机转到两个极限的角度,起到拉升盖子的作用。-00()这个函数的实际作用效果是打开盖子,而一90()这个函数则是用于关闭盖子。大家可以调整PORTB.1=1话句后面的延时时间参数(延时时间就是高电平的时间),来微调该舵机的两个相对位置。
看这个函数的名字,大家就能想到它的作用了吧?这是读红外传感器的状态函数,当全局变量state=l时,表示没有物体遮挡、盖子关闭。当全局变量state=2时,表示有物体遮挡、盖子打开。PORTC.2控制着传感器发射的状态,当PORTC.2=1时,关闭红外的发射,等于O时开启红外发射。由于我们是要判断手是否靠近传感器,如果简单地判断ADC的数值是否接近O的话,那是不行的,因为在阳光下,ADC的数值就接近O。所以,我们实际要判断的是:物体靠近而引起的变化,即程序中的H-L的差值。
由于开启和关闭传感器需要时间,ADC转换也同样需要时间,这段时间完全有可能因为你看电视时换频道而错误触发(遥控器发射红外光嘛),因此程序采样了20次。如果20次总计100ms左右的时间内,差值一致的话,则判断有人手靠近,否则从头再检测20次。这样就保证了稳定而可靠的感应。
大家可以通过修改H-L的差值,来改变感应的实际距离。当H-L≥6时,感应的距离约为20cm。H-L的差值并非和距离成线性关系,差值在接近1时感皮的距离最远,约30cm左右。但是你也不希望当在30cm时,盖子连续不断地抖动开关吧。所以,在程序中我就设置H-L≤6(≤20cm距离)时就关闭盖子。当H-L≥12(≤15cm距离)时就打开盖子。
制作好的效果图如图7所示,本制作的单片机程序可以从《无线电》杂志网站www.radio.com.cn上下载,使用GVAVR编译,点击工程文件即可直接打开修改。当然你不想修改完善的话,可以直接烧录编译好的HB汶件
在确保发射管正常发射且用手遮挡酌情况下,DF30FC-60DS-0.4V(81)一端接高电平,另一端的平也接近高电平,那么接近高电平的就是e引脚了。除去发射信号,此时已经判断出的e引脚应该就接近低电平了。原理是这样的:当有红外光照射到光电三极管时,c与e之间就会导通,导通电压在0.4V左右。
经过这样的判断与测试过程,大家是否自己也能编写相应的程序,来判断是否有物体接近传感器了呢?不过在这次应用中,我并没有让c引脚接高电平,从而判断e引脚的状态。因为这样的话,传感器的e引脚耍接一个下拉电阻。而M8单片机的引脚仅仅能设置上拉电阻。因此,为了简化制作,我通过程序设置传感器的e引脚输出低电平,传感器的c引脚通过M8单片机的PC5上拉。这样,当手靠近传感器时,就会因为手反射回的红外光,而使得c引脚接近低电平。同样,红外遥控器对着它照射也会拉低c引脚。因此,在单片机的程序中,我们不能仅仅通过读取c引脚的电压值是否接近0来判断手是否靠近收纳桶。
程序可以说相当简单,舵机仅仅用了1 0次循环来实现1 0次50Hz(其实舵机可以接收50—333Hz不等的频率)的PWM这两个函数可以控制舵机转到两个极限的角度,起到拉升盖子的作用。-00()这个函数的实际作用效果是打开盖子,而一90()这个函数则是用于关闭盖子。大家可以调整PORTB.1=1话句后面的延时时间参数(延时时间就是高电平的时间),来微调该舵机的两个相对位置。
看这个函数的名字,大家就能想到它的作用了吧?这是读红外传感器的状态函数,当全局变量state=l时,表示没有物体遮挡、盖子关闭。当全局变量state=2时,表示有物体遮挡、盖子打开。PORTC.2控制着传感器发射的状态,当PORTC.2=1时,关闭红外的发射,等于O时开启红外发射。由于我们是要判断手是否靠近传感器,如果简单地判断ADC的数值是否接近O的话,那是不行的,因为在阳光下,ADC的数值就接近O。所以,我们实际要判断的是:物体靠近而引起的变化,即程序中的H-L的差值。
由于开启和关闭传感器需要时间,ADC转换也同样需要时间,这段时间完全有可能因为你看电视时换频道而错误触发(遥控器发射红外光嘛),因此程序采样了20次。如果20次总计100ms左右的时间内,差值一致的话,则判断有人手靠近,否则从头再检测20次。这样就保证了稳定而可靠的感应。
大家可以通过修改H-L的差值,来改变感应的实际距离。当H-L≥6时,感应的距离约为20cm。H-L的差值并非和距离成线性关系,差值在接近1时感皮的距离最远,约30cm左右。但是你也不希望当在30cm时,盖子连续不断地抖动开关吧。所以,在程序中我就设置H-L≤6(≤20cm距离)时就关闭盖子。当H-L≥12(≤15cm距离)时就打开盖子。
制作好的效果图如图7所示,本制作的单片机程序可以从《无线电》杂志网站www.radio.com.cn上下载,使用GVAVR编译,点击工程文件即可直接打开修改。当然你不想修改完善的话,可以直接烧录编译好的HB汶件
经过这样的判断与测试过程,大家是否自己也能编写相应的程序,来判断是否有物体接近传感器了呢?不过在这次应用中,我并没有让c引脚接高电平,从而判断e引脚的状态。因为这样的话,传感器的e引脚耍接一个下拉电阻。而M8单片机的引脚仅仅能设置上拉电阻。因此,为了简化制作,我通过程序设置传感器的e引脚输出低电平,传感器的c引脚通过M8单片机的PC5上拉。这样,当手靠近传感器时,就会因为手反射回的红外光,而使得c引脚接近低电平。同样,红外遥控器对着它照射也会拉低c引脚。因此,在单片机的程序中,我们不能仅仅通过读取c引脚的电压值是否接近0来判断手是否靠近收纳桶。
程序可以说相当简单,舵机仅仅用了1 0次循环来实现1 0次50Hz(其实舵机可以接收50—333Hz不等的频率)的PWM这两个函数可以控制舵机转到两个极限的角度,起到拉升盖子的作用。-00()这个函数的实际作用效果是打开盖子,而一90()这个函数则是用于关闭盖子。大家可以调整PORTB.1=1话句后面的延时时间参数(延时时间就是高电平的时间),来微调该舵机的两个相对位置。
看这个函数的名字,大家就能想到它的作用了吧?这是读红外传感器的状态函数,当全局变量state=l时,表示没有物体遮挡、盖子关闭。当全局变量state=2时,表示有物体遮挡、盖子打开。PORTC.2控制着传感器发射的状态,当PORTC.2=1时,关闭红外的发射,等于O时开启红外发射。由于我们是要判断手是否靠近传感器,如果简单地判断ADC的数值是否接近O的话,那是不行的,因为在阳光下,ADC的数值就接近O。所以,我们实际要判断的是:物体靠近而引起的变化,即程序中的H-L的差值。
由于开启和关闭传感器需要时间,ADC转换也同样需要时间,这段时间完全有可能因为你看电视时换频道而错误触发(遥控器发射红外光嘛),因此程序采样了20次。如果20次总计100ms左右的时间内,差值一致的话,则判断有人手靠近,否则从头再检测20次。这样就保证了稳定而可靠的感应。
大家可以通过修改H-L的差值,来改变感应的实际距离。当H-L≥6时,感应的距离约为20cm。H-L的差值并非和距离成线性关系,差值在接近1时感皮的距离最远,约30cm左右。但是你也不希望当在30cm时,盖子连续不断地抖动开关吧。所以,在程序中我就设置H-L≤6(≤20cm距离)时就关闭盖子。当H-L≥12(≤15cm距离)时就打开盖子。
制作好的效果图如图7所示,本制作的单片机程序可以从《无线电》杂志网站www.radio.com.cn上下载,使用GVAVR编译,点击工程文件即可直接打开修改。当然你不想修改完善的话,可以直接烧录编译好的HB汶件
上一篇:感应式收纳桶制作的电路原理
上一篇:51单片机控制的骨牌时钟