• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Беспроводная клавиатура на nRF52840. Как организовать питание?

Fenix0412

New member
Здравствуйте.

Предыстория:
Решили мы с товарищем сделать себе клавиатуры. Ибо то что есть в продаже не ахти. Можно конечно заказать из-за границы, но сейчас не вариант. Да и хочется самого лучшего. Параметры клавы достаточно тривиальны, но не без исключение. Беспроводная ортогональная раздельная клавиатура с раскладкой jian, но с добавлением 1 клавиши. Микроконтроллер nRF52840, поддерживает ZMK/QMK прошивки, подключение по USB, BLE, 2.4 ghz при использовании ключа. Все выше описанные функции уже давно отработаны и под них есть исходники, включая разводку и обвязку микроконтроллера. Остается собрать этот конструктор, добавив несколько фишек от себя и спроектировать корпус. Вот мы с мыслями, что все будет просто приступили. Оговорюсь для понимания, товарищ мой программист, от него я ожидал помощи только в настройки прошивки и идей в создании клавы, а на себя взял все остальное. Я учился на программиста-инженера, где программа обучения предусматривала не только изучение программированию МК, но и разработке железа, от кристаллов до готовых устройств. Но я это бросил на 2 курсе, не успев особо получить применимых знаний, а что получил уже успешно забыл. Не интересно мне это оказалось. От слова совсем. Решил уйти в другую специальность. Ну и в этом проекте я планировал, что какие бы то ни было знания мне пригодятся. Ан нет. В клавиатуру было решено добавить 5 зонную подсветку клавиш (5 светодиодов на клавишу по 12 ма, 23 клавиши на одной половинке, если одновременно включить все светодиоды на полную яркость белым цветом будет 1.5 ампера потребления, но типичное потребление планируется не более 0.3 ампера от подсветки ), тактильную отдачу от iphone или sony (у них самые навороченные линейные вибро моторы и стоят копейки, по ним правда вообще ничего не знаю, ориентируюсь на 0.5 ампера, управление шимом через транзистор) и датчик препятствий, для пробуждения клавиатуры при приближении рук (с помощью датчика жестов APDS-9960, если подскажете более простую, реализацию на фотодиодах, буду благодарен.). Вот тут и вылезли все проблем, которые самостоятельно у меня решить не получилось.

Добавление новых функций резко увеличило пиковое потребление системы до 2-3 ампер и повышения напряжения питания с 3.3 вольт до 5. Аккумулятор большой емкости легко нашел свое место в конструкции без изменения размеров. Но этот аккумулятор 1s, а при попытки использования сборки 2s, резко увеличиваются размеры и падает емкость. От куда появляется первая проблема.

Проблема №1
Поиск подходящей DC-DC повышайки c 3.0v (А лучше 2.8, так как под нагрузкой напряжение акб просаживается) до 5.0v или ее схемы для самостоятельной пайки, с высоким КПД, током 2-3a и не большими размерами.
По ка что было найдено 2 варианта. Готовая схема из китая на TPS61088, но цена не радует, а самое проблемное размер, ее очень сложно впихнуть в клавиатуру. Второй вариант использовать плату от повербанка ip5306, существенно дешевле и компактнее, уже есть встроенная зарядка, но время переключения между внешним питанием и акб 50мс. И если МК можно запитать от отдельного стабилизатора на 3.3в (тоже нужно искать, чтобы мог повышать напряжение), что бы при подключении зарядки не было перезагрузки MK или отвала беспроводной связи, то светодиоды, подозреваю, могут мигать. Да и общее качество этого модуля вызывает вопросы.

Проблема №2
Питание по USB. А вот тут совсем все плохо. Спецификация USB type-С позволяет получить до 3A, а при пайке резисторов с СС1 и СС2 линий на землю, правильной идентификации современными зарядками. Но проблема в том, что это клавиатура, да еще и программируемая, и подключение к ПК, к портам USB 2.0, норма. И нагрузка в 15 ват будет уводить ПК в защиту по питанию USB, и это в лучшем случае. Следовательно нужна микросхема управления режимом питания по USB, при чем такая, что определит подключение к USB 2.0, так как это разъем тупой, и не идентифицирует что к нему подключено. По этому ограничение тока должно происходить на клаве, в зависимости от версии и интерфейса USB. Но я пока не смог найти ни названия таких чипов ни схемы их подключения. Максимально близкое, что я пока нашел TUSB320 и STUSB4500, но как я понял, они работают, только с новыми версиями USB, а так же по протоколу power delivery. То есть с портами, способными отвечать, что они такое и сколько тока готовы отдать. Можно конечно полностью отказаться от зарядки, так как аккумулятор съемный 18650. И в логику беспроводной клавиатуры, замена аккумулятора вместо его зарядки вполне вписывается, также это решит проблему с задержкой переключения ip5306. Но не хотелось бы урезать функционал клавиатуры, мало ли где она будет использоваться. USB type C уже почти везде есть, а вот зарядка li-ion не всегда под рукой.

Буду крайне благодарен всем, кто попытается помочь.
 

Fenix0412

New member
Нашел вот такой контролер BD93W21F , но в связи отсутствием профильных знаний и языка мало что понял. Судя по всему контролер USB должен говорить процу платы какой usb подключен, а проц дает команду силовой части, сколько ват можно потреблять. Ну допустим IP2305 можно регулировать в достаточных пределах для стандартов usb, но в месте с dc-dc преобразователем его не впихнуть.
 

nikolz

Well-known member
начну с самых простейших вариантов.
1) сделать шим питание светодиодов от nRF.
В каждый момент времени горит 1 диод. Яркость зависит от числа активных диодов в данный момент.
Ток потребления диодов будет не более 0.012 А.
 

pvvx

Активный участник сообщества
Нашел вот такой контролер BD93W21F , но в связи отсутствием профильных знаний и языка мало что понял. Судя по всему контролер USB должен говорить процу платы какой usb подключен, а проц дает команду силовой части, сколько ват можно потреблять.
Кроме этого у USB есть стандартный 'Configuration Descriptor', считывающийся при подключении и в нем есть байт 'MaxPower'.
Если там указано мало, то некоторые ноуты и прочие ограничивают ток до сотни мА и ваша система может не запуститься вообще...
Этим страдают платки c ESP у которых стоит USB-UART микросхема говорящая что плате нужен ток менее 100 мА ... :)
 

pvvx

Активный участник сообщества
Допустимая текущая нагрузка Источник <https://en.wikipedia.org/wiki/USB_hardware>

Предел энергопотребления устройства указывается в единицах нагрузки , которая составляет 100 мА для устройств USB 2.0 или 150 мА для устройств SuperSpeed (т. е. USB 3.x). Устройства с низким энергопотреблением могут потреблять не более 1 единицы нагрузки, и все устройства должны работать как устройства с низким энергопотреблением, прежде чем они будут сконфигурированы. Устройство высокой мощности должно быть сконфигурировано, после чего оно может потреблять до 5 единичных нагрузок (500 мА) или 6 единичных нагрузок (900 мА) для устройств SuperSpeed, как указано в его конфигурации, поскольку максимальная мощность не всегда может быть доступна. от вышестоящего порта.
 

pvvx

Активный участник сообщества
Но проблема в том, что это клавиатура, да еще и программируемая, и подключение к ПК, к портам USB 2.0, норма. И нагрузка в 15 ват будет уводить ПК в защиту по питанию USB, и это в лучшем случае. Следовательно нужна микросхема управления режимом питания по USB, при чем такая, что определит подключение к USB 2.0, так как это разъем тупой, и не идентифицирует что к нему подключено.
Не у всех материнок USB тупой и содержит только термо-предохранитель на 500 мА. Некоторые имеют нормальные контроллеры и ограничивают по считанному профилю...
И с такими есть беда - когда устройство объявило о повышенном токе, то замыкание приводит к расплавлению китай-проводов кабеля :)
 

pvvx

Активный участник сообщества
nRF52840 имеет всего USB 2.0 full speed (12 Mbps) controller (= USB1.1) и рассчитывать получить более 500 мА от компа не приходится -> не имеет смысла.
Все остальные извращения не будут всегда работать, т.к. требуют специальных USB портов и зарядок со спецификой...
 

yeyu

New member
сюда полезный ответ про транзисторы:
включаются различные транзисторы
 
Сверху Снизу