作者:刘金英,李建朝,郑彦义,张朝亮
1.前言
在工业控制中需要对各种参量进行采集,即利用信号采集系统将各种数据采集到计算机中进行实时处理。传感器起着中间桥梁的作用,但是它输出的信号往往是很微弱的电流信号,需要经过放大转换成电压信号后才能输入到a/d中进行数据采集。另外,随着测试技术的不断发展,为了适应数字化、高效率等要求,在工业测试系统中单片机的应用也越来越广泛,它具有实时及可靠性高的优点,并且日益显示出巨大的优越性。本系统采用美国cygnal公司的c8051f020单片机为控制核心,组成了多通道数据综合采集系统,它利用较少的外围器件实现了对液压设备的控制。
2.c8051f020单片机简介
c8051f020器件是完全集成的混合信号系统级mcu芯片(soc),它使用cygnal的专利cip-51微控制器内核,cip-51与mcs-51指令集完全兼容。它采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。cip-51提供了22个中断源,允许大量的模拟和数字外设中断微控制器,因而有更高的执行效率。具有64个i/o引脚,每个端口都可以配置成推挽或漏极开路输出。c8051f020 mcu内部有一个smbus/i2c接口、两个具有增强型波特率配置的全双工uart和一个增强型spi接口,每种串行总线完全用硬件实现,都能向cip-51产生中断。它内部有一个12位的adc0,该子系统包括一个9 通道的可编程模拟多路选择器(amux0),一个可编程增益放大器(pga0)和一个100ksps、12 位分辨率的逐次逼近寄存器型adc,adc中集成了跟踪保持电路和可编程窗口检测器;一个8位的adc1,包括一个8 通道的可配置模拟多路开关(amux1),一个可编程增益放大器(pga1)和一个500ksps、8 位分辨率的逐次逼近寄存器型adc。两个12位的dac转换器,每个dac 都具有灵活的输出更新机制,允许无缝的满度变化并支持无抖动输出更新。c8051f020还有5个通用的16位定时器和5 个捕捉/比较模块的可编程计数器/定时器阵列。
3.系统的硬件结构
多通道综合采集系统以c8051f020单片机为核心,主要由以下几部分组成:数据的采集、lcd显示和数据通讯三部分,其硬件框图如图1。传感器输出的电流信号经过放大转换后,送至c8051f020内部的a/d转换器中,在单片机内部完成模数转换、数据存储、数据处理的工作,最后送到lcd显示,同时经过rs-485接口送至计算机,由上位机进行实时监控。
3.1数据的采集
对于液压设备中的8个待测参数选用相应的传感器来来检测,试验时选取应变式传感器作为测试现场的工具。这些选用的检测元件输出都是标准的4-20ma微弱的电流信号,电流信号又经过由lm324组成的放大转换电路转换成0-5v的电压信号输入到c8051f020的模拟输入端,如图2所示,经内部集成的a/d转换器转换成相应的数字量。c8051f020将8路采样值作为液压设备现场的状况存入相应的内存单元。
3.2 lcd显示
为了使数据采集系统小巧美观,同时又获得较高的性价比,选用德彼克公司生产的dmf-50174蓝屏液晶显示器,该显示器是320×240点阵式液晶,图形和文本都可以显示。显示驱动控制芯片采用epson 公司的一种高性能lcd 控制器sed1335。硬件电路采用间接接法,如图3所示。用单片机的p5.0~p5.7口作为sed1335的db0~db7数据总线的输入通道。p4.5作为sed1335的片选信号, 配合地址信号a0实现sed1335 通过数据总线接收来自单片机的指令和数据。当a 0= 0, p4.6(wr)=0,p4.7(rd)= 1时, 实现指令的写入和从sed1335 中读取数据。当a 0= 1, p4.6(wr)= 0, p4.7(rd)=1时, 则是显示数据的写入,该功能通过软件实现。
3.3 数据通讯
单片机c8051f020的tx0、rx0及p0.2通过max485与上位机相连,进行串行通信,如图3所示。p0.2控制max485的状态或发送,用软件控制。rx0为单片机的串行输入端,接收上位机通过max485向单片机发送的数据。tx0为单片机的串行输出端,通过max485发送给上位机。
4 系统软件设计
4.1 软件设计总体上由两部分组成:一部分为单片机c8051f020
主程序设计,一部分为lcd液晶显示程序设计。由于用c语言编程可以降低程序的复杂度,提高程序的可读性和可修改性,所以本软件采用c51进行编程,keil μvision2编译器进行编译。
主程序流程图如图4所示。
4.11 主程序
void main (void){
long voltage; //电压以mv为单位
int i; //循环计数器
wdtcn=0xde; //禁止看门狗定时器
wdtcn=0xad;
sysclk_init(); //初始化振荡器
port_init(); //初始化数据交叉开关
uart0_init(); //初始化uart0
timer3_init(sysclk/samplerate0); //初始化定时器3溢出作为采样率
adc0_init(); //初始化adc
ad0en=1; //允许adc
ea=1; //允许所有中断
while(1){
for(i=0;i{ea=0;
voltage=result[ i]; //从全局变量中取得adc值
ea=1;
voltage = voltage*vref0;//计算电压(mv)
voltage = voltage》》16;
lcd_disp(); //调显示程序,显示电压值
printf(“channl‘%d’ voltage is %ldmv\n”,i,voltage);//串口输出
}}
5 结束语
测试实验中定义c8051f020的采样频率为50000hz,adc0设为定时器3溢出的连续转换模式,采用差动输入方式组成8路转换通道,单片机运行后由定时中断进行数据采集。
c8051f020将采集的数据通过rs-485接口传送给上位机,在传送期间波特率必须和pc机设置的波特率保持一致,否则不能正确接收。在测量过程中,整个系统工作稳定,数据可以得到“准”实时的显示。
本文作者的创新点就是能够把液压系统参数中的功率p实时显示出来,而在以往的液压显示设备中只能分别显示液体的压力p和流量q,然后再用公式p=pq计算液压功率,比较麻烦;而且c8051f020芯片集成了大量的外设和io口资源,在设计系统时,只需使用少量的外围芯片便可完成所需的功能,简化了硬件电路设计,节省了电路板空间,缩小了产品的体积,因而本系统有很广阔的应用前景。
中芯国际表示目前未涉及石墨烯晶圆领域
马云的无人超市最新消息汇总:马云的无人超市试运营,系统频繁出错,消费者立刻骂起来
乌龟海岸发布三款游戏耳机 最低售价569元
科拓股份助力重庆巴南区打造城市智慧停车
低功耗CO2传感器在室内空气基准测试中应用
基于单片机实现多通道数据综合采集系统的应用方案
淘宝牵手小红书,电商又将如何开辟新道路?
TATA木门新品发布会 打造主动降噪静音生活
华为将麒麟9000打造成为全球综合能力最强悍的5G手机芯片
梦之墨首场"校园On-Site电子设计挑战赛"走进西北工业大学
什么是高电压、大电流晶闸管
山东省:到2022年,培育300家工业互联网创新企业
用定制DSP设计MPEG
指针式万用表的工作原理
交换机的传输速度
PCB设计为什么一般控制50欧姆阻抗
腾讯下半年将推出VR头盔 或不久就能体验真实王者荣耀
利用IP流量发生器实现IPTV测试仪的设计方案
随着AI法律机器人的成熟化发展,未来它是否真的会代替律师呢?
电路板损坏是什么造成的?