Датчик тока ACS на 200А ардуино не видит его.

Тема в разделе "Arduino & Shields", создана пользователем Kukun, 4 ноя 2015.

  1. Kukun

    Kukun Нуб

    Здравствуйте!
    Захотел получить амперметр, на датчике тока на 200А фирмы Аллегро, однако на выход А0 все чисто, постоянно в сериал монитор выводит значение 14, как при подключенной нагрузке так и без, в цепь подключал работающий амперметр, там он показывал значения 1Ампер и меньше.
    Что сделал не так Ваши предположения?
    Может быть из-за параметров фильтра что-то не так? Фильтр использовал 1 нФ, сопротивление 1 кОм.
     
  2. 9xA59kK

    9xA59kK Гик

    А где схема? Скетч? Тип датчика? и прочее....
    Даташит читали на данный датчик тока? В интернете схемы посмотрите как работать с данным датчиком.
     
  3. Kukun

    Kukun Нуб

    Да, конечно. Но параметры фильтра немного изменил, надо было 10нФ, 4,7 кОм, я поставил, 1нФ, 1кОм, думаю, что разница не слишком существенна.
    Скетч, тут так-то и не нужен, все равно на А0, куда должны поступать значения, должен как-то реагировать. Чтение analogRead(A0) в скетче, конечно делал.
    А схема вот из даташита.
    Течение тока на ножки проверял в разные стороны, но тоже на А0, всё без изменения.
     

    Вложения:

    • r1ifc9njq.jpg
      r1ifc9njq.jpg
      Размер файла:
      75,8 КБ
      Просмотров:
      1.047
    Последнее редактирование: 4 ноя 2015
  4. Onkel

    Onkel Гуру

    тестером напряжение меряли? Не могу сказать про этот, но у меня датчики тока в которых при нулевом токе Vout=Vcc/2.
     
  5. 9xA59kK

    9xA59kK Гик

    Тип датчика ACS758ECB? на 200А. Смотри даташит . Соответсвенно ему у тебя на входе А0 при токе нагрузке 1А будет 0.01 вольта, то есть практически ноль. Поэтому нагрузи 50А или 100А и увидишь пол вольта или вольт на входе А0. Если тебе не нужны такие нагрузки то возьми другой ACS например на 5A или 20А. Либо надо усилить сигнал с помощью операционного усилителя ,схем в инете много. Обычно так и делают.
     
    Последнее редактирование: 4 ноя 2015
  6. 9xA59kK

    9xA59kK Гик

    Пользуйся активнее интернетом , вот к примеру описание как работать с подобным датчиком. Там же используется операционный усилитель.
     
  7. Kukun

    Kukun Нуб

    Да, 2.5 В есть.

    Да этот самый, там в даташите, по не опытности не понял что 10 мВ чувствительности означает, что при 1А равно на выходе 0,01 В.
    Спасибо за ссылку со схемой с операционным усилителем, буду разбираться.
     
  8. Onkel

    Onkel Гуру

    так если при нулевом токе 2,5 В есть - ардуина должна это напряжение видеть.
     
  9. Kukun

    Kukun Нуб

    да видит, но вопрос точнее был в том что не видит, когда мы 1 ампер пропускаем, тов.
    9xA59kK указал, что из-за маленького тока не видит, нужен операционный усилитель либо больше тока дать
     
  10. Kukun

    Kukun Нуб

    Ребят!
    Короче, я ошибся в коде.
    Писал
    Код (C++):
     Serial.print(A0);
      Serial.println("A");
    и у меня постоянно выдавало 14.

    Но надо то было не А0 ставить, а название переменной в которую записывается значения А0

    Код (C++):
    RawValue = analogRead(0);
    Serial.print(RawValue);
    Да и изменения видны на А0 и при около одном ампере.
    Было 510, становится 518.
    Сейчас озадачен как это преобразовать в код, который давал бы точные значения в амперы.
    Вот этот код использовал с моей коррекцией.
    Если ничего не подавать пишет 0.31, а когда амперметр показывает 0.3 А, пишет около 1,5 Ампера
    Пока не пойму в чем ошибка. Если кому не в лом поправьте пожалуйста.
    Код (C++):
    int RawValue= 0;
    float Amp = 0;
    void setup() {

      Serial.begin(9600);

    }

    void loop() {

    RawValue = analogRead(0);
    Amp = ((RawValue - 510)*3.3/1024/0.01-0.01);// 0.01 чувствительность датчика (Вольты), 3.3 опорное напряжение (Вольты)
         delay(1000);

      Serial.print(Amp);
      Serial.println("A");
    }
    И вопрос, нельзя ли посчитать например вот так:
    По амперметру сравнить со значением на А0, потом вставить в код пропорциональную зависимость и таким образом высчитывать амперы? Например, пусть когда на А0 - 518 (может и другое значение еще не замерял точно) на амперметре тогда 1А, тогда
    Amp = ((RawValue - 510)/8);