分享

!!万向轮子 基于Arduino2009核心的壁障循迹小车设计 | DIY小组 | 果壳网 科技有意思

 quasiceo 2015-08-31
轮子  万向轮  轮胎

基于Arduino2009核心的壁障循迹小车设计


2011-06-20 00:29

基于arduino核心的智能小车设计
想必每位有志于在机器人领域发展,为人类未来创造更加美好生活的有志之士(废话也是必不可少的有木有)入门必不可少接触的一个练手之物便是智能小车,但是啊,一套现成的智能小车全套下来要几千大洋有木有,所以啊我觉得我自己可以动手DIY一台这样神车出来,一来满足一下我练手的需要,二来可以以这个车为基础拓展更加强大的功能。所以,废话少说,下面开始整个制作过程。

由于制作过程中基本没考虑到要写一个这个东东,所以照片很少,一下照片都是我制作完成后拆开来介绍的。
整车尺寸:135*138*85mm

下面这张是全部拆解图

材料:360度连续旋转舵机两个,铝合金型材(见下图),万向轮一个,arduino2009核心板,arduino V5传感器拓展板,红外传感器两个,光电传感器四个+光电比较器一个。
开始之前不要问什么是arduino(读:阿杜伊诺),百度百科一下。
铝合金

加工好的全部的铝合金组件

整车分为两层,下面的那层材料比较厚实,上面相对来说就采用了薄一点儿的材料。


全部电气元件
舵机的尺寸:40.8*20*39.5mm

最下面一层的铝合金角材是这个车的主要框架,所以选用了30*20mm厚1.5mm的角材,


舵机跟上面那个板通过这两根10*10的铝合金角材固定

两张板子对到一起然后用10*10的角材用1.8mm的螺丝钉连接,这个板子上的孔打一个稍微小一点儿的孔,然后用丝攻攻上1.8mm的螺纹,这样就不用螺母连接了。

这个轮子是在街上买的万向轮然后把轮子单独拆了下来,轮子厚20mm,直径50mm。

轮子通过舵机的摆臂固定上,这样很方便的连接舵机。

下面把万向轮装上去,万向轮高35mm,后面俩轮子装到舵机上底板正好离地35mm,万向轮装上去正好有木有。

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


下图中的构件是装中间两个光电传感器的



下面这张图是光电传感器,其实就是一个二极管和一个光电晶体管


由于是直接在铝合金板上固定这个传感器,所以在接触部分贴上了绝缘胶带,这还是很有必要的,后面贴黑胶带的都是这个意思。


然后分别把光电传感器装上去





将光电传感器连到光电比较器上,然后用杜邦线跟arduino相连。

至于上面的那层板就主要是为了固定传感器和arduino核心板的,对强度没什么大的要求,所以采用了20*20mm厚1mm的角材,对照红外传感器的位置打上孔用来穿尼龙扎带。


至此车的结构就大功告成了,先各方位的图若干。




下面开始唤醒这个小车了
红外壁障程序如下:
int lmotor = 4;//
int lred = 5;
int rmotor = 6;
int rred = 7;
int left;
int right;
int ldate;//nishizhen
int rdate;//shunshizhen
int i = 0;
void setup()
{
pinMode(lmotor,OUTPUT);
pinMode(rmotor,OUTPUT);
pinMode(lred,INPUT);
pinMode(rred,INPUT);
}
void run()
{
//for(i=0;i<50;i++)
//{
digitalWrite(lmotor,HIGH);
delayMicroseconds(ldate);
digitalWrite(lmotor,LOW);
digitalWrite(rmotor,HIGH);
delayMicroseconds(rdate);
digitalWrite(rmotor,LOW);
delay(20);
//}
}
void back()
{
for(i = 0;i<50;i++)
{
ldate = 1700;
rdate = 1320;
}
for(i = 0;i<50;i++)//turn right
{
ldate = 1300;
rdate = 1320;
}


}
void loop()
{
left = digitalRead(lred);
right = digitalRead(rred);
if((left == LOW)&&(right == LOW))
{
//ldate = 1700;
//rdate = 1320;
back();
}
else if(left == LOW)
{
ldate = 1300;
rdate = 1320;
}
else if(right == LOW)
{
ldate = 1700;
right = 1680;
}
else
{
ldate = 1300;
rdate = 1680;
}
right = 1;
left = 1;
}

当然由于360连续旋转舵机一般都有个电位器用来调节在1.5ms脉冲下保持静止。两个舵机在相同的脉宽例如1.3ms时的速度也不相同,这样的话很难让小车保持直线前进,这就需要来适当加减某个舵机的脉宽来使两个舵机的速度大致相等。
循线程序正在研究中,待续!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多