概述
该款无刷直流电机,相比碳刷电机输出特性更稳定。
集成无刷驱动,只需连接电源和2根控制线即可使用,不再需要H桥电机驱动器。
此外还集成了编码器可以测量电机转速,通过测速线信号可以让单片机直到电机的转速。
技术规格
- 工作电压: 12V
- 电机额定转速: 7100-7300转
- 堵转扭矩:2.4KG.CM
- 减速箱长度: 21MM
- 减速后转速: 159转每分钟左右。
- 减速比: 45:1
- 电机单圈输出脉冲个数: 6*45
- 控制方式:PWM,带脉冲输出,带方向控制
引脚说明
名称 | 功能描述 |
---|---|
PWM | PWM调速口,0-5V (20~30KHz) |
Power - | 电源负极12V- |
Direction | 正反转控制口,蓝线+5V或悬空时,电机正转,蓝线连接到负极,电机反转 |
FG | FG信号线(要接上拉电阻) |
Power + | 电源正极12V+ |
注意:有时电机接线的颜色会有所不同,但是线序是一样的!
使用教程
下面我们以一个简单的实验为例程,来告诉大家如何简单方便的使用我们的这一款电机。
准备
首先准备好下面的硬件及安装好软件
- 硬件
- DF_UNO 1
- 本电机 *1
- 软件
- Arduino IDE V1.6.5 点击下载Arduino IDE
接线方式
准备好硬件后,按照下图将模块与UNO连接好
样例代码
硬件连接部分弄完了以后,我们就来看看软件部分怎么弄吧。
接下来我们就需要打开ARDUINO IDE了,将我们的下面的代码复制到IDE中,注意:将刚刚打开的IDE中的所有内容都删除掉!然后选好串口和板型(UNO),点击下载就OK了。
接着打开串口,在串口中输入你0-255中间的任意数字,即可控制电机的转速。电机的正反转是每隔5秒钟自动转换的,当然你也可以把蓝色线拔下来自己想要它反转就短接UNO的GND。让蓝色线悬空就是正转。
注意:255为停止转动,0为最大转速
标准版
#define PIN_PWN 11
#define PIN_DIRECION 10
#define PIN_TRIGGER 9
unsigned int i = 0;
void setup()
{
pinMode(PIN_PWN, OUTPUT);
pinMode(PIN_DIRECION, OUTPUT);
pinMode(PIN_TRIGGER, INPUT_PULLUP);
Serial.begin(115200);
}
void loop()
{
//Switch Direction every 4 second
digitalWrite(PIN_DIRECION, (millis() >> 12) % 2);
//Recive and change speed
if (Serial.available())
{
analogWrite(PIN_PWN, Serial.parseInt());
}
//Measure speed and send
for (int j = 0; j < 8; j++)
{
i += pulseIn(PIN_TRIGGER, HIGH, 10000); //SIGNAL OUTPUT PIN 9 with white line,cycle = 2*i,1s = 1000000us,Signal cycle pulse number:27*2
}
i = i >> 3;
Serial.print(111111 / i); //speed r/min (60*1000000/(45*6*2*i))
Serial.println("\tr/min");
}
低转速优化版
#define PIN_PWN 11
#define PIN_DIRECION 10
#define PIN_TRIGGER 9
unsigned long totalPulsein = 0;
byte countPulsein = 0;
void setup()
{
pinMode(PIN_PWN, OUTPUT);
pinMode(PIN_DIRECION, OUTPUT);
pinMode(PIN_TRIGGER, INPUT_PULLUP);
Serial.begin(115200);
}
void loop()
{
//Switch Direction every 4 second
digitalWrite(PIN_DIRECION, (millis() >> 12) % 2);
//Recive and change speed
if (Serial.available())
{
analogWrite(PIN_PWN, Serial.parseInt());
}
//Measure speed and send
countPulsein = 0, totalPulsein = 0;
for (int temp, j = 0; j < 64; j++)
{
temp = pulseIn(PIN_TRIGGER, HIGH, 15000);//SIGNAL OUTPUT PIN 9 with white line,cycle = 2*i,1s = 1000000us,Signal cycle pulse number:27*2
if (temp)
totalPulsein += temp, countPulsein++;
}
totalPulsein = totalPulsein / countPulsein;
Serial.print(111111 / totalPulsein); //speed r/min (60*1000000/(45*6*2*i))
Serial.println("\tr/min");
}
注意:255为最停止转动,0为最大转速
疑难解答
Q:在低转速下转速显示不准确
A:低转速下转速测量线会受干扰产生许多0μs的信号干扰测速结果。
Q:串口输出调速值无法改变电机转速
A:1.在串口右下角选择“没有结束符”模式;2.不要输入超过0-255范围的数字。
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!