基于AVR单片机视觉智能寻迹车设计与实现方案

发布者:梦想学院最新更新时间:2011-09-30 关键字:AVR单片机  视觉智能寻迹车 手机看文章 扫描二维码
随时随地手机看文章

0 引 言
    智能运输系统是未来交通运输系统发展的趋势,智能汽车在智能运输系统中扮演着十分重要的角色。作者提出智能寻迹车作为构建未来智能交通运输系统中重要部分,针对未来交通运输系统有导航线的环境命题假设下智能汽车的自主寻迹问题,提出一种基于视觉的智能寻迹车模设计方案,作为该假设问题的解决方案。
    基于视觉的智能寻迹车模设计方案能够在线型复杂,转弯半径不确定性大的情况下,利用视觉自主寻迹前进,分级精确转向。

1 系统总体设计
    基于视觉的智能寻迹车模系统以AVR单片机MEGAl6为核心,由单片机模块、路径识别模块、直流电机驱动模块、舵机驱动模块等组成,如图1所示。


直流电动机为车辆的驱动装置,转向电动机用于控制车辆行驶方向。智能寻迹车模利用视觉在跑道上自主寻迹前进,分级精确转向。道路为318 mm宽白色底板,其中间粘贴18 mm宽且线型不断变化的黑胶带。

2 硬件设计
2.1 控制模块
    寻迹车模采用AVR内核的ATMEGAl6。该芯片能够不需要外围晶振和复位电路而独立工作,非常适合智能寻迹车模的要求。控制器模块安装在广东奥迪玩具实业有限公司生产的雷速登1:24比赛级遥控车模上。
2.2 路径识别模块
    采用反射式光电传感器来区分跑道上的黑色与白色,反射式光电传感器有光线发射端和光线接收端,白底与黑线对发射端发出光线的反射度不同,从而影响接收端产生的电压。用反射式光电传感器、可调电阻和运算放大器LM324组成传感器模块,如图2 所示。实现在不同赛道上输出高低电平,自主寻迹。
2.3 转向电机和驱动电机驱动模块
    采用H桥电路来驱动智能寻迹车的前轮转向电机和后轮驱动电机,实现智能寻迹车左右转向、前进、后退、加速、减速等功能。转向电机驱动电路如图3所示。其中前轮转向电机控制方案为分级转向控制,后轮驱动电机控制方案亦为开环控制。


2.4 分级转向模块
    为了实现在不同的转弯半径处实现不同角度的精确转向,设计了分级转向电路,如图3所示。车模舵机中可变电阻阻值为1.8~4.2 kΩ,1接单片机A/D管脚。电压V为片内稳定基准电压,且可以看出:

以1号传感器为例,说明分级转向角度计算。

    传感器模块安装如图4所示,所有尺寸经过前期设计计算,D点为前轮舵机可调电阻转向中心,A点为小车转向中心。当1号传感器检测到黑线时,前轮转向角度以及与前轮转向角度对应的前轮舵机中可变电阻转向角度计算为:


V3值线性正比于前轮舵机中可变电阻角度α1,因此,不同的传感器探测位置,可以计算得出不同的理想前轮转向角度,不同的理想转向A/D电压,通过单片机测量V3,即可换算前轮舵机中可变电阻转向角度a1,并与理想转向A/D电压比较,当V3达到理想转向A/D电压,单片机控制给舵机低电平,舵机停转,保持转向,从而实现精确分级转向。

3 软件设计
3.1 主程序设计
    采用C语言在ICC—AVR开发环境下进行编程调试。主程序流程图如图5所示。

3.2 分级模块程序设计
    ATMEGAl6能对来自端口A的8路单端输入电压进行采样。当片中ADC多功能寄存器ADMUX的REFSl和 REFS0设置为1时,VAREF=2.56 V,为片内稳定基准电压源,即图3中电压V。智能寻迹车转向极限为±30°,表1为5个光电传感器分级精确转向相应计算数据。


4 结 语
    基于视觉的智能寻迹车模设计方案能够在线型复杂,转弯半径不确定性大的情况下,利用视觉自主寻迹前进,分级精确转向。对于环境光线的影响,可考虑增加滤波电路、优化控制算法增加其抗干扰能力。实验证明,该方案有良好的寻迹效果。

关键字:AVR单片机  视觉智能寻迹车 引用地址:基于AVR单片机视觉智能寻迹车设计与实现方案

上一篇:AVR单片机的智能信息记录仪设计方案
下一篇:基于AVR单片机的多路遥控开关编解码实现

推荐阅读最新更新时间:2024-03-16 12:42

AVR单片机入门----MEGA端口操作
AVR端口是真正的双向端口,不像51伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。 DDRn PORTn PINn 解释:n为端口号:ABCDE DDRn:控制端口是输入还是输出,0为输入,1为输出。个人记忆方法:一比零大所以往外挤,即1为输出,0为输入。 PORTn:从引脚输出信号,当DDRn为1时,可以通过PORTn=x等端口操作语句给引脚输出赋值。 PINn:从引脚读输入信号,无论DDRn为何值,都可以通过x=PINn获得端口n的外部电平。 当引脚配置为输入时,若PORTxn 为 1“,上拉电阻将使能。内部上拉电阻的使用在键盘扫描的时候
[单片机]
如何避免AVR单片机熔丝位锁死
初学AVR的人难免会碰到心爱的单片机熔丝位锁死,直接罢工的烦恼。绝大部分情况是我们的工作时钟源设置错误导致,下面说说一些预防措施。 1、针对新买的AVR,它的内部没有程序,在电路板第一次通电写程序前设置与实际工作相符的熔丝位。特别是没有外部晶振时设置成外部时钟那肯定必死无疑。 2、如果AVR已有程序,且之前没有用外部晶振电路,中途想加外部晶振怎么办,焊接好外部晶振后,不要急着修改熔丝位,否则后果你懂得。先在内部RC工作模式下清除FLASH程序,然后再将熔丝位修改成外部晶振时钟。 3、如果熔丝锁死已经发生,没办法,要么用高压编程,要么自己买个大于4M的有源晶振(4个脚)直接给AVR提供时钟解锁。
[单片机]
AVR单片机PWM产生
计数器的上限值决定了 PWM 的频率,比较匹配寄存器的值决定了占空比的大小 下面是一个用t0产生PWM的例子 #include avr/io.h #include avr/interrupt.h int main(void) { DDRA=0XFF; DDRB=0XFF; PORTA=0XFF; PORTB=0X00; TIMSK=0X00; TCNT0=0; OCR0=240; TCCR0=0B01101001; while(1); }
[单片机]
AVR单片机入门系列(17)AVR IO输入之矩阵按键扫描程序
系统功能 使用AVR扫描4*4矩阵按键,一旦扫描到按键被按,做出被按的按键号指示。 硬件设计 关于AVR的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表: AVR I/O 口引脚配置表 DDRXn PORTXn PUD I/O 方式 内部上拉电阻 引脚状态说明 0 0 X 输入 无效 三态(高阻) 0 1 0 输入 有效 外部
[单片机]
<font color='red'>AVR单片机</font>入门系列(17)AVR IO输入之矩阵按键扫描程序
AVR单片机定时器输出PWM的设计及注意问题
  一、定时/计数器PWM设计要点   根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点:   1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。   2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。   3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,
[单片机]
AVR单片机通过74HC595驱动数码管显示
一个很简单的avr单片机的仿真,用74hc595芯片来驱动单个数码管显示数字,下面是仿真原理图 源程序: #include iom16v.h #include macros.h void delay(int k){ int i=0,j=0; for(i=0;i k;i++){ for(j=0;j 6;j++){ ; } } } void InputData(unsigned char data){ unsigned char i; unsigned char k; for(i=0;i 8;i++){
[单片机]
<font color='red'>AVR单片机</font>通过74HC595驱动数码管显示
avr单片机ds1302时钟程序详解
ds1302是一个时钟芯片,和avr没关系,这里用mega32操作该芯片,关于这个芯片网上资料很多,我简单说一下,通信方式是SPI模式,芯片内部有几个寄存器存放年月日时分秒,还有写保护等。 ***************************************************************** //CPU:mega32 //编译器:iar //DS1302 //main函数中调用lcd显示函数 #include ioavr.h #include lcd.h void Write1302 ( unsigned char addr,unsigned char dat ); unsigned char Re
[单片机]
<font color='red'>avr单片机</font>ds1302时钟程序详解
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved