Разработка расширения Arduino для мобильных роботов

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

  1. Обеспечение питания Arduino (5В)
  2. Обеспечение питание двигателей (5В и 12В)
  3. Коммутация выводов I2C , Serial Port
  4. Управление 4 электродвигателями постоянного тока
  5. Подключение аналоговых датчиков

И так после этого я стал искать способы решения всех задач , обо всем по порядку:

Обеспечение питания Arduino (5В)

Тут все просто я использую импульсный стабилизатор напряжения L7805 в корпусе D2Pack

Схема включения выглядит следующим образом:

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

Обеспечение питание двигателей (5В и 12В)

Почему нужно делать два разных вида питания? Все просто- в робототехнике в основном используются два вида электродвигателей с разным питающим напряжением это 5 Вольт и 12 Вольт , если подавать на 5 Вольтовый электродвигатель 12 Вольт он этого не выдержит. От сюда и появилась идея сделать два вида питания , но делать его на 2 микросхемах мне не хотелось и это не выгодно. Поэтому я решил применить микросхему LM2596,которая имеет следующую схему включения:

Но я использовал на ней два вида обратной связи (через два разных делителя), поэтому я использовал переключатель , который меняет направления тока в цепи , в результате на выходе мы получаем два разных вида питания.
В каждой цепи присутствует индикатор который показывает какой именно режим сейчас работает.

Коммутация выводов I2C , Serial Port и аналоговых входов 

Коммутация осуществляется с помощью создания на плате двух шин , к которым подключены разъемы для более удобной сборки робота.
Каждый аналоговый вход имеет параллельно себе шину питания и заземления , все это сделано чтобы облегчить соединение датчиков с роботом.

Управление электродвигателями 

За управление отвечает 2 двухканальных Н-моста TB6612FNG, схема включения каждого из которого следующая:

Весь проект выполнен в Altium Designer 17, принципиальная схема проекта выглядит следующим образом:

Для удобной проектировки плат очень удобно использовать функцию Bus (шина), такой формат создания проектов позволяет сократить место на чертеже и сделать проект более читабельным.

После разводки печатная плата выглядит следующим образом: 

 

Трехмерную модель можно посмотреть на рисунке ниже 

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

А так выглядит готовая плата: 

Остается только установить компоненты и можно пользоваться, после монтажа плата показала себя работоспособной.