标题:
雷赛55步进电机驱动器stm32单片机控制源程序
[打印本页]
作者:
tu_12
时间:
2018-5-3 22:48
标题:
雷赛55步进电机驱动器stm32单片机控制源程序
12864显示坐标,按键输入坐标电机移动xmm,精度误差在1mm以内,原创程序
0.jpg
(11.55 KB, 下载次数: 82)
下载附件
2018-5-4 01:41 上传
stm32单片机源程序如下:
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "smotor.h"
#include "keyb.h"
#include "beep.h"
#include "12864.h"
#include "keym.h"
#include "stmflash.h"
//int datatemp[3]={0};
int main(void)
{
// u8 exit=0;
// int obuf[3]={1,0};
delay_init(); //延时初始化
LED_Init(); //初始化灯
BEEP_Init(); //蜂鸣器初始化
Init_key(); //初始化矩阵键盘
Init_Motor(); //初始化步进驱动器口
LCD_Init_12864(); //液晶初始化
while(1)
{
// STMFLASH_Write(FLASHADDR,(u16*)obuf,3);
// STMFLASH_Read(FLASHADDR,(u16*)datatemp,3);
keyscan(); //获取键值输入步数
dis_step(); //显示设置的向下转步数
read_flash();
SET_XYZ(xm,ym,zm,XMSPEED);
}
}
复制代码
#include "smotor.h"
#include "delay.h"
#include "12864.h"
#include "keym.h"
#define jiasu_time 10 //加速次数 即加速区段距离
#define sudu_beilv 3 //加速倍率
int m_x=0,m_y=0,m_z=0; //初始坐标
/****初始化PE0-8口作为驱动器DIR/PUL/EN口****/
void Init_Motor(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能PD端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4| \
GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOD, &GPIO_InitStructure); //根据设定参数初始化GPIO
}
void SET_XYZ(int x,int y,int z,u16 Speed)
{
int tmp,j;
unsigned char M_speed,jiasu_step;
u8 runfast;
jiasu_step=Speed/(jiasu_time*sudu_beilv);//10mm,速度加一倍
if(jiasu_step<1)jiasu_step=1;
if(x!=m_x)
{
if(x>m_x) { DIRX1; tmp=x-m_x;}
else { DIRX0; tmp=m_x-x;}
//--加速标志-------------------------------------------------
if(tmp>11) runfast=1;else runfast=0; //大于20mm 启动加速功能
M_speed=Speed;
for(;tmp>0;tmp--)
{
for(j=0;j<200/3;j++) //1毫米
{
// if(x<m_x)
// {m_x=0;break;}
PULX1;delay_us(M_speed*100);
PULX0;delay_us(M_speed*100);
}
if(runfast)
{
if(tmp<10) //减速区长度
M_speed+=jiasu_step; //减速
else
{
if(M_speed>Speed/sudu_beilv) //速度最高限 us=900
M_speed-=jiasu_step; //加速
}
}
}
m_x=x;
}
if(y!=m_y)
{
if(y>m_y) { DIRY1; tmp=y-m_y;}
else { DIRY0; tmp=m_y-y;}
//--加速标志-------------------------------------------------
if(tmp>11) runfast=1;else runfast=0; //大于20mm 启动加速功能
M_speed=Speed;
for(;tmp>0;tmp--)
{
for(j=0;j<200/3;j++)
{
// if(y<m_y)
// {m_y=0;break;} // Y_EN = 0;
PULY1;delay_us(M_speed*100);
PULY0;delay_us(M_speed*100);
}
if(runfast)
{
if(tmp<10) //减速区长度
M_speed+=jiasu_step; //减速
else
{
if(M_speed>Speed/sudu_beilv) //速度最高限
M_speed-=jiasu_step; //加速
}
}
}
m_y=y;
}
if(z!=m_z)
{
if(z>m_z) { DIRZ1; tmp=z-m_z;}
else { DIRZ0; tmp=m_z-z;}
//--加速标志-------------------------------------------------
if(tmp>11) runfast=1;else runfast=0; //大于20mm 启动加速功能
M_speed=Speed;
for(;tmp>0;tmp--)
{
for(j=0;j<200/3;j++)
{
// if(z<m_z)
// {m_z=0;break;}
PULZ1;delay_us(M_speed*100);
PULZ0;delay_us(M_speed*100);
}
if(runfast)
{
if(tmp<10) //减速区长度
M_speed+=jiasu_step; //减速
else
{
if(M_speed>Speed/sudu_beilv) //速度最高限
M_speed-=jiasu_step; //加速
}
}
}
m_z=z;
}
// if(k!=m_k)
// {
// K_EN = 0;
// if(k>m_k) { K_CW = 1; tmp=k-m_k;}
// else { K_CW = 0; tmp=m_k-k;}
// //--加速标志-------------------------------------------------
// if(tmp>20) runfast=1;else runfast=0; //大于20mm 启动加速功能
// M_speed=Speed;
// for(;tmp>0;tmp--)
// {
// for(j=0;j<200*16/6;j++)
// {
// if(Kxianwei==0)
// if(k<m_k)
// {m_k=0;K_EN = 1;break;}
// K_CLK =1;delay_us(30);
// K_CLK =0;delay_us(30);
// }
// if(runfast)
// {
// if(tmp<30) //减速区长度
// M_speed+=jiasu_step; //减速
// else
// {
// if(M_speed>Speed/sudu_beilv) //速度最高限
// M_speed-=jiasu_step; //加速
// }
// }
// }
// K_EN = 1;
// m_k=k;
// }
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
SMOTOR.rar
(284.74 KB, 下载次数: 213)
2018-5-4 01:41 上传
点击文件名下载附件
原创
下载积分: 黑币 -5
作者:
wz_dpf
时间:
2018-9-20 09:07
东西挺好
作者:
小世界理论
时间:
2018-10-2 09:48
问下,是32什么型号的单片机
作者:
shenxiaofei
时间:
2018-10-6 10:10
谢谢,正在写这方面。可以作为参考。
作者:
bruck
时间:
2018-10-31 10:48
谢谢提供!
作者:
bushibuke
时间:
2018-11-5 17:35
谢谢,正在找这方面的资料,值得参考
作者:
yuyunkang
时间:
2018-11-18 11:15
不错哈!
作者:
plj213
时间:
2019-6-23 09:18
正在搞这个,资料非常有用啊。。。
作者:
鹏博士PBs
时间:
2019-6-23 10:23
请问楼上所说的是AUTONICS KR-55MC步进电机驱动器吗
作者:
wis98
时间:
2019-6-24 10:48
正在找这方面的资料,值得参考
作者:
zlljackx
时间:
2019-6-26 14:55
挺好的程序,很全用的stm32F1
作者:
Valarmorghulis
时间:
2019-8-1 15:50
正要查找这方面的资料
作者:
Valarmorghulis
时间:
2019-8-1 15:54
好东西,正要找这方面的资料
作者:
yupengwei
时间:
2019-9-5 08:47
谢谢分享,可以学习一下这方面的
作者:
hilam
时间:
2019-10-11 17:14
好资料,加上电机及丝杆参数,就好玩了
作者:
zhangjianhu
时间:
2019-10-18 10:58
资料非常有用,非常棒的程序。
作者:
zhangjianhu
时间:
2019-10-18 13:09
我用的驱动器是DM542,非常适用。
作者:
hoing1025
时间:
2020-4-18 21:33
谢谢!正好需要
作者:
7631001
时间:
2021-3-25 20:29
很好的代码,学习了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1