#嵌入式HAL驱动 #电导率计 #传感器 #总溶解物 #tds #溶解物 #固体

tds-meter

总溶解固体传感器(TDS计)的嵌入式HAL驱动程序

2个不稳定版本

0.1.0 2023年7月14日
0.0.0 2023年7月12日

#1658 in 硬件支持

Apache-2.0 OR MIT

8KB
79

tds-meter-rs

总溶解固体传感器(TDS计)的嵌入式HAL驱动程序

设备

链接

也适用于不同品牌(在ebay/amazon上搜索"水电导率传感器")。

示例

#![no_std]
#![no_main]

use bsp::entry;
use defmt::*;
use defmt_rtt as _;
use panic_probe as _;
use tds_meter::TdsMeter;

use rp_pico as bsp;

use bsp::hal::{
    adc::Adc,
    clocks::{init_clocks_and_plls, Clock},
    pac,
    sio::Sio,
    watchdog::Watchdog,
};

#[entry]
fn main() -> ! {
    let mut pac = pac::Peripherals::take().unwrap();
    let core = pac::CorePeripherals::take().unwrap();
    let mut watchdog = Watchdog::new(pac.WATCHDOG);
    let sio = Sio::new(pac.SIO);

    // External high-speed crystal on the pico board is 12Mhz
    let external_xtal_freq_hz = 12_000_000u32;
    let clocks = init_clocks_and_plls(
        external_xtal_freq_hz,
        pac.XOSC,
        pac.CLOCKS,
        pac.PLL_SYS,
        pac.PLL_USB,
        &mut pac.RESETS,
        &mut watchdog,
    )
    .ok()
    .unwrap();

    let mut delay = cortex_m::delay::Delay::new(core.SYST, clocks.system_clock.freq().to_Hz());

    let pins = bsp::Pins::new(
        pac.IO_BANK0,
        pac.PADS_BANK0,
        sio.gpio_bank0,
        &mut pac.RESETS,
    );

    let adc = Adc::new(pac.ADC, &mut pac.RESETS);
    let adc_pin_0 = pins.gpio28.into_floating_input();
    // pico has 12-bit ADC and has 3.3V reference voltage
    let mut tds: TdsMeter<_, _, u16, _, _> = TdsMeter::new(adc, 4096, 3.3, adc_pin_0);


    loop {
        match tds.measure(25., &mut delay) {
            Ok(tds_value) => info!("tds: {} ppm", tds_value),
            Err(_) => error!("error occurred"),
        }
        delay.delay_ms(1000);
    }
}

结果

使用pi pico

PPM
无/干燥 <4.5
去离子水 5
雨水 11
硬水 310
盐水 1290

依赖项

~225KB