坦克"/>
红外坦克
该模块具有极小的尺寸,仅5.5cm×5.5cm。支持电压范围7-24V,具有欠压保护功能。双路电机接口,每路额定输出电流 7A;瞬间峰值电流可达50A。类似 L298N 控制逻辑,每路都支持三线控制调速、正反转及刹车。控制信号使用灌电流驱动方式,支持绝大多数单片机直接驱动;使用光耦对全部控制信号进行隔离,避免电机动作时的回流电流对控制信号造成干扰;并且本模块具有静电泄放回路,避免了因静电造成危险。
配合Arduino源码,可以轻松实现电机控制。创客时代,我们能为您带来更多!
产品参数:
工作电压(VM):DC 7 ~ 24 V,欠压保护
支持电压范围: 6.5 ~ 27V
控制信号高电平(Vhi):DC 3.0 ~ 6.5V(兼容3.3V和5V TTL电平)
控制信号低电平(Vli):DC 0 ~ 0.8V
输出通道数:2路
每路控制型号电流:3mA ~ 11mA
每路额定输入电流:7A
每路峰值电流:50A
支持PWM调速方式
PWM最小有效脉宽:5us
工作温度:-25 ~ 80°C
尺寸:55mm * 55mm
固定孔:M3
重量:32g
引脚说明:
.php?title=(SKU:_DRI0041)_12/24V_7A_160W%E5%8F%8C%E8%B7%AF%E7%9B%B4%E6%B5%81%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9D%97
接线图:
#include <IRremote.h> // IRremote库声明//电机PIN const int IN1=5; const int IN2=4; const int ENA=6; const int IN3=8; const int IN4=7; const int ENB=9; //电机速度 int speed = 100;//红外接收 int RECV_PIN = 3; IRrecv irrecv(RECV_PIN); decode_results results; long control[7][3] = {//遥控器矫正数字{16580863, 16613503, 16597183},{16589023, 16621663, 16605343},{16584943, 16617583, 16601263},{16593103, 16625743, 16609423},{16582903, 16615543, 16599223},{16591063, 16623703, 16607383},{16586983, 16619623, 16603303} };//初始化电机PIN void initMotor(){pinMode(IN1, OUTPUT);pinMode(IN2, OUTPUT);pinMode(ENA, OUTPUT);pinMode(IN4, OUTPUT);pinMode(IN3, OUTPUT);pinMode(ENB, OUTPUT); } //初始化红外接收 void initIR(){irrecv.enableIRIn(); }void setup() {//初始电机 initMotor();//初始化红外接收 initIR(); }void loop() {/**Motor1_Brake();Motor2_Brake();delay(100);Motor1_Forward(200);//电机正转,PWM调速Motor2_Forward(200);//电机正转,PWM调速delay(1000);Motor1_Brake();Motor2_Brake();delay(100);Motor1_Backward(200);//电机反转,PWM调速Motor2_Backward(200);//电机反转,PWM调速delay(1000);**/// if (irrecv.decode(&results)){Serial.println(results.value, HEX);//以16进制换行输出接收代码if (results.value == 4294967295) {//long click } else {if (results.value == control[0][0]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor1_Backward(speed);//电机反转,PWM调速} else if (results.value == control[0][1]) {//上Motor1_Backward(speed);//电机反转,PWM调速Motor2_Backward(speed);//电机反转,PWM调速} else if (results.value == control[0][2]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor2_Backward(speed);//电机反转,PWM调速} else if (results.value == control[1][0]) {//左 } else if (results.value == control[1][1]) {//中Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2} else if (results.value == control[1][2]) {//右 } else if (results.value == control[2][0]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor1_Forward(speed);//电机正转,PWM调速} else if (results.value == control[2][1]) {//下Motor1_Forward(speed);//电机正转,PWM调速Motor2_Forward(speed);//电机正转,PWM调速} else if (results.value == control[2][2]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor2_Forward(speed);//电机正转,PWM调速} else if (results.value == control[3][0]) {//0 } else if (results.value == control[3][1]) {} else if (results.value == control[3][2]) {//st } else if (results.value == control[4][0]) {//1speed = 100;} else if (results.value == control[4][1]) {//2speed = 200;} else if (results.value == control[4][2]) {//3speed = 300;} else if (results.value == control[5][0]) {//4speed = 400;} else if (results.value == control[5][1]) {//5speed = 500;} else if (results.value == control[5][2]) {//6speed = 600;} else if (results.value == control[6][0]) {//7speed = 700;} else if (results.value == control[6][1]) {//8speed = 800;} else if (results.value == control[6][2]) {//9speed = 900;}}irrecv.resume(); // 接收下一个值 }delay(100); }void Motor1_Forward(int Speed) //电机1正转,Speed值越大,电机转动越快 {digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);analogWrite(ENA,Speed); }void Motor1_Backward(int Speed) //电机1反转,Speed值越大,电机转动越快 {digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);analogWrite(ENA,Speed); } void Motor1_Brake() //电机1刹车 {digitalWrite(IN1,LOW);digitalWrite(IN2,LOW); } void Motor2_Forward(int Speed) //电机2正转,Speed值越大,电机转动越快 {digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);analogWrite(ENB,Speed); }void Motor2_Backward(int Speed) //电机2反转,Speed值越大,电机转动越快 {digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);analogWrite(ENB,Speed); } void Motor2_Brake() {digitalWrite(IN3,LOW);digitalWrite(IN4,LOW); }
转载于:.html
更多推荐
红外坦克
发布评论