基于MAXQ微控制器构建增强型智能4-20mA变送器
时间:09-17
来源:互联网
点击:
MAXQ2000 μC的独特性能
低功耗、16位RISC微控制器MAXQ2000是Maxim MAXQ家族的第一个成员。它具有液晶显示器(LCD)接口,可驱动多达100 (-RBX)或132 (-RAX)段。MAXQ2000极为适合血糖监测应用,并且适合任何需要高性能、低功耗工作的应用。工作频率最大为14MHz (VDD > 1.8V)或20MHz (VDD > 2.25V)。
MAXQ2000含有32k字的闪存(适合原型设计和小批量生产)、1k字RAM、3个16位定时器,以及1或2个通用同步/异步收发器(UART)。为了灵活起见,微控制器内核电源(1.8V)与I/O子系统电源独立。超低功耗的休眠模式使MAXQ2000成为便携式和电池供电设备的理想选择。
MAXQ2000评估板
功能强大的MAXQ2000 μC可以利用其评估板(EV)进行评估,该评估板提供了完整的MAXQ2000硬件开发环境(图6)。
![](../img/eec-mcu/mcu-171550fjjad5us4ac.gif)
图6. MAXQ2000评估板方框图
MAXQ2000评估板具有下列特点:
板上MAXQ2000内核电源和VDDIO电源。
可调电源(1.8V至3.6V),可用作VDDIO或VLCD电源。
对应MAXQ2000所有信号和电源的插头引脚。
独立的LCD子板连接器。
LCD子板,装有3V、3.5位静态LCD显示器。
连接串行UART (端口0)的RS-232电平驱动器,包括流量控制线。
外部中断按钮和微控制器系统复位按钮。
MAX1407多功能ADC/DAC芯片,连接到MAXQ2000的SPI总线接口。
1-Wire接口和1-Wire EEPROM芯片。
条型LED显示,指示端口引脚P0.7至P0.0的电平状态。
JTAG接口,用于应用程序下载和在系统调试。
因此,MAXQ2000评估板具备了构建智能型4-20mA变送器需要的所有功能:具有真正乘法-累加单元(用于滤波和频率编码/解码)的低功耗μC;转换传感器信号的ADC;产生模拟输出信号的DAC (图7)。加上一个低功耗Codec,如MAX1102,就可以实现一个HART调制解调器。
![](../img/eec-mcu/mcu-171551xoeex5kkrtf.gif)
图7. 基于MAXQ2000 μC的4-20mA变送器
HART调制解调器的实现
如果系统包含1 200Hz和2200Hz (分别代表1和0)频率编码器,同时要对这些频率进行检测,可以采用MAC实现HART调制解调器要求的这些功能。
要产生所需的正弦波形,可以利用下述差分方程描述的两极点滤波器形式实现递归数字式谐振器:
Xn = k * Xn-1 - Xn-2,
式中,常数k等于2 cos(2*频率/采样率)。可以预先计算k的两个值,并存在ROM中。例如,要用8kHz采样率产生1200Hz频率,该值为k = 2 cos(2*1200/8000)。
必须计算能使振荡器开始振荡的初始激励。如果 Xn-1和 Xn-2都为0,接下来的每个Xn也都将为0。要启动振荡器,将 Xn-1设为0, Xn-2采用如下设置:
Xn-2 = -A*sin[2(频率/采样率)]
在本例中,假设采用单位幅度的正弦波,该式简化为 Xn-2 = -1sin[(2(1200/8000)]。为进一步简化编码,首先,初始化两个中间变量(X1, X2)。X1初始化为0,X2为初始激励值(上面的计算结果),以启动振荡器。这样,要产生一个正弦波的采样,可进行下列运算:
X0 = kX1 - X2
X2 = X1
X1 = X0
每个新的正弦值都需要一次乘法运算和一次减法运算。利用MAXQ μC的单周期硬件MAC,可以采用如下操作产生正弦波:
move DP[0], #X1 ; DP[0] -> X1
move MCNT, #INIT_MAC ; Initialize MAC unit
move MA, #k ; MA = k
move MB, @DP[0]++ ; MB = X1, MC="k"*X1, point to X2
move MA, #-1 ; MA = -1
move MB, @DP[0]-- ; MB = X2, MC="k"*X1-X2, point to X1
nop ; wait for result
move @--DP[0], MC ; Store result at X0.
因为我们只需要检测两种频率,所以采用改进的Goertzel算法,这种算法可以用简单的二阶滤波器实现(图8)。
![](../img/eec-mcu/mcu-171552nuso3bjphbz.gif)
图8. 利用简单的二阶滤波器实现Goertzel算法
要使用Goertzel算法检测特定频率,编译时要首先使用下式计算出常数:
k = tone frequency/sampling rate
a1 = 2cos(2k)
随后,将中间变量D0、D1和D2初始化为0,并对每个收到的采样X进行下列计算:
D0 = X + a1*D1 - D2
D2 = D1
D1 = D0
得到足够多的采样值以后(采用8kHz采样率时,通常为205个采样),用最新计算出的D1和D2值进行下列计算:
P = D12 + D22 - a1 * D1 * D2.
这时,P包含了输入信号中测试频率的平方。
要对两种频率解码,我们用两个滤波器处理每个采样。每个滤波器都有自己的k值和自己的一组中间变量,每个变量都是16位长,所以,整个算法需要48字节的中间存储器空间。
低功耗、16位RISC微控制器MAXQ2000是Maxim MAXQ家族的第一个成员。它具有液晶显示器(LCD)接口,可驱动多达100 (-RBX)或132 (-RAX)段。MAXQ2000极为适合血糖监测应用,并且适合任何需要高性能、低功耗工作的应用。工作频率最大为14MHz (VDD > 1.8V)或20MHz (VDD > 2.25V)。
MAXQ2000含有32k字的闪存(适合原型设计和小批量生产)、1k字RAM、3个16位定时器,以及1或2个通用同步/异步收发器(UART)。为了灵活起见,微控制器内核电源(1.8V)与I/O子系统电源独立。超低功耗的休眠模式使MAXQ2000成为便携式和电池供电设备的理想选择。
MAXQ2000评估板
功能强大的MAXQ2000 μC可以利用其评估板(EV)进行评估,该评估板提供了完整的MAXQ2000硬件开发环境(图6)。
![](../img/eec-mcu/mcu-171550fjjad5us4ac.gif)
图6. MAXQ2000评估板方框图
MAXQ2000评估板具有下列特点:
板上MAXQ2000内核电源和VDDIO电源。
可调电源(1.8V至3.6V),可用作VDDIO或VLCD电源。
对应MAXQ2000所有信号和电源的插头引脚。
独立的LCD子板连接器。
LCD子板,装有3V、3.5位静态LCD显示器。
连接串行UART (端口0)的RS-232电平驱动器,包括流量控制线。
外部中断按钮和微控制器系统复位按钮。
MAX1407多功能ADC/DAC芯片,连接到MAXQ2000的SPI总线接口。
1-Wire接口和1-Wire EEPROM芯片。
条型LED显示,指示端口引脚P0.7至P0.0的电平状态。
JTAG接口,用于应用程序下载和在系统调试。
因此,MAXQ2000评估板具备了构建智能型4-20mA变送器需要的所有功能:具有真正乘法-累加单元(用于滤波和频率编码/解码)的低功耗μC;转换传感器信号的ADC;产生模拟输出信号的DAC (图7)。加上一个低功耗Codec,如MAX1102,就可以实现一个HART调制解调器。
![](../img/eec-mcu/mcu-171551xoeex5kkrtf.gif)
图7. 基于MAXQ2000 μC的4-20mA变送器
HART调制解调器的实现
如果系统包含1 200Hz和2200Hz (分别代表1和0)频率编码器,同时要对这些频率进行检测,可以采用MAC实现HART调制解调器要求的这些功能。
要产生所需的正弦波形,可以利用下述差分方程描述的两极点滤波器形式实现递归数字式谐振器:
Xn = k * Xn-1 - Xn-2,
式中,常数k等于2 cos(2*频率/采样率)。可以预先计算k的两个值,并存在ROM中。例如,要用8kHz采样率产生1200Hz频率,该值为k = 2 cos(2*1200/8000)。
必须计算能使振荡器开始振荡的初始激励。如果 Xn-1和 Xn-2都为0,接下来的每个Xn也都将为0。要启动振荡器,将 Xn-1设为0, Xn-2采用如下设置:
Xn-2 = -A*sin[2(频率/采样率)]
在本例中,假设采用单位幅度的正弦波,该式简化为 Xn-2 = -1sin[(2(1200/8000)]。为进一步简化编码,首先,初始化两个中间变量(X1, X2)。X1初始化为0,X2为初始激励值(上面的计算结果),以启动振荡器。这样,要产生一个正弦波的采样,可进行下列运算:
X0 = kX1 - X2
X2 = X1
X1 = X0
每个新的正弦值都需要一次乘法运算和一次减法运算。利用MAXQ μC的单周期硬件MAC,可以采用如下操作产生正弦波:
move DP[0], #X1 ; DP[0] -> X1
move MCNT, #INIT_MAC ; Initialize MAC unit
move MA, #k ; MA = k
move MB, @DP[0]++ ; MB = X1, MC="k"*X1, point to X2
move MA, #-1 ; MA = -1
move MB, @DP[0]-- ; MB = X2, MC="k"*X1-X2, point to X1
nop ; wait for result
move @--DP[0], MC ; Store result at X0.
因为我们只需要检测两种频率,所以采用改进的Goertzel算法,这种算法可以用简单的二阶滤波器实现(图8)。
![](../img/eec-mcu/mcu-171552nuso3bjphbz.gif)
图8. 利用简单的二阶滤波器实现Goertzel算法
要使用Goertzel算法检测特定频率,编译时要首先使用下式计算出常数:
k = tone frequency/sampling rate
a1 = 2cos(2k)
随后,将中间变量D0、D1和D2初始化为0,并对每个收到的采样X进行下列计算:
D0 = X + a1*D1 - D2
D2 = D1
D1 = D0
得到足够多的采样值以后(采用8kHz采样率时,通常为205个采样),用最新计算出的D1和D2值进行下列计算:
P = D12 + D22 - a1 * D1 * D2.
这时,P包含了输入信号中测试频率的平方。
要对两种频率解码,我们用两个滤波器处理每个采样。每个滤波器都有自己的k值和自己的一组中间变量,每个变量都是16位长,所以,整个算法需要48字节的中间存储器空间。
电流 传感器 电压 电路 ADC DAC 电源管理 振荡器 MIPS 滤波器 Maxim 显示器 LCD 收发器 连接器 总线 LED 编码器 相关文章:
- 智能铅酸蓄电池充电器的设计与实现(06-07)
- 电容触摸感应MCU工作原理与基本特征(11-15)
- 处理器全方位能耗测量的实现(05-02)
- 基于STM32的双相步进电机细分驱动器设计(09-08)
- 基于STM32的大扭矩永磁同步电机驱动系统(09-25)
- 锂离子电池组监控系统研究与实现 — 锂电池组管理系统测试及结论(01-26)