艾迈斯欧司朗 AS6221-EK 传感器测评
介绍了 AS6221 传感器,结合具体案例进行测评,包括串口发送、OLED显示、LabVIEW上位机数据记录等。
ams AS6221 温度传感器
AS6221 是一款高精度数字温度传感器,精度高达 ±0.09°C,非常适合医疗保健应用、可穿戴设备和需要高性能热信息的设备。
AS6221 是一个完整的数字传感器系统,无需校准或线性化。它通过标准 I²C 接口提供测量输出。该传感器支持 8 个 I²C 地址,避免了多传感器用例中的总线冲突。
传感器的超小尺寸 (WLCSP 1.5 mm x 1.0 mm) 可在非常小的健康和生活方式监测产品中实现精确的身体/皮肤温度测量。
除了高精度和小尺寸外,AS6221 还提供非常低的功耗,例如以 4 个样本/秒进行测量,电流消耗仅为 6 μA。
该传感器具有 4 种不同的自动采集模式,可在 1.71 至 3.6 V 的整个电源范围内保持高精度。
当超过温度阈值时,集成的警报功能会触发对微控制器的中断。警报功能的温度阈值可以在设备寄存器中进行调整。
AS6221 生产测试装置根据 NIST 进行校准,验证设备由 ISO/IEC-17025 认可的实验室进行校准。
引脚定义
特征
- 高温精度高
- 超低功耗
- 小集成尺寸 (WLCSP)
- 带串行总线连接的完整传感器系统
- 用于精确温度控制的警报功能
优势
- 实现高精度的体表温度测量
- 电池寿命长,自发热低
- “易于使用”的解决方案,即无需校准或线性化
- 最小的电路板空间和快速的反应时间
误差曲线
参数
模块
ams AS6221_EVM_SN Evaluation kit Kits
原理图
工程测试
这里介绍了串口发送、OLED显示、LabVIEW 上位机数据采集与记录三个项目。
1.串口发送
这里介绍了 Arduino 开发板采集 AS6221 传感器数据并通过串口不断发送的项目案例。
硬件
- Arduino 单片机(Nano、UNO、ESP8266等支持 Arduino IDE 的单片机均可)
- AS6221 传感器
- 杜邦线若干
硬件连接
代码
#include "AS6221.h"
#include <Wire.h>
AS6221 temp;
void setup() {
Wire.begin(); // Wire.begin(SDA, SCL);
Serial.begin(9600);
as6221_config_t conf = {
.cr = AS6221_CONV_RATE4,
.state = AS6221_STATE_ACTIVE,
.alert_mode = AS6221_ALERT_INTERRUPT,
.alert_polarity = AS6221_ALERT_ACTIVE_LOW,
.cf = AS6221_CONSEC_FAULTS2
};
temp.init(AS6221_DEFAULT_ADDRESS, conf);
temp.setAlertLimits(27, 29);
}
void loop() {
Serial.println(temp.getTemp(), 7);
delay(1000);
}
效果
(1)串口打印
(2)串口绘图
2.OLED 显示
介绍了 Arduino 开发板采集 AS6221 传感器数据,通过 OLED 显示,同时串口发送数据的项目案例。
硬件
- Arduino 单片机(Nano、UNO、ESP8266等支持 Arduino IDE 的单片机均可)
- AS6221 传感器
- 杜邦线若干
代码
#include "AS6221.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "logo_111x32.h"
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
AS6221 temp;
void setup() {
Wire.begin(); // Wire.begin(SDA, SCL);
Serial.begin(9600);
as6221_config_t conf = {
.cr = AS6221_CONV_RATE4,
.state = AS6221_STATE_ACTIVE,
.alert_mode = AS6221_ALERT_INTERRUPT,
.alert_polarity = AS6221_ALERT_ACTIVE_LOW,
.cf = AS6221_CONSEC_FAULTS2
};
temp.init(AS6221_DEFAULT_ADDRESS, conf);
temp.setAlertLimits(27, 29);
//while (Serial.read() >= 0){}//clear serialbuffer
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x64)
display.clearDisplay(); // 清屏
display.drawBitmap(8, 16, logo_ams, 111, 32, 1); //画出字符对应点阵数据
display.display();
delay(1000);
display.clearDisplay();
/*-------------------- Display picture and text ---------------------------*/
display.drawBitmap(8, 0, logo_ams, 111, 32, 1);
display.setTextColor(WHITE); //设置字体颜色
display.setTextSize(2); //设置字体大小 1 is default 6x8, 2 is 12x16, 3 is 18x24
display.setCursor(0,40); //设置起始光标
display.print("T=");
display.setCursor(112,40); //设置起始光标
display.drawBitmap(112, 40, zh_T, 16, 16, 1); // display.print("℃");
display.display();
}
void loop() {
Serial.println(temp.getTemp(), 7);
//------ OLED ---------
display.fillRect(25, 40, 87, 16, BLACK);
display.display();
display.setCursor(25,40);
display.print(temp.getTemp(), 4);
display.display();
delay(1000);
}
效果
3.LabVIEW 采集并存储
介绍了使用 LabVIEW 上位机发送指令, Arduino 单片机获取传感器数据并通过串口发送给上位机接收采集到的温度数据,将数据和时刻记录并保存为文件的项目。
项目实现
- LabVIEW 向单片机发送指令;
- 单片机收到指令,获取传感器数据;
- 单片机发送数据至 LabVIEW 上位机;
- 上位机显示数据并存储至文件。
硬件
- Arduino 单片机(Nano、UNO、ESP8266等支持 Arduino IDE 的单片机均可)
- AS6221 传感器
- 杜邦线若干
流程图
代码
#include "AS6221.h"
#include <Wire.h>
AS6221 temp;
byte comdata[3]={0}; //定义数组数据,存放串口命令数据
void setup() {
Wire.begin(); // Wire.begin(SDA, SCL);
Serial.begin(9600);
as6221_config_t conf = {
.cr = AS6221_CONV_RATE4,
.state = AS6221_STATE_ACTIVE,
.alert_mode = AS6221_ALERT_INTERRUPT,
.alert_polarity = AS6221_ALERT_ACTIVE_LOW,
.cf = AS6221_CONSEC_FAULTS2
};
temp.init(AS6221_DEFAULT_ADDRESS, conf);
temp.setAlertLimits(27, 29);
}
void loop() {
while (Serial.available() > 0) //不断检测串口是否有数据
{
receive_data(); //接受串口数据
test_do_data(); //测试数据是否正确并更新数据
}
}
void receive_data(void)
{
int i ;
for(i=0;i<3;i++)
{
comdata[i] = Serial.read();
//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
delay(2);
}
}
void test_do_data(void) // 测试并执行命令
{
if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
{
if(comdata[1] == 0xAA)
{
if(comdata[2] == 0xFF)
{
Serial.print(temp.getTemp(), 7);
}
}
}
}
效果
1.首先使用 串口助手 测试单片机是否正常工作。
以 HEX 格式发送 55AAFF ,若接收到温度数据,则测试通过。
2.验证通过后,打开 LabVIEW 上位机程序,设置 VISA 串口通信端口号及波特率;
3.点击 START 按钮,即可开始采集数据。
第一页面显示数据个数和对应的温度数值,包括操作按钮、串口配置、温度表盘等
第二页面显示数据表格及存储的数据形式,即 采集时刻
和 采集数值
,还有数据文件的保存路径设置
4.点击 STOP 按钮,数据便保存为 *.dat
格式的文件。
文件记录了温度数据采集的时刻和对应的温度数值。
这里需要注意数据精度,默认 %f 仅保留小数点后6位;如需调整精度,则修改为 %.7f 即可。
总结
本文介绍了 AMS 公司的 AS6221 高精度温度传感器模块,并通过具体的案例给出其应用,分别是串口发送、OLED 显示、LabVIEW上位机数据采集,为该传感器的深入开发和快速应用提供了相关参考。

