(SEN:FIT0441)无刷直流带编码器12V 159RPM电机
来自DFRobot Product Wiki
[[文件:]]
目录 |
概述
该款无刷直流电机,相比碳刷电机输出特性更稳定。
集成无刷驱动,只需连接电源和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范围的数字。
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖! |