Arduino中使用步进电机
2023-12-22 18:33:07
目录
一、硬件介绍
1、型号
(1)步进电机
(2)驱动器
2、接线图
采用共阳极极限方式。
3、电机旋转圈速和位置
(1)电机旋转一圈对应脉冲数设置
如果所示拨码开关S1、S2、S3对应脉冲数设置。S1设置ON、S2和S3设置OFF,对应800。电机转一圈脉冲:800*2=1600。
(2)电机旋转速度设置
修改脉冲周期时间,即可改变旋转速度。具体见程序。
二、功能代码和测试
控制器上电以后,电机正转一圈、等待一秒,反转一圈、等待一秒。如此一直循环运行。
1、代码
#define Puls 7 //脉冲位为引脚7
#define Dir 6 //方向位为引脚6(高电平正转、低电平反转)
#define Ena 10 //使能位为引脚10。(低电平电机禁止运动,高电平电机有效)
#define bushu 1600 //脉冲步数 1600个脉冲转一圈()
const int pulsTime=1000; //脉冲高低电平时间(延时大转速降低)
void setup()
{
//
Serial.begin(9600);
//
pinMode(Puls, OUTPUT);
pinMode(Dir, OUTPUT);
pinMode(Ena, OUTPUT);
//
digitalWrite(Ena, HIGH);
}
void loop()
{
//正转
//使电机向特定方向运动
Serial.println("Forward Begins");
digitalWrite(Dir, HIGH);//方向引脚高电位,正转
// 正向转(bushu脉冲)
for (int x = 0; x < bushu; x ++) {
digitalWrite(Puls, HIGH);
delayMicroseconds(pulsTime); //500微秒延时,即0.5毫秒
digitalWrite(Puls, LOW);
delayMicroseconds(pulsTime);
}
Serial.println("Forward Ends");
delay(1000); // Delay for one second
//逆转
//使电机向反方向运动
Serial.println("Backward Begins");
digitalWrite(Dir, LOW);//方向引脚低电位,逆转
// 反向转(bushu脉冲)
for (int x = 0; x < bushu; x ++) {
digitalWrite(Puls, HIGH);
delayMicroseconds(pulsTime);
digitalWrite(Puls, LOW);
delayMicroseconds(pulsTime);
}
Serial.println("Backward Ends");
delay(1000); //Delay for two seconds
}
2、测试效果
串口接收到反馈的运行状态
(1)转速1
const int pulsTime=500;
0.5ms脉冲电机速度
(2)转速2
const int pulsTime=250;
0.25ms脉冲电机转速
文章来源:https://blog.csdn.net/panjinliang066333/article/details/135157368
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!