====== Сборка силовых ключей (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}}