draco

не работают аналоговые входы

16 сообщений в этой теме

draco    0

помогите, пожалуйста, решить мою проблему:

имеется arduino mega2560 (китайская)

после приобретения я работал только с цифровыми входами

 

сегодня решил сделать dc вольтметр, пришлось задействовать аналоговый вход

в процессе отладки выяснил, что на всех входах (проверял в цикле) постоянно значение 1023 (или 5v в зависимости от интерпретации кода) и при подаче напряжения и без

тестовое напряжение никогда не превышало 5в

 

что с платой, или что я делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 458

А ты вход с общим проводом (GND) соедини. Если получишь ноль - значит, вход работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
draco    0

вариантов много...

вот из самого простого, кажется..

int analogPin = A0;

void setup() {
  Serial.begin(9600);
  pinMode(A0, INPUT);
}
void loop() {
  int rawReading = analogRead(analogPin);
  float volts = rawReading / 204.6;
  Serial.println(volts);
  delay(1000);
}

в экране монитора: 5.0 5.0 ...

подключал с ардуино на A0: 5v, 3.3v, gnd, все равно 5.0 5.0 ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 458

А измерьте-ка напряжение на AREF. 

И для полноты картины сделайте вывод просто полученных с АЦП данных, без пересчёта в вольты. То есть Serial.println(rawReading);

PS нашёл ошибку в скетче: 
int analogPin = A0; НЕПРАВИЛЬНО!
Правильно: int analogPin = 0;

PPS и хорошим тоном будет использовать для обзывания пина не переменную (памяти в ардуинке и так мало), а #define.

Изменено пользователем oldmao

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
draco    0

со всех входов данные выводил без пересчета в цикле - все постоянно 1023

напряжение в ближайшее время проверю

P.S. мультиметр не со мной еще дней 10 ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    4

на сколько я пробовал аналоговые пины объявлять не нужно (по крайней мере в ардуино), без вот этого pinMode(A0, INPUT); должно работать, сталкивался с подобным, после объявления такая же ситуация была

#define in A0
void setup() {
  Serial.begin(9600);
}
void loop() {
  int rawReading = analogRead(in);
  float volts = rawReading / 204.6;
  Serial.println(volts);
  delay(1000);
}

 

Изменено пользователем 3d_killer

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
draco    0
В 15.12.2017 в 15:18, oldmao сказал:

А измерьте-ка напряжение на AREF. 

 

измерил между AREF и GND - 0v

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
draco    0

и?

11 минуту назад, oldmao сказал:

Вот и причина. 

что это означает, и возможно ли решение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 458

Разумеется! Смотрим, что там висит на AREF, затем читаем даташит на МК, как там включается внутренний образцовый источник или сколько можно подать от внешнего (обычно допускается до напряжения питания).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
draco    0

то есть, предлагаете подать внешнее опорное?

указание в коде параметров analogReference() не дает никакой разницы, ни при считывании analogRead(A0) (всегда 1023), ни при замере напр-я м/д aref / gnd (всегда 0)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oldmao    1 458

Так приведите решение, чтобы другие на эти же грабли не наступали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Alexey104
      Всем привет!
      Возникла следующая проблема:
       
      Есть две ардуины 'Mega2560'. По несчастливому стечению обстоятельств данные платы попали в руки одному чуваку, который, вернув их, заявил, что они перестали работать после того, как он "чисто ради интереса" поковырял на обеих некоторые фьюзы. Есть у меня такой китайский usbasp v2 программатор:
      Подключив данный девайс к ICSP-пинам первой платы, удалось без проблем восстановить на ней загрузчик через стандартную Arduino-IDE, после чего работоспособность платы полностью восстановилась. Но вот при попытке сделать то же самое со второй платой, получаю это:
      Такое же сообщение получаю при попытке зашить загрузчик в неподключенную к программатору ардуину, то есть программатор вообще не видит МК. Плата прекрасно работала до того, как вышеупомянутый товарищ покрутил настройки фьюзов.
       
      Что я пытался предпринять:
      Замыкал пины JP3 программатора, отвечающие за понижение скорости, подключал к ардуине 5V от внешнего источника при прошивке загрузчика, - не помогло.
       
      Поиском пользоваться умею, аналогичную тему тут находил, но там проблема была в том, что парень неверно подключал программатор к контроллеру. В моём же случае всё подключено верно, повторюсь, что загрузчик первой платы этим же программатором был восстановлен успешно.
      Буду рад любым советам касательно того, как восстановить работоспособность платы.
       
       
       
    • Автор: Andrew_C
      Продам аналог Gameduino. Работает со скетчами Gameduino 2/3. Цена 1990 р.



    • Автор: alfavirtual
      Всем привет ,
        есть дисплей на tm1637 и стандартная библиотека 
       с помощью какой команды его можно отключать (нужно для экономии заряда)
        в примерах ничего не могу найти .
    • Автор: Kiraspbkiev Kira
      День Добрый. Есть два вопроса от новичка: 1) Правильная ли схема сделанная мною? 2) если схема верна то как правильно подключить к atmega328p-mu usb на чипе cp2102-grm?
      На схеме колодка JP1 это AVR ISP а JP2 это UART
      С проектированием столкнулся в первый раз, цель узнать что то новое и сделать своими руками:)