На механику, в плане счётчика, у меня не стояло абсолютно, спидометров на разборку у меня нет, лишних калькуляторов тоже. Да и как сказал тов. Serega с другого ресурса: «Хорошие электронщики, зачастую - плохие механики!». Может я и не лучший электронщик – но механик уж точно паршивый.
Посему решил я сварганить электронный счётчик, а всю механическую часть устройства поручить на разработку семейству (благо отец и брат у меня как раз таки асы по части механики). Прикинув одно место к другому, решил, что 4 разрядов индикаторов мне хватит с головой – это ж не много – не мало, а 10 000 витков. Управлять всем безобразием будет контроллер, вот только любимые ATtiny2313 и ATmega8 мне показалось совершенно не комильфо пихать в такое плевое устройство, задача простая и решать её нужно просто. Поэтому будем пользовать ATtiny13 – наверное, самый «дохлый» МК из тех, что есть в продаже на сегодняшний момент (я не беру PIC-и или MCS-51 – эти я только запрограммировать смогу, а вот программы для них писать не умею). Ног у этой тиньки маловато, ну дык никто не мешает нам сдвиговые регистры к ней прикрутить! В качестве датчика оборотов решил использовать датчик холла.
Набросал схему:
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
и собрал на макетке:
О кнопках сразу не сказал – а куда ж без них! Целых 4 штуки помимо ресета (S1).
S2 – включает режим намотки (режим установлен по умолчанию) – с каждым оборотом оси с катушкой будет увеличивать значение количества витков на 1
S3 – режим смотки, соответственно, с каждым оборотом, будет уменьшать значение на 1. Максимально смотать можно до «0» - в минус сматываться не будет :)
S4 – чтение сохраненной в EEPROM информации.
S5 – запись в EEPROM текущего значения + режим.
Естественно нужно не забывать нажать на кнопку смотки если собираемся сматывать витки, иначе они будут приплюсовываться. Можно было повесить вместо 1 датчика холла – 3 штуки или валкодер и изменить программу контроллера таким образом чтоб он сам выбирал направление вращения, но думаю в данном случае это лишнее.
Теперь не много по схеме:
Как видим, ничего сверхъестественного в ней нет. Питается всё это безобразие от 5В., ток потребляет что-то в районе 85мА.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
Кнопки S2-S4 – а-ля матричная клавиатура. «Выходы» кнопок висят на тех же проводниках что и входы регистров, дело в том что после пересылки данных из контроллера в регистры на входах SHcp и Ds может быть сигнал любого уровня, и на содержимое регистров это никак не повлияет. «Входы» кнопок висят на выходах регистров, передача информации происходит примерно следующим образом: сначала контроллер отправляет информацию на регистры для последующей пересылки на индикаторы, затем отправляет информацию для сканирования кнопок. Резисторы R14-R15 необходимы для предотвращения «драки» между ногами регистров/контроллера. Пересылка инфы на индикацию и на сканирование клавы происходит на большой частоте (внутренний генератор в тини13 настроен на 9,6МГц), соответственно как быстро мы не пытались бы нажать и отпустить кнопку, за время нажатия произойдет много срабатываний и соответственно нолик с кнопки побежит на встречу единичке с контроллера. Ну и такая неприятная вещь как дребезг контактов кнопок опять же.
Резисторами R16-R17 подтягиваем нашу клавиатуру к + питания, чтоб во время простоя с выходов клавиатуры на входы контроллера приходила единичка а не Z состояние влекущее ложные срабатывания. Можно было обойтись и без этих резисторов, внутренних pull-up резисторов в МК вполне достаточно, ну да рука у меня не поднялась их убрать – береженного бог бережет.
По схеме вроде бы и все, для заинтересовавшихся привожу список компонентов. Сразу оговорюсь, что номиналы могут отличаться в ту или иную сторону.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
После проверки работы счётчика на макете, настала пора собрать железку в «законченное устройство». Развел плату, вытравил, запаял детальки и получил следующее:
В законченом варианте кнопка сброса отсутствует - ну некуда мне ее было на плате втыкать, итак места мало, а если зависнет МК, значит обесточу и заново включу. Так же появился диод в цепи питания - защита от переполюсовки. Что касается остальных деталек – то использовал только те, что были под рукой, поэтому тут и SMD и обычные корпуса.
Вот вроде и все, в конце статьи архив со схемой/печаткой прошивкой.
Кстати насчёт прошивки, на плате не предусмотрен разъём для программирования в целях экономии места. Прошивал по SPI протоколу примерно так:
пробовал программаторы, HVProg, AVR910 и USBAsp – все прошили контроллер без проблем. После прошивки имеет смысл нажать кнопку записи, чтоб записать в EEPROM начальные значения. Если этого не сделать, а нажать клавишу чтения то на индикаторах можем увидеть все что угодно - кто знает что там в памяти было раньше?
Конечный результат:
На неподвижной части станка крепим датчик, на ось вращения устаналиваем магнит таким образом, чтоб он при вращении проходил в 3-5 мм от датчика. Ну и пользуемся :)
Теперь точно всё, всем спасибо за внимание, а товарищам GP1 и avreal за помощь в разработке, ждем критику :)
Файлы
Схема, печатка, прошивка:🎁doc.rar 128.55 Kb ⇣ 418
Исходники прошивки:
🎁counter-asm.rar 3.62 Kb ⇣ 304
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.