查看: 769|回复: 4

交作业:第1个作品,红外避障小车

[复制链接]

该用户从未签到

发表于 2021-10-11 22:57 | 显示全部楼层 |阅读模式
交作业:第1个作品,红外避障小车。       经过N次调整优化,终于把红外避障小车“使能”了。首先感谢论坛col大神、海神及其他大神发布的教程和资料,这次收获颇丰,着实感谢!
00.png
原装Arduino UNO R3主板+OPEN JUMPER扩展板
(官方板主要用来学习例子和跑程序、试车,调试完小车后更换为其他兼容板,毕竟是给小朋友做玩具,能用就可以了,不追求稳定性)
本小车使用的主要元器件:
1、UNO主板+扩展板*1
2、4路红外模块*1
3、130减速电机*4
4、L298N驱动板*1
5、10000mAh移动电源
6、MT3608 2A DC-DC升压模块*1
7、LED灯*2
8、220欧姆电阻*2
9、简易小车套件*1

图形编程工具:Mixly
001.png 0001.png 002.png
一、将马达和轮子固定在小车底盘上,然后安装驱动板、红外模块。为了耐用一点,接口焊接完成后都用了热熔胶加固。

06.png 01.png 03.png
二、电源选择:
第1次:采用2节18650电池串联供电,2节没有保护板的18650电池带载UNO主板+超声波+1602 LCD一晚上就挂掉了(过放),使用18650电池的千万要注意
第2次:采用移动电源5V USB口+升压模块(升压至7~9V),马达执行转弯、倒车时,经常触发移动电源过流保护,导致整个系统断电。
第3次:撬开移动电源,从电池正、负极直接接线至升压模块,这次没有问题了。充电还是用原来移动电源的Micro D口,充电安全、方便,就是放电没有保护,需要时刻关注电池电量,不过好在移动电源都有电量显示。后期准备在电池输出这里加上开关和保护板,这样就可以解决过放的问题了。

04.png 05.png
为了增加小车的乐趣,在车两侧各增加了一个LED灯,左转时左侧LED灯亮,右转时右侧LED等亮。
三、连接
L298N驱动板IN1、IN2、IN3、IN4针脚分别接入UNO D4、D5、D6、D7接口
红外模块IN1、IN2、IN3、IN4针脚分别接入UNO D8、D9、D10、D11接口,D8、D9接左侧红外避障,D10、D11接右侧红外避障。
LED1、LED2分别接在UNO D12、D13接口
思路:4路红外,2上2下安装,左侧2个遇到障碍物输出低电平,程序控制小车右转;右侧2个遇到障碍物输出低电平,程序控制小车左转;左右两侧4个同时遇到故障,后退。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四、Mixly图形程序
1111.png 2222.png
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
五、程序
void setMotor8833(int speedpin,int dirpin, int speed)
{
  if (speed == 0)
  {
    digitalWrite(dirpin, LOW);
    analogWrite(speedpin, 0);
  }
  else if (speed > 0)
  {
    digitalWrite(dirpin, LOW);
    analogWrite(speedpin, speed);
  }
  else
  {
    digitalWrite(dirpin, HIGH);
    analogWrite(speedpin, -speed);
  }
}
//执行直行
void Go_Straight() {
  setMotor8833(5, 4, 150);
  setMotor8833(6, 7, 150);
}
//执行停止
void Stop() {
  setMotor8833(5, 4, 0);
  setMotor8833(6, 7, 0);
}
//执行左转
void Turn_Left() {
  setMotor8833(5, 4, -150);
  setMotor8833(6, 7, 100);
  delay(100);
  digitalWrite(13,HIGH);         //左转时D13针脚接的LED灯亮100毫秒后熄灭
  delay(100);
  digitalWrite(13,LOW);
}
//执行右转
void Turn_Right() {
  setMotor8833(5, 4, 150);
  setMotor8833(6, 7, -150);
  delay(300);
  digitalWrite(12,HIGH);         //右转时D12针脚接的LED灯亮100毫秒后熄灭
  delay(100);
  digitalWrite(12,LOW);
}
//直行倒车
void Go_Back() {
  setMotor8833(5, 4, -150);
  setMotor8833(6, 7, -150);
  delay(200);
  digitalWrite(12,HIGH);
  digitalWrite(12,HIGH);
  delay(100);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
}

void setup(){
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(8, INPUT);
  pinMode(11, INPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(5, LOW);
  digitalWrite(4, LOW);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop(){
  while (digitalRead(9) + digitalRead(10) == 2 && digitalRead(8) + digitalRead(11) == 2) {
    Go_Straight();
    if (digitalRead(8) == 0 || digitalRead(9) == 0) {
      Turn_Left();

    }
    if (digitalRead(10) == 0 || digitalRead(11) == 0) {
      Turn_Right();

    }
    if (digitalRead(8) == 0 && digitalRead(11) == 0) {
      Go_Back();
      Turn_Right();

    }
    if (digitalRead(9) == 0 && digitalRead(10) == 0) {
      Go_Back();
      Turn_Right();

    }
  }

}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
试了一波,发现程序优化的空间还很大,学习之路看来还很漫长......

接下来提问(还是电源方面的问题):
1、3串18650电池12.6V 1800mAH(带保护板),如果采用路由器12V 1A电源充电,安不安全?
        充电过程中,当3串18650电池电压充至充电器电压一致,均为12V时,此时尚未达到保护板的截止电压,保护板不起作用,会不会把电池充炸呢?我看了锂电池组专用充电器是到了12.6V之后,会切断输出。但是路由器这种纯粹供电的电源,好像没有这个电路设计。
2、10000mAh聚合物锂电池选择多少A的保护板比较好?
        保护板有1~6颗MOS管,如何选合适?

02.png
01.png

签到天数: 18 天

[LV.4]偶尔看看III

发表于 2021-10-12 09:59 | 显示全部楼层
3串18650电池12.6V 带均衡带保护那种保护板,我用过和测试过连续充电一个月,只要保护板不炸不坏,没有任何过充问题,测试用过转灯和不转灯的都行。我现在已经改为8.4V两串,也是带均衡带保护那种,因为12.6v降5v压差有点大

该用户从未签到

 楼主| 发表于 2021-10-12 10:56 | 显示全部楼层
黄非红 发表于 2021-10-12 09:59
3串18650电池12.6V 带均衡带保护那种保护板,我用过和测试过连续充电一个月,只要保护板不炸不坏,没有任何 ...

收到非常感谢!
另外还想请教一下,2串带板电池放电截止电压一般为5.0~5.5V,UNO供电需要7~12V,如果直接用2串带板电池直接给UNO主板供电的话,后期会不会出现电压太低导致主板损坏。

签到天数: 18 天

[LV.4]偶尔看看III

发表于 2021-10-24 21:28 | 显示全部楼层
cezhoubo 发表于 2021-10-12 10:56
收到非常感谢!
另外还想请教一下,2串带板电池放电截止电压一般为5.0~5.5V,UNO供电需要7~12V,如果直 ...

带平衡的两串板子截止电压去不了那么低,大概6.2v左右就自动保护了,另外我加了降压(稳压模块)给单片机供电,不存在波动,电池那端电源最好并个大电容470uf左右(理论上越大越好),uno这边降压后的电源也要100uf、0.1uf滤波,还有电机两极也要0.1uf滤波

该用户从未签到

 楼主| 发表于 2021-10-27 16:19 | 显示全部楼层
黄非红 发表于 2021-10-24 21:28
带平衡的两串板子截止电压去不了那么低,大概6.2v左右就自动保护了,另外我加了降压(稳压模块)给单片机 ...

收到,非常感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

arduino解码sbus
arduino解码sbus
市面上有很多sbus接收机,它只有一根线就可以实现很多通道的通信,其本质利用了串口通
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
wemos d1 wifi具体叫啥名,我也迷糊了,无法上传程序
wemos d1 wifi具体叫啥名
淘宝入手一块这样的板,详情页提供了教程,还提供了 arduino iDE 1.6.5免安装版本,
求大佬帮忙arudino上传报错programmer is not responding
求大佬帮忙arudino上传报
报错信息avrdude: stk500_recv(): programmer is not responding avrdude: stk500_get
新手求助!端口不显示的问题
新手求助!端口不显示的问
我的板子连到电脑上没有显示端口,试过安装ch340和驱动精灵都识别不出来,数据线也换
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表