PWM / ШИМ контроллер 001

Назначение #

Robointellect Controller 001 (далее модуль RI-PWM1) объединяет в себе три изделия:

16-канальный 12-битный ШИМ-контроллер на основе микросхемы PCA9685

16-канальный 12-битный ШИМ-контроллер на основе микросхемы PCA9685

USB-I2C конвертер на основе микросхемы CH341T

USB-I2C конвертер на основе микросхемы CH341T

модуль RGB светодиода

модуль RGB светодиода

модуль RI-PWM1

Модуль RI-PWM1

Устройство позволяет выполнить задачи автоматизации, в которых требуются выдача дискретных или ШИМ сигналов. Модуль имеет следующие характеристики:

Количество дискретных выходов/ШИМ каналов

16

Количество портов I2C для подключения сторонних устройств

5

Интерфейс управления

USB, I2C

Напряжение питания

5 В

Светодиодная индикация работы каналов

есть

Наличие RGB светодиода

есть

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

Подключение #

Схема подключения модуля RI-PWM1 показана на рисунке 1.

Схема расположения интерфейсов модуля RIPWM1

Характеристики сигналов представлены в таблице 1.

Таблица 1 - Сигналы модуля RI-PWM1

Сигнал Описание
5V Подача напряжения 5 В через адаптер питания или клеммную колодку. Максимальное потребление зависит подключенных к каналам устройств, не должно превышать 2 А
3.3V

Напряжение 3.3 В от внутреннего стабилизатора напряжения, максимально допустимая нагрузка не должна превышать

100 мА

PWM Канал для выдачи дискретных/ШИМ сигналов. Нагрузочная способность до 25 мА на канал в режиме открытого стока или до 10 мА в режиме дискретного выхода. Суммарная мощность не должна превышать 400 мВт.

SDA

SCL

Линия данных и такта интерфейса I2C

RGB светодиод #

Для включения RGB светодиода необходимо установить перемычку «ON/OFF RGB LED», расположенную в верхней правой части платы (см. рисунок 1). Светодиод подключается к каналам 14 - 16 в следующей последовательности:

  • зеленый – канал 14;
  • красный – канал 15;
  • синий – канал 16.

Подключение датчика тока #

Модуль RI-PWM1 имеет возможность подключить внешний датчик тока INA219 для контроля потребления по каналам 1 – 16. Для этого необходимо снять перемычку «SHUNT», расположенную в верхней левой части платы (см. рисунок 1) и подключить датчик тока в разрыв цепи. В качестве датчика тока может служить модуль на основе микросхемы INA219.

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

Каждый канал модуля RI-PWM1 имеет светодиод индикации состояния. Светодиод включается при работе выбранного канала. Светодиоды расположены около соответствующих каналам соединителей. При подключении сетевого адаптера 5 В, на устройстве включается индикатор сетевого питания (см. рисунок 1).

Варианты схем включения #

На рисунках 2 и 3 представлены варианты схем включения модуля RI-PWM1.

Управление модулем при помощи компьютера

Три сервопривода MG90 подключены к 1 – 3 каналам модуля. Управление сервоприводами осуществляется при помощи компьютера. Датчик тока INA219 позволяет проверять токопотребение. Силовое реле, подключенное к каналу 16, коммутирует силовую нагрузку.

Управление модулем при помощи Arduino

Сервоприводы подключены к каналам 1 и 2. Датчик тока INA219 позволяет проверять токопотребение. Модуль запитан от лабораторного блока питания с выходным напряжением 5 В. Работу сервоприводов контролирует плата Arduino UNO, подключенная к интерфейсу I2C.

Описание функционала #

Конфигурирование модуля RI-PWM1 осуществляется при помощи набора регистров (см. раздел «Регистры»). Обращаться к регистрам можно либо при помощи преобразователя USB-I2C, установленного на плате, либо напрямую при помощи внешнего контроллера. В первом случае необходимо воспользоваться драйвером, предоставляющим программный интерфейс. Во втором случае используется стандартный формат обмена протокола I2C. Установленная на модуле микросхема PCA9685 задает его функциональные возможности.

Выдача ШИМ #

Выдача ШИМ сигнала на любом из каналов задается при помощи двух регистров времени: LEDХ_ON и LEDХ_OFF (где X - номер канала). Регистры времени задают две метки, которые устанавливаются внутри периода ШИМ сигнала. Каждый период разделен на 4096 значений. Диаграмма сформированного сигнала показана на рисунке 4 (LEDx_ON = 819, LEDx_OFF = 1228).

ШИМ сигнал при LEDXON < LEDXOFF

Значение LEDX_ON может быть больше значения LEDX_OFF. В этом случае будет сформирован сигнал, представленный на рисунке 5.

ШИМ сигнал при LEDXON > LEDXOFF

Установка частоты ШИМ #

Установка частоты ШИМ сигнала выполняется при помощи коэффициента деления, записанного в регистр PRE_SCALE. Для расчета используется соотношение 1:

FPWM=FOSC/4096PRESCALE1=12000000/4096PRESCALE1

где:

  • FOSC – тактовая частота микросхемы PCA9685 (12 МГц);
  • PRE_SCALE – значение, записанное в регистр предделителя.

Из соотношения 1 получаем формулу для расчета значения регистра PRE_SCALE на основе желаемой частоты ШИМ сигнала:

PRESCALE=12000000/FPWM40961

Установка адреса #

Основной адрес чипа является 7-ми битным числом от 64 до 127. Старший бит адреса всегда равен единицы, биты 0…5 задаются движковым переключателем «I2C ADDRESS». Адрес предназначен для выбора устройства на шине I2C.

Модуль может иметь до 3-х дополнительных адресов, которые записываются в старшие 7 бит регистров SUBADR1, SUBADR2, SUBADR3. Дополнительные адреса действуют как основной, но могут совпадать у нескольких групп чипов на одной шине, что дает возможность передавать команды сразу группе ведомых устройств. Работа с дополнительными адресами разрешена при установке флагов SUB1, SUB2, SUB3.

Дополнительно имеется широковещательный адрес, который записывается в старшие 7 бит регистра ALLCALLADR. Адрес действует по аналогии с дополнительными адресами, но предназначен для всех чипов на шине. Работа широковещательного адреса разрешена при установке флага ALLCALL.

Программный сброс #

Устройство поддерживает команду программного сброса. Программный сброс выполняется подачей команды «SWRST Call» по шине I2C. Для программного сброса необходимо установить признак записи и сформировать посылку в формате:

адрес устройства → адрес 0x00 → данные 0x06

Протокол I2C #

Обращение к регистрам осуществляется при помощи стандартного протокола I2C. Далее представлено описание протокола, используются следующие обозначения:

S – признак начала обмена (START condition);

R/nW – признак чтения или записи (read/write);

A0…A5 – адрес ведомого устройства (slave address);

D0…D7 – данные (data);

A – признак подтверждения приема данных (acknowledge); P – признак окончания посылки (STOP condition).

Запись одного регистра

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

адрес устройства → адрес регистра → данные регистра
Запись одного регистра

Запись всех регистров

Для записи всех регистров необходимо установить признак записи и сформировать посылку в приведенном формате. В регистре MODE1 должен быть установлен флаг автоинкремента AI.

адрес устройства → регистр MODE1 → данные регистра MODE1 → … → данные регистра LED15_OFF_H
Запись нескольких регистров

Чтение всех регистров

Для чтения всех регистров необходимо установить сформировать посылку в приведенном формате. Сначала выполняется запись регистра MODE и устанавливается бит AI. Затем устанавливается признак чтения, повторно выдается адрес и происходит чтение.

адрес устройства → адрес регистр MODE1 → значение регистра MODE1 → адрес устройства ← данные регистра MODE1 ←… ← данные регистра LED15_OFF_H.

Чтение всех регистров

Запись всех регистров ALL_LED_ON

Для записи всех регистров ALL_LED_ON необходимо установить признак записи и сформировать посылку в приведенном формате. В регистре MODE1 должен быть установлен флаг автоинкремента AI.

адрес устройства → регистр ALL_LED_ON_L → данные регистра ALL_LED_ON_L → … → данные регистра ALL_LED_OFF_H

Запись всех регистров ALLLEDON

Регистры #

Микросхема PCA9685, установленная на модуле, имеет набор регистров, представленный в таблице 2.

Таблица 2 – Регистры PCA9685

Адрес (hex)

Название регистра

Доступ

Функция

00

MODE1

RW

настройка PCA9685

01

MODE2

RW

02

SUBADR1

RW

позволяют группировать несколько чипов на шине I2C, для одновременного выполнения команд в группе

03

SUBADR2

RW

04

SUBADR3

RW

05

ALLCALLADR

RW

06

LED0_ON

L

RW

включение канала 0

07

H

RW

08

LED0_OFF

L

RW

выключение канала 0

09

H

RW

0A

LED1_ON

L

RW

включение канала 1

0B

H

RW

0C

LED1_OFF

L

RW

выключение канала 1

0D

H

RW

0E

LED2_ON

L

RW

включение канала 2

0F

H

RW

10

LED2_OFF

L

RW

выключение канала 2

11

H

RW

12

LED3_ON

L

RW

включение канала 3

13

H

RW

14

LED3_OFF

L

RW

выключение канала 3

15

H

RW

16

LED4_ON

L

RW

включение канала 4

17

H

RW

18

LED4_OFF

L

RW

выключение канала 4

19

H

RW

1A

LED5_ON

L

RW

включение канала 5

1B

H

RW

1C

LED5_OFF

L

RW

выключение канала 5

1D

H

RW

1E

LED6_ON

L

RW

включение канала 6

1F

H

RW

20

LED6_OFF

L

RW

выключение канала 6

21

H

RW

22

LED7_ON

L

RW

включение канала 7

23

H

RW

24

LED7_OFF

L

RW

выключение канала 7

25

H

RW

26

LED8_ON

L

RW

включение канала 8

27

H

RW

28

LED8_OFF

L

RW

выключение канала 8

29

H

RW

2A

LED9_ON

L

RW

включение канала 9

2B

H

RW

2C

LED9_OFF

L

RW

выключение канала 9

2D

H

RW

2E

LED10_ON

L

RW

включение канала 10

2F

H

RW

30

LED10_OFF

L

RW

выключение канала 10

31

H

RW

32

LED11_ON

L

RW

включение канала 11

33

H

RW

34

LED11_OFF

L

RW

выключение канала 11

35

H

RW

36

LED12_ON

L

RW

включение канала 12

37

H

RW

38

LED12_OFF

L

RW

выключение канала 12

39

H

RW

3A

LED13_ON

L

RW

включение канала 13

3B

H

RW

3C

LED13_OFF

L

RW

выключение канала 13

3D

H

RW

3E

LED14_ON

L

RW

включение канала 14

3F

H

RW

40

LED14_OFF

L

RW

выключение канала 14

41

H

RW

42

LED14_ON

L

RW

включение канала 15

43

H

RW

44

LED14_OFF

L

RW

выключение канала 15

45

H

RW

- - - - - - -

зарезервировано

FA

ALL_LED_ON

L

W

значение, записываемое в LEDX_ON всех регистров

FB

H

W

FC

ALL_LED_OFF

L

W

значение, записываемое в LEDX_OFF всех

регистров

FD

H

W

FE

PRE_SCALE

RW

предделитель частоты, запись возможна

только при установленном флаге SLEEP врегистре MODE 1

FF

TEST_MODE

RW

зарезервировано

Регистр MODE1

MODE1
7 6 5 4 3 2 1 0
RESTART EXTCLK AI SLEEP SUB1 SUB2 SUB3 ALLCAL

7

RESTART

указывает на то, что была совершена перезагрузка (по

умолчанию «0»)

0: игнорируется

1: сброс флага

6

EXTCLK

0: использовать внутренний такт

1: разрешить работу от внешнего тактового сигнала

5

AI

0: автоинкремент выключен

1: использовать автоинкремент (при работе с I2C)

4

SLEEP

0: нормальный режим работы

1: режим низкого энергопотребления

3

SUB1

0: не отвечать на дополнительный адрес 1

1: отвечать на дополнительный адрес 1

2

SUB2

0: не отвечать на дополнительный адрес 2

1: отвечать на дополнительный адрес 2

1

SUB3

0: не отвечать на дополнительный адрес 2

1: отвечать на дополнительный адрес 2

0

ALLCALL

0: не отвечать на широковещательный адрес

1: отвечать на широковещательный адрес

Регистр MODE2

MODE2

7

6

5

4

3

2

1

0

-

INVRT

OCH

OUTDRV

OUTNE[1]

OUTNE[0]

7 - 5

-

только чтение

4

INVRT

0: выходы не инвертированы

1: выходы инвертированы

3

OCH

0: состояние выходов меняется по команде STOP (I2C)

1: состояние выходов меняется по команды ACK (I2C)

2

OUTDRV

0: каналы сконфигурированы в режиме открытого стока

1: каналы сконфигурированы в режиме дискретного выхода

1 - 0

OUTNE[1:0]

определяет поведение выходов, при наличии логической «1»

на входе OE - выходы отключены (по умолчанию «00»).

00: на всех выходах устанавливается уровень логического «0» 01 при установленном флаге OUTDRV: на всех выходах устанавливается уровень логической «1»

01 при сброшенном флаге OUTDRV: на всех выходах устанавливается состояние высокого импеданса

1X: на всех выходах устанавливается состояние высокого импеданса

Схема коммутации выходов (управление N-канальным полевым транзистором, управление P-канальным полевым транзистором или прямое подключение) показана на рисунке 10.

Схема коммутации выходов

Регистры LEDX_ON_H, LEDX_ON_L

LEDX_ON_H

LEDX_ON_L

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

reserved

FULL_ON

0…4095

старший

байт

7 - 5

только чтение

4

FULL_ON

постоянное включение канала

младший

байт

3 - 0

0…4095

метка времени включения канала

Регистры LEDX_OFF_H, LEDX_OFF_L

LEDX_OFF_H

LEDX_OFF_L

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

reserved

FULL_OFF

0…4095

старший

байт

7 - 5

только чтение

4

FULL_OFF

постоянное выключение канала

младший

байт

3 - 0

0…4095

метка времени выключения канала байт

7 - 0

Регистры ALL_LED_ON_H, ALL_LED_ON_L

ALL_LED_ON_H

ALL_LED_ON_L

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

reserved

ALL_LED_FULL_ON

0…4095

старший

байт

7 - 5

только чтение

4

ALL_LED_FULL_ON

постоянное включение всех каналов

младший

байт

3 - 0

0…4095

метка времени включения всех каналов байт

7 - 0

Регистры ALL_LED_OFF_H, ALL_LED_OFF_L

ALL_LED_OFF_H

ALL_LED_OFF_L

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

reserved

ALL_LED_FULL_OFF

0…4095

старший

байт

7 - 5

только чтение

4

ALL_LED_FULL_OFF

постоянное включение всех каналов

младший

байт

3 - 0

0…4095

метка времени выключения всех каналов байт 15

7 - 0

Установка драйвера #

При управлении модулем RI-PWM1 через интерфейс USB необходимо установить драйвер преобразователя CH341T. Драйвер можно скачать с сайта производителя. После запуска установщика откроется окно, показанное на рисунке 11. Нажмите кнопку INSTALL для автоматической установки драйвера.

Установка драйвера преобразователя USBI2C

Дальнейшая работа с модулем через USB осуществляется при помощи программного интерфейса, описание которого можно найти по адресу http://docs.robointellect.ru/docs/.

Конструкция #

Габаритные размеры модуля RI-PWM1 приведены на рисунке 12. Высота модуля не превышает 20 мм, диаметр крепежных отверстий равен 3,5 мм.

Габаритные размеры модуля RIPWM1


24 просмотров0 комментариев
0

Комментарии (0)

Для участия в обсуждении Вы должны быть авторизованным пользователем
Разделы

Навигация

ВойтиРегистрация