机器人制作.doc
《机器人制作.doc》由会员分享,可在线阅读,更多相关《机器人制作.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除实验机器人制作过程(图文)从对机器人感兴趣开始,买了一堆书,也看了很多资料,决定先从最简单的车轮机器人开始做。普通电脑虽然强大,但是不能直接采集外界环境的物理数据,也不能直接控制电机。查找了下,虽然可以直接在电脑上接 USB 接口的数据采集器用于采集传感器的数据,也可以使用 PCI 的电机控制卡来驱动各种电机,不过成本有些高,暂时不考虑了。找了一圈,发现还是单片机方案廉价,顺便可以学习下单片机控制和作一些电路实验。于是最终决定实验方案采用单片机来做了。 下面是采购的零件: 8 位单片机 Atmega168 开发板。 电路面包板和连线用于驱动车轮的
2、两个减速电机。没有找到合适的齿轮,自己也没有加工设备,图简单,所以直接用集成减速齿轮的电机代替了。距离传感器,作为机器人的主要传感器,用来探测障碍物的距离。使用的是常用的红外距离传感器作为机器人的眼睛。舵机,用来控制机器人“眼睛”的方向。一堆零件:下一步就可以验证简单的功能了 实验 接下来先搞清楚怎么用单片机。 Hello world 先让单片机跑起来再说。习惯了操作系统下编程,第一次用单片机还真有些不习惯,担心遇到问题,不过比较顺利。这个程序用来点亮单片机上的一个 LED 。代码: int ledPin = 13; / LED connected to digital pin 13 void
3、 setup() pinMode(ledPin, OUTPUT); / sets the digital pin as output void loop() digitalWrite(ledPin, HIGH); / sets the LED on delay(1000); / waits for a second digitalWrite(ledPin, LOW); / sets the LED off delay(1000); / waits for a second 以间隔 1000ms 的时间把单片机的第 13 个 Pin 脚循环输出高低电平,从而达到点亮和熄灭 LED 功能。很简单,
4、就是验证下单片机是否可用。 控制舵机舵机就是遥控模型上用来控制的,其实就是一个带闭环控制的电机,能转动到指定的角度。工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为 20ms ,宽度为 1.5ms 的基准信号,将获 得的直流偏置电压与电位器的电压比较,获得电压差输出。 最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动 电位器旋转,使得电压差为 0 ,电机停止转动。 在程序中控制舵机的转动角度,就是生成不同脉宽的 PWM 就行了。 上面的代码简单的生成一个 PWM 驱动舵机旋转,比较简单。 代码中用
5、 delay 来实现延时,如果是同时控制多个舵机,用这样的代码是不行的,需要自己计算时间。因为用 delay 整个单片机都“休息”了,无法执行任何代码。在实际实现中,还需要不断的读取传感器输入和进行其他处理。红外距离传感器 传感器介绍: SHARP 红外距离传感器,用于模型或机器人制作,可以用来测量距离。每个模块赠送一根 15cm 长 PH2.0 的单头排线 . 技术规格: 探测距离: 10-80cm 工作电压: 4-5.5V 标准电流消耗: 33-50 mA 输出量:模拟量输出,输出电压和探测距离成比例 接好电源,把模拟信号输出端接在单片机的模拟输入 Pin 就行了。 测试代码: int p
6、otPin = 2; int ledPin = 13; int val = 0; void setup() pinMode(ledPin, OUTPUT); void loop() val = analogRead(potPin); digitalWrite(ledPin, HIGH); delay(val); digitalWrite(ledPin, LOW); delay(val); 运行结果, led 随着传感器距离的变化闪烁间隔也随着变化。控制电机 常用的直流电机使用 L293D 来控制,使用 H293 的电路如下: 不过在验证是发现,对于小电机,直接用单片机的 PWM 端子来输出不同
7、电压的来控制速度也是可行的,虽然不太精确,但是对于实现运动特征是足够了。单片机无法输出真正的线性模拟电压, PWM 是通过调整空占比间隔来模拟不同电压值的。测量了电机在空载和负载情况下电流都只有几十毫安,所以先采取这种简单的办法验证。 直接把电机接到单片机的 Gnd 和 PWM Pin 9 接口,然后在程序中直接向 Pin 9 输出就可以让电机运转了。 int value = 0; int ledpin = 9; void setup() / nothing for setup void loop() for(value = 0 ; value =0; value-=5) analogWrit
8、e(ledpin, value); delay(30); 上面的程序用不同的输出值驱动电机,可以看到电机的旋转效果。 单片机和主要部件的验证基本就完成了,下一步要开始程序设计了。 软件设计 思路 在进行代码编写之前,想找到一种简介的实现低级智能机器人的方式。目前的工业机器人采用的是精确控制的方法,在程序中固化每种处理逻辑。用程序员的思维来完成对机器人的操作。对于程序员来说,机器人无非就是外接了物理传感输入和运动控制输出的一台电脑,不管是64位多核CPU或者8位单片机,只是性能的不同而已。理论上,都能通过程序设计来达到预定的目标。如果按照计算机上的普通程序来设计,那么大量的功能代码会相互耦合,每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器人 制作
限制150内