непонятки с датчиком тока ACS712 5A

Moncer
Offline
Зарегистрирован: 09.04.2014

Здравствуйте. Собрал проект солнечного трекера. Хотел я померить  ток солнечной батареи через ACS712 , но  моя программа выдаёт ахинею. Измеряю мультиметром получается 70мА , а serial monitor ардуины показывает мне 160-170 мА. Подскажите люди добрые , где мой косяк??
 

const int sensorPin = A5;
double Current = 0;
double OutputSensorVoltage = 0;
double total = 0;
int counter = 0;
double avgCurrent =0;

void setup() {
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);
}
void loop() {
  
  OutputSensorVoltage = analogRead(sensorPin)*5.0/1023.0;
 /*
  Serial.print("Voltage = ");
  Serial.println (OutputSensorVoltage);
  Serial.print("\n");
  */
  Current = (OutputSensorVoltage-2.52)/0.185;
  /*
  Serial.print("Current = ");
  Serial.println (Current);
  Serial.print("\n");
  */
  total = total + Current;
  counter = counter + 1;
  if (counter >= 50){
    counter = 0;
    double avgCurrent = total/50.0;
  Serial.print("avgCurrent = ");
  Serial.println (avgCurrent);
  Serial.print("\n");
  total =0;
  delay(30);
  }
  delay(50);
}

Схема по которой цеплял датчик (для примера в качестве нагрузки использовал резистор):

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Мне кажется, что Вы один раз меряете ток, и 50 раз прибавляете одно и то же значение...

Засуньте все измерения в цикл и таймауты где-нибудь между измерениями поставьте, т.к., ацп у ардуины не мгновенно работает...

Константы пересчета можно посчитать заранее, а перевод значения АЦП в вольты - делать один раз перед выводом на экран, т.к. всем остальным оно не надо...

Moncer
Offline
Зарегистрирован: 09.04.2014

По ваше совету перекроил код , но все равно беда. В общем при включенной батареи замеряю ток , далее отключаю её , но всё равно ток не уходит в ноль(

 

gena
Offline
Зарегистрирован: 04.11.2012

  1. А зачем диод Шоттки?  

  2.Измерьте вольтметром выходное напряжение датчика при определённом токе ( и определённой полярности) и убедитесь, что датчик даёт правильные показания.

  3. Измените формулу расчёта: суммируйте показания АЦП 50 раз, а уж затем занимайтесь делениями, умножения- т.е. не накапливайте ошибки.

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

бедный человек. давно бы купил резистор, например такой (выбирать исходя из тока максимального)

http://ru.aliexpress.com/item/10Pcs-0-1ohm-0-1R-0-1-ohm-R-5W-Horizontal-...

собрал диф усилитель, подключился на аналоговый пин и радовался жизни

а скорее всего сюда даже hx711 подойдет

gena
Offline
Зарегистрирован: 04.11.2012

  У человека есть гальваническая разрязка, плюс защита микроконтроллера при превышения тока в нагрузке, плюс минимальные потери на токоизмерителе. Да и датчик веса здесь как то неуместен.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ага

1. гальваническая развязка от солнечной батареи где напряжение невысокое, а смысл

2. а чем увеличение тока опасно микроконтроллеру? поставить например hx711 там выход цифровой. вообще ничего не будет

да и с диф усилителем ничего не будет. ставится параллельно диф. усилителю диод и все

3. 1,3мОм против 100 конечно разница есть, но если применять HX711 сопротивление можно уменьшить  до 0,01ом. к тому же hx711 содержит кроме усилителя еще и 24битный ацп. выход цифровой, а не аналоговый как AC712

да и еще. кусок из даташита AC712

получается от 0 до 5А меньше 1В

опорное только 5В, ну еще можно 3.3В с небольшими оговорками

посчитаем для 5В. ацп 10бит, 1024 точки, 5В/1024=0,0049 В на еденицу ацп

0 А соответствует 2.5в выходного, что соответствует 2,5/0,0049 = 510 едениц ацп

5А соответствует грубо 3.5В выходного, что 3,5/0,0049=714 едениц ацп

и того весь диапазон 5А соответствует участку от 510 до 714, ширина равна 714-510=204 еденицы

разделим весь диапазон на количество ещениц ацп ему соответствующие

5А/204= 0,0245 А на еденицу ацп, грубо 25мА на еденицу ацп

так как последний разряд ацп (или первый ) самый шумный, на эту точно особо расчитывать не стоит. в лучшем случае сделать усреднение или еще что то, то увеличивает разрядность. забыл как называется

это так чтобы человек знал что получает от этого датчика +- 25ма с датчика в связке с ардуиной. и еще если при 0 тока (выход около 2.5В) будет плавать, 0 тока вы никода не получите измеряя с ардуины или чего нибудь еще, как и точных измерений

я никого не отговариваю, рассматриваем плюсы и минусы решений

 

gena
Offline
Зарегистрирован: 04.11.2012

  У человека УЖЕ есть этот датчик. Пусть осваивает. А достаточно ли его - он во временем разберётся.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я знаю. поэтому и написал

jeka_tm пишет:

я никого не отговариваю, рассматриваем плюсы и минусы решений

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

gena пишет:

  У человека УЖЕ есть этот датчик. Пусть осваивает. А достаточно ли его - он во временем разберётся.

Тут уже показали, что токи порядка 75 миллиампер датчиком ACS-712 и ардуиной - мерять бессмысленно: надо либо датчик другой, либо внешний АЦП с более высокой разрядностью использовать.