从对机器人感兴趣开始,买了一堆书,也看了很多资料,决定先从最简单的车轮机器人开始做。普通电脑虽然强大,但是不能直接采集外界环境的物理数据,也不能直接控制电机。查找了下,虽然可以直接在电脑上接USB接口的数据采集器用于采集传感器的数据,也可以使用PCI的电机控制卡来驱动各种电机,不过成本有些高,暂时不考虑了。找了一圈,发现还是单片机方案廉价,顺便可以学习下单片机控制和作一些电路实验。于是最终决定实验方案采用单片机来做了。
下面是采购的零件:
8位单片机Atmega168开发板(Arduino)。价格为$35美圆
Arduino是源自意大利的一个开放源代码的硬件项目,该平台包括一片具备简单I/O功效的电路板以及一套程式开发环境软体。Arduino可以用来开发可独立运作、并具互动性的电子用品,或者也可以开发出与PC相连的週边装置,同时能在运作时与PC上的软体进行沟通。 Arduino的硬体电路板可以自行焊接组装成,也可以购买已经组装好的,而整合开发环境的软体则可以自网路上免费下载与使用。目前Arduino的硬体部分支援Atmel的ATmega8与ATmega168等微控器。 此外,Arduino专案获得2006年Prix Art Electronica在电子通讯类方面的荣誉奖。 Arduino的硬体电路参考设计部分是以创用(Creative Commons;CC)形式提供授权。相应的原理图和电路图都可以从Arduino网站上获得.
楼主最近还看过
【url=】代码:
int ledPin = 13; // LED connected to digital pin 13void setup(){ pinMode(ledPin, OUTPUT); // sets the digital pin as output}void loop()以间隔1000ms的时间把单片机的第13 个Pin脚循环输出高低电平,从而达到点亮和熄灭LED功能。很简单,就是验证下单片机是否可用。
最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动 电位器旋转,使得电压差为0,电机停止转动。
在程序中控制舵机的转动角度,就是生成不同脉宽的PWM就行了。
上面的代码简单的生成一个PWM 驱动舵机旋转,比较简单。 代码中用delay来实现延时,如果是同时控制多个舵机,用这样的代码是不行的,需要自己计算时间。因为用delay整个单片机都“休息”了,无法执行任何代码。在实际实现中,还需要不断的读取传感器输入和进行其他处理。
传感器介绍:
SHARP红外距离传感器,用于模型或机器人制作,可以用来测量距离。每个模块赠送一根15cm长PH2.0的单头排线.
技术规格:
探测距离:10-80cm
工作电压:4-5.5V
标准电流消耗:33-50 mA
输出量:模拟量输出,输出电压和探测距离成比例
常用的直流电机使用L293D来控制,使用H293的电路如下:
直接把电机接到单片机的Gnd和 PWM Pin 9接口,然后在程序中直接向 Pin 9输出就可以让电机运转了。
int value = 0;下面的代码是“巡航”行为:
class BhCruis:public Behavior