使用Arduino控制电动机相对容易。除了简单地旋转电机外,如果电机有旋转式编码器,可以控制电动机轴的位置。
法拉第定律指出:
线圈的磁环境的任何变化都会在线圈中引起感应电压(电动势)。
这解释了发电机是如何产生电压的。这是机械能到电能的转换。电机与发电机反向运行;它们把电能转化为机械能。在电动机中,电流被送入电枢绕组,产生磁场,磁场与定子中的永磁体产生的磁场相互作用。两个磁场之间的相互作用使电枢旋转。
有许多不同类型的电机,包括:
- 直流(DC)电机(我将在本教程中使用的)。
- 交流(AC)电机。
- 无刷直流(BLDC)电机。
- 无刷交流(BLAC)电机。
- 增量编码器。增量式旋转编码器仅在电机旋转时输出脉冲。为了使用增量编码器确定轴的位置,必须知道起始位置并使用外部电路来计算输出脉冲的数量。
- 绝对编码器。绝对旋转编码器输出与旋转角度相对应的数字代码。不需要计数脉冲来知道电机轴的位置。你只需要读取编码器的数字输出。
h桥是一种电子电路,使微控制器,如Arduino,能够控制电机的运动。微控制器不能直接连接到直流电机,因为微控制器不能提供电机所需的大电流。h桥包含电机控制所需的大电流开关。这些开关由Arduino的信号控制。
h型电桥允许电机向前或向后移动。方向由Arduino的控制信号序列决定。
电机转速是通过设定控制信号的占空比来确定的。这种类型的速度控制被称为脉冲宽度调制。当占空比100%时,电机将全速运行。然而,当占空比为0%时,电机将停止并不再移动。
在本教程中,我们设计并构建了一个h桥,它使用以下组件:
- TIP 142和TIP 147晶体管
- 二极管
- 绿色连接器
- 光耦合器
h型桥的简化图如下:
![](http://m.bettowin66th.com/uploads/articles/Use-an-Arduino-to-Control-a-Motor-v1.png?v=1466056846902)
需要设备
以下设备用于此实验- 脂电池11.1 v
- Arduino Atmega 2560.
- h型桥(自制式或IC L298)
- 电机和编码器
- 跳投(根据需要)
- 绿色连接器(又名l型连接器)
- 6针连接器(专用于电机)
- 车轮(电机轴可视运动可选)
步骤:
1.收集所需的所有零件:
![](http://m.bettowin66th.com/uploads/projects/m3a.png)
![电动机](http://m.bettowin66th.com/uploads/articles/Use-an-Arduino-to-Control-a-Motor-v3.png?v=1466057059159)
![](http://m.bettowin66th.com/uploads/projects/m5a.png)
![Arduino](http://m.bettowin66th.com/uploads/projects/m6a.png)
![用于电动机的6针连接器](http://m.bettowin66th.com/uploads/projects/m7a.png)
![绿色连接器](http://m.bettowin66th.com/uploads/projects/m8a.png)
![电池](http://m.bettowin66th.com/uploads/projects/m9a.png)
![h桥](http://m.bettowin66th.com/uploads/projects/m10a.png)
![跳投](http://m.bettowin66th.com/uploads/projects/m11a.png)
![3pin连接器h桥](http://m.bettowin66th.com/uploads/projects/m12a.png)
![轮(可选)](http://m.bettowin66th.com/uploads/projects/m13a.png)
2.跳线连接到电池上,用电池给h桥上电:
![](http://m.bettowin66th.com/uploads/projects/Connect_the_Jumper_with_the_battery.png)
![](http://m.bettowin66th.com/uploads/projects/m15a.png)
3.将3引脚连接器连接到H-Bridge模块,然后将H-Bridge模块连接到此连接之后的Arduino:
- Arduino 13 - > PWM
- Arduino 12——>转发
- Arduino 11 - >反向
![](http://m.bettowin66th.com/uploads/articles/Use-an-Arduino-to-Control-a-Motor-v2.png?v=1466056888680)
![](http://m.bettowin66th.com/uploads/projects/m16A.png)
5.现在连接6针连接器到电机,然后连接电机到h桥模块。
![](http://m.bettowin66th.com/uploads/projects/m17A.png)
不要忘记将电机功率引脚连接到H桥电源引脚。标记为Hall VCC和Hall GND的电机编码器引脚应连接到Arduino 5V和GND引脚。最后,将电机编码器输出通道CH.A连接到Arduino引脚编号21.连接如下所示:
![](http://m.bettowin66th.com/uploads/projects/m18A.png)
arduino引脚连接仔细看看:
![](http://m.bettowin66th.com/uploads/projects/mm19A.png)
6.现在将Arduino连接到您的电脑或笔记本电脑进行编程:
![](http://m.bettowin66th.com/uploads/projects/20A.png)
手动检查编码器的代码
int encoderValue = 0;空白计数(无效);//编码计数增加的值的编码器蜱void setup() {Serial.begin(9600);输入pinMode(21日);attachInterrupt(2计数下降);encoderValue = 0;} void loop() {Serial.print("Starting\n");//在屏幕上打印编码器值打印(“编码器值= ");以encoderValue);} void count() {encoderValue++; }
运行电机的代码,直到编码器特定计数
//定义代码int pwm = 13的引脚名称;int forward = 12;int反转= 11;int encoderValue = 0;空白计数(无效);void setup(){serial.begin(9600);输入pinMode(21日);attachInterrupt(2计数下降);encoderValue = 0;void循环(){digitalwrite(pwm,1); digitalWrite(forward,0); analogWrite(reverse,140); Serial.print("Starting\n"); delay(3000); Serial.print("Encoder Value="); Serial.println(encoderValue); while(1) { // to print encoder value on the screen Serial.print("Encoder Value="); Serial.println(encoderValue); //Setting value of encoder //defining the while statement condition if(encoderValue<5000) break; // loop will break as soon as encoder value reaches 5000 or above digitalWrite(forward,1); digitalWrite(reverse,0); analogWrite(pwm,150); } digitalWrite(forward,1); digitalWrite(reverse,1); analogWrite(pwm,255); } void count() { encoderValue++; }
结论
编码器是可以连接到任何旋转或直线的设备跟踪设备的运动和方向。这里我们使用了一个绝对旋转编码器来控制电机的速度和轴的位置。
视频
为自己提供这个项目!BOM。
好了所有的朋友!我们现在需要的是:arduino控制一个三相交流电机,大功率10马力交流电机,96Volts,这是一个EV项目,电池组是8pcs x 12Volts。非常感谢!
好文章!
我看不见旋转编码器插在哪里了。你能把这个信息加到这篇文章里吗?