实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机

一、实践目的

通过蓝牙模块控制电机的转动
这里用的是Arduino UNO 做主控版,最后搞定是这样的
实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机_第1张图片
实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机_第2张图片

二、HC06 蓝牙模块

实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机_第3张图片
HC06是常用的蓝牙从机模块,串口9600波特率,他有4个接口接入Arduino就可以了,连线还是比较简单的
VCC 接入5V
GND 接地
TX 接 Arduino的RX 0脚
RX 接 Arduino的TX 1脚
配对以后当全双工串口使用,默认配对密码为1234

三、TB6612FNG电机驱动模块

实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机_第4张图片
TB6612 是双驱动,也就是可以驱动两个电机
STBY 使能口 接Arduino的 IO 口,清零电机全部停止,置 1则通过 AIN1 AIN2,BIN1,BIN2 来控制两个电机的正反转

1、逻辑真值表
实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机_第5张图片

2、接线
实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机_第6张图片
参考这个图
VM接 12V 以内电源
VCC 接 5V 电源
GND 接电源负极
STBY 使能口,接Arduino的8脚
PWMA为A电机的速度,接Arduino的9脚
AIN1 接Arduino的7脚
AIN2 接Arduino的6脚
AO1 接电机的MA1脚
AO2 接电机的MA2脚

四、测试程序

烧代码的时候蓝牙模块先别给电,不然会上传失败
实验代码如下,可以随意修改实验看看效果

int STBY = 8; //使能端
int PWMA = 9; //电机PWM输出控制脚
int AIN1 = 7; //电机正级
int AIN2 = 6; //电机负级

String comdata="";  //comdata

void setup() {
  Serial.begin(9600);
  pinMode(STBY, OUTPUT);
  pinMode(PWMA, OUTPUT);
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
}

//运行电机
// speed 速度 0~255
// direction 方向 1为反转
void runElectric(int speed, int direction){
  digitalWrite(STBY, HIGH); //使能驱动模块
  boolean Pin1 = LOW;
  boolean Pin2 = HIGH;
  if (direction == 1){
    Pin1 = HIGH;
    Pin2 = LOW;
  }
  digitalWrite(AIN1, Pin1);
  digitalWrite(AIN2, Pin2);
  analogWrite(PWMA, speed);
}

//停止电机
void stopElectric(){
  digitalWrite(AIN1, LOW);
  digitalWrite(AIN2, LOW);
  analogWrite(PWMA, 0);
  digitalWrite(STBY, LOW);
}

void loop() {
  while(Serial.available()>0)
  {
    comdata+=char(Serial.read());
    delay(2);
  }

  //只要有输入就反转2秒
  if (comdata.length()>0)
  {
    Serial.println("read data:");
    //这里可以用上位机查看串口输出
    Serial.println(comdata);
    comdata = "";

    runElectric(255,1);
    delay(2000);
    stopElectric();
  }
}

你可能感兴趣的:(硬件开发)