使用arduino制作小车-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9632|回复: 3

使用arduino制作小车

[复制链接]
发表于 2013-1-20 13:44 | 显示全部楼层 |阅读模式
本帖最后由 smtp 于 2013-1-20 18:40 编辑

e5fbe0.png
制作时间:2天
制作难度:★★★★☆
GEEK指数:★★★★☆


想必每位有志于在机器人领域发展,为人类未来创造更加美好生活的有志之士(废话也是必不可少的)入门必不可少接触的一个练手之物便是智能小车,但是,一套现成的智能小车全套下来要上千大洋,所以我觉得我自己可以动手DIY一台这样神车出来,一来满足一下我练手的需要,二来将本人用万能板制作Arduino扩展板的经验介绍给大家。爱DIY,爱机器人,就一起来动手证明一下你自己吧。不当之处望大家指正。
整车尺寸:135*138*85mm


1   材料和工具 41c97s.png



  • 工具如图


材料:



  • 360度连续旋转舵机两个
  • 铝合金型材若干
  • 万向轮*1
  • arduino核心板*1
  • ST188光电传感器*2
  • LM339N电压比较器*1
  • 103电位器*4
  • IN4007二极管*1
  • 发光二极管*5
  • L7805CV*3
  • 47uf电解电容6
  • 107钽电容*1
  • 1K电阻*5
  • 10K电阻*4
  • 微动开关*2
  • 11.1V锂电池*1(航模用,不用担心功率不足)
  • 各种杜邦线、插头若干(用起来方便到爆)
51ghv1.png



  • 部分零件图



2   结构制作部分 n32j85.png



  • 加工好的全部的铝合金组件(全部手工)


pjkqbr.png



  • 机械结构组装好后就基本成型了,黑色的是绝缘电工胶带,便于安放各种电路板。


blkp6g.png

udvmv5.png



  • 这个轮子是在街上买的万向轮然后把轮子单独拆了下来,轮子厚20mm,直径50mm。
  • 轮子通过舵机的摆臂固定上,这样很方便的连接舵机。
  • 万向轮装上去,万向轮高35mm,后面俩轮子装到舵机上底板正好离地35mm,万向轮装上去正好合适,很幸运。


r6qsv8.png



  • 顺便说下,上图中前面那个杆是用来安装光电传感器的,由于没法直接打上孔往上装,必须解决跟万向轮凸起的那个冲突,我就画上一个弧线然后用锉磨了出来,磨出来还很满意。


7hzy0n.png



  • 这个构件是装中间两个光电传感器的(这两个光电传感器视功能可选)



3   电路制作部分 qd2qt6.png



  • 这我从网上买的光电传感器及其基于LM339N的电压比较器。
  • 但是用买来的光电传感器各种测试不理想,而且还得用导线跟Arduino连接,所以我就有了自己DIY的念头。我专门花一周时间学习了Altium designer 9,所以参考别人的光电传感器电压比较强模块我画了原理图也大致用PCB规划了一下走线,然后用万能板焊接,这个过程之后还是相当有成就感的。
j8112c.png



  • 光电传感器模块
  • Header2方便接跳线帽,可以选择是加电就返回信号,还是对发光二极管控制才返回信号,我用的加电就返回信号。


nneth3.png

cdeeon.png



  • 模块的走线规划。


9kfa0d.png



  • 光电传感器由发射二极管和接收管组成,A、K是红外发射二极管的正负极,C、E是接收管的正负极。
  • 只要A极接高电平、K极接低电平,红外发射管就能发出红外线。可以在传感器加上外围电路来检测接收管的信号,进而确定是否接受到反射回来的红外线,如上图图右下方的器件工作示意图。


0cfiri.png



  • 所谓电压比较的原理就是给任一输入端一个参考电压(通过转动电位器来改变参考电压的值),我的原理图中给IN-输入参考电压,当IN+的电压高于IN-时,OUT为低电平,反之亦然,IN+仅需与IN-相差mV就能在OUT端得到比较结果。


afzzdq.png



  • 在做Arduino扩展板的时候一定要对各端口的使用有个大致的规划,其实我觉得Arduino核心板的设计是不太理想的。
  • 大家都知道,万能板相邻两孔的间距是标准的100mil也就是2.54mm,图中b= 5.08mm,图中2.54<a<5.08,这就很尴尬,导致我之前焊的万能板如果要同时用0-7和8-13口的时候,板子需要很费劲的插上去,并且插上去万能板就弯曲了。
  • 所以我为了避免那样的情况再次发生,我板子里的端口只用了0-7和A0-A5(A口也可以做数字输入输出,端口为14-19),还有VIN-RESET。


9gblut.png



  • 电压比较器原理图
注:扩展板上加一个复位开关是非常方便调试的。


1yp9a9.png 原理图和PCB文件从这里打包下载



97w8z6.png



  • 用万能板焊好的电路,这个电路焊完非常有成就感,对于万能板来说应该密度还挺高的。
  • 考虑到给舵机供电的原因,我决定给每个舵机独立用7805供电,还好L7805CV的电流最大有1A,完全能满足舵机的需求,这个板我称作基础动力电源扩展板,预留了超声波接口和一个多余的舵机口,所以这个板用来实现超声波壁障也是没问题的。


pfo39z.png

sx581x.png

v0grgd.png



  • 都焊过前面那个板子了,焊这个板子当然是小菜一碟了。


ua6in8.png 插上调试,我的两个用万能板焊的板子没有任何问题,在佩服自己的同时也再次自信一下吧!


mhon4m.png

将电路装到小车上,开始调试……



4   程序部分(时间仓促,未精调,只是实现功能)供大家参考:
先定义各接口
int lled = 7;int rled = 4;int lmotor = 19;int rmotor = 18;int rdate = 0;int ldate = 0;int ledpin = 14;int l = 0;int r = 0;int a = 0;int b = 0;int c = 0;int e = 0;void setup(){ pinMode(lled,INPUT); pinMode(rled,INPUT); pinMode(lmotor,OUTPUT); pinMode(rmotor,OUTPUT); pinMode(ledpin,OUTPUT);}void run(){   for(int i = 0;i < a;i ++)   {     digitalWrite(lmotor,HIGH);     delayMicroseconds(ldate);     digitalWrite(lmotor,LOW);     digitalWrite(rmotor,HIGH);     delayMicroseconds(rdate);     digitalWrite(rmotor,LOW);     delay(18);   }}void loop(){ l = digitalRead(lled); r = digitalRead(rled); if ((l == HIGH) || (r == HIGH))   digitalWrite(ledpin,HIGH); else   digitalWrite(ledpin,LOW); if((l == HIGH)&&(r == HIGH)) {   while((l == HIGH)&&(r == HIGH))     {       l = digitalRead(lled);       r = digitalRead(rled);     } } else if(l == HIGH) //左边儿检测到黑线,左转 {   ldate = 1480;   rdate = 1630;   a = 10; } else if(r == HIGH) //右边儿检测到黑线,右转 {     ldate = 1350;     rdate = 1500;     a = 10; } else {   ldate = 1300;   rdate = 1730;   a = 1; }   run();}上图若干:
wl6log.png

ogoxpj.png

s3rh8h.png



  • 这个小车不算完,因为有太多的功能可供大家玩,比如我就装上了超声波和红外传感器,是不是挺萌的!
  • 与其叫这个东西小车,不如说它是每个机器人爱好者入门的神车吧!
本文所有文件打包下载

转载自 果壳:http://guokr.com

发表于 2013-1-20 17:59 | 显示全部楼层
转贴请注明出处,另外请把图片上传下,把代码排下版
发表于 2013-2-20 22:36 | 显示全部楼层
不标准很讨厌的
发表于 2013-3-8 00:55 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 23:11 , Processed in 0.083533 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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