查看: 606|回复: 0

[教程] 利用51单片机制作廉价盒仔机器人(含电路图+代码)

[复制链接]

36

主题

1

好友

502

积分

举人

Rank: 4

  • TA的每日心情

    2015-8-5 11:09
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-8-1 09:37:01 |显示全部楼层
    一、盒仔机器人
    BOXZ,昵称盒仔,是一款开源的互动娱乐平台!百度一下,有很多盒仔的制作教程,基本都是用arduino制作完成的。假期没事,带着宝宝们用51制作了一个廉价的BOXZ。先上张图:

    TIM截图20170801092237.png

    从图上不难看出,为了宝宝们易于接受,我把盒仔的手机摇控改成了用线控的方法,做了一个简易的摇控器。
    二、材料准备
    名称
    型号及参数
    数量
    备注
    5V稳压模块
    LM7805
    1

    充电电池
    12V
    1

    电容
    22pf
    2

    按钮

    4

    自锁按钮

    1

    51单片机
    stc12c2052ad
    1

    晶振
    11.0592Mhz
    1

    电机驱动
    L298N模块
    1

    降压模块
    可调,选择12v在可输入范围内,给l298N供电
    1

    小车轮子
    直接65mm,胎宽在26mm或者以下
    2

    TT电机

    2

    杜邦线

    若干

    螺丝及螺母
    m2*30
    若干

    万能板(洞洞板)

    1

    六角铜柱
    m3*10
    若干

    网线
    用于连接摇控器与控制板
    1

    硬纸板
    2mm厚
    若干

    以上原器件,某宝网上都有。另外,制作中需要用到壁纸刀、电钻、钢尺、胶水等工具。
    三、外壳及皮肤制作
    1、外壳的制作
    硬纸切割
    TIM截图20170801092248.png


    然后组装
    TIM截图20170801092302.png


    第一步,用到的是P003,2块电机支撑板,用于连接和固定TT减速箱电机(以下简称电机)。在开始安装电机之前,大家可以先把P003实验性的插入P001,从而定义好一个方向,我们的电机都是在支撑板内侧安装的。然后就可以用紧固件分别把电机固定在P003的内侧了。如图每块P003与TT减速箱通过两个M2x30MM的螺丝固定,两边装上轮子。
    TIM截图20170801092308.png


    TIM截图20170801092439.png


    第二步,安装电路板,以及p041、P020、P030以及p050。
    TIM截图20170801092455.png


    2、皮肤的制作
    网上有很多皮肤,这里使用马里奥的皮肤,我制作中选用了白色的模板,让宝宝们怎么涂上颜色。
    TIM截图20170801092518.png


    四、电路原理图
    383503-20160204125942397-558386920.png

    按照上面的原理图,进行电路焊接,OUTA、OUTB、OUTC、OUTD分别接电机,实物如下图:
    TIM截图20170801092609.png

    这里要特别注意的是,电路中用到的万能板的大小一定要剪裁到刚好可以放到两轮之间的大小,具体要先做好组装中的第一步,然后实际量一下尺寸,这样做出来比较美观。L298N和电池可以直接放在电路板上面,因为上方的空间比较大。
    五、程序原代码
    1.     #include<stc12c2052ad.h>
    2.     #define uint unsigned int
    3.     sbit A1=P1^0;// 输出1
    4.     sbit A2=P1^1;// 输出2
    5.     sbit B1=P1^2;//输出3
    6.     sbit B2=P1^3;//输出4
    7.     sbit find1=P3^2;//go
    8.     sbit find2=P3^3;//back
    9.     sbit find3=P3^4;//left
    10.     sbit find4=P3^5;//right
    11.     void delay_1ms(uint x)
    12.     {
    13.         uint y,z;
    14.         for(y=0;y<x;y++)
    15.         for(z=0;z<850;z++) ;
    16.     }
    17.     void go()
    18.     {
    19.         A1=0;
    20.         A2=1;
    21.         B1=0;
    22.         B2=1;
    23.     }
    24.     void back()
    25.     {
    26.         A1=1;
    27.         A2=0;
    28.         B1=1;
    29.         B2=0;
    30.     }
    31.     void left()
    32.     {
    33.         A1=1;
    34.         A2=0;
    35.         B1=0;
    36.         B2=1;
    37.     }
    38.     void right()
    39.     {
    40.         A1=0;
    41.         A2=1;
    42.         B1=1;
    43.         B2=0;
    44.     }
    45.     void find()
    46.     {
    47.         P3=0xff;
    48.         if(find1==0)
    49.             go();
    50.         if(find2==0)
    51.             back();
    52.         if(find3==0)
    53.             left();
    54.         if(find4==0)
    55.             right();
    56.         if(find1==1&&find2==1&&find3==1&&find4==1)
    57.             P1=0x00;
    58.     }
    59.     void main()
    60.     {
    61.         while(1)
    62.         {
    63.             find();
    64.         }
    65.     }
    复制代码
    转自博客小五义
    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-10-23 04:56 , Processed in 0.130698 second(s), 14 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部