Плавающие пины

alex.d.morozov
Offline
Зарегистрирован: 06.12.2016

Доброго времени суток. У меня следующая проблема: есть Uno, к ней подключен пьезо-датчик для распознавания стука. Датчик подключен через аналоговый пин и заземлен через 1мОм резистор. При подключении через USB порт, либо с помощью батареек (4.5В, 9В) через Vin, все работает прекрасно. Но как только я пытаюсь подключить на Vin блок питания 12V 1.25А, то получаю плавающий аналоговый пин(к которому подключен датчик) на котором постоянные помехи. При дополнительном заземлении через 2кОм резистор прямо с аналогового пина на GND получалось убрать помехи, но работает нестабильно. Пробовал уменьшать напряжение до 6 вольт, но не помогло. Подскажите с чем может быть связано такое поведение, у самого опыта в электронике мало. Спасибо.

alex.d.morozov
Offline
Зарегистрирован: 06.12.2016

Забыл упомянуть, блок питания импульсный. Подозреваю что помехи могут быть из-за него.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Заменить блок питания (загляни внутрь и ужаснись - там никаких фильтров нет, поэтому он жутко фонит).
Резистор на GND надо 10-30 кОм.
Забудь про слово "заземление", тут не силовая электроника и тебя не поймут.

diger67
Offline
Зарегистрирован: 25.07.2015

Внесу свою лжку дегтя, на ардуино подключение питания аналоговой части сделано отвратительно. Обосную, откройте любой даташит и посмотрите как запитывются эти цепи. Atmel жестко рекомендует ставить LC фильтр по этои цепи питания, чего нет на ардуино и в помине. Вот и получается что при подаче "идеального" питания(USB, батарейка) все вроде как нормально, а при питании с помехами последнии вносят сбой в работу ADC. Так что без дороботки использовать ардуино как "точный" измерительный прибор невозможно. Так же рекомендую использовать функцию плавающего среднего, что стабилизирует измеряемое значение и повысит тосность.

alex.d.morozov
Offline
Зарегистрирован: 06.12.2016

Tomasina пишет:
Заменить блок питания (загляни внутрь и ужаснись - там никаких фильтров нет, поэтому он жутко фонит). Резистор на GND надо 10-30 кОм. Забудь про слово "заземление", тут не силовая электроника и тебя не поймут.

Заменить на какой? Возмжно ли поставить фильтр отдельно между БП и ардуиной?

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

alex.d.morozov, по Вашему описанию схему составить не смог.

Если измепрять предполагается постоянные (а не быстро меняющиеся) величины, хорошим решением будет зашунтировать вход АЦП конденсатором.

alex.d.morozov
Offline
Зарегистрирован: 06.12.2016

diger67 пишет:

Так что без дороботки использовать ардуино как "точный" измерительный прибор невозможно.

Так а какая доработка нужна, подскажите

diger67 пишет:

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

Считать пин несколько раз и усреднить значение в коде?

alex.d.morozov
Offline
Зарегистрирован: 06.12.2016

andriano пишет:

alex.d.morozov, по Вашему описанию схему составить не смог.

Если измепрять предполагается постоянные (а не быстро меняющиеся) величины, хорошим решением будет зашунтировать вход АЦП конденсатором.

Схему брал отсюда. Для простоты в ней сейчас только диоды и пьезодатчик. https://cdn.instructables.com/FNB/Q7OD/G29ZFEIL/FNBQ7ODG29ZFEIL.LARGE.jpg

 Несколько стуков подряд подпадает под быстроменяющиеся изменения?)

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

alex.d.morozov, конденсатор имеет смысл ставить тогда, когда максимум спектра полезного сигнала существенно ниже максимума спектра помех. Если сигнал постоянный, это условие выполняется всегда. Если сигнал переменный (как у Вас), нужно иметь представление, где находится максимум спектральной мощности. Как полезного сигнала, так и помсех. Если у Вас основная помеха от импульсного блока питаня, можно попытаться с ней побороться, если эе основная наводка - сетевая (50 Гц), боюсь, что ее подавить таким образо не удастся.

Но в любом случе Вам дали полезный совет: раз проблемы возникают при подключении другого блока питания, значит, проблемы связаны именно с этим блоком питания и его нужно заменить. Иногда помогает зашунтировать выход БП двумя конденсаторами: электролитическим большой емкости (от 100 мкФ и выше) и керамическим (скажем, 0.1 мкФ). Конденсаторы следует располагать вблизи Ардуино.

diger67
Offline
Зарегистрирован: 25.07.2015

alex.d.morozov пишет:

diger67 пишет:

Так что без дороботки использовать ардуино как "точный" измерительный прибор невозможно.

Так а какая доработка нужна, подскажите

diger67 пишет:

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

Считать пин несколько раз и усреднить значение в коде?

Цепь питания можно посмотреть в даташите, там индуктивность 10 - 100 мкГн и кондеры. Ну примерно так, берем 10 значений складываем, делим на 10, потом берем 9 последних значений, прибавляем новое 10-е, опять делим на 10 и.т д.

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

diger67 пишет:

Ну примерно так, берем 10 значений складываем, делим на 10, потом берем 9 последних значений, прибавляем новое 10-е, опять делим на 10 и.т д.

Лучше считать медиану.

Притом, намного лучше.