测速码盘怎么接单片机(测速码盘怎么用)
作者:研茂套袋机
2023-04-29
本文目录一览:
我想用红外对管接收测速码盘信号,让车轮转过固定的角度,你能给点指导吗?
你用的什么单片机控制的 不过原理一样 差的就是精度 51的话精度别要求太高 我去年用STM32做过334线码盘的电机 做到可以控制任意角度 大致思路就是捕获码盘的转动格数 一般电机有减速箱 实际测一下 看转一圈码盘装多少格 让后就是在单片机里输入你需要转动的格数 把对管的信号输出线 接到单片机捕获(计数)IO上 每一个下降沿加一个数 加到你设置的数停止 或执行别的模式

测速码盘怎么用
编码器一般与轴相联,编码器的脉冲量是固定的,在轴旋转的时候,编码器就会输出脉冲,PLC或计数器收到脉冲,根据轴转的速度不同时,在单位时间内收到的脉冲总量是不一样的,速度就表现在这里了,根据脉冲量与实际转的长度就可以算了真实的速度米/分钟
工作原理:由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。
由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。
求基于51单片机光码盘测转速程序
你好!
那就用一个普通的IO口来实现,但是响应速度会受到影响
89c52 单片机测速程序 光电码盘
这个说白了就是测量脉冲的个数,也就是理想方波的频率。
给你一个测频率的程序,仅供参考
#includereg51.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
float f=0;
uchar LED0_data,LED1_data,LED2_data,LED3_data;
uchar i=0;
uchar code Segcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void display();
void delay(uint v);
void initime();
/*定时器初始化*/
void initime()
{
TMOD=0x51; //T1计数器,T0定时器,方式1
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TL1=0;
TH1=0;
ET0=1;
EA=1;
}
/*延时子函数*/
void delay(unsigned int c)
{
unsigned int i,j;
for(i=0;ic;i++)
for(j=0;j100;j++);
}
/*将十进制数拆成送数码管的显示码*/
void dectobit(int dec)
{
LED3_data=dec/1000;
dec=dec % 1000;
LED2_data=dec/100;
dec=dec % 100;
LED1_data=dec/10;
dec=dec % 10;
LED0_data=dec;
}
/*显示程序*/
void display()
{
P0=Segcode[LED3_data]; //个位
P2=~0x01;
delay(10);
P2|=0x01;
P0=Segcode[LED2_data]; //十位
P2=~0x02;
delay(10);
P2|=0x02;
P0=Segcode[LED1_data];
P2=~0x04;
delay(10);
P2|=0x04; //百位
P0=Segcode[LED0_data]; //千位
P2=~0x08;
delay(10);
P2|=0x08;
}
void main(void)
{
initime();
TR0=1;
TR1=1;
while(1)
{
dectobit(f);
display();
}
}
timer()interrupt 1 using 2
{
i=i+1;
if(i==100)
{ i=0;
f=TH1*256+TL1;
TL1=0;
TH1=0;
}
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
}
测速码盘怎么接单片机的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于测速码盘怎么用、测速码盘怎么接单片机的信息别忘了在本站进行查找喔。
