Вопросы по работе acs712

Тема в разделе "Arduino & Shields", создана пользователем user999, 10 апр 2018.

  1. user999

    user999 Гик

    Доброй ночи.
    Удалось подключить acs712 на работу с переменным током. Подключил лампу накаливания. 95ватт.
    Мультимер показывает 380мА, acs712 показывает 420-430мА. Что, в принципе, не плохо.
    В сетапе провожу калибровку, потом включаю нагрузку. Но подключив лампы со светодиодами. Они питаются через 6 драйверов (600мА, 30Вт, 25-67В.) Мультимер показывает 700мА, а acs712 1380-1440. Т.е в 2 раза больше и при этом показания плавают.
    Что может вызывать такие показания, может особенность работы драйверов?
     
  2. user999

    user999 Гик

    Причем у меня подключено 4 таких датчика. И если включить такую же нагрузку на остальные 3, то ток на всех уменьшится примерно на 100мА 1250 - 1350 будет. Хотя по мультимеру ток не просаживается.
    Еще одна загадка
     
  3. parovoZZ

    parovoZZ Гуру

    Судя по даташиту, acs ни фига не TrueRMS, поэтому если форма сигнала не синус, то будет врать. Мультиметр, кстати, тоже =)
     
  4. user999

    user999 Гик

    Как же в таком случае рассчитать силу тока?
     
  5. parovoZZ

    parovoZZ Гуру

    Тебе действующее значение нужно или амплитудное?
     
  6. user999

    user999 Гик

    Даже не знаю. Мне нужно знать условное значение. Пусть оно будет, например 1200. Т.е. в таком случае каждый драйвер потребляет 200 условных единиц. Если один диод перегорит, то вся лампа работать не будет, т.к. они подключены последовательно, следовательно потреблять конструкция будет на 1 драйвер меньше, т.е. на 200 единиц. Соответственно можно будет сделать вывод, что одна лампа перегорела. Как то так
     
  7. parovoZZ

    parovoZZ Гуру

    Ну так и откалибруй в условных единицах при подключенном драйвере.
     
  8. user999

    user999 Гик

    Я ж написал, что показания сильно плавают аж на 1350 - 1450мА (100мА), а когда подключается 4 лампы, то падает на диапазон 1250 - 1350, хотя по мультимеру все стабильно. Провода с запасом. Не получается так посчитать. Разброс слишком большой
     
  9. parovoZZ

    parovoZZ Гуру

    Мультиметр TrueRMS? Мультиметр немного интегрирует по времени, а твоя микросхема выдаёт мгновенное значение.
     
  10. user999

    user999 Гик

    Наверное без True RMS, в инструкции не нашел. Модель DT890B+ Но и в библиотеке показания в цикле собираются в течение 20 000 микросек., а не мгновенное показание считывается
     
  11. parovoZZ

    parovoZZ Гуру

    Твой мультиметр на импульсном токе врет. Если драйвер без PFC, то и тем более.
    20 000 мксек - это 20 мс. Это очень мало.
     
  12. user999

    user999 Гик

    Да ладно с мультимером. Как этот импульсный ток средствами ардуино и acs712 посчитать?
     
  13. Belkin

    Belkin Гик

    Откройте даташит на микросхему, там прекрасно расписано про конденсатор фильтра.
    Даже приведена методика расчета.

    Если используете готовый модуль, то там наверняка установлен конденсатор для частоты бытовой сети 220в, т.е. 50Гц.
    БП для светодиодов на выходе имеют сотни, а то и тысячи Гц.

    Отсюда и расхождения.
    Заставить эту м/сх мерять адекватно одновременно токи разных частот не получится.
    Используйте ACS756, этим частота измеряемого тока практически по-барабану.
     
    Последнее редактирование: 10 апр 2018
  14. user999

    user999 Гик

    Так я же модулем меряю переменный ток до драйвера в сети 220в 50Гц
     
  15. Belkin

    Belkin Гик

    Изобразите схему подключения.
     
  16. user999

    user999 Гик

    ноль 220в на драйвер, фаза 220 через модуль реле, через модуль acs712 на драйвер. А с драйвера уже постоянный ток на 9 пятивольтовых светодиодов последовательно подключенных. Драйвер - потребитель 220в сети. Я меряю потребление тока именно им. Если вместо него включить лампу накаливания , то все нормально измеряется, как я уже писал в первом посте
     
  17. Belkin

    Belkin Гик

    Интересный способ рисования схем - кириллицей... ;)
    Ну серьезно, что мешает нарисовать-то ?
     
  18. parovoZZ

    parovoZZ Гуру

    А там рисовать нечего. И так всё понятно.
    Усреднять по времени мгновенные значения, т..е. интегрировать.
    Но сперва прочитать математику вычисления действующих значений тока и напряжения.
     
  19. user999

    user999 Гик

    Набросал как мог [​IMG]
     
  20. user999

    user999 Гик

    В библиотеке и так усредняется. Собираются значения за период. возводятся в квадрат и вычисляется крень
    Код (C++):
    float ACS712::getCurrentAC(uint16_t frequency = 50) {
        uint32_t period = 1000000 / frequency;
        uint32_t t_start = micros();

        uint32_t Isum = 0, measurements_count = 0;
        int32_t Inow;

        while (micros() - t_start < period) {
            Inow = analogRead(pin) - zero;
            Isum += Inow*Inow;
            measurements_count++;
        }

        float Irms = sqrt(Isum / measurements_count) / ADC_SCALE * VREF / sensitivity;
        return Irms;
    }