- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于低成本MCU的电流环路校准器的设计与实现
电流环路校准器的设计
这次设计的系统由数字键盘、编码器、微控制器、数字/模拟转换器(DAC)、电流源、模拟/数字转换器(ADC)和LCD指示器组成(见图4)。我们使用PIC16F877微控制器控制系统。PIC16F877是一种40引脚、带8位CMOS闪存的微控制器。选择这种微控制器的理由是,它具有足够多的输入端口用于LCD、键盘和数字/模拟转换器,还有一个串行外设接口(SPI)、一个用于键盘的中断源、一个内部模拟/数字转换器(ADC),最后是低成本。
图4:系统框图。
对于电流源来说,需要输出电流在4mA至20mA范围内的微控制器控制的DAC。基于这个目的,我们使用了一个数字化可编程的AD420芯片,该芯片采用ΣΔ架构,具有16位精度,并提供电流输出功能和SPI接口。
我们还使用模拟/数字转换器测量电流。PIC16F877内部的模拟/数字转换器具有10位分辨率,可以测量0至5V的电压值。电流流经0.47Ω电阻,并利用同相放大器放大到0~5V电平。另外,我们还使用了4x3的数字键盘和16x2大小而且带HD44780接口的GDM1602B指示器。
本次设计的设备有两种模式:第一种模式产生大小由用户输入的电流,第二种模式读取从外部电流环路检测到的电流。在电流源模式,从键盘输入的电流信息被送往微控制器并通过解码器分析。由微控制器决定了的电流信息再通过SPI协议发送到DAC,然后产生4-20mA范围内的目标电流值。在测量模式,连接输入端的外部电流环值将显示在LCD指示器上。
嵌入式软件设计
我们在Code Composer Studio(CCS)环境中用PIC C语言开发微控制器上运行的嵌入式软件。在微控制器上运行的软件接收校准器是否在用户选择的电流源或电流测量模式下工作的信息。图5显示了我们开发的主程序流程图。
图5:主程序流程图。
从主流程图可以看出,#键实现的是“取消”或“删除”任务,并重复这个任务。另外,*键具有在任何时刻返回主干程序的功能。
电流源模式
在电流源模式,嵌入式程序根据图6所示的流程图运行。从这个流程图可以看出,首先,用户要输入一个电流值,其中小数点左边两位,小数点右边三位(精度为0.1%)。如果在输入阶段输入了错误的值,用户可以按#键取消这个值。如果想要一步步地处理,那么整个过程可以用5个值完成:4mA、8mA、12mA、16mA和20mA。
图6:电流源程序的流程图。
在输入完电流值后,数据将通过SPI协议传送给AD420集成电路并启动电流产生过程。不管是在输入电流值期间还是在产生该电流值后,加载进*键和#键的功能都不会改变,只会执行。这些功能是:
不管何时只要按下*键,系统就会返回到模式选择菜单(主菜单)
不管何时只要按下#键,都会进行清屏,然后提供电流值输入界面
一旦电流值的小数点右边三位输入完后,电流就会自动产生,等整个过程成功完成后,还会在LCD上的电流值旁边显示“OK”标记。如果用户输入的电流值超出范围,即小于4mA或大于20mA,LCD上将显示“超出输出范围”的警告消息。
电流测量模式
在电流测量模式时,由电压放大层产生的电平被模拟/数字转换器读取,然后在屏幕上显示测量出的电流值,见图7所示的流程图。
图7:电流测量模式下的程序流程图。
键盘中断
在键盘接口中,我们使用了PIC16F877的“根据状态改变(change on-state)”中断源来检测是否有键按下。利用这个中断源,当微控制器的B输入端口的状态发生改变时,中断将自动启动。这样,当设备不在使用时,微控制器将进入睡眠模式以节省功耗。