基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统
所用步进电机导轨为两相六线的42电机(实际上为两相四线 两个com端未接)
驱动器选择了以3086A-MFP10S为芯片的模块
增加记忆回归功能 并且定义了导轨长度 使其运动时不超过限度 k1左滑 k2右划 k3回归中心点 k4重新校准中心点
视频效果如下:
基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统
如需调整速度则可以通过更改延时的方式来进行 此为毫秒级最快的速度
资源:
https://download.csdn.net/download/weixin_53403301/77567631
代码:
#include#define uchar unsigned char #define uint unsigned int uchar DJ[]={0x05,0x07,0x06,0x04}; //定义步进电机字模 int DJ_i=0; //定义步进电机取值参数 int DJ_flag=0; //定义步进电机导轨左右偏移量 int DJ_size=350; //定义步进电机导轨大小 sbit KEY1=P3^1; //定义K1 sbit KEY2=P3^0; //定义K2 void delay(unsigned int time) //延时 ms { unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); } void zz(void) //正转 { delay(2); P0=DJ[DJ_i]; DJ_i++; if(DJ_i==4){DJ_i=0;} } void fz(void) //反转 { delay(2); P0=DJ[DJ_i]; DJ_i--; if(DJ_i==-1){DJ_i=3;} } void main(void) { EA=1; EX0=1; IT0=1; EX1=1; IT1=1; while(1) { P0=0x00; while(!KEY1) { if(DJ_flag -DJ_size){fz();DJ_flag--;} else{DJ_flag=-DJ_size;} } } } void exter0()interrupt 0 //外部中断0 复位 { if(DJ_flag>0) { while(DJ_flag--){fz();} } if(DJ_flag<0) { while(DJ_flag++){zz();} } else { DJ_flag=0; } } void exter1()interrupt 2 //外部中断1 校准 { DJ_flag=0; }
驱动电路和步进电机导轨都是同一个买家买的 如果会写单片机 可以买他家的独立驱动板 另外他家也有带单片机的控制板
驱动器链接:https://item.taobao.com/item.htm?spm=a21bo.2017.1997525049.9.5af911d9SHxll6&id=13122246267
步进电机/导轨:https://item.taobao.com/item.htm?spm=2013.1.1997525049.6.c0af2676UvcVCG&id=593133358835
滑台参数:
有效行程:150mm、200mm、250mm、300mm 可选。
滑台总长:(有效行程+75mm)42mm40mm (长宽高 不含电机)。
驱动电压:5-12V / 500mA-2A。
电机尺寸:424225mm。
步 距 角:1.8° 。(电机转一圈需要200个脉冲(360/1.8))
驱动器时序要求:
参考:
https://blog.csdn.net/qq_45539458/article/details/111403209
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)