Главная » Компьютерная электроника
Призовой фонд
на октябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Похожие статьи:


Создание односторонних печатных плат в Eagle CAD - расширенные возможности

Что же, мы разобрались, научились... Что дальше? В этой и следующих статьях попробуем познакомиться с Eagle CAD ещё ближе, а по пути сделать пару плат, используя те возможности, о которых мы до этого даже не знали.  Сегодня предлагаю немного окунуться в теорию и создать плату аппаратного фильтра дребезга кнопок. 

Как известно, у механических кнопок, широко используемых в электронике, есть такое свойство, как "дребезг". Свойство достаточно вредное и выражается в подобных сигналах при нажатии и отпускании кнопки:

Если использовать аппаратные прерывания, к примеру, прерывания по фронту, то это становится проблемой - при использовании прерываний для вызова определённой функции прерывание вызывается каждый раз, когда появляются скачки напряжения, создаваемые дребезгом, хотя в идеальной ситуации, при отсутствии дребезга, они должны вызываться один раз. К примеру, если одно нажатие на кнопку в идеале увеличивает счётчик на единицу, в реальности из-за дребезга счётчик увеличится на случайное число больше 1 - всё зависит от частоты МК и тому подобных характеристик, но результат в любом случае Вам не понравится. Распознавать же дребезг в прерывании - достаточно затратная по времени задача, во время которой часть ресурсов МК недоступны, а часть - не могут нормально функционировать параллельно, когда это необходимо. 

Какие плюсы применения аппаратного фильтра дребезга?

  1.  Уменьшение сложности программы.
  2.  Уменьшение задержек обработки нажатия в программе - которые необходимы при программной обработке дребезга, но не нужны при аппаратной.
  3.  Упрощение работы с кнопками в случае использования прерываний.

Какие минусы применения аппаратного фильтра?

  1. Усложнение схемы, как последствие, увеличение её стоимости.

Более подробно про дребезг и аппаратную его фильтрацию можно прочитать в этой статье, я же возьму из неё схему фильтра дребезга и воплощу её в жизнь, да ещё и на три канала. Для этого сделаю отдельную плату, которую можно потом будет использовать где угодно в полевых условиях или на макетке, ну или же потом совместить с какой-то уже имеющейся платой в Eagle CAD для добавления этой схемы на плату. 

Простая схема аппаратного фильтра дребезга:

Да, только резистор и конденсатор... Но проблема состоит в том, что, хоть скачки и сглаживаются, сигнал имеет крайне пологие фронты:

Такое свойство сигнала от кнопки вполне может являться источником глюков, так как вводит как ТТЛ-, так и КМОП-логику в замешательство. Чтобы сделать фронты резкими, как и подобает логическим сигналам, необходимо вставить последовательно элемент, имеющий определённый порог, после пересечения которого на входе меняется логический уровень на выходе. Идеально подходящий для этого элемент - триггер Шмитта, и в вышеупомянутой статье предлагается использовать логические элементы 7414 - 6 инверторов+триггеров Шмитта. Если пропустить сигнал от кнопки через одну такую связку, то сигнал на выходе будет идеальным.

На этом можно было бы и закончить планирование схемы, но... Сигналы от кнопок будут инвертированными, а для моей схемы это не подходит. Почему? Кнопок планируется три, а у моего МК только два канала аппаратных прерываний. Соответственно, я запланировал использовать диодное ИЛИ для того, чтобы использовать одно прерывание для обработки всех кнопок, а потом уже в процедуре обработки прерывания распознавать, какая кнопка была нажата. Так как диодное ИЛИ не получится использовать при инвертированном сигнале, для каждой кнопки я буду использовать два инвертора, соединённых последовательно. Кнопок три, а инверторов в одной микросхеме 6 - идеально. 

Список компонентов:

  • 7414 - 74xx-eu.lbr
  • Диоды типа 4148 - diode.lbr
  • Резисторы и конденсаторы - rcl.lbr
  • Дополнительно подключаем supply1.lbr (символы питания и земли) и pinhead.lbr (просто контактные группы, будем использовать как отверстия для подключения проводов или же контактных групп).

Теперь создаём новый проект. Называем его как-нибудь типа hardware_debounce, создаём новую схематику и заходим в неё. Расчехляем инструмент ADD и добавляем:

  • Три резистора (rcl.lbr, R-EU -> R-EU_0207/10)
  • Три конденсатора (rcl.lbr, C-EU -> C050-024X044)
  • Три диода (rcl.lbr, 1N4148 -> 1N4148DO35-7)
  • Две контактных группы по 6 пинов (pinhead.lbr, PINHD-1X6 -> PINHD-1X6)
  • Символы земли и питания (supply1.lbr, VCC, GND) - лучше*/// добавить по два символа каждого, не помешает. 

Осталось только разобраться с микросхемой логических элементов (74xx-eu.lbr, 74*14). Выбираем её из списка вариантов - я использую SMD-вариант 74HC14D. Символ в меню выбора выглядит как-то подозрительно: 

...И у нас в руках оказывается не микросхема, а отдельный логический элемент из её состава. Что же, достаточно логичное решение - микросхемы, объединяющие N одинаковых элементов, можно разбить на N частей, почему бы и нет? Как по мне, в случае с логическими элементами это делает схему красивее и логичнее.

Добавляем 6 элементов, в три ряда по два элемента. Для того, чтобы автоматически соединить два элемента при их размещении на схеме, просто расположите их так, чтобы концы их выводов, которые нужно соединить, соприкасались. 

Чего-то на схеме не хватает... Ага! Нигде не видно выводов питания самой микросхемы. Да, они тоже отсоединены во имя модульности, но находятся от нас на расстоянии пары кнопок. Нажимаем кнопку Invoke, после этого щёлкаем на одном из логических элементов, появляется список частей самой микросхемы:

Выбираем в меню PWRN  и ставим выводы где-нибудь на плате:

Когда все символы добавлены на схему, перемещаем их. Один 6-пиновый коннектор перемещаем на левую сторону - пусть она будет стороной, к которой будут подключаться кнопки, а второй коннектор - на правую сторону, это будет коннектор с выходными сигналами и сигналами питания. Одну пару сигналов VCC и GND переносим налево, а вторую - направо. Резисторы переносим в пространство между левым коннектором и логическими элементами, вниз, а конденсаторы - туда же, но вверх. Диоды переносим в пространство между логическими элементами и правым коннектором, катодами (сторонами с полоской) вниз. 

Теперь всё соединяем. В процессе соединения не бойтесь двигать детали относительно друг друга, если это сделает линии на схеме красивее и понятнее, к примеру, уберёт пересечения. Диоды просто так не соединятся - нужно вести линию не до конца вывода, а чуть дальше. Не забывайте также, что инструмент Move двигает всё - включая провода. Не буду объяснять словами, что к чему подсоединить, но схема должна получиться плюс-минус такая:

На левой контактной группе три контакта подключены к питанию для удобства подключения, так как для каждой кнопки потребуется подпаять один провод к питанию - а пихать три провода в одно отверстие не сильно-то и удобно. На правой группе верхний контакт подключён к плюсу питания, затем три контакта - выходы соответствующих логических элементов, затем контакт земли, последний контакт - выход диодного ИЛИ, который будет подключен к МК как сигнал прерывания.

Теперь можно приступить к разводке платы. Создаём плату из схемы. Задача - переместить все компоненты так, чтобы их было удобно соединять. Представление о примерном размещении компонентов относительно друг друга смело можно брать из схемы:

Как можно увидеть, при перемещении компонентов нужно заранее обдумывать, как пойдут дорожки на плате. К примеру, резисторы и конденсаторы намного выгодней выстроить лесенкой - так можно красиво провести все необходимые дорожки под резисторами, а для экономии места площадки для смежных выводов резисторов и конденсаторов лучше расположить вплотную. Три диода располагаем в порядке D1-D2-D3 слева направо. После того, как все элементы перемещены так, как на картинке, можно думать о проведении дорожек. Что мешает провести их прямо сейчас?

Есть одна проблема - логические элементы. На данный момент, как можно увидеть, они соединены непонятно как и провести адекватно выглядящие дорожки при таком размещении явно не выйдет. Что же, смотрим в даташит:

Теперь приблизительно понятно расположение элементов. На каждой из двух сторон - по три элемента. Следовательно, чтобы удобно провести связи между каждым из них, выгоднее всего для каждой из трёх цепочек элементов задействовать по одному элементу с каждой стороны. Но как поиграться с расположением элементов, не удаляя кучу уже проведённых связей на схеме?

Довольно просто. Специально для того, чтобы менять логические элементы местами, в Eagle CAD в режиме редактирования схемы доступен инструмент Swap gates. Выбираем этот инструмент, щёлкаем на двух логических элементах подряд - и они меняются местами. Просто и беспроблемно!

      ->   

Приводим схему в такой вид:

Теперь связи на плате выглядят по-другому - чище и понятнее:

Сейчас смело можно соединять все контакты - препятствий вроде не осталось. Одно замечание - если дорожки будут синими, значит, Вы ведёте дорожку по неверному слою - сотрите дорожку, выберите слой "Top" в выпадающем списке вверху слева и проведите дорожку ещё раз.

Плата создана! Что можно сделать? 

1) Изменить расстояния между коннекторами для удобного использования нашей платы в макетных платах.

Как известно, расстояние между отверстиями в макетной плате - 0,1 дюйма. Нашу плату можно было бы использовать на макетных платах, как какую-нибудь микросхему - просто припаять контактные группы и вставить в плату, и готово.

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

Ставим крестик на  верхнем контакте одного коннектора, перемещаем крестик на тот же контакт второго коннектора, во втором секторе строки состояния вверху видим расстояние в дюймах:

Ага, 1.15. Можно попробовать уменьшить на 0.05. Правда, для этого придётся перенести немного вверх три диода и переразвести одну дорожку, но ничего сложного:

Всё, теперь можно рассчитывать на использование в макетных платах. К слову, будет лучше, если расстояние между коннекторами, делённое на 0,1, будет нечётным - тогда количество отверстий между коннекторами будет чётным и можно будет поставить плату равномерно, как, к примеру, микросхему.

2) Создать на плате полигон земли.

Многие видели платы, свободная поверхность на которых залита слоем меди. Это помогает уменьшить влияние помех и паразитную индуктивность между компонентами, а также увеличивает прочность платы - и это очень легко сделать в Eagle CAD.

Первое, что нужно - нарисовать на плате границы полигона. Берём инструмент Polygon:

Обводим плату по контуру: 

Теперь берём инструмент Name, щёлкаем на границе полигона и даём полигону название "GND" (без кавычек). 

Последний шаг - используем кнопку Ratsnest:

Единственная проблема с этой функцией - результат её работы не отменяется по Ctrl+Z и пропадает после того, как закрываешь редактор платы, поэтому рекомендую проводить эти действия непосредственно перед отсылкой на печать.

3) Проверить схему и плату на ошибки.

В Eagle CAD есть встроенные инструменты, которые, оперируя теми познаниями о применении здравого смысла в разработке печатных плат, что зашили в них разработчики, указывают на ошибки и предупреждают о возможных проблемах как в схеме, так и на плате. Не буду долго рассказывать - просто перейдите к схеме и в меню Tools выберите ERC:

Ага, ошибок нет, но есть предупреждения. Пройдёмся-ка по списку и решим, что важно, а что нет:

  • Close but unconnected wires in nets ... - предупреждение о том, что конец вывода какого-то элемента соприкасается с каким-то элементом, что может запутать создателя схемы или же того, кто будет её разбирать. Здесь мы можем это, в принципе, и проигнорировать, но если схему планируется показывать и передавать другим людям, которые могут быть и невнимательными - лучше исправить =)
  • Net ... overlaps pin - по сути, то же самое.
  • Part ... has no value - не проставлен номинал для детали. В случае с резисторами и конденсаторами - лучше исправиться, всё же хороший тон. В случае с коннекторами - можно придумать названия, отражающие назначение.

Берём инструмент Value, исправляем:

Отлично. Теперь переходим к плате и в меню Tools нажимаем DRC, а затем нажимаем внизу кнопку Check и видим список ошибок на плате:

Ошибки Dimension указывают на несоответствие рекомендуемому отступу дорожек от платы. Для этого можно немного расширить границы платы. Ошибка Overlap же указывает на действительно вредную и не замеченную мной ошибку - пересечение дорожек, в этом случае - дорожки и контакта:

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

В архиве - проект Eagle CAD. Следующую статью я думаю посвятить двухсторонним платам, в частности, попыткам создать таковую, используя ЛУТ как доступное многим радиолюбителям и единственное доступное лично мне средство. До скорых встреч!

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 26.04.2017 0 1
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 2 чел.

Комментарии (7) | Я собрал (0) | Подписаться

0
Гость #
Аппаратная борьба с дребезгом была актуальна в эпоху логики, но ни как не МК. Никакой сложности в реализации в коде нет. Покажите в какой современной технике, где стоит МК используется аппаратная?
Ответить
+1

[Автор]
CRImier #
Насколько я помню, аппаратная логика фильтрации стоит в некоторых чипах, у которых есть выход на кнопки. Но примеров не приведу. простите, не созранил. Ну и наличие специализированных микросхем для фильтра дребезга тоже на что-то указывает.
Кроме того, как я уже сам убедился не все всегда так беспроблемно.
Тем не менее, у меня самого есть пара применений для этой платы - включая как пару проектов на МК, так и, к примеру, китайский монитор, у которого кнопки создают по 5-10 нажатий за раз. Ну а распознавать дребезг, используя прерывания, действительно неудобно - мне в некоторые схемы проще вставить пару компонентов, чем подбирать значения времени для вот конкретно этих кнопок.
Ответить
0
Анатолий #
Немного запутался... В статье про аппаратный антидребезг, на которую Вы ссылаетесь, выход кнопки подтянут резистором к питанию. Соответственно, при отпущенной кнопке на выходе 1, при нажатой - 1. Далее триггер инвертирует сигнал. А у Вас выход кнопки почему-то подтянут к земле. Соответственно, при отпущенной на выходе 0, при нажатой - 1. И чтобы реализовать диодное ИЛИ Вам приходится инвертировать сигнал дважды. Не проще ли сделать в первом варианте? Тогда используемой микросхемы хватит на 6 кнопок.
Ответить
0
ALARMus #
А можно ли в Eagle разводку платы напечатать без самих деталей?
Ответить
0

[Автор]
CRImier #
Вы имеете в виду - не составляя принципиальную схему? К сожалению, нельзя.
Ответить
0
ALARMus #
Нет я имел ввиду, чтобы после создания разводки отправить на печать только сами дорожки (без деталей) - уже нашел убирается в слоях
Ответить
0

[Автор]
CRImier #
Да, это было в первой статье
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

USB-реле (2 канала)
USB-реле (2 канала)
Бокс для хранения компонентов Тестер ESR, полупроводников, резисторов, индуктивностей
вверх