4个版本
0.3.4 | 2023年1月17日 |
---|---|
0.3.3 | 2022年12月16日 |
0.3.2 | 2022年12月8日 |
0.3.1 | 2022年12月7日 |
#1528 in 嵌入式开发
每月下载23次
48KB
693 代码行
Rust ADE791x 3-Channel, Isolated, Sigma-Delta ADC with SPI Driver
这是一个适用于ADE7912/ADE7913 3-Channel、隔离、Sigma-Delta ADC带SPI的平台无关Rust驱动器,使用embedded-hal
traits。
此驱动器允许您
- 初始化和配置设备。
- 执行硬件/软件复位。
- 关闭/唤醒设备。
- 从ADC获取原始和转换测量值。
- 管理在多相计量系统中配置的多个ADC(请参阅
poly
模块)。
文档
设备
ADE7912/ADE7913是用于使用分流电流传感器的三相电能计量应用的双通道/三通道隔离Σ-Δ ADC。数据和电源隔离基于Analog Devices, Inc.的Coupler®技术。ADE7912具有两个ADC,而ADE7913具有三个ADC。电流ADC在3 kHz信号带宽内提供67 dB的信噪比(SNR),而电压ADC在相同带宽内提供72 dB的SNR。一个通道专门用于在分流用于电流感应时测量分流电压。最多可以有两个额外的通道专门用于测量电压,通常使用电阻分压器感应。一个电压通道可以通过内部传感器测量晶圆的温度。ADE7913包括三个通道:一个电流通道和两个电压通道。ADE7912有一个电压通道,但其他方面与ADE7913相同。
数据表
用法
首先,为了获得正确的读数,ADC需要根据以下步骤进行校准
- 将校准偏移量和乘数设置为默认值。
- 从ADC中移除任何负载。
- 计算偏移量,作为无负载应用时ADC读数的平均值。
- 设置计算出的校准偏移量,保留乘数为默认值。
- 向ADC施加已知负载。
- 通过将已知负载除以施加已知负载时ADC读数的平均值来计算乘数。
以下是从ADC获取读数的两个最小示例,一个是在单相ADC配置中,另一个是在多相多ADC配置中。
单相
use ade791x::*;
// Initialization
let config = Config::default();
let calibration = Calibration::default();
let mut adc = Ade791x::new_ade7912(spi, cs);
adc.init(delay, config, calibration).unwrap();
// Measurement
// Run the following in the DREADY ISR to get measurements as soon as they are ready
let measurement = adc.get_measurement().unwrap();
多相
use ade791x::*;
// Initialization
let config = [
Config { clkout_en: true, ..Default::default() },
Config { clkout_en: true, ..Default::default() },
Config::default()
];
let calibration = [Calibration::default(); 3];
let emi_ctrl = [
ade791x::EmiCtrl::from(0x55),
ade791x::EmiCtrl::from(0xAA),
ade791x::EmiCtrl::from(0x55)
];
let mut adc = poly::Ade791x::new(spi, [
(cs0, Chip::ADE7912), (cs1, Chip::ADE7913), (cs2, Chip::ADE7912)
]);
adc.init(delay, config, calibration, emi_ctrl).unwrap();
// Synchronization
// Execute the following every couple of seconds to ensure that the ADCs are always in sync
adc.ajust_sync().unwrap();
// Measurement
// Run the following in the DREADY ISR to get measurements as soon as they are ready
let measurement = adc.get_measurement().unwrap();
状态
- 初始化/配置
- 硬件/软件重置
- 关机/唤醒
- 测量读取
- 多相管理
- 测量转换
- 温度读取
- 配置检查
- 单元测试
- 测量CRC检查
许可证
许可协议为以下之一
- Apache许可证,版本2.0(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您根据Apache-2.0许可证定义提交给作品中的任何贡献,均应双授权如上所述,不附加任何额外条款或条件。
依赖项
~71KB