步进电机驱动程序实例

上传人:mg****85 文档编号:44548455 上传时间:2018-06-14 格式:PDF 页数:3 大小:38.36KB
返回 下载 相关 举报
步进电机驱动程序实例_第1页
第1页 / 共3页
步进电机驱动程序实例_第2页
第2页 / 共3页
步进电机驱动程序实例_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《步进电机驱动程序实例》由会员分享,可在线阅读,更多相关《步进电机驱动程序实例(3页珍藏版)》请在金锄头文库上搜索。

1、#include static unsigned int count; /计数计数计数计数 static int step_index; /步进索引数步进索引数步进索引数步进索引数,值为值为值为值为 07 static bit turn; /步进电机转动方向步进电机转动方向步进电机转动方向步进电机转动方向 static bit stop_flag; /步进电机停止标志步进电机停止标志步进电机停止标志步进电机停止标志 static int speedlevel; /步进电机转速参数步进电机转速参数步进电机转速参数步进电机转速参数,数值越大速度越慢数值越大速度越慢数值越大速度越慢数值越大速度越慢,

2、最小值为最小值为最小值为最小值为 1,速度最快速度最快速度最快速度最快 static int spcount; /步进电机转速参数计数步进电机转速参数计数步进电机转速参数计数步进电机转速参数计数 void delay(unsigned int endcount); /延时函数延时函数延时函数延时函数,延时为延时为延时为延时为 endcount*0.5 毫秒毫秒毫秒毫秒 void gorun(); /步进电机控制步进函数步进电机控制步进函数步进电机控制步进函数步进电机控制步进函数 void main(void) count = 0; step_index = 0; spcount = 0; st

3、op_flag = 0; P2_4 = 0; P2_5= 0; P2_6 = 0; P2_7 = 0; EA = 1; /允许允许允许允许 CPU 中断中断中断中断 TMOD = 0x11; /设定时器设定时器设定时器设定时器 0 和和和和 1 为为为为 16 位模式位模式位模式位模式 1 ET0 = 1; /定时器定时器定时器定时器 0 中断允许中断允许中断允许中断允许 TH0 = 0xFE; TL0 = 0x0C; /设定时每隔设定时每隔设定时每隔设定时每隔 0.5ms 中断一次中断一次中断一次中断一次 TR0 = 1; /开始计数开始计数开始计数开始计数 turn = 0; speedl

4、evel = 2; /先以低速启动先以低速启动先以低速启动先以低速启动 delay(10000); speedlevel = 1; /再回到正常速度再回到正常速度再回到正常速度再回到正常速度。(根据步进电机特点根据步进电机特点根据步进电机特点根据步进电机特点) do speedlevel = 2; /主程序测试循环主程序测试循环主程序测试循环主程序测试循环:先低速启动先低速启动先低速启动先低速启动-常速常速常速常速-停止停止停止停止 delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=

5、0; while(1); /定时器定时器定时器定时器 0 中断处理中断处理中断处理中断处理 void timeint(void) interrupt 1 TH0=0xFE; TL0=0x0C; /设定时每隔设定时每隔设定时每隔设定时每隔 0.5ms 中断一次中断一次中断一次中断一次 count+; spcount-; if(spcount7) step_index=0; else step_index-;/反转时序反转时序反转时序反转时序 if (step_index0) step_index=7; 步进电机从静止到高速转动需要一个加速的过程步进电机从静止到高速转动需要一个加速的过程步进电机从

6、静止到高速转动需要一个加速的过程步进电机从静止到高速转动需要一个加速的过程,否则电机很容易被否则电机很容易被否则电机很容易被否则电机很容易被“卡住卡住卡住卡住” ,代码一代码一代码一代码一、 二实现加速不是很方便二实现加速不是很方便二实现加速不是很方便二实现加速不是很方便,而在代码三中而在代码三中而在代码三中而在代码三中,加速则很容易了加速则很容易了加速则很容易了加速则很容易了。在此代码中在此代码中在此代码中在此代码中,当转速参数当转速参数当转速参数当转速参数 speedlevel 为为为为 2 时时时时,可以算出可以算出可以算出可以算出,此时步进电机的转速为此时步进电机的转速为此时步进电机的

7、转速为此时步进电机的转速为 1500RPM,而当转速参数而当转速参数而当转速参数而当转速参数 speedlevel 1 时时时时,转速为转速为转速为转速为 3000RPM。当步进电机停止当步进电机停止当步进电机停止当步进电机停止,如果直接将如果直接将如果直接将如果直接将 speedlevel 设为设为设为设为 1,此时步进电机此时步进电机此时步进电机此时步进电机 将被将被将被将被“卡住卡住卡住卡住” ,而如果先把而如果先把而如果先把而如果先把 speedlevel 设为设为设为设为 2,让电机以让电机以让电机以让电机以 1500RPM 的转速转起来的转速转起来的转速转起来的转速转起来,几秒种几

8、秒种几秒种几秒种 后后后后,再把再把再把再把 speedlevel 设为设为设为设为 1,此时电机就能以此时电机就能以此时电机就能以此时电机就能以 3000RPM 的转速高速转动的转速高速转动的转速高速转动的转速高速转动,这就是这就是这就是这就是“加速加速加速加速” 的效果的效果的效果的效果。 在此电路中在此电路中在此电路中在此电路中,考虑到电流的缘故考虑到电流的缘故考虑到电流的缘故考虑到电流的缘故, NPN 三极管三极管三极管三极管用的用的用的用的是是是是 S8050,它的电流最大可达它的电流最大可达它的电流最大可达它的电流最大可达 1500mA,而在实际运转中而在实际运转中而在实际运转中而

9、在实际运转中,用万用表测了一下用万用表测了一下用万用表测了一下用万用表测了一下,当转速为当转速为当转速为当转速为 1500RPM 时时时时,步进电机的电流步进电机的电流步进电机的电流步进电机的电流 只有只有只有只有 90mA 左右左右左右左右,电机发热量较小电机发热量较小电机发热量较小电机发热量较小,当转速为当转速为当转速为当转速为 60RPM 时时时时,步进电机的电流为步进电机的电流为步进电机的电流为步进电机的电流为 200mA 左右左右左右左右, 电机发热量较大电机发热量较大电机发热量较大电机发热量较大,所以所以所以所以 NPN 三极管也可以选用三极管也可以选用三极管也可以选用三极管也可以选用 9013,对于电机发热量大的问题对于电机发热量大的问题对于电机发热量大的问题对于电机发热量大的问题,可加一个可加一个可加一个可加一个 10 欧到欧到欧到欧到 20 欧的限流电阻欧的限流电阻欧的限流电阻欧的限流电阻,不过这样步进电机的功率将会变小不过这样步进电机的功率将会变小不过这样步进电机的功率将会变小不过这样步进电机的功率将会变小。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号