Сборка силовых ключей (P-FET) поможет управлять большим количеством моторов, клапанов и другой нагрузкой постоянного тока. И при этом займёт все три пина микроконтроллера.
Модуль (P-FET) общается с управляющей платой по протоколу SPI. При подключении к Arduino или Iskra JS удобно использовать Troyka Shield.
Создадим автоматическую подсветку лестницы. Подключим восемь отдельных кусков светодиодной ленты к сборке силовых ключей на пине A0
. Будем по очереди зажигать каждую ступень, после чего все потушим.
// библиотека для работы с модулями по интрефейсу SPI #include <SPI.h> // библиотека для работы со сборкой силовых ключей #include <AmperkaFET.h> // пин выбора устройства на шине 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); }
// инициализируем 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);
После прошивки вы увидите поочерёдное включение ключей.
Сборка силовых ключей позволяет последовательное подключение между собой в цепочку (гирлянду). Каждое новый модуль — восемь дополнительных ключей для управления силовыми устройствами. Это позволяет управлять тоннами устройств без дополнительных пинов.
Подключим к предыдущему примеру ещё два P-FET модуля с подключёнными светодиодными лентами.
// библиотека для работы с модулями по интерфейсу SPI #include <SPI.h> // библиотека для работы со сборкой силовых ключей #include <AmperkaFET.h> // пин выбора сборки устройств на шине 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); }
// инициализируем 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);
После прошивки вы увидите следующую картину.
Модуль выполнен на микросхеме выходного сдвигового регистра STPIC6C595. Микросхема позволяет увеличивать количество выходов микроконтроллера.
Сдвиговый регистр — это преобразователь последовательного интерфейса в параллельный. Микросхема получает данные по SPI, а потом разом выставляет уровни на восьми ножках согласно полученным битам.
STCP
(пин CS) низкий уровень.SHCP
(пин SCK) со входа DS
(пин MOSI) считывается первый бит и записывается в младший разряд. Со следующим тактовым импульсом бит из младшего разряда сдвигается на один разряд, а на его места записывается бит, поступивший на вход DS
(пин MOSI).STCP
(пин CS) высокий уровень.
При каскадном включении сдвиговых регистров, данные от первого регистра передаются к следующему.
На модуле расположено восемь выходных каналов. Каждый канал состоит из управляющего полевого транзистора IRLML9301 с P-каналом, клеммника для подключения нагрузки и световой индикации состояния ключа.
Модуль предназначен для коммутации нагрузки постоянного тока напряжением до 30 В и током до 3 А.
Нагрузка подключается своими контактами к колодкам под винт. Отрицательный контакт нагрузки подключается к контакту −
, а положительный — к контакту +
.
Все минусовые контакты −
на выходных каналах сборки объединены в одну цепь с контактом GND
клеммника PWR
. Cиловыми ключами коммутируется связь между контактами +
и Vin
.
Если требуется коммутировать минусовой контакт, например в многоцветных светодиодных лентах с общим плюсом, воспользуйтесь сборкой силовых ключей (N-FET)
За счёт подключения силовых ключе через выходной сдвиговый регистр, модуль не поддерживает ШИМ. К сожалению вы не сможете регулировать скорость вращения двигателя или яркость свечения светодиодной ленты.
Источник питания нагрузки подключается своими контактами к колодкам под винт клеммника PWR
. Положительный контакт источника питания подключается к контакту Vin
, а отрицательный — к контакту GND
.
Имя светодиода | Назначение |
---|---|
PWR | Индикатор питания модуля |
LED0–LED7 | Индикатор состояния ключей |
Понижающий регулятор напряжения L78L05AB с выходом 5 вольт, обеспечивает питание логики модуля. Максимальный выходной ток составляет 100 мА.
На модуле выведено две группы Troyka-контактов — входная и выходная.
Входная группа контактов используется для соединения модуля с микроконтроллером:
SCK
микроконтроллера.MOSI
микроконтроллера.Выходная группа используется для соединения несколько модулей в цепочку (гирлянду):
SCK
последующего модуля.DI
последующего модуля.CS
последующего модуля.