单片机驱动DM542步进电机(使丝杠做往返运动--速度可调)
最近在做缺陷检测相关项目,需要制作一个小工装台,以实现搭载2D和3D相机左右扫描待检测料片。
实现的功能:丝杠先向右转,到达右限位后,自动回到初始位置。(任意时刻可通过PC串口实现调速)
实验器件:直线电机、DM542驱动器、贴片型stc89c52rc、电源(24V-250W)
DM542驱动器3、7、8端口播下:
接线方式:采用共阳极接线法: PUL+、DIR+接(单片机)5V;PUL-接P11(输出脉冲),DIR-接P12(输出方向);ENA+、-均不接;左限位器接P13,右限位器接P14;
**限位器注意最好选择5v可驱动的!!!可直接用单片机电源驱动!!!(要是只有10v的注意分压不能直接将输出端接在单片机上,理论上会烧毁)
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit PUL=P1^1; //位定义DIR
sbit DIR=P1^2; //位定义ENA
sbit XW1=P1^3; //位定义DIR
sbit XW2=P1^4; //位定义ENAint sia=0;int siaa=0;
void UsartInit()
{SCON=0X50; //设置为工作方式1TMOD=0X20; //设置计数器工作方式2PCON=0X80; //波特率加倍TH1=0XF3; //计数器初始值设置,注意波特率是4800的TL1=0XF3;ES=1; //打开接收中断EA=1; //打开总中断TR1=1; //打开计数器
}
void delay (uint z)//延时函数
{uint x,y;for(x=z;x>0;x--)for(y=7;y>0;y--);
}void main()
{ uint x,y;
UsartInit(); // 串口初始化while(1){if(XW1==0){for(x=50;x>0;x--){for(y=14;y>0;y--){DIR = 0;delay(7);} }for(x=50;x>0;x--){for(y=14;y>0;y--){DIR = 1;delay(7);PUL = 0;delay(7);PUL = 1;delay(7);} }sia=0;siaa=1;}if(XW1==1&&XW2==1&&siaa==1&&sia!=0){DIR = 1;delay(sia);PUL = 0;delay(sia);PUL = 1;delay(sia);}if(XW2==0){for(x=50;x>0;x--){for(y=14;y>0;y--){DIR = 1;delay(7);} }for(x=50;x>0;x--){for(y=14;y>0;y--){DIR = 0;delay(7);PUL = 0;delay(7);PUL = 1;delay(7);} }siaa=2;}if(XW1==1&&XW2==1&&siaa==2&&sia!=0){DIR = 0;delay(sia);PUL = 0;delay(sia);PUL = 1;delay(sia);}}
}
void Usart() interrupt 4
{u8 receiveData;sia=SBUF;//出去接收到的数据RI = 0;//清除接收中断标志位SBUF=sia;//将接收到的数据放入到发送寄存器while(!TI); //等待发送数据完成TI=0; //清除发送完成标志位
}
这里sia代表速度,即脉冲频率;通过串口发送给单片机(可以尝试发1-10,越小最快);
实验效果如下:
单片机驱动DM542步进电机(使丝杠做往返运动--速度可调)相关推荐
- 单片机输出脉冲的C语言简易程序,AVR单片机驱动二相步进电机(单极驱动)简易程序,带串口控制...
AVR单片机驱动二相步进电机(单极驱动)简易程序,带串口控制. 编译器为ICC6.31A; #include"iom16v.h" #include"macros.h&qu ...
- 51单片机控制TB6600驱动器驱动42步进电机
51单片机控制TB6600驱动器驱动42步进电机 第一次 功能实现目标 硬件简介 硬件连接 程序代码 第一次 以前总是看别人写的博客,通过别人的博客解决了我很多问题,从中也学到了各种知识,虽然不是很系 ...
- K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...
- K_A07_001 基于 STM32等单片机驱动A4988模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+A4988模块 1.2. ...
- 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速-萌新入门
** 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速 ** 分享一个萌新入门小工程 一.原件连接: 第一种直接用51开发板 第二种用最小单元加unl2003驱动 二.开发板电路 ...
- 基于51单片机驱动A4988实现步进电机逆时针转动
基于51单片机驱动A4988实现步进电机逆时针转动 一.简介 二.接线 典型接线图 实际接线 三.部分代码 引脚定义 定时器初始化 主函数 四.实验现象 五.注意事项 一.简介 A4988 是一款完全 ...
- K_A07_005 基于 STM32等单片机驱动 DRV8833 模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 步进电机驱动时序 对应程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8833模块 1.2.STM3 ...
- 遥控51单片机控制42步进电机(TB6600驱动)控制方向、速度
遥控51单片机控制步进电机控制方向.速度 控制开发板自带步进电机 遥控控制 控制42步进电机 大二在做srtp时做到了这部分内容,感觉C51控制起来挺简单的,之后有做关于MSP430的魂斗罗游戏和st ...
- K_A07_002 基于 STM32等单片机驱动ULN2003模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 步进电机驱动时序 反向输出 对应程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+ULN2003模块 1.2 ...
最新文章
- Vue 2.5中将迎来有关TypeScript的改进!
- 新概念英语(1-73)The way to King Street
- Atitit.异常机制的设计原理
- 【NLP】自然语言处理技术在自动生成足球比赛战报上的应用
- python画图-python绘图入门(完整版)
- hihocoder题目选讲
- 今晚与小妹亚美合作了一把qq游戏,大获全胜!
- 纸浆暴力反弹——复制去年走势,铁矿石认购2-4倍,双硅价差再度翘尾?2022.6.28
- 基于Django框架的视频播放器设计
- Windows10 安装spyder3
- 【更新】关于VMware虚拟机无法正常获取IP地址问题的解决方法及思路
- 笔记本电脑显示以太网未连接_如何向笔记本电脑添加以太网连接
- Inno setup 常用修改技巧
- P1075 [NOIP2012 普及组] 质因数分解
- 【数据处理】超好用的Excel数据拆分工具
- 浅谈Spark Livy
- 你要的开源报修系统V2版本已发布,请及时更新最新源码。
- Tips:一个字符占几个字节?
- PID算法详细解析——基于单片机
- 安卓系统模拟按键 [键值]
热门文章
- 华为快应用-在其他平台审核出现的白屏问题
- 【软考系统架构设计师】计算机组成原理与体系结构章节习题集
- 数据sqlite 矢量切片_矢量切片(Vector tile)
- C++解析3d模型文件jt
- Unity中OnTriggerEnter2D 和OnCollisionEnter2D 的使用情形及容易掉的坑
- Hive项目之谷粒影音:ETL清洗原数据、Hive统计视频观看数top10、视频类别top、视频观看数top其所属类别、类别流量top、类别热度top、上传视频用户数量top、类别视频观看top
- 2023财年Q4业绩继续下滑,ChatGPT能驱动英伟达重回巅峰吗?
- labview控制 西门子S7-1200 1214 dcdcdcplc 程序
- aix java安装_AIX系统中安装Java6全过程
- java 调用matlab函数_java中调用Matlab的函数+注意事项