Странности с аналоговыми входами

primebit
Offline
Зарегистрирован: 19.11.2011

Добрый день!

Пару дней назад приобрел Ардуино Мега, чему крайне рад. Но как только руки добрались до его аналоговых входов, радости поубавилось. Дело в том, что при чтении с этих входов (даже свободных, не подключенных) я получаю не нулевые прыгающие значения.

Подскажите, так и должно быть или я что-то делаю не так?

kikia99
Offline
Зарегистрирован: 22.03.2011

наверно все так  нулевые значения это искуство как и все аналоговое требует танцев с бубном фильтров развязок притяжек

плюс думаю что вы мерили сам себя по питанию памехи наводки итд

вообще так почти всегда и происходит  поэтому програмно в дальнейшем корректируйте как вам угодно 

Poluekt
Offline
Зарегистрирован: 14.11.2011

 Вот тут: arduino.cc/forum/index.php/topic,72289.0.html много чего интересного можно почерпнуть.

76region
Offline
Зарегистрирован: 08.07.2011

так и должно быть, Если аналоговый вход не подключен, то значения возвращаемые функцией analogRead() могут принимать случайные значения.

whoim
Offline
Зарегистрирован: 03.11.2011

я подтянул резистором 1Ком на gnd, напряжения до 55в меряю через резистор 10ком. Первое приводит в порядок прыгащие значения, в сумме со вторым является делителем напряжения. http://www.meanders.ru/delitnapr.shtml

whoim
Offline
Зарегистрирован: 03.11.2011
01//вольтметр
02void 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}

 

primebit
Offline
Зарегистрирован: 19.11.2011

Все ясно. Огромное спасибо за ответы.