0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >汽车电子 > 基于ATMEGAl6单片机和分级转向模块实现智能寻迹车模系统设计方案

基于ATMEGAl6单片机和分级转向模块实现智能寻迹车模系统设计方案

来源: elecfans
2020-05-08
类别:汽车电子
eye 162
文章创建人 拍明

原标题:基于ATMEGAl6单片机和分级转向模块实现智能寻迹车模系统设计方案

  引 言

  智能运输系统是未来交通运输系统发展的趋势,智能汽车在智能运输系统中扮演着十分重要的角色。作者提出智能寻迹车作为构建未来智能交通运输系统中重要部分,针对未来交通运输系统有导航线的环境命题假设下智能汽车的自主寻迹问题,提出一种基于视觉的智能寻迹车模设计方案,作为该假设问题的解决方案。

  基于视觉的智能寻迹车模设计方案能够在线型复杂,转弯半径不确定性大的情况下,利用视觉自主寻迹前进,分级精确转向。

  1、 系统总体设计

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

  

基于ATMEGAl6单片机和分级转向模块实现智能寻迹车模系统的设计

  直流电动机为车辆的驱动装置,转向电动机用于控制车辆行驶方向。智能寻迹车模利用视觉在跑道上自主寻迹前进,分级精确转向。道路为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 、结 语

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

  Atmega16

  ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾。

  介绍

  ATmega16 AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与运算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。

  ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。

  工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。

  本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内, ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

  ATmega16 具有一整套的编程与系统开发工具,包括:C 语言 编译器、宏汇编、 程序调试器/ 软件仿真器、仿真器及评估板。

  产品特性

  u 高性能、低功耗的8位AVR微处理器

  l 先进的RISC 结构

  l 131条指令

  l 大多数指令执行时间为单个时钟周期

  l 32个8位通用工作寄存器

  l 全静态工作

  l 工作于16MHz时性能高达16MIPS

  l 只需两个时钟周期的硬件乘法器

  l 非易失性程序和数据存储器

  l 16K 字节的系统内可编程Flash,擦写寿命: 10,000次

  l 具有独立锁定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正的同时读写操作

  l 512 字节的EEPROM,擦写寿命: 100,000次

  l 1K字节的片内SRAM

  l 可以对锁定位进行编程以实现用户程序的加密

  l JTAG 接口( 与IEEE 1149.1 标准兼容)

  l 符合JTAG 标准的边界扫描功能

  l 支持扩展的片内调试功能

  l 通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程

  外设特点

  u 两个具有独立预分频器和比较器功能的8位定时器/计数器

  l 一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器

  l 具有独立振荡器的实时计数器RTC

  l 四通道PWM

  l 8路10位ADC,8个单端通道,2个具有可编程增益(1x, 10x, 或200x)的差分通道

  l 面向字节的两线接口

  l 两个可编程的串行USART

  l 可工作于主机/ 从机模式的SPI 串行接口

  l 具有独立片内振荡器的可编程看门狗定时器

  l 片内模拟比较器

  u 特殊的处理器特点

  l 上电复位以及可编程的掉电检测

  l 片内经过标定的RC振荡器

  l 片内/片外中断源

  l 6种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby模式  u I/O和封装

  l 32个可编程的I/O口

  l 40引脚PDIP封装, 44引脚TQFP封装, 与44引脚MLF封装

  u 工作电压

  :

  l ATmega16L:2.7 - 5.5V

  l ATmega16:4.5 - 5.5V

  u 速度等级

  l 8MHz ATmega16L

  l 0-16MHz ATmega16

  u ATmega16L在1MHz, 3V, 25°C时的功耗

  l 正常模式: 1.1 mA

  l 空闲模式: 0.35 mA

  l 掉电模式: < 1 μA

  引脚功能

  引脚名称引脚功能说明

  VCC 电源正

  GND 电源地

  端口A(PA7..PA0)

  端口A 做为A/D 转换器的模拟输入端。端口A 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。

  端口B(PB7..PB0)

  端口B 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。

  端口B 也可以用做其他不同的特殊功能.

  端口C(PC7..PC0)

  端口C 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。如果JTAG接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。端口C 也可以用做其他不同的特殊功能.

  端口D(PD7..PD0)

  端口D 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D 处于高阻状态。端口D 也可以用做其他不同的特殊功能.

  RESET 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。门限时间见P36Table 15。持续时间小于门限间的脉冲不能保证可靠复位。

  XTAL1

  反向振荡放大器与片内时钟操作电路的输入端。

  XTAL2

  反向振荡放大器的输出端。

  AVCC

  AVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC 连接。

  AREF

  A/D 的模拟基准输入引脚。

  ATmega16 内核介绍

  右边为AVR 结构的方框图

  为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。

  快速访问寄存器文件包括32 个8 位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU 操作。在典型的ALU 操作中,两个位于寄存器文件中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。

  寄存器文件里有6 个寄存器可以用作3 个16 位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16 位的X、Y、Z 寄存器。

  ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器操作。运算完成之后状态寄存器的内容得到更新以反映操作结果。

  程序流程通过有/ 无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大多数指令长度为16 位,亦即每个程序存储器地址都包含一条16 位或32 位的指令。

  程序存储器空间分为两个区:引导程序区(Boot 区) 和应用程序区。这两个区都有专门的锁定位以实现读和读/ 写保护。用于写应用程序区的SPM 指令必须位于引导程序区。

  在中断和调用子程序时返回地址的程序计数器(PC) 保存于堆栈之中。堆栈位于通用数据SRAM,因此其深度仅受限于SRAM 的大小。在复位例程里用户首先要初始化堆栈指针SP。这个指针位于I/O 空间,可以进行读写访问。数据SRAM 可以通过5 种不同的寻址模式进行访问。

  AVR 存储器空间为线性的平面结构。

  AVR有一个灵活的中断模块。控制寄存器位于I/O空间。状态寄存器里有全局中断使能位。每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。  I/O 存储器空间包含64 个可以直接寻址的地址,作为CPU 外设的控制寄存器、SPI,以及其他I/O 功能。映射到数据空间即为寄存器文件之后的地址0x20 - 0x5F。

  AVR单片机的型号标识解析

  1. 型号紧跟的字母,表示电压工作范围。带“L”:2.7-5.5V;若缺省,不带“L”:4.5-5.5V。

  例:ATmega48-20AU,不带“L”表示工作电压为4.5-5.5V。

  2. 后缀的数字部分,表示支持的最高系统时钟。  例:ATmega48-20AU,“20”表示可支持最高为20MHZ的系统时钟。

  3. 后缀第一(第二)个字母,表示封装。“P”:DIP封装,“A”:TQFP封装,“M”:MLF封装。  例:ATmega48-20AU,“A”表示TQFP封装。

  4. 后缀最后一个字母,表示应用级别。“C”:商业级,“I”:工业级(有铅)、“U”工业级(无铅)。  例:ATmega48-20AU,“U”表示无铅工业级。ATmega48-20AI,“I”表示有铅工业级。  AVR 8-Bit MCU的最大特点

  与其它8-Bit MCU相比,AVR 8-Bit MCU最大的特点是:

  · 哈佛结构,具备1MIPS / MHz的高速运行处理能力;

  · 超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC进行处理造成的瓶颈现象;

  · 快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发;

  · 作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力;

  · 片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠;

  · 大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comparator,WDT等;

  · 大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序。

  AVR单片机的应用区域

  目前,AVR已被广泛用于:

  · 空调控制板

  · 打印机控制板

  · 智能电表

  · 智能手电筒

  · LED控制屏

  · 医疗设备

  · GPS

  从市场角度看AVR单片机

  · 性价比:AVR大部分型号的性价比较高,性价比表现突出的型号有:atmega48、atmega8、atmega16、atmega169P

  · 供货方面:通用型号的AVR供货较为稳定,非常规型号的AVR样品及供货仍存在问题。

  · 市场占有率:目前,AVR的市场占有率还是不如PIC与51,但,AVR的优点使得AVR的市场占有一直在扩展,AVR的年用量也一直在上涨。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案