基于安卓的单臂机器人(二)

这篇文章主要是对硬件方面进行阐述,用到的工具软件是Altium Designer 09画电路图,Visio Studio画流程图。

系统硬件设计

整体方案概述

硬件部分是整个小车系统的核心部分,它的作用是响应APP发送来的指令,采集视频数据并将视频流推送给APP,通过单片机I/0口控制各个模块的工作,由于小车底盘空间位置有限,需要将整个系统的电路分两部分做板子,考虑到后期调试的方便,车灯、蜂鸣器、循迹、驱动模块都设置了按键开关,这样就可以分模块调试了。
硬件总体框图:
基于安卓的单臂机器人(二)_第1张图片

单片机模块

因为系统需要较多的pwm输出,较大的内存空间,平时使用的51单片机达不到要求,如果用STM32来做又浪费太多资源,而且对STM32不熟悉,将会给编程带来难度。于是我选用较为熟悉的单片机STC15F2K60S2,它有三个定时器,其中一个可以给串口通信使用,另外两个定时器可以给避障模块计算距离和机械臂模块控制用。另外,可以通过该单片机的PCA产生三路pwm信号,可以用于机器人速度或者其它系统功能,为了后期功能拓展,把没用到的管脚通过排针预留出来。
单片机模块电路图:
基于安卓的单臂机器人(二)_第2张图片

电源模块

因为用到两个电压,L298N驱动模块要用到5V和12V电压,其它模块都是用5V电压,供电电源由8个1.5V干电池组成,因此选用7805将12V转为5V。

车灯模块

和蜂鸣器控制原理相类似,因为车灯功率比较大,所以没有加限流电阻。
基于安卓的单臂机器人(二)_第3张图片

机械臂模块

经过查阅资料得知,MeArm机械臂是开源的,网上可以找到它的制作图纸,因为结构较为简单,用薄木板和薄纸板都可以制作。用四个舵机作为机械臂转动的关节,舵机转动角度和给它的pwm的占空比是有关系的,本设计用一个定时器产生四路pwm给机械臂用。
pwm的占空比和舵机转动关系:
在这里插入图片描述
机械臂元件图:
基于安卓的单臂机器人(二)_第4张图片

避障模块

因为系统循迹模式和避障模式都要用到避障模块,而且它们的避障距离不一定相同,所以避障模块的探测距离应该在程序中就可以设定,而不是通过物理调节,而且检测范围应该要很大,检测误差不可太大。另外,机器人在光线不好的环境下还能躲避障碍物,需要避障模块不受光照和物体颜色的影响。常见的避障模块是通过红外线或者是超声波来实现的。红外避障模块要调节电位器来调节检测距离,调节电位器能检测多远没有具体的明显的对应关系,如果光线不好或者障碍物是黑色的话也会给测距带来很大影响,相比之下,超声波测距优势就比较明显,可以在程序里分别设置循迹避障和简单避障的距离,一举两得,而且检测距离很远,不易受外界影响,电路也很简单,容易安装,所以我选择超声波测距来实现避障。
检测距离=0.017*接收端高电平持续时间

WiFi模块

因为机器人的车体不大,而且还要搭载机械臂和电路板,所以WiFi模块要选用个体不大的。另外,因为要将视频流推送给APP,普通的WiFi模块是做不到的。经过查阅资料得知,视频回传可以用路由器来做,而且要用可以刷OpenWrt系统的路由器,在它上面安装其它应用后可以提供多种服务。常用的有个体比较大的需要12伏供电的DB120和小巧灵活的用USB口供电使用的TP-Link WR703N。综合考虑,我选用性价比比较高的TP-Link WR703N。

蜂鸣器模块

因为在避障的时候要发出警报声,所以蜂鸣器不可能靠机械开关来控制工作,于是需要设计程序通过单片机控制它的工作,根据电路相关知识可以运用三极管的开关电路,而9012晶体三极管功率不大,能较好地满足系统需求。另外,无源蜂鸣器的发声程序相对要复杂些,所以我选用有源蜂鸣器,为了保护单片机I/O口,要在三极管基极加电阻。
蜂鸣器模块电路图:
基于安卓的单臂机器人(二)_第5张图片

循迹模块

因为循迹需要沿着黑色车道行驶并且能够转比较大的弯度,所以需要一款对光的变化比较灵敏而且稳定性高的传感器,常用的有光敏电阻和红外光电传感器,两者的性能对比如如下所示,我选用光电传感器TCRT5000,为了能让机器人走九十度弯,我选用四个传感器,因为黑色宽度在1.8厘米左右,四个传感器一字排列,中间两个相距距离大于电工胶布宽度,外侧两个与内侧传感器的距离可以小于1.8厘米但是又不能靠得太近,以避免它们之间互相影响。
光敏电阻和红外光电传感器对比:
基于安卓的单臂机器人(二)_第6张图片
循迹模块:
基于安卓的单臂机器人(二)_第7张图片

驱动模块

因为机器人只要接收到上位机的行驶指令就要立刻行驶,而且可以随时改变车轮转动方向,所以选择的电机要方便控制的,驱动电路不能太复杂,相关程序也不能太复杂。步进电机的控制比较复杂,直流电机相对简单。经过查阅资料,两者的性能归纳如下,直流减速电机只要接电就工作,而且电机的两根线对换方向电机的转动方向也会改变,不仅容易控制,而且和步进电机相比,驱动电路也很容易实现,用它可以满足系统的需求,所以我选用直流减速电机。使用直流减速电机的话,所以用L298N能满足系统的需求。由于驱动电路比较复杂,我把它和循迹电路单独做在一块板子上,为了保护芯片,直流电机会像电感那样对电路产生影响,所以电路用到IN4007进行续流,同时也能避免外力作用使电机运转损坏芯片。四个控制引脚IN1,IN2,IN3,IN4接到单片机的I/O口,通过电平高低控制车轮正反转,两个使能端ENA和ENB并联接到单片机的pwm输出口,通过占空比控制行驶速度。
直流和步进电机对比:
基于安卓的单臂机器人(二)_第8张图片
驱动模块电路:
基于安卓的单臂机器人(二)_第9张图片

电路板制作

硬件电路设计好之后就是要画PCB了。由于技术有限,加上实验室条件的限制,布线不能太细,还有考虑到机器人整体的大小,把电路分两块单层板来做,四个角用铜柱把它们整合在一起,所以机器人尾部看起来有点高~。
PCB1:
基于安卓的单臂机器人(二)_第10张图片
PCB2:
基于安卓的单臂机器人(二)_第11张图片
完成后PCB拿去打印店,打印店会给你打印出来,然后拿去实验室进行热转印,腐蚀,裁剪,板子就做好了,后面就是将元器件焊上等待测试。

下一篇介绍该项目的软件部分:
基于安卓的单臂机器人(三)

你可能感兴趣的:(单片机+安卓)