USB и Arduino: питание Arduino, зарядка LiPo и передача данных одновременно
Я хотел разработать собственную плату Arduino для своего недавнего проекта — портативного устройства с питанием от 3,7-вольтовой литий-полимерной батареи. В идеале я хотел заменить порт US BB на один порт USB Micro, реализующий следующие функции:
- Обеспечивает питание Arduino, когда он подключен к сети (как это делает обычный Arduino).
- Подключите контакты D+ и D- USB к Arduino каким-либо образом, чтобы обеспечить встроенное программирование (хотя Arduino уже это делает, я буду называть его «встроенным USB/последовательным преобразователем»). Я хочу, чтобы его можно было программировать на ходу.
- Заряжает встроенный LiPo-аккумулятор напряжением 3,7 В. Я рассчитывал использовать PowerBoost 500 Shield от Adafruit в качестве основы для своей схемы.
Однако мне не удалось найти схему или пример, реализующий все три функции выше одновременно от одного USB-порта. У меня мало опыта в зарядных схемах, поэтому следующие вопросы могут показаться глупыми. Ниже приведены несколько решений, которые, как мне казалось, вряд ли сработают, но я хотел убедиться:
- Подключите выходное напряжение LiPo-аккумулятора к источнику питания V+/GND USB-кабеля (возможно, небезопасно подключать все источники V+ вместе).
- Просто подключите кабели передачи данных D+/- к «встроенному USB/последовательному преобразователю», не подключая каким-либо образом Vbat/Vusb, подключите USB V+/GND к схеме зарядки LiPo, а напряжение батареи должно подаваться на Arduino.
Я знаю, что некоторые устройства имеют подобную функцию зарядки/передачи данных (например, мой телефон может передавать фотографии на компьютер, будучи включённым и одновременно заряжаясь), но мне интересно, как реализовать подобную функцию на плате Arduino. Есть какие-нибудь советы?
В самом худшем случае у меня будет всего 2 порта USB: один для зарядки LiPo и один для последовательной связи/программирования
ДОПОЛНЕНИЕ: Идея использования ATMega32U4 кажется привлекательной (несмотря на рабочее напряжение 3,3 В против 5 В), главным образом потому, что у него есть вывод VBUS для USB и Vcc для основного питания. Но мне было интересно, как это реализовать, скажем, на ATMega328P, у которого нет вывода VBUS.
@George Troulis, 👍8
Обсуждение3 ответа
Лучший ответ:
Я бы рекомендовал использовать Arduino Leonardo в качестве основы для вашей схемы. Она практически такая же, как Arduino UNO, но имеет встроенный USB-интерфейс, поэтому вам не понадобится USB-Serial-конвертер.
Я бы также рекомендовал использовать для питания микросхемы напряжение 3,3 В. Тогда можно будет использовать линейный регулятор для понижения напряжения батареи 3,7 В. В противном случае вам понадобится повышающий преобразователь для повышения напряжения до 5 В, что потребует больше деталей.
Если вы будете следовать этим рекомендациям, вам понадобится только микросхема для зарядки LiPo-аккумулятора. Вам потребуется добавить ISCP-разъём для прошивки начального загрузчика Leonardo, но после этого вы сможете программировать его через USB и Arduino IDE.
Я как раз это и сделал для школьного проекта какое-то время назад. Схемы можно найти здесь: https://github.com/seanwatson/ece4416-project/blob/master/hardware/rev2/sw-4416-project-v2-sch.pdf
Хм, я надеялся не использовать ATMega32U4, потому что у меня мало опыта в пайке SMD-компонентов. Но, похоже, у него есть контакт для питания USB и отдельный вывод питания Vcc? Выглядит очень удобно! Попробую., @George Troulis
Наличие этих двух контактов *не* означает, что они являются двойными входами и микросхема будет работать от того, от которого подается питание; у них есть определенные цели., @Chris Stratton
Лично я бы не советовал использовать линейный стабилизатор в системе с питанием от батареи... Терять 25% накопленной энергии только на нагрев стабилизатора не очень эффективно. В любом случае, я поддерживаю предложение по 3,3 В: с простым понижающим стабилизатором (даже с уже распаянными модулями, как те, что продаются на eBay примерно за 1 доллар) вы получаете большую эффективность, чем с повышающим стабилизатором, а микроконтроллер на 3,3 В потребляет меньше энергии., @frarugi87
Ой, извините за некропостинг. Я не заметил, что это очень старый пост, который подняли, потому что @GeorgeTroulis не принял ответ..., @frarugi87
@frarugi87, всё в порядке. Я пока не принял ответ, потому что сам ещё не пробовал ни одно из этих решений :| Стоит ли мне всё равно принять одно из этих решений? Ведь они все такие хорошие! Спасибо за ваш отзыв :), @George Troulis
Следуя ответу Шона Уотсона, я бы, пожалуй, использовал в качестве примера плату Bare Conductive Touch Board. Это производная от Leonardo со всеми функциями, о которых вы спрашиваете. Признаюсь честно: я работаю в Bare Conductive и участвовал в разработке этой платы.
Схема Eagle и файл платы находятся здесь. Кроме того, поскольку эта плата успешно прошла испытания CE и FCC на излучение и помехоустойчивость, вы можете быть уверены, что эта референсная конструкция подходит для создания продукта на продажу.
В конструкции используется повышающий преобразователь для работы при напряжении 5 В. Если вы используете Atmega32u4 (или Atmega328) при напряжении 3,3 В, корректная работа с тактовой частотой 16 МГц не гарантируется (см. техническое описание). Поскольку загрузчик Arduino для Leonardo написан для микроконтроллера с тактовой частотой 16 МГц, это избавляет вас от необходимости модификации загрузчика и обеспечивает максимальную производительность в 16 MIPS.
Что вы имеете в виду, когда говорите: «При 3 В корректная работа с тактовой частотой 16 МГц не гарантируется»? В разделе 29.3 технического описания Atmel сложно определить, что 3,3 В при 16 МГц — это безопасный режим работы, но, поскольку Arduino Leonardo уже работает на частоте 16 МГц, разве это не означает, что она «гарантированно» работает? Полагаю, вы имеете в виду, что если я куплю свой 32U4, мне придётся модифицировать загрузчик, чтобы гарантированно получить производительность 16 MIPS (конечно, с внешним генератором на 16 МГц)?, @George Troulis
Leonardo работает от 5-вольтового VCC (взгляните на схему), поэтому нельзя быть уверенным, что работа при 3,3 В гарантирована. Взглянув на [этот технический паспорт] (http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf), я вижу, что 3,3 В явно НЕ входят в область безопасной работы — это раздел 29.6. Кроме того, выше есть опечатка — кривая явно линейна в диапазоне 2,7 В < VCC < 4,5 В, а не 2,7 В < VCC < 5,5 В, как написано., @stefandz
Ой, как жаль, я смотрел техническое описание [ATMega328P] (http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf), в котором нет 32U4. И какой же я глупый! Я был уверен, что Leonardo работает от 3,3 В (что со мной не так?). Возможно, тогда использование повышающего преобразователя для работы от 5 В будет лучшим вариантом, если я хочу гарантированно получить 16 МГц. Хотя, возможно, я готов перейти на 8 МГц, просто чтобы избежать повышающего преобразователя. Не думаю, что это повлияет на мой проект, и, похоже, Lilypad именно это и делает., @George Troulis
Используйте плату зарядного устройства TP4056 1A для LiPo (с защитой от переразряда) и повышающий преобразователь, например, XL6009. Если вы будете осторожны, то обойдётесь максимум в 5 долларов. Защита от переразряда очень важна.
Если вам нужен порт для программирования, добавьте плату расширения micro-USB и, при необходимости, кнопку для подключения RST к GND. Я предпочитаю просто вывести контакты GND, TX, RX на трёхконтактный разъём и подключать кабель к нему.
- Максимальная последовательная скорость CH340
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Как установить последовательные драйверы FTDI на Mac?
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Внешнее питание 5 В и последовательный порт USB
- Можно ли использовать Serial.print(сообщение), когда USB-кабель не подключен к хост-компьютеру?
- SerialUSB на Arduino Due
- Mac не обнаруживает последовательный порт для Леонардо
просто подключите micro usb к "ftdi", ftdi к микроконтроллеру, а сквозной контакт питания ftdi (5 В) — к плате зарядки литиевых батарей (около 50 центов); и все дела; все три стоят меньше 2 долларов..., @dandavis