工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->微机单片机电路图->单片机综合电路图->基于AVR单片机的自行车行车记录仪,软硬件协同

基于AVR单片机的自行车行车记录仪,软硬件协同

作者:angelazhang时间:2015-06-05

【摘要】自行车行车记录仪是集计算机技术、电子技术为一体的机电一体化高科技产品,具有精确度高,使用方便等优点。本项目将从行车记录仪的功能,硬件电路设计,软件设计,各项功能实现原理等方面来论述这一系统。

 

自行车行车记录仪包括主控板,打印机驱动板,霍尔传感器,12864液晶显示器,EPSON微型打点打印机这五部分。该记录仪能记录实时的行车速度,行车总里程,单次行车里程,以及历史最高行车速度,具备外部环境温度显示,总里程设置,行车信息打印等功能,是面向自行车爱好者的一个高精度,功能强大的行车记录仪。

 

功能上,在设计行车记录仪时,以Atmega64单片机为核心,AT24LC64 EEPROM,DS1302,12864液晶显示器,霍尔传感器等构成外围电路,行车记录仪的核心部件是霍尔传感器,在下面讲述原理的时候会进行详细的描述。显示部分由12864液晶来完成,该液晶控制简单,显示区域大,低功耗,适合电池供电,可以通过设计菜单,从而来实现记录仪强大的功能。打印部分由EPSON M-150II微型打点打印机来完成,用户可以通过打印机记录行车的统计信息,以及最近一次的行车信息,各种里程信息以及时速,时间等信息,用户可以通过保管打印的信息,对自己的行车生涯进行统计。

 

系统软件设计包含用户UI界面,以及各个外围电路的驱动两大部分。使用的编译器是AVR官方推荐的ICCAVR,其中外围的驱动部分主要包括: DS1302时钟芯片驱动;DS18B20温度传感器驱动;24LC64 EEPROM驱动;EPSON M-150II微型打点打印机驱动;12864液晶驱动

 

硬件电路制作使用Protel DXP设计制做PCB板。分主控板和打印机驱动板焊接调试,进行性能和功能测试。

 

本系统硬件部分结构简单,软件部分使用自己设计UI界面,使用方便,中文显示,可操作性强,具有比较好的市场前景。  

 

1. 引言

自行车行车记录仪(以下简称码表)在国内外已经有了广泛的应用,但是不管是国外的还是国产的码表都存在着很多缺点。

 

首先,对于国产码表来说,缺点主要有:

 

  1. 安装相当麻烦,根据使用者评价,一般安装需要半小时以上,而国外的进口码表则只要5分钟即可安装完毕,所以在设计该码表时需要在这方面进行改进。

  2. 即时速度显示混乱,其实这是计算精度不够造成,速度高于25M/S以后(特别是30M/S以后)当前速度就开始有波动,速度越快波动越大,这个问题还导致最高速度不可信,所以在设计时选择的CPU必须是具有较高计算速度,且实时性能较好的,这里选用了AVR的MEGA64高性能8位单片机,此单片机资源丰富,最高速度可以达到16MIPS/S。

  3. 里程和速度的清零功能未能真正实现,它不能像国外的SIGMA那样清除指定的数据,而是全部清零重置,连总里程和时钟都清零了,所以这个设计也是非常的失败的,需要改进。

  4. 时钟不准,根据大部分使用者的反应,一个月快了差不多半小时。

  5. 某些国产表的轮径设置最小只能适应20*2.0cm的轮胎,也就是说折叠车基本用不上,这点也是需要改进的。

  6. 最后一点对于普通用户来说都是比较反感的,说明书以及液晶上的显示都是全英文的,而且液晶显示简单,说明书也只是一个小纸片而已,对自行车码表没点了解、没有点钻研精神还不一定能搞清里面的功能和用法。

 

再次,对于外国的码表来说,观点主要有以下:

除了以上的第六个缺点以外,其它缺点基本都是不存在的,但是一个比较致命的要害是价格高,一般的消费群体买不起。就拿比较出名的德国品牌sigma,最便宜的到70多,但是功能实在单一。而功能强大,性能又好的则贵至好几百元,上千元不等,型号很多,价格范围波动也很大。

 

最后,总结出不管是国内还是国外码表,都存在以下缺点:

  1. 显示都是英文,对于一般的用户使用比较的不方便,而且安装较麻烦,初始化设置十分的繁琐。

  2. 功能单一,一般便宜的码表,往往只具备速度的记录,行车总里程,行车总时间的记录等等,并且通过液晶查看,不能有效的统一历史数据,或者只能查阅近几天的历史数据。

    实现该系统所需要的知识如下:

    单片机C语言编程;IIC,单总线等串行总线编程;模块化程序设计;霍尔传感器原理及实现方法;液晶显示编程;打印机实现原理;protel画原理图以及画PCB等。

     

    核心元件,单片机,这里选择ATMEL公司的8位中高端单片机Atmega64,选择它的理由主要有以下几点:

    1. 在存储方面,使用的是ATMEL公司的AT24LC64 EEPROM存储器,该存储器走的是IIC(ATMEL公司开发的两线串行总线)总线模式,虽然可以用一般的单片机模拟IIC总线,但是为了提高效率则必须选择具有IIC总线接口的单片机,这个一般的51单片机已经不能满足,所以需考虑其它单片机。

    2. 打印机模块,有下面的打印机实现原理(图4.5)可知,我们必须选择具有双边沿触发的单片机,有这个功能的单片机ATMEL的AVR系列的中高端单片机能满足,比如Atmega64及以上的单片机都具有这一功能。

    3. 霍尔传感器,霍尔传感器测速必须具有两个内置外设,一个是外部下降沿中断,一个是内部定时器,Atmega64也能很好的满足。

    4. 内存空间要求:在做用户界面以及制作贪吃蛇等游戏时都必须开很大的缓存,所以必须具备一定的内存容量,初步估计需要2K内存以上,而Atmega64拥有4K内存,能够完全满足。

    5. 更重要的是,这款单片机价格便宜,只要20余元便能购置一片,所以选择这个单片机时比较合适的。

    下面将从硬件系统,软件系统,各个模块的实现原理,软硬件调试这几个方面来详细的讲述这一个系统。

     

    2. 系统框架

    2.1 系统框架结构图

    系统框架结构图如图2.1所示

    图2.1 系统框架图

     

    2.1.2 主控板

    如上图2.1所示,主控板为系统核心,主要包含单片机ATmega64(ATEML公司8位中高端单片机)以及,各个模块接口。

     

    2.1.3 打印机

     

    如上图2.1所示,打印机模块需要一个驱动板以及一个打印机模块,打印机为EPSON公司的M-150II微型打点打印机,一行可以打96个点。

     

    2.1.4 存储模块

     如上图2.1所示,存储模块用的是ATMEL公司的AT24LC64 EEPROM(电可擦除编写存储器)存储器,大小一共是8千字节。

     

    2.1.5 温度传感器

    如上图2.1所示,温度传感器用的达拉斯公司的DS18B20单总线数字温度传感器,支持多个挂同一条总线,且测试温度较准。

     

    2.1.6 霍尔传感器

    如上图2.1所示,霍尔传感器使用的是A3144先行霍尔元件,在下面的第三章,硬件设计中将看到对霍尔传感器的改良。

     

    2.1.7 液晶显示器

    如上图2.1所示,液晶显示器使用的STN7920控制器的12864液晶显示器,该液晶宽128个点,高64个点,故名12864,并且自带中文字库,可显示区域大。

     

    2.2 解决的主要内容   

    1. 如何利用好强大的MEGA64单片机资源而不浪费,以及充分理解该单片机相关的控制单元内在的物理逻辑,由此才能深入的理解单片机的运行以及启动过程,并发现问题时能得到及时解决。

    2. 行车记录仪的硬件设计— 记录仪总共涉及到温度,时间,电源,液晶,打印机等多个模块组成,在设计硬件时需要充分考虑到各种干扰,美观度等因素。

    3. 多层菜单设计— 多层菜单是一个比较复杂的逻辑,如果设计不好会导致整个工程的混乱,使代码变得难于理解,甚至不能继续接下去的工作,所以多层菜单设计需要一个较好的算法来实现它。

    4. 各种总线协议驱动— 单片机内置IIC,SPI等总线协议,在温度获取,flash存储中等都需要用到这些总线,所以这些总线协议的驱动也是比较关键的。

    5. 打印机驱动电路— 在本设计中,用到了EPSON的M-150II打印机,其工作电流大,需要专门的硬件驱动电路,在设计这一块电路时,必须做好和主控板(记录仪)的接口,以方便用户进行数据导出和统计。

     

    2.3 实现的主要功能

    1. 显示实时速度和平均速度

    2. 显示总里程和单次行车里程

    3. 显示时间和温度

    4. 节电保护

    5. 行车信息存储

    6. 用户菜单UI界面

    7. 时间修改

    8. 轮径设置,里程设置,等一些参数的设置

    9. 打印行车记录统计信息

    10. 贪吃蛇小游戏


  3. 硬件系统设计

    3.1 主控板

    主控板主要包括:CPU,Atmega64;时钟芯片,DS1302;存储芯片,24LC64;JTAG在线仿真接口;中断独立按键模块;LED调试电路;12864液晶显示接口;DS18B20温度传感器接口;霍尔传感器接口;打印机驱动板接口。

     

    对单片机的选择主要有以下要求:

    1. 在存储方面,使用的是ATMEL公司的AT24LC64 EEPROM存储器,该小存储器走的是IIC总线模式,虽然可以用一般的单片机模拟IIC总线,但是为了提高效率则必须选择具有IIC总线接口的单片机,这个一般的51单片机已经不能满足,所以需考虑其它单片机。

    2. 时钟模块,用的是达拉斯的DS1302芯片,只需普通的端口操作就能完成。

    3. 打印机模块,有下面的打印机实现原理可知,我们必须选择具有双边沿触发的单片机,有这个功能的单片机ATMEL的AVR系列的中高端单片机能满足,比如Atmega64及以上的单片机都具有这一功能。

    4. 霍尔传感器,霍尔传感器测速必须具有两个内置外设,一个是外部下降沿中断,一个是内部定时器。

    5. 内存空间要求:在做用户界面以及制作贪吃蛇等游戏时都必须开很大的缓存,所以必须具备一定的内存容量,初步估计需要2K内存以上。

     

    由以上几点分析,这里我选择了ATMEL公司的AVR系列单片机Atmega64,该款单片机价格便宜,功能强大,能满足上面几点的全部要求。

       

    结论:最终选择的单片机为ATMEL公司的Atmega64八位高性能单片机。

     

    主控系统的核心如图3.1所示。

    图3.1 核心板最小系统

     

    3.2 霍尔传感器

    霍尔传感器是实现行车记录仪最核心的部件,记录仪的核心记录参数(车速),便是由霍尔传感器实现的,所以在制作霍尔传感器时必须严格把关。

     

    3.2.1霍尔传感器工作原理

    霍尔传感器,顾名思义,利用的是霍尔效应。

     

    霍尔效应的本质是:固体材料中的载流子在外加磁场中运动时,因为受到洛仑兹力的作用而使轨迹发生偏移,并在材料两侧产生电荷积累,形成垂直于电流方向的电场,最终使载流子受到的洛仑兹力与电场斥力相平衡,从而在两侧建立起一个稳定的电势差即霍尔电压。正交电场和电流强度与磁场强度的乘积之比就是霍尔系数。平行电场和电流强度之比就是电阻率。大量的研究揭示:参加材料导电过程的不仅有带负电的电子,还有带正电的空穴。

     

    本记录仪中使用的霍尔元件A3144E正是利用这一效应而产生的。其实物结构图如图3.2所示

    图3.2 霍尔元件结构图

     

    霍尔元件工作原理:实物结构图如上图3.2所示,3脚为信号脚,1脚和2脚分别接电源和地。在没有经过磁场时,输出为高电平,当磁场渐渐变强时,则输出的电平会渐渐变低,当磁场周期性的出现时,在输出脚便会出现一个正弦波电压,霍尔元件信号输出如图3.3所示

    图3.3 霍尔元件信号输出

     

    3.2.2 霍尔传感器改良

    如上图3.3所示在周期性磁场的作用下,霍尔元件,A3144E输出的是一个周期性的正弦波,而单片机能识别的只是1或0的高低电平,如果把这个信号直接接单片机则有很多缺点:

    • 单片机无法识别该信号除了高电平和低电平时的电平

    • 霍尔元件灵敏度低,只有在磁铁靠的很近的时候才有反应

     

    针对以上缺点,需要对霍尔传感器进行改良,目的为了提高灵敏度和改善输出波形,改良的电路图如图3.4所示


    工作原理:改良的霍尔传感器如上图3.4所示,在没有磁场的情况下,3144输出高电平,则运算放大器输出低电平,当经过磁场时,3144输出电平渐渐变低,当电平低于放大器负极时则放大器输出低电平,从而通过单片机采集这个低电平信号。

    由以上工作原理可知,可以通过调节滑动变阻器R3,从而来调节触发电平。并且通过点亮灯LED1来指示信号的输出。

    改良后的霍尔传感器信号输出波形如图3.5所示

    图3.5 霍尔传感器输出信号

     

    霍尔传感器信号输出如上图3.5可知,经过改良后的霍尔传感器能输出一个单片机能识别的方波,并且可以通过调节滑动变阻器R3来调节传感器的触发电平,同时通过指示灯LED1来指示信号的输出,最主要达到了增强信号的可处理性的目的。

     

    3.3 打印机

    打印机在打印的时候需要大电流提供,而单片机的IO管脚最多只能提供20mA的电流,所以打印机在打印之前需要有额外的驱动电路来提供打印需要的电流。打印机实物接口如下图3.6所示

    图3.6 打印机实物接口

     

    其中的信号接口如图3.7所示

    图 3.7 打印机信号接口

     

    打印机电机驱动如下图 3.8所示,打印机主要信号包括,电机驱动信号:Motor(+),4个打印针驱动信号:(6,7,8,9)。

     

    电机驱动电路如下图3.8所示

    图3.8 打印机电机驱动

     

       打印机电机驱动如上图3.8所示,信号由AVR_PRINT_ON脚输入,高电平驱动,当产生高电平时,通过三极管Q1驱动打印机打印。

     

    打印针的驱动如下图3.9所示

    图3.9 打印针驱动

     

    AVR_PRINT_A为信号输入脚,低电平驱动,当该脚为低电平时,通过三极管Q3和Q4驱动打印针PRINT_A打印。

     

    3.4 其它外围电路

    除了以上涉及核心电路外,其它比如时间显示,数据存储,温度显示等,都分别需要不同的硬件模块提供支持。

     

    3.4.1 时钟模块

    这里时钟采用了达拉斯的DS1302时钟芯片,时钟模块电路图如图3.10所示

    图3.10 DS1302时钟模块

     

    该模块采用串行工作模式,通过SCLK(Signal Clock,信号时钟), I/O(Input And Output,输入输出信号),RST(Reset 复位信号)三线控制芯片工作。

     

    3.4.2 数据储存模块

    数据存储采用了ATMEL公司的24LC64 EEPROM(可编程电可擦除存储芯片),模块电路图如图3.11所示

    图3.11 EEPROM存储电路

     

    该模块采用的是标准的I2C总线模式,操作简单方便,总容量为64Kbit,8K字节,对于存储记录仪的参数是绰绰有余。

     

    3.4.3 温度传感模块

    温度传感器采用的是达拉斯的DS18B20,单总线模式,温度传感器模块电路图如图3.12所示

    图 3.12 温度传感器模块

     

    温度传感器模块如上图3.1所示,DS18B20采用的是单总线模式,该数字温度传感器最大的的特点是,只需一个IO管脚便可以控制其工作,并且该传感器传感温度精确,最小可以精确到0.0625℃。

     

    3.4.4 独立按键模块

    独立按键模块是提供用户来控制和使用UI界面,原理图如下图3.13所示

    图3.13 独立按键电路

     

    独立按键电路如上图3.13所示,每个按键按下时都会产生一个中断,在设计嵌入式软件时可以通过在按键中断内判断按键值,并且可以通过定时器去除抖动,这种软件设计可以避免软件延时去抖,从而提高了整套软件的运行效率。



    4. 软件系统设计

    本套软件主要实现自行车行车记录的智能控制,其实现的功能主要有以下几点:

    • 显示平均行车速度,实时行车速度,时间和温度

    • 记录行车速度、行车总里程、单次行车里程

    • 记录总行车时间,单次行车时间

    • 轮胎圆周设定,总里程初值设定

    • 自动关机,节电保护

    • 行车统计信息打印

    • 贪吃蛇小游戏

    • 时间显示和时间设置

     

    4.1 软件总体框架

    软件总体流程图如下图4.1所示

    图4.1 嵌入式软件整体流程图

     

    4.2 软件说明

    该嵌入式软件设计的思想主要是模块化的程序设计思想,其中需要驱动的模块主要有以下几点:

    • DS1302时钟模块驱动

    • DS18B20数字温度传感器模块驱动

    • 24LC64 EEPROM存储模块驱动

    • 12864液晶显示模块驱动

    • 霍尔传感器计速模块驱动

    • EPSON M-150II微型打点打印机驱动

     

    软件主要包含三层结构,分别为应用层,封装层以及驱动层。其软件层次结构如下图4.2所示


评论

技术专区