步进电机驱动一般通过脉冲数进行对应控制。 输入一个脉冲,则转动一个指定角度。通过驱动细分,一般会有不同的细分结果,以下程序为200/转,表示每转对应200个脉冲。即360°/200=1.8°,一般步进电机默认就是每个输入一个脉冲转1.8°。脉冲输出口为PUL 一、单脉冲驱动电机正反转控制程序 一般的电机除了通过脉冲口PUL控制转角,还需要通过一个DIR控制其转向。即给定DIR低电平,电机顺时针转动,给定DIR高电平,电机逆时针转动 #define PUL 9// 脉冲位 #define DIR 8//方向位 void setup() { // pinMode(PUL,OUTPUT);//设置输出口 pinMode(DIR,OUTPUT);//设置输出口 Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: Serial.println("Forward Begins");//输入正转开始 digitalWrite(DIR,HIGH);//设置逆时针转 for(int x=0;x<200;x++) { digitalWrite(PUL,HIGH); delayMicroseconds(500); digitalWrite(PUL,LOW); delayMicroseconds(500); //一个脉冲转一个步长 总步数为200步/圈 循环一次实现一个脉冲 } Serial.println("Forward ENDs");//输入正转结束 delay(1000); //改变转向 Serial.println("Backward Begins");//输入正转开始 digitalWrite(DIR,LOW);//设置顺时针转 for(int x=0;x<600;x++) { digitalWrite(PUL,HIGH); delayMicroseconds(500); digitalWrite(PUL,LOW); delayMicroseconds(500); //一个脉冲转一个步长 总步数为200步/圈 循环一次实现一个脉冲 总计转三圈 } Serial.println("Backward ENDs");//输入反转结束 delay(2000); } 二、双脉冲输入电机正反转控制 双脉冲输入指的是PUL输入脉冲时,电机顺时针转动,DIR输入脉冲时,电机逆时针转动。 为了实现电机能够转动指定的角度,并可以调整电机的转速,又定义了一个电动机的类函数,并补充修改了算法,具体如下: class STEPPER//定义一个电机类函数 { public: byte DirPin, PulPin, EnaPin;//定义步进电机控制信号输出引脚 byte APin, BPin;//定义编码器输入引脚对应A相与B相信号输入 long StepTime = 1000;//steptime表示每步的时间 long CurrentStep = 0, TargetStep = 0;//当前步数与目标步数 STEPPER(byte dir, byte pul, byte en, byte a, byte b)//设置引脚信息 {//定义输出引脚,byte is 数据类型字节,从0-225 DirPin = dir; PulPin = pul; EnaPin = en; //设置为输出引脚 pinMode(DirPin, OUTPUT); 原文链接:https://blog.csdn.net/doudou2weiwei/article/details/131957514 |