Радио - это очень просто!

Arduino Motor Shield R3 (2 канала, 2 А)

Артикул: RDKT54333
Есть в наличии
840 руб
добавить к сравнению перейти к сравнению
Быстрый заказ
  • Описание
  • Отзывы (0)
Arduino Motor Shield R3
Модуль Motor Shield R3 предназначен для управления различными индуктивными нагрузками: одновременно двумя двигателями постоянного тока или одним шаговым, соленоидами, реле, контакторами. Управление происходит по двум каналам мощной коммутации А и В. Модуль ориентирован на работу совместно с Arduino UNO R3. Устройство прекрасно подходит для использования в системах не относящихся к категории Arduino. Motor Shield R3 может встраиваться в различные электромеханические приборы. Позволяет хорошо изучить возможности микросхемы L298.

Простой пример включения 1

Простой пример включения 2

Управление и контроль
Автоматика прибора, в который входит Motor Shield R3, командует его работой с помощью цифровых логических сигналов: скорость, направления вращения двигателя, тормоз. Установка скорости происходит с помощью широтно-импульсной модуляции (ШИМ). Направление вращения определяет уровень сигнала Direction на соответствующем контакте. Каждый из эти сигналов свой для каналов А и В. Существует возможность контролировать потребляемый ток в каждом канале.
Электроника модуля включает двигатель, соединяя контакты двигателя с питанием и общим проводом. Остановка двигателя происходит когда цепь двигателя разомкнута или оба его контакта соединены с общим проводом, также остановка произойдет если оба контакта соединены с линией питания – ток не протекает. Для контроля уровня каждого контакта моторов предусмотрена светодиодная индикация.
Сигналом тормоз можно пользоваться при установке соответствующей перемычки на обратной стороне платы. Сигнал тормоз останавливает шпиндель двигателя при высоком уровне.

Основные компоненты

Основа модуля – микросхема L298. Она содержит мощные полупроводники, управляющие нагрузкой. Для контроля тока Motor Shield R3 содержит микросхему операционных усилителей LMV358MMX .Сигналы управления поступают на L298 через логические элементы микросхемы 4077d Возле клемм подключения двигателей расположены желтые светодиоды, помогающие определить уровень напряжений на двигателях. Они светятся при подаче высокого уровня на соответствующую линию. Имеется кнопка сброса Arduino и всех модулей, входящих в микроконтроллерную систему. Модуль имеет множество контактов для соединения с Arduino или другими устройствами, установки поверх Motor Shield R3 модулей Arduino, подключения нагрузок и питания.

Соединители, контакты и подключение

Motor Shield R3

По краям платы расположены соединители с множеством контактов. Штыри в нижней части вставляются в соединители Arduino UNO R3.

Модуль использует цифровые контакты Arduino 3, 8, 9, 11, 12, 13 и аналоговые контакты 0 и 1. Разъемы TinkerKit используют:
Интерфейс TWI (I2C) контакты SCL и SDA
ШИМ контакт 6
ШИМ контакт 5
аналоговый вход контакт 2
аналоговый вход контакт 3

 width=

Назначение боковых контактов кроме сигналов TWI.

Сигналы Motor Shield R3 соединены со следующими контактами боковых разъемов:
Сигнал Контакты канала А Контакты канала В
Скорость вращения, ШИМ управление (PWM) D3 D11
Направление вращения (Direction) Dir A D12 Dir B D13
Тормоз (Brake) D9 D8
Измерение тока (Current Sensing) A0 A1

Arduino motor shield r3

Подключение двигателей постоянного тока.

На плате расположены вилки соединителей имеющие 3 или 4 контакта для подключения устройств TinkerKit. Контакты соединителей кроме информационного сигнала подводят питание к подключаемому устройству.

Arduino motor shield

1 – сброс
2 – для установки модулей сверху
3 – белые вилки с 4 контактами TinkerKit интерфейса TWI
4 – оранжевые вилки TinkerKit. Их контакты соединены с контактами D5 и D6. На плате они подписаны – 5, – 6.
5 – белые вилки TinkerKit для подключения датчиков. Они соединены с контактами A2 и A3 для подключения к аналоговым входам Arduino
6 и 7 – подключение двигателей
8 – питание

TinkerKit – класс датчиков и исполнительных устройств Arduino подключаемых с помощью соединителей одного типа.

Перемычки

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

Arduino motor shield

Расположение контактов перемычек на нижней стороне платы.

Контакты перемычки Функция сигнала Контакты Arduino
BRAKE A Тормоз канал A D8
BRAKE B Тормоз канал B D9
SNS0 Контроль тока нагрузки А A0
SNS1 Контроль тока нагрузки B А1
Vin Connect Линия питания Питание

Если торможение и измерение тока нагрузки не используется, то перемычки BRAKE A, BRAKE B, SNS0, SNS1 должны быть разорванными. Это высвобождает контакты Arduino D8, D9, A0, А1 для других целей.

Питание

Контакты 3,3 V и 5 V предназначены для соединения с одноименными контактами Arduino UNO R3. Питание микросхем модуля происходит от напряжения 5 В. Для питания электродвигателей и других нагрузок используются отдельные линии питания. Подключение производится с помощью винтовой клеммы в углу платы. Напряжение питания двигателей подается на контакт VIN. Если оно выше 12 В, то перемычку Vin Connect следует разомкнуть, так как линия VIN соединена с соответствующим контактом Arduino. Лучше питать двигатели от одного источника, а модули Arduino от другого при разомкнутой перемычке Vin Connect. Это снизит влияние помех двигателя на работу АЦП.
Максимальное напряжение питания двигателей 18 В. Каждый из каналов А и В обеспечивает нагрузку током до 2 ампер. При максимальной нагрузке обоих каналов суммарный ток до 4 ампера.

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

Питание модуля 7 – 12 В
Питание нагрузки 5 – 18 В
Размеры платы 70 х 54 мм

Тормоз

Для торможения двигателя постоянного тока применяется простое решение. Для этого используется свойство обратимости. Двигатель работает как генератор если его вал вращается под действием механической силы. Вращение по инерции после отключения питания вызывает генерацию постоянного тока. Если в этот момент контакты двигателя замкнуть, то ему придется генерировать большой ток и провернуть вал будет сложнее, чем при разомкнутых контактах. Это физическое явление использовано в Arduino motor shield r3 для торможения двигателя.
Команда направления вращения по каналу А поступает на вход DIRA.

Arduino motor shield

Логические элементы микросхемы 4077d упрощают управление сигналами направление вращения и тормоз.

Уровень сигнала инвертируется на на выходе элемента IС2A и вместе с сигналом #DIRA они поступают на входы микросхемы L298. Благодаря применению в схеме логического элемента IС2A одним сигналом DIRA направления вращения происходит управления двумя входами IN1 и IN2 микросхемы L298, причем при работе двигателя уровни на IN1 и IN2 всегда будут иметь разные уровни. Это означает, что один контакт двигателя подключается к питанию, другой к общему проводу. При смене направления вращения наоборот.
При поступлении высокого логического уровня по линии BRAKEA эта закономерность нарушается, инверсии нет, микросхема L298 подключает оба контакта двигателя к одному проводу, двигатель оказывается замкнут и происходит торможение.
Разработчики не зря установили перемычку активирующую этот сигнал. Прежде чем принять решение о использовании тормоза нужно разобраться не будет ли генерируемый ток двигателя под влиянием внешних сил настолько велик, что повредит микросхему L298.

Контроль тока

Напряжение пропорциональное току нагрузки снимается с выхода операционного усилителя LMV358MMX. Микросхема содержит 2 ОУ для двух каналов.

Arduino motor shield

Схема включения операционного усилителя для контроля тока нагрузки в Arduino motor shield r3.

Входы SNSA и SNSB соединены с резисторами очень малого сопротивления подключенными к специальным выводам микросхемы L298. Напряжение на резисторах пропорционально току нагрузки. Сопротивление резисторов и коэффициент усиления подобраны так, что напряжению на выходе ОУ 3,3 вольта соответствует току через нагрузку 2 ампера. Выходы ОУ соединены с перемычками SNS0 и SNS1. При замыкании перемычек напряжения с выходов ОУ будут поступать на аналоговые входы A0 и A1 Arduino UNO R3. Напряжение на аналоговых входах измеряет АЦП микроконтроллера модуля Arduino UNO R3. Программная обработка результатов измерений возможна с помощью функции analogRead ().

Программа управления двигателем постоянного тока

Подключите двигатель постоянного тока к винтовой клемме канала А. Загрузите программу.

/*********************************

Motor Shield 1-Channel DC Motor Demo

**********************************/

void setup() {

//Setup Channel A
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel A pin

}

void loop(){

//forward @ full speed
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 255); //Spins the motor on Channel A at full speed

delay(3000);

digitalWrite(9, HIGH); //Eengage the Brake for Channel A

delay(1000);

//backward @ half speed
digitalWrite(12, LOW); //Establishes backward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 123); //Spins the motor on Channel A at half speed

delay(3000);

digitalWrite(9, HIGH); //Eengage the Brake for Channel A

delay(1000);

}

Программа управления шаговым двигателем

Приводими программу для управления шаговым биполярным двигателем, например вот таким. Он имеет четыре провода, две обмотки, подключаемые к каналам А и В. Схему не приводим, так как незнаем какой именно двигатель окажется в вашем распоряжении. Найти концы обмоток можно прозвонкой – концы проводов, относящиеся к одной обмотке, будут между собой звониться, а концы, относящиеся к разным обмоткам – нет. Перед подключением двигателя к Arduino motor shield r3 следует изучить теорию работы шагового биполярного двигателя.
В программе не используется широтно-импульсная модуляция и контроль тока.
001 /***********************************************/
002
003 #define TIMEFASE 20
004 #define DEBUG
005
006 #define PWMA 3
007 #define PWMB 11
008 #define DIRA 12
009 #define DIRB 13
010
011 /**********************************************************/
012
013 int nFase = 0;
014
015 /**********************************************************/
016
017 void setup() {
018
019 #ifdef DEBUG
020 Serial.begin( 9600 );
021 Serial.println("Start");
022 #endif
023
024 /**********************************************************/
025
026 pinMode(PWMA, OUTPUT);
027 pinMode(PWMB, OUTPUT);
028 pinMode(DIRA, OUTPUT);
029 pinMode(DIRB, OUTPUT);
030
031 /**********************************************************/
032
033 }
034
035 /**********************************************************/
036
037 void loop() {
038
039 eseguiStep( 50,true );
040 stop();
041 delay( 1000 );
042 eseguiStep( 100,true );
043 stop();
044 delay( 1000 );
045 eseguiStep( 200,true );
046 stop();
047 delay( 3000 );
048
049 }
050
051 /**********************************************************/
052
053 int fase( int nFase ) {
054
055 switch( nFase ) {
056 case 1:
057 digitalWrite(DIRA, HIGH);
058 digitalWrite(DIRB, LOW);
059 digitalWrite(PWMA, HIGH);
060 digitalWrite(PWMB, LOW);
061 break;
062
063 case 2:
064 digitalWrite(DIRA, LOW);
065 digitalWrite(DIRB, HIGH);
066 digitalWrite(PWMA, LOW);
067 digitalWrite(PWMB, HIGH);
068 break;
069
070 case 3:
071 digitalWrite(DIRA, LOW);
072 digitalWrite(DIRB, LOW);
073 digitalWrite(PWMA, HIGH);
074 digitalWrite(PWMB, LOW);
075 break;
076
077 case 4:
078 digitalWrite(DIRA, LOW);
079 digitalWrite(DIRB, LOW);
080 digitalWrite(PWMA, LOW);
081 digitalWrite(PWMB, HIGH);
082 break;
083 }
084 delay(TIMEFASE);
085
086 return nFase;
087 }
088
089 /**********************************************************/
090
091 int stop() {
092 delay( 500 );
093
094 digitalWrite(DIRA, LOW);
095 digitalWrite(DIRB, LOW);
096 digitalWrite(PWMA, LOW);
097 digitalWrite(PWMB, LOW);
098 }
099
100 /**********************************************************/
101
102 void eseguiStep( int passi, boolean dir ) {
103 if ( passi <= 0 ) { return; }
104 if ( dir ) { for ( int p=1; p<=passi; p++) { gira(); } }
105 else { for ( int p=passi; p>=1; p--) { gira(); } }
106 }
107
108 /**********************************************************/
109
110 void gira() {
111 nFase = (nFase+1);
112 if ( nFase > 4 ) { nFase=1; }
113 fase( nFase );
114 }

03: определение константы TIMEFASE т.е. время, которое должно пройти между положениями ротора. Это значение определяет скорость вращения и может повлиять на то, что работает двигатель или нет
04: определение константы DEBUG для отображения любых отладочных сообщений по последовательному монитору
13: определение переменной nFase хранящей значение фазы, в которой оказался ротор
20-21: устанавливает связь с последовательным монитором последовательного порта на скорости 9600 бод и выводит "Start"
26-29: определяет режим работы контактов Arduino UNO R3 подключенных к модулю управления двигателем
39: вызывается функция eseguiStep(step,verso). Она описана в программе далее. В функцию передаются 2 параметра. Первый – количество шагов и второй параметр вращения: по часовой стрелке = true, против часовой стрелки = false
40-41: остановить двигатель, вызывая функцию Stop() и подождать секунду, прежде чем пойти далее
42-47: происходит тоже самое, что и в строках 39-41 для нескольких шагов шагового биполярного двигателя
53-87: функция fase(nFase) перемещает ротор к шагу, переданному через параметр nFase. Функция в линии 84 это задержка, установленная в TIMEFASE, определенная выше. Строка 86 возвращает nFase – значение фазы, в которой находится двигатель
91-98: определение функции остановки, ожидание 500 миллисекунд (строка 92), а затем сигнал низкого уровня формируется на всех контактах управления двигателем модуля Arduino r3
102-106: здесь определяется функция eseguiStep (шаг, направление). Обратите внимание на строки 39, 42, 45. Особенностью является, то что проверяется число шагов более 0.
110-114: определение функции gira(), целью которых является отправить информацию в функцию fase().

Arduino motor shield
Пока нет отзывов
Вы не представились
Не правильно введен e-mail
нам интересно Ваше мнение о товаре
CAPTCHAОбновить изображение
Вы неправильно ввели текст с картинки
Все поля обязательны к заполнению
Перед публикацией отзывы проходят модерацию

Главное меню

Каталог

Полезные ссылки

Цена
от
до
0 Корзина: 0 руб
Sos
Быстрый заказ