Мы вынуждены исказить текст в ответ на заблокированную вами рекламу.
Друзья! Проект modelist-konstruktor.com существует благодаря рекламе. Просьба добавить сайт в исключения блокировщика и обновить страницу.
«ШКОЛА РОБОТОВ» УРОК № 4

«ШКОЛА РОБОТОВ» УРОК № 4

Очередной урок в нашей «Школе» мы начнем с небольшого «факультатива», построенного на вопросах и ответах. Их тема – основы работы с Arduino. Для тех, кто уже постиг азы программирования – это будет, возможно, повторением пройденного и этот блок они могут пропустить, но новички, присоединившиеся к нам только что, – наверняка узнают что-то полезное.

А вопросы, судя по письмам читателей журнала, имеются. Да и не может их не быть, так как уровень первоначальной подготовки наших учащихся самый разный. Есть среди них и младшие школьники, и люди солидного возраста, получившие не одно высшее образование. Даже «семейные классы» встречаются, когда за одной «партой» рядом сидят дед и внук, – примеры такие в редакции известны.

Итак, FAQ (часто задаваемые вопросы) по Arduino.

Что такое Arduino?

Чтобы любой робот – будь то Федор, побывавший на МКС, или простейший «робо-жук» из детского конструктора – мог выполнять команды, ему нужен «мозг», то есть управляющая плата. Они бывают разные, – на наших занятиях используются платы семейства Arduino.

Arduino Uno
Arduino Uno
Arduino Mega
Arduino Mega

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

В продаже встречается несколько версий плат Arduino. Какие из них подходят для занятий в «Школе роботов»?

Плат Arduino действительно существует несколько видов. Наиболее часто используются исполнения Nano, Uno, Mini и Mega, отличающиеся форм-фактором. Все они подходят для наших целей и продаются во многих магазинах, торгующих электронными компонентами.

Как запрограммировать плату Arduino?

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

Программы (или так называемые скетчи) создаются на видоизмененном языке программирования C/C++. Затем написанный скетч с помощью микроконтроллера-загрузчика и соответствующего ПО переносится на плату, подключенную к компьютеру USB-кабелем.

Чтобы написать программу для платы Arduino требуется среда программирования Arduino IDE. Где ее взять? Она поставляется с платой или ее нужно приобретать дополнительно?

Скачать дистрибутив Arduino IDE можно бесплатно на официальном сайте www.arduino.cc. Для этого необходимо:

1. На главной странице сайта зайти в разделе Software и далее в Downloads.

«ШКОЛА РОБОТОВ» УРОК № 4

2. Выбрать установщик для своей операционной системы. В нашем случае для Windows.

«ШКОЛА РОБОТОВ» УРОК № 4

3. Выбрать вариант скачивания (с пожертвованиями или без них).

«ШКОЛА РОБОТОВ» УРОК № 4

4. Запустить после скачивания стартовый файл и установить Arduino IDE как обычную программу.

5. Открыв Arduino IDE, вы увидите такое окно, где белая зона и есть место написания кода вашей программы для платы Arduino.

«ШКОЛА РОБОТОВ» УРОК № 4

Как перенести написанную программу из компьютера на плату Arduino?

Чтобы микроконтроллер понимал ваш код, его необходимо перевести на понятные для «машины» команды. Этим собственно и занимается среда программирования Arduino IDE – трансформирует написанный вами символьный код в импульсы и загружает их в «мозг» платы. Для этого:

1. Соединяем USB-кабелем плату с компьютером.

2. Указываем в панели «Инструменты» в разделе «Плата» вашу плату (в нашем примере используется Arduino Uno).

«ШКОЛА РОБОТОВ» УРОК № 4

3. Указываем в панели «Инструменты» в разделе «Порт» тот порт, к которому подключена плата (он должен быть подписан вашей версией платы).

«ШКОЛА РОБОТОВ» УРОК № 4

4. Остается кликнуть на «галочку» для проверки ошибок, а затем на «стрелочку» для загрузки. В нижнем левом углу экрана будут выведены результаты операции, а ниже – более подробные данные.

«ШКОЛА РОБОТОВ» УРОК № 4

В описаниях конструкций на Arduino часто упоминаются платы расширения. В магазинах они тоже есть. Что это, для чего они предназначены и как с ними работать?

Случается, что функционала аппаратной части платы Arduino не хватает, тогда используют платы расширения, или шилды. Они выполняют различные задачи. Служат, например, для управления двигателями или сервоприводами (соответственно Motor Shield и Multiservo Shield).

Motor Shield
Motor Shield
Multiservo Shield
Multiservo Shield

Для удобства работы с шилдами большинство производителей пишут библиотеки (сборники подпрограмм). Скачать их можно на официальных сайтах этих компаний. К примеру, для Multisrvo Shield на сайте https://amperka. ru/product/arduino-multiservo-shield. Но чтобы пользоваться сторонними библиотеками, их нужно подключить к IDE. Для этого скачиваем нужную библиотеку, а затем в среде Arduino IDE заходим в «Скетч» – «Подключить библиотеку» – «Добавить .ZIP библиотеку» и указываем путь к файлу.

«ШКОЛА РОБОТОВ» УРОК № 4

ЭЛЕКТРИЧЕСТВО И КОЛЕСА

Ну а теперь перейдем к очередному уроку, на котором соберем «начинку» модели простейшего электромобиля. Научимся программно менять направление вращения вала электродвигателя и управлять скоростью его вращения. Для экспериментов подойдет модельный коллекторный электродвигатель постоянного тока с редуктором.

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

Чтобы электродвигатель вращался, на него нужно подать напряжение – подключим его к пинам GND и Vin, который в отличие от пина 5V выдает весь доступный ток от источника питания.

Ранее мы запитывали Arduino от USB-разъема, который выдает ток до 500 мА. Для слаботочных схем этого хватало, но сейчас лучше использовать внешний источник питания (батарейку, аккумулятор или сетевой адаптер), подключенный к разъемам DC Arduino.

Для управления электродвигателем понадобится транзистор – он как «кран», который пропускает некоторое количество тока, или не пропускает совсем.

Мы будем работать с полевым – MOSFET IRF530N. Его выводы называются: исток, сток и затвор. И ток от истока к стоку определяется напряжением на затворе.

Собрав схему, приступим к написанию скетча:

int m = 9; // Пин к которому подключен затвор

транзистора

void setup(){

pinMode(m, OUTPUT); // Пин должен работать на выход }

void lоор(){

digital Write(m, HIGH); //Подаю на затвор 5v

на 3 секунду

delay(3000); // Т.е. открываю “кран”

digital Write(m, LOW); //Подаю на затвор 0v

на 3 секунду

delay(3000); // Т.е. закрываю “кран”

}

Подаем напряжение на затвор транзистора, исток замыкается со стоком, соответственно на один из выводов мотора начинает поступать напряжение от пина GND, – и мотор начинает вращаться.

Схема подключения электродвигателя
Схема подключения электродвигателя
Схема подключения электродвигателя с возможностью управления скоростью его вращения
Схема подключения электродвигателя с возможностью управления скоростью его вращения

А чтобы регулировать скорость его вращения, понадобится потенциометр и пин с ШИМ-сигналом. В зависимости от того, в каком положении находится ручка потенциометра, будет изменяться скорость вращения двигателя. Программа управления выглядит так:

int m = 9; //Пин к которому подключен затвор транзистора

int р = А1; // Пин к которому подключен потенциометр

int val = 0; // Будет хранить значение потенциометра

void setup(){

pinMode(m, OUTPUT); // Пин должен работать на выход }

void lоор(){

//Считываем значение потенциометра (0-1023)

//Делим на 4 для ШИМ(0-255)

val = analogRead(p)/4;

analogWrite(m, val);// Подаем на двигатель значение потенциометра

}

ОТВЕТ НА ДОМАШНЕЕ ЗАДАНИЕ УРОКА №3 («М-К» №7-2019)

int photo = A1;

int led = 9;

int val = 0;

void setup(){

pinMode(led, OUTPUT);

}

void loop(){

val = analogRead(photo);

val = val / 4;

analogWrite(led, val);

delay( 10);

}

Антон ЛОМОНОСОВ,

Азизжон УЛЬМАСОВ,

Сергей МОТИН

Рекомендуем почитать

  • ШЛИФМАШИНКИШЛИФМАШИНКИ
    Когда нужно подготовить дерево к покраске, вы можете начать шлифовать его вручную, но без этого инструмента результаты окажутся скромными. Шлифовальная машина позволит снять старую краску...
  • ПОСЛЕДНИЕ АРТИЛЛЕРИЙСКИЕПОСЛЕДНИЕ АРТИЛЛЕРИЙСКИЕ
    Если американцы, а также их старые и новые союзники по окончании Второй мировой войны практически полностью переключили легкие силы своих флотов на решение задач эскорта и борьбы с...
Тут можете оценить работу автора: