EDN China > 设计实例 > 嵌入式系统 > MCU(单片机应用) > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于ARM自主避障机器鱼设计

黄福勇?? 向 伟?? 杨 洋?? 电子元器件应用?? 2012年09月03日 ?? 收藏0

2 系统软件设计

2.1 主程序流程

ARM芯片通过AD管脚对红外传感器的发射模块传送命令。发射模块发射红外线,接收模块接收遇到障碍物反射回来的红外线,根据返回光强产生相应的模拟电压,经过A/D转换器后变成十位的二进制数据量,通过一定算法计算出到障碍物的距离。ARM芯片判断计算出的距离与预设值的逻辑关系,根据结果判断是否进行避障。摄像头采集图片后,将图片缓存于SDRAM中,LCD读取数据并将图像显示出来。主程序流程如图6所示。

基于ARM自主避障机器鱼设计

2.2 红外模块

在ARM的A/D进行转换时,首先要对ADC控制寄存器进行初始化,选择进行转换的模拟输入端,进行A/D转换,并从ADCDAT0读取转换结果。探测的结果小于预设值时ARM芯片执行中断,改变PWM波的占空比使机器鱼转向进行避障,反之继续前进。红外模块流程如图7所示。

2.3 摄像头模块

摄像头属于字符类设备,所以能够像字节流一样被程序访问,而且只能够按顺序读写。Linux内核程序通过设备的位号来寻找摄像头。Linux内核发送测试信号到地址0X9650,以检测摄像头是否存在。OV9650拥有多组寄存器,图像的输出编码方式和分辨率等参数取决于OV9650的寄存器。IIC (Inter Integration Circuit)是指内部整合电路,是常用的标准串行接口。系统是通过IIC总线对寄存器进行整体配置,所以此过程不会占用系统数据总线。考虑到图像传输的效率,所以摄像头与ARM芯片之间的Data[0]~Data[7]的通道仅用以传输图像数据。以下为摄像头的部分初始化代码。

SrcWidth=640-WinHorOffset*2;//CAM_SRC_HSIZE为640,CAM_SRC_VSIZE为480

SrcHeight=480-WinVerOffset*2;//计算得SrcWidth=440,SrcHeight=280

rCIWDOFST=0;//窗口垂直偏移为0

rCIWDOFST=(WinOfsEn<<31) | (WinHorOffset<<16) | (WinVerOffset);//水平偏移为100,垂直偏移为100

rCISRCFMT=(1<<31) | (0<<30) | (0<<29) |(640<<16) | (0<<14) | (480);//30位设置为1后,图像颜色失真,偏彩色

Calculate Prescaler RatioShift (SreWidth,PrDstWidth,&PreHorRatio;,&H;_Shin);//计算并设置突发长度

Calculate Prescaler RatioShift (SrcHeight,PrDstHeight,&PreVerRatio;,&V;_Shift);//计算水平和垂直缩放比率和位移量、水平和垂直比率

摄像头模块流程如图8所示。

基于ARM自主避障机器鱼设计

3 结束语

本文介绍了红外探测器在机器鱼上的应用以及画面的实时显示。通过红外传感器使机器鱼具有了自主避障的功能。实验表明基于ARM芯片和LINUX嵌入式系统平台开发的自主避障功能的机器鱼具有较高的实时避障功能,表明该机器鱼具有灵敏度较高的自主避障功能。此设计提高了机器鱼智能度,可作为后续自主视觉机器鱼开发的基础。相信随着高智能的机器鱼的研究与设计会给人类探索、开发海洋提供更多的帮助与便利。

《电子设计技术》网站版权所有,谢绝转载


上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

自主避障? ARM芯片? 红外测距? LINUX嵌入式系统?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈