Что такое широтно-импульсная модуляция. Как работает ШИМ в Arduino. Для чего используется ШИМ. Какие выводы Arduino поддерживают ШИМ. Как настроить и использовать ШИМ в скетче Arduino.
Что такое широтно-импульсная модуляция (ШИМ)?
Широтно-импульсная модуляция (ШИМ) — это метод управления мощностью, подаваемой на нагрузку, путем изменения ширины (длительности) импульсов напряжения или тока при постоянной частоте. По сути, ШИМ быстро включает и выключает напряжение, изменяя соотношение времени включенного и выключенного состояния.
Основные характеристики ШИМ-сигнала:
- Частота — количество полных циклов в секунду
- Период — длительность одного полного цикла
- Рабочий цикл (скважность) — отношение длительности импульса к периоду, выражается в процентах
Как работает ШИМ в Arduino?
В Arduino ШИМ реализована с помощью таймеров микроконтроллера. Функция analogWrite() позволяет задать рабочий цикл ШИМ в диапазоне от 0 до 255:
- 0 — выход всегда выключен (0% скважность)
- 127 — выход включен половину времени (50% скважность)
- 255 — выход всегда включен (100% скважность)
Частота ШИМ на большинстве выводов Arduino составляет около 490 Гц. На выводах 5 и 6 платы Arduino Uno частота выше — около 980 Гц.
Для чего используется ШИМ в Arduino проектах?
ШИМ в Arduino применяется для решения различных задач:
- Регулировка яркости светодиодов
- Управление скоростью вращения двигателей постоянного тока
- Управление положением сервоприводов
- Генерация звуковых сигналов
- Имитация аналогового выходного сигнала
ШИМ позволяет плавно регулировать мощность, подаваемую на нагрузку, что делает ее незаменимой во многих проектах.
Какие выводы Arduino поддерживают ШИМ?
Выводы, поддерживающие ШИМ, обычно обозначены символом «~» на плате Arduino. Поддержка ШИМ зависит от модели платы:
- Arduino Uno: выводы 3, 5, 6, 9, 10, 11
- Arduino Mega: выводы 2-13 и 44-46
- Arduino Leonardo: выводы 3, 5, 6, 9, 10, 11, 13
Важно отметить, что не все цифровые выводы Arduino поддерживают ШИМ. Перед использованием ШИМ необходимо убедиться, что выбранный вывод поддерживает эту функцию.
Как настроить и использовать ШИМ в скетче Arduino?
Для использования ШИМ в Arduino достаточно вызвать функцию analogWrite(). Вот пример, демонстрирующий плавное изменение яркости светодиода:
«`cpp const int ledPin = 9; // Вывод с поддержкой ШИМ void setup() { pinMode(ledPin, OUTPUT); } void loop() { // Плавное увеличение яркости for (int brightness = 0; brightness <= 255; brightness++) { analogWrite(ledPin, brightness); delay(10); } // Плавное уменьшение яркости for (int brightness = 255; brightness >= 0; brightness—) { analogWrite(ledPin, brightness); delay(10); } } «`- Мы используем вывод 9 для управления светодиодом
- В функции setup() настраиваем вывод как выход
- В loop() используем два цикла for для плавного увеличения и уменьшения яркости
- Функция analogWrite() задает значение ШИМ от 0 до 255
Как измерить частоту и скважность ШИМ-сигнала Arduino?
Для измерения параметров ШИМ-сигнала можно использовать осциллограф или специальные измерительные приборы. Также возможно программное измерение с помощью самой Arduino:
«`cpp const int pwmPin = 9; // Вывод с ШИМ-сигналом const int measurePin = 2; // Вывод для измерения volatile unsigned long pulseHighTime = 0; volatile unsigned long pulseLowTime = 0; volatile bool measurementComplete = false; void setup() { Serial.begin(9600); pinMode(pwmPin, OUTPUT); pinMode(measurePin, INPUT); // Генерируем ШИМ-сигнал analogWrite(pwmPin, 127); // 50% скважность // Настраиваем прерывания для измерения attachInterrupt(digitalPinToInterrupt(measurePin), risingEdge, RISING); } void loop() { if (measurementComplete) { float frequency = 1000000.0 / (pulseHighTime + pulseLowTime); float dutyCycle = 100.0 * pulseHighTime / (pulseHighTime + pulseLowTime); Serial.print(«Частота (Гц): «); Serial.println(frequency); Serial.print(«Скважность (%): «); Serial.println(dutyCycle); measurementComplete = false; delay(1000); } } void risingEdge() { attachInterrupt(digitalPinToInterrupt(measurePin), fallingEdge, FALLING); pulseHighTime = micros(); } void fallingEdge() { attachInterrupt(digitalPinToInterrupt(measurePin), risingEdge, RISING); pulseLowTime = micros() — pulseHighTime; measurementComplete = true; } «` Этот скетч использует прерывания для измерения длительности высокого и низкого уровней сигнала, что позволяет вычислить частоту и скважность ШИМ. Обратите внимание, что точность измерений может быть ограничена скоростью работы Arduino.Как изменить частоту ШИМ в Arduino?
По умолчанию Arduino использует предустановленные частоты ШИМ, но их можно изменить, настроив таймеры микроконтроллера. Вот пример изменения частоты ШИМ на выводах 9 и 10 Arduino Uno:
«`cpp void setup() { // Устанавливаем вывод 9 как выход pinMode(9, OUTPUT); // Изменяем частоту ШИМ на выводах 9 и 10 // Делитель 1 дает частоту 31372.55 Гц // Делитель 8 дает частоту 3921.16 Гц // Делитель 64 дает частоту 490.20 Гц (по умолчанию) // Делитель 256 дает частоту 122.55 Гц // Делитель 1024 дает частоту 30.64 Гц TCCR1B = TCCR1B & B11111000 | B00000001; // Устанавливаем делитель 1 } void loop() { // Генерируем ШИМ-сигнал с 50% скважностью analogWrite(9, 127); } «`Важно помнить, что изменение частоты ШИМ может повлиять на работу других функций Arduino, использующих таймеры, например delay() и millis(). Будьте осторожны при изменении этих настроек.
Каковы ограничения использования ШИМ в Arduino?
При работе с ШИМ в Arduino следует учитывать некоторые ограничения:
- Ограниченное количество выводов с поддержкой ШИМ
- Фиксированная частота ШИМ (без изменения настроек таймера)
- Ограниченное разрешение (8 бит, 256 уровней)
- Возможные помехи в аудио-проектах из-за слышимой частоты ШИМ
- Нагрев компонентов при высоких частотах переключения
Несмотря на эти ограничения, ШИМ остается мощным инструментом для многих проектов Arduino. При необходимости более точного контроля или высокой частоты ШИМ можно рассмотреть использование внешних ШИМ-контроллеров или более мощных микроконтроллеров.
Заключение
Широтно-импульсная модуляция — это мощный инструмент в арсенале разработчика Arduino. Она позволяет эффективно управлять мощностью, подаваемой на различные устройства, от светодиодов до двигателей. Понимание принципов работы ШИМ и умение правильно ее использовать открывает широкие возможности для создания интересных и функциональных проектов на базе Arduino.
Экспериментируйте с различными настройками ШИМ, изучайте новые применения этой технологии, и вы сможете создавать еще более впечатляющие проекты с Arduino!
Arduino — широтно-импульсная модуляция — CoderLessons.com
Широтно-импульсная модуляция или ШИМ – это распространенный метод, используемый для изменения ширины импульсов в последовательности импульсов. ШИМ имеет много применений, таких как управление сервоприводами и регуляторами скорости, ограничивая эффективную мощность двигателей и светодиодов.
Основной принцип ШИМ
Широтно-импульсная модуляция в основном представляет собой прямоугольную волну с переменным высоким и низким временем. Базовый сигнал ШИМ показан на следующем рисунке.
Существуют различные термины, связанные с ШИМ –
On-Time – длительность сигнала времени высокая.
Off-Time – длительность сигнала времени низкая.
Период – представляет собой сумму времени включения и выключения сигнала ШИМ.
Рабочий цикл – Он представлен в процентах от времени, которое остается включенным в течение периода сигнала ШИМ.
On-Time – длительность сигнала времени высокая.
Off-Time – длительность сигнала времени низкая.
Период – представляет собой сумму времени включения и выключения сигнала ШИМ.
Рабочий цикл – Он представлен в процентах от времени, которое остается включенным в течение периода сигнала ШИМ.
период
Как показано на рисунке, T on обозначает время включения, а T off обозначает время выключения сигнала. Период представляет собой сумму времени включения и выключения и рассчитывается, как показано в следующем уравнении:
$$ T_ {total} = T_ {on} + T_ {off} $$
Рабочий цикл
Рабочий цикл рассчитывается как время включения периода времени. Используя рассчитанный выше период, рабочий цикл рассчитывается как –
$$ D = \ frac {T_ {on}} {T_ {on} + T_ {off}} = \ frac {T_ {on}} {T_ {total}} $$
функция analogWrite ()
Функция analogWrite () записывает аналоговое значение (волна ШИМ) на вывод. Его можно использовать для подсветки светодиода с разной яркостью или для привода двигателя на разных скоростях. После вызова функции analogWrite () вывод будет генерировать устойчивую прямоугольную волну указанного рабочего цикла до следующего вызова аналогаWrite () или вызова digitalRead () или digitalWrite () на том же выводе. Частота ШИМ-сигнала на большинстве контактов составляет приблизительно 490 Гц. На платах Uno и аналогичных платах контакты 5 и 6 имеют частоту приблизительно 980 Гц. Контакты 3 и 11 на Leonardo также работают на частоте 980 Гц.
На большинстве плат Arduino (с платами ATmega168 или ATmega328) эта функция работает на контактах 3, 5, 6, 9, 10 и 11. На плате Arduino Mega она работает на контактах 2–13 и 44–46. Старая версия Arduino Платы с ATmega8 поддерживают аналоговыйWrite () только на контактах 9, 10 и 11.
Arduino Due поддерживает analogWrite () на контактах 2–13 и контактах DAC0 и DAC1. В отличие от выводов PWM, DAC0 и DAC1 являются цифро-аналоговыми преобразователями и действуют как настоящие аналоговые выходы.
Вам не нужно вызывать pinMode (), чтобы установить вывод в качестве выхода перед вызовом analogWrite ().
analogWrite () Синтаксис функции
analogWrite ( pin , value ) ;
значение – коэффициент заполнения: от 0 (всегда выключен) до 255 (всегда включен).
пример
Arduino Pro MINI ATMEGA168 3.3V 8MHz
Плата разработчика Arduino Pro mini построенная на базе микроконтроллера ATMEGA168 с рабочим напряжением 3.3 Вольта и кварцевым резонатором 8 МГц.
Технические характеристки:
- Микроконтроллер: ATmega168PA
- Рабочее напряжение: 3.3 В
- Напряжение питания (рекомендуемое): 3.35-12 В
- Напряжение питания (предельное): 3.35-20 В
- Цифровые входы/выходы: 14 (6 из которых могут использоваться как выходы ШИМ)
- Аналоговые входы: 6
- ШИМ (PWM) пины: 6
- Постоянный ток через вход/выход: 40 мА
- Максимальный выходной ток вывода 3. 3V: 50 мА
- Flash-память: 16 Кб из которых 2 Кб используются загрузчиком
- SRAM: 1 Кб
- EEPROM: 512 байт
- Тактовая частота: 8 МГц (модель 3.3 В) или 16 МГц (модель 5 В)
- Встроенный светодиод: 13
- Длина: 33.0 мм
- Ширина: 18.0 мм
- Вес: 5 г
ARDUINO — это аппаратное средство с открытым кодом. Любой пользователь может свободно использовать устройство в своих проектах, скачивать и загружать дизайнерские файлы.
ARDUINO Pro Mini имеет небольшие размеры: 3.3 х 1.8 см (1.3х0.70″), всего лишь 1/6 часть от популярной Arduino UNO R3. Такой компактный размер подходит для проектов, в которых требуется поместить ARDUINO в маленький корпус. Вам нужно знать о том, что Pro Mini физически несовместима с большинством модулей расширения для ARDUINO, и вам потребуется проводное соединение с ними.
Серия ARDUINO Pro рассчитана на опытных пользователей, которые понимают ограничение напряжения системы с питанием 3. 3 В и отсутствующий USB вход на плате. Главным ее отличием от старших моделей ARDUINO является наличие одного преобразователя входного напряжения в 3.3 В. Это означает, что имеющиеся у вас модули с питанием 5 В можно подключать к Pro Mini только с дополнительным преобразователем напряжения или использовать версию Pro Mini с питанием 5 В.
Плата работает на низком напряжении, благодаря чему не требуется дополнительных интерфейсных схем для подключения устройств и модулей с питанием 3.3 В, таких как: GPS, акселлерометры, датчики и т.д.
Перед началом
Важно! Чтобы преждевременно не испортить плату, было бы неплохо все же понять, какая у вас. Существуют две версии Pro Mini с питанием 3.3 В и 5 В. По внешнему виду они никак не отличаются, маркировок на их рабочее напряжение нигде не увидите. Способов определения много, мы приведем пример одного из вариантов. Для этого вам нужно подать питание в диапазоне от 5 В до 12 В к выводу RAW и измерить напряжение на выводе VCC. И не забудьте про вывод GND, подав на него «минус» от источника питания.
Подключение к плате Pro Mini требует пайки. Поставляемые в комплекте разъемы изначально не припаяны. Вы можете самостоятельно припаять эти разъемы или использовать любые сторонние коннекторы или провода. Если вы никогда ранее не занимались пайкой, то этот шаг будет хорошим началом!
Принципиальная схема Pro Mini
Расположение и обозначение контактов
Все выводы у Pro Mini располагаются по трем сторонам. Контакты, расположенные на короткой стороне, используются для программирования и маркируются «BLK», «GND», «VCC», «RXI», «TXO», «GRN». На двух других сторонах расположены силовые и GPIO выводы (как и на стандартном ARDUINO).
Самая последняя и лучшая версия Pro Mini имеет дополнительные выводы ADC6 и ADC7.
Четыре контакта расположены не по краю: A4, A5, A6 и A7. Каждый из этих аналоговых выводов обозначен соответствующей маркировкой на обратной стороне платы.
Интерфейсы передачи данных
Контакты с маркировкой TX(0) и RX(1) — последовательный интерфейс UART.
Контакты с маркировкой 10, 11, 12 и 13 — интерфейс SPI. Выводы соответствуют обозначениям SS, MOSI, MISO, SCK.
Если вы планируете использовать интерфейс IIC/I2C с Pro Mini, то контакты А4 и А5 могут оказаться для вас полезными, так как они являются аппаратными выводами SDA и SCL.
Питание Pro Mini
Немаловажным моментом в любом проекте ARDUINO остается вопрос с питанием устройства. Ведь у Pro Mini, как вы заметили, нет обычного для большинства электронных устройств круглого разъема подключения источника питания. Да и размер платы предполагает, что законченное устройство скорее всего будем небольшим и, возможно, мобильным. Применение обычного стационарного источника питания в таких случаях будет не всегда удобным. Нужно просто подобрать компактный элемент питания, к которым относятся широко распространенные литий-полимерные батареи, обычные «пальчиковые» или «мизинчиковые» батарейки или аккумуляторы, а также батарейки в виде «монеток» или «таблеток».
Существуют три разных контакта, связанных с питанием Pro Mini: GND, VCC, и RAW. Входы GND являются общим контактом / заземлением / 0 В / минусом. На вход RAW подается нестабилизированное питание от 3.35 В до 12 В, которое преобразуется в необходимое для работы напряжение 3.3 В. И на вход VCC подается предварительно стабилизированное питание 3.3 В, так как данный контакт уже не связан с преобразователем напряжения и напрямую запитывает микроконтроллер платы ATmega328.
И еще один вариант питания, который обычно доступен при программировании Pro Mini — через интерфейс USB. Важно помнить, что при самостоятельной работе вашего проекта такой вариант не используется.
Интерфейс USB
Столь малый размер не позволил разместить на плате USB порт и преобразователь последовательных сигналов. Для организации USB-интерфейса и подключения Pro Mini к компьютеру, вам необходим переходник-адаптер USB/TTL с интерфейсом UART. К ним относятся конверторы с микросхемами FT232, Ch440, CP2102, CP2104, PL2303 и другие совместимые. Подключаем конвертор соответствующим кабелем USB к компьютеру.
Подключение конвертора к контактам программирования платы осуществляется по схеме GND->GND, VCC->VCC, RX->TX, TX->RX.
Также заметим, что Pro Mini поддерживает программный сброс устройства. На выводах для программирования для этой цели служит контакт GRN (он же DTR). И далеко не все конверторы поддерживают данную функцию. Просто воспользуйтесь расположенной на плате физической кнопкой сброса «Reset».
Программирование
Если вы ранее не пользовались ARDUINO, то вам необходимо загрузить бесплатную оболочку для программирования ARDUINO IDE с сайта разработчика и установить ее на ваш компьютер. Загрузить сейчас.
Перед подключением Pro Mini вам понадобится установить драйвер для конвертора USB/TTL.
После установки оболочки программирования и необходимых драйверов вы можете приступать к программированию Pro Mini.
Любая программа, написанная для ARDUINO, называется «скетч». Прежде, чем вы загрузите скетч, необходимо провести настройку оболочки:
Выберите в меню Инструменты(Tools)/Плата(Boards) тип вашего устройства (ARDUINO Pro or Pro Mini)
Далее, в меню Инструменты(Tools)/Процессор(Processor) тип контроллера (ATmega328 3.3V 8MHz).
Также, необходимо указать оболочке ARDUINO IDE порт компьютера, к которому подключен ваш конвертор USB/TTL. В ОС Windows порты могут быть COM2, COM3 и т.д. На ОС MAC наименование порта может выглядеть как /dev/tty.usbserial-A6006hSc
Теперь все настроено для загрузки скетча в вашу Pro Mini. После того, как вы нажмете кнопку «Загрузить» на панели управления ARDUINO IDE, на конверторе замигают светодиоды, показывающие передачу данных на Pro Mini, и на экране компьютера появиться сообщение «Загрузка завершена» (Done Uploading).
LiPo SHIM для Pico — Pimoroni
сортировать по наилучшему соответствиюрекомендуемыеновейшиелучшие продажицена 163264 на страницу только в наличии
Поиск не дал результатов.
Показать больше продуктов…
${ stockHtml }
${ hit.product_title } ${ hit.variant_title ? («-» + hit.variant_title): «» }:
${ hit.description_first_paragraph}` вернуть $(resultHtml) } const searchResultCallback = (попадания, аспекты, количество) => { debug(«> обратный вызов результатов поиска», совпадения, фасеты, количество) $(«#search .load-more-results»).toggle(hits. page 0) { $(«#search.no-results»).hide() пусть html = «» for(let hit of hits.hits) { $(«#search .results»).append(createSearchResultFull(попадание)) } }еще{ if(searchSearcher.inStockOnly) {$(«#search .no-results .message»).html(«Возможно, у нас есть что-то подходящее, чего нет в наличии. Включить товары, которых нет в наличии.»)} для (пусть я = 0; я `)) } $(«#поиск .без результатов»).show() } // обновляем списки фильтров $(«#search .filters»).find(«раздел»).each((i, e) => { buildFilters($(«#search»), searchSearcher, $(e).data(«type»), аспекты, количество) }) обновитьрейтинги() обновитьЦены() обновитьЗначки() } var searchSearcher = новый искатель([], searchResultCallback) searchSearcher.permanentFilters = true var searchLanding = window.location.pathname == «/search» вар предыдущий URL = ноль вар последний запрос = «» const queryInput = (запрос) => { если(!searchLanding) { if(!lastQuery && запрос) { debug(«> начать поиск, сохранить текущее состояние URL», document. location.href) предыдущий URL = document.location.href $(«#поиск»).show() $(«#контент»).скрыть() } если (последний запрос && !запрос) { debug(«> завершить поиск, вернуться к предыдущему URL-адресу», previousUrl) history.replaceState(null, window.title, предыдущийUrl) $(«#поиск»).скрыть() $(«#контент»).показать() } если (запрос) { searchSearcher.queryText = запрос обновитьПоиск() } последний запрос = запрос }еще{ searchSearcher.queryText = запрос обновитьПоиск() } } $(функция() { если (window.location.pathname == «/search») { $(«#поиск»).show() $(«#контент»).скрыть() searchSearcher.queryText = urlGet(«q», «») $(«#search_input_desktop»).val(searchSearcher.queryText) $(«#search_input_mobile»).val(searchSearcher.queryText) $(«#search .filters»).find(«раздел»).each((i, e) => { searchSearcher.filters[$(e).data(«тип»)] = urlGet($(e). data(«тип»)) }) если(urlGet(«акции»)) { $(«#поиск .только на складе»).prop(«проверено», правда) searchSearcher.inStockOnly = истина } если (urlGet («сортировать»)) { $(«#search .sort-by»).val(urlGet(«sort»)) searchSearcher.sort = urlGet(«сортировка») } если(urlGet(«страница»)) { searchSearcher.preloadPageCount = parseInt(urlGet(«страница»)) } searchSearcher.pageSize = получить(«searchPageSize», 32) $(«#search .per-page»).val(get(«searchPageSize», 32)) searchSearcher.doSearch() } }) // запустить новый поиск и обновить URL const updateSearch = (страница = 1) => { searchSearcher.page = страница searchSearcher.doSearch() пусть параметры = [] if(searchSearcher.queryText) {parameters.push(`q=${searchSearcher.queryText}`)} for(let filter of Object.keys(searchSearcher.filters)) { если (searchSearcher.filters[фильтр]) { параметры.push(`${фильтр}=${searchSearcher. filters[фильтр]}`) } } if(searchSearcher.page != 1) {parameters.push(`page=${searchSearcher.page}`)} if(searchSearcher.sort) {parameters.push(`sort=${searchSearcher.sort}`)} if(searchSearcher.inStockOnly) {parameters.push(`stock=true`)} пусть queryString = параметры.длина > 0? «?» + параметры.соединение(«&») : «» отладка(«> обновить URL», queryString) history.replaceState(null, window.title, «/search» + queryString) } const showOutOfStock = () => { $(«#поиск .только на складе»).prop(«проверено», ложь) searchSearcher.inStockOnly = ложь обновитьПоиск() } $(«#search_input_desktop»).on(«input», (e) => { // ввод поиска на рабочем столе searchSearcher.queryText = $(«#search_input_desktop»).val().trim() $(«#search_input_mobile»).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search_input_mobile»).on(«input», (e) => { // ввод мобильного поиска searchSearcher.queryText = $(«#search_input_mobile»). val().trim() $(«#search_input_desktop»).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search .filters >section ul»).click((e) => { // фильтр кликов searchSearcher.filters[$(e.target).closest(«раздел»).data(«тип»)] = $(e.target).hasClass(«активный») ? ноль: $(e.target).data(«значение») обновитьПоиск() }) $(«#search .per-page»).change((e) => { // элементов на странице set(«searchPageSize», parseInt($(e.target).val())) обновитьПоиск() }) $(«#search .sort-by»).change((e) => { // сортировка searchSearcher.sort = $(e.target).val() обновитьПоиск() }) $(«#search .только на складе»).change((e) => { // только на складе searchSearcher.inStockOnly = $(e.target).prop(«проверено») обновитьПоиск() }) $(«#search .load-more-results»).click(() => { // загрузить больше результатов updateSearch(searchSearcher.page + 1) })
ПиморониЭтот SHIM обеспечивает удобный способ питания вашего Raspberry Pi Pico от LiPo/LiIon аккумулятора. Вы можете легко перезарядить аккумулятор, подав питание на USB-порт Pico.
Припаяйте этот аккуратный квадратик к контактам на задней панели вашего Pico, вставьте подходящую литий-ионную/полимерную батарею и тада — LiPo Pico! Встроенная схема зарядки означает, что вы можете заряжать подключенную батарею, подавая питание на Pico через USB, и включает в себя защиту от переразряда и перегрузки по току . Есть кнопка питания , чтобы остановить SHIM от подачи питания от батареи, когда он не нужен, и включить и выключить ваш проект, а также два светодиодных индикатора — белый, который показывает, когда прокладка обеспечивает питание, и красный. чтобы сообщить вам, когда аккумулятор заряжается.
Мы разработали его как можно более тонким, чтобы его можно было разместить под другими надстройками, такими как наши Pico Packs и Base, и он совместим с любым из наших LiPo, LiIon и LiPo аккумуляторов большой емкости.
Указание по технике безопасности! Вы должны использовать эту прокладку только с батареями LiPo или LiIon, и вы должны убедиться, что любой проект, связанный с LiPo, в достаточной степени защищен от вмятин, изгибов, проколов или раздавливания.
- Зарядное устройство MCP73831 с зарядным током 215 мА (техническое описание)
- Защита аккумулятора XB6096I2S (техническое описание)
- Кнопка питания
- 2-контактный разъем JST PH, полярность отмечена на плате
- Светодиодные индикаторы питания и зарядки
- Совместим с Raspberry Pi Pico.
- Требуется пайка.
- Размеры: приблизительно 21 мм x 21 мм x 7 мм (Д x Ш x В, включая разъемы)
- Схема
Raspberry Pi Pico, батарея и другие дополнения Pico не включены!
Начало работы
Вам нужно будет припаять прокладку к задней панели Pico, при этом кнопка питания должна быть на том же конце, что и порт USB. Текст на SHIM и метки контактов на задней панели Pico должны быть обращены друг к другу.
Программное обеспечение
Вы можете использовать LiPo SHIM для Pico с любой ОС Pico, поскольку для работы не требуется установка какого-либо программного обеспечения.
Мы собрали пример MicroPython, показывающий, как можно считать системное напряжение с вывода VSYS Pico, чтобы оценить, сколько заряда осталось в батарее, и отобразить его на Pico Explorer или Pico Display.
Примечания
- Кнопку питания также можно использовать как кнопку сброса, ура! Просто дважды нажмите ее, чтобы отключить и восстановить питание, удерживая кнопку BOOTSEL на Pico, чтобы войти в режим загрузчика, без необходимости подключения и отключения кабелей.
- Поскольку у Pico Display толстый разъем дисплея на нижней стороне, у вас могут возникнуть трудности с прокладкой прокладки под ним, если штырьки вашего Pico находятся на более короткой стороне. Если вы хотите использовать этот SHIM с дисплеем Pico, мы рекомендуем приобрести несколько более длинных заголовков для стекирования или Pico Omnibus / Pico Decker.
- В качестве альтернативы, если вы стремитесь к экспериментальной пайке, вы можете попробовать припаять Pico и SHIM к короткому концу разъема, спина к спине. Этот метод позволяет сделать корпус Pico/SHIM гораздо более тонким, что хорошо работает с Pico Display, но вам необходимо убедиться, что ваши паяные соединения имеют хороший контакт с контактными площадками обеих плат и разъемом.
О Raspberry Pi Pico
Raspberry Pi Pico — это гибкая и недорогая плата для разработки микроконтроллеров от разработчиков Raspberry Pi, основанная на их собственном чипе — RP2040. Его легко программировать через USB с помощью C/C++ или MicroPython, и он идеально подходит для использования во всех видах физических вычислительных проектов, устройств и изобретений — мы так рады видеть, что вы делаете с его помощью!
Мы назвали наши дополнения размера Pico рюкзаками , так как они предназначены для крепления к задней части вашего Pico, как если бы он был одет в очень стильный рюкзак (или миниатюрный реактивный ранец, если вы предпочитаете ). У нас также есть Пико bases (более крупные дополнительные платы с местом для установки Pico сверху) и некоторые другие доски, которые позволяют вам делать интересные хакерские вещи, например, использовать несколько пакетов одновременно — нажмите здесь, чтобы просмотреть их все!
К вашему Pico нужно будет припаять штекерные разъемы (контактами вниз), чтобы прикрепить их к нашим дополнительным платам.
` let whenHTML = `${момент(hit.date, «X»).fromNow()}
` пусть sourceHTML = «» пусть ReviewerImageHTML = «» если (hit.source == «gcr») { sourceHTML = `о покупках у нас через Google Customer Reviews` } еще { если (hit.reviewer.first_name) { sourceHTML += `от ${hit.reviewer.first_name} ` рецензентImageHTML = « } если (хит.продукт) { sourceHTML += `о ${hit.product.title} ` sourceHTML += `через REVIEWS.io` пусть изображение = hit. product.image если (изображение) { пусть dotIndex = image.lastIndexOf(«.») image = image.substring(0, dotIndex) + «_75x75» + image.substring(dotIndex) } productImageHTML = « } } пусть HTML = ` ${когдаHTML} ${комментарийHTML} ${reviewerImageHTML} ${источникHTML} ` пусть обзорЭлемент = $ (html) $(«#review_container»).append(reviewElement) обзорElement.click((e) => { $(«#review_popup >div:first-child»).html(html) $(«#review_popup»).parent().show() обновитьрейтинги() }) } обновитьрейтинги() }) } константа loadNextReviewPage = () => { отзывыТекущая страница++ loadReviewPage (обзорыCurrentPage) } $(функция() { loadReviewPage (0) })` $(«#user_photos .grid»). Добавить($(html)) } } $(«#user_photo_count»).text(userPhotoCount + «фотография пользователя» + (userPhotoCount > 1 ? «s»: «»)) }) } const loadNextUserPhotoPage = () => { текущая страница++ loadUserPhotosPage (текущая страница) } $(функция() { loadUserPhotosPage (0) })
Этот SHIM обеспечивает удобный способ питания вашего Raspberry Pi Pico от аккумулятора LiPo/LiIon. Вы можете легко перезарядить аккумулятор, подав питание на USB-порт Pico. читать больше…
Проверка запасов…
PIM557
- Гарантия удовлетворения или возврата
- Доставка по всему миру почтой или курьером
Просмотрите свою корзину или продолжите просмотр.
Количество:
Просмотрите корзину или продолжите просмотр.
проверка списка желаний…
${hit.
title}${hit.summary}
`)) } $(«#guide_and_tutorials»).show() }) })
Прокладка LiPo для Raspberry Pi
сортировать по наилучшему соответствиюрекомендуемыеновейшиелучшие продажицена 163264 на страницу только в наличии
Поиск не дал результатов.
Показать больше продуктов…
${ stockHtml }
${ hit.product_title } ${ hit.variant_title ? («-» + hit.variant_title): «» }:
${ hit.description_first_paragraph}` вернуть $(resultHtml) } const searchResultCallback = (попадания, аспекты, количество) => { debug(«> обратный вызов результатов поиска», совпадения, фасеты, количество) $(«#search .load-more-results»).toggle(hits.page 0) { $(«#search.no-results»).hide() пусть html = «» for(let hit of hits. hits) { $(«#search .results»).append(createSearchResultFull(попадание)) } }еще{ if(searchSearcher.inStockOnly) {$(«#search .no-results .message»).html(«Возможно, у нас есть что-то подходящее, чего нет в наличии. Включить товары, которых нет в наличии.»)} для (пусть я = 0; я `)) } $(«#поиск .без результатов»).show() } // обновляем списки фильтров $(«#search .filters»).find(«раздел»).each((i, e) => { buildFilters($(«#search»), searchSearcher, $(e).data(«type»), аспекты, количество) }) обновитьрейтинги() обновитьЦены() обновитьЗначки() } var searchSearcher = новый искатель([], searchResultCallback) searchSearcher.permanentFilters = true var searchLanding = window.location.pathname == «/search» вар предыдущий URL = ноль вар последний запрос = «» const queryInput = (запрос) => { если(!searchLanding) { if(!lastQuery && запрос) { debug(«> начать поиск, сохранить текущее состояние URL», document. location.href) предыдущий URL = document.location.href $(«#поиск»).show() $(«#контент»).скрыть() } если (последний запрос && !запрос) { debug(«> завершить поиск, вернуться к предыдущему URL-адресу», previousUrl) history.replaceState(null, window.title, предыдущийUrl) $(«#поиск»).скрыть() $(«#контент»).показать() } если (запрос) { searchSearcher.queryText = запрос обновитьПоиск() } последний запрос = запрос }еще{ searchSearcher.queryText = запрос обновитьПоиск() } } $(функция() { если (window.location.pathname == «/search») { $(«#поиск»).show() $(«#контент»).скрыть() searchSearcher.queryText = urlGet(«q», «») $(«#search_input_desktop»).val(searchSearcher.queryText) $(«#search_input_mobile»).val(searchSearcher.queryText) $(«#search .filters»).find(«раздел»).each((i, e) => { searchSearcher.filters[$(e).data(«тип»)] = urlGet($(e). data(«тип»)) }) если(urlGet(«акции»)) { $(«#поиск .только на складе»).prop(«проверено», правда) searchSearcher.inStockOnly = истина } если (urlGet («сортировать»)) { $(«#search .sort-by»).val(urlGet(«sort»)) searchSearcher.sort = urlGet(«сортировка») } если(urlGet(«страница»)) { searchSearcher.preloadPageCount = parseInt(urlGet(«страница»)) } searchSearcher.pageSize = получить(«searchPageSize», 32) $(«#search .per-page»).val(get(«searchPageSize», 32)) searchSearcher.doSearch() } }) // запустить новый поиск и обновить URL const updateSearch = (страница = 1) => { searchSearcher.page = страница searchSearcher.doSearch() пусть параметры = [] if(searchSearcher.queryText) {parameters.push(`q=${searchSearcher.queryText}`)} for(let filter of Object.keys(searchSearcher.filters)) { если (searchSearcher.filters[фильтр]) { параметры.push(`${фильтр}=${searchSearcher. filters[фильтр]}`) } } if(searchSearcher.page != 1) {parameters.push(`page=${searchSearcher.page}`)} if(searchSearcher.sort) {parameters.push(`sort=${searchSearcher.sort}`)} if(searchSearcher.inStockOnly) {parameters.push(`stock=true`)} пусть queryString = параметры.длина > 0? «?» + параметры.соединение(«&») : «» отладка(«> обновить URL», queryString) history.replaceState(null, window.title, «/search» + queryString) } const showOutOfStock = () => { $(«#поиск .только на складе»).prop(«проверено», ложь) searchSearcher.inStockOnly = ложь обновитьПоиск() } $(«#search_input_desktop»).on(«input», (e) => { // ввод поиска на рабочем столе searchSearcher.queryText = $(«#search_input_desktop»).val().trim() $(«#search_input_mobile»).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search_input_mobile»).on(«input», (e) => { // ввод мобильного поиска searchSearcher.queryText = $(«#search_input_mobile»). val().trim() $(«#search_input_desktop»).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search .filters >section ul»).click((e) => { // фильтр кликов searchSearcher.filters[$(e.target).closest(«раздел»).data(«тип»)] = $(e.target).hasClass(«активный») ? ноль: $(e.target).data(«значение») обновитьПоиск() }) $(«#search .per-page»).change((e) => { // элементов на странице set(«searchPageSize», parseInt($(e.target).val())) обновитьПоиск() }) $(«#search .sort-by»).change((e) => { // сортировка searchSearcher.sort = $(e.target).val() обновитьПоиск() }) $(«#search .только на складе»).change((e) => { // только на складе searchSearcher.inStockOnly = $(e.target).prop(«проверено») обновитьПоиск() }) $(«#search .load-more-results»).click(() => { // загрузить больше результатов updateSearch(searchSearcher.page + 1) })
ПиморониКрошечная прокладка блока питания LiPo/LiIon для всех версий Raspberry Pi!
Мы любим мобильные проекты, но иметь дискретное, гладкое и аккуратное решение для источника питания всегда непросто. LiPo SHIM (ранее известный как Zero LiPo) призван предоставить вам максимально компактный блок питания Raspberry Pi.
Вы можете либо припаять печатную плату толщиной 0,8 мм непосредственно к контактам GPIO на вашем Pi для постоянного решения, либо припаять прилагаемый разъем 2×6 0,1 «мама, который позволит вам удалить свой Zero LiPo в любое время (но заблокирует контакты GPIO)
Мы используем повышающий преобразователь TPS61232 от Texas Instruments, который обеспечивает КПД до 96%. На плате есть светодиодные индикаторы питания и низкого заряда батареи. Во время отключения (из-за пониженного напряжения или внешнего выбора) ток покоя составляет всего 15 мкА.
Компания MagPi описала LiPo SHIM как «отличный комплект» и «отличный вариант для обеспечения безопасного питания для портативного проекта» в своем четырехзвездочном обзоре.
Нужна батарея? Ознакомьтесь с нашим ассортиментом аккумуляторов LiPo и LiIon!
Особенности
- Печатная плата толщиной 0,8 мм
- Форма позволяет сидеть как можно ниже на Raspberry Pi
- 2-контактный разъем JST идеально подходит для большинства аккумуляторов LiPo/LiIon
- Светодиодные индикаторы питания и низкого заряда батареи
- Обеспечивает непрерывный ток до 1,5 А (ток покоя 15 мкА)
- Предупреждение о низком заряде батареи при напряжении 3,4 В (подтверждает низкий уровень заряда GPIO №4)
- Автоматическое отключение при 3,0 В для защиты аккумулятора
- Контакты VBAT+, GND и EN доступны для размыкания
- 2×6 разъем 0,1″ с внутренней резьбой (дополнительно, для непостоянной установки)
- Включает резиновую ножку для размещения LiPo SHIM на расстоянии от вашего Raspberry Pi
- Распиновка прокладки LiPo
- Совместим со всеми компьютерами Raspberry Pi с 40-контактным разъемом
- Требуется пайка
- Аккумулятор не входит в комплект
Программное обеспечение
Мы собрали однострочный установщик, который инициирует полное завершение работы, когда срабатывает предупреждение о низком заряде батареи и GPIO № 4 становится низким. Более подробная информация доступна здесь, в репозитории GitHub.
Примечания
Это не зарядное устройство. Вам понадобится отдельное зарядное устройство для зарядки ваших LiPo/LiIon аккумуляторов! Мы рекомендуем зарядное устройство Adafruit Micro Lipo или PowerBoost 1000.
Выведенные из строя контакты VBAT+ и GND можно использовать в качестве альтернативного способа подачи питания, например, если вы хотите припаять собственный разъем JST с проводами, чтобы он немного растянулся.
Контакт EN можно заземлить, чтобы отключить выходную мощность LiPo SHIM.
` пусть когдаHTML = `${момент(попадание.дата, «X»).fromNow()}
` пусть sourceHTML = «» пусть ReviewerImageHTML = «» если (hit.source == «gcr») { sourceHTML = `о покупках у нас через Google Customer Reviews` } еще { если (hit.reviewer.first_name) { sourceHTML += `от ${hit.reviewer.first_name} ` рецензентImageHTML = « } если (хит. продукт) { sourceHTML += `о ${hit.product.title} ` sourceHTML += `через REVIEWS.io` пусть изображение = hit.product.image если (изображение) { пусть dotIndex = image.lastIndexOf(«.») image = image.substring(0, dotIndex) + «_75x75» + image.substring(dotIndex) } productImageHTML = « } } пусть HTML = ` ${когдаHTML} ${комментарийHTML} ${reviewerImageHTML} ${источникHTML} ` пусть обзорЭлемент = $ (html) $(«#review_container»).append(reviewElement) обзорElement.click((e) => { $(«#review_popup >div:first-child»).html(html) $(«#review_popup»).parent().show() обновитьрейтинги() }) } обновитьрейтинги() }) } константа loadNextReviewPage = () => { отзывыТекущая страница++ loadReviewPage (обзорыCurrentPage) } $(функция() { loadReviewPage (0) })` $(«#user_photos . grid»).Добавить($(html)) } } $(«#user_photo_count»).text(userPhotoCount + «фотография пользователя» + (userPhotoCount > 1 ? «s»: «»)) }) } const loadNextUserPhotoPage = () => { текущая страница++ loadUserPhotosPage (текущая страница) } $(функция() { loadUserPhotosPage (0) })
Крошечная прокладка блока питания LiPo/LiIon для всех версий Raspberry Pi! читать больше…
Проверка запасов…
PIM185
- Гарантия удовлетворения или возврата
- Доставка по всему миру почтой или курьером
Просмотрите свою корзину или продолжите просмотр.
Количество:
Просмотрите корзину или продолжите просмотр.
проверка списка желаний…
${hit.title}
${hit.summary}
`)) } $(«#guide_and_tutorials»).