diff --git a/ADC_pressure.c b/ADC_pressure.c new file mode 100644 index 0000000..9683616 --- /dev/null +++ b/ADC_pressure.c @@ -0,0 +1,52 @@ +// +// 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; +} \ No newline at end of file