Сборка силовых ключей (P-FET)

Сборка силовых ключей (P-FET) поможет управлять большим количеством моторов, клапанов и другой нагрузкой постоянного тока. И при этом займёт все три пина микроконтроллера.

Видеообзор

Подключения и настройка

Модуль (P-FET) общается с управляющей платой по протоколу SPI. При подключении к Arduino или Iskra JS удобно использовать Troyka Shield.

Примеры работы

Работа с одним модулем

Создадим автоматическую подсветку лестницы. Подключим восемь отдельных кусков светодиодной ленты к сборке силовых ключей на пине A0. Будем по очереди зажигать каждую ступень, после чего все потушим.

Код для Arduino

singleFET.ino
// библиотека для работы с модулями по интрефейсу 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);
}

Код для Iskra JS

singleFET.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);

После прошивки вы увидите поочерёдное включение ключей.

Работа с группой модулей

Сборка силовых ключей позволяет последовательное подключение между собой в цепочку (гирлянду). Каждое новый модуль — восемь дополнительных ключей для управления силовыми устройствами. Это позволяет управлять тоннами устройств без дополнительных пинов.

Подключим к предыдущему примеру ещё два P-FET модуля с подключёнными светодиодными лентами.

Код для Arduino

multipleFET.ino
// библиотека для работы с модулями по интерфейсу 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);
}

Код для Iskra JS

multipleFET.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);

После прошивки вы увидите следующую картину.

Элементы платы

Микросхема STPIC6C595

Модуль выполнен на микросхеме выходного сдвигового регистра STPIC6C595. Микросхема позволяет увеличивать количество выходов микроконтроллера.

Сдвиговый регистр — это преобразователь последовательного интерфейса в параллельный. Микросхема получает данные по SPI, а потом разом выставляет уровни на восьми ножках согласно полученным битам.

  1. Устанавливаем синхронизацию. Подаём на вход защёлки STCP (пин CS) низкий уровень.
  2. При поступлении тактового импульса на вход SHCP (пин SCK) со входа DS (пин MOSI) считывается первый бит и записывается в младший разряд. Со следующим тактовым импульсом бит из младшего разряда сдвигается на один разряд, а на его места записывается бит, поступивший на вход DS (пин MOSI).
  3. Защёлкиваем регистр. Подаём на вход защёлки STCP (пин CS) высокий уровень.

Каскадное включение

При каскадном включении сдвиговых регистров, данные от первого регистра передаются к следующему.

Выходной канал сборки

На модуле расположено восемь выходных каналов. Каждый канал состоит из управляющего полевого транзистора IRLML9301 с P-каналом, клеммника для подключения нагрузки и световой индикации состояния ключа.

Модуль предназначен для коммутации нагрузки постоянного тока напряжением до 30 В и током до 3 А.

Нагрузка подключается своими контактами к колодкам под винт. Отрицательный контакт нагрузки подключается к контакту , а положительный — к контакту +.

Все минусовые контакты на выходных каналах сборки объединены в одну цепь с контактом GND клеммника PWR. Cиловыми ключами коммутируется связь между контактами + и Vin.

Если требуется коммутировать минусовой контакт, например в многоцветных светодиодных лентах с общим плюсом, воспользуйтесь сборкой силовых ключей (N-FET)

За счёт подключения силовых ключе через выходной сдвиговый регистр, модуль не поддерживает ШИМ. К сожалению вы не сможете регулировать скорость вращения двигателя или яркость свечения светодиодной ленты.

Питание нагрузки

Источник питания нагрузки подключается своими контактами к колодкам под винт клеммника PWR. Положительный контакт источника питания подключается к контакту Vin, а отрицательный — к контакту GND.

Светодиодная индикация

Имя светодиода Назначение
PWR Индикатор питания модуля
LED0–LED7 Индикатор состояния ключей

Понижающий регулятор питания

Понижающий регулятор напряжения L78L05AB с выходом 5 вольт, обеспечивает питание логики модуля. Максимальный выходной ток составляет 100 мА.

Troyka-контакты

На модуле выведено две группы Troyka-контактов — входная и выходная.

Входная группа контактов используется для соединения модуля с микроконтроллером:

  • Сигнальный (SCK) — пин последовательного тактового сигнала. Используется для согласования скорости передачи. Подключите к пину SCK микроконтроллера.
  • Сигнальный (DI) — вход ведомого устройства. Используется для приёма данных из микроконтроллера. Подключите к пину MOSI микроконтроллера.
  • Сигнальный (CS) — выбор ведомого устройства. Подключите к любому цифровому пину микроконтроллера.
  • Земля (G) — соедините с пином GND микроконтроллера.

Выходная группа используется для соединения несколько модулей в цепочку (гирлянду):

  • Сигнальный (SCK) — пин последовательного тактового сигнала. Используется для согласования скорости передачи. Подключите к пину SCK последующего модуля.
  • Сигнальный (DO) — выход ведомого устройства. Используется для проброски данных через модуль. Подключите к пину DI последующего модуля.
  • Сигнальный (CS) — выбор ведомого устройства. Подключите к пину CS последующего модуля.
  • Земля (G) — соедините с пином GND последующего модуля.

Принципиальная и монтажная схемы

Габаритный чертёж

Характеристики

  • Питание модуля: 3.3–5 В
  • Потребляемый ток: до 50 мА
  • Максимальное коммутируемое напряжение: 30 В
  • Максимальный коммутируемый ток: 3 А
  • Ключ: IRLML9301 (P-канал)
  • Количество каналов: 8
  • Габариты без ушек: 76×25 мм
  • Габариты с ушками: 76×35 мм

Ресурсы