Странности с аналоговыми входами
- Войдите на сайт для отправки комментариев
Сб, 19/11/2011 - 14:41
Добрый день!
Пару дней назад приобрел Ардуино Мега, чему крайне рад. Но как только руки добрались до его аналоговых входов, радости поубавилось. Дело в том, что при чтении с этих входов (даже свободных, не подключенных) я получаю не нулевые прыгающие значения.
Подскажите, так и должно быть или я что-то делаю не так?
наверно все так нулевые значения это искуство как и все аналоговое требует танцев с бубном фильтров развязок притяжек
плюс думаю что вы мерили сам себя по питанию памехи наводки итд
вообще так почти всегда и происходит поэтому програмно в дальнейшем корректируйте как вам угодно
Вот тут: arduino.cc/forum/index.php/topic,72289.0.html много чего интересного можно почерпнуть.
так и должно быть, Если аналоговый вход не подключен, то значения возвращаемые функцией analogRead() могут принимать случайные значения.
я подтянул резистором 1Ком на gnd, напряжения до 55в меряю через резистор 10ком. Первое приводит в порядок прыгащие значения, в сумме со вторым является делителем напряжения. http://www.meanders.ru/delitnapr.shtml
01
//вольтметр
02
void
voltemeter() {
03
float
U1;
//измеряемое напряжение;
04
float
U2;
//Напряжение без делителя
05
while
(digitalRead(KEY_BACK) != LOW) {
06
lcd.clear();
07
float
Rs = 1000.0;
//номинал шунтирующего резистора (между GND и аналоговым входом)
08
float
Rd = 10000.0;
//номинал резистора делителя (между входом и измеряемым напряжением)
09
float
Vo = 5.00;
//опорное напряжение (5в)
10
U2 = Vo * analogRead(7) / Rs;
//Напряжение без Rd
11
lcd.setCursor(0,1);
12
lcd.print(
"U2: "
);
13
lcd.print(U2);
14
lcd.print(
"В"
);
15
U1 = U2 / ( Rs / ( Rd + Rs ));
//Расчитываем по делителю
16
lcd.setCursor(0,2);
17
lcd.print(
"U1: "
);
18
lcd.print(U1);
19
lcd.print(
"В"
);
20
delay(100);
21
}
22
}
Все ясно. Огромное спасибо за ответы.