Контроллер двигателя с КМОП логикой

Изменено: . Разместил: FadeDemon | Меню
Количество просмотров2`947 / FD1275-6-0

Наконец-то снова появилось время, которое можно было беспрепятственно потратить на гаусс-пушку, и по такому случаю я решил немного продвинуться в сборке её электронной начинки. На повестку вечера встал вопрос о сборке устройства, которое будет отвечать за перезарядку оружия (мы же помним про полную автоматику, не так ли), то-есть, осуществлять подачу стальных гвоздей, гордо именуемых “снаряды” из магазина в ствол, вернее в самое начало ствола. Поскольку по предполагаемой конструкции (схему самой конструкции как нибудь потом опубликую) магазин непосредственно соединялся со стволом так, что снаряды попадали в центр оси ствола, вся задача по перезарядке сводилась к выталкиванию гвоздя из магазина, и фиксации его там до того, как он будет вырван адскими магнитными полями. Поэтому, перезаряжающее устройство должно было представлять из себя обыкновенную, с позволения сказать, палочку, которая должна была уметь совершать медленные возвратно-поступательные движения, ездить другим словом туда-сюда, и поэтому, не особенно долго думая я реализовал это при помощи редуктора из разнокалиберных шестеренок, самодельной гребёнки выточенной из оргстекла, и двух стержней от гелевых ручек. Получилось просто и со вкусом, двигатель вращал редуктор, редуктор цеплял гребенку, гребенка двигала в свою очередь штырь из гелевых ручек. В общем с механикой больших проблем не возникло, о ней кстати расскажем позже, серьезно меня заставил призадуматься другой факт: устройством надо было как-то управлять, причем так, чтобы оно само двигалось до упора, умело делать реверс, и управлялось при помощи двух логических входов, в которые достаточно было подать импульс напряжения высокого уровня, чтобы устройство само сообразило что от него хотят. Впервые осознав всю сложность задачи я даже пригрустнул… Но вдохновение и на этот раз не заставило себя долго ждать, и быстро пришло на помощь.


Система перезарядки, альфа-версия
Рис. №483. Вот как это выглядело

Чтобы сразу понять, что от нас требуется, надо разложить все требования к схеме по полочкам, и над каждой полочкой хорошенько подумать. Первое что можно заметить, в схеме будут устойчивые состояния, поскольку управление будет осуществляться импульсами. Приняли импульс — едем в одну сторону. Доехали до края — остановились. Приняли другой импульс — поехали в другую сторону. Всё должно работать примерно так, и из этого можно сделать вывод, что будет в схеме 3 устойчивых состояния: едем вправо, едем влево, и стоим на месте. Очевидно, что для реализации такой логики нам потребуются элементы памяти, а если конкретнее — RS-триггеры или что-то на них похожее. Далее, выше мы заметили, что состояния должны меняться когда каретка доезжает до краёв. А как это сделать? Ну тут очевидно, что самое простое решение это концевые выключатели, или концевики. Прикрутить 2 концевика на концы, дело совсем не сложное. И тут сразу отметим, что концевички выдранные мною из древнего флоппи-дисковода работали не на замыкание а на разрыв, то-есть при нажатии цепь размыкали, поэтом сразу будем знать, что признак достижения края - разрыв цепи (а не замыкание).


Продолжая размышления, вытекают ещё кое-какие требования к схеме. Например, во время движения каретки схема не должна реагировать на внешние команды. На первый взгляд — нафига? Но если вспомнить как работают другие схемы гаусса, то становится ясно, что без этого будет обойтись весьма сложно, команду на перезарядку главный контроллер подавать будет импульсом на один вход, и с помощью цепей задержки, постоянным уровнем на другой. То есть, по первому импульсу каретка отъезжает в один конец, видит что на входе высокий уровень на другом входе, и тут же едет в обратный конец. Если она уже в этом конце — действие первое опускает, и едет каретка сразу в обратный конец. Очевидно, что если она будет реагировать на команды во время движения, то доехать в первом случае до конца она попросту не успеет, и будет эпик фейл.


Здесь, кстати можно сформулировать ещё одно требование: не включать двигатель, если каретка уже находится в требуемом конце. То-есть, каретка стоит в правом конце, и мы получили высокий уровень на правом входе. Такая ситуация должна игнорироваться, ну чтобы ничего плохого случайно не произошло… Хотя и эта ситуация уже обыгрывается концевиками, но мало-ли. Перестраховаться никогда не помешает.


Наконец, последнее что должна уметь схема, это очевидно делать реверс — а если шире, то должна она уметь менять полярность питания двигателя. На первый взгляд — сложно. Но на второй, довольно легко решаемая задача с помощью 4-х мосфетов. Об этом несколько позже, как и ещё об одном требовании, с которым пришлось столкнуться чуть позже. Пока оно нас не интересует.


Представители серии К561
Рис. №484. Глаза вам не врут. Это действительно микросхемы...

Для начала, составим небольшой список всего что выше было сказано, а то взорвётся голова. Итак, нам требуется:

1. Устойчивые состояния, вперед, назад и стоп.
2. Остановка по достижению концевиков.
3. Блокировка ввода во время движения.
4. Не ехать никуда, если находимся в нужном конце.
5. Реверс питания, в зависимости от направления, естественно.


Первый позыв, пришедший на ум, это как и раньше: написать простенькую программу на Delphi собрать всё из транзисторов, тиристоров и диодов, то-есть в очередной изобрести свою ТТЛ логику, как это уже было сделано в главном контроллере. В целом, конечно, задача не представляет сложности, инвертор на 2 транзисторах собрать проще пареной редьки, элемент AND тоже уже делали, RS-триггер из тиристора? — ну это же элементарно! Благо КУ104Г в закромах ещё остались… (про элементы, мы немного вперёд забегаем, кстати, хотя впрочем теоретически читатель может и сам догадаться что к чему). Правда тут мы сразу проясним один маленький нюансик. Забегая, опять-же вперёд, скажем, что в схеме у нас получилось 2 триггера, 2 элемента AND, 4 инвертора, и 4 ключевых элемента (точнее, их можно было заменить на AND элементы, но сразу до этого не додумались). Ну, ещё 2 элемента OR, но они не в счёт — 2 диода любой дурак спаяет. Давайте попробуем подсчитать количество транзисторов теперь. Учитывая, что инвертору надо 2 транзистора,  элементам AND — от 2 до 4, а зависимости от кривоты рук, RS триггер можно собрать из тиристора и 2 транзисторов, ну и ещё ключи… Не, я конечно не схемотехник, но даже приблизительные подсчёты количества транзисторов, а ещё плюс к этому грядущие сложности в согласовании токов повергли меня в траур. И поэтому, мысль собирать это дело на транзисторах довольно быстро выветрилась из моей головы.


Но если не транзисторы, то что тогда? Не, ну это же очевидно, конечно же микросхемы! И плевать уже, что строим мы гаусс-ган с его мощными электромагнитными помехами — переживём как-нибудь. В порыве вдохновения были на скорую руку проверены все закрома, и в загребущие мои лапки попали следующие микросхемки: К561ТР2, содержащая 4 RS-триггера, К561ЛН2, вмещающая 6 инверторов, К561ЛА7, несущая на борту 4 элемента 2И-НЕ, и в качестве красивого заключения интересная и довольно редкая микросхема К561КТ3, представляющая собой небольшую матрицу коммутаторов сигналов, в количестве 4 штуки — ну прям ровно столько сколько мы хотим. Сии девайсы были представлены на фото выше, изначально я взял К561ЛН2, ну как бы с запасом — дело в том что первые наброски схемы на микросхемах требовали целых 7 инверторов, из-за того что элементы 2И-НЕ отличаются от обычных 2И тем, что на входе какбэ содержат инвертор, и выдают сигнал прямо противоположный обыкновенными AND вентилям. Посему, чтобы сигнал этот очеловечить, нужны были ещё инверторы. По этой же, кстати причине, для ключей была выбрана К561КТ3, поскольку с обыкновенными ключами инверторы не требовались, и мы таким образом сэкономили почти целую микросхему.


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


Первые эксперименты с КМОП логикой
Рис. №485. Итак, план таков.

Стиль весьма художественный, но для нас пойдет. У схемы очевидно 8 выводов: 2 питания, 2 управления (влево ехать или вправо), 2 входа с концевиков, и 2 выхода на схему управления питанием. То-есть, это только первая часть схемы, отвечающая только за логику. Давайте теперь проясним ситуацию. В схеме у нас используется 2 RS триггера, первый хранит бит активности двигателя: 0 — двигатель стоит, 1 — двигатель вращается, а второй хранит бит направления вращения: при нуле подразумевается вращение влево, при единице — вправо. Как видите, элементарно. Вообще с помощью двух бит можно закодировать 4 состояния, но у нас тут используется только 3, поскольку при выключенном двигателе нас мало интересует направление его вращения :). Разберем теперь, на что же должен реагировать первый (левый) триггер, то-есть триггер активности двигателя? Как мы видим из требований, включатся он должен когда приходит управляющий импульс, и отключатся при достижении любого концевика. Концевик может быть левый, а может быть правый, поэтому в схеме на входе R (сброса) видим импровизированный элемент ИЛИ состоящий из двух диодов. Точно так-же, как и импульс может быть с правого входа, а может быть с левого, поэтому на входе S (включения) также видим 2 диода. Оба входа, как и большинство на схеме, заземлены резисторами на 100 КОм, зачем это сделано скажу чуть позже, когда будем считать съеденных собак, хотя вообще очевидно что это сделано чтобы заряд с выводов микросхем сразу же стекал, поскольку из-за того что микросхемы КМОП структуры, и на входах имеют неебическое сопротивление, они любят реагировать даже на то количество заряда, что умещается в ёмкости их лапок, и если на это не обращать внимание, можно с аппетитом сожрать очередную собаку, заключающуюся в замедлении реакции микросхемы на снятие высокого уровня секунд на 5.


Рассмотрим теперь правый триггер, триггер направления. Очевидно, что включатся он должен по импульсу на правом входе, выключатся по импульсу на левом, и больше в общем-то ничего не должен делать (на схеме соединения его выводов со входами схемы перепутаны кстати местами, обратите внимание). Но если мы проследим путь его выхода Q, то заметим, что он еще участвует в схемах отключения первого триггера, зачем? Дело в том, что отключатся триггер должен по такому условию: что направление было вправо, и достигли правого концевика, или направление было левое, и достигли левого концевика. Почему так сложно, нетрудно понять на примере ситуации, когда сигналы с концевиков просто складывались бы элементом ИЛИ и шли бы на вход R первого триггера: в таком случае после достижения концевика мы бы просто не смогли бы его включить, ведь концевики то сами не отжимаются, и постоянно держат высокий уровень на лапке сброса триггера… Вы в общем поняли. Из всего следует, что сбрасывать первый триггер надо только тогда, когда направление совпадает с сигналом концевика, чем в общем-то и занимаются элементы 2И-НЕ и горстка инверторов. Осознать как это работает не так трудно, если вспомнить, что концевики работают на разрыв.


И нам осталось разобрать назначение 4-х входных ключей, нарисованных на схеме как MOSFET транзисторы. Ну тут все просто: правые блокируют смену направления, когда первый триггер активен, а следовательно двигатель крутиться, а левые блокируют включение двигателя, если сигнал на входе совпадает с зажатым концевиком, ну, что собственно требуют условия. Все выходы, естественно, заземлены, по причине описанной где-то выше. Вообще говоря заземлять нужно не все входы, а только те, которые не связаны напрямую с логическими выходами микросхем, поскольку последние заботятся о том, чтобы в выводах не оставалось заряда, и сами ставят нужное напряжение, чтобы заряд утёк куда подальше.


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


Без названия
Рис. №486. Версия 1.0 Alpha. Логика уже работает, какое счастье!

Первая собака, которую я заглотал, когда начал разбираться с микросхемами, была в том, что насмотревшись на микросхемы ТТЛ логики, мне взбрело в голову, что КМОП микросхемы работают также, ну типа имеют открытый коллектор сток, управляются отрицательным напряжением. Но это оказалось ни хрена не так, все микросхемы управлялись высоким положительным уровнем, что сначала ввело меня в заблуждение. Но когда когнитивный диссонанс прошел, оказалось, что собирать логику на 561-х микросхемах намного проще, чем собирать конструктор LEGO, и с этим справиться даже гуманитарий малолетний ребёнок. Не нужно никакие токи-напряжения рассчитывать, тупо спаивай лапки и всё. Ведь мы помним, что МОП транзисторы, из которых собственно и состоят микросхемки обладают охренительно большим входным сопротивлением, доходящим до сотен МОм, что и является их большим преимуществом. В общем, соединив все микросхемки воедино проводками, получилось устройство, которое вы можете наблюдать на фото выше. Надо тут заметить, что у микросхемы К561ТР2, чтобы она завелась, надо 5-й по счёту вывод соединить с плюсом, он типо разрешающий (я про это забыл в первый раз, и долго тупил глядя на взаимоисключающие показания мультиметра).


Перед тем как заработать окончательно, я съел еще одну собаку, на этот раз на диодах КД522Б. Дело в том, что для вентилей ИЛИ я решил использовать 2 штуки КД522Б и КД521А, ибо оных у меня было в равных количествах, но я не учёл, что у вторых катод как положено рядом с широкой полосой, а у первых, сука, всё наоборот! Выяснилось это к сожалению только после того, как все они оказались впаяны в схему. Ну, пришлось выкорчёвывать их и разворачивать, ничего не поделаешь. Ещё один урок, подчёркивающий, как важно все детальки проверять прежде чем тыкать в них паяльником…


КД521А & КД522Б
Рис. №487. КД521А (синие) & КД522Б (чёрные). До и после.

Дальнейшая задача была более простой (на первый взгляд), и состояла в том, чтобы выходы первой схемы превратить в какие-нибудь ощутимые действия, вроде вращения двигателя, например. Может показаться что схема изменения полярности питания представляет сложность, но на самом деле это не так. Это элементарно разрешилось с помощью 4-х MOSFET-ов, кстати небезызвестных, и уже успевших стать популярными IRLR024N & IRFR5035. Чтобы снова всё сразу понять, давайте поглядим на схему подключения:


Схема управления двигателем
Рис. №488. Как мы будем управлять двигателем

Суть такова: мы берём мосфеты с n-каналом (Q1 и Q2 на схеме), и ставим их на оба вывода двигателя так, чтобы при их открытии он как обычно вращался. Затем берём p-мосфеты (Q3 и Q4 на схеме), и делаем то-же самое, но только так, чтобы при их открытии двигатель вращался в обратную сторону. Затем все затворы соединяем на одну линию. Что же получается? Да-да! Именно то что нужно и получается! Когда мы на эту линию подаём единичку, то открываются одни мосфеты, и двигатель крутится в одну сторону, а когда нолик (вернее, отрицательное напряжение, создаваемое в данном случае заземляющим резистором), то о чудо! Он крутится в обратную сторону. Кэп подсказывает, что одновременно в таком случае открыться все мосфеты не могут из-за разного типа проводимости. Есть правда второй вариант, 4 одинаковых мосфета и инвертор, но первый мне показался пригляднее, и поэтому я остановился именно на нём. Кстати в схеме есть реле — на них внимания пока не обращаем, из финальной схемы они были исключены, вернее подключены совсем по другому.


Итак, со схемой направления разобрались. Ну а со схемой питания даже разбираться не нужно: как говориться, просто добавь воды мосфет. В качестве оного (на схеме обозначен как Q5) был выбран одновременно няшный и суровый K3296 (JIS 2SK3296) фирмы NEC, аккуратно и предусмотрительно позаимствованный из одной довольно древней материнской платы. Если память мне не изменяет, имеет около 35 ампер току, и если мой мультиметр мне не изменяет — 200 МОм входного сопротивления. Вот кстати и он, какой строгий красавчик:


NEC K3296 MOSFET
Рис. №489. NEC K3296 MOSFET

Данный овощ, в общем-то, явился последним звеном в нашей схеме. Ну, почти последним. Мы не рассмотрели ещё кое-какие вещи, начнём с очевидных. Во первых, на двигатель нужно повесить небольшой конденсатор, в районе 1 µF, ибо двигатель по своей сути потребитель довольно-таки импульсный, и чтобы при вращении он не слишком сильно загаживал питающую сеть помехами, и ставиться конденсатор, призванный эти помехи слегка сглаживать. Впрочем, его наличие, играет больше морально-эстетическую роль, и мы вполне смогли-бы обойтись и без него. Ну да впрочем не важно.


Контроллер перезарядки. Собранный
Рис. №490. Контроллер перезарядки. Собранный

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


На тему торможения можно много рассуждать, особенно если вспомнить полностью мной забытые основы электропривода, я решил торможение сделать за счет простого КЗ выводов. Понятно, что когда двигатель крутится по инерции, он работает в режиме генератора, а ЭДС, создаваемая в генераторе всегда выбирает такое направление, чтобы препятствовать причине её породившей, то-есть, в нашем случае, она должна препятствовать вращению двигателя. Нам остаётся только добавить тока в обмотках, тупо закоротив выводы двигателя. Как можно заметить, к экзамену по физике я тоже подготовился :). Ну а закоротить выводы я решил самым простым и дубовым способом: с помощью реле.


Сначала реле я хотел подключить как на схеме выше, но реле тогда должно было содержать два не связанных переключателя, а у меня таковых не было. Были только SRD-12VDC-SL-C, благоразумно извлечённые из какого-то девайса, связанного с силовой электроникой. Ну и ещё HK23F-DC12V-SHG но они по своим размерам и характеристикам походили больше на сигнальные чем на силовые, и коротить ими двигатель было попросту страшно. Все остальные реле были только на 24 вольта. И ни одно из них не имело двух раздельных переключателей. Это вновь опечалило меня. Но вновь, ненадолго. Включив дополнительные логические схемы в мозгу, и съев шоколадку, мною было предложено вот такое решение:


Схема торможения двигателя
Рис. №491. Схема торможения. Грубовато, однако, зато просто.

Всё до смешного просто. В состоянии покоя реле коротит лапки двигателя. А когда оно переключается, контакт попросту перекидывается с лапки на питающий вход, и таким образом, двигатель включается цепь только когда включено реле. А когда выключено, он не только отключён от цепи, но ещё и закорочен. Ну куда ещё универсальнее :). Реле было просто тупо подключено к мосфету Q5, а вход схемы выше вместо двигателя в предыдущей схеме. И всё заработало. Только еще отметим, что обмотку реле нужно обязательно шунтировать диодом, поскольку при её отключении, в ней запросто может назреть несколько десятков вольт самоиндукции, которые способны не только вносить непонятные глюки в работу схемы, но и делать более страшные вещи, например убивать MOSFETы, и выносить КМОП микросхемы, тупо пробивая им всем затворы (ТТЛ к такому садо-мазо воздействию весьма малочувствительны). Именно поэтому, в схеме с 4-мя мосфетами рядом с релюшкой затесался диодик. Он очень важен, поверьте.


Обратная сторона контроллера
Рис. №492. Обратная сторона платы

Вообще говоря, вся схема собиралась без единого расчёта, и как выяснилось, всё-таки зря. Вернее дело даже не в расчётах, а скорее во внимательности. Дело в том, что в целях понижения напряжении на двигателе, перед системой мосфетов я решил воткнуть стабилизатор напряжения на транзисторе D2012 и стабилитроне Д814А на 8 вольт. Напряжение понизилось примерно до 7 вольт, но привело это к результатам непредсказуемым: двигатель в одну сторону крутился нормально, а в другую сторону — как дохлая черепаха. А произошло это потому, что мосфеты IRFR5035 имеют напряжение открытия в районе −5 ÷ −6 вольт, а из-за того, что на схему подаётся всего 7 вольт, то это напряжение достигается мягко говоря с трудом… Пришлось от стабилитрона отказаться. И это стало последней съеденной собакой в этой схеме.


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

Ключевые слова Схемы, Gauss-cannon, MOSFET, двигатель, редуктор, К561, Концевик, КМОП, собака, КД522Б, реле, K3296
QR-код
Интересное
Разбор лаб по программированию. Семестр 2. Часть первая В один прекрасный день, когда мои туманные мысли ещё не вполне отошли от сонного состояния, случайно наткнулся я на задания к лабораторным работам по программированию, которые ждали нас в этом семестре, и всего через одну минуту цель была четко осознана ...

Читать »»
Случайные фото