安泰电子世界网 首页 Ardunio Ardunio建立电机类控制步进电机转角与转向、转速

Ardunio建立电机类控制步进电机转角与转向、转速

2024-11-5 16:09 | 发布者: txc | 查看: 68 | 评论: 0

简介:Ardunio建立电机类控制步进电机转角与转向、转速
步进电机驱动一般通过脉冲数进行对应控制。

输入一个脉冲,则转动一个指定角度。通过驱动细分,一般会有不同的细分结果,以下程序为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

最新评论

友情链接:

返回顶部