Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define CURRENT_SENSE_REFERENCE (3.3f)
- #define CURRENT_GAIN (20.0f)
- #define ADC_REFERENCE (3.3f)
- #define ADC_RESOLUTION (4096.0f) // 12 bit
- #define SHUNT_RESISTANCE (0.005f)
- #define VOLTAGE_SENSE_REFERENCE (3.3f)
- #define VOLTAGE_GAIN (48.7f / 3.01f)
- /**
- * @brief Перевод сырых данных АЦП в ток через Пельтье
- * Шунт 0.005 Ом, усиление 20, смещение нуля 2.5 В.
- * @param[in] raw_adc - Сырые данные АЦП
- * @param[in] offset - смещение нуля [В]
- * @param[out] overflow - Флаг переполнения АЦП
- * @return float ток через Пельтье
- */
- float ConvertToCurrent(int32_t raw_adc, float offset, bool *overflow) {
- if (overflow != nullptr) {
- *overflow = (raw_adc >= 0xfff);
- }
- float v = (float)raw_adc / ADC_RESOLUTION * ADC_REFERENCE;
- return (v - CURRENT_SENSE_REFERENCE / 2.0f) / (CURRENT_GAIN * SHUNT_RESISTANCE) - offset;
- }
- /**
- * @brief Перевод сырых данных АЦП в напряжение на клеммах Пельтье
- * Дифференциальный усилитель с G = 3.02/48.7 смещение 3,3В/2
- * @param[in] raw_adc - Сырые данные АЦП
- * @param[in] offset - Смещение нуля, вычитается из итогового результата [В]
- * @param[out] overflow - Флаг переполнения АЦП
- * @return float напряжение на выводах Пельтье, В
- */
- float ConvertToVoltage(int32_t raw_adc, float offset, bool *overflow) {
- if (overflow != nullptr) {
- *overflow = (raw_adc >= 0xfff);
- }
- float v = (float)raw_adc / ADC_RESOLUTION * ADC_REFERENCE;
- return (v - VOLTAGE_SENSE_REFERENCE/2.0f) * VOLTAGE_GAIN - offset;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement