Помогите разобраться с шумом от купюрника на Ардуино
- Войдите на сайт для отправки комментариев
Дорогие знатоки! Мне очень нужна ваша помощь с Арудино.
Я собрал торговый аппарат по продаже мелкого товара на контроллере Ардуино. Корпус и полки – из жести. Состоит он из:
· Контроллера Арудино;
· Драйвер мотора Motor Shield http://zelectro.cc/Adafruit_motor_shield
· Два коллекторных двигателя переменного тока BD-28S-3 http://www.ivt-vending.ru/venddv_bd28s3.html
· Две кнопки
· Купюроприемник ict v7 rur5 http://www.ict-russia.ru/page_9.htm
В качестве источника питания всего этого безобразия я использовал обычный компьютерный блок питания. 1 блок питания на все. От блока питания я взял +12В (желтый провод), +5В (красный провол) и GND (черный провод). Земля общая для всех приборов. Ардуино питается от +12В и GND (круглый разъем), драйвер мотора питается от +12В и GND. Драйвер мотора подключен к Ардуино с помощью шлейфов.
Двигатели подключены к разъемам драйвера мотора (посмотрите на картинке по ссылке выше). У двигателей питание +12В и GND. Также двигатели имеют датчики положения двигателя. Они подключаются по схеме ниже.
Итак, через резистор 330 Ом сигнал от датчиков мотора идет на вход № 3 Ардуино. Т.к. сигнал от датчика слабый, то я подтянул +5В от общего блока питания (компьютерного) через резистор 20 кОм. Необходимость делать именно так указана в инструкции к двигателю. Т.к. у меня два двигателя, а вход в Ардуино свободный для этого один, то я объединяю два провода сигналов от датчиков двигателей в один. Резистор 330 Ом я не ставил. Мне продавец двигателей сказал, что это не нужно,
Кнопки подключены по схеме, которую можно найти на любом сайте, посвященному Арудино. Схема ниже.
Земля и +5В – от общего блока питания (компьютерного). Сигнал от одной кнопки идет на 9 вход Ардуино, второй – на 10 вход.
Купюроприемник подключен по схеме, которую можно найти по запросу «подключение купюроприемника к Ардуино». Питание на кпюроприемник приходит от общего блока питания компьютерного +5В и GND. Сигнал от купюроприемника приходит импульсный. Количество импульсов зависит от номинала банкноты.
Я не нашел в итоге схему именно с купюроприемником. Нашел только с монетоприемником. Схема ниже:
+5В подтягиваются через резистор 4,7 кОм с общего блока питания (компьютерного). Физически аппарат изнутри выглядит так:
Обратите внимание на белую плоскую наборную панель между блоком питания и Ардуино. Я подключил сигналы от кнопок, двигателей и купюроприемник с помощью наборной панели, чтобы тестировать правильность сборки. После успеха собирался спаять микросхему.
На фото видны все подтягивающие резисторы, сверху – провода +5 В для купюрника и датчиков мотора (они справа). И слева вверху – провода GND и резисторы для кнопок.
Так вот – у меня возникла проблема. Когда я все подключил, сначала обрадовался – двигатели вращаются и останавливаются вовремя, купюроприемник выдает нужные импульсы и кнопки четко нажимаются. НО! Стоит несильно ударить по корпусу аппарата, прикоснуться в некоторых местах до корпуса снаружи и купюроприемник выдает лишние импульсы. Можно так настучать себе и 100 рублей. Точно также, когда я выключал разъем купюроприемника, или ковырялся возле двигателей импульсы пробегали. Я поначалу подумал, что дело в блоке питания, который стоял на голом железе. Я полностью его изолировал резиной со всех сторон, чтобы он вообще ничего нигде не касался. Проблема не ушла.
Дальше стало еще хуже. Стоит только отключить от монтажной наборной панели провод +5В, которые подтягиваются на купюроприемник, и тут же на Арудуино начинают лететь импульсы от купюрника. Стоит вставить обратно в монтажную панель, сразу это прекращается. Когда я изолировал корпус блока питания от корпуса, при отключении +5В импульсы перестали сами по себе лететь. И вот, представьте себе, когда провод +5В не подключённый просто висит в воздухе, ни к чему не прикасаясь, и я подношу руку к нему, НЕ КАСАЯСЬ, и начинают лететь импульсы лететь. Если при этом взяться другой рукой за корпус, импульсы перестают лететь.
Иногда вместе с импульсами купюроприемника летят импульсы от датчиков двигателей. Кнопки так себя не ведут.
У меня вопрос – что это может быть? Я думал в слудющих направлениях:
1. Проблема в том, что +5В, которые я подтягиваю, имеют одну землю с питанием Ардуино +12В. Может быть, мне снять для подтягивания +5В с САМОГО АРДУИНО? Там есть выход такой. И земля есть. А питание Ардуино останется от +12В и GND с блока питания. Причем, я сниму подтягивающие +5В для купюроприемника и датчиков двигателя и GND для кнопок с Ардуино. Как вам идеи?
2. Где-то что-то коротит на корпус. Хотя, если бы было так, то блок питания вырубался, стоит дотронуться отверткой или еще чем-то и закоротить + и GND. Этого не происходит.
3. Я не правильно понимаю суть подтягивающих резисторов.
Уважаемы знатоки, посмотрите мой пост, почитайте, предложите идеи. А то я просто не понимаю, как мне дальше действовать. Заранее спасибо!
Что-то, где-то, куда-то не притянуто и болтается в воздухе или притянуто недостаточно.
И, да, нагрузка на БП сделана, а то без приличной нагрузки он глючит. Я всегда ставлю 30 Ом резистор в пятивольтовую линию (ватт на 50, чтобы не грелся).
Все говорит о банальном неконтакте, те панельки -отстой, но
///И вот, представьте себе, когда провод +5В не подключённый просто висит в воздухе, ни к чему не прикасаясь, и я подношу руку к нему, НЕ КАСАЯСЬ, и начинают лететь импульсы лететь. Если при этом взяться другой рукой за корпус, импульсы перестают лететь.
Это больше похоже на синфазную помеху от БП. Корпус БП заземлен? Номинал подтягивающего резистора ниже в 10 раз ставте, и расположите его вблизи контроллера. В коде подумайте о защите от короткого импульса. Можна и совсем по лоховски - на вход емкость подкинуть.