Перейти к содержимому


Фотография

Урок №6. Arduino и электромотор

Электромотор

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 22 Ноябрь 2014 - 08:54

Прикрепленный файл  PHT_6470.JPG   40,83К   3 скачиваний

 

  Для питания электромотора нам понадобится отдельный источник питания-5 батарек. Плату Arduino  не следует применять для питания электромотора по двум причинам.
  1. Электромотор- это довольно мощный потребитель электрического тока.  Ток, потребляемый электромотором , может вывести из строя стабилизатор напряжения на плате Arduino. Но если вдруг стабилизатор и  сможет «вытерпеть» подключение электромотора, то USB- порт компьютера уж точно не предусмотрен для подключения такой нагрузки в виде мотора.
  2. Электромотор является сильным источником электрических помех, которые могут вызывать ошибки в работе программы.
Мы будем использовать отсек питания на 5 пальчиковых батарей  общим напряжением  7,5 Вольт.
  Первый эксперимент- провода от источника питания подключить к контактам мотора.  Делать это нужно аккуратно, чтобы пропеллером не повредить пальцы. В итоге мы получим вентилятор.  Если провода поменять местами, ничего страшного не произойдет. Вентилятор также будет дуть воздухом, но уже в другом направлении.
  Следующий эксперимент- попробуем уменьшить скорость вращения вентилятора. Для этого нам понадобится транзистор. Он позволяет управлять мощным мотором с помощью слабого сигнала от вывода Arduino. У транзистора есть  три вывода – база «Б», коллектор «С», эмитер «Е».

 

Прикрепленный файл  TO220-2.GIF   4,82К   4 скачиваний

 

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

 

Прикрепленный файл  Снимок.JPG   103,9К   8 скачиваний

 

Прикрепленный файл  PHT_6471.JPG   70,92К   3 скачиваний

 

Прикрепленный файл  PHT_6472.JPG   81,47К   3 скачиваний

 

  Программу возьмем из примера с фоторезистором:

int rezistor = 0;  // переменный резистор подключен 0-му измерительному входу
int level = 0;     // переменная для хранения значения входного напряжения
int motor = 10;    // база транзистора c с мотором  подключается к 10-му выводу 
void setup() 
{
  Serial.begin(9600); // устанавливаем скорость обмена данными с компьютером
}

void loop()  // основной цикл программы измерения
{
  level = analogRead(rezistor);  // считываем значение с переменного резистора
  Serial.println(level);         // выводим на компьютер данные
level = level/4;               // конвертируем от измерительного входа в скорость вращения 
 analogWrite(motor,level);     // устанавливаем скорость вращения
  delay(100);                  // делаем небольшую паузу между измерениями
}

  В схеме добавился новый элемент, подключенный параллельно мотору, это – выпрямительный диод. Диод обладает интересным свойством- он пропускает ток только в одну сторону- от анода к катоду.

 

Прикрепленный файл  1n4001.jpg   46,92К   3 скачиваний

 

  Он нужен для того, что бы исключить помехи от электромотора на микроконтроллер. Дело тут вот в чем- в программе есть строка «delay(100); ».  И за каждый цикл выполнения программы мотор перестает  получать  ток на 100 миллисекунд.    Конечно же, за столь короткое время мотор не успевает остановиться и крутится дальше по инерции, превращается в электрогенератор и вырабатывает напряжение.  Это напряжение достаточно мало, что бы повредить транзистор и плату Arduino, но его хватает, что бы создать помеху по питанию и  внести сбой в выполнение программы. Убедитесь в этом сами, убрав защитный диод. Arduino , будет периодически перезагружаться, мотор будет останавливаться. Обратите особое внимание на подключение диода. Если перепутаете полярность- устроите короткое замыкание. Один из двух элементов перегреется и сгорит- это будет или диод или транзистор.  Вместо защитного диода вполне можно использовать обычный светодиод , но включить его в обратной полярности. Более короткая ножка- к источнику питания, более длинная- к коллектору транзистора.Теперь, вращая переменный резистор, можно изменять скорость вращения мотора.

  Что можно сделать еще на основе этой схемы? Вместо блока батарей на 6 Вольт  можно применить источник питания на 12 Вольт, вместо электромотора с пропеллером можно использовать большой вентилятор  от системы охлаждения компьютера. Если у Вас есть лампа накаливания на 12 Вольт- можно сделать регулятор яркости лампы, например, ночник.  Если у Вас есть миниатюрный паяльник на 12 Вольт- можно эту схему использовать как регулятор температуры паяльника. Если у Вас есть светодиодная лента- можете изготовить регулятор яркости ленты.
  Домашнее задание- возьмите два переменных резистора и два транзистора, сделайте регулятор оборотов сразу для двух вентиляторов, которые будут управляться независимо друг от друга. Код для этого варианта будет такой:

int rezistor1 = 0;  // переменный резистор 1 подключен 0-му измерительному входу
int rezistor2 = 1;  // переменный резистор 2 подключен 1-му измерительному входу

int level1 = 0;       // переменная для хранения значения входного напряжения
int level2 = 0;       // переменная для хранения значения входного напряжения

int motor1 = 10;    // база транзистора c с мотором 1  подключается к 10-му выводу 
int motor1 = 11;    // база транзистора c с мотором 2  подключается к 11-му выводу 

void setup() 
{
  Serial.begin(9600); // устанавливаем скорость обмена данными с компьютером
}

void loop()  // основной цикл программы измерения
{
  level 1= analogRead(rezistor1);  // считываем значение с переменного резистора 1
  Serial.println(level1);          // выводим на компьютер данные
level 1= level1/4;                 // конвертируем от измерительного входа в скорость вращения  1
 analogWrite(motor,level1);      // устанавливаем скорость вращения 1
level2 = analogRead(rezistor2);  // считываем значение с переменного резистора 2
  Serial.println(level2);        // выводим на компьютер данные
level 2= level2/4;               // конвертируем от измерительного входа в скорость вращения 2
 analogWrite(motor,level2);      // устанавливаем скорость вращения 2
  delay(100);                    // делаем небольшую паузу между измерениями
}

  А вот схему уже соберите сами.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных