На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Написать формулу по исходному коду. , Arduino.
    У меня математический кретинизм в плане переделки исходного кода в формулы.

    В этом коде должна реализоваться формула 75%<Uшунта<125%. Но кажется, что написал что-то другое. И интересно, что: может, это лучший вариант, чем планировался. Но нужно математическое представление кода в виде формулы.

    В данном коде анализируется последовательное соединение резистора-шунта и резистора-сенсора: расчет пределов нормы, когда считать резистор-сенсор закороченным или разорванным.

    Вызов:
    g_fA1_R_Shunt_Min = fCalculate_Shunt_R_Percent(g_fA1_A7_R_Shunt, g_fA1_R_Sensors, true);
    g_fA1_R_Shunt_Max = fCalculate_Shunt_R_Percent(g_fA1_A7_R_Shunt, g_fA1_R_Sensors, false);

    Функция:
    ExpandedWrap disabled
      float fCalculate_Shunt_R_Percent(const float fShunt_R, const float fSensor_R, const bool bMin)
      {
        //В зависимости от номиналов шунта и датчиков (а также их количества), имеется разное перераспредение напряжений между ними.
        //Нужно рассчитать диапазон напряжений на шунте, при котором ситуация считается нормой. Выход за норму - разрыв/замыкание датчика (в т.ч. из-за воды).
        //Несмотря на погрешность резисторов 5% - берется 25% (см. g_fVoltage_Deviation): китайские резисторы могут оказаться с намеренно неверной погрешностью + погрешности измерений на каналах Arduino.
        float fResult = 0;
       
        float fSituation1 = fShunt_R*(1.000-g_fVoltage_Deviation) / (fShunt_R*(1.000-g_fVoltage_Deviation) + fSensor_R*(1.000-g_fVoltage_Deviation));
        float fSituation2 = fShunt_R*(1.000-g_fVoltage_Deviation) / (fShunt_R*(1.000-g_fVoltage_Deviation) + fSensor_R*(1.000+g_fVoltage_Deviation));
        float fSituation3 = fShunt_R*(1.000+g_fVoltage_Deviation) / (fShunt_R*(1.000+g_fVoltage_Deviation) + fSensor_R*(1.000-g_fVoltage_Deviation));
        float fSituation4 = fShunt_R*(1.000+g_fVoltage_Deviation) / (fShunt_R*(1.000+g_fVoltage_Deviation) + fSensor_R*(1.000+g_fVoltage_Deviation));
       
        if (bMin)
        {
          fResult = min(fSituation1, fSituation2);
          fResult = min(fResult, fSituation3);
          fResult = min(fResult, fSituation4);
        }
        else
        {
          fResult = max(fSituation1, fSituation2);
          fResult = max(fResult, fSituation3);
          fResult = max(fResult, fSituation4);
        }
       
        return fResult;
      }
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0201 ]   [ 15 queries used ]   [ Generated: 4.03.24, 22:09 GMT ]