1-Arduino与小车的组装与测试

最终的效果

1-Arduino与小车的组装与测试

 

 

1、 准备材料

a)      1-Arduino与小车的组装与测试

b)      1-Arduino与小车的组装与测试

c)       Arduino UNO官方正版

d)      电池盒 (我这里使用的是9v的)

e)      准备一些杜邦线

f)        面包板1-Arduino与小车的组装与测试

2、 组装

a)      根据小车赔配送的说明书安装(或者这位博客里有https://blog.****.net/qq_16775293/article/details/77427060

b)      1-Arduino与小车的组装与测试 

c)       

3、 安装L298N驱动

a)      1-Arduino与小车的组装与测试

b)      +12V:该引脚接的电压是驱动模块所能输出给电机的最大电压,一般直接接电池。12V是由L298N芯片所能接受最大电压而定,一般介入5~12V电压。在此我们接入的电压为两节18650串联的电压,即3.7+3.7=7.4V;

 

c)       GND: 在该项目中GND即为电源的负极,同时要保证Arduino开发板,驱动模块等所有模块的GND连在一起才可以正常工作。在某些复杂的项目中还需要区分数字地和模拟地,在此不做详细介绍。

 

d)      +5V:L298N模块(注意不是L298N芯片)内含稳压电路(将高电压转换为低电压的电路),在模块内部将”+12V”引脚输入的电压转化为可供开发板使用的+5V电压,一般将次输出接入到开发板为开发板供电。

 

e)      L298N有两路输出,所以可以控制小车前进、后退、转弯,其中:

f)        ENA: 代表第一路输出的电压大小。驱动模块输出电压越高,电机转速越快。

g)      1.当其输入为0V的时候,驱动模块输出对第一路电机输出电压为0V;

h)      2.当其输入为3.3V的时候,驱动模块对第一路电机输出电压为”+12V”引脚的输入电压。

i)        3.由于ENA输入电压的高低控制驱动对电机的输出电压,因此当我们需要对小车运动速度进行控制的时候,一般通过PWM对”ENA”引脚进行控制。

 

j)        IN1/IN2:这两个引脚控制电机正反转方向。例:假如IN1输入高电平3.3V,IN2输入低电平0V,ENA为3.3V,电机正转,此时将IN1输入改为0V,IN2输入改为3.3V,其他条件不变,则电机将会反转。

 

k)       OUT1/OUT2:这两个引脚分别接电机的两极。

 

l)        ENB,IN3/IN4,OUT3/OUT4引脚控制第二路输出,与上述ENB,IN3/IN4,OUT3/OUT4功能相似。

 

m)    驱动安装

n)          将准备好的驱动模块固定在小车,将从地盘电机延长出来的导线分左右两边分开,左边两个电机中每一个电机的其中一根线OUT1,另外一个接OUT2。同理,右边两个电机中每一个电机的其中一根线OUT3,另外一个接OUT4,并用螺丝刀将拧蓝色接线柱上方的螺丝拧紧。

o)      电池座固定

p)          将电池固定在小车尾部,将电源的两根线链接到+12V和GND引脚,红色代表正极,接到+12V,黑色代表负极,接到GND(一般电路中默认红色为正,黑色为负),并拧紧螺丝固定

1-Arduino与小车的组装与测试

q)      Ardunio开发板安装

r)           将Arduno板子用螺丝固定在小车中部,由于小车运动中也需要对开发板供电,此时我们用两根公对公的杜邦线为其供电,红色(也可以为其他颜色)杜邦线一边插入Arduino板的”5V”引脚,一边插到L298N驱动的”+5V”引脚,黑色(也可以为其他颜色)杜邦线一边插入Arduino板的”GND”引脚,一边插到L298N驱动的”GND”引脚。

s)           为控制电机的正反转,此时我们需要拿四根公对母杜邦线,将L298N驱动的IN1/IN2/IN3/IN3引脚与Arduino板的4/5/6/7号引脚对应相连,最终拼装图如下:

1-Arduino与小车的组装与测试

4、 Ardunio程序编写

#include<Servo.h>

//定义五中运动状态

#defineSTOP      0   //停止

#defineFORWARD   1   //请进

#defineBACKWARD  2   //后退

#defineTURNLEFT  3   //左转

#defineTURNRIGHT 4   //右转

//定义需要用到的引脚

int leftMotor1 = 4;

int leftMotor2 = 5;

int rightMotor1 = 6;

int rightMotor2 = 7;

 

void setup() {

  // put yoursetup code here, to run once:

  //设置控制电机的引脚为输出状态

  pinMode(leftMotor1, OUTPUT);

  pinMode(leftMotor2, OUTPUT);

  pinMode(rightMotor1, OUTPUT);

  pinMode(rightMotor2, OUTPUT);

}

 

void loop() {

  // put your maincode here, to run repeatedly:

  int cmd;

  for(cmd=0;cmd<5;cmd++)//依次执行向前、向后、向左、想有、停止四个运动状态

  {

    motorRun(cmd); 

    delay(2000);//每个命令执行2s

  }

}

//运动控制函数

void motorRun(int cmd)

{

  switch(cmd){

    case FORWARD:

      digitalWrite(leftMotor1, LOW);

      digitalWrite(leftMotor2,HIGH);

      digitalWrite(rightMotor1,LOW);

      digitalWrite(rightMotor2,HIGH);

      break;

     case BACKWARD:

      digitalWrite(leftMotor1,HIGH);

      digitalWrite(leftMotor2, LOW);

      digitalWrite(rightMotor1,HIGH);

      digitalWrite(rightMotor2,LOW);

      break;

     case TURNLEFT:

      digitalWrite(leftMotor1,HIGH);

      digitalWrite(leftMotor2, LOW);

      digitalWrite(rightMotor1,LOW);

      digitalWrite(rightMotor2,HIGH);

      break;

     case TURNRIGHT:

      digitalWrite(leftMotor1, LOW);

      digitalWrite(leftMotor2,HIGH);

      digitalWrite(rightMotor1,HIGH);

      digitalWrite(rightMotor2,LOW);

      break;

     default:

      digitalWrite(leftMotor1, LOW);

      digitalWrite(leftMotor2, LOW);

      digitalWrite(rightMotor1,LOW);

      digitalWrite(rightMotor2,LOW);

  }

a)      }

5、 电机运动需要经过驱动模块驱动,而驱动模块的输出状态又取决去IN1/IN2/EN,IN3/IN4/ENB这两组引脚的控制。本实验只是简单控制电机的运动,不用控制电机的转速,因此ENA,ENB默认接入高电平(买过来模块的时候,你会发现这两个引脚都通过跳线帽和”+5V”的引脚相连,即输出最大电压),此时我们只需控制IN1/IN2,IN3/IN4两组引脚即可对小车的运动状态进行控制。因此我们在此定义以下四个引脚

6、

 1-Arduino与小车的组装与测试

 

如果是想要用ros来控制Arduino来运行小车,请看我的

只能接受一条消息:

https://blog.****.net/qq_41931519/article/details/80342279

上下左右键控制小车运行:

https://blog.****.net/qq_41931519/article/details/80383818