Датчик тока ACS712 не изменяет свое значение даже при включенной лампочке
Моя задача состоит в том, чтобы определить величину тока, потребляемого лампочкой, с этой целью я использовал датчик тока ACS712 30A, правильно подключил все соединения, как показано на схеме ниже
Я перепробовал все доступные коды для расчета тока...
Код Arduino :
void setup(){
Serial.begin(9600);
}
void loop(){
int rVal = 0;
int sampleDuration = 100; // 100ms
int sampleCount = 0;
unsigned long rSquaredSum = 0;
int rZero = 511; // Только в иллюстративных целях - должно быть измерено для калибровки датчика.
uint32_t startTime = millis(); // take samples for 100ms
while((millis()-startTime) < sampleDuration)
{
rVal = analogRead(A0) - rZero;
rSquaredSum += rVal * rVal;
sampleCount++;
}
double voltRMS = 5.0 * sqrt(rSquaredSum / sampleCount) / 1024.0;
// x 1000 для преобразования вольт в милливольты
// разделите на количество милливольт на ампер, чтобы определить измеренные амперы
// модуль 20A 100 мВ/А (так что в этом случае АМПЕРСРМ = 10 * Вольт,
double ampsRMS = voltRMS * 10.0;
Serial.println(ampsRMS);
Serial.println(analogRead(A0));
}
Выход
Выход остается прежним, даже когда лампочка все еще горит.
Заранее благодарю Вас :)
@user70430, 👍1
Обсуждение1 ответ
В комментарии о rZero = 511;
вы написали:
Только в иллюстративных целях - должны быть измерены для калибровки датчика.
Это вполне может быть причиной вашей проблемы. Если вместо 511 “ноль” вашего измерения составляет около 445, то в конечном итоге вы измеряете несуществующий постоянный ток около 3,23 А. Когда вы включаете лампочку, вы добавляете примерно 435 мА (100 Вт / 230 В) переменного тока. Тогда общий среднеквадратичный ток, который вы видите, равен:
√(3.232 + 0.4352) ≈ 3.26 А
Едва заметен при разрешении, с которым вы печатаете результат. И это при условии, что вы используете лампочку мощностью 100 Вт, как показано на схеме. Эти лампочки становится все труднее достать. Если вы используете что-либо менее мощное, вы можете не увидеть никаких изменений в отображаемом значении.
В качестве быстрого и грязного исправления вы можете заменить 511
на 445
. Лучшим
решением было бы вычислить среднее квадратичное значение только части переменного
тока сигнала. Другими словами, вычислите:
√(среднее(текущее2) − среднее(текущее)2)
как вы пришли к выводу, что ноль равен 445? время между этими измерениями составляет более 100 миллисекунд. он мог просто поймать одну и ту же часть волны, @Juraj
@Juraj: Постоянное значение, дающее 3,23 А, должно быть 511±66, но значения, показанные на последовательном мониторе, соответствуют только 511-66., @Edgar Bonet
- Датчик чтения с текущим выходом с Arduino
- Могу ли я запустить 3 датчика движения с регулятором напряжения?
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как подключить более 10 датчиков к Arduino uno r3
- Как использовать два ультразвуковых датчика для управления двигателем 5 Вольт?
- Чтение датчика давления от 4 до 20 мА с использованием uno
выведите значения
rSquaredSum / sampleCount
иvoltRMS
., @JurajСколько тока на самом деле использует ваша лампочка? Или по-другому: какой это процент от 30А?, @timemage
@timemage, на картинке это 230 В / 100 Вт.Это должно иметь значение в моем опыте. но это может быть потеряно в расчетах, @Juraj
Отчасти это то, о чем я думаю, но также и для того, чтобы убедиться, что его ожидания соответствуют тому, что на самом деле будет делать датчик., @timemage
сделайте 10 показаний с интервалом менее 100 мс между показаниями ... не делайте никаких вычислений со значениями ... храните их в массиве ... после завершения считывания выведите значения в serial, @jsotola
Попробуйте рассказать нам о различных типах кода и учебных пособиях, которым вы следовали, чтобы мы могли лучше сузить ответ., @DragonflyRobotics