Плавающие пины
- Войдите на сайт для отправки комментариев
Доброго времени суток. У меня следующая проблема: есть Uno, к ней подключен пьезо-датчик для распознавания стука. Датчик подключен через аналоговый пин и заземлен через 1мОм резистор. При подключении через USB порт, либо с помощью батареек (4.5В, 9В) через Vin, все работает прекрасно. Но как только я пытаюсь подключить на Vin блок питания 12V 1.25А, то получаю плавающий аналоговый пин(к которому подключен датчик) на котором постоянные помехи. При дополнительном заземлении через 2кОм резистор прямо с аналогового пина на GND получалось убрать помехи, но работает нестабильно. Пробовал уменьшать напряжение до 6 вольт, но не помогло. Подскажите с чем может быть связано такое поведение, у самого опыта в электронике мало. Спасибо.
Забыл упомянуть, блок питания импульсный. Подозреваю что помехи могут быть из-за него.
Заменить блок питания (загляни внутрь и ужаснись - там никаких фильтров нет, поэтому он жутко фонит).
Резистор на GND надо 10-30 кОм.
Забудь про слово "заземление", тут не силовая электроника и тебя не поймут.
Внесу свою лжку дегтя, на ардуино подключение питания аналоговой части сделано отвратительно. Обосную, откройте любой даташит и посмотрите как запитывются эти цепи. Atmel жестко рекомендует ставить LC фильтр по этои цепи питания, чего нет на ардуино и в помине. Вот и получается что при подаче "идеального" питания(USB, батарейка) все вроде как нормально, а при питании с помехами последнии вносят сбой в работу ADC. Так что без дороботки использовать ардуино как "точный" измерительный прибор невозможно. Так же рекомендую использовать функцию плавающего среднего, что стабилизирует измеряемое значение и повысит тосность.
Заменить на какой? Возмжно ли поставить фильтр отдельно между БП и ардуиной?
alex.d.morozov, по Вашему описанию схему составить не смог.
Если измепрять предполагается постоянные (а не быстро меняющиеся) величины, хорошим решением будет зашунтировать вход АЦП конденсатором.
Так что без дороботки использовать ардуино как "точный" измерительный прибор невозможно.
Так а какая доработка нужна, подскажите
Так же рекомендую использовать функцию плавающего среднего, что стабилизирует измеряемое значение и повысит тосность.
Считать пин несколько раз и усреднить значение в коде?
alex.d.morozov, по Вашему описанию схему составить не смог.
Если измепрять предполагается постоянные (а не быстро меняющиеся) величины, хорошим решением будет зашунтировать вход АЦП конденсатором.
Схему брал отсюда. Для простоты в ней сейчас только диоды и пьезодатчик. https://cdn.instructables.com/FNB/Q7OD/G29ZFEIL/FNBQ7ODG29ZFEIL.LARGE.jpg
Несколько стуков подряд подпадает под быстроменяющиеся изменения?)
alex.d.morozov, конденсатор имеет смысл ставить тогда, когда максимум спектра полезного сигнала существенно ниже максимума спектра помех. Если сигнал постоянный, это условие выполняется всегда. Если сигнал переменный (как у Вас), нужно иметь представление, где находится максимум спектральной мощности. Как полезного сигнала, так и помсех. Если у Вас основная помеха от импульсного блока питаня, можно попытаться с ней побороться, если эе основная наводка - сетевая (50 Гц), боюсь, что ее подавить таким образо не удастся.
Но в любом случе Вам дали полезный совет: раз проблемы возникают при подключении другого блока питания, значит, проблемы связаны именно с этим блоком питания и его нужно заменить. Иногда помогает зашунтировать выход БП двумя конденсаторами: электролитическим большой емкости (от 100 мкФ и выше) и керамическим (скажем, 0.1 мкФ). Конденсаторы следует располагать вблизи Ардуино.
Так что без дороботки использовать ардуино как "точный" измерительный прибор невозможно.
Так а какая доработка нужна, подскажите
Так же рекомендую использовать функцию плавающего среднего, что стабилизирует измеряемое значение и повысит тосность.
Считать пин несколько раз и усреднить значение в коде?
Цепь питания можно посмотреть в даташите, там индуктивность 10 - 100 мкГн и кондеры. Ну примерно так, берем 10 значений складываем, делим на 10, потом берем 9 последних значений, прибавляем новое 10-е, опять делим на 10 и.т д.
Ну примерно так, берем 10 значений складываем, делим на 10, потом берем 9 последних значений, прибавляем новое 10-е, опять делим на 10 и.т д.
Лучше считать медиану.
Притом, намного лучше.