基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统

基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统,第1张

基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统

基于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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5710924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存