52 lines
1.6 KiB
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;
|
|
} |