欢迎来到天天文库
浏览记录
ID:15827035
大小:277.00 KB
页数:37页
时间:2018-08-05
《步进电机转速控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、步进电机转速控制求助!小弟学步进电机,哪位大虾可以发给我一个步进电机转速控制的程序,最好有注解的,C语言的更好,定时器控制的要!/**********************************************************步进电机正转(转n*30度)**********************************************************/voidmotor_ffw(unsignedinttime){ unsignedinti,j; ms30_count=time
2、; TR1=1; for(j=0;j<12;j++) //转n*30度 { for(i=0;i<8;i++) //一个周期转30度 { if(ms30_count<=0) { P3=Ffw_Change;//取数据 ms30_count=time; TR1=0; } elseP3=Ffw_Change; //delayms(time);//调节转速 } }//P3=0xf0;//使步进电机掉电}/******************************************
3、****************步进电机反转(转n*30度)**********************************************************/voidmotor_rev(unsignedinttime){ unsignedinti,j; ms30_count=time; TR1=1; for(j=0;j<12;j++) //转n*30度 { for(i=0;i<8;i++) //一个周期转30度 { if(ms30_count<=0) { P3=Rev_Ch
4、ange;//取数据 ms30_count=time; TR1=0; } elseP3=Ffw_Change; //delayms(time);//调节转速 } }//P3=0xf0;//使步进电机掉电}voidMotor_Control(){ ad_display(); if(receivebuf[0]>receivebuf[1]) { if(sub<1)motor_rev(10);elseif((sub>=1)&&(sub<=3))motor_rev(5);elseif((sub>3)&
5、&(sub<=5))motor_rev(1); } elseif(receivebuf[0]=1)&&(sub<=3))motor_ffw(5);elseif((sub>3)&&(sub<=5))motor_ffw(1); } elseP3=0xf0;}/*********************************************定时中断服务程序*********************
6、*************************/voidtimer1_int(void)interrupt3{ TH1=0xdc; TL1=0x00; ms10_count++; ms30_count--;}其中sub=abs(receivebuf[0]-receivebuf[1]);ad_display函数得出AD两个通道receivebuf[0]和receivebuf[1]的值,根据这两个值的差去控制步进电机转速。用定时器1控制转速,可是电压值在LCD上显示是有差的,但步进电机就是不转!这是为啥呢?U
7、ID129693 帖子3 精华0 积分0 阅读权限10 在线时间1小时 注册时间2010-11-27 最后登录2011-3-18 查看详细资料TOP8051管理员版主·个人空间·发短消息·加为好友2#大中小发表于2011-3-210:22 只看该作者;/********************************************************************************;* 标题: xl系列单片机实验仪演示程序LCD1602显示步进电机控制器速度方向圈数可调*;* 文件
8、: lcd1602dj.asm *;* 日期: 2006-1-5 ·当前离线 *;* 版本: 3.0(试验通过版)可用xl600-xl1000单片机综合试验仪试验 *;*
此文档下载收益归作者所有