您当前的位置:首页 > Arduino项目 > Arduino小制作 > 使用Arduino+L298N控制智能小车直流电机 网站首页 Arduino小制作
使用Arduino+L298N控制智能小车直流电机
发布时间:2017-08-31 12:32:20编辑:阅读()
-
今天的话题是怎么样用Arduino和L298N控制直流电机,为后续的智能小车做准备。
主要分为三个部分:L298N模块介绍、L298N模块验证、arduino代码实现
1、L298N介绍
先来讲讲电机驱动,驱动一般使用L298N,L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。现在有很多成品模块卖,而且价格也不贵,很适合大家diy智能小车。L298N模块多数都是长下边这个样子,这里要注意,L298N模块12v是给模块供电,5v是输出,意思就是L298N的模块接入12V电源,同时输出5V电源可以给其他模块供电。
下边这个是L298N模块的电路图,上次要电路图的小伙伴快点来拿 后边我会给大家演示如何用arduino来通过L298N控制电机
2、L298N模块测试验证
首先是连接L298N和电机:
第一步:连接电源,12V 接到 L298N模块 电机驱动模块的 +12V 和 GND,L298N的+5V 电源输出接Arduino的VCC和GND给Arduino板子供电。有些小伙伴可能说如果电机供电以及板子供电是同一个电源,可能电机转动会影响到板子供电。其实这种小黄电机耗电量很低的,目前我测试是没有发现问题。据说有人用12V电池同时给电机和Arduino供电也没有问题,也没有出现供电不足问题
第二步:左电机连接到L298N模块的OUT3和OUT4,右电机连接到L298N模块的OUT1和OUT2
第三步:就是L298N模块的IN控制引脚和Arduino板子的连接。IN1连接到引脚6,IN2连接到引脚7,IN3连接到引脚4,IN4连接到引脚5,L298N模块的ENA和ENB都接+5V,一般模块都是用跳线帽短接就可以了。
第四步:测试,要先保证电机和电路没有问题,才能继续写代码,因为如果不确定硬件正常,后边如果出了问题无法区分出来是电路还是软件问题 ,测试电机的具体方法位:IN1连接到Arduino板子 +5V IN2连接到GND,然后观察电机是否旋转,同时也要观察电机的转向,另外把IN1连接到GND,IN2连接到+5V看看电机是否反转,一般电机都会旋转,如果不旋转那就要仔细检查电路连接。
3、代码和调试
使用arduino编译并把下边的代码编译通过然后烧录到arduino里面,烧录完以后可以用串口助手连接arduino。分别通过串口给arduino发0,1,2,3,4看看电机是不是按照预期那样转的。如果电机旋转与预期一样说明通过arduino控制电机就已经成功了。
#define IN1 6 // 7 6 右轮 #define IN2 7 #define IN3 4 // 5 4 左轮 #define IN4 5 #define LEFT '3' //左转编码 #define RIGHT '4'//右转编码 #define GO '1'//前进编码 #define BACK '2'//后退编码 #define STOP '0'//停止编码 void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); initCar(); } void loop() { // put your main code here, to run repeatedly: if(Serial.available()>0){ char ch = Serial.read(); if(ch == GO){ //前进 go(); }else if(ch == BACK){ //后退 back(); }else if(ch == LEFT){ //左转 turnLeft(); }else if(ch == RIGHT){ //右转 turnRight(); }else if(ch=='0'){ //停车 stopCar(); } } } void initCar(){ //默认全是低电平 停止状态 digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); } /** * 左转 */ void turnLeft(){ digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); //右轮前进 digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); //左轮不动 } /** * 右转 */ void turnRight(){ digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); //右轮不动 digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); //左轮前进 } /** * 前进 */ void go(){ digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); //右轮前进 digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); //左轮前进 } /** * 倒车 */ void back(){ digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); //右轮后退 digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); //左轮后退 } /** * 停车 */ void stopCar(){ initCar(); }
关键字词:arduino,L298N,智能小车,直流电机