发 帖  
原厂入驻New
[问答]

请问怎样用Proteus去实现编码器电机转速及方向检测?

57 proteus 编码器 电机
分享
怎样用proteus去实现编码器电机转速及方向检测?如何去编写Proteus实现编码器电机转速及方向检测的代码?
0
2021-6-30 07:20:21   评论 分享淘帖 邀请回答
1个回答
Proteus实现编码器电机转速及方向检测
原理图
代码
原理图
控制编码电机采用的是最简单的开关控制正反电压的输入,滑动变阻器控制电机转速,也可以采用数字IC去控制电机转速以及方向,如L298N电机驱动芯片。

代码
/* 名称:直流电机测速 说明:数码管显示的正反转状态与转速值应与motor encode器件上显示的值基本一致; 测量误差 ≤1RPM 。*/#include《reg51.h》#include《intrins.h》 sbit duan = P2^0;sbit wei = P2^1;sbit flag = P3^0; //正反转标志位unsigned char code mtable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};unsigned char code LED_W[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsigned char data mnumber[]={0,0,0,0,0,0}; //显示的符号与速度 unsigned int data mcount=0; //脉冲数unsigned int data mtime=0; float cspeed=0; //当前速度 float prespeed=0; void display(float mspeed);void main(){//**********设置定时器T0工作方式和定时时间**********// TMOD =0X01; // TH0 =0X3C; TL0 =0XB0; //**************************************************// ET0=1; //允许T0产生中断 IT0=1; //外部中断0(P3.2)为边沿触发 EX0=1; //允许外部中断0产生中断 TR0=1; //启动T0 EX0=1; //允许外部中断0产生中断 EA=1; //开总中断 while(1) { display(cspeed); } }void display(float mspeed){ unsigned int temp_speed; unsigned char i,j=30,mindex; if ((mspeed》prespeed)||(mspeed《prespeed)) { prespeed=mspeed; mspeed=mspeed*10; temp_speed=mspeed; mnumber[1]=temp_speed/10000; mnumber[2]=(temp_speed%10000)/1000; mnumber[3]=(temp_speed%1000)/100; mnumber[4]=(temp_speed%100)/10; mnumber[5]=temp_speed%10; } for(i=0;i《6;i++){ P0=0; duan=1; duan=0; P0=LED_W; wei=1; wei=0; if(i》0) { mindex=mnumber; P0=mtable[mindex]; //显示数字 if(i==4) P0=mtable[mindex]+0x80; //显示小数点 } else { //**********电机正反转的判断与显示**********// if(flag==1) //反转- { P0=0x40; } else P0=0x00; //正转0 //******************************************// } duan=1; duan=0; while(j--); } } //**********外部中断计脉冲数**********//void int_0() interrupt 0{ mcount++; }//************************************////**********脉冲采样周期定时**********//void timer0() interrupt 1{ ET0=0; mtime++; if(mtime==20) //定时时间 { cspeed =(60*mcount)/(24*0.05*mtime); //根据采样周期内产生的脉冲数,计算转速 mcount=0; //cspeed是采用编码器转速公式得出 mtime=0; } TH0=0X3C ; TL0=0xB0 ; //重装初值 ET0=1; }//************************************//
2021-6-30 14:07:31 评论

举报

只有小组成员才能发言,加入小组>>

11个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表