资源描述
机器水黾
——利用水的表面张力在水上行走的高效探测系统
摘要:
现在的水上交通工具在运动时都要克服水的阻力,由此造成了大量的能量损失。一次在郊外,我偶然发现了水里有一种小虫——水黾。通过对其运动进行观察,发现其在水面上能十分轻盈的移动。经过查询资料后,我了解到水黾是通过表面张力获得在水面上漂浮的能力,并且由于是利用表面张力漂浮在水面上,水的阻力几乎可以忽略不计,因此能够节约大量的能量。所以我想到,能不能模仿水黾的运动方式,通过利用水的表面张力制作一个高效勘测系统。
通过多次实验后,最终利用羽毛较为优异的疏水性,模拟水黾的腿使得系统能够漂浮。并且,利用光敏二极管和微型空心杯电机组成探测部分和动力部分,使得整个系统能够实现对水面上的红外线目标的追踪和报警。
关键字:红外线探测 表面张力漂浮 水面勘探
目录:
一.项目介绍………………………………………………………………3
二.项目实施过程
(一)硬件搭建
1.理论依据 ………………………………………………………4
2.Tiny13测试 ……………………………………………………5
3.H型电机驱动电路实验…………………………………………6
4.实际测试…………………………………………………………7
(二)电路设计
1.初始电路…………………………………………………………9
2.最终电路…………………………………………………………10
(三)程序设计
1.程序主体…………………………………………………………12
2.程序介绍…………………………………………………………15
三.项目分析 ………………………………………………………………16
四.项目小结 ………………………………………………………………16
参考文献 ………………………………………………………………17
一.项目介绍
创意来源:
物体在水中运动时都要克服很大的阻力,这需要消耗大量的能量。而水黾在水上行走时却非常快捷灵敏,它是利用水的表面张力漂浮于水面上,运动时几乎没有水的阻力。通过许多国内外专家的研究发现,利用水的表面张力制成的小船,其载重能力远远超过利用阿基米德原理的小船。例如,卡内基·梅隆大学的两位研究人员2007年制造出了一个能够模仿水黾“水上漂”功夫的机器人。它拥有不溶于水的每一条长达5厘米的线“腿”,其外部还涂有一层特氟纶(防水塑料)。共有12条“腿”被附在只有1克重的身体上。在他们的实验过程中,这款机器人的有效载荷最高可达到9.3克。3台安装在腿上的“T”型压电传动装置可提供垂直和水平方向的运动力,从而产生“双桨式划水”动作,带动身体在水面上移动。在哈尔滨工业大学的潘钦敏教授的实验中,理论上最大排水量为八克的“小船”利用水的表面张力载重可达到十二克,载重能力提升150%。由此可见,利用水的表面张力制成的水上运输工具有很好的应用前景。
而我们通过的自然界中的生物水黾进行观察后发现通过对其进行仿生机器人的研究可以在水上勘探方面取得一定的成果。因此我们定下了这一个项目。
项目构想:
在这个项目中,我们首先的目标是制作一个仿生机器水黾。制作完成后利用其作为一个平台,加装红外线传感器和控制系统实现对水面辐射源的勘探。通过这一系统,我们可以实现对广大水域特定目标的全自动搜索。在一个机器人发现目标后,便会开始向外发送信号,引导更多的机器人靠近,并最终通过类似多米诺骨牌效应不断积聚,最终让勘探人员发现目标。
可行性分析:
水鸟能够浮在水面而不湿润,说明水鸟的羽毛具有很好的疏水性,机器水黾的承载装置是由羽毛构成。19.7℃下纯水的表面张力系数的标准值为7.280 x 10-2N/m。我们所选用的羽毛长度约为5cm宽度约为1cm.根据羽毛的结构我们可以知道羽轴两侧斜生许多并行的羽支,各羽支两侧更分出排列整齐的羽小支。羽支远侧的1列羽小支具有许多羽纤支。这样一来,能够产生表面张力的有效长度粗略的估计就可以达到100cm左右。通过计算可知,产生的表面张力约为7g。
我们把支架、电路、驱动系统的质量控制在5g左右 ,那么这个系统漂浮在水面上是没有问题的,而目前的微电子系统和微型马达的重量完全可以满足这个质量。总重只为最大表面张力的70%,因此整个系统可以十分容易的漂浮在水面上和进行各种运动。
二.项目实施过程
(一)硬件搭建:
1. 理论依据:
水鸟能够浮在水面而不湿润,说明水鸟的羽毛具有很好的疏水性,机器水黾的承载装置是由羽毛构成。19.7℃下纯水的表面张力系数的标准值为7.280 x 10-2N/m。我们所选用的羽毛长度约为5cm宽度约为1cm。根据羽毛的结构我们可以知道羽轴两侧斜生许多并行的羽支,各羽支两侧更分出排列整齐的羽小支。羽支远侧的1列羽小支具有许多羽纤支。这样一来,能够产生表面张力的有效长度粗略的估计就可以达到100cm左右。通过计算可知,产生的表面张力约为7.2g。
2.Tiny13测试
这是最初的实验电路板。
利用这块电路板,我可以对这种型号的单片机有一个初步的掌握。主要是利用发光二极管和光敏二极管充当输入和输出进行实验。
接下来通过该电路板,我可以初步的模拟整个控制系统。黑色的为光敏二极管,绿色的LED发光二极管则用来模拟电机。通过对PWM信号脉宽的调整,可以改变输出电压的高低。如此一来就可以通过观察LED发光的强弱变化模拟出电机转速的变化。
2. H型电机驱动电路实验
3.
这两张是H型电机驱动电路的实验图。
这个实验的目的是为了了解H型电机驱动电路的工作状态。通过实验后发现H型电机驱动电路和单片机整合时出现了一些不稳定因素,通过改变三极管的基极电压高低,达到改变电流流向目的。
然而在实验中发现,电机存在电磁干扰,启动瞬间的高电压会使程序错乱导致无法正常工作。为了解决这一个问题,我首先在电机上并联了一个103PF的电容。随后,我又使用了一个78M05的三端稳压管组成稳压电路连接在单片机电源两端。电路稳定了很多,但马达在启动和转换转向时产生的电磁干扰还是无法根除,通过查阅资料了解到需要将单片机和驱动电路隔离,具体采用MOC3063 光电耦和器将单片机的输出和驱动电路隔离,用MC34063API-dc-dc电源模块将单片机和驱动电路隔离,取得了满意的效果,电路工作稳定可靠。
这是5V稳压电路部分
随后的实验又发现当连接上机器水黾所使用的微型空心杯电机时,启动瞬间的电压变化几乎可以忽略不计,对程序没有任何可见的影响。因此最终的电路板上不必设置电容、稳压电路和隔离电路,使得电路尽量简化以减轻质量。
4.实际测试
这是初始系统的实物图。
驱动装置采用的是风扇产生的反作用力进行推动。经过实验,这种驱动方式是比较稳定,可以较为顺利的追踪红外线源。由于是利用水的表面张力漂浮于水面之上,水的阻力基本上可以忽略,因此风扇能推动机器水黾在水面上移动。而通过风扇的转速差可以使机器水黾向左或向右转向。例如要向左转向时,单片机就会降低左边电机的转速,这样机器水黾便会向左转向。
这是系统的最终实物图
整个系统由驱动装置,探测装置和承载装置组成。
驱动装置采用的是H型电机驱动电路和划桨的组合。H型电机驱动电路的好处在于可以使得划桨正向或反向运转。而划桨则是仿造明轮船的驱动方式推动机器水黾向前或向后运动。
探测装置是由前段两个类似眼睛的成一定角度的光敏二极管组成。由于两个光敏二极管接收到的红外线强弱并不一致,所以两个输入端口的电压并不一致。这个电压经过AD转换后被输入单片机。再经过程序处理后通过改变PWM信号的脉宽改变电机转速控制机器水黾的各种运动。
5.测试结果:
1)负载测试:
承载装置理论上可以达到的最大负载是7.2g,而经过多次实际测试后,实际最大负载约为6.7g
2)运动速度测试
驱动方式 \ 载重
标准负载(仅系统)
最大负载(总重6.7g)
螺旋桨型(空气推进力)
4.1cm/s
2.2cm/s
划水型
1.2cm/s
0.8cm/s
3)搜索测试
这个测试是在1平方米的静止水面中完成。在水面上随机放置一个红外线源,从开始勘探到发现目标并报警,所需时间平均为10秒左右。
(二)电路设计:
1.初始电路
这张电路设计图是最初的电路设计图,也是目前使用的电路设计图。这个电路设计较为简单,便于编程和操作。这个电路的优点在于可以通过改变电机两端的电压达到控制电机转速的目的。
这是该电路图的PCB电路板设计图。
这是电路板的实物图(尺寸:2.5cm*1.5cm)。
2.最终电路
上图便是项目的最终电路设计图。可以看到,在驱动方面,使用了H型电路。这种电路的优点在于电机可以正向或反向运转。在该电路中,通过四个三极管的连接达到控制电机运转的目的。具体流程是整个H型电路的上端连接的是电源正极,下端连接的是电源负极。通过单片机输出的高电平和低电平利用三极管本身的特性,改变电流通过电机的方向,使得电机正转或反转。例如,单片机的3号和5号口控制的是左边电机的转向。当要电机顺时针转动时,3号口输出高电压,5号口输出低电压。如此一来,左上和右下的三极管就处于所谓的接通状态,电流可以流过,而右上和左下的三极管则是开路的状态,电流无法通过,电流从左上流入右下,电机正转。反之亦然。如此一来,便可以通过简单的高低电压的变化,达到对电机转向控制的这一目的。
在探测方面,利用的是光敏二极管因红外线强弱变化而产生的电阻变化。例如,当左边的光敏二极管接收到红外线时,电阻减小,分压减少,那么在串联电阻两端的电压则会增大。所以PB2端口的输入电压变大,通过单片机内置的A/D转换器进行转换后变为数字信号,再经由程序计算使得机器水黾可以追踪红外线信号。而当距离达到预设值时,水黾上的发光二极管便会亮起,从而能够引导更多的机器水黾靠近目标。
这是利用protel99软件设计的电路板PCB设计图。由于系统质量上的限制,电路板必须尽量的紧凑,因此经过多次布线后,排成了如上图的电路走线。利用专业机器进行制版后,再利用贴片焊接技术将各个电子元件焊接至板上,便完成了系统的电路板。
这是电路实物图,可见在贴片焊接技术的应用下,并没有多大的面积。(3.5cm*2cm)
(三)程序设计(无必要附在此处)
1.程序主体
#include <avr/io.h>
#include <avr/interrupt.h>
int i=1;
unsigned int PA,PB;
unsigned long j=1;
void PWM_Init(void)
{
TCNT0 = 0;
OCR0A=0x03;
OCR0B=0x03;
TCCR0A=(1<<WGM01)|(1<<WGM00)|(1<<COM0A1)|(1<<COM0B1);// Fast PWM mode,8分频(用64分频更稳定)
TCCR0B=(0<<CS01)|(0<<CS02)|(1<<CS00)|(0<<WGM02);
TIFR0=(1<<OCF0A);// 清除比较匹配标志
TIMSK0=(1<<OCIE0A)|(1<<OCIE0B);// 打开比较匹配中断
}
void ADC_Init(void)
{
ADCSRB=(0<<ADTS2)|(0<<ADTS1)|(0<<ADTS0);// 触发源选择:连续转换模式
ADMUX=(1<<MUX0)|(0<<MUX1)|(0<<REFS0);// ADC通道选择:ADC0,参考电压选择AVCC
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);// 自动触发,预分频比128
}
int main(void)
{
PWM_Init();
ADC_Init();
PORTB=(1<<PB0)|(1<<PB1)|(0<<PB2)|(0<<PB3)|(0<<PB4)|(0<<PB5);
DDRB=(1<<PB0)|(1<<PB1)|(0<<PB2)|(0<<PB3)|(1<<PB4)|(1<<PB5); // PB2口设置为输入,且关闭内部上拉电阻
sei();
while(1)
{
}
}
ISR(ADC_vect)
{
unsigned int adc_data,adc_v;
adc_data=ADC; //读取ADC转换结果
adc_v=(unsigned long)adc_data/10;// 换算成电压值,原始状态是除以4
if(++j>2)
{
i=-i;
j=1;
}
switch(i)
{
case 1:
PB=adc_v; //OCR0B=adc_v;获取PB2的电压给PB,PB2是右侧的管子
ADMUX|=(1<<MUX1); //选择PB3作为模拟输入
break;
case -1:
PA=adc_v; //OCR0A=adc_v;获取PB3的电压给PA,PB3是左侧的管子
ADMUX&=~(1<<MUX1); //选择PB2作为模拟输入
break;
default:
break;
}
if(adc_v>98) //水黾过于接近目标就认为找到目标并停止搜索,adc_v>98
{
OCR0A=0;
OCR0B=0;
PORTB&=~(1<<PB4);
PORTB&=~(1<<PB5);
}
else if(adc_v<10)
{
OCR0A=200;
PORTB|=(1<<PB4);
OCR0B=50;
PORTB&=~(1<<PB5);
}
else
{
if((PA-PB<8)||(PB-PA<8)) //如果两个红外探头的数值差别不大,就认为对准目标并接近目标,8比较合适
{
OCR0A=50;
OCR0B=50;
PORTB&=~(1<<PB4);
PORTB&=~(1<<PB5);
}
else if(((PA-PB>8)&&(PA-PB<30))||((PB-PA>8)&&(PB-PA<30))) //如果两个探头差别居中就采用微调模式
{
if(PB>PA)
{
OCR0A=50;
PORTB&=~(1<<PB4);
OCR0B=0;
PORTB&=~(1<<PB5);
}
else
{
OCR0B=50;
PORTB&=~(1<<PB5);
OCR0A=0;
PORTB&=~(1<<PB4);
}
}
else //如果两个红外探头差别较大就采用急速调整模式
{
if(PB>PA)
{
OCR0A=((PB-PA)>50)?(PB-PA):50;
PORTB&=~(1<<PB4);
OCR0B=200;
PORTB|=(1<<PB5);
}
else
{
OCR0B=((PA-PB)>50)?(PA-PB):50;
PORTB&=~(1<<PB5);
OCR0A=200;
PORTB|=(1<<PB4);
}
}
}
}
ISR(TIM0_COMPA_vect)
{
}
ISR(TIM0_COMPB_vect)
{
}
2.程序介绍
这是机器水黾的程序,用WINAVR编写。主体思想是不断的检测左右两个输入端口的电压并进行比较控制水黾的移动。例如当红外线源在水黾左侧时,则连接左侧光敏二极管的端口PB2的输入电压大于连接右侧光敏二极管的端口PB3的输入电压。程序就会调整输往左边电机的PWM波脉宽来改变左边电机转速并使其反向运转使得水黾向左转动。具体流程是通过程序所设定的频率进行采样(间隔一般只有几微秒),左右交替进行。将测得的电压值赋予变量PA或PB,并不断的比较着PA PB两个变量。当一边检测到的电压高于另一边的,则程序就会通过改变PWM波的脉宽来改变电机转速和转向。当检测到的电压转换成的数字信号值大于预先设定的数值时,水黾中间的LED发光二极管便会亮起,引导更多的机器水黾向此处靠近,最终使搜救人员可以找到目标的所在位置。
三.项目分析
项目科学性:
我们的机器水黾利用水的表面张力漂浮于水面,而羽毛良好的疏水性和数量庞大的羽分支足以支撑轻巧的物体,因此运动时水的阻力几乎可以忽略,只需克服微小的空气阻力,可以非常灵活地在水面运动并搜索跟踪目标,从而完成勘探任务。
项目先进性:
该项目模仿水黾的水上运动机理,利用水的表面张力漂浮在水面上,国外有相关研究但并无利用该技术进行探测追踪的研究。
此外该项目无需克服水的阻力,非常节能,可以长时间执行水上勘探任务,将来甚至可以微型太阳能电池驱动,可以无间断执行勘探任务。
项目实用性:
目前发生水灾、空难等水上事故,需要投入大量人力、物力进行搜救,而且搜救范围有限,效果也不理想,如果我们在灾难地点圈定一个范围,然后在此范围内大量投放该探测系统展开搜救,一旦发现目标就发出GPS定位信号,呼唤附近的救援船只快速赶往事发地点展开救援,可以大大降低人员伤亡。
四.项目小结
通过这个项目,我提高了对C语言的掌握,学会了WinAVR和Protel99的运用,巩固了焊接基础,学习了表面张力的基本原理并且提高了我的综合素质。在项目的实行过程中,各种磨砺提高了我的自身素质,使我获益匪浅。
参考文献
1.李晓峰.AVR单片机原理与应用.北京理工大学出版社.2010.02
2.彭伟.单片机C语言程序设计实训100例.北京航空航天大学出版社.2010.05
3.何英.Protel99入门与实用.机械工业出版社.2001.01
4.颜永军、李梅.Protel99电路设计与应用.国防工业出版社.2001.01
5.周兴华.手把手教你学AVR单片机C程序设计. 北京航空航天大学出版社.2009.04
6.温正、何嘉扬、赵志鹏.AVR单片机开发从入门到精通.中国电力出版社.2009.06
7.潘钦敏.用超疏水铜网制造的小船具有惊人的浮力.
8.宋演武,梅丁·西蒂. 表面张力机器昆虫动力学探测器.
14
展开阅读全文