回答

收藏

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

STMCU STMCU 3392 人阅读 | 0 人回复 | 2017-08-01

一、盒仔机器人
BOXZ,昵称盒仔,是一款开源的互动娱乐平台!百度一下,有很多盒仔的制作教程,基本都是用arduino制作完成的。假期没事,带着宝宝们用51制作了一个廉价的BOXZ。先上张图:


从图上不难看出,为了宝宝们易于接受,我把盒仔的手机摇控改成了用线控的方法,做了一个简易的摇控器。
二、材料准备
名称
型号及参数
数量
备注
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、外壳的制作
硬纸切割


然后组装


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




第二步,安装电路板,以及p041、P020、P030以及p050。


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


四、电路原理图

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

这里要特别注意的是,电路中用到的万能板的大小一定要剪裁到刚好可以放到两轮之间的大小,具体要先做好组装中的第一步,然后实际量一下尺寸,这样做出来比较美观。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.     }
复制代码
转自博客小五义
关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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