今天继续来介绍这些电子元件。
4.LM2596S DC-DC降压电源模块
介绍:一块降低调整电压的元件 接线方式: IN+ 输入正极 IN-输入负极 (分别接电源的正负极) OUT+输出正极 OUT-输出负极 (输出你想要的电压) 基本工作原理: 1、输入电压范围:直流3.2V 至 40V (输入的电压必须比要输出的电压高1.5V以上。不能升压)产品特点: 2、输出电压范围:直流 1.25V至 35V 电压连续可调,高效率(可高达92%)输出电流可达3A。
使用方法: 1.接入电源(3-40V),电源指示灯亮,模块正常工作。 2.调整蓝色电位器旋钮(一般顺时针旋转升压,逆时针旋转降压)并用万用表监测输出电压达到需要电压为止。
注意: 1.长时间工作建议在2.5A以内的电流使用,同时加上散热片(10W以上输出);由于是降压模块,为了保证输出稳定,请保持最小1.5V压差。 2.一定一定不要把正负极接错,小东西,比较精贵,一旦接反,很可能就烧了。。
5.TB6612FNG 电机驱动模块
介绍:一块控制各种电机的模块。
基本工作原理:通过控制I/O口的输出,来控制电机的速度,方向(顺,逆时针)。 使用代码:
//motor A connected between A01 and A02
//motor B connected between B01 and B02
int STBY = 10; //standby
//Motor A
int PWMA = 3; //Speed control
int AIN1 = 9; //Direction
int AIN2 = 8; //Direction
//Motor B
int PWMB = 5; //Speed control
int BIN1 = 11; //Direction
int 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, left
move(2, 255, 1); //motor 2, full speed, left
delay(1000); //go for 1 second
stop(); //stop
delay(250); //hold for 250ms until move again
move(1, 128, 0); //motor 1, half speed, right
move(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);
}
代码是网上找的,不是博主自己写的。大致的思路就是用这个电机驱动来控制哪一个电机运转,速度,方向(顺逆时针)
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);
}
}
这里编写了一个move函数,函数的参数分别是 控制的是哪个电机,速度,方向(顺逆时针)。电机方向控制,就是通过输入1或非1的参数来对inPin1值和inPin2值的改变,从而控制了电机哪头是高电平及低电平控制方向。速度则是由analogWrite()控制。(速度最大不可超过255) 连接示意图:(因为太过麻烦,所以找的图片,更加清楚一点)
引脚说明:
A控制信号输入------PWMA VM ------电机驱动电压输入端(4.5V-15V)
A电机输入端2 ------AIN2 VCC ------逻辑电平输入端(2.7V-5.5V)
A电机输入端1 ------AIN1 GND ------ 接地
正常工作/待机状态控制端------STBY AO1 ------- A电机输出端1
B电机输入端1------BIN1 AO2 ------ A电机输出端2
B电机输入端2------BIN2 BO2 ------ B电机输出端2
B控制信号输入端------PWMB BO1 ------ B电机输出端1
接地------GND GND ------- 接地
我的想法:今天挺气人的。。。。 1.昨天测试了寻迹功能,今天测试避障。原本想着避障应该是最轻松的,但是却基本上搞了一天的时间。。。果然代码和硬件的结合,需要一定的磨练啊。本想着弄个智能小车,弄着弄着,越来越感觉像个智障小车。当然,我会在后续的博客中,写出自己所遇到的问题。 2.调试一天的小车总算是差不多,抽空写博客,本来博客的内容更丰富一些的,但是写到一半,电脑自带的浏览器用Markdown编辑时,整崩了。我也不知道是怎么回事,崩了之后,布局全都乱了,文章也发表不出去,只能从新来了。所以这篇应该算是比较精练了。。。。。当然内容少了一些。