include <Stepper.h>
// 这里设置步进电机旋转一圈是多少步
#define STEPS 100
//设置步进电机的步数和引脚(就是注意点2里面说的驱动板上IN1~IN4连接的四个数字口)。
Stepper stepper(STEPS, 2, 4, 3, 5);//引脚要互换
void setup()
{
// 设置电机的转速:每分钟为90步
stepper.setSpeed(90);
// 初始化串口,用于调试输出信息
Serial.begin(9600);
}
void loop()
{
// 顺时针旋转一周
Serial.println("shun");
stepper.step(2048); //4步模式下旋转一周用2048 步。
delay(500);
// 逆时针旋转半周
Serial.println("ni");
stepper.step(-2048); //4步模式下旋转一周用2048 步。
delay(500);
}
3.自定义驱动Stepper函数
步进电机电压5V,步距角5.625,减速比1:64
计算A-B-C-D通电一次转动的角度5.625X2X4/64=0.703125 (2是表示1相励磁方式每步是2倍的步距角,4表示走了4步, 64指电机减速比)
转动360度循环ABCD通电的次数360/0.7031=512
新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
代码如下(示例):
/*
Stepper_Motor(int num, int spd)
步进电机驱动,num正负实现正反转角度,旋转一周大小为512;spd决定速度大小反比例调节,速度最大为3
参考博客:https://blog.csdn.net/TonyIOT/article/details/88605767?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161164488616780299066123%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161164488616780299066123&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-26-88605767.pc_search_result_hbase_insert&utm_term=arduino驱动步进电机&spm=1018.2226.3001.4187
*/
void setup() {
// put your setup code here, to run once:
for (int i = 2; i < 6; i++) {
pinMode(i, OUTPUT);
}
Serial.begin(9600);
}
void Stepper_Motor(int num, int spd)
{
if (spd < 3)
spd = 3;
if (num > 0)
for (int count = 0; count < num; count++)
{
for (int i = 2; i < 6; i++)
{
digitalWrite(i, HIGH);
delay(spd);
digitalWrite(i, LOW);
}
}
else
for (int count = 0; count < abs(num); count++)
{
for (int i = 5; i > 1; i--)
{
digitalWrite(i, HIGH);
delay(spd);
digitalWrite(i, LOW);
}
}
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long time0 = millis();
Stepper_Motor(100,3);//顺时针
unsigned long time1 = millis();
Serial.print("time11:");
Serial.println(time1 - time0);
Stepper_Motor(-100,3);//逆时针
unsigned long time2 = millis();
Serial.print("time22:");
Serial.println(time2 - time1);
}
评论(0)
您还未登录,请登录后发表或查看评论