Теория по КМПУ Готовые элементы систем Технологии и хитрости Прочее Магазин Контакты
 

Теория по КМПУ

Краткие сведения

Концепция модульного построения устройств (КМПУ) – это один из принципов построения радиоэлектронной аппаратуры. Суть ее заключается в том, что любой дывайс представляется в виде набора отдельных независимых модулей, связанных между собой проводными соединениями. Основная фича состоит в том, что модули эти являются относительно универсальными и могут быть применены в других поделках без изменений печатной платы (схема модулей в общем случае может меняться – от состояния конфигурационных перемычек до установки/выбрасывания отдельных элементов). Благодаря этому время на разработку всего устройства существенно сокращается: вместо того, чтобы каждый раз рисовать схему и плату дывайса с нуля, обычно можно как минимум половину поделки собрать из уже имеющихся запчастей, т.е. заранее разработанных модулей.

Особенно это относится к модулям микроконтроллеров (МК) – любой модуль МК, разработанный мной, содержит на борту как минимум:

- сам кирпич (правда, я работаю только с камнями AVR от Atmel);

- преобразователь USB<=>USART на базе интерфейсной микросхемы FT232RL;

- встроенный программатор микроконтроллера (для которого, кстати, не нужны никакие дополнительные детали – программатор просто идет бонусом к использованию FT232RL);

- два примитивных источника питания: один на +5.0В, второй – на +3.3В, причем схема построена так, что вместо +3.3В можно легко получить и другие значения. Данные источники служат для питания МК и периферии, причем их примитивность (построены на линейных стабилизаторах) не мешает в большинстве проектов обходиться только ими.

Модули устройства обычно общаются между собой по стандартным шинам (I2C, SPI, USART), что позволяет легко ввести в устройство модуль от стороннего (чаще всего – китайского) производителя. Шины являются «расширенными» - в обязательном порядке имеют несколько дополнительных линий управления (на всякий случай). Кроме того, на все разъемы, относящиеся к шинам данных, выведено напряжение питания центрального МК, что позволяет без особого геморроя запитывать ведомые (исполнительные) модули.

Не оставлены без внимания также и чисто житейские вопросы: способы крепления модулей, удобство этих способов, типы корпусов, куда модули можно относительно легко засунуть, удобство соединения отдельных частей дывайса и т.д. Несмотря на то, что перечисленные вещи кажутся мелочью, поверьте – когда дело доходит до реальных поделок проблемы эти встают в полный рост (попробуйте, например, засунуть ту же увешанную Ардуину с LCD в 3-юнитный 19-дюймовый корпус так, чтобы дывайс выглядел по-человечески).

Вот, собственно, в двух словах содержание предлагаемой концепции. Следует отметить, что данная идея, конечно, не нова – достаточно посмотреть на принцип построения обычного компьютера (материнка, стандартные шины и платы расширения), да ту же самую Ардуину можно привести как пример. Поэтому я, естественно, не претендую на какую-либо исключительность и гениальность – я просто постарался свести воедино все базовые и второстепенные принципы построения модульных систем (какими они видятся мне, и как они реализованы у меня). В связи с этим здесь не следует ждать каких-либо откровений: для более-менее опытного разработчика электроники всё, что изложено в теоретической части по КМПУ – вещи очевидные и примитивные. Ну а для начинающих что-то, возможно, и окажется полезным. Так что, кого заинтересовало – продолжайте чтение, либо добро пожаловать к «оглавлению» (список разделов – слева).

Вступление. Структурная схема устройства

Рассмотрим начальную стадию классической цепочки разработки электронного устройства. Данная стадия включает в себя следующие этапы:

1. Формирование технического задания (ТЗ).

2. Разработка структурной (функциональной) схемы устройства.

3. Построение принципиальной электрической схемы на основе схемы структурной.

4. Разработка печатной платы (ПП) устройства.

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

Отметим, что рассматриваемая последовательность действий является, скажем так, универсальной. Она не зависит от того, разрабатывает устройство профессионал или любитель. Вообще говоря – в случае любителя данная последовательность действий будет соблюдаться более четко, ибо любитель, по крайней мере, хотя бы может сформулировать для себя внятное ТЗ, в отличие от большинства «настоящих» заказчиков. Единственное, что можно отметить – любитель обычно не ощущает непосредственно этапов №1 и №2. Для него этап №1 заключается в простой и понятной большинству людей формуле «Мне надо вот это вот», а этап №2 проходит просто подсознательно (ибо схема принципиальная есть более «развернутый» вид/случай структурной схемы устройства). Но, повторюсь, явно или неявно перечисленные начальные этапы последовательно проходит любой разработчик, будь он хоть любитель, хоть профессионал.

Тут читатель может заметить: «А многие любители вообще принципиальных схем не рисуют, и проектируют платы безо всяких схем». На это могу ответить лишь одно: если схемы нет на бумаге – это еще не значит, что ее нет в башке. Невозможно спроектировать рабочую печатную плату, если нет представления о том, какие элементы и как должны быть соединены, ну а это и есть принципиальная электрическая схема.

Чтобы не быть голословным, приведу пример, подтверждающий резонность вышеозвученных утверждений. Итак: необходимо спроектировать следующую систему.

На вход системы поступают сигналы от двух аналоговых датчиков температуры (термодатчиков). Минимальное значение уровня сигнала составляет 0мВ, максимальное +100мВ. От устройства требуется:

а) считывать значения сигналов с обоих термодатчиков;

б) отображать на жидкокристаллическом индикаторе (ЖКИ), встроенном в устройство, реальную температуру (пересчитанные значения сигналов с обоих термодатчиков);

в) если показания первого термодатчика превысили некое максимальное значение TEMP_MAX – замкнуть некую электрическую цепь (условно «Цепь 1»). К данной цепи может быть подключен, например, вентилятор с рабочим напряжением 220В (тип напряжения – переменное);

г) если показания второго термодатчика опустились ниже определенного минимального значения TEMP_MIN – замкнуть другую электрическую цепь (условно «Цепь 2»). К данной цепи может быть подключен, например, некий нагреватель с рабочим напряжением 220В (тип напряжения – переменное);

д) необходимо иметь возможность считывания данных в компьютер (ПЭВМ) по интерфейсу USB2.0;

е) должна быть предусмотрена возможность установки значений TEMP_MAX и TEMP_MIN как с лицевой панели устройства, так и с помощью ПЭВМ по интерфейсу USB2.0;

ж) необходимо предусмотреть индикацию состояния устройства на лицевой панели при помощи светодиодов или ламп накаливания;

з) питание устройства – внешнее (от брикета). Тип напряжения питания устройства – постоянное (выпрямленное), диапазон допустимых значений – от +7,5В до +30,0В;

и) прочее.

Прибавим к этому, что у заказчика уже есть софт для работы с подобного рода устройством, рассчитанный на COM-порт. Ну и стандартные сроки на разработку дывайса («Надо было сделать еще вчера!») тоже не забудем.

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

«Надо писать данные в комп и отображать их на ЖКИ. По-любому – потребуется микроконтроллер (ПЛИС, DSP и т.д. – нужное подчеркнуть). Сигнал с датчиков весьма убог, т.к. нам нужно не только отслеживать пороговые значения TEMP_MAX и TEMP_MIN, но и выдавать реальные данные с датчиков (напоминание для себя: узнать про необходимую точность измерений). Сколько с них сигнал идет? От 0мВ до 100мВ? Ну, тогда надо поставить по усилителю (что-нибудь с коэффициентом усиления около 15-20) на каждый канал. Для АЦП должно хватить (кстати, да – камень надо будет выбрать с АЦП). Вентилятор и нагреватель на 220В проще всего включать/выключать при помощи реле (напоминание для себя: уточнить у заказчика мощность и марку данных устройств, а то опять будет как в прошлый раз). Ну и по мелочи: надо предусмотреть кнопки для установки пороговых значений TEMP_MAX и TEMP_MIN, не забыть про ЖКИ, раз с точки зрения «компьютерной» программы нужен COM-порт – воткнуть что-нибудь типа FT232RL, ну и смастерить понижающий источник на +5,0В (или на +3,3В – смотря какой именно кирпич в итоге будет выбран).»

Думаю, читателю весьма знакомы такие рассуждения. Более того – 95 из 100 за то, что его мысли после получения данного ТЗ потекут примерно в этом же направлении. Но ведь если структурировать подобные мысли, то они превратятся в блок-схему устройства, т.е. структурную схему. Как говаривал в моей шараге один весьма уважаемый гуманитарий довольно почтенных лет: «Отличие технарей от нас в том, что они весь мир могут разложить по кубикам. Они, кстати, и думают тоже именно так». Итак, кубики в данном случае будут такими:

- микроконтроллер (МК), ПЛИС или что-нибудь в этом роде. Рисуем квадратик;

- к данному МК подключены на входы АЦП термодатчики. Но не напрямую, а через усилители (рисуем еще два квадратика);

- надо USB2.0 (причем такое, чтобы с точки зрения заказчика оно было бы COM-портом). Поэтому используем в схеме преобразователь USB-UART на базе микросхемы FT232RL (например). Не нравится 232RL – используй 2232НL или вообще CP2102 или еще чего-нибудь подобное. Главное (пока) в том, что появляется еще один квадратик – преобразователь USB-UART (понятно, что для знатоков USB этот квадратик не обязателен, его можно реализовать непосредственно в микроконтроллере);

- надо ЖКИ. Тут пока всё понятно – просто добавляем соответствующий квадратик;

- надо кнопки (будь они прокляты) для установки пороговых значений температуры и светодиоды для отображения состояния устройства. Добавляем квадратик «Элементы индикации и управления устройством»;

- надо управлять внешними силовыми элементами (нагреватель/вентилятор). Как говорилось выше, для управления будут использоваться реле (возможно, с неким обвесом). Соответственно, добавляем еще два квадратика;

- ну и до кучи надо добавить еще один квадратик – схему питания «умного» элемента (МК), поскольку даже +7,5В для него будут смертельны, не говоря уж о +30,0В.

Ну и, просуммировав все квадратики, в итоге получим структурную схему устройства:



Еще раз отмечу – речь идет именно о структурной схеме устройства. Мы пока понятия не имеем, чт́о за реле будем использовать, неизвестна топология и схема питания усилителей, неясн́а структура источника питания и т.д. Однако, по данной структурной схеме уже вполне можно проследить, какие узлы будут использоваться, что с чем будет взаимодействовать и как в целом будет работать устройство. Думаю, это очевидно.


Суть концепции. Плюсы и минусы

После того, как предварительные этапы пройдены, наступает черед разработки принципиальной схемы устройства в соответствии со схемой структурной. И здесь есть два пути.

Путь первый: объединение всех узлов структурной схемы на одной схеме принципиальной. Это повлечет за собой размещение всех элементов и соответствующих связей на одной печатной плате (ПП). Плюсы такого подхода очевидны: минимизация межплатных соединений (удешевление), монтаж всех деталей на одной печатной плате (удешевление) и всё прочее, примерно в том же духе. Однако, как можно заметить, плюсы такого подхода будут видны только на средних и крупных сериях устройства. Вместе с тем, очевиден и основной минус рассмотренного подхода: относительно большое время (и, соответственно, стоимость) разработки схемы и ПП, поскольку схема и плата должны быть заточены именно под функционал разрабатываемого дывайса. К тому же обычно требуется «уникальная» разработка корпуса устройства со всеми соответствующими дырками. Еще раз повторюсь – на средних и крупных сериях устройств данный подход оправдывает себя на 100%, и лично я в таких случаях рекомендовал бы именно его. Но вот в штучных изделиях и на относительно мелкой серии устройств я обычно использую второй путь.

А второй путь – это и есть концепция модульного построения устройства (КМПУ). Суть данной концепции заключается в том, что в общем случае все квадратики на структурной схеме устройства – это отдельные печатные платы (модули). Платы эти соединяются между собой проводами в соответствии со структурной схемой. Отсюда несложно вывести один из минусов КМПУ: проводные соединения – сами по себе вещь отнюдь не дешевая, к тому же достаточно затратная по времени (да еще и сборщик устройства должен иметь достаточную квалификацию для соединения всех узлов дывайса в одно целое). Еще одним недостатком КМПУ является большое количество таких проводных соединений в сложных устройствах (где количество отдельных модулей переваливает за пару десятков), в которых сторонний монтажник может просто-напросто запутаться и как следствие – ощутимо накосячить при монтаже. Ну и третий существенный недостаток рассматриваемой концепции – для ускорения создания устройства необходимо иметь запас «стандартных» плат для изготовления модулей. Ну, или хотя бы располагать разводкой соответствующих ПП, что, учитывая теоретическое разнообразие различных модулей, просто, казалось бы, нереально.

Что касается плюсов КМПУ, то их немного – ровно один. Однако, при разработке штучных устройств этот плюс становится весьма жирным (особенно на фоне того, что минусы данной концепции можно уменьшить, о чем пойдет речь далее). К плюсу КМПУ я бы отнес сокращение времени на разработку принципиальной схемы и печатной платы устройства. В идеале, если схемы и ПП всех модулей, используемых в дывайсе, были разработаны заранее (например, для других, более ранних устройств), время на разработку платы будет равно нулю, а разработка принципиальной схемы сведется просто к изображению схемы структурной с перечислением используемых «стандартных» модулей (схемы на которые, повторюсь, уже были разработаны). Так что, как ни крути, а плюс и впрямь довольно жирный. Что же касается минусов, я бы хотел их рассмотреть с точки зрения изготовления штучного устройства, причем буду намеренно рассматривать в качестве разработчика именно радиолюбителя, ибо данная заметка адресована как раз любителям, а не профессионалам.

Почему ПП для устройств, заведомо пойдущих в массовое производство, обычно «вылизываются» особо тщательно? Почему особое внимание уделяется элементной базе и сокращению по-максимуму различных проводных соединений? Ответ очевиден – даже небольшое уменьшение себестоимости одного устройства при массовом выпуске выльется в нехеровый такой барыш, поскольку производимых единиц товара очень и очень много. А теперь посмотрим на первый минус КМПУ (дороговизна проводных соединений) с точки зрения разработчика штучного устройства. Припаять 30-40 проводов – дело нехитрое. Конечно, это несколько увеличит себестоимость устройства, но во-первых – обычно по отношению к общей стоимости единичного экземпляра это увеличение весьма несущественно (особенно учитывая то, что практически все детали для разрабатываемого дывайса будут закупаться в количестве 1-2 шт.). Здесь, кстати, следует еще учесть и то, что цена на штучные устройства формируется, мягко говоря, несколько иначе, чем на ширпотреб. А во-вторых, пусть монтаж «лишних» проводов и займет дополнительное время, но давайте это время сравним со временем разработки печатной платы всего устройства целиком. Есть мнение, что это даже и не смешно.

Что касается второго минуса (обилие межплатных связей и высокая вероятность того, что сторонний монтажник накосячит), то ключевое слово здесь – «сторонний». И если монтажом проводов будет заниматься именно разработчик (а в случае радиолюбителя это почти на 100% будет так), то обилие связей уже никого не запутает (т.к. сложно запутаться в том, что сам же и придумал), и поэтому вероятность косяков при монтаже сильно снижается. К тому же количество модулей в изделии можно несколько уменьшить, применяя «универсальные» модули (см. далее).

Также хотелось бы отметить, что выполнение проводных соединений между модулями существенно облегчает использование плоского шлейфа типа RC-xx с наколотыми на него разъемами типа IDC:



Дело в том, что для соединения данных разъемов со шлейфом не нужно паять провод́а. Достаточно просто обжать шлейф разъемом (например, в тисках). Про использование плоского шлейфа и разъемов IDC в модульных устройствах более подробно будет рассказано далее.

На мой взгляд, самый существенный минус КМПУ – третий (бесконечное разнообразие требуемых модулей). Ведь в общем случае и впрямь невозможно иметь в запасе хотя бы даже разводку плат на все случаи жизни. Однако, несколько спасает положение использование «универсальных» модулей (и в особенности – модулей микроконтроллера). Суть данного подхода заключается в следующем.

Давайте еще раз посмотрим на структурную схему нашего устройства с термодатчиками:



Как видно, оно насчитывает 9 модулей (отмечу, что именно различных модулей в устройстве не девять, а семь). Причем очевидно, что модули усилителей и модули управления силовым элементом (реле) в общем случае особого отношения непосредственно к МК не имеют (реле ведь, в принципе, может управляться не только микроконтроллером, но и, например, «тупой» логикой, р́авно как и выход усилителя совершенно необязательно должен быть нагружен на вход АЦП МК). А вот оставшиеся пять модулей имеют прямое отношение к микроконтроллеру (или какой-либо другой «умной» логике), причем три из них вообще весьма тесно связаны между собой.

Модуль МК – ну тут всё понятно: это и есть микроконтроллер с соответствующим обвесом. «Универсализировать» данный модуль можно только тем, что он сможет «аппаратно» поддерживать несколько семейств МК (например, когда в плату можно воткнуть как кирпичи из подсемейства AVR MegaX8, так и кирпичи из подсемейства AVR MegaX4). К слову – многие ARM’ы от STM уже имеют «врожденную» pin-to-pin совместимость внутри одного семейства, так что для них «универсальность» данного модуля получается автоматически. Модуль источника питания также напрямую связан с МК, поскольку обычно формирует напряжение питания в первую очередь именно для контроллера. Модуль преобразователя USB-UART без МК тоже особого смысла не имеет, ибо если нет МК, то куда же тогда подключать этот самый UART? Так что, вполне резонно будет разместить перечисленные три модуля на одной печатной плате. Это и есть принцип «универсальности», когда на одной ПП размещается несколько модулей разного типа и «железно» обеспечивается связь между ними.

Отмечу, что «универсальные» платы обладают некоторой избыточностью. К примеру, не во всех устройствах на базе микроконтроллера нужен преобразователь USB-UART. В этом случае элементы преобразователя, естественно, не впаиваются, но ведь место для них на плате никуда не девается, оно просто висит мертвым грузом. Однако, несмотря на это, использование «универсальных» модулей в большинстве случаев оказывается достаточно эффективным. Даже если не распаяна половина платы – стоимость пустующего места куда как ниже стоимости времени, которое было бы затрачено на разработку нового «оптимального» модуля, а время разработки при проектировании штучного устройства – чуть ли ни наиважнейший параметр.

И в заключение вводной части хотелось бы отметить, что при использовании КМПУ, конечно, нередко приходится разрабатывать небольшие специализированные модули, заточенные именно под проектируемое устройство. Но тут уж ничего не поделаешь – заранее предусмотреть все типы модулей, которые в будущем придется использовать, просто невозможно. Однако, как показывает практика – времени на разработку этих «дополнительных» модулей всё равно затрачивается существенно меньше, чем на разработку платы всего устройства «с нуля».

Продолжение следует.


Место для разного (сдается)

 

Наверх



Создание, "дизайн", содержание "сайта": podkassetnik
Для писем и газет: Почта России электрическая

Место для © (копирайта, понятно, нет, но ссылайтесь хотя бы на первоисточник)

Since 2013 и до наших дней