找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15125|回复: 5
收起左侧

Arduino循迹小车制作总结

[复制链接]
ID:320288 发表于 2019-1-26 22:04 | 显示全部楼层 |阅读模式
本帖最后由 zzh啊 于 2019-1-28 17:13 编辑

P90103-201310.jpg
跟着老师一起做机电导论项目,其实就是制作一个循迹小车。
说在前面:
可能有很多像很多我这样的新手搜到我这样的第一时间会马上去找代码,希望直接下载到小车里完成任务就完事了。但是这样是不好的,对自己的成长并没有好处,我的小车的引脚连的是什么,我的小车的结构,我的小车的状况和你的是不一样的。还是建议这样的像我一样的新手系统的去学习各种基础知识,至少至少要能看懂代码。
小车信息如下:
1.电源
这次课设用的小车电源是7.4V、300mAh,对单片机这个电压有点太高,对轮子有点太低,因此我认为小车上应该有稳压和升压的部分,确保小车能够正常工作。
2.电机驱动
我本人曾经接触电机驱动,知道要使电机转动需要外加驱动实现。
驱动板同时驱动两个直流电机,通过对六个口的控制就可以分别实现对电机正反转,加减速的控制,完成向前向后右转,左转等各种组合运动,每个电机用三个口控制,使能端和PWM输入端控制电机的转动与停止,也能用于控制调速。也就是说,对于这个输入端输入一定频率的脉冲,电机一段时间内转动一段时间内停止转动,但是由于直流电机的惯性特征,它不会立即停下来,只要频率比某个值就不会感觉到电机的停止现象,而是一种很连续的运动,只改变一个周期内高低压的时间比例,就可以改变电机的速度。另外两个输入端是为了控制方向。
3.小车的整体设计
小车为五路双驱小车,最前方是万向轮,五路传感器对称分布,且不位于同一直线上。左右两个电机和轮胎对称分布,大小相同,便于程序的撰写和修改。
小车的转向依赖于左右轮查速,左轮快右轮慢则右转,在转急弯时甚至可以让一个轮子倒转实现更好的转弯效果

其实一个月前我也是个渣渣,那时候也特别想了解arduino小车,学校早就发了,也找了很多资料,没有系统学习,没有人领进门,虽然看起来很用功,但是实际上去做循迹一点也做不来,程序也不会写,这次跟着老师学,虽然还是个小渣渣,但是已经算是进门了,可以组装小车,可以自主写一些程序,现在在试着做避障小车 P90126-155643.jpg P90126-155654.jpg
简单循迹策略
首先是红外对管
原理就不讲了,红外对管用来探测黑线白线,黑线白线传递的信号是不一样的,我们根据五个探测器不同的状态判断小车和线,


啊偶,原来可以继续编辑,我接上面的写吧
把五个传感器分为12345号,我们可以通过判断12345号反馈的信号(即像图中这种状况就是1号传感器感应到黑线,这种情况就是偏左太多了),根据反馈的情况合理控制小车的速度和转弯速度。



把程序读懂

下面是
定义各个引脚叫什么,其实引脚不定义也可以,但是写程序时去记住每一个数字而不是代号要困难得多。所以要尽可能去给每个引脚起一个好的名字,方便管理和后编写程序,

  #define right1 5   
#define speedPinRight 6        
//一个轮子转动有三个因素:PWM调速,使能端1,使能端2,这里就是在定义轮子的三个因素

#define right2 7          //
#define left1 8         //
#define speedPinLeft 9    //
void setup()
{
  pinMode(right1,OUTPUT);
  pinMode(right2,OUTPUT);
  pinMode(speedPinRight,OUTPUT);
  pinMode(left1,OUTPUT);
  pinMode(left2,OUTPUT);
  pinMode(speedPinLeft,OUTPUT);
  1. <div>void setup() {</div><div> 这里放一下arduino的结构,这一部分可以理解为初始化,放一些定义的东西</div><div>
  2. </div><div>}</div><div>
  3. </div><div>void loop() {</div><div>  // put your main code here, to run repeatedly:</div><div>
  4. </div><div>}</div>
复制代码




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:320288 发表于 2019-1-28 11:42 | 显示全部楼层
S90128-11145363.jpg
把五个传感器分为12345号,我们可以通过判断12345号反馈的信号(即像图中这种状况就是1号传感器感应到黑线,这种情况就是偏左太多了),根据反馈的情况合理控制小车的速度和转弯速度。
有一个事忘说了
可能有很多像很多我这样的新手搜到我这样的第一时间会马上去找代码,希望直接下载到小车里完成任务就完事了。但是这样是不好的,对自己的成长并没有好处,我的小车的引脚连的是什么,我的小车的结构,我的小车的状况和你的是不一样的。还是建议这样的像我一样的新手系统的去学习各种基础知识,至少至少要能看懂代码。
回到正题
  1. <p class="MsoNormal"><span lang="EN-US">int qzpwm=5;<o:p></o:p></span></p>

  2. <p class="MsoNormal"><span lang="EN-US">int qz1=2;<o:p></o:p></span></p>

  3. <p class="MsoNormal"><span lang="EN-US">int qz2=3;<o:p></o:p></span></p>

  4. <p class="MsoNormal"><span lang="EN-US">int qypwm=6;<o:p></o:p></span></p>

  5. <p class="MsoNormal"><span lang="EN-US">int qy1=4;<o:p></o:p></span></p>

  6. <p class="MsoNormal"><span lang="EN-US">int qy2=7;<o:p></o:p></span></p>

  7. <p class="MsoNormal"><span lang="EN-US">int hzpwm=9;<o:p></o:p></span></p>

  8. <p class="MsoNormal"><span lang="EN-US">int hz1=10;<o:p></o:p></span></p>

  9. <p class="MsoNormal"><span lang="EN-US">int hz2=8;<o:p></o:p></span></p>

  10. <p class="MsoNormal"><span lang="EN-US">int hypwm=11;<o:p></o:p></span></p>

  11. <p class="MsoNormal"><span lang="EN-US">int hy1=13;<o:p></o:p></span></p>

  12. <p class="MsoNormal"><span lang="EN-US">int hy2=12;</span></p>
复制代码
这些是干嘛的呢
下回再讲吧
回复

使用道具 举报

ID:1 发表于 2019-1-28 17:51 | 显示全部楼层
先点击工具栏代码框的标志<>,然后粘贴代码,点提交就不会出现乱码的
回复

使用道具 举报

ID:320288 发表于 2019-1-28 18:19 | 显示全部楼层
admin 发表于 2019-1-28 17:51
先点击工具栏代码框的标志,然后粘贴代码,点提交就不会出现乱码的

好滴,明白了。
回复

使用道具 举报

ID:477270 发表于 2019-2-16 22:39 | 显示全部楼层
这个真不错的制作
回复

使用道具 举报

ID:729666 发表于 2020-4-15 13:07 | 显示全部楼层
请问楼主可以分享下电路设计和零配件型号嘛 非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表