利用AVR的铅酸蓄电池管理系统原理及设计

发布者:心若澄明最新更新时间:2013-12-10 来源: eefocus关键字:AVR  铅酸蓄电池  管理系统 手机看文章 扫描二维码
随时随地手机看文章

1. 引言

      本文以嵌入式 S3C2410为核心芯片,设计和实现了一种高速、高精度且具有一定处理能力的数据采集处理系统,并将其应用于工业过程水位和温度的实时监测。

      在工业过程或实验室里,经常需要对多种信号进行同时采集及监测,以便实现性能分析、过程控制、系统恢复等目的。目前,常用的数据采集装置,多采用单片机实现,软件多采用单任务顺序机制,这使得系统不仅处理能力有限,而且存在稳定性差的问题。以嵌入式计算机为核心的嵌入式系统由于具有体积小、性能好、功耗低、可靠性高以及面向行业应用的突出特征,成为继 I T网络技术之后,又一个新的技术发展方向 [1]。

2. 系统总体设计

      本设计采用以 ARM9为核心的 S3C2410作为数据采集与处理的核心,主要包括以下四个模块:信号采集、数据存储、数据显示、数据传输。模拟信号通过放大电路再输入到 S3C2410处理器片内 A/D转换器,经过处理结果以动态波形的形式显示在 LCD上,并用触摸屏控制显示方式。同时通过串口发送给 PC,在 PC上用 VC++编写的程序对数据进行显示、存储等后续处理。系统结构如图 1所示。

3. 硬件电路设计

      温度和水位的测量用的是变送器。以温度变送器为例,本系统选用的是北京赛亿凌科技有限公司的 STY系列一体化温度变送器,它的测量范围是 0~150℃,它的输出是一个与被测温度成线性关系的 4~20mA的恒流信号。

      为了满足测量要求,在温度变送器的两个输出端之间接一个电阻,使其输出的电流信号转换成电压信号,考虑到 S3C2410内部 A/D转换器的输入范围是 0~3.3v,因此选用 165 Ω的电阻。电路连接图如图 2所示。

      由图 2可知,温度变送器产生的 4~20mA电流信号,经电路转化变成了 0.66~3.3V的电压信号,此电压信号传递给 S3C2410内部的 A/D转换器。采样温度值可以这样计算,设采样得到的电压值为UT,单位为 V,对应温度为 T,单位为℃,则 T的值可由式( 1)求得:

4. 系统软件设计

      软件设计主要是 uC/OS-II移植和任务的编写。uC/OS-II是一个免费的、可裁减、源码开放、结构小巧、抢占式的实时多任务嵌入式内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良和可扩展性强等特点[2]。
为了方便移植,绝大部分 uC/OS-II的代码是用 ANSI C语言编写的;但是仍需要用 C语言和汇编语言写一些与处理器硬件相关的代码,这是因为uC/OS-II在读/写处理器寄存器时,只能通过汇编语言来实现。与处理器相关的代码包括 OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C三个文件,所以移植的主要任务就是修改这三个文件。
(1) 在修改 OS_CPU.H中与处理器和编译器相关的代码时要注意几点 [3]:
(a)不同的处理器有不同的字长,uC/OS-II为了确保其可移植性,不使用 C的int,short,long等数据类型,因为这些数据类型是与编译器相关的,是不可移植的。
(b)修改 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏。uC/OS-II需要先禁止中断再访问代码的临界区,并且在访问完毕后重新允许中断。OS_ENTER_CRITICAL()的功能是关中断,在 S3C2410上通过 OS_CPU_A.ASM中的 INTS_OFF()函数来实现。OS_EXIT_CRITICAL()用于开中断,通过 OS_CPU_A.ASM中的INTS_ON()函数来实现。

(c)OS_STK_GROWTH用来定义堆栈生长方式, 置 0表示堆栈从下往上增长,置 1表示
堆栈从上向下增长。而在本设计中使用的是堆栈从上向下增长 S3C2410处理器,所以置1。(d)OS_TASK_SW()是一个任务切换宏,用于从低优先级任务切换到高优先级任务。它将任务切换函数OSCtxSw()封装起来。 [page]
(2) 修改OS_CPU_C.C中与操作系统相关的OSTaskStkInit()函数
OSTaskStkInit()用于任务堆栈初始化,OSTaskCreate()和 OSTaskcreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构。图 3显示了OSTaskStkInit()在建立任务时,任务堆栈初始化的形式。

 (3) 编写OS_CPU_A.ASM中4个与处理器相关的函数
OSStartHighRdy( )在程序中被 OSStart( )函数调用,作用是使就绪任务中优先级最高的任务开始运行。 OSCtxSw()是任务级的任务切换函数,通过执行软中断指令,或者依据处理器的不同,执行TPAR(陷阱)指令来实现。OSIntCtxSw()是中断级任务切换函数,通过调用它,可以在 ISR中执行任务切换功能。OSTickISR()为 uC/OS-II提供一个周期性的时钟源,来实现时间的延迟和超时功能。

5. 应用任务设计

系统流程图如图 4所示。

(1) 初始化uC/OS-II系统环境
图 4的左半部分所完成的功能是启动操作系统,并创建 Main_Task和 tch_Task两个任务。右半部分是 Main_Task()和 tch_Task()的主要内容,这是本设计的重点部分。模拟信号的采集,显示是在 Main_Task()中完成的,而对显示方式的控制是由tch_Task()来完成的。
(2) 编程实现 A/D转换
模拟数据的采集是在 Main_Task( )中通过调用函数 void init_ADdevice()和 intGetADresult(int channel)实现的。模拟信号经 A/D转换后的一个 10位数字量,通过式(1)
(2)中将其转换成实际的数据。式中的 3.3表示模拟量的上限值,1023是经(2 10-1)计算得来的,经计算后的数据就是实际的模拟量值。数据经滤波后分别存放在两个变量中,用于下面的绘图部分程序。
(3) 触摸屏控制程序
    这一部分程序的思想是:若有触摸动作,取触点坐标值,判断其是否属于 LCD上显示的控制按钮的坐标范围,若是则做出相应的控制调整,若否则无动作。返回触点坐标的子函数为 TchScr_GetScrXY(int *x,int *y)。在本设计中,定义了 3个控制按键,它们用于传递控制信息。
(4) 绘图的API函数
在uC/OS-II系统环境下,绘图必须通过使用绘图设备上下文(DC)来实现。绘图设备上下文(DC)中包括与绘图相关的信息,如:绘图坐标、画笔颜色、画笔宽度等等。在实际使用时,使用CreateDC()创建绘图设备上下文,使用DestoryDC(pdc)删除绘图设备上下文,这两条语句在程序中应该成对出现。通过使用 LineTo( )、TextOut()、Circle( )、MoveTo( )等函数,可以将采样值实时的显示到 LCD上。
在 LCD绘图时以下两点值得注意:
(a)在 LCD绘图时要反复使用 LineTo( ) 和MoveTo( )两个函数,但在使用该函数之前,一定要注意到 LCD的分辨率。只有知道了 LCD分辨率,才能知道 LCD的坐标值的范围,从而得到正确的设定结果。本设计使用的 LCD分辨率是640*480。也就是说,初始坐标系的 x值范围为(0≤x≤640),y值范围(0≤y≤480)。
(b)由于LCD宽度有限,当横坐标 x>LCDWidth时,波形就超出显示范围了。解决方法是在 LCD上显示自左至右画出的波形,当画到 LCD的最右端时,清一次屏幕后,重新从 LCD的左端向右画线,同时横坐标的值也相应的改变。
(5) PC机上数据显示程序

      为了更好的记录和分析数据,我们在 PC机上用 VC编写了程序,这样可以很好保存和处理数据,为性能分析和系统故障恢复提供了有利条件。

6.结论

      uC/OS-II实时操作系统是开放源码且得到实际验证的软件平台,而ARM处理器具有强大的32位RISC性能。基于uC/OS-II及ARM,能大量减轻研发任务,提高研发速度,为在短时间内设计出控制性能优秀的数据采集系统创造了条件。本文数据采集系统已成功应用于工业场合温度和水位的实时测控,达到了很好的效果。
本文作者创新点:摒弃了传统单片机数据采集,采用移植性好的嵌入式 uC/OS-II系统,具有后续开发简单,系统稳定性好,可靠性高等特点。本设计可以很容易得移植到其他数据采集系统当中去。

关键字:AVR  铅酸蓄电池  管理系统 引用地址:利用AVR的铅酸蓄电池管理系统原理及设计

上一篇:AVR芯片封装图例
下一篇:AVR单片机的RTOS-AVRX应用

推荐阅读最新更新时间:2024-03-16 13:31

avr单片机USART串口通讯初始化配置及说明
avr atmega16 单片机通用同步和异步串行接收器和转发器 (USART) 是一个高度灵活的串行通讯设备,其工作模式及其初始化,寄存器说明如下。 //*****************************USART 控制和状态寄存器A(UCSRA)******************************** /*USART 控制和状态寄存器A(UCSRA) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RXC TXC UDRE FE DOR PE U2X MPCM RXC: USART 接收结束
[单片机]
AVR单片机的RC5和RC6算法比较与改进
摘要:RC5及RC6是两种新型的分组密码。AVR高速嵌入式单片机功能强大,在无线数据传输应用方面很有优势。本文基于Atmega128高速嵌入式单片机,实现RC5和RC6加密及解密算法,并对算法进行汇编语言的优化及改进。根据实验结果。对两种算法的优热点进行比较和分析。 关键词:Atmega128 RC5 RC6 分组密码 混合密钥 Flash 引言 在无线局域网中,传输的介质主要是无线电波和红外线,任何具有接收能力的窍听者都有可能拦截无线信道中的数据,掌握传输的内容,造成数据泄密。因此,对于无线局域网来说,数据的加密是关键技术之一。 AVR高速嵌入式单片机是8位RISC MCU,执行大多数指令只需一个时钟周期,速度快(8M
[应用]
AVR单片机atmega16串口中断接收和发送程序
// Target : M16 // Crystal: 8.0000Mhz // AVR单片机 atmega16串口中断接收和发送程序。接收到字符后再发送出去 #include iom16v.h #include macros.h unsigned char com_in_buf ; void port_init(void) { PORTA = 0xFF; DDRA = 0xFF; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; } //UART0 initialize // desired ba
[单片机]
AVR 中 delay 函数的调用注意事项!delay_ns delay_ms
早就知道AVR的编译器有自带的延时子函数(或者说是头文件),但一直没时间一探究竟,今天终于揭开了其内幕。 AVR编译器众多,可谓是百家齐鸣,本人独尊WinAVR. 说明:编译器版本WinAVR-20080610 先说winAVR的_Delay.h_肯定是在Include文件夹下了,进去一看果然有,可打开一看,其曰: This file has been moved to util/delay.h . 在util文件夹中找到delay头文件如下: -----------------------------------------------------------------------------------------
[单片机]
AVR单片机的24C02通信程序
#include avr/io.h #define uchar unsigned char #define uint unsigned int #define setbit(sfr,bit) (sfr|=(1 bit)) #define clrbit(sfr,bit) (sfr&=~(1 bit)) #define SDA_out() setbit(DDRD,0) //设置SDA为输出 #define SCL_out() setbit(DDRD,2) //设置SCL为输出 #define SDA_in() clrbit(DDRD,0) //设置SDA为输入 #define SDA_high() setbit(PORTD
[单片机]
avr--TWI(I2C)
TWI: 是一种全双工的串行通讯协议,与I2C工作方式相同,由一条数据传输线SDL,一条时钟线SCL组成,对应单片机的外部引脚PC1,PC0。 由于只有两条总线,简化了系统设计。 特点: • 简单,但是强大而灵活的通讯接口,只需要两根线 • 支持主机和从机操作 • 器件可以工作于发送器模式或接收器模式 • 7 位地址空间允许有128 个从机 • 支持多主机仲裁 • 高达400 kHz 的数据传输率 • 斜率受控的输出驱动器 • 可以抑制总线尖峰的噪声抑制器 • 完全可编程的从机地址以及公共地址
[单片机]
AVR单片机pwm程序+仿真_数显
#include iom16v.h #define uchar unsigned char #define uint unsigned int uchar Table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79}; uchar Data1 ={10,0,5,0}; uchar Data2 ={3,9,1,0}; uchar Key1,Key2; void DelayMs(uchar i) { uchar j; for(;i!=0;i--) { for(j=150;j!=0;j--); } } v
[单片机]
<font color='red'>AVR</font>单片机pwm程序+仿真_数显
基于AVR的LED数字大屏幕的设计与实现
   1引言   LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,应用越来越广泛。ATMEGA16L单片机是一款基于AVR RISC 的、低功耗CMOS 8 位单片机,具有16K字节的自编程FLASH, 512字节的EEPROM, 1K字节的SRAM, 通过AVR单片机来控制LED的显示,结构简单,应用灵活,并且易于扩展。   2 系统设计原理   2.1 编码设计   编码设计有两个过程:字库提取以及字模编码转换。字库的提取涉及到的两个字库文件,一个为ASC16,专门存放ASCII编码;另一个为HZK16,专门存放汉字字库编码。要提取字库,首先要对它进行初始化,即打开字库。然后根据一个字符提取它相应的编
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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