目录
【测速模块】
模块资料
我使用的是窄体的槽型光耦测速模块,如下图所示:
接线
1、VCC接电源正极3.3V-5V
2、GND接电源负极
3、D0(TTL开关信号输出)接单片机外部中断
4、A0无效
使用说明
1、模块槽中无遮挡时,接收管导通,模块DO输出低电平,遮挡时,DO输出高电平;
2、DO输出接口可以与单片机10口直接相连,检测传感器是否有遮档,如用电机码盘则可检测电机的转速。
3、模块DO可与继电器相连,组成限位开关等功能,也可以与有源蜂鸣器模块相连,组成报警器。
【单片机程序】
我使用的是传统的89C51单片机,外部晶振为11.0592M。以下程序仅提供思路,省去无关的定义内容等等,仅供参考。
/*定时器0中断号1*/
void Time0() interrupt 1
{
TH0 = 0xDC; //11.0592M晶振下装入10ms初值
TL0 = 0x00;
time++;
if(time == 100)
{
Wheel_Speed = ( Angular_N / 20 ) * 2 * 3.5 * 3.14 ; //获取1s内中断计数的值num,并进行数值处理 (中断数值/20*直径*3.14为1s内移动距离)
time = 0;
Angular_N = 0;
}
}
/*外部中断0初始化*/
void Int0Init()
{
IT0 = 1; //跳变沿出发方式(下降沿)
EX0 = 1; //打开INT0的中断允许
EA = 1; //打开总中断
}
/*外部中断0的中断函数*/
void Int0() interrupt 0
{
Angular_N++;
}