HVAC_M7_ADC_TEMP/ADC_pressure.c

52 lines
1.6 KiB
C

//
// Created by cfif on 27.01.2026.
//
#include "stdint.h"
// Функция для вычисления давления в кгс/см²
float calculate_pressure_kgf_cm2(uint32_t adc_value) {
float vdd = 5.0f; // Напряжение питания
float vout; // Выходное напряжение датчика
float pressure; // Давление в кгс/см²
// Преобразуем значение АЦП в напряжение (12 бит = 4095)
vout = ((float)adc_value / 4095.0f) * vdd;
// Вычисляем давление по формуле из даташита:
// Vout = Vdd * (0.025 * P + 0.1)
// Решаем относительно P:
// P = (Vout/Vdd - 0.1) / 0.025
pressure = (vout/vdd - 0.1f) / 0.025f;
return pressure;
}
// Функция для вычисления давления в MPa
float calculate_pressure_mpa(uint32_t adc_value) {
float vdd = 5.0f;
float vout;
float pressure;
vout = ((float)adc_value / 4095.0f) * vdd;
// Для MPa: Vout = Vdd * (0.254929 * P + 0.1)
// P = (Vout/Vdd - 0.1) / 0.254929
pressure = (vout/vdd - 0.1f) / 0.254929f;
return pressure;
}
// Функция для вычисления давления в PSIA
float calculate_pressure_psia(uint32_t adc_value) {
float vdd = 5.0f;
float vout;
float pressure;
vout = ((float)adc_value / 4095.0f) * vdd;
// Для PSIA: Vout = Vdd * (0.001758 * P + 0.074126)
// P = (Vout/Vdd - 0.074126) / 0.001758
pressure = (vout/vdd - 0.074126f) / 0.001758f;
return pressure;
}