完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
Proteus实现编码器电机转速及方向检测
原理图 代码 原理图 控制编码电机采用的是最简单的开关控制正反电压的输入,滑动变阻器控制电机转速,也可以采用数字IC去控制电机转速以及方向,如L298N电机驱动芯片。 代码 /* 名称:直流电机测速 说明:数码管显示的正反转状态与转速值应与motor encode器件上显示的值基本一致; 测量误差 ≤1RPM 。*/#include《reg51.h》#include《intrins.h》 ***it duan = P2^0;***it wei = P2^1;***it 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; }//************************************// |
|
|
|
只有小组成员才能发言,加入小组>>
660浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 16:26 , Processed in 0.572873 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号