====== Сборка силовых ключей (P-FET) ====== {{ :продукты:zelo-p-fet:zelo-p-fet.4.jpg?nolink |}} [[amp>product/zelo-p-fet?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|Сборка силовых ключей (P-FET)]] поможет управлять большим количеством моторов, клапанов и другой нагрузкой постоянного тока. И при этом займёт все три пина микроконтроллера. ===== Видеообзор ===== {{youtube>XC3bsF2fs9c?large}} ===== Подключения и настройка ===== Модуль (P-FET) общается с управляющей платой по протоколу [[видеоуроки:8-интерфейсы-spi|SPI]]. При подключении к [[amp>collection/arduino?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|Arduino]] или [[amp>product/iskra-js?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|Iskra JS]] удобно использовать [[amp>/product/arduino-troyka-shield?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|Troyka Shield]]. {{ :продукты:zelo-p-fet:zelo-p-fet_scheme_troyka-shield.png?nolink |}} ===== Примеры работы ===== ==== Работа с одним модулем ==== Создадим автоматическую подсветку лестницы. Подключим восемь отдельных кусков светодиодной ленты к сборке силовых ключей на пине ''A0''. Будем по очереди зажигать каждую ступень, после чего все потушим. === Код для Arduino === // библиотека для работы с модулями по интрефейсу SPI #include // библиотека для работы со сборкой силовых ключей #include // пин выбора устройства на шине SPI #define PIN_CS A0 // создаём объект mosfet для работы со сборкой силовых ключей // передаём номер пина выбора устройства на шине SPI FET mosfet(PIN_CS); void setup() { // начало работы с силовыми ключами mosfet.begin(); } void loop() { for(int i = 0; i < 8; i++ ) { // включаем по очереди каждый ключ на модуле mosfet.digitalWrite(i, HIGH); // ждём пол секунды delay(500); } // выключаем все ключи на модуле mosfet.digitalWrite(ALL, LOW); delay(500); } === Код для Iskra JS === // инициализируем SPI2 SPI2.setup({ baud: 3200000, mosi: B15, sck: B13, miso: B14 }); // подключаем модуль для работы со сборкой силовых ключей var mosfet = require('@amperka/x-fet').connect({ cs: A0, // пин cs нужен для обращения к ключам spi: SPI2, // интерфейс SPI к которому подключены ключи qtyMod: 1 // количество модулей в цепочке }); // переменная счетчик var counter = 0; // вермя в милисекундах на переключение var time = 1000; // кол-во переключаемых выходов от 1 до 8; var pins = 8; // запускаем функцию которая переключает выходы setInterval(() => { if (counter === pins) { counter = 0; mosfet.turnAllOff(); } else { mosfet.turnOn(counter); counter++; } }, time); После прошивки вы увидите поочерёдное включение ключей. {{ :продукты:zelo-p-fet:zelo-p-fet_scheme_single.gif?nolink |}} ==== Работа с группой модулей ==== Сборка силовых ключей позволяет последовательное подключение между собой в цепочку (гирлянду). Каждое новый модуль — восемь дополнительных ключей для управления силовыми устройствами. Это позволяет управлять тоннами устройств без дополнительных пинов. Подключим к предыдущему примеру ещё два P-FET модуля с подключёнными светодиодными лентами. === Код для Arduino === // библиотека для работы с модулями по интерфейсу SPI #include // библиотека для работы со сборкой силовых ключей #include // пин выбора сборки устройств на шине SPI #define PIN_CS A0 // создаём объект mosfet для работы со сборкой силовых ключей // передаём номер пина выбора устройств на шине SPI // и количество устройств подключённых в цепочке FET mosfet(PIN_CS, 3); void setup() { // начало работы с силовыми ключами mosfet.begin(); } void loop() { // включаем второй ключ на нулевом модуле mosfet.digitalWrite(0, 2, HIGH); // ждём пол секунды delay(500); // включаем пятый ключ на первом модуле mosfet.digitalWrite(1, 5, HIGH); // ждём пол секунды delay(500); // включаем все ключи на втором модуле mosfet.digitalWrite(2, ALL, HIGH); // ждём пол секунды delay(500); // выключаем все ключи на всех модулях mosfet.digitalWrite(ALL, ALL, LOW); // ждём пол секунды delay(500); } === Код для Iskra JS === // инициализируем SPI2 SPI2.setup({ baud: 3200000, mosi: B15, sck: B13, miso: B14 }); // подключаем модуль для работы со сборкой силовых ключей var mosfet = require('@amperka/x-fet').connect({ cs: A0, // пин cs нужен для обращения к ключам spi: SPI2, // интерфейс SPI к которому подключены ключи qtyMod: 3 // количество модулей в цепочке }); // вермя в милисекундах на переключение var time = 5000; // запускаем функцию которая переключает выходы setinterval(() => { mosfet.turnOn(2, 0); setTimeout(() => { mosfet.turnOn(5, 1); setTimeout(() => { mosfet.turnAllOn(2); setTimeout(() => { mosfet.turnAllOff(); }, time / 4); }, time / 4); }, time / 4); }, time); После прошивки вы увидите следующую картину. {{ :продукты:zelo-p-fet:zelo-p-fet_scheme_multiple.gif?nolink |}} ===== Элементы платы ===== {{ :продукты:zelo-p-fet:zelo-p-fet_annotation.png?nolink |}} ==== Микросхема STPIC6C595 ==== Модуль выполнен на микросхеме выходного сдвигового регистра {{:продукты:zelo-p-fet:stpic6c595_datasheet.pdf|STPIC6C595}}. Микросхема позволяет увеличивать количество выходов микроконтроллера. Сдвиговый регистр — это преобразователь последовательного интерфейса в параллельный. Микросхема получает данные по [[видеоуроки:8-интерфейсы-spi|SPI]], а потом разом выставляет уровни на восьми ножках согласно полученным битам. - Устанавливаем синхронизацию. Подаём на вход защёлки ''STCP'' (пин CS) низкий уровень. - При поступлении тактового импульса на вход ''SHCP'' (пин SCK) со входа ''DS'' (пин MOSI) считывается первый бит и записывается в младший разряд. Со следующим тактовым импульсом бит из младшего разряда сдвигается на один разряд, а на его места записывается бит, поступивший на вход ''DS'' (пин MOSI). - Защёлкиваем регистр. Подаём на вход защёлки ''STCP'' (пин CS) высокий уровень. {{ :продукты:zelo-p-fet:zelo-p-fet_shift_out.gif?nolink |}} === Каскадное включение === При каскадном включении сдвиговых регистров, данные от первого регистра передаются к следующему. {{ :продукты:zelo-p-fet:zelo-p-fet_shift_out_cascade.gif?nolink |}} ==== Выходной канал сборки ==== На модуле расположено восемь выходных каналов. Каждый канал состоит из управляющего полевого транзистора {{:продукты:zelo-p-fet:irlml9301_datasheet.pdf|IRLML9301}} с P-каналом, клеммника для подключения нагрузки и световой индикации состояния ключа. Модуль предназначен для коммутации нагрузки постоянного тока напряжением до 30 В и током до 3 А. Нагрузка подключается своими контактами к колодкам под винт. Отрицательный контакт нагрузки подключается к контакту ''−'', а положительный — к контакту ''+''. Все минусовые контакты ''−'' на выходных каналах сборки объединены в одну цепь с контактом ''GND'' клеммника ''PWR''. Cиловыми ключами коммутируется связь между контактами ''+'' и ''Vin''. Если требуется коммутировать минусовой контакт, например в [[amp>product/rgb-led-strip-sealed?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|многоцветных светодиодных лентах]] с общим плюсом, воспользуйтесь [[amp>product/zelo-n-fet?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|сборкой силовых ключей (N-FET)]] За счёт подключения силовых ключе через выходной сдвиговый регистр, модуль не поддерживает [[:конспект-arduino:шим|ШИМ]]. К сожалению вы не сможете регулировать скорость вращения двигателя или яркость свечения светодиодной ленты. ==== Питание нагрузки ==== Источник питания нагрузки подключается своими контактами к колодкам под винт клеммника ''PWR''. Положительный контакт источника питания подключается к контакту ''Vin'', а отрицательный — к контакту ''GND''. ==== Светодиодная индикация ==== ^ Имя светодиода ^ Назначение ^ | PWR |Индикатор питания модуля| | LED0–LED7 |Индикатор состояния ключей| ==== Понижающий регулятор питания ==== Понижающий регулятор напряжения {{:продукты:zelo-p-fet:l78l05ab_datasheet.pdf|L78L05AB}} с выходом 5 вольт, обеспечивает питание логики модуля. Максимальный выходной ток составляет 100 мА. ==== Troyka-контакты ==== На модуле выведено две группы Troyka-контактов — входная и выходная. **Входная группа** контактов используется для соединения модуля с микроконтроллером: * Сигнальный (SCK) — пин последовательного тактового сигнала. Используется для согласования скорости передачи. Подключите к пину ''SCK'' микроконтроллера. * Сигнальный (DI) — вход ведомого устройства. Используется для приёма данных из микроконтроллера. Подключите к пину ''MOSI'' микроконтроллера. * Сигнальный (CS) — выбор ведомого устройства. Подключите к любому цифровому пину микроконтроллера. * Земля (G) — соедините с пином GND микроконтроллера. **Выходная группа** используется для соединения несколько модулей в цепочку (гирлянду): * Сигнальный (SCK) — пин последовательного тактового сигнала. Используется для согласования скорости передачи. Подключите к пину ''SCK'' последующего модуля. * Сигнальный (DO) — выход ведомого устройства. Используется для проброски данных через модуль. Подключите к пину ''DI'' последующего модуля. * Сигнальный (CS) — выбор ведомого устройства. Подключите к пину ''CS'' последующего модуля. * Земля (G) — соедините с пином GND последующего модуля. ===== Принципиальная и монтажная схемы ===== {{:продукты:zelo-p-fet:zelo-p-fet_schematic.png?direct&250 |}} {{ :продукты:zelo-p-fet:zelo-p-fet_layout.png?direct&400|}} ===== Габаритный чертёж ===== {{ :продукты:zelo-p-fet:zelo-p-fet_design.png?nolink |}} ===== Характеристики ===== * Питание модуля: 3.3–5 В * Потребляемый ток: до 50 мА * Максимальное коммутируемое напряжение: 30 В * Максимальный коммутируемый ток: 3 А * Ключ: IRLML9301 (P-канал) * Количество каналов: 8 * Габариты без ушек: 76×25 мм * Габариты с ушками: 76×35 мм ===== Ресурсы ===== * [[amp>product/zelo-p-fet?utm_source=man&utm_campaign=zelo-p-fet&utm_medium=wiki|Сборка силовых ключей (P-FET)]] в магазине * [[https://github.com/amperka/AmperkaFet|Библиотека для Arduino]] * [[:js:x-fet|Описание библиотеки для Espruino]] * [[https://github.com/amperka/hardware-drawings/blob/master/zelo-p-fet.svg|Векторное изображение сборки ключей]] * {{:продукты:zelo-p-fet:irlml9301_datasheet.pdf|Даташит на силовой ключ IRLML9301}} * {{:продукты:zelo-p-fet:stpic6c595_datasheet.pdf|Даташит на выходной сдвиговый регистр STPIC6C595}} * {{:продукты:zelo-p-fet:l78l05ab_datasheet.pdf|Даташит на понижающий регулятор L78L05AB}}