From 460ad6a3b063c092b5d90e6a78eaa5e42f4de715 Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 27 Jan 2026 16:50:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ADC_pressure.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 ADC_pressure.c 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