#include <INTRINS.H>
#define FOSC 11.0592
unsigned int speed
unsigned char key
unsigned char led_table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6}
long speed_count,speed_count1
unsigned char speed_check
unsigned int second_flag
unsigned char speed_table[4]
unsigned char speed_table1[10]
//定时器频率1000Hz
void timer1_init(void)
{
EA=0
TMOD=0x10
//TH1=1000*FOSC/12/256
//TL1=(unsigned int)(1000*FOSC/12)%256
TH1=254
TL1=51
TR1=1
TCON|=0X04 //外部中断下降触发
EX1=1 //允许外部中断
ET1=1
EA=1
}
void int1_routine(void) interrupt 2
{
speed_count++
P1^=0X02
}
void timer1_routine(void) interrupt 3
//void timer1_routine(void)
{
TH1=254
//TH1=0xf0
TL1=51
//speed_count++
second_flag++
}
void main(void)
{
unsigned int i,j,k
// unsigned char sum
unsigned speed_table[3]
long time_id
timer1_init()
speed=0
P2=0x0f
P0=0xf0
P3=0x08
key=0
P1=0x00
speed_check=0
while(1)
{
//P1^=0XFE
j=1
//speed=1234
speed_table[0]=speed/1000
speed_table[1]=speed%1000/100
speed_table[2]=speed%100/10
speed_table[3]=speed%10
for(i=0i<4i++)
{
P2=j^0xff
j<<=1
P0=(led_table[speed_table[i]])&0xfe
for(k=0k<250k++)
}
//speed=speed_count
if(second_flag>=1000) /*中断1000次进入 */
{
second_flag=0
time_id++
speed_table1[time_id%10]=speed_count/*外部中断量转存(是很聪明的方法学习了)*/
speed_count=0
speed=(speed_table1[0]+speed_table1[1]+speed_table1[2]+speed_table1[3]+speed_table1[4]+speed_table1[5]+speed_table1[6]+speed_table1[7]+speed_table1[8]+speed_table1[9])*6/*(10X6)10秒的外部中断量乘以6就是转速了*/
//speed=speed/2+(speed_table[0]+speed_table[1]+speed_table[2])*6
}
}
}
1、在转动轴上贴反射纸,手持转速q,直接读数。2、安装转速探头,通过信号转换变成数字信号,在DCS上读出。
3、看电机转速,如果是直联,基本就是电机转速。
离心式转速仪,是机械力学的成果; 磁性式转速仪,是运用磁力和机械力的一个典范; 电动式转速仪,巧妙运用微型发电机和微型电动机将旋转运动异地拷贝; 磁电式转速仪,电流表头和传感器都是电磁学的普及运用; 闪光式转速仪,人类认识自然的同时也认识了自我,体现了人类的灵性。
编写方式如下:要是用的是测速电机的话,得用电压变换模块通过AD模块输入PLC,得测一下实际转速和测速电机的电压对应关系,然后根据测量的电压计算出电机转速。如用编码器,根据编码器一转的脉冲数,单位时间内(如1秒做为一个测量周期)测量所得的脉冲数计算出实际每分钟的转速。再用比较指令判定输出即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)