как сделать вольтметр DC до 30v на ардуино с модулем датчик тока ACS712TELC-30A
- Войдите на сайт для отправки комментариев
Чт, 20/02/2014 - 15:27
как сделать вольтметр DC до 30v на ардуино с модулем датчик тока ACS712TELC-30A с выводом на комп?
Берете дуину, датчик и делаете вольтметр с выводом на комп. Но судя по предыдущим темам не потяните, ищите готовое.
Как вы вообще собираетесь мерить напряжение датчиком тока ?! Тем более такого гигантского номинала ...
напряжение берется с аналогового входа, через делитель.
вот огрызок из моего кода (далеко не оптимальный), на 20 Вольт и датчик ACS712ELC-20А:
#define PIN_VOLTAGE_BATTERY A13 // пин для измерения напряжения на АКБ #define PIN_CURRENT_SENSOR A15 // пин для чтения показаний амперметра long intervalScreenUpdate = 1000; // интервал вывода показаний в миллисекундах long previousMillis = 0; // время последнего изменения состояния float voltageBatteryValue = 0; // вольтметр - напряжение АКБ float criticalVoltageBattery = 11.0; // предельно допустимый уровень напряжения на АКБ float currentValue = 0; // амперметр - потребляемый ток void loop() { if (millis() - previousMillis > intervalScreenUpdate) { previousMillis = millis(); // Запоминаем текущее время readVoltage(); // Измерение напряжения readCurrentSensor(); // Измерение потребляемого тока } } void readVoltage() { // считываем значение напряжения с аналогового входа voltageBatteryValue = analogRead(PIN_VOLTAGE_BATTERY) * 20.15 / 1023.0; // 20,15 - значение V2 делителя напряжения, оно же максимально допустимое напряжение измерения Serial.print("voltageBatteryValue: "); Serial.println(voltageBatteryValue); if (voltageBatteryValue < criticalVoltageBattery) // если напряжение меньше допустимого { //systemWarning = true; // выставляем флаг //playBlaBla(1); // бибикаем //showMessage(LOW_BATTERY); // и ругаемся :) } } void readCurrentSensor() { // для датчика тока ACS712ELC-20А чувствительность составляет 100 мВ/А // описание: inet-deal.mpa.ru/articles/arduino-002.html byte currentAverageTimes = 10; // число итераций для сглаживания float currentZeroLevel = 410.0; // точка нуля float currentFactor = 0.0506; // коэффициент коррекции float sensorValue = 0; // чтение сенсора и сглаживание прыгающих показаний for (byte count = 0; count < currentAverageTimes; count++) { // read the value from the sensor: sensorValue = analogRead(PIN_CURRENT_SENSOR); delay(30); // make average value currentValue= (sensorValue + currentValue)/2; } currentValue = (currentFactor * (sensorValue - currentZeroLevel)); /* if (currentValue< 0) // Коррекция отрицательных показаний амперметра - отбрасываем минус, если он появляется { currentValue = (0 - currentValue); } */ Serial.print("currentValue: "); Serial.println(currentValue); }И еще - эти датчики тока очень чувствительны к внешним магнитным полям и металлическим предметам, а также "скачут" при малых величинах тока, в общем никудышные :(
Ну так напряжение то вы измеряете не этим датчиком. Показания датчика тока при малых величинах и будут неточны. Не даром они бывают на 30, 20, 5 ампер, да еще полярные и неполярные. Вам нужно подобрать правильный, в зависимости от того какой ожидается ток, и уже под датчик скоректировать точку нуля и коэфициенты. Кстати судя по всему вы измеряете постоянный ток датчиком для переменного. Это допустимо, но нужно учитывать, что датчик работает только на половину своей точности. С переменным током еще и нужно учитывать частоту напряжения и исходя из нее между усредняющими измерениями делать соответствующие задержки (как один из способов).
а откуда такая информация? В даташите на него никаких ограничений при измерении в цепи постоянного/переменного напряжения нету.
То, что номинал (30, 20, 5 Ампер) надо подбирать соответственно планируемой нагрузке, и так ясно.
А какая нужна информация еще ? Сравните даташиты с 712 до 715. Ограничений конечно нет. Потому как 712 может измерять переменный ток, он не полярный, то есть у него есть плюс с минусом, но ток на его входе может протекать и в сторону противоположную. Когда вы с его помощью измеряете постоянный ток, то диапазон измерения устройства только половина шкалы. То есть 712 на 30 ампер измеряет ток от -30А до +30А, вот и получается, что при изменении постоянного тока на 1 ампер напряжение на выходе меняется примерно 5v/60=0.0834 вольта. А у 713 диапазон измерений от 0 до 30А, а это значит, что измерять им переменный ток нельзя, но точность измерения постоянного тока вдвое выше 5v/30=0.1667 вольта. Кстати, поэтому у 712 нулевой уровень показаний в даташите обозначен как VCC*0,5 , а у 713 - 0,1 милливольт.