基于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 <reg52.h>
#define uchar unsigned char
#define uint unsigned intuchar DJ[]={0x03,0x07,0x06,0x02};       //定义步进电机字模
int DJ_i=0;     //定义步进电机取值参数
int DJ_flag=0;      //定义步进电机导轨左右偏移量
int DJ_size=350;        //定义步进电机导轨大小sbit KEY1=P3^0;     //定义K1
sbit KEY2=P3^1;        //定义K2
sbit KEY3=P3^2;        //定义K1
sbit KEY4=P3^3;        //定义K2void delay(unsigned int time)       //延时
{unsigned int j=0;for(;time>0;time--)for(j=0;j<250;j++);
}void delay_ms(unsigned int time)     //延时 ms
{unsigned int j=0;for(;time>0;time--)for(j=0;j<125;j++);
}void zz(void)       //正转
{delay(1);P0=DJ[DJ_i];DJ_i++;if(DJ_i==4){DJ_i=0;}
}void fz(void)       //反转
{delay(1);P0=DJ[DJ_i];DJ_i--;if(DJ_i==-1){DJ_i=3;}
}void start_zz(void)
{int i=100;while(i--){delay(2);P0=DJ[DJ_i];DJ_i++;if(DJ_i==4){DJ_i=0;}}
}void start_fz(void)
{int i=200;while(i--){delay(2);P0=DJ[DJ_i];DJ_i--;if(DJ_i==-1){DJ_i=3;}}
}void start(void)
{start_zz();start_fz();start_zz();
}
void main(void)
{P0=0x00;while(!KEY1 || !KEY2 || !KEY3 || !KEY4){P0=0x00;}start();EA=1;EX0=1;IT0=1;EX1=1;IT1=1;while(1){P0=0x00;if (!KEY1 && !KEY2){while(!KEY1 && !KEY2){start();}delay_ms(500);}while(!KEY1 && KEY2){if(DJ_flag<DJ_size){zz();DJ_flag++;}else{DJ_flag=DJ_size;}}while(!KEY2 && KEY1){if(DJ_flag>-DJ_size){fz();DJ_flag--;}else{DJ_flag=-DJ_size;}}}
}void exter0()interrupt 0 //外部中断0  复位
{while(!KEY1 || !KEY2 || !KEY3 || !KEY4){P0=0x00;}if(DJ_flag>0){while(DJ_flag--){fz();}DJ_flag=0;}if(DJ_flag<0){while(DJ_flag++){zz();}DJ_flag=0;}else{DJ_flag=0;}
}void exter1()interrupt 2 //外部中断1  校准
{while(!KEY1 || !KEY2 || !KEY3 || !KEY4){P0=0x00;}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

【优秀课设】基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统相关推荐

  1. 单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两种波形)

    单片机课设-波形发生器 前言 一.课设任务是什么? 二.如何解决这几个任务? 三.仿真原理图 四.代码 4.1 LCD1602代码 4.2 波形输出以及8*8点阵显示代码 4.3 波形选择 五.仿真源 ...

  2. 【优秀课设】51单片机LCD1602显示的温度控制系统设计 包括时间显示 校时、设置最值温度报警功能

    1.将DS18B20温度传感器的温度读出来,并在LCD1602上显示出来. 2.在LCD上分别切换显示,软件设计时钟(时.分.秒),和当前温度值,和温度上下控制值.并可以通过按键进行修改设置,温度高于 ...

  3. 基于C51单片机+DS18B20温度传感器+LCD1602显示器的智能水温控制系统(PID)

    基于AT89C52的温度控制系统 一.DS18B20传感器相关介绍 DS18B20特性 封装形式与引脚说明 供电方式(外部电源供电.寄生电源供电.寄生电源强上拉) DS18B20指令(ROM指令操作) ...

  4. 【C51开发应用】基于C51单片机开发的循迹灭火机器人

    基于C51单片机开发的循迹灭火机器人 一.作品摘要 二.系统设计步骤 三.方案设计 3.1   小车主体设计 3.1.1   购买玩具小车进行改装 3.1.2   自己设计小车主体结构 3.2   电 ...

  5. 基于C51单片机的DA方波可控制发生器

    基于C51单片机的DA方波可控制发生器 文章目录 前言 一.DA转换器 1.DA简介 2.常用DA电路图 二.程序工作流程图 三.C51代码 1.初始化 2.自定义函数 2.主函数 总结 前言 在生活 ...

  6. 【C51】基于C51单片机的定时闹钟(含代码,电路,拿走即可用)

    基于C51单片机的定时闹钟 上电后设置定时时间,按键1选择设置的是小时分钟还是秒钟 按键2对其进行具体的数字设置 一次选择完成之后就默认进入计时模式 达到计时时间后响铃 按键3可以关闭响铃 代码 #i ...

  7. 基于c51单片机的毕业设计——智能温度控制

    本设计采用AT89C51单片机为控制芯片,硬件上用dsb18202做温度采集(有需要也可以采用dht11温湿度模块)直流电机作为降温风扇,用户可通过按键来控制转速的大小,用继电器来控制电阻丝提高温度. ...

  8. 74hc164驱动数码管c语言程序,基于51单片机的74HC164驱动数码管显示程序与仿真

    基于51单片机的74HC164驱动数码管显示程序与仿真 基于51单片机的74HC164驱动一位数码管显示程序与仿真 #include #include #define uchar unsigned c ...

  9. 基于51单片机的OLED驱动方式(iic通讯方式)

    基于51单片机的OLED驱动方式(iic通讯方式) 前言: 本人从事硬件开发,自学软件,因为发现在学习过程中,有很多问题对于没有项目实战经验的新手来讲太难解决了,可以说基本上是无从下手.现将自己学习过 ...

最新文章

  1. 今天什么日子啊,这么倒霉。。。
  2. ESP系列AT指令开发笔记
  3. [BZOJ3206][Apio2013]道路费用
  4. 华为fussioncompute上添加nexentastor作为IPSAN
  5. [译] Fiber内幕:深入概述React新的协调算法
  6. linux系统加硬盘容量,Linux系统扩展硬盘空间
  7. matlab多变量优化,matlab - Matlab使用fminsearch优化多变量 - 堆栈内存溢出
  8. 利用Python绘制中国新型冠状病毒疫情图(国家和省)
  9. java阻塞队列作用_简单理解阻塞队列(BlockingQueue)中的take/put方法以及Condition存在的作用...
  10. java dumpstack_Java获取执行进程的dump文件及获取Java stack
  11. 嵌入式成长轨迹25 【Linux应用编程强化】【Linux下的C编程 下】【实例:客户端/服务器端程序】...
  12. Genymotion下载及安装(安卓虚拟机)
  13. python真的是吹过了-python是否被过度吹捧?
  14. nuget包循环引用问题
  15. asp.net状态服务文章阅读
  16. 矩阵论知识整理(未完成,同步更新)
  17. 物联网开发 无线433MHz安防报警系统 上
  18. Python numpy.ones_like函数方法的使用
  19. β-VAE:学习具有约束框架的基本视觉概念--附件
  20. SPT20 协议_【推荐】协议离婚协议书范文7篇

热门文章

  1. 【读书笔记】《再造卓越》吉姆•柯林斯
  2. POJ1417 True Liars ——种类并查集+01背包+路径** 好题
  3. fgetc/fputc 和 fgets/fputs 的详细用法
  4. 学习笔记19--自动驾驶智能化指标评测体系(下)
  5. 手机App的服务器的开发流程
  6. CSS---复合选择器
  7. 两个List集合取交集
  8. day 16: 二叉树 补卡!
  9. oracle 累除,怎么对每一行进行累乘和累除
  10. VS2017安装成功后,无MFC选项解决办法