22125| 5
|
[入门] 用TB6600驱动42步进电机 |
本帖最后由 屌丝王小明 于 2019-8-14 18:02 编辑 最近准备利用步进电机做点小东西,以前用ULN2003驱动板驱动过28BYJ4步进电机,好久没玩,都快忘了怎么驱动了。感觉28步进电机的扭矩有点小,所以想换成42步进电机试试,电机方面的知识生疏得很,只得到处查资料、看别人如何玩起来的,可算是勉强让电机转起来了。 要用到的材料有: 4. 9-42v外部直流电源 42电机: 从左往右依次为:黑色——A+、红色——B+、绿色——A-、蓝色——B- 后边的字母引脚为TB6600驱动器上的端口,后边介绍TB6600会提到。对应着上面的连线进行连接就行 TB6600驱动板: 先看驱动板顶部的这个6个拨杆开关,这6个的功能是通过开闭的状态来设置步进电机的细分参数和输出电流大小(就是给步进电机提供的电流多大) 左上方“Microstep Driver”的下面这个表格是介绍的如何设置细分。就是通过s1、s2、s3这三个来决定如何细分。步进电机里面有A、B两相绕线线圈,咱们让步进电机如何转动呢?就是通过先给A线圈通电,转子会转1下,然后再给B通电,转子又转1下,然后给A反向通电,转子又转1下,给B反向通电又转1下,最后回到A线圈通电......一圈圈地转下去。 转这个“1下”的角度体现在步进电机的那个金属杆上就是——金属杆每次会转动1.8°。如果是按照,A正,A正B正,B正,B正A负,A负,A负B负,B负,B负A正这样的方式通电,按照电磁作用,当量个绕线圈同时通电,转子会停留在中间位置(原先的转1下的中间位置),这样就会使得步进电机的金属杆每次只转动0.9°。假如在A正B正的基础上再次分为,给A正通大电流、给B正通小电流...给A正通一般电流、给B正通一般电流...给A正通小电流、给B正通大电流,这样就能使得步进角度更加细分。表格里有8个细分等级可供设置,我们就设置最基本的无细分,s1——ON,s2——ON,s3——OFF。 左下方的表格,通过s4、s5、s6的开关状态来设置给步进电机输出多少的电流,由于42电机的额定电流为1.5A,所以我们把开关拨到s4——ON,s5——ON,s6——OFF。 右上方的6个引脚分别为:PUL+、PUL-、DIR+、DIR-、ENA+、ENA-分别对应着脉冲控制(一个脉冲,42步进电机转1下)、步进电机转动方向选择、使能(让步进电机是否处于工作状态)三组端口。这两有两种接线的方式: 共阳极:将PUL+、DIR+、ENA+三个引脚接在Arduino控制器的VCC上,其他三个引脚分别用接在控制器的对应端口上(比如D7、D8、D9),来控制步进电机的转动 共阴极:将PUL-、DIR-、ENA-三个引脚接在arduino控制器的GND上,其他三个引脚分别用接在控制器的对应端口上(比如D7、D8、D9),来控制步进电机的转动 右下方的6个引脚分别为:VCC、GND、A+、A-、B+、B-。VCC和GND是连接外部电源的,我选用的是12v的直流电源。后边四个直接对应着连接42电机上的4根线。 将线连接起来,通上电。将下面的程序烧录进UNO里 #define DIR 9 //方向信号 #define PUL 8 //脉冲信号 #define ENA 7 //使能信号 void setup() { pinMode(DIR, OUTPUT); pinMode(PUL, OUTPUT); pinMode(ENA, OUTPUT); Serial.begin(9600); digitalWrite(ENA, HIGH); //使能 digitalWrite(DIR, LOW);//设置步进电机转动方向 } void loop() { digitalWrite(PUL, HIGH); delayMicroseconds(500); digitalWrite(PUL, LOW); delayMicroseconds(500); } 就可以看见步进电机以每毫秒1步的速度转动起来 需要注意的是,我测得如果UNO给的脉冲周期是大于700us的话,电机能转动。但是如果小于700us电机就不会转了,步进电机的转动有一个响应时间。如果电机的转动频率较低的话,会产生一些振动的现象。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed