Как прочитать постоянное напряжение 12 В свинцово-кислотных аккумуляторов от Arduino?

Заранее спасибо. Я новичок в свинцово-кислотных батареях.

На самом деле, я использую солнечную энергию для зарядки 12-вольтового герметичного свинцово-кислотного аккумулятора. и дело в том, что мне нужен постоянный мониторинг напряжения моей батареи. Я использовал делитель напряжения, чтобы сделать это.

Теперь мой вопрос: можно ли непрерывно подключать делитель напряжения к аккумулятору?

И рассчитанное напряжение колеблется, как уменьшить эти колебания?

Спасибо.

3 ответа

Решение

Да, вы можете подключить аккумулятор непрерывно к делителю напряжения. Убедитесь, что вы используете очень большие резисторы. Токовый выход = V/R . поэтому, если вы хотите, чтобы я<0,1 мА, вы хотите, чтобы 0,1 мА < 12/R. Это означает, что вы должны использовать резисторы в диапазоне мегаом.

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

V [0] = 0,4 В [-1] + 0,3 В [-2] + 0,2[В-3] + 0,1 В [-4].

это сгладит ваши показания.

Я нашел этот полезный сайт для моего проекта. Посмотрите на это, если вы заинтересованы. Это "солнечный контроллер заряда". Они использовали лучшие методы кодирования, чтобы "рассчитать 12В батареи" и напряжение на солнечной панели. Спасибо.

http://www.instructables.com/id/ARDUINO-SOLAR-CHARGE-CONTROLLER-Version-20/?ALLSTEPS

Да, вы можете подключить свой делитель напряжения к одному из аналоговых выводов Arduino!

Фактически, я ответил на тот же вопрос вчера вечером на форуме Arduino.

Посмотрите на это и не стесняйтесь спрашивать, если у вас есть дополнительные вопросы.

// number of analog samples to take per reading
#define NUM_SAMPLES 20

int sum = 0;                    // sum of samples taken
unsigned char sample_count = 0; // current sample number
float voltage = 0.0;            // calculated voltage

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

void loop()
{
    // take a number of analog samples and add them up
    while (sample_count < NUM_SAMPLES) {
        sum += analogRead(A2);
        sample_count++;
        delay(10);
    }
    // calculate the voltage
    // use 5.0 for a 5.0V ADC reference voltage
    // 5.015V is the calibrated reference voltage
    voltage = ((float)sum / (float)NUM_SAMPLES * 5.0) / 1024.0;
    // send voltage for display on Serial Monitor
    // voltage multiplied by 11 when using voltage divider that
    // divides by 11. 11.132 is the calibrated voltage divide
    // value
    Serial.print(voltage * 11.002);
    Serial.println (" V");
    sample_count = 0;
    sum = 0;
}

в setup() инициализируется последовательная связь. так что вывод может быть отображен на последовательном мониторе.

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

поскольку мы находимся в void loop, процесс будет повторяться до тех пор, пока питание не будет отключено от платы Arduino.

Другие вопросы по тегам