大家好,欢迎来到IT知识分享网。
Arduino A4950 驱动直流电机
1.实验准备
1.Arduino 系列单片机
2.直流电机
3.A4950驱动器
2.A4950芯片简介
一个A4950驱动器可驱动两个直流电机
驱动板工作电压范围:7.6V~30V
A4950引脚 | 对应引脚 |
---|---|
VCC | 单片机5V |
GND | 单片机GND |
VM | 驱动电源7.6~30V |
AIN1 | 控制A电机的1号PWM引脚 |
AIN2 | 控制A电机的2号PWM引脚 |
AOUT1 | 电机A正极 |
ATOU2 | 电机A负极 |
BN1 | 控制B电机的1号PWM引脚 |
BIN2 | 控制B电机的2号PWM引脚 |
BOUT1 | 电机B正极 |
BTOU2 | 电机B负极 |
一个模块上有两组 VCC GND VM 至少接一组 |
单片机 A4950 驱动电源 记得共地
A4950 驱动是通过比较两个控制引脚输出PWM的大小关系来确定电机方向的
两个控制引脚输出PWM的差值决定电机的转速
3.程序设计
我们接下来的代码都已驱动一个电机为例,剩下一个如法炮制就可以了
unsigned int Motor_AIN1=2; //控制A电机的PWM引脚 一定改成自己用的 unsigned int Motor_AIN2=3; char Motor_Order; //定义一个字符型变量存储串口输入命令 void setup() {
Serial.begin(9600); //打开串口 Serial.println("/*开始驱动*/"); pinMode(Motor_AIN1,OUTPUT); //设置两个驱动引脚为输出模式 pinMode(Motor_AIN2,OUTPUT); } void loop() {
while(Serial.available()>0) //检测串口是否有命令 {
Motor_Order=Serial.read(); //将命令存储在变量中 switch(Motor_Order) {
//发送字符1电机正转 case '1' : analogWrite(Motor_AIN1,250); analogWrite(Motor_AIN2,0);Serial.println("/*电机正传*/");break; //发送字符2电机反转 case '2' : analogWrite(Motor_AIN1,0); analogWrite(Motor_AIN2,250);Serial.println("/*电机反转*/");break; //发送其他字符电机停转 default : analogWrite(Motor_AIN1,0); analogWrite(Motor_AIN2,0);Serial.println("/*停转/");break; } } }
烧录之后打开串口分别输入指令就可以了
总结
如果电机不转的的是驱动电压不够的问题,我用的12V的航模电池
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147733.html