ACS712ELC-20A для переменного тока

liver
Offline
Зарегистрирован: 08.01.2016

Кто-нибудь пользовался датчиком ACS712ELC-20A для отслеживания наличия фазы в сети?

подклюил его в разрыв к лампе накаливания.

Показания не меняются, включенна лампа или нет.

nik182
Offline
Зарегистрирован: 04.05.2015

A какие показания должны меняться? При переменном токе на выходе будет синусоида +- 2 вольта при 20 амперах. Для лампочки в 40 ватт будет синусоида 0.02 вольта. Отследить напряжение не получится если нет нагрузки. Только наличие тока. И то довольно большого. Синусоида 50 герц есть на выходе всегда из за окружающих магнитных полей.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

liver пишет:

Кто-нибудь пользовался датчиком ACS712ELC-20A для отслеживания наличия фазы в сети?

подклюил его в разрыв к лампе накаливания.

Показания не меняются, включенна лампа или нет.

Значит, либо лампа неправильно включена, либо показания не умеете считать.

Вообще же, "наличие фазы" - это жаргон. Подразумевается наличие переменного напряжения. Но данный датчик напряжение измерять не может - только ток. Т.е. если у Вас правильная лампа (желательно на 4 кВт), правильная схема и праильный способ измерения, показания должны изменяться с частотой сети. Если же хотя бы что-то одно из трех неправильное - может быть все, что угодно.

liver
Offline
Зарегистрирован: 08.01.2016

nik182 пишет:
Отследить напряжение не получится если нет нагрузки. Только наличие тока.

Собственно лампа выступает в роли нагрузки.

И да, меня устраивает именно наличие тока.

liver
Offline
Зарегистрирован: 08.01.2016

andriano пишет:

Значит, либо лампа неправильно включена, либо показания не умеете считать.

 

один из проводов идущих к лампе имеет разрыв, в который и подключен датчик.

Касаемо неумеете считать - брал готовые примеры в сети, да считать не умею, потому и спрашиваю.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

liver пишет:

...потому и спрашиваю.

Так на Ваш вопрос невозможно отвеить, т.к. Вы не привели ни схемы подключения, ни используемого скетча, ни полученных в результате его работы результатов.

liver
Offline
Зарегистрирован: 08.01.2016

всю информацию черпал тут http://www.rlocman.ru/shem/schematics.html?di=113437

liver
Offline
Зарегистрирован: 08.01.2016

Может есть какие-то готовые устройства, выдающие сигнал о наличии напряжения в сети?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

liver пишет:

Может есть какие-то готовые устройства, выдающие сигнал о наличии напряжения в сети?

Ночник.

ata3d
Offline
Зарегистрирован: 24.05.2017

У меня была похожая ситуация с  модулем max471 на 3А постояного тока. Он показывал всегда одну цифру. Я стал проверять не погорело ли чего. Ток через датчик течет, проверил амперметром. Схему и компоненты проверил, все в норме, на всякий случай процарапал между дорожками. там иногда бывает припой.  Потратил около недели, результата нет, думаю погорела микросхема, отложил в сторону. Через пару неделю включаю, все работает, долго гонял проверял нагрев светодиодов в зависимости от тока.   

Схема включения простая, там только аналоговый выход, можно проверить напряжение тестером под нагрузкой и без нагрузки. Так как  Нагрузка слишком мала, напряжение на выходе будет маленьким. Желательно увидеть скетч и нагрузку поболее.

нашел аналогичную ветку http://arduino.ru/forum/apparatnye-voprosy/kak-proverit-datchik-toka-acs712

 

 

 

liver
Offline
Зарегистрирован: 08.01.2016

Код, который пользовал:


#define CURRENT_SENSOR A0 // Analog input pin that sensor is attached to
 
float amplitude_current;               //amplitude current
float effective_value;       //effective current 
 
void setup() 
{
    Serial.begin(9600); 
    pins_init();
}
void loop() 
{
    int sensor_max;
    sensor_max = getMaxValue();
    Serial.print("sensor_max = ");
    Serial.println(sensor_max);
    //the VCC on the Grove interface of the sensor is 5v
    amplitude_current=(float)(sensor_max-512)/1024*5/185*1000000;// for 5A mode,you need to modify this with 20 A and 30A mode; 
    effective_value=amplitude_current/1.414;
    //minimum_current=1/1024*5/185*1000000/1.414=18.7(mA)
    //Only for sinusoidal alternating current
    Serial.println("The amplitude of the current is(in mA)");
    Serial.println(amplitude_current,1);//Only one number after the decimal point
    Serial.println("The effective value of the current is(in mA)");
    Serial.println(effective_value,1);
}
void pins_init()
{
    pinMode(CURRENT_SENSOR, INPUT);
}
/*Function: Sample for 1000ms and get the maximum value from the S pin*/
int getMaxValue()
{
    int sensorValue;             //value read from the sensor
    int sensorMax = 0;
    uint32_t start_time = millis();
    while((millis()-start_time) < 1000)//sample for 1000ms
    {
        sensorValue = analogRead(CURRENT_SENSOR);
        if (sensorValue > sensorMax) 
        {
            /*record the maximum sensor value*/
            sensorMax = sensorValue;
        }
    }
    return sensorMax;
}

 

liver
Offline
Зарегистрирован: 08.01.2016

видел данную тему.

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

ata3d
Offline
Зарегистрирован: 24.05.2017

Точность вещь относительная, мой мне показался более точным чем китайский лабораторный БП.

Начать лучше с чего нибудь попроще, примерно так, если подключено к А0.

void setup()
{
  Serial.begin(9600);
 }

void loop()
{
  int reg = analogRead(A0); 
  Serial.println(reg);   
  delay(1000); 
}

 

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

liver пишет:

Кто-нибудь пользовался датчиком ACS712ELC-20A для отслеживания наличия фазы в сети?

"для отслеживания наличия фазы в сети"  - подойдёт оптрон типа 817, включеный последовательно с резистором 100к и диодом in4007, выход оптрона подключить к цифровому пину и через резистор примерно 2к подать  "+" питания и соответственно GND.

 

 

liver
Offline
Зарегистрирован: 08.01.2016

ata3d пишет:

Точность вещь относительная, мой мне показался более точным чем китайский лабораторный БП.

Начать лучше с чего нибудь попроще, примерно так, если подключено к А0.

void setup()
{
  Serial.begin(9600);
 }

void loop()
{
  int reg = analogRead(A0); 
  Serial.println(reg);   
  delay(1000); 
}

 

Вот результат:

1009
1009
1010
1010
1009
1010
1008
1008
1008
1008
1015
1016
1016
1016
1015
1015
1016
1016
1016
1016
1016
1016
1016
1016
1015
1016
1016
1016
1015
1016
liver
Offline
Зарегистрирован: 08.01.2016

Вот такой вот код: 

const int analogIn = A0;
int mVperAmp = 100; // use 185 for 5A Module, 100 for 20A Module, 66 for 30A Module
int RawValue= 0;
int ACSoffset = 2500; 
double Voltage = 0;
double Amps = 0;

void setup(){ 
 Serial.begin(9600);
}

void loop(){
 
 RawValue = analogRead(analogIn);
 Voltage = (RawValue / 1024.0) * 5000; // Gets you mV
 Amps = ((Voltage - ACSoffset) / mVperAmp);
 
 
 Serial.print("Raw Value = " ); 
 Serial.print(RawValue); 
 Serial.print("\t mV = "); 
 Serial.print(Voltage);
 Serial.print("\t Amps = "); 
 Serial.println(Amps,2);
 delay(1000); 
 
}

Выдает такой результат:

Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1016	 mV = 4960.94	 Amps = 24.61
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66
Raw Value = 1017	 mV = 4965.82	 Amps = 24.66

Показания не изменяются от состояния лампы, включена она в сеть или нет.

liver
Offline
Зарегистрирован: 08.01.2016

oleg_kazakof пишет:

"для отслеживания наличия фазы в сети"  - подойдёт оптрон типа 817, включеный последовательно с резистором 100к и диодом in4007, выход оптрона подключить к цифровому пину и через резистор примерно 2к подать  "+" питания и соответственно GND.

В схемотехнике не силен, потому и спрашивал про более или менее готовое решение в виде даташита.

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

liver пишет:

oleg_kazakof пишет:

"для отслеживания наличия фазы в сети"  - подойдёт оптрон типа 817, включеный последовательно с резистором 100к и диодом in4007, выход оптрона подключить к цифровому пину и через резистор примерно 2к подать  "+" питания и соответственно GND.

В схемотехнике не силен, потому и спрашивал про более или менее готовое решение в виде даташита.

Вверхнем правом углу есть окно поиск и стоит там набрать - "контроль напряжения сети" - выскакивает с десяток сылок,  даже на этом форуме. Для описанного выше в первой же сылке   axill  привёл фото платки и разжувал как это сделать.

 

 

ata3d
Offline
Зарегистрирован: 24.05.2017

liver пишет:

Вот результат:

1009
1009
1010
1010
1009
1010
1008
1008
1008
1008
1015
1016
1016
1016
1015
1015
1016
1016
1016
1016
1016
1016
1016
1016
1015
1016
1016
1016
1015
1016

Получается всегда максимальное 5В на выходе. У меня тоже так было. Можно попробовать поменять входы AO на А1, А2, мне не помогло. Еще стоит поставить резистор 1-3Ком, между AO и землей, может там наводки.

liver
Offline
Зарегистрирован: 08.01.2016

Выходы менял, эфекта нет.

Резистор попробую добавить.

Все же думаю пойти путем axill, и купить готовый сенсор

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

лучше наерно это купить и самому какой нибудь ОУ 358 к нему присобачить

https://ru.aliexpress.com/item/HMCT103C-5A-5MA/32671337956.html

на те деньги можно многомного даччиков тока понаделать 

liver
Offline
Зарегистрирован: 08.01.2016

ata3d пишет:

Еще стоит поставить резистор 1-3Ком, между AO и землей, может там наводки.

 

В моем слуае резистор никак не изменил картину.

Буду ждать посылку из китая с другим датчиком.