42.步进电机arduino

2017-12-02 09:21:25 g1fdgfgdf2_ 阅读数 23189

http://blog.csdn.net/ling3ye/article/details/47001251


MS1 , MS2 , MS3 跳线说明:(例子里是低电平,悬空或接地线,使用全步进模式)

分别是全步进,1/2步进,1/4步进,1/8步进,1/16步进模式。

步进电机走一步是1.8度,一圈就是200步。例如使用1/16步进,则需要走3200步才等于一圈。

ms1   ms2    ms3
L       L        L       整步(没有细分)
H      L         L      1/2(2细分)
L      H        L       1/4(4细分)
H      H        L       1/8(8细分)
H      H        H      1/16(16细分)

 

测试程序程序

int x;

 

void setup()

{

  pinMode(6,OUTPUT); // Enable: EN可以使用单片机端口控制,也可以直接连接GND使能

  pinMode(5,OUTPUT); // steps:脉冲个数

  pinMode(4,OUTPUT); // dir:为方向控制

  digitalWrite(6,LOW); // Set Enable low

}

 

void loop()

{

    digitalWrite(4,HIGH); // Set Dir high

    for(x = 0; x < 200; x++) // Loop 200 times

  {

      digitalWrite(5,HIGH); // Output high

      delayMicroseconds(800); // Wait 1/2 a ms

      digitalWrite(5,LOW); // Output low

      delayMicroseconds(800); // Wait 1/2 a ms

    }

  delay(1000); // pause one second

  

  digitalWrite(4,LOW); // Set Dir low

  

  for(x = 0; x < 200; x++) // Loop 2000 times

  {

      digitalWrite(5,HIGH); // Output high

      delayMicroseconds(800); // Wait 1/2 a ms

      digitalWrite(5,LOW); // Output low

      delayMicroseconds(800); // Wait 1/2 a ms

    }

    delay(1000); // pause one second

}

ps后记学习:

*6(-en) 低电平为启动电机(enable),貌似也可以不接,试过一样能运行.但如果要控制电机的启动关闭还是要用上

*4(-dir) 用高低电平控制方向.

*5(-step) 用高低电平驱动电机转动.注意中间间隔等待的微秒值,如果太快会导致电机有声响不转动.

 

 

 

http://www.geek-workshop.com/thread-9397-1-1.html

int dirPin = 8;

int stepperPin = 7;

void setup() {

 pinMode(dirPin, OUTPUT);

 pinMode(stepperPin, OUTPUT);

}

 void step(boolean dir,int steps){

 digitalWrite(dirPin,dir);

 delay(50);

 for(int i=0;i<steps;i++){

   digitalWrite(stepperPin, HIGH);

   delayMicroseconds(800);

   digitalWrite(stepperPin, LOW);

   delayMicroseconds(800);

 }

}

void loop(){

 step(true,1600);

 delay(500);

 step(false,1600*5);

 delay(500);

}

 

 

 

 

 

 

void setup() {               

  pinMode(8, OUTPUT);    

  pinMode(9, OUTPUT);

  digitalWrite(8, LOW);

  digitalWrite(9, LOW);

}


void loop() {

  digitalWrite(9, HIGH);

  delay(1);         

  digitalWrite(9, LOW);

  delay(1);         

}

 

 

问题1.
什么叫做42步进电机,其中数字“42”是什么意思?  命名有没有国际标准?
答:
42是电机的基座型号,边长42mm。就是电机靠近出轴的那个四方的座子的尺寸。

问题2.
经常看到 25相, 还有复杂的26lead  8lead, 这里的lead 是什么意思?附图

答:我自己的理解lead 是指 实际的输出线有多少根!

答:这个是正确的。可以通过外部接线实现电机绕组的并联和串联。通过相应的程序还能实现更多的功能。



问题3.
步进电机有哪些关键的参数。
答:我有看到一个实物上写明  1.8/step     1.8度是否就是 一个通电周期,机械旋转1.8度?

又问:那是否能在标称 1.8度的/step 下,通过 灵巧的程序,达到0.9  0.45  0.225度?   

答:
1.8度是指一个正步脉冲,你的电机转过的角度。比如说两相的,那你开始给A相通电,那下一次你给B通电后,转过的角度就是18度。



问题4.
何为细分,如何细分?

答:
细分就是按照一定的方法,使本来转1.8度的情况变成两步转1.8度或者更多步转1.8度。
一般是正方形细分或者正弦波细分。正方形一般用于2细分,正弦波可以有更多的细分,力矩也更平滑。


//以上问题我大学里都有学习过,可惜现在全部还给了老师,希望各位在 畅所欲言,也希望提出更多的问题,来帮助我等小白!谢谢各位电机驱动专家!


100莫元,犒劳各位大侠,请耐心教导我等小白,科普小白,我想论坛还有很多人愿意看到这个帖子的精华!




问题5. 步进电机如何防止失步,   (我故意卡死 步进电机,让他不能转)
自己回答:   抱歉没有反馈机构,无法防止。   唯一的办法就是选择合适转矩的步进电机防止失步。   我的理解对吗?

答:尽量选更大力矩的电机。选择合适的加减速曲线。


问题6. 我有幸,有一次拆了一个工厂 30kg的 超级大 步进电机。 220v驱动。只有3根线输出(这里我有记错吗?)。  这个应该是伺服电机吧?  加上驱动器,我实在无法卡死转轴。   那么 伺服电机 是否也会失步。   这个伺服电机 老师傅是用在机床上,移动切铁用的

答:伺服电机是有编码器的,有位置信息给到驱动器,一旦位置发生偏差,驱动器就会给电机加力,直到驱动器的最大输出力为止。

不过单单就步进电机来说,低速的时候力还是很大的,42的步进电机,如果来个3A驱动的话,抓也是不好抓的。

 

 

步距角,即在没有减速齿轮的情况下,对于一个脉冲信号,转子所转过的机械角度。
  也可以这样描述:定子控制绕组每改变一次通电方式,称为一拍。每一拍转子转过的机械角度称之为步距角,通常用θs表示。
  常见的有3°/1.5°1.5°/0.75°,3.6°/1.8°。如,对于步距角为1.8度的步进电机(小电机),转一圈所用的脉冲数为 n=360/1.8=200个脉冲。 
  步距角的误差不会长期积累,只与输入脉冲信号数相对应,可以组成结构较为简单而又具有一定精度的开环控制系统,也可以在要求更高精度时组成闭环系统。

 

 

 

步距角θ可用下式计算: θ360°/(Zr×m)   式中Zr是转子齿数;m是运行拍数。

步进电机特性及步距角计算方法20090505日 星期二 22:13步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。 现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。 永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度 或15度; 反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。 混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛,也是本次细分驱动方案所选用的步进电机。 步进电机的一些基本参数: 电机固有步距角: 它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如SL86S2114A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这个步距角可以称之为电机固有步距角,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数: 是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72° 。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则相数将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。 保持转矩(HOLDING TORQUE): 是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。 DETENT TORQUE: 是指步进电机没有通电的情况下,定子锁住转子的力矩。DETENT TORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENT TORQUE。 步进电机的一些特点: 1.一般步进电机的精度为步进角的3-5%,且不累积。 2.步进电机外表允许的最高温度。 步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。 3.步进电机的力矩会随转速的升高而下降。 当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。 4.步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。 步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。 步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。

 

2018-03-21 20:11:54 qq_36605849 阅读数 21665

Arduino 2560控制两个步进电机

用arduino和步进电机控制器驱动两个步进电机,具体的接线过程和怎样连接都在图片上。

准备工具:

两个步进电机(我用的是J42):

Arduino板(我用的是2560):

步进电机控制器:

电源适配器:

一 储备知识

1.步进电机的绕组

A+:黑

A-:绿

B+:红

B-:蓝

(这个问题就查了好久..)

2.细分:

步进电机每200(360÷1.8)脉冲转一圈,1.8是步进电机1脉冲走的度数(步进电机背面显示的。200就是1细分,那么2细分就是400(400脉冲转一圈,4细分就是800脉冲转一圈。所以可以通过调节细分来控制步进电机转动的速度。

二 步进电机与步进电机控制器相连

按照上面说的黑绿红蓝连接步进电机的A+A-B+B-

三控制器与电源适配器相连


四控制器和arduino连接


1.输入信号有三种

①    步进脉冲信号PUL+,PUL-;

②    方向电平信号DIR+ ,DIR-

③      脱机信号EN+,EN-。

2. 采用共阴极接法:

PUL-,DIR-,EN-连arduino的地

EN+:脱机信号,接地或者不接,接口4

DIR+:控制转动方向,高电平正转,接口 5

PUL+:控制脉冲,接口 6

3. 第二个步进电机接法同理:

PUL-,DIR-,EN-连arduino的地

EN+:脱机信号,接地或者不接,接口7

DIR+:控制转动方向,高电平正转,接口 8

PUL+:控制脉冲,接口 9

 

五代码:

#define CLK 9
#define CW 8
#define EN 7
#define CLK2 6
#define CW2 5
#define EN2 4
void setup() {
pinMode(CLK,OUTPUT);
pinMode(CW,OUTPUT);
pinMode(EN,OUTPUT);
pinMode(CLK2,OUTPUT);
pinMode(CW2,OUTPUT);
pinMode(EN2,OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(CW,HIGH);   //正转
digitalWrite(CW2,HIGH);   //正转
//digitalWrite(EN, LOW);   //脱机
for(int i=0;i<200;++i)
{
digitalWrite(CLK,HIGH);//逆时针(正转),无细分,半流,200脉冲/转,步距角1.8度,500KHZ
digitalWrite(CLK2,HIGH);//
delayMicroseconds(1000);
digitalWrite(CLK,LOW);
digitalWrite(CLK2,LOW);
delayMicroseconds(1000);
}
}

六 延伸

学长提了个问题,怎样让步进电机触摸时,能明显的感受到转动每一步,也就是说每一步与每一步之间都有时间暂停,然后在循环往复的转动。

解决方法:在学长的提示下,因为脉冲信号呈时序状,让高频脉冲的时间短,低频持续的时间长,这样在转动的时候就能明显的感受到每一步的转动。

#define CLK 9
#define CW 8
#define EN 7
int steps=50; //角度
/*
 * steps=16.667   旋转30
 * steps=33.334   旋转60
 * steps=50       旋转90
 * steps=100      旋转180
 * steps=200      旋转360
 */
void setup() 
{
  pinMode(CLK, OUTPUT);
  pinMode(CW, OUTPUT);
  pinMode(EN, OUTPUT);
  Serial.begin(9600);  //通信接口
}
/*
 * 速度:通过脉冲时间间隔来控制速度/控制细分?
 * 方向:控制脉冲次数来控制一次能过转多少度
 */
void loop() 
{
  digitalWrite(CW, HIGH);  //正转
  //digitalWrite(EN, LOW);   //脱机
  
  for (int i = 0; i < steps; ++i)
  {
    digitalWrite(CLK, HIGH); //逆时针(正转),无细分,半流,200脉冲/转,步距角1.8度,500KHZ
    delayMicroseconds(10);  //微秒400以上左右好用,所以周期T=800us,所以f=1/T=1250HZ
    digitalWrite(CLK, LOW);
    delayMicroseconds(15000);
    
  }
  //delay(500); //毫秒
}
学长又又提出了一个问题(-_-),假如让步进电机转动90度,怎样在前45度速度逐渐加快,怎样在后45度速度逐渐减慢?因为时间挤不出,一直没去想,等有时间看看能不能解决
2019-04-19 14:57:03 qq_42807924 阅读数 1625

步进电机 42h2p6017 A4 ican 参数:http://www.ican-tech.com/product/detail/121.html
MR2数字步进驱动器:http://www.ican-tech.com/product/detail/138.html
电源及电机接线、控制信号接口接线、以及参数设定请参考网址以及技术手册。

例程一:实现转动

//例程一:实现转动
#define ENA 5
#define CLK 6   //脉冲
#define DIR 7
void setup() {
  pinMode(ENA,OUTPUT);
  pinMode(CLK,OUTPUT);
  pinMode(DIR,OUTPUT);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(ENA,HIGH);//使能
  digitalWrite(DIR,HIGH);//高顺时针,低逆时针
  while(1){
    digitalWrite(CLK,HIGH);//1000Hz的pwm波
    digitalWrite(CLK,LOW);
    delayMicroseconds(500);
  }
}

用法:官方 https://playground.arduino.cc/Main/MsTimer2/ ,所需库ide搜索安装即可。
参考:论坛建议 https://www.arduino.cn/thread-8412-1-1.html ,arduino有三个Timer: timer0, timer1, timer2

例程2:使用定时器,实现转动

// 例程2:使用定时器,实现转动
#include <MsTimer2.h>
#define ENA 5
#define CLK 6  //脉冲
#define DIR 7
void flash() {
  static boolean output = HIGH;
  
  digitalWrite(CLK, output);
  output = !output;
}

void setup() {
  pinMode(ENA,OUTPUT);
  pinMode(CLK,OUTPUT);
  pinMode(DIR,OUTPUT);
  MsTimer2::set(1, flash); // 1ms period
  MsTimer2::start();
}

void loop() {
  digitalWrite(ENA,HIGH);//使能
  digitalWrite(DIR,HIGH);//高顺时针,低逆时针
  while(1){
    
  }
}

如何让电机转特定圈数停下,即需要给多少个脉冲,驱动器参数如何设置?

  • 步距角: 输入一个电脉冲信号,步进电动机转子相应的角位移。它与控制绕组的相数、转子齿数和通电方式有关。步距角越小,运转的平稳性越好。
    查阅官网资料,此电机步矩角:1.8°,故转1圈需要 脉冲数 = 360° / 1.8° = 200个。

  • 细分倍数: 把电机步距角微分,减小每个脉冲走相对应得角位移,即减小脉冲当量,使得电机运行更平稳,在脉冲频率不变情况下,速度也就变慢了。比如当细分倍数为2时,转1圈需要 脉冲数 = 360° / (1.8°/2) = 400个。 脉冲当量 = 1.8°/2 = 0.9°
    驱动器细分倍数拨盘设置对应关系查阅技术手册:http://www.ican-tech.com/product/detail/138.html
    在这里插入图片描述

例程3: 细分倍数为2时,驱动电机转4

// 例程3,细分倍数为1时,驱动电机转`3`圈
#include <MsTimer2.h>
#define ENA 5
#define CLK 6  //脉冲
#define DIR 7
unsigned int t_CLK = 0; //记录脉冲个数
void flash() {
  static boolean output = HIGH;
  
  digitalWrite(CLK, output);
  output = !output;
  t_CLK+=1;
  if(t_CLK==200*2*4*2){ //细分倍数为1,因为中断时长为半个周期,所以*2
        MsTimer2::stop();
      }
}

void setup() {
  pinMode(ENA,OUTPUT);
  pinMode(CLK,OUTPUT);
  pinMode(DIR,OUTPUT);
  MsTimer2::set(1, flash); // 1ms period
  MsTimer2::start();
}

void loop() {
  digitalWrite(ENA,HIGH);//使能
  digitalWrite(DIR,HIGH);//高顺时针,低逆时针
  while(1){
    
    }
  
}

改写成带参数子函数:

// 
#include <MsTimer2.h>
#define ENA 5
#define CLK 6  //脉冲
#define DIR 7
unsigned int t_CLK = 0; //记录脉冲个数
void run_42(unsigned char mul, unsigned int t_cycles)//细分倍数(对应的要在驱动器上设置),圈数
{
  if(mul*t_cycles<160){
    t_CLK+=1;
    if(t_CLK==400*mul*t_cycles){ //细分倍数为1,因为中断时长为半个周期,所以*2
        MsTimer2::stop();
      }
    else if(t_CLK==65534){
        t_CLK=0;
      }   
    }
}
void flash() {
  static boolean output = HIGH;
  
  digitalWrite(CLK, output);
  output = !output;
  run_42(2,4);  //细分倍数2,圈数4
}

void setup() {
  pinMode(ENA,OUTPUT);
  pinMode(CLK,OUTPUT);
  pinMode(DIR,OUTPUT);
  MsTimer2::set(1, flash); // 1ms period
  MsTimer2::start();
}

void loop() {
  digitalWrite(ENA,HIGH);//使能
  digitalWrite(DIR,HIGH);//高顺时针,低逆时针
  while(1){
    
    }
  
}

例程4: 细分倍数为1时,驱动电机的转速为150r/min,即 2.5r/s, 转1分钟。

1圈 需要200个脉冲,每秒500个脉冲,每个脉冲2 ms。因为此定时器中断最小为1ms,所以使用定时器150也是最高速。

// 
#include <MsTimer2.h>
#define ENA 5
#define CLK 6  //脉冲
#define DIR 7
unsigned int t_CLK = 0; //记录脉冲个数
void run_42(unsigned char mul, unsigned int t_cycles)//细分倍数(对应的要在驱动器上设置),圈数
{
  if(mul*t_cycles<160){
    t_CLK+=1;
    if(t_CLK==400*mul*t_cycles){ //细分倍数为1,因为中断时长为半个周期,所以*2
        MsTimer2::stop();
      }
    else if(t_CLK==65534){
        t_CLK=0;
      }
  }   
    
}
void run_300rpm()
{
  t_CLK+=1;
  if(t_CLK==1000*60){ //1分钟
        MsTimer2::stop();
      }
      
}
void flash() {
  static boolean output = HIGH;
  
  digitalWrite(CLK, output);
  output = !output;
  //run_42(1,4);  //细分倍数2,圈数4
  run_300rpm(); //细分倍数1,转速300
}

void setup() {
  pinMode(ENA,OUTPUT);
  pinMode(CLK,OUTPUT);
  pinMode(DIR,OUTPUT);
  MsTimer2::set(1, flash); // 1ms period
  MsTimer2::start();
}

void loop() {
  digitalWrite(ENA,HIGH);//使能
  digitalWrite(DIR,HIGH);//高顺时针,低逆时针
  while(1){
    
    }
  
}

例程5 细分倍数,转速。 采用延时微秒形式。

//例程5  细分倍数,转速,分钟
#define ENA 5
#define CLK 6   //脉冲
#define DIR 7
void setup() {
  pinMode(ENA,OUTPUT);
  pinMode(CLK,OUTPUT);
  pinMode(DIR,OUTPUT);
  Serial.begin(9600);
}
void run_rpm(unsigned char mul, unsigned int rpm)//细分倍数,转速
{
    float del_time=0;
    //60*1000*1000/mul//200/rpm/2
    del_time=5000/rpm*30/mul;

    while(1){
    digitalWrite(CLK,HIGH);//1000Hz的pwm波
    delayMicroseconds(del_time);
    digitalWrite(CLK,LOW);
    delayMicroseconds(del_time);
    }
}
void loop() {
  digitalWrite(ENA,HIGH);//使能
  digitalWrite(DIR,HIGH);//高顺时针,低逆时针
  while(1){
    run_rpm(4,60);//细分倍数,转速
   
  }
}

在这里插入图片描述

后话:关于步进电机,其驱动万变不离其宗。

附美照一副:
在这里插入图片描述

2017-11-12 19:59:07 gc_2299 阅读数 15627
步进电机与Arduino的连线参考的http://www.arduino.cn/thread-19050-1-1.html中给出的连线。
连线示意图如下:
Arduino使用步进电机 - gc_2299 - gc_2299的博客
 
实际连线图如下:
Arduino使用步进电机 - gc_2299 - gc_2299的博客
 
使用Stepper类库中自带的示例,并简单修改了其中的一些参数。

#include<Stepper.h>


const int stepsPerRevolution = 500;

// 初始化步进电机要使用的Arduino的引脚编号
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup()
{
// 设置转速,单位r/min
myStepper.setSpeed(60);

// 初始化串口
Serial.begin(9600);
}

void loop()
{
// 顺时针一次旋转
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);

// 逆时针一次旋转
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}


为了能够明显的看到步进电机在旋转,将一个小车的轮子放在步进电机上。这样就可以很明显的看到车轮随着步进电机的旋转而正转和反转。下面是视频。
2017-06-24 12:17:33 pikaMouse2 阅读数 14689

一、准备工具以及接线

1、准备一块ardiuno UNO板以及TB6560电机驱动板。

2、我采用的是24V共阴极与ardiuno UNO的接法(注意:TB6560的输入电平为5V时,R_EN、R_CW、R_CLK为0;为12V时R_EN、R_CW为1k,R_CLK为1.5k;24v时R_EN、R_CW为2k、R_CLK为3k),EN-、EW、CLK-接ardiuno UNO的GND端,CLK+接3K接ardiuno UNO的9管脚,CW+接ardiuno UNO的8管脚,EN+接ardiuno UNO的7管脚

与TB6560的接线以及原理如下图所示:

3、设置TB6560的一些参数

我设置的参数为SW1 OFF 、SW2 OFF 、SW3 ON、S1 ON、S2 OFF、S3 ON、S4 ON、S5 OFF、S6 OFF。

4、准备42步进电机,我用的电机参数为:

电压:2.8V

电流:1.33A

电阻:2.1Ω

电感:2.5mh

静力矩:2.2kg.cm

轴长:19mm

5、与TB6560的接法如下所示:

6、准备24v电源

7、接上电源

二、ardiuno UNO代码

#define CLK 9
#define CW 8
#define EN 7
void setup() {
pinMode(CLK,OUTPUT);
pinMode(CW,OUTPUT);
pinMode(EN,OUTPUT);
Serial.begin(9600); 


}
void loop() {
digitalWrite(CW,HIGH);
for(int i=0;i<200;++i)
{
digitalWrite(CLK,HIGH);//逆时针(正转),无细分,半流,200脉冲/转,步距角1.8度,500KHZ
delayMicroseconds(25);

digitalWrite(CLK,LOW);
delayMicroseconds(30);

}

}
三、电机正常旋转


本例子只是测试arduino UNO 使用TB6560驱动42步进电机转动。以后控制方面会继续更新!