Русский
Русский
English
Статистика
Реклама

Производство и разработка электроники

Фриланс-разработка электроники. Что, Как и Зачем?

27.05.2021 12:14:32 | Автор: admin

Как все начиналось


Начну немного издалека, чтобы было понятно с чего все изначально началось.
Электронику я люблю с детства, родители военные и они же инженеры привили любовь не только к морзянке, но и к электронике. За что им отдельное спасибо.
После окончания ВУЗа, работаю по сей день ведущим инженером на одной из атомных станций. Работа веселая и ответственная, но дома надо чем-то занять вечера, не пиво же пить и лежать у телевизора. Для поддержания на должном уровне своей квалификации освоил Ардуино, Attiny, STM, ESP32. Вспомнил давно забытую Java и C++. Освоил заново Easyeda, Altium, Eagle. Свободно работаю во многих программах CAD моделирования. Теоретически я подготовлен хорошо, но нужна была практика в электронике и желательно по очень высоким стандартам.

Практика в разработке электроники


А где её ПРАКТИКУ искать если не во фрилансе?

Перечитав множество статей на сайтах посвященных фрилансу, сайтах по поиску работы, проведя анализ полезности выхлопа и совпадения целей и моих возможностей, мой выбор пал на сайт фрилансеров Upwork.com
Как с этим сайтом работать рассказывать не буду, есть много статей хабровчан которые это уже сделали самым, что ни наесть качественным и показательным способом, например вот.

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

Свой первый заказ на разработку электроники я получил из США, нужно было разработать максимально возможную миниатюрную плату клавиатуры 3*4. Работа была приятная и полезная, т.к. заказчик очень доброжелателен и готов объяснить, что ему нужно хоть сто раз подряд, даже если вы говорите заикаясь и только с Гугл переводчиком.
При заказе печатных плат со сборкой на Jlcpcb.com у заказчика возникли проблемы, т.к. элементы оказались очень маленькими. Заказчик быстро сориентировался и нашел того изготовителя которых смог сделать печатную плату со сборкой. Имея положительный опыт первой выполненной работы, последовали и другие работы. Очень быстро мы с моим первым Заказчиком нашли общий язык и понимали уже друг друга с полуслова.

Вот какие клавиатуры получились в конечном варианте:


Хорошо выполненные работы очень положительно сказались на следующем проекте. Заказчик порекомендовал меня своему партнеру в качестве исполнителя следующей работы.

Работа по срокам длительная, более 6 месяцев.

Задача: с нуля создать специфическое устройство под требования заказчика. Устройство батарейного типа (литиевый аккумулятор), с зарядкой и стабилизатором на борту. Микроконтроллер желательно с WiFi, Bluetooth и BLE. Управление светодиодами и вибромотором. Плюс к этому устройство должно уметь считывать RFID метки по стандарту ISO 15693 на частоте соответственно 13,56 МГц.

И все это нужно расположить на плате размерами не более 70 на 30 мм. По высоте ограничение 10 мм вместе с аккумулятором. По токовым нагрузкам, устройство должно работать минимум 10 часов без подзарядки, т.е. все лишнее должно быть выключено. И, пожалуй, самое главное и сложное условие Заказчика устройство должно пройти процедуру сертификации FCC Федеральная комиссия по связи США, т.к. устройство предполагается распространять в США, у них с этим очень строго.
Процедура не дешевая, поэтому все компоненты нужно максимально совместить не только в различных диапазонах, но и при необходимости провести экранирование слишком шумящих элементов.
Скурив множество манов на множество чипов со встроенным и отдельными элементами для данного устройства, по контроллеру выбор пал на ESP32-WROOM умеет работать с блютузом в режиме экономии (BLE), 2 ядра, портирован на FREERTOS, SPI, I2C и много чего еще в наличии и на борту плюс ко всему сертифицирован FCC. RFID читалка PN5180 от NXP, неприхотливая, рабочая лошадка, при наличии векторного анализатора вполне успешно настраивается под любую антенну, достаточно полное описание внутренностей, портирован на С, много примеров на сайте NXP (правда под LPC контроллеры) и самое главное пришлось Заказчику покупать их в США, т.к. с последней прошивкой PN5180 в Россию не поставляются, от слова совсем.

Программирование велось под MS Visual Studio с плагинами VMicro под ESP32, операционка FREERTOS (т.к. работает в многозадачной режиме). Чтение RFID, управление светодиодами и вибромотором предполагало передачу данных по блютузу на Android и Iphone нужна была среда для разработки приложения выбор пал на x.thunkable.com что полностью себя оправдало.

Первая стадия проекта включала в себя проработку схемных решений, опробование различных вариантов подключения, распределения ресурсов, обоснованного отказа от использования того или иного чипа или решения. Еще до заключения контракта мы больше недели по вечерам общались и обсуждали, это было незабываемо. Заказчик по нашему контракту заказал всю элементную базу для фазы проработки, тестирования и отладки. Пока все путешествовало через полмира из США в Россию, я сидел за манами:


и рисовал начальный вариант схемы в Easyeda.com


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

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


Корпус QFN EP-24 Паяется отлично, главное все правильно сделать.

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

А не развести ли нам печатную плату?


Разводка печатной платы под устройство отдельная история. От автоматической разводки отказался даже после применения правил. При разводке каждый производитель электроники печатных плат, закладывает определенные допуски на расстояния между дорожками, между отверстиями и много еще разных иногда малопонятных параметров.

Но лучше человеческого мозга, ничто не может развести печатную плату, главное терпение и обязательно сохранять промежуточные варианты.


Тот, кто пользуется Sprint layout меня поймет. Когда сделал лучше, чем автомат. Мозг тренируется и ликует, вы радуетесь. Значит ваше умение разводить печатные платы растет. Интереснейшая головоломка, зависнуть можно на неделю, а то и больше. Короче, разводка печатной платы это просто удовольствие.

Easyeda.com постоянно обновляет свой функционал, что хорошо, но есть недостатки (проксирование входа под оперу так и не исправили или это только у меня так), поэтому приходится работать в нем и делать бэкапы, что бы ничего не потерять. Оффлайн версия редактора не может жить без инета, компоненты все подтягиваются только через инет и не хранятся на компе локально.


Вот так Easyeda показывает 3D модель печатной платы.

Заказ печатных плат для устройства 4 слойные с повышенной точностью совместимости по слоям за счет применения материала стеклотекстолита FR-4 TG-155.



Компонентная база наше всё


Отдельно скажу о компонентах, в манах приводятся компоненты которые рекомендует производитель, лучше придерживаться рекомендаций или брать лучше.
Мне повезло, я долгое время работаю по компонентам с Electronshik.ru/
База огромная, цены адекватные если не ниже. 95 процентов всех элементов, доступно немедленно, т.е. после оплаты заказа, отправка сегодня-завтра. Доставка DHL до двери 280 рублей (До моей двери именно так). Меня это очень поразило в первые разы. Приятно работать с такой компанией, это вам не чипдип.

Так же некоторые элементы заказывались у партнера Easyeda Lcsc.com при заказе плат, можно прикрепить к заказу и элементы, купленные у партнера. Экономия на доставке.

Пайка, всякая и разная


На эту тему написано и снято видео столько что можно библиотеку создать. Корпуса элементов маленькие от 0402 до 0805. Плата тестовая была зафлюсована, залужена, потом сама пайка. Нюансы пайки на ютьюбе. И да, я паяю под микроскопом.



Первое включение или порядок сборки


Порядок пайки у меня такой:

  1. USB разъем
  2. микропереключатель
  3. CP2104 с обвязкой
  4. Подача питания от блока питания
  5. определение компьютером нового USB устройства
  6. Пайка чипа зарядки литиевой батареи и стабилизатора с обвязкой
  7. Проверка в связке CP2104, зарядки и стабилизатора


На очереди ESP32. Нюанс с пайкой корпуса на 39 ножке, ребят не ленитесь его паять, так написано в мане, не зря же вы его разводили на плате. Аккуратненько запаиваем как по учебнику все ножки ESP32 и его обвязку. Проверяем работу зарядки, стабилизатора и ESP32.

Первая прошивка контроллера тестовой прошивкой проверка WiFi и блютуз. но не происходит сброса перед прошивкой. Забыл на плате, схему сброса развести (в последней версии исправлено этот недочет и еще парочку не критичных), припаялся прямо к ESP32, прошил успешно.

Остается самое сложное по железу, пайка PN5180 и его обвязки под радиочастотную часть. Частота небольшая 13.56МГц, но требования к аккуратности пайки еще никто не отменял. Все должно быть красиво и радовать глаз.

До пайки PN5180 сделал дополнительные расчеты в RFSim99, а также в фирменной программе NXP NFC Antenna Tool, чтобы точнее попасть по параметрам согласования антенны и радиочастотной части PN5180.

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

Все запаяно, несколько раз проверено, включение микропереключателя, определение как USB устройства, компиляция теста для проверки PN5180 попытка заливки прошивки. Заливка прошивки. Чтение данных с RFID NFC карточки. Ура с железом закончили, все работает, как и планировалось.

Программная часть, последняя


Написание программной части это как порыв страсти, как дзен. Садишься за клавиатуру и по заранее написанному алгоритму, пишешь код. Строчка за строчкой, программа обрастает задачами, функциями, процедурами, тестовыми модулями.
Весь код писался под FREERTOS из-за его гибкости. Каждой задаче таске свое время будет выделено. Планировщик все сделает для этого. Под чистый Ардуино-код это сделать сложно, т.к. есть основная задача которая крутится в цикле loop не сможет управлять периферией, слушать окружение антенны NFC и обмениваться данными по блютузу. Вернее так, можно, но не так красиво и изящно, как под FREERTOS.
Устройство закончено, остались нюансы по прошивке для уточнения под требования Заказчика.

В заключении, своего повествования хочу сказать, что разработка электроники даже на фрилансе это реальность. Это возможно и это нужно. Ведь в мире столько нового и интересного. И заметьте мне всего 47 лет :) Жизнь движение.

P.S. Если у кого-то возникли вопросы пишите в комментариях.


Подробнее..

Перевод Создание часов из обычных микросхем на макетной плате

09.06.2021 16:12:52 | Автор: admin
В этом материале речь пойдёт о том, как собрать часы из обычных микросхем.

Схема часов (оригинал)

Для этого проекта вам понадобятся следующие компоненты:
  • Семисегментные индикаторы 5611AS 6 штук.
  • Микросхема CD4026 6 штук.
  • Микросхема CD4060 1 штука.
  • Микросхема SN7476 1 штука.
  • Микросхема SN7411 1 штука.
  • Нажимная кнопка 2 штуки.
  • Резисторы на 220 Ом 42 штуки.
  • Резисторы на 10 кОм 2 штуки.
  • Резистор на 2,2 кОм 1 штука.
  • Резистор на 1 МОм 1 штука.
  • Диоды 1N4007 2 штуки.
  • Керамический конденсатор на 100 нФ 1 штука.
  • Керамический конденсатор на 33 пФ 1 штука.
  • Подстроечный конденсатор на 5-45 пФ 1 штука.
  • Кварцевый резонатор на 32,768 кГц 1 штука.
  • Макетные платы 3 штуки.
  • Одножильный сплошной провод, 22AWG.


Шаг 1. Подготовка макетных плат


Три макетные платы перед началом работы

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

Две обрезанные макетные платы

После этого все три платы нужно сложить получится одна большая макетная плата. Соединим линии питании всех трёх плат. Это позволит снабдить всю конструкцию энергией от единственного источника питания.

Три макетные платы, линии питания которых объединены

Шаг 2. Подключение 7-сегментных индикаторов и резисторов


В этом проекте используется 6 семисегментных индикаторов с общим катодом (5611AS). Катод надо подключить к верхней линии питания, используя небольшие отрезки проводов.

Подключение катодов семисегментных индикаторов к линии питания

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

R = (Vs Vled) / Iled.

R сопротивление.

Vs напряжение, получаемое с источника питания (5В в нашем случае).

Vled рабочее напряжение семисегментного индикатора (1,8В это значение взято из документации).

Iled необходимая сила тока (20 мА).

R = (5 1.8) / 0.02 = 160 Ом

Мы воспользуемся резисторами с более высоким сопротивлением, а именно резисторами на 220 Ом, которые легче найти в продаже.

Подключите резисторы к плате так, как показано на следующих снимках. Проследите за тем, чтобы их ножки не соприкасались бы друг с другом.

Резисторы, подключённые к индикаторам

Резисторы, подключённые к индикаторам

Шаг 3. Подключение микросхем CD4026B


Микросхема CD4026 представляет собой десятичный счётчик с семисегментным дешифратором. Каждая такая микросхема может управлять лишь одним семисегментным индикатором. Поэтому для того чтобы выводить на двух индикаторах двузначные десятичные числа нам надо подключить ножку Carry Out микросхемы, отвечающей за управление индикатором, выводящим единицы, к ножке Clock микросхемы, которая отвечает за вывод десятков. То есть, в соответствии с документацией, ножку 5 к ножке 1. В частности, так надо соединить микросхемы 1 и 2, микросхемы 3 и 4, микросхемы 5 и 6.

Другие ножки микросхем подключают следующим образом:

Подключение к линиям питания:

  • Ножка 2 земля.
  • Ножка 8 земля.
  • Ножка 15 земля (только на микросхемах 1 и 3).
  • Ножка 3 5В.
  • Ножка 16 5В

Подключение к индикаторам:

  • Сегмент A ножка 10.
  • Сегмент B ножка 12.
  • Сегмент C ножка 13.
  • Сегмент D ножка 9.
  • Сегмент E ножка 11.
  • Сегмент F ножка 6.
  • Сегмент G ножка 7.

На следующих фотографиях показан процесс поэтапного подключения микросхем к линиям питания, друг к другу и к семисегментным индикаторам.

Подключение микросхем CD4026B

Подключение микросхем CD4026B

Подключение микросхем CD4026B

Подключение микросхем CD4026B

Шаг 4. Организация подачи тактового сигнала необходимой частоты


Мы, чтобы получить тактовый сигнал частотой 1 Гц, воспользуемся кварцевым резонатором на 32,768 КГц. Разделив эту частоту 15 раз на 2 мы получим нужные 1 Гц.

Частоту легко можно разделить на 2, воспользовавшись двоичным счётчиком вроде микросхемы CD4060. Она позволит, 14 раз разделив частоту на 2, получить на выходе 2 Гц. Эти 2 Гц можно ещё раз разделить на 2, используя микросхему SN7476.

Микросхема SN7476 имеет два JK-триггера. Если посмотреть в документацию к ней, то окажется, что подав на её входы PRE, CLR, J и K уровень логической единицы, мы можем, при каждом тактовом импульсе, поступающем на CLK, менять состояние выхода на противоположное.

Подавая на SN7476 тактовый сигнал частотой 2 Гц, мы можем поделить его частоту на 2 и получить сигнал частотой в 1 Гц. А его мы будем использовать в качестве тактового сигнала для первой микросхемы CD4026.

Частоту можно настроить с помощью подстроечного конденсатора, доведя её до значения 32,768 КГц.

Установка микросхем CD4060 и SN7476

Установка дополнительных элементов, необходимых для получения нужной частоты

Шаг 5. Создание системы отсчёта часов, минут и секунд


Для того чтобы сбрасывать в 0 количество отсчитанных системой секунд и минут тогда, когда они доходят до 60, и для сброса количества отсчитанных часов на отметке 24, нам понадобится микросхема SN7411.

Она включает в себя три логических элемента 3И, то есть соответствующий выход будет переведён в высокое состояние только в том случае, если все три входа тоже будут пребывать в высоком состоянии.

Для работы с секундами и минутами можно использовать в качестве входов то, что подаётся на сегменты E F G при выводе десятков, а выход микросхемы подключить к контакту, ответственному за сброс счётчика десятков.

В случае с часами можно, в качестве входа, использовать то, что подаётся на сегменты F G единиц, и то, что подаётся на сегмент G десятков. А выход будет использоваться и для сброса счётчика десятков, и для сброса счётчика единиц.

Благодаря этому счётчики секунд и минут будут сбрасываться тогда, когда они доходят до 60, а счётчик часов будет сбрасываться тогда, когда он дойдёт до 24.

Микросхема SN7411

Подключение SN7411 к счётчикам

Подключение SN7411 к счётчикам

Подключение SN7411 к счётчикам

Шаг 6. Подключение кнопок


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

Одни стороны кнопок подключены к линии сигнала 2 Гц. Это позволяет, удерживая кнопки, увеличивать число минут и часов. Другие стороны кнопок подключены к входу Clock микросхем CD4026. Команда сброса часов и минут реализована путём подключения к входам Clock соответствующих микросхем с использованием диода.

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

Подключение кнопок

Подключение кнопок

Подключение кнопок

Шаг 7. Подключение питания


А теперь всё готово к тому, чтобы подключить к часам источник питания на 5В и, пользуясь кнопками, настроить часы.

Готовые часы

Хотите сделать часы, похожие на те, что описаны в этом материале?


Подробнее..

Перевод SB181 логический вычислитель на базе АЛУ 74LS181

10.06.2021 16:07:13 | Автор: admin


Уже какое-то время в моей мастерской дожидаются своего проекта пара микросхем АЛУ 74LS181. Но так как мысль о создании на их базе целого процессора была несколько пугающей, я решил задействовать эти чипы в роли логического вычислителя: своеобразного 8-битного калькулятора, который получает шестнадцатеричные входные данные и отображает результаты различных логических операций в двоичном и hex-форматах. Будучи собранным исключительно на базе логики микросхем 74-й серии без какого-либо микроконтроллера или ЦПУ, такое устройство оказывается удобным помощником в 8-битном программировании.

Описание схемы


Микросхема шифратора 74C923 на 20 клавиш (хотя подключена она только к 16) получает пользовательский ввод. В зависимости от положения движкового переключателя вводимое число сохраняется в регистре А, регистре В или функциональном регистре. Переключатель просто перенаправляет стробирующий импульс Data Available из 74С923 на вход синхронизации соответствующего регистра. Резистор подтягивает входы синхронизации каждого регистра на высокий уровень, исключая их произвольное срабатывание в пассивном состоянии. Этот импульс срабатывает до появления на выходе фактических данных, поэтому я просто инвертировал данный сигнал через элемент И-НЕ, чтобы регистры защелкивались на заднем фронте. В противном случае защелки всегда сохраняли бы предыдущую введенную цифру.


Небрежно проложенные провода

Регистры А и В являются 8-битными защелками, использующими 74HC273. Каждое нажатие кнопки сдвигает 4 нижних бита регистра в 4 верхних, и в то же время значение кнопки загружается в нижние 4. Это позволяет вводить 2 шестнадцатеричные цифры одну за другой, как это делается на калькуляторе. Затем содержимое этих двух регистров передается на входы операндов А и В АЛУ 74LS181. Эти сохраненные значения регистров также отправляются на дисплейную плату, где hex-значение отображается двумя TIL311, а двоичное при помощи светодиодной гистограммы.

Функциональный регистр это 4-битный 74HC175. Несмотря на то, что АЛУ 74LS181 поддерживает множество функций, практическое применение имеет лишь их ограниченное число. Поэтому в данном случае я выбрал те же 16 функций, что и agp.cooper. Отображение вывода кнопочной панели 0-15 в разные значения, требуемые на входах S-функции микросхемы 74LS181, реализуется с помощью EEPROM. Это также означает, что можно выбирать различные функции или их порядок на кнопочной панели просто перепрограммируя ее. То есть я могу приблизительно сгруппировать функции каждой кнопки, расположив простые внизу, а более сложные сверху. В таком случае EEPROM просто обработает этот перенос.

4-битный вывод функционального регистра отправляется обратно на плату клавишного блока. Затем дешифратор 74HC4514, подключенный к светодиодам в каждом переключателе блока клавиш, подсвечивает текущую выбранную функцию.


Логическая плата с тремя регистрами-защелками, EEPROM и двойной 74LS181

Другая кнопка подключена к схеме защелки, основанной на логическом элементе И-НЕ. Это позволяет устанавливать входной сигнал переноса для нижнего 74LS181. Ширина каждого из этих двух чипов АЛУ составляет всего 4 бита, но подключение выхода переноса нижнего к входу верхнего дает уже 8-битное АЛУ. Здесь мне не нужно озадачиваться схемой ускоренного переноса, поскольку это полностью статичная настройка, где не требуется отслеживать синхронизацию или другие тайминги.

Затем сигналы выхода F АЛУ отправляются на плату дисплея, где снова отображаются в hex- и двоичном форматах. Дополнительный светодиод показывает, был ли сгенерирован верхним 74LS181 выход переноса.


Дисплейная плата

Сборка


SB181 состоит из 3 отдельных печатных плат. Это позволило добиться относительно компактного размера корпуса, а также вписаться в стоимость по $2 за JLCPCB.

На плате панели клавиш находятся все кнопки ввода, а также движковый переключатель регистров. Я использовал свичи с подсветкой, купленные на eBay много лет назад, так что производителя или партномер уже не вспомню. Благодаря прозрачности колпачков я смог прямо на кнопки наклеить бумажные этикетки с hex-числом, его двоичным эквивалентом, а также выполняемой функцией. Кнопка, представляющая выбранную в данный момент функцию, подсвечивается постоянно, так что удерживать в памяти ее не нужно.

Используя 3-позиционный движковый переключатель, те же 16 кнопок можно задействовать для ввода различных операндов или применяемой к этим операндам функции.

Основная логическая плата содержит всего 3 регистра-защелки, функциональную EEPROM и пару АЛУ 74LS181. Вывод этих компонентов передается на плату дисплея через шлейф.
Дисплей постоянно показывает значения двух операндов в регистрах А и В, а также вывод текущей функции АЛУ.

Микросхемы TIL311 представляют красивый шестнадцатеричный дисплей. Расстроила меня лишь их стоимость, а также характеристики энергопотребления, которые не позволили запитать устройство по USB. В результате я использовал стандартную схему импульсного источника питания, которая получает 12В при 750мА и понижает их до 5В. Гистограммные дисплеи тоже отлично справляются с отображением двоичных данных, для чего задействуют 8 из 10 доступных светодиодов. Один из оставшихся при этом используется для индикации выхода переноса.

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

В своей схеме я смешал оси X и Y шифратора клавиш, поэтому для обеспечения правильного расположения чисел пришлось проложить несколько проводов. Я также забыл, что выход переноса 74LS181 активируется низким уровнем сигнала, в связи с чем пришлось сделать перенаправление, пробросив на плате отдельный провод.

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


Внутренняя компоновка плат. Импульсный источник питания скрыт за угловым алюминиевым сегментом, расположенным справа

Схемы


Плата клавишного блока
Логическая плата
Дисплейная плата


Подробнее..

Нахлобучиваем домофонные ключи iButton с помощью Flipper Zero

09.06.2021 22:15:01 | Автор: admin


Flipper Zero проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14]

iButton это общее название для формата электронного ключа в форм-факторе металлической таблетки. Еще его называют Dallas Touch Memory. Часто его ошибочно называют магнитным ключом, но это неправильно, ничего магнитного в нем нет. Внутри iButton полноценный микрочип, работающий по цифровому протоколу.
В статье разберемся что такое формат ключей iButton от физического устройства до протоколов, а также трюки, которые можно с ним делать при помощи Flipper Zero.

Что такое iButton


Название iButton это продукт фирмы Dallas Semiconductor, в 1991 году выпустившей на рынок ключ под торговой маркой Touch Memory, потом замененной на iButton.


Схематическое устройство ключа iButton: в центре корпуса контакт плюс, потом пластиковая изоляция, и внешняя часть корпуса это минус

Обычно под словом iButton принято понимать именно физический формфактор ключа и считывателя круглая таблетка с двумя контактами. Существуют разные вариации оправ самой таблетки. Кроме привычного пластикового держателя с отверстием бывают варианты в виде колец, кулонов и т.д.

Внутреннее устройство iButton: внутри металлической оболочки находится микрочип

Считыватель


При поднесении ключа к считывателю, контакты соприкасаются и на ключ подается питание. Далее осуществляется передача ID ключа. Иногда ключ не считывается сразу, потому что внешние контуры ключа и считывателя не соприкоснулись. В этом случае нужно упереть ключ в одну из стенок считывателя.

Касание контактов iButton ключа с домофонным считывателем

В формфакторе таблетки iButton бывают не только простые ключи с ID, но и климатические датчики, устройства для хранения криптографических ключей со своей батарейкой, часами и прочими наворотами. Эти устройства выглядят также как ключи, но ими не являются.

Как устроен iButton во Flipper Zero


Разработка контактной площадки iButton во Flipper Zero это огромная боль. Дело в том, что не существует готовых контактных площадок для одновременного чтения и эмуляции. Если бы мы просто взяли существующие модули, из флиппера бы торчала огромная металлическая кнопка, и рядом такая же огромная площадка для считывания. Это бы многократно увеличило размер устройства.

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


Прототипы конструкций контактной площадки iButton во Flipper Zero, которые мы печатали на 3D-принтере в процессе разработки

Самая большая сложность конструкции контактной площадки в эмуляции, когда флиппер сам выступает ключом и его нужно прикладывать к домофону. Каждый производитель изобретает собственную конструкцию считывателя, из-за этого постоянно находятся домофоны в которых конструкция не работает: пины просто не дотягиваются либо до центрального контакта Data+, либо до бокового контакта GND.

Левая часть контактной площадки используется для считывания и записи ключей, правая для эмуляции. Центральный пин GND общий для обоих режимов.

Финальная конструкция получилась компромиссной: 100% ключей считывается успешно, примерно 80% считывателей успешно работают с эмуляцией. В оставшихся 20% считывателей приходится корячиться, чтобы контакт достал до нужных стенок. Для этих редких случаев можно использовать внешние контакты GPIO, на которые выведены контакты ibutton: подключиться макетными проводами и ткнуть их в считыватель.

Режим считывателя


В режиме считывателя флиппер ожидает поднесения ключа, при этом готов прожевать сразу три типа ключей: Dallas, Cyfral, Metakom. Флиппер сам определит тип ключа при чтении. Название протокола ключа отобразится на экране над ID номером.

Чтение ключа ibutton формата Dallas. Прочитанный ключ сохраняется на SD-карту.

Для считывания ключа необходимо зайти в меню iButton > Read и приложить читаемый к контактной площадке. Считанный ключ можно сразу эмулировать, записать на болванку, либо сохранить на SD-карту. Хоть контактная площадка находится на задней стороне от экрана, можно быстро наловчиться читать ключи не разворачивая флиппер, просто на ощупь.

В режиме чтения iButton используются два правых контакта Flipper Zero

Режим эмуляции iButton


В режиме эмуляции ключа, Флиппер сам выступает ключом и программно эмулирует ключ iButton из памяти. ID ключа для эмуляции во Flipper Zero можно добавить двумя способами:

  • Считать существующий ключ сохранить ID ключа на SD-карту и выбирать нужный ключ в любой момент
  • Вручную ввести ID ключа даже если в руках нет нужного ключа, но его ID известен, его можно ввести вручную. Так, например, можно сфотографировать ID ключа и отправить его другу с флиппером, без необходимости передавать физический ключ


Для запуска эмуляции ключа нужно зайти в меню iButton > Saved, выбрать нужный ключ и запустить Emulate. На экране появится надпись с ID ключа, который эмулируется. После этого можно подносить Флиппер к считывателю. Важно помнить, что в этом режиме используются другие пины на контактной площадке Флиппера.

В режиме эмуляции Флиппер эмулирует конкретный ID и протокол ключа, так что его можно подносить только к конкретному домофону, который знает этот ключ. Перебирать сразу несколько ключей в этом режиме нельзя, так как нельзя однозначно убедиться, прочитал ли домофон наш ключ, и нельзя знать задержку в домофоне, между ошибкой чтения. Поэтому для дома, офиса, дачи, подвала нужно будет каждый раз выбирать конкретный ключ из меню.

В режиме эмуляции ключа iButton Флиппер нужно подносить к домофону как ключ. При этом нужно убедиться, что оба контакта коснулись контактной площадки считывателя.

iButton через внешний GPIO


Контакт iButton на нижней крышке также выведен на гребенку GPIO. Это можно пользовать для подключения к нестандартным считывателям, ключам, любым устройствам работающим по протоколу 1-Wire вроде датчиков. Мы используем эти контакты для анализа сигналов через осциллограф. При этом, этот контакт не совсем честный GPIO, потому что имеет подтяжу к 5V.


Контакты iButton соединены с гребенкой GPIO. Порт iButton работает в режиме open-drain и подтянут к напряжению 5 В через резистор 1 кОм.

Протокол 1-Wire



В протоколе 1-Wire всегда есть главное устройство Master и ведомые Slave

Ключи Dallas обмениваются данными по протоколу 1-wire. Всего один контакт на передачу данных(!!) в обе стороны, от мастера к слейву и наоборот. Протокол 1-wire работает по модели Master-Slave. В этой топологии устройство Master всегда инициирует общение, а Slave следует его указаниям.

При контакте ключа (Slave) с домофоном (Master) чип внутри ключа включается, получив питание от домофона и происходит инициализация ключа, после чего домофон запрашивает ID ключа. Далее мы разберем подробно этот процесс.

Флиппер умеет работать в режимах Master и Slave. В режиме чтения ключа Флиппер выступает в роли считывателя, то есть работает как Master. А в режиме эмуляции ключа, флиппер прикидывается ключом, то есть работает в режиме Slave.


При чтении ключа Флиппер выступает мастером, а при эмуляции с домофоном работает как slave

Формат данных в ключе Dallas



Домофон считывает из iButton 8 байт (64 бита) информации, чтобы решить, открывать дверь или нет.

Структура данных этих 8 байт следующая:

  • 1 байт код семейства (Family Code), для iButton он всегда равен 0x01
  • 6 байт серийный номер ключа
  • 1 байт контрольная сумма СRC




Код семейства у ключей Dallas всегда 0x01. Если у вас этот код отличается, то скорее всего, это не ключ от домофона.

Серийный номер в некоторых случаях выгравирован на ключе, но может:

  • Не содержать все 8 байт
  • Иметь последовательность символов задом-наперед
  • Иметь начало в непонятном месте


На оригинальном ключе iButton выгравирован ID, но его формат записи немного отличается от представления Флиппере: сперва идет family code, потом инвертированный серийный номер, потом контрольная сумма

На картинке выше показан неочевидный пример гравировки ID на оригинальном ключе iButton. В нем читать байты нужно справа налево, контрольная сумма написана слева, а family code справа.

Ошибки чтения



При некорректном чтении ключа Flipper Zero сообщает об ошибках. Возможные ошибки:
  • Некорректная контрольная сумма ошибка в CRC
  • Неправильный код семейства когда family code отключается от 0x01, Флиппер ругается что это не ключ iButton.


Возможные ошибки при чтении ключей Dallas: неправильный байт CRC CRC ERROR; байт Family-code не равен 0x01 THIS IS NOT A KEY.

Ввод ID вручную


Если ID ключа известен, его можно ввести во Флиппер вручную. Это удобно когда самого физического ключа нет, например можно передать нужны байты просто в чате или скинув другу фото. На видео показан пример создания нового ключа Cyfral из 2 байт. Новый сгенерированный ключ сохраняется на SD-карту.


Создание нового ключа вручную с помощью ручного ввода айдишника

При создании ключа нужно выбрать его тип: Dallas, Cyfral или Metakom. От этого будет зависеть длина ID и протокол, используемый при эмуляции. После ввода ID Флиппер предложит ввести имя нового ключа, либо использовать сгенерированное.

Запись ключей 1-Wire Dallas


Существуют ключи Dallas, которые можно записать и которые нельзя. Популярные перезаписываемые iButton болванки: RW1990, TM2004, TM01C. Процесс записи имеет свои нюансы, разберем их.

Запись болванки может требовать повышенного напряжения например, для записи менее популярной RW2000 требуется напряжение 8 В (правда это Cyfral, но смысл понятен).

Некоторые болванки требуют финалзиации после финализации ключ больше не может быть перезаписан. Этим пользуются некоторые домофоны, пробуя перезаписать ключ перед считыванием, чтобы избежать поддельных ключей. Обычно для финализации используют импульс напряжения и специальную команду, которая может отличаться для разных ключей.

Существуют болванки, которые могут подходить ко всем типам ключей(Dallas/Cyfral/Metakom).

Запишем ключ домофона на болванку.



Чтобы записать ключ нужно из раздела iButton зайти в Saved и выбрать ключ. После чего перейти в раздел Write и прислонить перезаписываемый ключ к контактной площадке.

Русские народные ключи Cyfral, Metakom




Протоколы Metakom и Cyfral отечественные русские изобретения. Не популярны в мире.

В отличие от ключей Dallas, они работают не по напряжению, а по току. Это менее распространенные и более дорогие ключи. Они очень чувствительны к параметрам ключа (частота, сила тока, амплитуда сигнала и пр.), из-за чего изготовление дубликатов может стать капризным процессом.

Cyfral и Metakom не принимают никакие команды. При подаче питания на ключ, он сразу начинает бесконечно посылать ID за счет изменения сопротивления. Таким образом, логические уровни определяются по сопротивлению ключа. По документации ключей условно принимается, что информационные слова кода выдаются начиная с младшего бита.
В интернете есть документация на данные ключи;)

Cyfral




Логические уровни в Cyfral, так же как и в Dallas имеют временные ограничения: если сопротивление остается низким около 50 мкс это логический 0, если 100 мкс это логическая 1.

Формат передаваемых данных специфичен.
Cyfral циклично отправляет 9 нибблов (1 ниббл = 4 бита): 1 стартовый и 8 ID. Нибл может иметь всего 4 значения для ID и одно значение для стартового слова. Все остальные записи некошерные.



В итоге ID записывается в 2 байта (Всего 8 нибблов ID. 4 ниббла = 16 состояний = 1 байт информации).

Бывает, что домофоны Cyfral занимаются проверкой ключа, подавая некорректные данные.
У Cyfral нет никаких контрольных сумм. Хочешь убедиться прочитай ключ еще раз, а хочешь пять. Так как сигнал аналоговый, то чтение сигнала требует наличия АЦП или компаратора. Проще всего использовать компаратор, выход которого является низким или высоким уровнем напряжения.
С эмулированием ключа на практике проблем не возникает. Замыкания на землю (отсутствие сопротивления) вполне достаточно, чтобы ключ выдать логический 0.

Metakom




Ключ Metakom посылает 4 байта, где каждый байт заканчивается битом четности.
Metakom имеет 3 примитива передачи:
Синхронизирующий бит;
Бит 0;
Бит 1;

Структура посылки выглядит так:
Синхронизирующий бит;
4 байта информации;
+ 7 бит данных;
+ 1 бит четности.

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

Смотрим на 1-Wire через осциллограф




Линия передачи устроена по принципу монтажного И и может иметь одно из двух состояний: логический 0 и логическая 1.
Устройства (ключи и домофон) имеют внутренние транзисторы, которые в нужное время подтягивают линию к нулю. Вся линия передачи переходит в состояние логического 0, если любое из устройств перевело ее в нуль, т.е. если домофон перетянул линию в нуль ключ об этом узнает, и наоборот.

С помощью перетяжек напряжения и удержания уровней 1-wire имеет 4 примитива для работы на шине:
  • импульс сброса (RESET);
  • импульс присутствия (PRESENCE);
  • отправка бита 0;
  • отправка бита 1 и она же по совместительству чтение бита.



Чтение ключа Dallas на Flipper. Состоит из команд Search ROM и Read ROM. Каждая команда имеет Reset sequence.

Чтение ключа на Flipper Zero устроено так: поиском проверяется наличие ключа, а затем происходит чтение ID. Это сделано, чтобы избежать случайных совпадений с другими ключами Cyfral/Metakom, тайминги которых могут случайно совпасть с требуемыми.

На осциллограмме виден длинный сигнал из 2 команд, где каждая состоит из:
  • Инициализации команды:
    • Импульс сброса;
    • Импульс присутствия;

  • Передачи команды для Slave;
  • Ответа Slave на принятую команду.


Разберем более детально каждый из пунктов.


Reset sequence инициализация команды. Состоит из Импульса Сброса и Импульса Присутствия. Импульс Сброса уровень опускает Master. Импульс Присутствия уровень опускает Slave.

Инициализация (reset sequence) состоит из двух импульсов:
  1. Импульс Сброса (Reset pulse);
  2. Импульса Присутствия (Presence pulse).

Для Импульса Сброса линию к земле подтягивает Master (домофон).
Для Импульса Присутствия линию к земле подтягивает Slave (ключ).

Некоторые домофоны не подают импульс сброса, так как отсутствие контакта между ключом и домофоном и есть сигнал сброса.


Команда чтения ID с ответом. Тайм-слот бита информации состоит из 2 участков: синхронизации и значения бита. В КОМАНДАХ за уровни напряжения на обоих участках отвечает Master. В ОТВЕТЕ на команду чтения за синхронизацию отвечает Master, за значение бита отвечает Slave.

После инициализации команды происходит обмен информацией:
  • отправка команды для Slave;
  • ответ Slave на команду.


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

Важно, что все сигналы имеют конкретные временные ограничения, которые обязательно должны быть соблюдены! Бывает, что производители домофонов упарываются, и соблюдают какие-то свои временные задержки, но на Руси дураков не бьют, и мы их трогать не станем.
Еще у iButton есть режим Overdrive, в котором временные задержки сокращены, из-за чего передача информации происходит быстрее. Есть вероятность, что в дикой природе существуют домофоны, работающие в этом режиме Но на практике они не встречались.

Стандартные команды 1-wire ключей Dallas


Для iButton характерны команды размером 1 байт (8 бит).
Зачастую домофон использует команды поиска и чтения ID (Search ROM и Read ROM).

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

Стандартные команды iButton для Regular режима следующие:



Бонус про домофонные ключи

Бонус про домофонные ключи


Почему старые домофоны это плохо?


Некоторые старинные домофоны с ключами Dallas имеют в памяти базу ID ключей, заполненную не полностью. Незаполненные поля имеют некоторое значение, иногда соответствующее всем нулям (0x00) или всем единицам (0xFF). Для проверки домофона на дремучесть создаются два ключа: один со всеми нулями, другой со всеми единицами.
Эти ключи содержат неправильный код семейства (не 0x01) и неправильный CRC (вообще не контрольная сумма)!!! Да, бывают и такие исключения.

Как почтальоны разносят по подъездам рекламу?


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

Что такое мастер ключ?


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

Играясь заблокировали домофон?


Такой вариант возможен, когда в домофоне есть блокирующий ключ. Он блокирует домофон для всех остальных ключей, пока не снимут блокировку с помощью мастер-ключа.

Какие болванки нам известны


В ходе работы с iButton мы зафиксировали некоторые известные нам болванки ключей. Вот они, на здоровье!




Наши соцсети


Все обновления по проекту первым делом публикуются в Telegeram-канале @zhovner_hub
Подробнее..

Перевод Pimoroni Pico Wireless добавляем беспроводную связь к Raspberry Pi Pico

26.05.2021 20:08:54 | Автор: admin

Raspberry Pi Pico отличная плата, хотя и с урезанными возможностями. В целом, ей не хватает двух ключевых функций. Первая это кнопка reset, которую, впрочем, можно без проблем добавить самостоятельно. Вторая, более важная беспроводная связь.

Исправить вторую проблему сложнее, но все равно можно. Сейчас появилась совместимая плата, Pimoroni Pico Wireless, которая подключается к малинке и обеспечивает работу с беспроводными сетями пока что только WiFi, о Bluetooth расскажем ниже. Подключается она через SPI-интерфейс.

В целом, добавление беспроводной связи к Pico совсем не сложная задача, компания Adafruit доказала это при помощи AirLift FeatherWing с ESP32. Работает система как с Pico, так и с Feather RP2040. Есть еще Maker Pi Pico, плата, которая поддерживает и ESP8266. Но портативных систем, добавляющих беспроводную связь, для Pico не так много. И Pimoroni Pico Wireless один из отличных вариантов.

Что собой представляет Pimoroni Pico Wireless и как использовать плату?



Pico Wireless по GPIO-интерфейсу. Здесь и достоинство и недостаток системы. Достоинство простота подключения. Недостаток плата закрывает доступ ко всем пинам. Модуль идеально подходит к Pico, размеры у него такие же, как и у малинки.

ESP32-WROOM-32E мощный микроконтроллер, который, правда, в Pico Wireless используется в качестве сопроцессора так же, как и в AirLift FeatherWing от Adafruit. В обычной ситуации контроллер поддерживает работу как с WiFi, так и с Bluetooth, но в этой модели работает лишь WIFi. С другой стороны, при внимательном изучении платы наверняка откроется возможность активировать и Bluetooth, поскольку аппаратно все это поддерживается.


Есть и возможность все же задействовать пины GPIO, но для этого потребуется дополнительная система например, Pico Omnibus. При этом нужно будет убедиться в отсутствии конфликтующих контактов на подключенных устройствах. Питание Pico Wireless обеспечивает GPIO Raspberry Pi Pico, так что дополнительно подключать ничего не нужно.


Железо ничто без программного обеспечения. Pico Wireless поддерживает С++ и собственную версию MicroPython, которая включает picowireless модуль, разработанный для использования с платой. Эта функция отлично работает, ее уже протестировали при помощи скриптов. Проблем не было, единственное пользователь должен понимать, как работает беспроводная сеть, чтобы работать с ПО.

Если желания возиться самостоятельно нет, то лучший вариант Adafruit CircuitPython. Здесь нужно всего лишь изменить несколько строк для того, чтобы Pico увидел подключенный модуль. Кроме того, нужно еще и скопировать несколько библиотек в Pico. После того, как это было сделано, удалось без проблем подключиться к сети и получить погодные данные через API.

Данные записали на SD-карту, с подключением которой тоже пришлось немного повозиться потребовалось использовать дополнительную библиотеку, которая и активировала карт-ридер. Прописав несколько строк CircuitPython, удалось создать новый файл, в котором хранится журнал данных JSON, полученных через API. Информацию можно считывать с SD посредством CircuitPython.

Светодиод RGB подключен к ESP32 через три контакта (красный = 25, зеленый = 26, синий = 27), и для его использования нам нужно использовать esp.set_analog_write (). Например, вот код для установки красного светодиода.

esp.set_analog_write(25, 0)
esp.set_analog_write(26, 1)
esp.set_analog_write(27, 1)


Здесь можно изменять значения между 0 и 1, что дает возможность настраивать цвет самого светодиода.

В системе можно установить и кнопку, подключив ее к GPIO 12 и земле. При нажатии на кнопку та замыкает контакт GPIO, вызывая какое-либо событие. Какое именно зависит от желания разработчика.

Характеристики:

  • Модуль ESP32-WROOM-32E (даташит).
  • 1 сенсорная кнопка.
  • Светодиод RGB.
  • Слот для карты памяти Micro-SD.
  • Предварительно припаянные пины для подключения к Raspberry Pi Pico.
  • Размер 53mm x 25mm x 11mm.
  • Библиотеки C++ и MicroPython.

На одной из сторон платы есть дорожки, которые можно разрезать, чтобы убрать неиспользуемые функции, что позволяет высвободить некоторые GPIO-пины.



Где можно использовать Pimoroni Pico Wireless


В целом, беспроводная связь для Pico открывает перед разработчиком ряд новых возможностей, включая работу с приложениями IoT. Pico Wireless дает возможность взаимодействовать малинке с другими устройствами, используя как стандартные протоколы связи, так и не самые обычные, включая MQTT. Библиотека CircuitPython добавляет еще и поддержку базового HTTP. В ходе теста был проверен мы HTTP-ответ от API с передачей значения в REPL, что полезно для отладки проблем с подключением.

Raspberry Pi Pico вместе с Pimoroni Pico Wireless идеально подходит для добавления в проект мониторинга данных, сбора информации с датчиков, хранения полученной информации на карте памяти и передачи данных на удаленную машину. Если есть навыки, то можно сделать и нечто посложнее, используя в качестве сетевого посредника Pico.

В сухом остатке


Как и говорилось выше, Pico Wiereless можно в считанные секунды подключить к малинке, потеряв при этом доступ к GPIO. Соответственно, не будет возможности использовать пины. Проблема решается при помощи Pico Omibus, что увеличивает размеры платы. Также можно самостоятельно припаять систему, придумав что-либо для подключения к пинам.

Подробнее..

Разработка контроллера резервного питания. Схемотехника

04.06.2021 10:04:57 | Автор: admin

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

Контроллер работает совместно с тремя внешними модулями:

  • сетевым источником питания 220 VAC в 24 VDC

  • инвертором 24 VDC в 220 VAC

  • аккумуляторной батареей 24 В

В момент отключения сетевого напряжения или понижения ниже предельного значения контроллер переключает потребителей на питание от аккумулятора и инвертора.
Переключение 24 В происходит без провалов напряжения, переключение 220 происходит с задержкой равной времени переключения реле.

Преимущества

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

Применение

Применить такой контроллер можно в промышленных и бытовых устройствах и агрегатах, подъемниках, лифтах, автоматических воротах, кранах, автоматических дверях, системах домашней автоматизации и т.д.
Контроллер способен работать и как простой зарядник аккумуляторов емкостью до 30 А*ч, как измеритель параметров электросети, измеритель КПД инвертеров, как источник питания с регулируемым напряжением, током до 10 А и защитой от перегрузок и т.д.

Принцип работы

Особенностью архитектуры данного контроллера является его тесная связь с потребителями.
Для того чтобы не превысить предельно допустимую мощность источника питания и инвертера и не спровоцировать проседания выходных напряжений контроллер получает от потребителей информацию о планируемом подключении нагрузок и сообщает потребителям о текущем состоянии сетевого напряжения. Таким образом потребители не будут пытаться получить недоступную мощность или предпринимать действия способные быстро и непрогнозируемо привести к исчерпанию аккумулятора. Связь потребителей с контроллером осуществляется через один из цифровых интерфейсов : CAN, RS485, USB.

При наличии сетевого напряжения контроллер пропускает напряжение 24 В от внешнего источника питания к потребителям через управляемый ключ 1 (см. структурную схему) и напряжение 220 В через реле Р1. Ключ 1 работает одновременно также как ограничитель входного напряжения, ограничитель тока, защита от переполюсовки и идеальный диод. Ключ 1 не дает проникать обратному току на источник питания в случае отключения сетевого напряжения. Может показаться, что это излишняя мера, но некоторые промышленные источники питания MEAN WELL не включаются, когда на их входе уже присутствует напряжение. Одновременно с подачей тока потребителям контроллер заряжает аккумулятор (если аккумулятор этого требует). При этом ток заряда аккумулятора балансируется с током уходящим потребителям так чтобы не превысить допустимый ток источника питания.
Цифровое управление и повышающее/понижающий (Buck-Boost) преобразователь зарядника позволяют точно учитывать степень заряда и разряда аккумулятора и выбирать правильные профили заряда в зависимости от состояния аккумулятора.

При отсутствии сетевого напряжения контроллер пропускает через ключ 2 напряжение 24 В потребителям от аккумулятора. Напряжение при этом может варьироваться от 27 В (полностью заряженный) до 20 В (полностью разряженный). Потребители должны быть готовы работать в таком диапазоне, что обычно не представляет проблемы. Напряжение 220 В подается через реле Р2 от внешнего инвертера. Сам инвертер питается от аккумулятора через ключ 3. Инвертер может поддерживаться как в горячем резерве так и быть отключенным (что более экономично). Однако из выключенного состояния инвертеры обычно выходят несколько секунд и это затягивает переключение.

Основные характеристики

  • максимальный коммутируемый переменный ток напряжения 200 В - 35A

  • максимальный коммутируемый постоянный ток напряжения 24 В - 15 А

  • максимальный ток на входе инвертера - 50 А

  • максимальный ток заряда аккумулятора при наличии радиатора - 10 А

  • максимальный ток заряда аккумулятора без радиатора - 4 А

  • тип аккумулятора - cвинцово-кислотная батарея 24 B

  • тип микроконтроллера - MKE18F512VLL16 (ARM Cortex-M4F, 32-Bit, 168MHz, 512KB (512K x 8) FLASH, 64 KB SRAM, -40C ~ 105C)

  • Цифровые интерфейсы: CAN гальвано-изолированный, RS485 гальвано-изолированный, USB 2.0 Full Speed VCOM

  • Два гальвано-изолированных цифровых выхода

  • Дисплей с энкодерным управлением

  • Встроенные измерители токов, напряжений, мощностей и прочего по входным и выходным линиям 220 и 24 В.

  • Утечка тока аккумулятора в отключённом состоянии не более 200 мкА

  • Все основания рассчитывать что на половине заявленных максимальных токов плата способна будет длительно работать без радиаторов при условии свободной конвекции.

Схема

Лист 1. Идеальный диод источника питания, идеальный диод цепи питания системы от аккумулятора и DC/DC преобразователь зарядника. Лист 1. Идеальный диод источника питания, идеальный диод цепи питания системы от аккумулятора и DC/DC преобразователь зарядника. Лист 2. Микроконтроллер, цифровые интерфейсы, дисплей, стабилизаторы питанияЛист 2. Микроконтроллер, цифровые интерфейсы, дисплей, стабилизаторы питанияЛист 3. Ключ питания инвертера, измерители в цепи переменного тока, коммутаторы цепи переменного токаЛист 3. Ключ питания инвертера, измерители в цепи переменного тока, коммутаторы цепи переменного тока

Структурная схема

Структурная схема с указанием номеров разъемов и точек измерения напряжений и токов. (для увеличения открыть в отдельном окне)Структурная схема с указанием номеров разъемов и точек измерения напряжений и токов. (для увеличения открыть в отдельном окне)

Особенности схемы

Зарядник аккумулятора выполнен на регулируемом DCDC преобразователе U23 серии LTC3789.
Выходное напряжение преобразователя задается микросхемой U24 DAC80501 управляемой по интерфейсу I2C. DAC80501 преобразует 16-и битный код в выходное напряжение в диапазоне от 0 до 1.25 В. Резистивный делитель на R94, R96, R100 смешивает напряжение от U24 и выходное напряжение DCDC преобразователя чтобы получить опорное напряжение VFB, для микросхемы LTC3789 оно должно равняться 0.8 В. DCDC преобразователь работает так чтобы напряжение VFB всегда оставалось равным 0.8 В, когда микросхема U24 меняет свое выходное напряжение.
Таким образом DCDC преобразователь способен регулировать свое напряжение от 1.65 В до 31.9 В.
Для расчета схем на базе LTC3789 и подобных существует специальная программа - LTpowerCAD
Вид окна программы для рассматриваемого преобразователя показан ниже:

В целом программа показывает более оптимистичные результаты чем есть в реальности, особенно на малых мощностях. В частности недооценивается влияние паразитных элементов трассировки.
Даже упрощенная модель в программе LTpowerCAD не дает однозначного ответа по оптимальному выбору компонентов, поскольку при разных режимах и комбинациях входных и выходных напряжений и токов значительно меняется вклад разных элементов в нагрев схемы. Т.е. программа не выполняет глобальной оптимизации по всему диапазону рабочих режимов. И приведенная схема была в основном оптимизирована для случая выходного напряжения в 32 В и выходного тока 10А, т.е. самого тяжелого режима при зарядке 24В аккумулятора.
На КПД преобразователя также влияет состояние сигнала DCDC_MODE. Как показала практика в состоянии лог. 0 (forced continuous mode ) катушка индуктивности L5 меньше нагревается чем когда на DCDC_MODE присутствует лог. 1 (pulse-skipping mode)
Сигнал EN_CHARGER в состоянии лог. 0 запрещает работу преобразователя. В выключенном состоянии преобразователь не пропускает напряжение с выхода на вход.

Ключ источника питания SW1. Выполнен на микросхеме U20 LTC4364. Через этот ключ проходит ток от источника питания к потребителям. Когда происходит переключение от питания от аккумулятора этот ключ выключается микроконтроллером.

Часть схемы с ключом источника питания Часть схемы с ключом источника питания

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

В промышленных системах столько защит не является лишним. Особенно когда работать приходится в окружении электроники сомнительного качества и надежности.

Ключ аккумулятора SW2. Выполнен на микросхеме U21 LTC4364.

Назначение этого ключа в том чтобы пропустить ток от аккумулятора к потребителям в режиме работы резервного питания. Транзистором Q9 задается два разных уровня выходного напряжения.
При уровне 0 сигнала AIDS_FBC ключ начинает пропускать ток от аккумулятора в систему (т.е. потребителям) только если напряжение в системе упадет ниже 22.9 В (т.е. внешний источник питания не будет способен удержать свое номинальное напряжение)
При уровне 1 сигнала AIDS_FBC ключ пропустит ток если в системе напряжение будет ниже 26.3 В.
Это необходимо когда в систему включается полностью заряженный аккумулятор с напряжением до 32 В чтобы транзисторы ключа не перегрелись из-за слишком большого падения напряжения на них.
Поскольку ключ еще и выполняет функции идеального диода, то ток из системы в аккумулятор через него не проходит.
В обесточенном состоянии и подключении только аккумулятора ключ останется закрытым. Таким образом систему нельзя включить от аккумулятора не подав предварительно напряжение от внешнего источника питания.

Ключ питания инвертора SW3. Выполнен на микросхеме U14 LTC4368.

Этот ключ включает питание на инвертор. Для быстрого переключения на резервное питание инвертор желательно держать включенным. Однако инверторы потребляют значительный ток. Например инвертор MEAN WELL TS-1500-224 мощностью 1.5 КВт

на холостом ходу потребляет более 1 А. После аварийной перегрузки такой инвертер не включится вновь пока на с него не снимут напряжение ( если не пользоваться его интерфейсом управления). В таком случае ключ помогает избавиться от лишнего потребления тока и упростить восстановление после перегрузок, хотя и ценой некоторой инерционности.
Ключ защищает аккумулятор от слишком больших токов. В данной схеме защита должна срабатывать при токе превышающем 50 А, на самом деле будет меньше, тут критически важна трассировка.

Высоковольтная часть. В высоковольтной части коммутация производится с помощью реле K1 и K2 типа AHES4292. Не самый быстрый и надежный способ коммутации, но дело в том что схема предназначена для коммутации самых разнообразных нагрузок и напряжений, в частности для коммутации межфазных напряжений в 3-х фазных сетях (тогда ставятся еще вспомогательные внешние 3-х фазные контакторы). Реле относятся к типу реле безопасности и на схеме они взаимно блокированные. Принято считать что по такой схеме реле такого типа ни при каких обстоятельствах не смогут включиться одновременно, даже когда одно из них залипнет. Значит сетевое напряжение никогда не сможет проникнуть на выход инвертора и погубить его.
Залипание реле контролируется измерителями напряжения на резистивных делителях R51, R52 и R53, R54

Мониторы мощности. Реализованы на микросхемах U15 и U17 типа ACS37800KMACTR-030B3-SPI.
Микросхемы способны измерять переменный ток, напряжение, мощность, действующие их значения, средние от действующих значений за заданное время, способны измерять действующее как по переходу через ноль так и действующее значение постоянных токов. Каждая из микросхем отдельно гальвано-изолирована и может выполнять точные измерения не беспокоясь о способе реализации заземления и зануления источников напряжения и даже измерять при межфазном подключении. Микросхемы измеряют ток амплитудой до 30А.
Считывание данных производится по интерфейсу SPI. На каждую микросхему идет отдельный интерфейс SPI поскольку они не могут совместно работать на одном общем интерфейсе.

Измерители токов и напряжений. Как пример приведен фрагмент схемы ниже -

U22 и U13 здесь измеряют ток. Микросхемы INA240A1 хорошо подходят для условий измерений с большими синфазными помехами. Они двунаправленные. Средняя точка для них формируется общей для всех прецизионной мало-шумящей схемой на операционном усилителе U26 THS4281DBVR. Кроме того INA240A1 достаточно хорошо согласуются в входами АЦП микроконтроллеров.
Микросхема U27 на схеме выполняет роль дифференциального усилителя напряжения для измерения напряжения аккумулятора. Дифференциальный усилитель применен здесь для того чтобы минимизировать ток потребляемый от аккумулятора, когда система обесточена, также дифференциальный усилитель как ни странно упрощает трассировку платы в отношении топологии аналоговых и цифровых земель.

Элементы управления. Для управления платой в первую очередь предназначены коммуникационные интерфейсы, но предусмотрено также и непосредственное ручное управление и настройка. Для этого введен в схему ручной механический энкодер SW1 с двухцветной подсветкой и нажатием PEL12D-4225S-S2024.

Для отображения информации есть OLED дисплей ER-OLED015-2W. Монохромный, 128x64 точки, управляется по интерфейсу SPI. Немного усложненная схема

объясняется тем что дисплею для работы нужно повышенное напряжение 12 В. Ключ питания U34 здесь добавлен скорее для страховки ввиду неопределенности поведения в даташите на дисплей в случае пониженного уровня VCC.

Микроконтроллер MKE18F512VLL16 будет работать на частоте 120 МГц. Его внутренней RAM размером в 64 кБ должно хватить для операционной системы реального времени чтобы управлять несколькими автономными задачами: GUI, измерений, контроля, связи.

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

Далее предстоит плату страссировать, спаять, написать программу.
Трассировкой предполагается заняться в следующей статье.

Подробнее..

Радиация детекторы. Как подружить сцинтиллятор и SiPM

06.06.2021 20:07:08 | Автор: admin

Все началось с того, что коллега на работе попросил мне помочь запустить сцинтилляционный счетчик для какого-то натурного эксперимента на борту парохода. Принес мне завернутый со всех сторон в фольгу монокристалл BGO -- цилиндрическую шайбу размером 40х15 мм, и кремниевый ФЭУ типа MicroFC 60035, и сказал, что ничего не работает. В том виде, как это было собрано у него, он в принципе давал импульсы. Но в среднем раз в секунду, что для сцинтилляционного детектора с немаленьким кристаллом как-то совсем слабо. И на поднесение источника в 50 кБк цезия-137 он не реагировал в принципе. Как и вообще на что-то мягче кобальта-60. И с этим надо было что-то сделать.

Итак, начнем.

Выбор материала

Вспомнив опыт со своим сцинтилляционным радиометром, я сразу сказал: BGO здесь едва ли будет работать. Детектор от Atom Fast 8850 начинает надежно "видеть" гамма-кванты от 30 кэВ, а BGO имеет сцинтилляционную эффективность раз в десять хуже. Добавим сюда упавшую в разы эффективность светосбора из-за больших поперечных размеров шайбы по отношению к детектору, огромный показатель преломления BGO и конструкцию детектора, сделанную на тяп-ляп, вот и получаем порог в районе 0,5-0,6 МэВ. Его можно снизить до 150-200 кэВ при должном старании, но не более. Ищи, говорю, цезий-йод. Тем временем разобрал конструкцию, оттер SiPM от вазелинового масла, припаял поаккуратнее проводочки из МГТФа к его контактным площадкам и убрал его в надежное место...

И подходящий кристалл CsI(Tl) нашелся, причем очень удачной для SiPM геометрии. "Палочка" диаметром 20 мм и длиной 80 мм во вполне стандартном алюминиевом корпусе с окном. Тип СДН.25.20.80, "Для регистрации". Правда, нашелся он на "Авито", у широко известного в узких кругах украинского продавца. И вот прошло десять дней и сцинтиллятор уже лежал на моем столе. Кристалл, надо сказать, большого доверия не внушал: внутри имелась прослойка включений в виде нескольких черных точек и легкой вуали, окно немного отстало от кристалла по краям. Но по крайней мере, целый, не мутный, не желтый, да и другого все равно нет. Будем работать с ним.

Тут нужно пояснение, почему именно CsI(Tl), а не его "старший брат" NaI(Tl). Дело в том, что последний очень чувствителен к перепадам температуры и даже слабым ударам, приводящим к растрескиванию. CsI -- материал, обладающий определенной степенью пластичности и при небольших механических нагрузках не трескается, а деформируется. Также CsI(Tl) позволяет себя "раздеть" и переупаковать без сухой камеры с инертной атмосферой, тогда как NaI(Tl) настолько гигроскопичен, что покрывается росой и начинает расплываться уже через пару минут нахождения на воздухе. В нашем случае необходимости в переупаковке не было -- корпус детектора был вполне исправен и герметичен, а ручаться за герметичность самодельного контейнера я б не стал.

Первая проба

Для начала решил на скорую руку приложить к кристаллу SiPM даже без всякой оптической смазки между ним и окном -- чтобы не пачкать лишний раз. Заклеил алюминиевым скотчем и черной изолентой от внешней засветки, подключил к лабораторному БП через нагрузочное сопротивление 2,2 кОм, подключил к нему щуп осциллографа... Мнда, негусто. Конечно, небо и земля по сравнению с BGO, но сигнал от Am-241 (59 кэВ) -- около 8-10 мВ при 29,5 В. При этом засинхронизироваться от этих импульсов очень трудно: шумовые импульсы, обусловленные темновыми фотоэлектронами, лишь немного меньше полезного сигнала.

Ну что ж, для начала попробуем сделать, как положено. Заодно оценим, насколько нужны те или иные ухищрения.

Соединяем Si-ФЭУ и сцинтиллятор грамотно

Тут надо начать с того, что сам кремниевый ФЭУ -- крохотный по сравнению с его вакуумным аналогом. Размеры его входного окна -- всего 6х6 мм. И даже наш невеликий кристалл имеет площадь выходного окна в 8,7 раза больше. Обычно ФЭУ подбирают с диаметром фотокатода, совпадающим или почти совпадающим с диаметром сцинтиллятора, именно в таком случае светосбор наиболее эффективен и, что особенно важно для гамма-спектрометрии, не зависит от расположения источника света (вспышки сцинтилляции) в пространстве. В нашем же случае пришлось бы поставить мозаику как минимум из четырех кремниевых ФЭУ, что в бюджет не влезало с учетом того, что уже пришлось купить кристалл (да -- нам, ученым, иногда приходится покупать кое-что для работы из своего кармана). Спектрометрия нам тоже не требовалась, и оставалось надеяться на то, что собранного света окажется достаточно.

Как мы можем оптимизировать светосбор в нашем случае? Если не распаковывать кристалл, у нас возможностей немного. И мы ими воспользуемся.

Какие это возможности? Во-первых, мы должны устранить воздушную прослойку между кристаллом и ФЭУ. Как вы думаете, сколько излучения теряется при ее наличии? Казалось бы, немного. Коэффициент отражения на границе стекло-воздух равно ~ 4%, и можно ожидать, что потеряем мы лишь 8% света. Но это было бы верно, если бы все излучение падало бы на фотокатод перпендикулярно. Но это не так: из сцинтиллятора свет выходит под всеми углами. И при наличии прослойки часть света просто не покидает кристалл из-за полного внутреннего отражения, а излучение внутри "конуса выхода" тоже частично отражается внутрь кристалла, и чем больше угол, тем сильнее.

Для устранения воздушной прослойки кристалл и фотоприемник соединяют с помощью прозрачной оптической смазки или клея, показатель преломления которой максимально близок к показателям преломления окон кристалла и ФЭУ. В качестве смазки можно использовать прозрачное вазелиновое или силиконовое масло, винилин. Существуют также специальные оптические контактные смазки наподобие тех, что производят компании Alpha Spectra Inc и Saint Gobain (BC-631). Для приклейки применимы прозрачные силиконовые и эпоксидные компаунды. С успехом можно использовать OCA -- листовой оптический клей вроде двустороннего скотча, предназначенный для приклейки сенсора к дисплеям смартфонов. Этот материал продается во всех магазинах запчастей для их ремонта и стоит несколько десятков рублей за кусок, вырезанный по форме дисплея.

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

Дело в том, что голый алюминий отражает только 85-88% света. Отражательная способность алюминиевого скотча со стороны клея -- еще ниже, не более 60-70%. Учитывая то, что свет будет несколько раз переотражаться туда-сюда внутри кристалла, пока не попадет на фотоприемник, это очень плохие цифры. Существует ряд материалов с очень высоким коэффициентом диффузного отражения, превышающим 95% -- многослойные пластиковые пленки, синтетическая бумага Tyvek и др. Тем не менее, наиболее доступным и весьма эффективным отражателем является обыкновенная сантехническая ФУМ-лента белого цвета в несколько (4-6) слоев , покрытая сверху алюминиевой фольгой, что дает коэффициент отражения примерно 95%. SensL рекомендует [1] для изготовления сцинтилляционных детекторов на основе SiPM именно ее. "Культурный" аналог производства Saint Gobain Crystals называется BC-642Teflon Tape.

Кто сказал "фокон"?

Фокон -- это сокращение от "фокусирующего конуса". Идея в том, что свет падает на конический или параболический рефлектор, концентрирующий свет с большой входной площадки на маленькую выходную. И такое решение действительно часто применяют в сцинтилляционных детекторах, чтобы сопрячь кристалл с ФЭУ меньшего диаметра. Но работает это решение весьма спорно.

Дело в том, что чем больше отношение входной площади фокона к выходной, тем уже конус, из которого фокон собирает свет. Свет, падающий под углом больше критического, отражается обратно. А сцинтиллятор светит во все стороны, и ограничивая угол сбора света, мы теряем его часть, так что обмануть природу не получится. В статье [2] показано, что фоконное сопряжение не дает ничего ни для эффективности светосбора, ни для спектрального разрешения при аналогичном нашему соотношении размеров кристалла и сборки из SiPM (кристалл диаметром 2" и сборка 2х2 из MicroFC 60035).

Сборка детектора

Поскольку наш кристалл находится в стандартном контейнере с кварцевым окном в торце, нам не нужно заботиться о светоотражающем покрытии всего кристалла. Им нужно закрыть его торец, оставив в покрытии квадратное окошко по размерам SiPM, то есть 7х7 мм. Всю остальную площадь окна нужно закрыть полосками ФУМ-ленты в 5-6 слоев. Затем из алюминиевого скотча вырезать круг диаметром около 50 мм, в его центре прорезать макетным ножом такое же квадратное отверстие и наклеить его поверх ФУМ-ленты, чтобы отверстия совпали. Теперь аккуратно заворачиваем его края на цилиндрическую поверхность корпуса, максимально тщательно разглаживая и разравнивая складки, через которые может проникать свет.

В свободный от ФУМ-ленты и фольги квадратик вклеиваем SiPM с помощью квадратика, вырезанного под его размер из OCA-пленки. Сверху на него наклеиваем кусочек каптоновой пленки, чтобы не замкнуть выводы кремниевого ФЭУ фольгой, а затем заклеиваем сверху кружком из алюминиевого скотча для защиты попадания света, пропустив провода от SiPM вдоль цилиндрической поверхности кристалла и оборачиваем боковую поверхность полосой алюминиевого скотча, спрятав под ней некрасивые и могущие пропустить свет складки. Правда, первое включение показало, что этого недостаточно и детектор нормально работает только если прикрыть его от света. Поэтому я закрыл конструкцию еще одним слоем самоклеящейся фольги и пропустил провода под ним в виде петли. В окончательном варианте детектор выглядит вот так.

Результат не заставил себя ждать: амплитуда сигнала от америция возросла более чем вдвое, достигая 20 мВ, что позволяет его уверенно выделять на фоне темнового шума. Вот сколько можно потерять света только из-за того, что пара квадратных сантиметров вокруг сиФЭУ закрыта неидеальным отражателем, и из-за зазора между ним и сцинтиллятором, заполненного воздухом.

Импульсы от америция с детектора, сделанного абы как (слева) и после доработки (справа)Импульсы от америция с детектора, сделанного абы как (слева) и после доработки (справа)

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

Ссылки

  1. https://www.onsemi.com/pub/Collateral/AND9774-D.PDF

  2. Kim J., Park K., Hwang J. et al. Efficient design of a 22 inch NaI(Tl) scintillation detector coupled with a SiPM in an aquatic environment. // Nuclear Engineering and Technology. 2019. V. 51. 4. P. 1091-1097.

  3. Lavelle C.M., Shanks W., Chiang C. Approaches for single channel large area silicon photomultiplier array readout // AIP Advances. 2019. 9. 035123.

Подробнее..

Перевод Лучшие одноплатники на базе чипа RP2040 в 2021 году. Часть 1

11.06.2021 02:20:41 | Автор: admin

С момента выхода Raspberry Pi Pico мы опубликовали несколько статей о системах на базе чипа RP2040 от обзора возможностей одноплатника самой компании до более продвинутых систем других производителей. Сейчас их выпущено уже столько, что публиковать обзор всех подобных плат просто нет смысла. Зато можно разместить подборку лучших систем.

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

Немного о критериях выбора плат с RP2040


Какой размер и сколько требуется пинов? У меньших по размеру плат вроде Pimoroni Tiny RP2040 меньшее количество пинов, чем у оригинальной малинки, так что такие платы можно использовать в относительно ограниченном количестве проектов.

Нужна ли беспроводная связь? С полноценным модулем Wi-Fi и Bluetooth поставляется лишь Arduino Nano RP2040 Connect. Но помимо нее производители предлагают дополнения к Pico вроде Adafruit Airlift board или Pimoroni Pico Wireless Pack.

Экосистема. Понятно, что Raspberry Pi Pico совместима со всей экосистемой продукции Raspberry Pi Foundation. Есть и другие платы, вроде Adafruit Feather RP2040, которые совместимы с представителями продуктовой линейки FeatherWing. Возможности таких плат отличаются от возможностей оригинальной системы.

Наличие дополнительных коннекторов. Это, в первую очередь, Stemma QT, Qwiic и Grove, которые идеально подходят как для простых, так и сложных проектов. У Pico нет дополнительных коннекторов, зато они есть у плат других производителей.

Выбираем лучшие платы с RP2040 чипом


Raspberry Pi Pico


  • Плюсы: низкая цена, всего $4, небольшой размер, простота в использовании, встроенный ADC.
  • Минусы: нет USB-C, только три ADC-пина.

Первый в мире и самый дешевый одноплатник (вернее, микроконтроллер) на базе RP2040 стоит всего 4 доллара США. У него полноценный 40-пиновый GPIO. Поскольку де-факто это стандарт, некоторые сторонние платы совместимы с распиновкой Pico, включая Kitronik Robotics Board или Pimoroni. Они добавляют к функциональности Pico беспроводную связь, несколько светодиодов или другие элементы.

Конечно, покупая самую недорогую модель, вам придется идти на компромиссы. Во-первых, у Pico всего три analog-to-digital пина, тогда как у некоторых сторонних плат четыре или больше. Кроме того, у Pico всего 2 МБ памяти, что весьма немного, хотя и достаточно для решения многих задач.

Плюс ко всему, у Pico micro-USB коннектор, разработчики (вероятно с целью удешевления) решили не устанавливать USB-C. Тем не менее, учитывая обширную экосистему, Pico можно считать must have микроконтроллером для разработчика.

Adafruit Feather RP2040


  • Плюсы: удачный форм-фактор, STEMMA QT, FeatherWing, возможность подключения и зарядки аккумулятора, разметка пинов на обеих сторонах платы.
  • Минусы: нет подтягивающих резисторов на пинах I2C и нет мониторинга батареи.

Adafruit, партнер Raspberry Pi по чипу RP2040, выпустила несколько отличных плат RP2040 за короткий промежуток времени. У компании есть собственный набор форм-факторов. Самая большая плата, Feather, как раз и получила чип RP2040. У Feather RP2040, совместимого с экосистемой FeatherWings, меньше контактов, чем у Raspberry Pi Pico. Но все же разрабочтики выбрали оптимальный минимум.

Потери в пинах GPIO компенсируются возможностью подключения LiPo / Li-Ion батареи, отличной разметкой контактов и наличием Stemma QT, плюс разъема Adafruit, который выбирают для компонентов, которые подключаются посредством I2C. Благодаря Stemma QT у нас нет проблем с подключением и полярностью, что позволяет нам сосредоточиться на проекте, а не на поиске нужных пинов.

Если вы ищете самую универсальную плату RP2040 на рынке, вы ее нашли. Конечно, стоит она дороже, чем Raspberry Pi Pico, но Adafruit Feather RP2040 отличный продукт, который можно использовать в вашем следующем проекте.

Сytron Maker Pi Pico


  • Плюсы: низкая стоимость, простота использования, дополнительные фичи, дополнительные светодиоды и коннекторы.
  • Минусы: с ESP-01 придется повозиться

Raspberry Pi Pico это увлекательный и недорогой способ заняться программированием и электроникой. Правда, во многих случаях к Pico придется докупать компоненты, чтобы расширить сферу его применения. Maker Pi Pico это большое количество дополнительных функций с небольшим размером. При этом стоимость устройства менее 10 долларов, включая предварительно распаянный Raspberry Pi Pico.

За 10 долларов вы получаете просто потрясающее количество функций: кардридер micro SD, зуммер / аудиоразъем 3,6 мм, NeoPixel, контакты GPIO свободны для использования, плюс шесть разъемов Grove для работы с совместимыми компонентами. У каждого из контактов GPIO есть полезный, который можно использовать для быстрой отладки. Включенный в комплект ESP-01 обеспечивает базовый доступ к Wi-Fi. А еще компания Cytron выпустила обновленное руководство о том, как подключить Maker Pi Pico к беспроводной сети. За 10 долларов сложно найти что-то получше.

Adafruit QT Py RP2040


  • Плюсы: небольшой размер, порт Stemma QT, USB-C.
  • Минусы: ограниченное количество GPIO пинов.

QT Py RP2040 от Adafruit похож на Pimoroni Tiny 2040. У платы тоже небольшой размер, плюс тщательно подобранный выбор контактов GPIO для проектов. QTPy RP2040 от Adafruit можно без проблем распаять на плате большего размера. Плюс у системы есть разъем Stemma QT / Qwiic, который обеспечивает дополнительное соединение I2C для работы с совместимыми компонентами. Отличное решение для прототипирования.

Низкая стоимость и простота использования QTPy RP2040 не единственные преимущества платы. Здесь есть еще форк Adafruit MicroPython, CircuitPython, со множеством библиотек для работы с компонентами Stemma QT / Qwiic. Даже если у вас уже есть Raspberry Pi Pico, QTPy RP2040 все равно должен быть частью вашего проекта.

Pimoroni Tiny 2040


  • Плюсы: небольшой размер, больше ADC-пинов, чем у Pico, есть кнопка Reset.
  • Минусы: плата несовместима с add-on системами для Pico, сложности с распайкой, высокая цена.

Размер этой платы составляет всего лишь треть от и так небольшого Raspberry Pi Pico. Разработчики позаботились о сохранении всех функций Pico с добавлением новых. Есть, например, дополнительный аналоговый вход. Из-за небольшого размера платы она стала дороже, причем ровно в три раза, чем Pico. Стоимость Pimoroni Tiny 2040 составляет $12.

Плата подходит не для всех проектов, поскольку с обратной стороны тоже есть элементы, включая систему на кристалле. Распиновка нестандартная, так что плата несовместима с экосистемой Pico. Но все это неважно, если вы разрабатываете уникальный проект, где необходимы лишь возможности Tiny 2040. В этом случае небольшой размер и обширный спектр функций становятся преимуществами.

Подробнее..

Перевод Проект VG64 добавляем второй монитор к Commodore 64

11.06.2021 14:22:51 | Автор: admin

После появления идеи добавления второго дисплея к Commodore 64 я довольно быстро реализовал этот проект. Все железо уместилось в картридж стандартного размера (вместе с коннектором DE-15). Видеовыход совместим с VGA (31 кГц).

Внутри картриджа 128 КБ SRAM для кадрового буфера и простой 1-битный ЦАП.

TL;DR


Вот так выглядит плата, размещенная внутри картриджа. Загрузить исходник можно здесь.


Программный интерфейс


Картридж можно поместить в любую часть 64 КБ адресного пространства, включая I/O1 или I/O2. Есть Verilog код для представления либо в окне в буфере кадра @EXPROM, что заберет 8 КБ памяти Basic, либо основанный на регистрах подход, экономящий оперативную память.

В приведенных примерах для регистров управления используется I/O1 на $DE00. У вас может возникнуть желание изменить поданный пример, если есть конфликт с каким либо другим эддоном (второй SID-чип и т.п.). В целом, существует поддержка специального токена, который позволяет избежать конфликтов, но у меня нет дополнительного ПО, которое эти конфликты вызывает.

Регистры

IOBASE = token
IOBASE+1 = lsb address
IOBASE+2 = msb address
IOBASE+3 = data

Кадровый буфер линейный, использовать его несложно, подобно собственным режимам C64 с растровым отображением. В SRAM его начало $00000.

Вывод видео


Вне зависимости от выбранного режима видео выводится с pixel rate в 25 МГц благодаря встроенному генератору 100 МГц. Этот параметр близок к стандарту в 25,175 МГц для экрана с разрешением 640x480 при FPS 60 Гц. Соответственно, любой подключаемый мною дисплей показывал изображение корректно и без проблем. Вертикальная и горизонтальная синхронизация, а также области гашения настроены на правильную полярность и длину для запуска этого режима. Возможны две интерпретации данных кадрового буфера: режим высокого разрешения 640x480 1 бит на пиксель и многоцветный режим низкого разрешения 320x480. Оба режима palette direct.

Железо


Аппаратное обеспечение достаточно простое: регулятор 3,3 В, CPLD, генератор и SRAM. SRAM тратит половину своего времени на ответы хосту, и еще половину на загрузку пиксельных данных. Используемый здесь CPLD, Xilinx 95144XL, устойчив к 5 В, поэтому он установлен на шине расширения C64, хотя и запитан от регулятора 3,3 В вместе с остальным оборудованием.


Используются почти все ресурсы CPLD. Я надеялся поместить один аппаратный спрайт для указателя, но для этого просто не осталось места.

Для тех, кто будет печатать кулеры, в модели STL есть все необходимое, причем в стиле C64.

Важный момент вам понадобится программатор JTAG для загрузки битового потока в CPLD.

И еще картридж не работает с платой Ultimate 64. Более того, установка картриджа на эту плату может вызвать повреждение картриджа. Зато все работает со всеми версиями плат C64, C128 и C64 Reloaded. Точно не знаю, совместим ли картридж со всеми версиями C64 или C128, выпущенными Commodore, но я никаких проблем не вижу.



Технические характеристики


  • 4-х слойная печатная плата. Включены файлы Gerber. Скос на краю значительно увеличивает стоимость, поэтому просто отшлифуйте его вручную (обязательно сделайте это, в противном случае можно повредить female-контакты).
  • Корпус картриджа сверху и снизу. Включены файлы STL.
  • Алюминиевый поляризованный конденсатор, 22 мкФ, 6,6 мм
  • Переключатель мгновенного действия, например pn 430156043726, если нужна кнопка reset для вашего компьютера.
  • Коннекторы .1"
  • резисторы 0603: 2 499R, 3 300R, 2 30R
  • конденсаторы 0603: 10 0,1 мкФ, 7 0,01 мкФ
  • 2 светодиода 3,2x1,6 (полезно для отладки, но не обязательно)
  • XC95144XL-5TQ100C CPLD (скорость не важна)
  • JEDEC 128kx8 SO Async SRAM a la AS6C1008-55PCN (не медленнее)
  • Прямой угловой разъем VGA высокой плотности с отверстиями, гнездовой разъем DE15

Verilog


Я использовал Xilinx ISE 14.5, поскольку не нашел открытого набора инструментов для этих CPLD. Если у кого-то есть такая информация, то поделитесь.

Упаковка пикселей


В режиме высокого разрешения каждый бит соответствует одному пикселю. 1 = белый, 0 = черный. Адреса перемещаются от (0,0) в верхнем левом наиболее видимом положении к нижнему правому (639 479), по столбцу, затем по строке. Бит 7 в каждом байте это первый пиксель.
В многоцветном режиме пиксели выводятся с той же скоростью, что и в монохромном режиме, но каждый цветовой канал имеет разное разрешение. Зеленый это 1/2 pixel rate, а красный и синий 1/4 pixel rate. Сопоставление битового шаблона с цветовым каналом побайтно (фрагментарно) и составляет:

G0 G1 G2 G3 R0 R1 B0 B1

В то время как экранное представление каждого байта буфера кадра выглядит следующим образом:

R0 R0 R0 R0 R1 R1 R1 R1
G0 G0 G1 G1 G2 G2 G3 G3
B0 B0 B0 B0 B1 B1 B1 B1

Преобразование изображений для отображения с помощью ImageMagick, монохромный режим:

convert input.tiff -resize 640x480 -colors 2 -depth 1 output.mono

Цветной режим:

convert input.tiff +dither -posterize 2 -resize 640x480 output.tiff
convert output.tiff -separate channel%d.png

Код написан на Python мне этот вариант показался самым простым:

from PIL import Imagefrom array import *import numpy as npir = Image.open("channel0.png")ig = Image.open("channel1.png")ib = Image.open("channel2.png")ir = ir.resize((640,480))ig = ig.resize((640,480))ib = ib.resize((640,480))r = ir.load()g = ig.load()b = ib.load()arr=np.zeros((480,80,8))out=np.zeros((480,640))for y in range(0,480):        for x in range(0,80):                # 0 1 2 3 is green level                # 4 5 is red level                # 6 7 is blue level                # GREEN                        arr[y][x][0]=(g[x*8+0,y]+g[x*8+1,y])/2                arr[y][x][1]=(g[x*8+2,y]+g[x*8+3,y])/2                arr[y][x][2]=(g[x*8+4,y]+g[x*8+5,y])/2                arr[y][x][3]=(g[x*8+6,y]+g[x*8+7,y])/2                # RED                arr[y][x][4]=(r[x*8+0,y]+r[x*8+1,y]+r[x*8+2,y]+r[x*8+3,y])/4                arr[y][x][5]=(r[x*8+4,y]+r[x*8+5,y]+r[x*8+6,y]+r[x*8+7,y])/4                #BLUE                arr[y][x][6]=(b[x*8+0,y]+b[x*8+1,y]+b[x*8+2,y]+b[x*8+3,y])/4                arr[y][x][7]=(b[x*8+4,y]+b[x*8+5,y]+b[x*8+6,y]+b[x*8+7,y])/4for y in range(0,480):        for x in range(0,80):                for bit in range(0,8):                        arr[y][x][bit] = int(round(round(arr[y][x][bit])/255))newfile=open("output.bin","wb")for y in range(0,480):        for x in range(0,80):                out[y][x] = int(arr[y][x][0] + arr[y][x][1]*2 + arr[y][x][2]*4 + arr[y][x][3]*8 + arr[y][x][4]*16 + arr[y][x][5]*32 + arr[y][x][6]*64 + arr[y][x][7]*128)                newfile.write(out[y][x].astype(np.ubyte))newfile.close()

Демонстрационное видео:


Собираем и припаиваем:




По этой ссылке можно загрузить все необходимые для работы файлы.

Подробнее..

Разработка контроллера резервного питания. Трассировка

14.06.2021 12:13:27 | Автор: admin

В предыдущей статье http://personeltest.ru/aways/habr.com/ru/post/557242/ была описана схемотехника контроллера резервного питания. Такой контроллер может пригодится в разнообразных технических системах и устройствах. Поэтому конструктив платы был выбран максимально нейтральный с возможностью выноса элементов управления на отдельную панель.

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

  • электромагнитная совместимость удовлетворяющая стандартам

  • высокая теплоотдача и большая рассеиваемая мощность без радиаторов и вентиляторов

  • низкая цена печатной платы

  • минимальные размеры

  • возможность изменять варианты сборки

  • обеспечение электробезопасности и электрической прочности

  • ремонтопригодность с минимальной оснасткой и оборудованием

  • пригодность для коррекций ошибок трассировки и схемотехники

  • технологичность сборки и невысокая цена сборки

  • максимальная тестируемость после сборки

  • удобство монтажа в целевой системе

Естественно что весь этот список невозможно не только максимально удовлетворить, но даже держать в памяти затруднительно.
Поэтому эмпирически выбираем два-три высших приоритета с которыми работаем в первую очередь.
Низкая серийность позволяет нам сдвинуть цену вниз по приоритетам. Боль прошлого опыта заставляет нас поднять ремонтопригодность и тюнингируемость на пару уровней выше чем это принято обычно.
В верхней строчке может оказаться электробезопасность и соответствие стандартам по ЭМС.
И не только потому что без этого регуляторы просто не позволят эксплуатировать плату. Плохая ЭМС может поднять результирующую цену платы многократно, поскольку приведет к длительному циклу отладки, к повышенному проценту ремонтов, удорожанию технической поддержки и многому другому. Соответственно вердикт - плата должна иметь не менее 4-х слоев.

В 4-х слоях удастся сделать максимально большие полигоны земли и питания, а также полигоны отвода тепла.
Толщину платы выбираем из соображений жесткости и из перечня доступных вариантов у производителя плат. Внутренние слои расположены ближе к внешним чтобы иметь лучшую емкостную связь с дорожками в верхних слоях и обеспечивать лучшую ЭМС, а также для лучшей передачи тепла от SMD компонентов в стороны от них.
Шесть слоев конечно было бы лучше, но нельзя забывать что цена еще не выкинута из списка приоритетов.

Вопрос выбора программных инструментов для трассировки решается в пользу Altium Designer. Как считают его разработчики он на сегодня наиболее массово применяемый инструмент в данной области.
Цена за standalone лицензию Altium до акций могла обойтись пределах 10 тыс. евро, еще 3 тыс. евро возможно придется отдать за опцию PDN Analyzer если потребуется точнее рассчитать потери и наводки в проводниках.
К счастью есть возможность поработать с триальной версией Altium и при должной сноровке выполнить трассировку необходимой нам платы в триальный период.

Результат работы показан ниже:

Вид трассировки с отображением всех 4-х слоев Вид трассировки с отображением всех 4-х слоев Вид сверху и вид снизуВид сверху и вид снизу

Компоновка
При компоновке внимание было уделено дистанцированию высоковольтных коммутаторов от низковольтных цепей, компактности отдельных ключей для минимизации длины дорожек проводящих большие токи, распределению силовых компонентов способом обеспечивающим наилучший отвод тепла. Таким образом все силовые транзисторы оказались на нижнем слое.
При необходимости на них всех можно установить единый радиатор.

На посадочном месте дисплея находится ряд отверстий под установку разъема. Если дисплей и энкодер нужно вынести, то ставится разъем на который выходят все необходимые для выноса сигналы.

Расположение основных узлов на платеРасположение основных узлов на плате

Работа по правилам.
В Altium есть оригинальный механизм правил. Правила позволяют делать автоматическую проверку соответствия трассировки заданным технологическим нормам.

Для данной платы были созданы следующие основные правила:

Минимальные зазоры по умолчаниюМинимальные зазоры по умолчаниюМинимальная, предпочтительная и максимальная толщина проводниковМинимальная, предпочтительная и максимальная толщина проводниковМинимальные и максимальные размеры переходных отверстийМинимальные и максимальные размеры переходных отверстий

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

Слева диалог установки зазоров, справа диалог установки минимального пути для класса цепей 220VСлева диалог установки зазоров, справа диалог установки минимального пути для класса цепей 220V

Путь (creepage) должен быть строго таким как указывают стандарты, а вот зазор может быть меньше если между площадками находится вырез в плате. Очень часто высоковольтные разъемы имеют дистанцию между выводами меньшую чем допустимо при указанном на них максимальном напряжении. В этом случае делают вырезы чтобы обеспечить необходимый creepage.

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

Площадки и их особенности

Как и при разработке программного обеспечения так и при разработке платы не имеет смысла сразу уделять много внимания форме площадок. Для этого есть рефакторинг и в Altium этот рефакторинг делать достаточно удобно.
Но несколько советов все же дам.

Площадки со скруглениямиПлощадки со скруглениями

Во первых, все площадки скругляю (или почти все, насколько видится целесообразным) .
Это заметно повышает плотность трассировки и заполняемость полигонами. Исключение составляют только первые пины многовыводных компонентов. Их делаю прямоугольными чтобы сразу визуально отличить и понять ориентацию компонента с какой бы стороны платы мы не смотрели (если это не SMD компонент)

Посадочное место силового транзистора. Красным обозначены открытые области маски для пасты. Посадочное место силового транзистора. Красным обозначены открытые области маски для пасты.

Следующим важным моментом является маска для нанесения пасты. Все области открытой маски для пасты на поверхности платы должны быть примерно одинаковыми. Так требуют технологи контрактных сборщиков чтобы лучше контролировать количество наносимой пасты.
Поэтому под большие площади занимаемые SDM транзисторами маска пасты делается не сплошной, а перфорированной. Если ее сделать сплошной, то переизбыток пасты вызовет миграцию корпуса силового транзистора при пайке с сторону со значительным смещением (доли миллиметра). Такой миграции хватит чтобы замкнуть затвор с истоком.
Если переходные отверстия находятся на площадке, то их диаметр не более 0.3 мм и над ними закрыта маска пасты. Паста никогда не ложится на переходные. С обратной стороны платы у таких переходных всегда открыта паяльная маска. Такие меры вполне эффективно препятствуют массивному перетеканию припоя на обратную сторону и образованию дефектов вспучивания паяльной маски на обратной стороне.

Площадки измерительных шунтов.
Оба показанных ниже варианта приемлемы. Но все же первый вариант выдаст менее точное измерение. И погрешность будет выше чем заявленная погрешность номинала самого шунта.

Шелкография

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

Какие рекомендации действительно важны

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

Неоднозначная рекомендация по применению термобарьеровНеоднозначная рекомендация по применению термобарьеровВажная рекомендация в отношении паяльной маски Важная рекомендация в отношении паяльной маски

Рекомендация по установке термо-барьеров. Она напрямую конфликтует с требованиями ЭМИ и теплопередачи, однако выполнение рекомендации обеспечивает исключительное удобство ремонта. Как правило если элемент не греется, не проводит большие токи, то ремонтировать его не приходится, если только не считать тюнинга.
Современные контрактные сборщики, по моему опыту, не отдают плат с дефектом надгробного камня, а исправляют его у себя, если он появляется. Они также и претензий не предъявляют в случае отсутствия термо-барьера.
Что же касается ремонта, то современные паяльники без труда справляются с отпайкой компонентов без термо-барьеров. Словом, рекомендация сомнительная.

Рекомендация для паяльной маски. Это очень важная рекомендация. Области открытой паяльной маски ни в коем случае не должны охватывать соседние площадки если они принадлежат разным цепям. Иначе практически гарантировано где-то возникнет замыкание между площадками и контрактный сборщик отдаст плату с дефектом потому что визуальный контроль его не обнаружит, так как замыкания могут быть под корпусами микросхем.

Проблемы земли
Вопрос о земле - важнейший в цифро-аналогово-силовых схемах. Малейшая неосмотрительность может привести к тяжелым финансовым последствиям либо, в лучшем случае, к значительной деградации качества работы схемы.
У Altium есть инструмент под названием PDN Analyzer для точного расчета потенциалов в проводниках с большими токами к которым относятся и полигоны земель. Однако в данном проекте этот анализатор не использовался. Все же это дорогое и трудоемкое удовольствие оправданное в более сложных проектах. Здесь подход был проще.
Были идентифицированы несколько основных доменов земли которые необходимо максимально разделить:
- цифровая земля микроконтроллера
- аналоговая земля микроконтроллера
- возвратная земля силовых ключей и DC/DC преобразователя
- чувствительная земля DC/DC преобразователя
- непосредственно заземление

Потом эти земли были обратно на схеме разделены специальными компонентами-перемычками представляющими собой просто короткие дорожки, как на рисунке ниже

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

Ниже показана результирующая топология каждой из земель.

На этом описание трассировки заканчивается. Насколько это возможно в формате короткой статьи я постарался отметить самые важные на мой взгляд моменты.

Следующим этапом будет программирование, наладка и тестирование платы. Но об этом позже.

Подробнее..

OpenRPNCalc делаем бескомпромиссный калькулятор

18.06.2021 02:21:22 | Автор: admin
Калькулятор как он есть.Калькулятор как он есть.

Вообще-то в блогах я обычно выступаю в роли фриковатого научного сотрудника, занудным голосом вещающего про какое-нибудь измерение параметров Стандартной Модели. Но сейчас я попробую совсем другой жанр. Короче говоря, в один прекрасный день я понял, что мне не хватает железного научного калькулятора. Пришлось делать самому.

Но зачем?

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

Калькуляторов у меня не было с окончания универа (последний был Citizen SRP-75). Как оказалось, дизайн их интерфейса с тех пор изменился неузнаваемо и топовые модели теперь скорее напоминают какую-нибудь Wolfram Mathematica. Ничего не имею против, но если мне надо посчитать действительно что-то сложное, гораздо удобнее это сделать на компьютере. В калькуляторе же мне хотелось бы иметь минимальный набор функций, которые мне нужны, без необходимости путешествовать по многоуровневым меню. И не иметь тех, которые точно не нужны, т. к. место на клавиатуре не резиновое.

Как оказалось, есть небольшая фирма SwissMicros, которая выпускает неплохие копии старых программируемых калькуляторов Hewlett Packard (HP) на основе современных ARM-процессоров и симулятора Free42 с открытым кодом. Но опять же, это не идеал есть некоторые функции (об этом ниже), которые мне пришлось бы программировать, а запускать программы это совсем не то же самое, что нажать на кнопку.

Вот примерно такая мотивация привела меня к решению сделать свой калькулятор (с трудом удерживаюсь от цитирования персонажа Футурамы). Хотя, честно, полностью рациональным такое решение назвать нельзя, и по большей части оно объясняется диагнозом руки чесались.

Для разнообразия я решил в кои-то веки сделать проект, который не выглядит слишком колхозно, которым реально можно пользоваться, и может быть даже не слишком прячась от коллег по работе. Хотя это и не первый раз, когда я делаю какую-то электронику, до сих пор я в основном возился с DIP-корпусами, макетками и синей изолентой, а тут сам бог велел сделать что-то посовременнее. Соответственно, я получил море новых впечатлений, разбираясь с многими вещами с нуля (программирование для ARM, пайка SMD, разработка в KiCAD и OpenSCAD, 3D-печать). Готовьтесь, сейчас я ими здесь поделюсь. Вдруг кому-то поможет, или кто из более опытных посоветует что-нибудь дельное.

Код, как и вся, с позволения сказать, документация выложены на GitHub. Да, код ужасен. Да, постараюсь исправиться :)

Концепция

Итак, будем делать научный, непрограммируемый, калькулятор, в который при желании можно добавлять новые функции. Как бывший член экипажа лунолёта Кон-Тики, я, конечно, обязан был сделать калькулятор с обратной бесскобочной (она же польская, она же RPN) логикой. Благо, её и программировать легче.Ещё одним преимуществом RPN поделился со мной пользователь с сайта Hackaday: такой калькулятор у вас вряд ли кто попросит попользоваться на время.

Итак, что хотелось мне иметь в идеале в своей машинке:

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

  • Из того, что редко попадается в коммерческих калькуляторах некоторые функции для работы со случайными распределениями: erf(x) (бывает частенько, но обычно с доступом через меню) и обратная к ней erf-1(x) (никогда не встречал), интеграл от распределения хи-квадрат для данного числа степеней свободы, распределение Пуассона. При этом мне не нужен статистический режим как таковой с вводом больших массивов данных для тяжёлой обработки данных у меня всё равно есть компьютер.

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

  • Некоторые очень специфические функции, в основном связанные с релятивистской кинематикой.

  • Стандартные режимы отображения SCI (с мантиссой и порядком) и ENG (с порядком, кратным трём) и изменяемым количеством значащих цифр мантиссы (3-10). В режиме ENG, к тому же, можно для удобства сделать показ префиксов единиц СИ (m, k, M и т. д.).Диапазона double будет более чем достаточно. SwissMicros делает калькуляторы c quarduple precision (что ещё ждать от швейцарской-то фирмы?), но в нашей немудрёной науке, если в вычислении используется больше шести-семи значащих цифр с вычислением что-то не так.

  • Обратная бесскобочная логика со стеком из 4 элементов (X,Y,Z,T) плюс регистр предыдущего результата (LASTx или X1) как у HP или Б3-34. Есть ещё вариант сделать бесконечный стек, как у старших моделей HP, но пока я ограничился более простым вариантом.

  • Что бы самодельщик ни делал, получаются либо часы, либо погодная станция, поэтому я решил отказаться от любых функций, которые не относятся непосредственно к калькулятору. Часы у меня и на руке есть, а погодную станцию я уже собрал на Raspberry Pi. Единственный датчик, который есть в проекте напряжение питания батареи.

Электроника

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

С экраном вопросов нет это будет монохромный ЖКИ дисплей Sharp Memory LCD, как у SwissMicros DM42. Судя по многим отзывам, это практически идеальный дисплей с хорошей контрастностью, очень малой потребляемой мощностью, и управляется по последовательной шине SPI. В нашем случае это будет модуль LS027B7DH01размером 2.7 (размер изображения 60x40 мм) и разрешением 400x240 точек. С таким разрешением можно показывать все 4 регистра стека одновременно, да и для режима вычислений с ошибками это будет полезно.Модуль потребляет всего около 20 мкА от 5В в режиме показываю, но ничего не делаю.

Процессор, недолго думая, я тоже взял из DM42: STM32L476, правда, в корпусе LQFP64 (модификация STM32L476RG). В DM42 стоит тот же процессор в корпусе LQFP100 (100 пинов), но нам не нужны ни внешний Flash, ни SD-карта, так что 64 пина хватит за глаза. Процессор может работать на частоте до 80 МГц, есть 128 кБ оперативки и 1 МБ программного флеша ought to be enough for anybody. Ну и ещё много всяческого добра, которым мы по большей части не будем пользоваться.

С клавиатурой вопросов больше. Многие обозреватели жалуются, что у SwissMicros слишком жёсткая клавиатура, быстро кнопки нажимать неудобно, и вообще ничто не может сравниться с классикой HP. Попробуем найти что-то получше, чем купольные кнопки на DM42. Первые попавшиеся тактовые кнопки с AliExpress мне показались слишком тугими. Порывшись по каталогам, я нашёл самые мягкие и достаточно плоские из тех, которые можно заказать, не особо напрягаясь Panasonic EVQQ2B01W с усилием нажатия 50 г (при том, что обычные кнопки, которые продаются на каждом углу, обычно требуют усилие в 150-200 г).

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

Схема всего девайса элементарная и показана на рисунке выше. Собственно, кроме STM32 в стандартном подключении, клавиатурной матрицы и пары разъемов (один для ЖКИ, другой для программатора) там есть только преобразователь напряжения 3В в 5В для питания ЖКИ на очень экономном чипе TPS61222. STM запитан непосредственно от литиевой батарейки. Не знаю, хорошая ли это идея, или лучше было поставить стабилизированный преобразователь. Кварц для тактирования процессора решил не ставить (можно и встроенным RC генератором обойтись), но на всякий случай поставил часовой кварц.

Кстати, по поводу питания ЖКИ. То, что нарисовано сейчас на схеме, хоть и работает, но не совсем правильно. Как оказалось уже после того, как я развел и заказал плату, преобразователь TPS61222 не полностью отключает выходную цепь от питания при низком уровне сигнала 5V_EN, а только выключает сам преобразователь, оставляя на выходе 3В вместо пяти. Надо внимательнее читать даташиты! Попутно оказалось, что и от трех вольт ЖКИ прекрасно работает, и даже контрастность не страдает. Может быть, в следующей версии платы преобразователь можно просто выкинуть?

Рисовал схему и разводил плату в KiCAD. Почти все элементы там нашлись в стандартной библиотеке, кроме 10-пинового разъёма Molex с шагом 0.5 мм для ЖКИ, его пришлось нарисовать самому по образцу какого-то другого с другим шагом.

С лазерным утюгом я не дружу, поэтому плату заказал на одном из специализированных сайтов (в плате нет никаких тонкостей, так что любой дешёвый PCB-сервис должен с ней справиться). Дисплей Sharp и разная мелочь продаётся на AliExpress, а вот с покупкой процессора STM я, похоже, пал жертвой дефицита чипов. Три китайских продавца меня кинули (причём один сделал вид, что всё выслал, тянул две недели, после чего уверял, что посылку задержала таможня, а сам поднял цену на тот же чип раза в три). К счастью, в один прекрасный момент несколько сотен нужных чипов выбросили на сайте Mouser, из которых я и отхватил несколько штук. На том же Маузере я заказал и кнопки Panasonic, т.к. на Али практически все кнопки noname с непонятно какими характеристиками.

Несмотря на мой изначальный страх, пайка SMD пошла на удивление легко, даже разъём LCD и сам STM32 с ножками с шагом в 0.5 мм паяются без проблем. Оказалось, пора уже было забыть про натуральную сосновую канифоль и перейти на современную бездушную паяльную пасту. Немного больше тренировки потребовала пайка разной мелочи типоразмера 0603 (резисторы, конденсаторы).

Собранная плата с обратной стороны. К плюсовому контакту батарейки припаян не предусмотренный в проекте штырь для того, чтобы запитывать плату от программатора STLink и измерять потребляемый ток. Собранная плата с обратной стороны. К плюсовому контакту батарейки припаян не предусмотренный в проекте штырь для того, чтобы запитывать плату от программатора STLink и измерять потребляемый ток. Собранная плата с уже прошитым STM32, вид спереди. Дисплей прилеплен на двусторонний скотч. Собранная плата с уже прошитым STM32, вид спереди. Дисплей прилеплен на двусторонний скотч.

Прошивка STM32

Как оказалось, найти информацию для того, чтобы начать программирование на STM32 с нуля, не так-то просто, похоже, из-за того, что альтернативных инструментов очень много, они быстро появляются и устаревают. Наверное, в конце концов лучше учиться писать на голом gcc, но для начала я хотел взять какой-нибудь IDE в стиле для чайников с визуальным конфигурированием процессора. В результате я использовал STM32Cube IDE. Я так и не смог добиться, чтобы он работал в Ubuntu, поэтому пришлось ставить ради него целую виртуальную машину с Windows 10.

Несколько слов о том, как работает прошивка. STM большую часть своего времени проводит в режиме STOP, в котором сохраняется вся память контроллера, разрешены внешние прерывания и прерывания по таймеру, но тактовый генератор остановлен. При этом все колонки клавиатурной матрицы установлены в ноль, а строки подтянуты к плюсу питания и сконфигурированы на внешнее прерывание по спаду сигнала. Когда одна из кнопок нажата, контроллер просыпается и начинает сканировать клавиатуру.

Функции для работы с дисплеем Sharp я писал сам по даташиту, и там всё оказалось очень просто. Система команд дисплея состоит, практически, из 2-х команд. Первая это очистка экрана. Вторая передача массива информации, который состоит из номера строки и 50 байт данных строки.Одна тонкость работы с дисплеем когда он включен, ему нужен постоянный внешний сигнал около 1 Гц для периодического изменения полярности электрического поля на ЖК-матрице. Этот сигнал генерируется по прерыванию от внутреннего таймера STM. При выключенном ЖКИ этот сигнал надо также выключать.

Собственно саму реализацию алгоритма работы калькулятора я сперва отладил на большом компьютере, написав заглушки для функций работы с клавиатурой и дисплеем. STM32L476 поддерживает полную математическую библиотеку gcc, более того, вычисления с плавающей точкой там реализованы в железе, так что всё работает очень быстро. Я понизил частоту работы процессора до 8 МГц, чтобы ограничить максимальный потребляемый ток (который тогда получается около 4 мА при полной нагрузке), при этом никаких видимых задержек при вычислениях не появляется. При меньшей частоте начинает заметно тормозить вывод на экран.

Для прошивки я купил один из китайских клонов программатора/отладчика ST-Link v2, которые продают где угодно за копейки. С ним вышла небольшая проблема: судя по всему, мой экземпляр не умеет делать connect under reset, из-за чего STM в состоянии спячки я программировать не могу. Пришлось предусмотреть в прошивке волшебное сочетание кнопок (Shift+RESET), при котором контроллер не уходит в STOP, а ждёт соединения с программатором. Неприятно, но не смертельно.

Вся прошивка занимает примерно 120 кБ программной памяти. При этом большую часть объёма составляют растровые экранные шрифты (размером от 6x8 до 24x40).

Корпус и клавиатура

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

Промаявшись несколько вечеров с глючным FreeCADом (не покупать же программы Autodesk за бешеные деньги), я понял, что гораздо легче написать программу, которая описывает геометрию детали, чем ползать мышкой по меню, поэтому перешёл на OpenSCAD. Хотя у него есть свои ограничения: например, в отличие от FreeCAD, в нём сложно делать фаски и скругления граней.На OpenSCAD дело пошло гораздо веселее.

Корпус и клавиатура, нарисованные в OpenSCAD.Корпус и клавиатура, нарисованные в OpenSCAD.

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

Две части клавиатуры. Можно было бы напечатать их как одну деталь, но тогда пришлось бы делать поддержки и отколупывать их потом от каждой клавиши. На клавиши уже наклеены стикеры с надписями. Две части клавиатуры. Можно было бы напечатать их как одну деталь, но тогда пришлось бы делать поддержки и отколупывать их потом от каждой клавиши. На клавиши уже наклеены стикеры с надписями.

Корпус получился не очень тонким (полная толщина 12.5 мм), хотя внутри он по большей части пустой. Всё из-за того, что гнездо для батарейки CR2032 довольно высокое (5.5 мм) и с этим сложно что-либо поделать. Для следующей версии надо будет изучить вопрос, существуют ли более тонкие держатели для CR2032, которые к тому же можно установить в вырез на печатной плате. Таким образом можно было бы сэкономить как минимум пару-тройку миллиметров толщины.

Не буду здесь долго описывать сагу про печать корпуса скажу только, что он получился лишь с четвёртой или пятой попытки, при этом пришлось тонко настраивать геометрию моего Ender 3 (перпендикулярность осей X и Y), иначе корпус вело винтом после соединения двух половин. Печатал пластиком PETG.

Надписи на кнопках и на корпусе я напечатал на тонкой матовой клеящейся плёнке для лазерных принтеров (чего только не существует в мире канцелярских товаров!). Кажется, эту идею я нашёл на каком-то форуме любителей самостоятельно делать наклейки для русификации клавиатур (да, такое тоже бывает). Сам PDF-файл с надписями и линиями отреза генерируется питоновским скриптом с использованием библиотеки matplotlib. А что ещё можно использовать для графики с обилием математических символов?Напечатанный текст держится на стикерах намертво, их можно даже мыть. Тот стикер, который на корпусе, за счёт большой площади прилип надёжно. К сожалению, стикеры на кнопках не очень прочно прилипают и неосторожным движением их можно отодрать. Впоследствии, возможно, их лучше будет покрыть сверху лаком, но пока надписи на клавиатуре не устаканились, и так сойдет. Минус такой технологии наклейки будут хорошо видны только на белом корпусе.

Результат

Вот что в результате получилось. Дисплей в режиме отображения ENG с 6 значащими цифрами и активированным режимом вычислений с неопределенностями.Вот что в результате получилось. Дисплей в режиме отображения ENG с 6 значащими цифрами и активированным режимом вычислений с неопределенностями.

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

  • F, G клавиши shift. Пока в основном задействована только F. G нужна только для обратного направления преобразований (), (), а дальше будет использоваться для новых функций, если таковые появятся.

  • Mode изменение режима отображения чисел (FIX, SCI, ENG).

  • Uncr включение/выключение режима вычислений с неопределённостями (UNCERT).

  • Prec переключение количества значащих цифр мантиссы (от 10 до 3 циклически, с F в обратную сторону).

  • Drop, X<>Y, Rot работа со стеком. LASTx вызов результата предыдущей операции.

  • DR переключение измерения углов между градусами и радианами, D<>R то же с преобразованием значения угла в регистре X.

  • RP, PR перевод между декартовыми и полярными координатами.

  • N(x), N(x-y) работают только в режиме неопределённостей, и выполняют, соответственно, вычисление стат. значимости значения в регистре X (значение, деленное на неопредёленность) и значимости разности значений в регистрах X и Y.

  • (), (), p(zxy) те самые специфические функции, которые мало кому нужны: вычисление псевдобыстроты (pseudorapidity), релятивистского гамма-фактора, вычисление импульса в центре масс двухчастичного распада.

  • /-/ обычное изменение знака числа в регистре X, а переключение между вводом значения и ошибки в режиме UNCERT.

Планы на будущее

В принципе, машинка уже сейчас вполне функциональная, но всегда можно что-то улучшить:

  • Есть ещё резервы в плане уменьшения энергопотребления. Сейчас калькулятор расходует около 50 мкА в режиме со включенным дисплеем, и 40 мкА с выключенным. Как я уже говорил, полностью питание с дисплея сейчас не снимается, хотя надо бы это пофиксить. Кроме того, можно улучшить алгоритм опроса клавиатуры: сейчас, когда калькулятор включен и работает дисплей, процессор не засыпает, пока нажатая кнопка не отпущена, и потребляет при этом около 4 мА. Надо бы здесь тоже задействовать внешние прерывания и режим STOP.

  • Функция сканирования клавиатуры понимает только одну нажатую кнопку за раз. Хотелось бы сделать режим two-key rollover, когда регистрируется кнопка, нажатая до того, как отпущена предыдущая, чтобы кнопки надёжнее срабатывали при быстром наборе.

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

  • Клавиатуре всё ещё далеко до HP и даже до Citizen. Кнопки нажимаются легко, но глубина нажатия всего 0.2 мм это не очень комфортно. Не знаю, можно ли сделать что-то сильно лучше в домашних условиях, не заказывая кастомную мембранную клавиатуру.

  • Что хотелось бы из нового функционала. Более удобное отображение значений с неопределённостью, когда есть ненулевой порядок, в виде (10.1)e-10 вместо теперешнего 1e-10 1e-11. Больше регистров памяти (пока только один). Целочисленный режим с булевыми функциями и переводом между двоичной, десятичной и шестнадцатеричной системами. Новые функции по мере надобности (вычисление распределений Пуассона и хи-квадрат пока не сделал, но это дело техники).

По мере работы над проектом, я выкладываю новости в блог Hackaday.io.

P.S. Спасибо @Boomburumза приглашение и советы.

Подробнее..

Проект электронного мультитула QUARK. Часть 2

11.06.2021 16:11:37 | Автор: admin

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

QUARKQUARK


Для начала напомню, что собой представляет устройство. QUARK это электронный мультиинструмент, в первую очередь, ориентированный под разработку микроконтроллерных устройств, Arduino, ESP32, STM32, IoT, домашняя автоматизация и тому подобные девайсы.

Че определяется такая ориентированность? Во-первых, набором функций. И если первая часть стандартна для типичного мультиметра:

Вольтметр

Амперметр

Измерение сопротивления

Измерение емкости

Измерение индуктивности

то UART логгер и UART плоттер вещи необходимые ардуинщикам и иже с ними. Осциллограф конечно не блещет скоростью 400 килосемплов, однако проверки ШИМ сигналов и сигналов с различных датчиков, его более чем достаточно.
Во-вторых идеологией работы с выводимыми значениями. Скажем, ардуинщику практически никогда не требуется знать напряжение с точностью в одну тысячную процента, зато значение логического уровня параметр всегда необходимый:

ВольтметерВольтметер

Точно так же мгновенное потребление тока, при разработке IoT, параметр в себе. Гораздо удобнее проследить изменение в динамике при различных режимах работы устройства:

АмперметерАмперметер

Калькулятор цветовой и СМД маркировки компонентов вещь полезная и нужная, но, согласитесь, так удобнее:

СопротивлениеСопротивление

А сейчас опишу свой личный опыт работы с осциллографом. В свое время приобрел себе DS203. Вполне себе, по характеристикам, годный девайс, с жутко неудобным управлением:

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

ОсциллографОсциллограф

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

Теперь пару слов о схемотехнике. Вся система построена на ESP32 со всеми вытекающими из нее ништяками (bluetooth, Wi_fi). Для измерения напряжения и тока я использовал готовый чип INA219. Подключается по I2C шине, имеет малый размер и вполне достойные, для моих задач, параметры. Сопротивление измеряю стандартным делителем напряжения, но в качестве известного сопротивления использую цифровой потенциометр AD5245, что освобождает пины контроллера, а учитывая тот факт, что AD5245 управляется по I2C, так и вообще нет нужды в дополнительных пинах. Тем же способом измеряю емкость конденсаторов по известному методу заряда до 63.2%. На больших емкостях AD5245, подключенное к питанию имеет низкое сопротивление, а при низких, заряд идет через 1 мегаомный резистор. Таким образом, минимальная измеряемая емкость определяется пикофарадами.
Индуктивность меряю резонансным методом при известной ёмкости по срабатыванию компаратора.
Тракт осциллографа реализован на Rail-to-Rail ОУ AD8541, усиление сигнала регулируется вторым AD5245. Соответственно, сигналы как с высоким, так и с низким размахом амплитуды, поступают на вход АЦП в максимальном разрешении. Для оцифровки использую аппаратный I2S, складываю весь буфер в DMA и вывожу на LCD и, при необходимости, отсылаю по bluetooth.

UART вход реализован аппаратно. Предварительно определяется Baud rate, после чего происходит инициализация драйвера UART с определенными параметрами.
На плате присутствует датчик ускорения LSM6DS3TR. Вообще я его планировал использовать для автовыключения, но ничто не мешает вывести с него данные на экран.


А теперь хотелось бы сказать пару слов о тех нововведениях, которые были реализованы на основе предложений к предыдущей статье.

Во-первых, универсальный прикручиваемый щуп:

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

Ну и самое главное. По-совету читателей я таки запустился на краудфандинговой платформе Crowdsupply. Некоторое время вел переговоры, совместно настраивали страницу и готовили описание. Платформа ориентирована на железные open source проекты, а значит и мое устройство будет выложено в открытый доступ. Всех, кому проект интересен приглашаю поддержать старт и тут я снова сделаю упор на том, что это open source.

Подробнее..

Внедрение DDR5 будет молниеносным к 2026 году новая память займет 90 рынка

16.06.2021 12:16:05 | Автор: admin
Согласно последнему отчету Yole Developments, внедрение новой памяти DDR5 будет происходить, по меркам сегмента, практически молниеносно. Аналитики компании считают, что уже к 2023 году сумма поставки модулей памяти нового поколения превысят $200 млрд, а к 2026 году новая память займет 90% мирового компьютерного и серверного рынка, вытеснив актуальный сейчас стандарт DDR4.



Такой взрывной рост DDR5 связывают с несколькими аспектами.

Первое почти все основные производители памяти закончили разработку своих продуктов и уже представили модули широкой общественности. Некоторые из них уже запустили производство и в скором времени начнется активная отгрузка памяти DDR5 всем желающим.

Второе доминирующее положение DDR5 относительно DDR4. Согласно спецификациям, которые были разработаны ассоциацией твердотельных технологий JEDEC, стартовая частота новой памяти составляет 4800 Mhz сейчас это верхнее значение для DDR4. В перспективе нормальной рабочей частотой модуля на широком старте технологии DDR5 будет 5500-6500 Mhz, вплоть до 8400 Mhz в стоке.

Повсеместное внедрение DDR5 начнется после выпуска производителями соответствующих материнских плат и процессоров, которые будут способны работать с новым стандартом оборудования.

Спецификации JEDEC были опубликованы чуть менее, чем год назад 14 июля 2020 года. Согласно тогдашнему анонсу JEDEC, спецификация DDR5, по сравнению с DDR4, поддерживает вдвое больший реальный канал, вплоть до 6,4 Гбит/c у DDR5 против имеющихся 3,2 Гбит/c у DDR4.

Одним из лидеров данного направления является корейская компания SK Hynix один из старейших и крупнейших производителей чипов оперативной памяти в мире. Еще в конце 2020 года корейцы представили первые тестовые модули памяти публике и уже тогда характеристики впечатляли. Тогда новая память показала скорость передачи данных в 4,8-5,6 Гбит/c на контакт. Это 1,8 раза больше, чем базовые показатели памяти предыдущего поколения DDR4. Вся эта скорость сопровождается снижением базового напряжения на планке памяти с 1,2 V до 1,1 V.

В новой памяти все так же будет 288 пинов, то есть в это плане DDR5 является преемником стандарта DDR4, но сама распиновка по модулю будет другой.



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

Но только серверным сегментом все не ограничится. Скорее всего, массовый старт DDR5 произойдет в рамках одного года как в бизнес, так и в потребительском сегменте. Еще при выходе последних пользовательских процессоров Ryzen 5ххх, представители AMD заявляли, что следующая линейка процессоров Ryzen 6xxx под кодовым названием Rembrandt на 6 нм архитектуре Zen 3 Refresh выйдет с поддержкой памяти DDR5. В крайнем случае, это произойдет чуть позже, после выхода архитектуры Zen 4.

Учитывая то, что как минимум в России процессоры Ryzen последний год стабильно доминируют в топах продаж (первые 4 из 5 строчек на Яндекс.Маркете по популярности почти всегда заняты процессорами AMD), можно ожидать и массового перехода пользователей как на Ryzen 6xxx, так и на новую память.



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

Intel тоже не собирается сдавать позиции. Ранее планировалось, что процессоры синих с поддержкой DDR5 появятся на рынке в 2021 году вместе с семейством Tiger Lake-H, однако релиз был перенесен на год: первые камни, способные работать с DDR5, будут выпущены на архитектуре Alder Lake в 2022 году.

Важны и объемы новых модулей. Минимальный размер планки нового стандарта 16 Gb, что должно удовлетворить спрос на все больший и больший объем памяти не только в серверном, но и пользовательском сегменте. Сейчас именно 16 Gb является приемлемым минимумом для домашних станций или мощных ноутбуков. Максимальный объем планки памяти DDR5 согласно спецификации JEDEC, будет составлять 256 Gb.

Апгрейд серверной инфраструктуры процесс не самый быстрый. Однако на фоне роста потребности в мощностях дата-центров и развития облачных технологий, прогноз аналитиков Yole Developments может оказаться правдивым. Считается, что рынок ЦОДов сейчас находится на пике своего развития. Главная тройка игроков этого рынка в лице Amazon, Google и Microsoft активно вкладывает деньги в развитие своих облачных технологий, не отстают от них и частные дата-центры, которые предоставляют бизнесу услуги хостинга.

В 2021 году наметился и новый тренд дата-центры от компании Nvidia для осуществления облачных вычислений. Согласно плану Nvidia, их центры обработки данных будут включать графические процессоры, блоки обработки данных (DPU) и процессоры, причем каждая линейка продуктов будет получать обновленную архитектуру каждые два года. На рынке наблюдается рост популярности новых процессоров и уход от старых лошадок Intel к новому оборудованию, в том числе и появление доли рынка у новых AMD EPYC. Всему этому хозяйству потребуется новая быстрая память.

Именно это и обеспечит рост рынка DDR5 и быстро приведет его к доминирующему положению в ближайшие три-пять лет.



На правах рекламы


Наша компания предлагает серверы в аренду с современными процессорами от Intel и AMD под самые разнообразные задачи. Максимальная конфигурация 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Создайте свой собственный тариф самостоятельно в пару кликов!

Подписывайтесь на наш чат в Telegram.

Подробнее..

Раскрашиваем таможенную статистику. Или сколько и каких микросхем ввозят в Россию? (3)

28.05.2021 16:10:14 | Автор: admin

Продолжим анализировать какие иностранные микросхемы используются в России на основании таможенной статистики. Как мы это делаем ? Из данных ФТС выбираем записи в которых указан номинал ввезенной микросхемы, и используя внутреннюю базу данных дополняем эту запись основными параметрами микросхемы, начиная от производителя, разрядностями, диапазонами питания и заканчивая типом корпуса, упаковки и так далее. В данной части посмотрим микросхемы памяти.
Часть 1. Общий анализ
Часть 2. АЦП/ЦАП и Микроконтроллеры

Всего за 2019 год было ввезено чуть более 130К микросхем памяти. При этом нужно понимать, что именно микросхем. Например "планки" динамической памяти для компьютеров или карточки памяти ввозятся уже как модули или комплектующие для компьютеров и к сожалению в статистику микросхем не попадают. Мы же рассматриваем чистые микросхемы, которые ввозят что бы запаять.

Все микросхемы мы можем разделить на энергонезависимые EERPOM, FLASH, FRAM, т.е. сохраняют информацию при отсутствии питания, энергозависимые динамические ОЗУ (DRAM) и статические (SRAM) и остальные, например конфигурационные Flash, используемые для хранения "прошивок" FPGA и NVSRAM - это статическая ОЗУ, но с батарейкой, за счет которой она превращается в энергонезависимую. Это очень древнее решение, но до сих пор кто то их использует, хотя на смену уже пришли FRAM.

Как и ожидалось самыми массовыми являются микросхемы энергонезависимой памяти (суммарно более 116К), вслед за ними идет динамическая память (13К). Остальная память в очень малых объемах. Для начала рассмотрим поподробней динамическую память.

Динамическая память

Наибольшей популярностью пользуются микросхем DDR3. Но и предыдущие поколения потребляются достаточно массово.

Лидером среди производителей является Micron (к сожалению не наш). Самой популярной микросхемой является MT41K128М - DDR3-1600, Объемом 2 Гбит от Micron, по цене примерно 3$.

Энергонезависимая память

Для энергонезависимой памяти все привыкли к USB флешкам или карточкам памяти с объемом измеряемым десятками Гигабайт.

Но в виде микросхем, как оказалось, наиболее популярными являются совсем небольшие объемы до 1 Мбита.

Безоговорочным лидером в EERPOM является STM.

На рынке Flash памяти представлено гораздо больше производителей, а вот рынок FRAM практически весь принадлежит Fujitsu.

У EEPROM памяти наиболее популярный интерфейс I2C

Но в Flash памяти I2C вообще не встречается, и основным является SPI.

Какой корпус наиболее популярный? Восьми выводные корпуса, SO-8 и его аналоги.

Так что если вы захотите сделать микросхему энергонезависимой памяти, то что бы она была максимально массовой ее объемом должен быть ~1 Мбит, с интерфейсом I2C (ну или SPI, мне он больше нравится) и в 8-ми выводном корпусе. Одна проблема, ее стоимость должна быть около 0,4$ за штуку. Самая популярная микросхема EEPROM - это M24512 от ST с объемом 512 Кбит и ценой 0,3$. И ST обещает выпускать ее еще не менее 10 лет.

Подробнее..

УСКОРЕНИЕ ПРОЕКТИРОВАНИЯ РЧ-, СВЧ-УСТРОЙСТВ (25)

28.05.2021 20:23:43 | Автор: admin

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

Устройства IoT работают на высоких частотах с более широкой полосой пропускания.
Прогнозируется огромный спрос на разработку РЧ-, СВЧ-устройств в различных сферах:

  • IoT
  • IoV
  • Умный дом
  • Умный город
  • Медицинские системы
  • Носимая электроника
  • Интеллектуальные системы в аграрной промышленности
  • Интеллектуальные системы в индустриальной промышленности


Урок 2 Обновление схемы и размещение РЧ-объектов на плате


В этом уроке вы добавите на схему недавно созданную антенну и разместите ее на плате.

  1. Дважды кликните по иконке PADS Pro Designer VX.2.x на рабочем столе или выберите
    Меню ПУСК > PADS Pro Tools VX.2.x > PADS Pro Designer VX.2.x.
  2. На стартовой странице PADS Professional Designer нажмите кнопку Open и откройте
    C:\RF Design\Lesson2\Lesson2.prj.
    • Если появится диалоговое окно лицензирования, убедитесь, что опция PADS Professional RF Design установлена, и нажмите OK

  3. Откройте лист Ant двойным кликом по Ant в окне Navigator.
  4. Далее добавим 4 антенны в наш проект
    • Если еще не открыт, откройте Databook
      • нажмите на иконку Databook

    • Выберите иконку Show CL View на панели Databook
    • Откройте вкладку Symbol View.
    • Напротив [Local Symbols] должно отображаться имя символа DXF_PatchAnt. Выделите его
    • Кликните по изображению символа ЛКМ и перетащите его на страницу.
  5. Далее нам нужно добавить соединения
    • Нажмите на иконку Net на панели инструментов

    • Кликните ЛКМ по пину и удерживайте, чтобы нарисовать цепь.
      Заметка: Во время удерживания ЛКМ кликните ПКМ или нажмите на
      пробел, чтобы добавить излом.
    • Для завершения отпустите ЛКМ.
    • Дважды кликните по цепи, чтобы вызвать панель свойств.
    • Для присвоения имени цепи в панели свойств кликните в поле
      Name и выберите RX1 из выпадающего списка.
  6. Нам нужно создать еще 3 копии этой маленькой схемы
    • Выделите символ вместе с цепью
    • Удерживая клавишу CTRL, перетащите в любом направлении область выделения. На курсоре появится копия выделенных объектов.
    • Разместите копию под текущей схемой и отпустите ЛКМ.
    • Повторите эти шаги еще 2 раза, чтобы у вас было в общей сложности 4 антенны с цепями.
  7. Теперь нам нужно переименовать цепи в копиях схемы
    • Дважды кликните по каждой из цепей и задайте следующие имена в следующем
      порядке: RX2, RX3, RX4. Ваша итоговая схема должна выглядеть следующим
      образом:

  8. Прежде чем мы перейдем к топологии, нам нужно создать РЧ-группу для этих 4 антенн
    • Откройте инструмент RF Group/Ungroup выбрав соотв. иконку на панели RF

  9. Создайте новую группу, нажав на cинюю иконку на панели инструментов панели RF Group/Ungroup
  10. Переименуйте созданную группу в Patch

  11. Выделите на схеме все 4 антенны с цепями, затем нажмите кнопку Add selected items to the group, которая расположена в нижней левой части панели RF Group/Ungroup.
  12. Каждый РЧ-элемент в PADS Professional содержит дополнительные данные, описывающие физические свойства каждого объекта. Для просмотра этих данных необходимо открыть панель RF Parameters
    • На панели инструментов RF нажмите на иконку RF Parameters

  13. Попробуйте выбрать различные РЧ-объекты на странице Ant и просмотреть их параметры. Если это сегмент трассы, вы увидите информацию о длине, ширине, слое, группе, типе модели и т.д. Другие объекты, такие как антенна, которую мы создали, будут иметь меньше параметров
  14. Теперь мы можем перейти к топологии и разместить эти антенны
    • Для запуска топологического редактора нажмите на иконку PADS Professional Layout на главной панели инструментов

  15. Загрузится топологический редактор в состоянии, которое соответствует состоянию сразу после создания антенны. Импортированная из DXF антенна нам больше не пригодится, поэтому давайте удалим ее из проекта
    • Выделите антенну и нажмите Delete
    • Если появится предупреждение, нажмите OK
  16. Перед началом процесса размещения нам необходимо импортировать данные об антеннах из схемы в топологию, выполнив этап синхронизации
    • Перейдите в меню Setup > Project Integration
    • Нажмите на желтый светофор Forward Annotation
    • По окончании все четыре светофора должны быть зеленого цвета.
  17. Для размещения нашего РЧ-объекта мы будем использовать Component Explorer
    • Если он еще открыт, перейдите в меню Place > Component Explorer
  18. Начнем с размещения РЧ-группы P2
    • Кликните ПКМ по P2 и выберите Auto Arranger из контекстного меню
    • Переместите курсор в рабочую область редактора и разместите объект как показано на картике
    • Перед установкой элемента, отразите его по горизонтали, кликнув ПКМ и выбрав пункт Mirror Horizontally.

  19. Для группы P1 мы будем использовать функцию копирования
    • Выделите в рабочей области схему P2
    • Нажмите CTRL-C, группа P1 скопируется и будет закреплена на курсоре.
    • Зеркально отразите этот элемент
    • Разместите элемент как показано на рисунке

  20. И в завершение, мы разместим полосковую антенну
    • Выделите и перетащите группу Patch из Component Explorer в рабочую область редактора и разместите ее как показано на картинке

    • Выделите круглую область размещения
    • Кликните ПКМ и выберите Place Part
    • Антенна закрепится на вашем курсоре
    • Разместите антенну как показано на рисунке. Повторите процедуру размещения для остальных 3 антенн

  21. На этом урок 2 завершен.


Тестовые 30-дневные лицензии можно запросить ЗДЕСЬ
Материалы для этого и последующих уроков можете скачать ЗДЕСЬ
Вы также можете посмотреть видеоверсию этого урока:


Предыдущие уроки:
Урок 1 Создание РЧ-объектов в топологии и схеме

Присоединяйтесь к нам в соц. сетях:
Telegram-канал
Telegram-чат
YouTube

Филипов Богдан pbo, Product Manager по решениям PADS в компании Нанософт.
Подробнее..

Ускорение проектирования РЧ-, СВЧ-устройств (45)

11.06.2021 18:10:18 | Автор: admin

РЧ-, СВЧ-платы являются одним из самых быстрорастущих секторов в производстве печатных плат. С увеличением количества датчиков IoT, беспроводной электроники и смартфонов легко понять, почему. Но как узнать, работаете ли вы с РЧ или СВЧ-платой? Индустрия печатных плат считает, что любая плата, работающая на частоте выше 100 МГц, является РЧ-платой. Все, что приближается к 2 ГГц, является СВЧ.

Урок 4 Расширенные возможности трассировки РЧ-цепей


В этом уроке мы рассмотрим специальные возможности PADS Professional для трассировки радиочастотных каналов.

  1. Дважды кликните по иконке PADS Pro Designer VX.2.x на рабочем столе или выберите
    Меню ПУСК > PADS Pro Tools VX.2.x > PADS Pro Designer VX.2.x.
  2. На стартовой странице PADS Professional Designer нажмите кнопку Open и откройте
    C:\RF Design\Lesson4\PCB\Lesson4.pcb.
    • Если появится диалоговое окно лицензирования, убедитесь, что опция PADS Professional RF Design установлена, и нажмите OK

  3. Убедитесь, что выбрана схема отображения RF Routing. Это обеспечит видимость панели инструментов RF
  4. Доступны 2 специальных инструмента трассировки РЧ-цепей: Add Meander и Route Meander. Опции Add и Route очень похожи по функционалу. Add обеспечивает более точный контроль и поддерживает специальную опцию для тюнинга проводников. Route более прост и удобен в использовании, но в некоторых случаях его функционала может оказаться недостаточно. В этом уроке мы будем использовать оба этих инструмента:
    • Для трассировки антенны TX мы будем использовать инструмент Add Meander. Выберите Add Meander на панели инструментов RF

    • Кликните по пину TX2 усилителя в корпусе BGA, как показано на картинке:

    • По умолчанию Corner Type установлен на Miter. Измените значение на Free Radius и проложите трассу от пина до антенны. Обратите внимание на то каким образом прокладывается трасса
    • Отмените последнее действие. Выполните трассировку заново, но в этот раз установите Corner Type = Miter. Не забудьте установить контрольную точку перед соединением с самой антенной для того чтобы уменьшить длину тейпера
  5. Теперь давайте проложим трассу для TX1, одновременно согласовав ее длину с TX2 при помощи серпантина
    • Если функция не активна, снова выберите Add Meander на панели инструментов
    • Кликните по пину TX1 и начните трассировку
    • Кликните, чтобы зафиксировать трассу (установить контрольную точку) напротив входа антенны
    • Во время трассировки вернитесь в диалоговое окно Meander и измените General Mode на Serpentine
    • Вы должны увидеть серпантин (змейку) там где уже проложена трасса. Настройте параметры серпантина следующим образом:
      • Length: 150
      • Slope Height: 20
      • Gap Width: 50

    • Подключите трассу к антенне. Не забудьте установить контрольную точку непосредственно перед соединением с самой антенной, чтобы минимизировать влияние тейпера
    • Вы должны получить следующий результат:

  6. Давайте проделаем некоторые изменения с трассой
    • Выделите трассу TX2
    • Кликните ПКМ и выберите RF Parameters
    • Для настройки угловой конусности (corner taper) кликните по полю Miter % и установите значение 60
    • Нажмите Apply

  7. Теперь нужно проверить и подкорректировать добавленный серпантин. С помощью диалога RF Parameters можно проверить длину проводника для TX2 и TX1. Для изменения длины серпантина используйте функцию Edit Meander:
    • Выделите верхний сегмент серпантина
    • Кликните ПКМ и выберите Edit Meander
    • Теперь Вы можете отодвинуть верхний сегмент серпантина вверх, чтобы увеличить длину проводника. Отрегулируйте до тех пор, пока длина не будет в пределах 10 mils от ТХ2

  8. После того как мы растрассировали TX сигналы теперь можно перейти к RX. Для трассировки этих 4-х цепей мы будем использовать инструмент Route Meander:
    • Активируйте инструмент Route Meander

    • Ознакомьтесь с диалоговым окном настроек, но не вносите никаких изменений
    • Выберите одну из цепей RX и проложите трассу от пина усилителя (BGA) до порта антенны
    • Повторите этот процесс для всех 4 цепей

  9. Вы также можете использовать стандартные возможности трассировки для работы с РЧ-объектами
    • Удалите одну из проложенных трасс
      • Просто кликните ЛКМ по трассе, указанной на картинке

      • Нажмите кнопку Delete на клавиатуре
    • Нажмите F3, чтобы активировать интерактивную трассировку
      • Проложите трассу от усилителя (BGA) к порту антенны
  10. Обычный проводник может быть преобразован в РЧ-меандр, чтобы вы могли применять расширенные правила или добавлять скосы углов
    • Чтобы выделить весь проводник кликните по сегменту, показанном на рисунке
    • Кликните ПКМ и выберите Selection > Add Partially Selected Traces

    • Кликните ПКМ еще раз и выберите Convert to Meander
    • В диалоговом окне Convert Trace to Meander выберите из списка Group значение PA
    • Нажмите Convert

    • Вокруг трассы появятся области правил подобно тем проводникам, что вы уже растрассировали.
  11. На этом урок 4 завершен.

Тестовые 30-дневные лицензии можно запросить ЗДЕСЬ
Материалы для этого и последующих уроков можете скачать ЗДЕСЬ
Вы также можете посмотреть видеоверсию этого урока:


Предыдущие уроки:
Урок 3 Настройка правил проектирования для РЧ-объектов
Урок 2 Обновление схемы и размещение РЧ-объектов на плате
Урок 1 Создание РЧ-объектов в топологии и схеме

Присоединяйтесь к нам в соц. сетях:
Telegram-канал
Telegram-чат
YouTube

Филипов Богдан pbo, Product Manager по решениям PADS в компании Нанософт.
Подробнее..

Процессорам Alder Lake от Intel понадобятся новые системы охлаждения и материнские платы

25.05.2021 18:15:50 | Автор: admin

Совсем недавно в нашем блоге публиковалась статья о новой гибридной процессорной архитектуре Alder Lake от Intel. У процессоров на ее основе есть рабочее название Core-1800 SKU, но оно вряд ли будет финальным. Образцы новых чипов удалось изучить, они включают 8 высокопроизводительных ядер Golden Cove и 8 энергоэффективных ядер Gracemont.

Базовая тактовая частота чипа 1,8 ГГц. Но с включенным TurboBoost процессор сможет показать гораздо большую производительность, вплоть до 4,6 ГГц. Известно также, что новое поколение процессоров будет устанавливаться в новый сокет Socket V (LGA1700). Это касается как чипов Intel Alder Lake-S, так и следующего поколения, Raptor Lake-S. Что это значит? Полная несовместимость процессоров со всеми выпущенными на данный момент материнскими платами и системами охлаждения.

Предстоят новые траты


В целом, вполне логично, что новые сокеты означают необходимость приобретения новых материнских плат для процессоров 12-го поколения. Но здесь дело не только в сокетах у новых процессоров другая форма, что влечет за собой необходимость модификации сопутствующих систем.

Процессоры тоньше, чем предыдущее поколение, но зато длиннее и шире. Разработчики добавили в новинку новую теплораспределительную крышку. Чуть уменьшена и толщина сокета. Разница в размерах не так и велика всего около 1 мм, но ее придется учитывать.

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


Владельцу ресурса IgorsLAB удалось получить чертежи новых систем. Он подтвердил их несовместимость с существующими системами. В то же время, он связался с предсвителями Cooler Master, которые предоставили систему охлаждения MasterLiquid ML360 Sub-Zero. Ее удалось установить, причем результаты охлаждения были весьма неплохими. Но проблема здесь в том, что сама эта система потребляет большое количество энергии не меньше, чем сам процессор.


Выше фотография этой системы. Автор подчеркивает, что все это чистой воды эксперимент, который вряд ли пригодится для реальных кейсов.

Не все так плохо


Если перед владельцем новой системы не стоит цель использовать все ресурсы процессора, то, возможно, ему не придется покупать новую систему охлаждения вместе с платой и самим процессором. Дело в том, что Intel планирует комплектовать свои чипы базовой системой охлаждения. Но ее возможностей хватит лишь для отвода тепла от процессора, работающего на штатных частотах. Будет ли радиатор кулера оснащаться медными вставками неясно.

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


Примеры таких систем есть, подобный подход применялся, например, компанией Noctua для некоторых модификаций систем охлаждения, несовместимых с сокетами AM4. Кулер Noctua NH-U9S, например, не подходит для установки на этот сокет. Но компания выпустила специальные крепежные адаптеры NM-AM4-UxS, которые решают эту задачу.


И если система охлаждения стоит около 7000 рублей, то крепежный адаптер к ней всего 540. Вполне может быть, что прямо сейчас китайские производители уже проектируют переходники под новые платы для старых систем охлаждения ведь размерность и спецификации уже известны.

Что известно о новых процессорах


Сейчас появилась информация о размерах нового сокета. Вместо квадрата со сторонами длиной 37,5мм это будет прямоугольник с длинами сторон 35.545.0 мм.


У 12-го поколения процессоров от Intel несколько модификаций, точнее, семейств:

  • Alder Lake-S для десктопных ПК.
  • Alder Lake-P для мощных ноутбуков.
  • Alder Lake-М для маломощных устройств.
  • Alder Lake-L для мобильных девайсов.
  • Alder Lake-N для всех прочих устройств, включая не очень производительные ноутбуки, хромбуки и т.п.

Отличаются они друг от друга разным же количеством ядер. К примеру, у маломощных чипов будет больше энергоэффективных ядер Atom, у процессоров для производительных систем больше высокопроизводительных ядер Core. У чипов для игровых ноутбуков и десктопных ПК только Core, что позволит добиться максимальной производительности.

В однопоточном режиме процессоры смогут обеспечивать двукратный рост производительности по сравнению с предыдущим поколением, Rocket Lake. В многопоточном все не так радужно, но и здесь прирост производительности составит около 20%, что весьма неплохо.


Новые чипы должны появиться в конце 2021 года, именно тогда ожидается их отгрузка вендорам разного рода компьютерных систем. Устройства же на основе процессоров 12-го поколения появятся в начале 2022 года, возможно, чуть позже.

Подробнее..

Перевод Одноплатник Pimoroni Pico LiPo как микроконтроллер от Raspberry, только лучше

02.06.2021 20:09:34 | Автор: admin

После того, как Raspberry Pi Foundation разработала и анонсировала свой процессор RP2040, на рынке появилось несколько одноплатников на его основе, включая собственную разработку Raspberry. Среди наиболее заметных RP2040-проектов стоит отметить Adafruit Py RP2040 и Pimoroni Tiny 2040. Есть еще и Adafruit Feather RP2040 с Cytron Maker Pi Pico.

Напомним, что сам по себе проект Raspberry Pi Pico это, по сути, микроконтроллер с GPIO и возможностью программирования. Плату можно применять для эмуляции самых разных типов интерфейсов, включая ретро-системы. У Pico от Raspberry относительно небольшой набор функций, но своих денег плата стоит. Сейчас появился новый девайс, который называется Pimoroni Pico LiPo. Это как бы Pico на стероидах.

Его стоимость $17, то есть в 4 с немногим раз больше, чем у оригинального Pico. Но и возможности шире, так что девайс может пригодиться тем разработчикам, кому не хватало возможностей микроконтроллера от Raspberry. Так, здесь есть функция заряда аккумулятора, USB-C порт, 16 МБ флеш-памяти и коннектор Stemma QT / Qwiic.

Подробнее о характеристиках



Система на чипе RP2040
Двухьядерный Arm Cortex M0+, частота 133 МГц.
264KB SRAM, и 4 / 16MB Flash памяти
GPIO 26 мультифункциональных 3.3V GPIO пинов
2 SPI, 2 I2C, 2 UART, 3 12-bit ADC, 16 PWM каналов
1 x User LED (GPIO 25)
8 Programmable I/O (PIO) state machines for custom peripheral support.
Stemma QT / Qwiic коннектор
SWD debug breakout
Модуль можно распаивать на платах
Power USB C для данных и питания
2 pin JST коннектор для LiPo / Li lon аккумуляторов. Мониторинг батарей + LED для отображения режима работы батареи.

Дизайн и использование Pimoroni Pico LiPo



Pico LiPo идеально работает с MycroPython. Для того, чтобы получить максимальную отдачу от платы, нужно использовать CircuitPython, в особенности при работе с компонентами Stemma QT / Qwiic. Если по какой-то причине вам необходимо работать с MicroPython и при этом взаимодействовать с устройствами Stemma QT / Qwiic, то стоит попробовать последний проект от Adafruit. Вот здесь можно загрузить все необходимое, работает с Pico LiPo весьма гладко.

Как и говорилось выше, Pico LiPo это Raspberry Pi Pico на стероидах. При таком же размере и аналогичной GPIO распиновке у девайса есть функция зарядки батарей, Stemma QT / Qwiic и кнопка включения. Наиболее важная возможность таки зарядка аккумуляторов. Режим зарядки контролируется чипом MCP73831. Ток небольшой 215 мА, но в ходе теста LiPo батарея была заряжена полностью.


Есть защита аккумулятора XB6096I2S, что предотвращает возможное превышение параметров заряда. Выделенного MicroPython или CircuitPython модуля для мониторинга заряда нет. Для определения факта заряда используется 24-й пин. А для мониторинга 29-й. Всего у девайса три аналоговых входа столько же, сколько и у малинки, но меньше, чем у Adafruits Feather RP2040. Да, на один пин меньше, но если учитывать, что его используют для контроля заряда батареи, то с потерей смириться проще.

Положительный момент в этом возможность использования аккумулятора в качестве базового бесперебойника питания. Так, проект можно запитать от USB-C, но если питание отключится, в дело вступает батарея. Распиновка у Pico LiPo такая же, как и у малинки. Плюс есть коннектор Stemma QT, благодаря которому подключение внешнего устройства становится очень простой задачей.

Наличие этого коннектора реальный прорыв для I2C-девайсов. Дело в том, что у ряда производителей есть множество совместимых компонентов, включая датчики температуры, емкостные входы, экраны и т.п. Используя емкостный сенсорный датчик MPR121 и последнюю версию CircuitPython 7 для Pico LiPo, мы создали демонстрационную модель системы с применением Stemma QT-коннектора.


Система заработала сразу и без проблем. Кроме того, мы видим множество проектов с применением Stemma QT / Qwiic. Рядом с этим коннектором есть трехпиновой коннектор JST-SH это отладка. Контакты используются для получения данных из работающего RP2040 без использования UART. Используя эти контакты и другой Pi Pico в качестве дебаг-хоста мы можем работать с процессором, SRAM, отображенной памяти I/O в выбранной среде разработки. Если вы разрабатываете критически важные RP2040-приложения, то это ключевая особенность. Ну а для большинства из нас просто интересная функция.

Кнопка power тумблер. Звучит не особо захватывающе, но есть здесь пара важных моментов. Дело в том, что именно эта кнопка позволяет полностью обесточить питание, а не просто выполнить сброс. Ну а поскольку у нас есть аккумулятор, то его заряд можно сэкономить, полностью отключив плату. С кнопкой другого типа такой номер не пройдет батарея продолжит разряжаться. Когда плата понадобится снова просто включаем кнопку и все.

Кнопка BOOT обычно применяется для ввода системы в режим прошивки. Но у этой платы есть еще возможность задействовать кнопку в коде. На плате три разных светодиода, включая power, статус заряда батареи и пользовательский светодиод, подключенный к 25 контакту.

Как и упоминалось выше, распиновка у платы такая же, как у малинки, так что использовать ее можно точно там же и точно так же, где применяется Raspberry Pi Pico. При желании этот микроконтроллер можно заменить на LiPo в уже готовом проекте и получить больше функций. Мы проверили это утверждение, заменив микроконтроллер от Raspberry на новую плату вот в этом проекте. После замены все заработало без танцев с бубном.

Юзкейсы для Pimoroni Pico LiPo



У LiPo есть все, что дает Raspberry Pi Pico, плюс дополнительные функции. Даже одна лишь возможность подключения батареи стоит тех $17, которые просят разработчики за свой микроконтроллер. Его можно применять в самых разных проектах, от световых мечей на базе NeoPixel до интернета вещей. Pico LiPo можно применять в разных роботехнических проектах, но для сервоприводов, двигателей и т.п. понадобится собственный источник питания GPIO платы не даст ток больше 600 мА.

Подробнее..

Приемник с АФАР для БЛА

06.06.2021 14:21:06 | Автор: admin

Цель

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

Типовым решением в данной области является использование всенаправленной антенны с интегрированного приёмопередатчика, типа sx1233, AX5043, на борту, и антенны с высоким коэффициентом усиления (КУ), типа волновой канал или клевер, на земле.

Пока есть прямая видимость все должно быть хорошо.

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

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

Обзор электромагнитной обстановкиОбзор электромагнитной обстановки

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

возможная ДН с четырьмя четвертьволновыми штырямивозможная ДН с четырьмя четвертьволновыми штырями

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

Вот это и попробуем.

Средства

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

Антена АФАР. В центре - антенна передатчикаАнтена АФАР. В центре - антенна передатчика

Фазовращение осуществим в лоб, на AD8340. Полученные из каналов сигналы суммируем в один и отправляем на вход уже имеющегося приёмника, развёртку ДН осуществим микроконтроллером по максимуму отношения сигнал/шум (с/ш, SNR).

Структурна схема фазовращателя с предусилителемСтруктурна схема фазовращателя с предусилителем

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

Расчёт фаз для суммирования каналов проведём на основании простейшей тригонометрии: по каждому из заданных направлений радиоволны должны распространяться синфазно. Т.е. фаза это проекция точки установки штыря на вектор направления луча.

Хинт: если из всех фаз вычесть одну их них то этот канал можно не управлять:)

График значений фаз для развёртки ДНГрафик значений фаз для развёртки ДН

Проверка

То, что четыре канала приёма заведомо лучше одного фактом является очевидным. Это даёт, как минимум, разнесение антенн в пространстве (antenna diversity) и дополнительное усиление сигнала. Гораздо интереснее, получится ли режектировать точечный источник помехи.

Для начала задаём в ДН одно направление и снимаем по всем углам КУ полученной фиксированной антенны тихой комнате.

ДН АФАР при угле направления 0ДН АФАР при угле направления 0

Как видно, что-то кривенькое получилось.

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

Пример формирования тестовой помехиПример формирования тестовой помехи

Результаты

Если кратко то режекция одиночно источника помехи удалась.

Если более детально то немного не так, как ожидалось.

Предполагалось, что ДН будет иметь классический внешний вид с диаметральными минимум и максимумом. На само деле получилась достаточно кривая ДН, с паразитными минимумами. Благодаря простейшему алгоритму наведения они, рано или поздно, совпадали с помехой и существенно ослабляли её. В этот момент начиналось успешное прокидывание пакетов с данными, пока сама антенна на БЛА сравнительно медленно механически не отворачивалась (ветер, смена курса..). Если процессы наведения происходят достаточно быстро (несколько раз в секунду), то для оператора создаётся ощущение устойчивой связи с объектом.

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

Выводы

Для попробовать полученного дорогого, энергозатратного, тяжёлого и плохо воспроизводимого решения вполне достаточно. Но надо прикинуть, что в этом направлении можно сделать дальше.

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

Так же на будущее можно подумать о замене прямого решения с микросхемами фазовращения, на изменение структуры приёмника, чтобы суммировать сигналы на промежуточной частоте. Формирование множества сдвинутых по фазе опор является стандартной задачей для современного high speed design, сами структуры гетеродинных и инфрадинных приёмников давно уже обкатаны, и более сложное по числу элементов решение может оказаться дешевле по элементной базе и энергопотреблению.

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

Подробнее..

Дефицит чипов способствует развитию теневого рынка электроники контрафакта

15.06.2021 14:10:21 | Автор: admin

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

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

В каком смысле поддельная?


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

О том, насколько текущий дефицит силен и насколько сильно он влияет на цепочки поставок, можно судить хотя бы по тому, что компания MSI возобновляет производство видеокарт модельного ряда 2014 года. Не 2018 или 2019, а 2014, потому что у MSI остались компоненты для сборки таких карт.


Если на следующей неделе вам нужно найти 5000 компонентов или вам придется закрыть линию производства, то вы в любом случае снизите требования к поставляемым компонентам. Поставщики электронных систем просто не успевают верифицировать всю цепочку поставок или проверить оригинальность чипов, заявляют представители компании CALCE, которая занимается анализом поставок поддельных электронных компонентов.

Насколько это глобальная проблема?


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

Мало того, что те самые посредники накручивают стоимость как отдельных запчастей, так и собранных систем, так теперь есть далеко не нулевая вероятность получения поддельных деталей.

Что касается повышенной цены, то этот факт доказан. Представитель igor'sLAB раздобыл и опубликовал прайс-лист оптового поставщика комплектующих для ПК. Поставщик является одним из звеньев цепочки компания покупает дешевле, продает дороже. И это несколько странная практика, поскольку поставщик является своего рода теневым. Ранее компания занималась скупкой остатков комплектующих со складов крупных компаний и продавала их чуть дороже.

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

Подделки заполонили рынок?


Пока что нет, но, по мнению экспертов, наполнение рынка контрафактом может произойти в ближайшее время. Глобальный дефицит приводит к активизации деятельности криминала, и ранние признаки проблемы уже заметны.

На рынке откуда ни возьмись появляются компании, которые ранее не были известны индустрии, и они предлагают дефицитные детали. Откуда они их берут, если производители таких компонентов даже прямые поставки в полном объеме не могут обеспечить?

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

Проблема эта не новая на рынке полным-полно непонятно откуда взявшихся деталей для Kindle, айфонов, Mac и прочей техники. Сейчас к уже существующему рынку контрафакта добавится еще один, даже более масштабный.

В малом объеме проблему появления поддельной продукции можно было наблюдать в 2011 году, когда в Японии произошло землетрясение, а потом цунами. Катастрофические природные явления затронули производителя специфических элементов электролитических конденсаторов для медицинской аппаратуры. В итоге производителям этой аппаратуры пришлось в авральном режиме искать замену поставщику. Замена была найдена, в цепочке поставок появились некие сторонние компании. Но затем оказалось, что многие конденсаторы подделка.


Пример микросхемы FT232RL, оригинал и подделка. Отличить их по внешнему виду невозможно (почти). Но внутри правого чипа стоит старый микроконтроллер, который совместим лишь с устаревшими драйверами

Что же делать?


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

Но средние и мелкие вендоры/сборщики поставляют не так уж и мало продукции, так что на общем ее качестве текущая ситуация вполне может отразиться. Здесь вопрос упирается в деньги, как и всегда. Ради сиюминутной прибыли и решения своих проблем некоторые компании вполне могут пойти на нарушения. Вопрос лишь в том, насколько много будет таких компаний и насколько активно станут действовать поставщики поддельных/контрафактных элементов.

Подробнее..

Категории

Последние комментарии

  • Имя: Билал
    04.12.2024 | 19:28
  • Имя: Murshin
    13.06.2024 | 14:01
    Нейросеть-это мозг вселенной.Если к ней подключиться,то можно получить все знания,накопленные Вселенной,но этому препятствуют аннуннаки.Аннуннаки нас от неё отгородили,установив в головах барьер. Подр Подробнее..
  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru