# Power board 30A

{% columns %}
{% column width="50%" %}

<div align="right"><figure><img src="https://github.com/VBCores/VBCores_files/raw/main/08-VB-PowerBoard/vb-powerboard-v1_2-1.jpg" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}

{% column width="50%" %}

<div align="left"><figure><img src="https://github.com/VBCores/VBCores_files/raw/main/08-VB-PowerBoard/vb-powerboard-v1_2-2.jpg" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

{% embed url="<https://github.com/VBCores/VBCores_files/raw/main/08-VB-PowerBoard/vb-powerboard-v1_2-pinout.png>" %}
Pinout Power Board
{% endembed %}

[📥 Скачать PDF (Pinout Power Board)](https://raw.githubusercontent.com/VBCores/VBCores_files/main/08-VB-PowerBoard/vb-powerboard-v1_2-pinout.pdf)

### Features

* Two 30A and one 3A inputs
* 3A charger input
* Hot swap
* Reverse polarity protection
* Reverse current capability
* Power source prioritization
* Undervoltage and overcurrent protection
* 8 user IO
* Power system state is reported to the computer via FDCAN bus

#### Specs

* Up to 50V input voltage
* 30A continuous current, up to 50A peak
* FDCAN bitrate: up to 8 Mbit/s data rate

#### Dimensions

* PCB: 61x51x20 mm
* Mount holes: 55x45 mm D2.5

PowerBoard предназначена для управления бортовой системой питания робота. Для питания мощных роботов применяются соответствующие источники питания - высокотоковые литий-ионные аккумуляторы. Эти батареи боятся слишком глубокого разряда, превышения зарядного и разрядного токов. Несоблюдение правил эксплуатации в лучшем случае приведет к их быстрому износу, в худшем - к пожару. Базовая функция платы управления питанием - отслеживание состояния батареи (напряжение, ток, температура) и отключение нагрузки (робота) при превышении предельных параметров батареи (например, полный разряд). Помимо этого плата питания может выполнять побочные функции - информирование бортового компьютера о состоянии батареи, управление пользовательскими кнопками, зуммером, светодиодами и т.д.

Основные функции VB PowerBoard :

* Защита батарей от переразряда и ограничение пускового тока.
* Защита робота и батарей при коротком замыкании.
* Защита робота при включении батарей в обратной полярности.
* Мультиплексирование трех независимых источников питания в две силовые шины - шину питания компьютера и шину питания силовых потребителей.
* Возможность подключения внешнего зарядного устройства и зарядки "на ходу" без отключения шины компьютера.
* Отслеживание состояния системы питания и его передача по шине FDCAN.
* Контроль базовой индикации робота - зуммера, светодиодов, пользовательских кнопок.
* Аварийное отключение робота при нажатии Большой Красной Кнопки.

### Особенности

#### Мультиплексирование

PowerBoard обладает тремя входными каналами питания: двумя управляемыми ("2" и "3") и одним неуправляемым ("1"). Управляемые каналы выдерживают постоянный ток до 30А, неуправляемый - до 3А. Оба управляемых канала обладают двусторонней проводимостью и пропускают ток в свою батарею, если напряжение на шине питания превышает напряжение батареи (например, если подключенный к роботу мотор вращается под действием внешних сил). Все три канала могут быть одновременно подключены к трем разным источникам питания, при этом верны следующие утверждения:

* Силовые шины могут быть одновременно подключены только к одному из каналов.
* Если на неуправляемом канале есть напряжение, управляемые каналы отключаются автоматически. При этом их разрядка и зарядка невозможны.
* Если напряжение есть только на одном из каналов, он подключается автоматически.
* Если напряжение приложено только к двум управляемым каналам, плата может выбрать из них приоритетный независимо от состояния их батарей. Выбор приоритетного канала настраивается прошивкой платы или командой с бортового компьютера.
* Если приоритетный управляемый канал разрядился, но при этом другой управляемый канал заряжен - переключение шин происходит автоматически и бесшовно.

Ток разных каналов не суммируется - максимальный доступный ток определяется возможностями выбранного канала.

#### Пользовательский ввод-вывод

Включение PowerBoard осуществляется замыканием контакта  **Enable на GND**. Если коннектор не замкнут, общее потребление платы ото всех источников примерно равно нулю. Замкнутый коннектор **Emergency** отключает силовую шину робота на аппаратном уровне вне зависимости от состояния программы платы. Предназначен для подключения Большой Красной Кнопки. PowerBoard оборудован двумя шестипиновыми разъемами для подключения RGB кнопок и Зумера. Выходы обладают общим анодом, напряжение на котором составляет 5В либо 12В в зависимости от состояния перемычки на плате.&#x20;

{% hint style="info" %} <mark style="color:$info;">**Катоды подключаются к земле через ULN2003, которая управляется пинами PC6, PC7, PC8, PC9 (подключены к каналам TIM3). Входы связаны с пинами PB0, PB1, PB2, PB10. Если встроенных средств индикации недостаточно, можно использовать интегрированный порт расширения, связанный с I2C2 для коммуникации с другими платами.**</mark>
{% endhint %}

#### Модификация прошивки

Программа для PowerBoard делится на две части: сервисную и пользовательскую. Сервисная часть обрабатывается в прерываниях таймеров **TIM6** и **TIM16**. Первый обслуживает подпрограмму фильтрации данных **ADC1**. Второй вызывает подпрограмму коммутации силовых ключей на плате. **НЕ НУЖНО ВНОСИТЬ ИЗМЕНЕНИЯ В ЭТИ УЧАСТКИ КОДА ЕСЛИ ВЫ НЕ ПОНИМАЕТЕ ЧТО ДЕЛАЕТЕ! Нарушение работы сервисной части программы может привести к физическому повреждению платы, робота и батарей при нештатных ситуациях вроде короткого замыкания на шине.**&#x20;

Пользовательская часть программы предназначена для управления индикацией, коммуникацией с бортовым компьютером. Предпочтительно осуществлять эти задачи в функциях *uavcan\_setup()* и *uavcan\_spin()* из *main()*. Приоритеты прерываний **TIM6, TIM7** и **TIM16** должны быть определены следующим образом (в порядке убывания ):

1. **TIM7**. Считает микросекунды с момента запуска программы.
2. **TIM6**. Обновляет и фильтрует данные с **ADC1**.
3. **TIM16**. Вызывает подпрограмму управления силовыми ключами платы.

Приоритеты пользовательских прерываний **ОБЯЗАНЫ** быть ниже, чем у вышеуказанных таймеров.
