Какой нормальный уровень шума для аналогового входа?

Mosencev
Offline
Зарегистрирован: 02.11.2018

Вывожу с аналогового входа А0 значение от 0 до 1024 на дисплей. При замыкании между А0 и GND значение пригает от 0 до 22.

Если подавать напряжение 1-4В, то показания на дисплее пригают плюс-минус 20 значений.

Менял разные источники, пробовал включать схемки на конденсаторах и резисторах. Все равно значения пригают.

 

Практический вопрос в том что мне нужно измерять температуру от 100 до 300 градусов. И эти +-20 значений будут как минимум 4 градуса.

Про програмный фильтр знаю. А что то физически нужно делать?  

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Mosencev пишет:

А что то физически нужно делать?  

выложить схему и код.

Mosencev
Offline
Зарегистрирован: 02.11.2018

http://electe.blogspot.com/2017/04/blog-post.html

 

int SensePin = 0;
int n;

//We always have to include the library
#include "LedControl.h"

/*
 Now we need a LedControl to work with.
 ***** These pin numbers will probably not work with your hardware *****
 pin 12 is connected to the DataIn 
 pin 11 is connected to the CLK 
 pin 10 is connected to LOAD 
 We have only a single MAX72XX.
 */
LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */
unsigned long delaytime=250;

void setup() {
  
  Serial.begin(9600);
    /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,8);
  /* and clear the display */
  lc.clearDisplay(0);
  
}

void loop() {
  Serial.println(analogRead(SensePin));
  delay(500);
  n = analogRead(SensePin);
    int i = n/1000; // x * 1000
    int j = n/100 % 10; // x * 100
    int k = n/10 % 10; // x * 10
    int l = n % 10; // x

    lc.setDigit(0,3,i,false);
    lc.setDigit(0,2,j,false);
    lc.setDigit(0,1,k,false);
    lc.setDigit(0,0,l,false);
    delay(500);
}

 

Схема работает хорошо, от нее колебания на уровне 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

прежде чем читать надо порт на вход настроить.

в примере это есть, а у вас нет.

Mosencev
Offline
Зарегистрирован: 02.11.2018

В примере я не вижу настройки порта.

Вижу преобразование числового значения в градусы.

Что в скетче должно уменьшить колебания значений?

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ключевое слово pinMode

Mosencev
Offline
Зарегистрирован: 02.11.2018

Разве: 

"Аналоговые порты, по-умолчанию, определенны на ввод сигнала и в отличие от цифровых портов их не требуется конфигурировать с помощью вызова функции pinMode. "

 

Не правда? 

http://robocraft.ru/blog/arduino/32.html

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

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

 

nik182
Offline
Зарегистрирован: 04.05.2015

Для начала повесить конденсатор на выход Uref.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я бы ддля начала отключил LedControl и посмотрел значения через Serial. Вероятно LedControl создает помехи на аналоговом порту.

sadman41
Offline
Зарегистрирован: 19.10.2016

Динозаур прав - надо посмотреть на вывод без подключенного модуля 7219. Потому что он хорошо гадит в питание. А за ним и АЦП, видимо, скачет. Я вот как-то долго не мог понять, почему у меня analogread болтает, когда китайский сетевой модуль активно работает... Пока не попробовал без него.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

1. Как уже высказались - первое это повесить конденсатор на Aref.

2. Возле блока ножек аналоговых входов самой микросхемы (НАНО, УНО и т.д.) есть практически "отдельные" ноги питания "блока АЦП" и к ним должен быть подключен "свой" развязочный конденсатор. Типовые ставят керамику 100нф. Надо его отыскать на плате, и поставить прямо поверх ещё 1-2шт, с БОЛЬШЕЙ емкостью. На своих самодельных мегах 2560 ставлю связку из 2-3шт: или 330нф + 680нф или 100нф + 220нф + 470нф . Если его нет (уже видел и такие "нано"), то придется "ваять поверх камня" .. гемморой ещё тот.

В результате, будете иметь дополнительную емкость по питанию АЦП блока И плюсом, вдвое-трое меньший ESR питающего конденсатора, что гораздо полезней.

В общем, мне - помогало, дерзайте. :)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Mosencev пишет:

 При замыкании между А0 и GND значение пригает от 0 до 22.

При замыкании входа АЦП единственное на мой взгляд, что может вызвать такой разброс -это референс. Если он внешний, то у вас на шине Vcc кромешный Ад, вместо питания идут какие-то чудовищные пульсации.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

По условии задачи из самого первого сообщения имеется замыкание входа на землю.
При этом измерении величина опорного напряжения не имеет никакого значения.
Как впрочем и его пульсации.
Поэтому даю 99% что вероятно помеха возникает в цепи земляного провода.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

trembo, как же не имеет? Замкните вход на землю, а референс потыкайте между 5в и землёй. Ацп будет выдавать то 0 то 1023. Так же реагирует и на пульсации.  Как  бы там ни было, на форуме уже обсуждали аналогичный случай, дело было в плохом БП.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Опора не может меняться от 0 до 5.
Я реалист.
Также не стану обсуждать подачу на опору минус 5 Вольт и плюс 20.
Поэтому при 0 на входе при любой реальной опоре результат преобразования будет 0.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

trembo, ну как говорится в военное время число пи может достигать 4 и даже 5, ..электроника штука такая, что в состоянии плохого питания всё что угодно может быть, не стоит к этому состоянию примерять обычные нормы :-)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вообще-то Aref насколько помню "по умолчанию" - ВЫХОД, и чтобы его настроить как "внешнее опорное" надо слегка поплясать с бубном (перенастроить как вход и только потом подавать внешнее, выдержав какую-то там паузу .. как-то так вроде), и тупая подача от хорошего источника напруги его может запросто выжечь, где-то было про такое .. вот не помню ужо.

Но, в целом - да: сильно похоже на броски по питанию и/или "жуткую" землю. И то и другое должно давать одинаковую картинку при замыкании входа на землю: в первом случае - скачет опорное, а во втором измеряем помеху.. И то и другое значительно лечится добавлением конденсаторов поверх имеющегося у питающих входов АЦП.

Mosencev
Offline
Зарегистрирован: 02.11.2018

Спасибо, переключил питание дисплея на отдельный источник, помехи пропали.