====== Power Shield ======
===== Описание =====
Power shield - это плата расширения с аккумулятором на 2300 мА для автономного питания устройств.

Как известно, без электричества не будет работать ни одно электронное устройство. И тут на помощь приходят различные батарейки и блоки питания с проводами и удлинителями, что не всегда бывает удобно как с точки зрения функционала, так и с экономической точки зрения. Power Shield - устройство для автономного питания ваших устройств в формате шилда. Удобно размещается на контроллере и позволяет экономить пространство. Сквозные колодки позволяют устанавливать поверх Power Shield другие шилды, например Motor Shield или Sensor Shield. Создано специально для устройств, работающих на Arduino. Выпускается под торговой маркой SmartElements в России. Power Shield предназначен для питания контроллеров, работающих от 5 В. Совместим с контроллерами Uno, Mega, Leonardo и другими, схожими по форм-фактору. В основе шилда находится литий-полимерный аккумулятор емкостью 2300 мА.

Перемычка на плате позволяет вывести уровень заряда аккумулятора на пин А0 контроллера и отслеживать его программно. Если вам не нужна эта функция или необходимо освободить пин А0 контроллера - просто снимите перемычку.

__Для контроля работы на плате предусмотрены следущие индикаторы:__

**Power** (светодиод зеленого цвета): выключатель находится в положении On, питание включено.

**Low** (светодиод синего цвета): уровень заряда аккумулятора снизился и составляет не более 20%. Если этот индикатор горит, рекомендуется незамедлительно зарядить аккумулятор.

**Charge** (светодиод желтого цвета): аккумулятор заряжается. По завершении зарядки индикатор гаснет.

<WRAP center round tip 90%>

__Для зарядки устройства:__

**1.** Переведите выключатель в положение Off (индикатор On не должен гореть).

**2.** С помощью кабеля Micro USB (в комплект не входит) подсоедините плату Power Shield к компьютеру или ноутбуку. Разбирать устройство и отсоединять от контроллера Power Shield при этом не требуется. На полную зарядку аккумулятора с уровнем заряда в 20% уходит около шести часов. Для зарядки также допускается использовать внешний блок питания с выходным напряжением 5 В и током 1000 мА.

**3.** В процессе зарядки индикатор Charge горит непрерывно. Как только аккумулятор полностью зарядится, индикатор погаснет.

Допускается зарядка при работающем от шилда потребителе.

</WRAP>

Несмотря на то что аккумулятор оснащен встроенным контроллером разряда, который не дает ему разрядиться полностью, не рекомендуется использовать аккумулятор при низком уровне заряда, так как это сокращает срок его службы. Сразу же заряжайте аккумулятор, как только загорается светодиод Low.

Power Shield рассчитан на максимальный выходной ток 900 мА. В случае превышения указанного значения срабатывает защитный самовосстанавливающийся предохранитель шилда, в результате чего он отключается. Для восстановления предохранителя необходимо поставить шилд на зарядку на одну-две секунды.

Для автономного питания устройств от 3,3 и 5 В - рассмотрите Power Module.

<WRAP center round important 90%>

**Не забывайте правила безопасности при работе с аккумуляторами:**

Не подключайте к шилду нагрузку номиналом свыше установленного максимального предела!

Не оставляйте без присмотра заряжающееся устройство!

Не прокалывайте и не разбирайте корпус аккумулятора!

</WRAP>

==== Схема шилда ====
{{ :главная:шилды:power_shield_map.png?nolink |}}

На схеме обозначены:
  - Выводы для подключения дополнительных шилдов
  - Аккумулятор
  - USB-разъём для подключения кабеля заврядки
  - Переключатель питания (ON - питание включено, OFF - питание выключено)
  - Перемычка для вывода уровня заряда батареи на контакт контроллера A0

==== Технические характеристики: ====
  * Напряжение питания устройств: 5 В
  * Ёмкость аккумулятора: 2300 мАч [mAh] (8,51 Втч [Wh])

==== Физические размеры: ====
Шилд: Д х Ш х В (мм): 70 х 53 х 20

==== Плюсы использования ====
  * Удобное подключение устройств
  * Ёмкий аккумулятор
  * Возможность программно контролировать уровень заряда


===== Пример подключения и использования =====
**Пример:** Для демонстрации работы шилда используется простейший робот, который движется по четырём направлениям (вперед, назад, вправо и влево). Робот собирается очень просто - берётся трёхколёсное шасси с двумя моторами, на платформу шасси крепится контроллер Smart Uno, на контроллер прикрепляется Power Shield, в свою очередь на Power shield прикрепляется Motor shield.

Для этого нам понадобится:
^ Что нужно:                                                                                                                                       ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер SmartUno]]| 1           |
| [[http://smartelements.ru/product/shassi-2wd-smartelements|Шасси 2WD SmartElements]]| 1           |
| [[http://smartelements.ru/product/motor-shield|Motor Shield]]                                                      | 1           |
| [[http://smartelements.ru/product/power-shield|Power Shield]]                           | 1           |


**Подключение:**
  - Закрепите на верхней площадке шасси контроллер Smart Uno с помощью винтов и гаек M2, как указано в инструкции к шасси. 
  - На контроллере закрепите плату Power Shield, путём совмещения контактов платы расширения с контактами конроллера. 
  - Сверху, на Power Shield закрепите плату Motor shield, путём совмещения контактов Motor shield с контактами платы Power Shield.
  - Подключите моторы к плате расширения Motor shield, к клеммным колодкам М1 и М2 (на схеме сверху выделены оранжевым прямоугольником с номером 3). Правый мотор подключите к клеммной колодке M1, красный провод к контакту "+", чёрный к контакту "-". Аналогично подключите левый мотор к клеммной колодке М2.

**Скетч для загрузки:**
<file Arduino>
#define E1 6 //Вывод платы расширения Motor Drive Shield, используемый для контроля скорости мотора А.
#define E2 5 //Вывод платы расширения Motor Drive Shield, используемый для контроля скорости мотора В.
#define M1 7 //Вывод платы расширения Motor Drive Shield, используемый для контроля направления вращения мотора А.
#define M2 4 //Вывод платы расширения Motor Drive Shield, используемый для контроля направления вращения мотора В.

int motorSpeed = 255;    //Переменная для хранения скорости вращения моторов (вы можете задать свою скорость вращения колес).
int delay_time = 1500;

void motor_drive_config() //Инициализация выводов платы расширения Motor Drive Shield.
{
  pinMode(M1, OUTPUT);    //Назначение вывода M1 выходом.
  pinMode(M2, OUTPUT);    //Назначение вывода M2 выходом.
  pinMode(E1, OUTPUT);    //Назначение вывода E1 выходом.
  pinMode(E2, OUTPUT);    //Назначение вывода E2 выходом.
}

void move_forward() //Движение робота вперед.
{
  digitalWrite(M1, HIGH);       //Левые колеса вращаются вперед.
  digitalWrite(M2, HIGH);       //Правые колеса вращаются вперед.
  analogWrite(E1, motorSpeed);  //Скорость вращения правых колес.
  analogWrite(E2, motorSpeed);  //Скорость вращения левых колес.
}

void move_right() //Движение робота вправо.
{
  digitalWrite(M1, LOW);        //Левые колеса вращаются назад.
  digitalWrite(M2, HIGH);       //Правые колеса вращаются вперед.
  analogWrite(E1, motorSpeed);           //Скорость вращения левых колес.
  analogWrite(E2, motorSpeed);  //Скорость вращения правых колес.
}

void move_left() //Движение робота влево.
{
  digitalWrite(M1, HIGH);       //Левые колеса вращаются вперед.
  digitalWrite(M2, LOW);        //Правые колеса вращаются назад.
  analogWrite(E1, motorSpeed);  //Скорость вращения левых колес.
  analogWrite(E2, motorSpeed);           //Скорость вращения правых колес.
}

void move_stop() //Остановка робота.
{
  digitalWrite(M1, LOW);  //Левые колеса вращаются назад.
  digitalWrite(M2, LOW);  //Правые колеса вращаются назад.
  analogWrite(E1, 0);     //Скорость вращения колес снизить до 0.
  analogWrite(E2, 0);     //Скорость вращения колес снизить до 0.
}

void move_back() //Движение робота назад.
{
  digitalWrite(M1, LOW);        //Левые колеса вращаются назад.
  digitalWrite(M2, LOW);        //Правые колеса вращаются назад.
  analogWrite(E1, motorSpeed);  //Скорость вращения левых колес.
  analogWrite(E2, motorSpeed);  //Скорость вращения правых колес.
}

void setup() // Задание начальных параметров системы.
{
  motor_drive_config();       //инициализация выводов платы расширения Motor Drive Shield.
  move_stop();                //начальная позиция робота — робот стоит.  
}

void loop() //Основной цикл
{
  move_forward();     //движение вперёд
  delay(delay_time);  //задержка
  move_right();       //движение вправо
  delay(delay_time);  //задержка
  move_left();        //движение влево
  delay(delay_time);  //задержка
  move_back();        //движение назад
  delay(delay_time);  //задержка
  move_stop();        //остановка
  delay(delay_time);  //задержка
}
</file>