Как прочитать постоянное напряжение 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.