Arduino 实例(四十四)TB6612FNG与直流电机控制
1 为什么用TB6612FNG?一张图很能说明问题,L298N电机驱动模块体积太大了,TB6612FNG模块体积小,可以实现同样的功能
2 TB6612FNG引脚连接
Arduino uno
TB6612FNG
电机
电源
PIN3
PWMA
8
AN1
9
AN2
10
STBY
A01
正极
A02
负极
5V
VCC
GND
GND
GND
VM
6V输入
3 接线示意图
4 实物接线图
5 程序
//motor A connected between A01 and A02//motor B connected between B01 and B02 int STBY = 10; //standby //Motor Aint PWMA = 3; //Speed control int AIN1 = 9; //Directionint AIN2 = 8; //Direction //Motor Bint PWMB = 5; //Speed controlint BIN1 = 11; //Directionint BIN2 = 12; //Direction void setup(){pinMode(STBY, OUTPUT); pinMode(PWMA, OUTPUT);pinMode(AIN1, OUTPUT);pinMode(AIN2, OUTPUT); pinMode(PWMB, OUTPUT);pinMode(BIN1, OUTPUT);pinMode(BIN2, OUTPUT);} void loop(){move(1, 255, 1); //motor 1, full speed, leftmove(2, 255, 1); //motor 2, full speed, left delay(1000); //go for 1 secondstop(); //stopdelay(250); //hold for 250ms until move again move(1, 128, 0); //motor 1, half speed, rightmove(2, 128, 0); //motor 2, half speed, right delay(1000);stop();delay(250);}void move(int motor, int speed, int direction){//Move specific motor at speed and direction//motor: 0 for B 1 for A//speed: 0 is off, and 255 is full speed//direction: 0 clockwise, 1 counter-clockwise digitalWrite(STBY, HIGH); //disable standby boolean inPin1 = LOW;boolean inPin2 = HIGH; if(direction == 1){ inPin1 = HIGH; inPin2 = LOW;} if(motor == 1){ digitalWrite(AIN1, inPin1); digitalWrite(AIN2, inPin2); analogWrite(PWMA, speed);}else{ digitalWrite(BIN1, inPin1); digitalWrite(BIN2, inPin2); analogWrite(PWMB, speed);}} void stop(){//enable standby digitalWrite(STBY, LOW); }6 视频效果
TB6612驱动直流电机 - 西瓜视频 (ixigua.com)
声明:以上内容来源于网络,如有侵权请联系我们(123@shiyan.com)删除!
页:
[1]