Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

arduino-1-80

.pdf
Скачиваний:
209
Добавлен:
26.03.2016
Размер:
15.53 Mб
Скачать

ОПЫТ 8

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Серводвигатель

 

 

 

 

 

 

 

 

 

 

 

 

Pin

9

 

"Серво", сокращение от серводвигателя,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

это двигатель, который включает в себя

Серводвигатель

 

 

 

электронную схему с обратной связью.

 

 

 

Серводвигатели идеально подходят для

 

 

 

сигнал (белый)

 

 

применения в электронике и автоматике,

 

 

 

 

 

потому что обладают высокими скоростными

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+5 (красн)

характеристиками и умеют очень точно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

устанавливаться в нужное положение, что

 

 

GND (черный)

 

 

 

 

 

 

не умеют обычные двигатели.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Достаточно простое управление, при помощи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

импульсов переменной длительности. Например,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

импульс 1,5 мс установит сервопривод в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

положение 90 градусов.

 

 

 

 

GND (-)

 

 

 

 

 

+5 Вольт (5V)

 

 

 

 

 

 

 

 

В этом опыте вы узнаете, как использовать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ШИМ (широтно-импульсную модуляцию) для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

детали:

X 1

Пров

X 8

p.48

Опыт 8: Серводвигатель

a

b

c

d

e

f

g

h

i

1

 

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

2

3

 

 

 

 

 

 

 

3

4

 

 

 

 

 

 

 

4

5

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

6

7

 

 

 

 

 

 

 

7

8

 

 

 

 

 

 

 

8

9

 

 

 

 

 

 

 

9

10

 

 

 

 

 

 

 

10

11

 

 

 

 

 

 

 

11

12

 

 

 

 

 

 

 

12

13

 

 

 

 

 

 

 

13

14

 

 

 

 

 

 

 

14

15

 

 

 

 

 

 

 

15

16

 

 

 

 

 

 

 

16

17

 

 

 

 

 

 

 

17

18

 

 

 

 

 

 

 

18

19

 

 

 

 

 

 

 

19

20

 

 

 

 

 

 

 

20

21

 

 

 

 

 

 

 

21

22

 

 

 

 

 

 

 

 

23

 

 

 

 

 

 

 

 

24

 

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

26

 

 

 

 

 

 

 

 

27

 

 

 

 

 

 

 

27

28

 

 

 

 

 

 

 

28

29

 

 

 

 

 

 

 

29

30

 

 

 

 

 

 

 

30

a

b

c

d

e

f

g

h

i

Компоненты

Обозначение

 

 

Серводвигатель

 

e5

e6 e7

Провод перемычка

 

e5

 

Провод перемычка

 

e6

 

Провод перемычка

 

e7

 

Провод перемычка

Pin 9

a7

Провод перемычка

 

b5

 

Провод перемычка

 

a6

+

 

5V

 

+

 

GND

 

 

Расширьте свои возможности с помощью библиотек:

У Arduino имеется полезный набор встроенных команд для выполнения

сновных операций ввода / вывода. Она может принимать решения, используя

логику, а также решать математические задачи и пр.. Но реальной силой

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

Библиотекиэто сборники новых команд, которые собраны вместе для того,

чтобы их можно было легко подключить к вашему проекту. Ардуино поставляется с несколькими полезными библиотеками, такими как Wire, LiquidCrystal, Ethernet, Servo и пр.. Servo - библиотека сервоприводов, как раз используемая в этом опыте. Дополнительную информацию см. на:

http: //arduino.cc/en/Reference/Libraries список библиотек и информации об их использовании.

Если вы собираетесь использовать новый датчик или устройство, есть вероятность того, что кто-то уже создал библиотеку, для взаимодействия с вашим устройством. Для многих датчиков и устройств библиотеки давно созданы, их остается только найти. Вам в помощь Google и Yandex.

Чтобы использовать библиотеку в проекте, выберите его из меню

ArduinoIDE > Sketch > Import Library (Скетч> Импортировать Библиотеку)

File Edit Скетч Tools Help

 

 

Проверить / Компилировать

 

 

 

 

 

Показать папку Скетчей

 

 

Добавить файл...

 

 

Импортировать Библиот.

EEPROM

 

 

Ethernet

 

 

Firmata

 

 

LiquidCrystal

 

 

SD

 

 

Servo

 

 

SoftwareSerial

 

 

SPI

 

 

Stepper

 

 

Wire

8

 

Код Arduino:

Откройте в Arduino IDE // Файл > Примеры > MaxKit.ru > lesson_7

На заметку:

 

 

 

#include специальная директива препроцессора, которая вставляет

#include <Servo.h>

библиотеку (или любой другой файл) в ваш проект. Вы можете ввести

эту команду вручную, или выбрать установленную библиотеку из меню

 

 

ArduinoIDE: Скетч> Импортировать Библиотеку> Add Library.

 

Библиотека Servo содержит новые команды, которые позволяют

Servo servo1;

управлять различными сервоприводами. Чтобы подготовить Arduino

 

для управления серводвигателем, вы должны сначала создать

servo1.attach(9);

«объект» Servo для каждого сервопривода (мы назвали его "servo1"),

 

а затем прикрепить (attach) его к цифровому порту (у нас это порт 9).

 

Сервоприводы не умеют вращаться по кругу, но умеют занимать

 

определенную позицию. Мы используем команду write() библиотеки

servo1.write(180);

Servo, чтобы установить сервопривод в указанное число градусов

 

(от 0 до 180). Помните, что сервоприводу требуется время, чтобы

 

достичь определенной позиции, поэтому дайте ему задержку delay().

Что вы должны увидеть:

 

Вы должны увидеть, как ваш серводвигате

 

переходит в различные позиции на разных

 

скоростях. Если двигатель не двигается,

 

проверьте соединения и убедитесь,

 

что код загружен в Arduino, или

 

воспользуйтесь советами по

 

устранению неполадок ниже.

 

Возможные трудности:

Применение в жизни:

Servo не крутится

 

Роботизированные механические руки, которые

Даже с цветными проводами есть шанс

используются на автомобильных заводах.

подключить серво в обратном направлении.

 

Проверьте правильность соединений.

 

Тем не менее не работает

 

Ошибка, которую мы сделали несколько раз -

 

забыли подключить провода питания +5 вольт

 

и землю.

 

 

Двигается рывками

 

 

Если серво начинает двигаться рывками и

 

мигает светодиод на борту Arduino, это говорит

 

о том, что не хватает мощности питания.

 

Воспользуйтесь сетевым адаптером вместо

 

USB, это должно решить проблему.

 

 

ОПЫТ 9

 

 

9

 

+5 вольт

 

Датчик изгиба

 

(5V)

Pin A0

 

резистор

 

В этом опыте мы используем Flex Sensor, или

 

(10 КоМ)

 

“Датчик Изгиба”. Его основа - пластиковая

 

(Коричн.-Черн.-Оранж.)

 

 

 

полоска с нанесенным слоем угля. Также

 

 

 

 

 

 

как у переменного резистора, у него меняется

 

flex

 

сопротивление, но вместо поворота ручки, вам

 

sensor

 

приходится сгибать его, тем самым изменяя

 

 

+5 вольт

сопротивление. Для обнаружения этих

 

 

изменений, мы снова используем “делитель

 

 

(5V)

 

 

 

напряжения”. Наклоняя “Датчик” в одном

 

 

Pin 9

направлении, он изгибается, и чем больше он

 

 

изгибается, тем выше становится его

 

 

 

 

 

 

сопротивление. Приблизительный интервал

 

 

 

изменений от 10 кОм до 35 ком. В этой схеме

 

опривод

 

мы будем использовать Flax Sensor для

 

 

контроля положения сервопривода.

 

 

 

 

 

 

 

GND

 

 

 

 

(земля) (-)

 

 

:

F

Рез

П

 

ДЕТАЛИ

 

 

10 К

 

 

1

1

X11

 

 

Если в вашем наборе

 

 

 

отсутствует датчик изгиба,

 

 

 

вы можете заменить его,

 

 

 

не меняя схемы,

 

 

 

фоторезистором.

 

 

 

Подправив код.

 

 

 

см. коментарий в скетче.

 

 

Опыт 9: Flex Sensor (Датчик Изгиба)

a

b

c

d

e

f

g

h

i

1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

14

15

 

 

 

 

 

 

 

15

16

 

 

 

 

 

 

 

16

17

 

 

 

 

 

 

 

17

 

 

 

 

 

 

 

 

18

 

 

 

 

 

 

 

 

19

 

 

 

 

 

 

 

 

20

21

 

 

 

 

 

 

 

21

22

 

 

 

 

 

 

 

22

23

 

 

 

 

 

 

 

23

24

 

 

 

 

 

 

 

24

25

 

 

 

 

 

 

 

25

26

 

 

 

 

 

 

 

26

27

 

 

 

 

 

 

 

27

28

 

 

 

 

 

 

 

28

29

 

 

 

 

 

 

 

29

30

 

 

 

 

 

 

 

30

a

b

c

d

e

f

g

h

i

Компоненты Обозначение

Серводвигатель

Провод перемычка

Провод перемычка

Провод перемычка

Flex Sensor

10K Резистор

Провод перемычка

Провод перемычка

Провод перемычка

Провод перемычка

Провод перемычка

Провод перемычка

Провод перемычка

Провод перемычка

 

 

 

 

Отладка скетча с использованием Монитора порта:

e1

e2

e3

Такое может случиться с каждым: программа написана, успешно

 

 

 

 

 

 

 

 

скомпилирована, загружена, но не понятно почему, работает не так как

e1

 

 

задумано. У компьютера есть монитор, клавиатура, мышь, с их помощью

 

 

 

 

легко и удобно отлаживать код, но у Arduino подобных аксессуаров нет.

e2

 

 

“Ключ" - в видимости состояния выходов микроконтроллера. Этим ключиком

 

 

 

 

может стать практически что угодно - светодиод, зуммер, и пр., но один из

e3

 

 

самых полезных инструментов Serial Monitor. Используя Serial.print() и println(),

 

 

вы можете с легкостью вывести, в понятном для человека виде, текст и

 

 

 

 

 

 

 

 

данные от Arduino, на экран компьютера. Это отличная возможность для

h19

h20

проверки и окончательной отладки Вашей программы.

 

 

i20

i24

for (x = 0; x < 8; x++)

Допустим, ваш цикл "for()" со счетчиком

 

 

 

 

от 1 до 8, кажется работает не правильно.

 

 

 

 

{

 

 

 

 

Для проверки добавьте Serial.begin(9600);

i19

 

 

Serial.print(x);

 

 

в функцию setup(), а также добавьте

 

 

 

 

}

 

 

 

 

Serial.print() или println() в loop().

 

 

 

 

 

A0

j20

 

 

 

h24

 

+

Вы хотели от 1 до 8, но счетчик, на самом деле ситает от

 

 

 

 

0 до 7. Следовательно нужно подправить код.

b1

 

 

 

01234567

 

 

 

 

 

a2

 

+

 

 

Pin 9

a3

 

for (x = 1 ; x < 9 ; x++)

И после повторного запуска получите

 

 

 

 

 

 

 

 

{

нужный результат:

5V

 

+

 

Serial.print(x);

 

 

 

 

 

}

12345678

 

 

 

 

 

GND

 

 

 

 

 

9

Код Arduino:

Откройте в Arduino IDE // Файл > Примеры > MaxKit.ru > lesson_9

На заметку:

 

В связи с тем, что значения делителя напряжения Flex

 

Sensor / резистор, находятся в пределах от 600 до 900, а не

servoposition = map(flexposition, 600, 900, 0, 180);

от 0 до 1023 (0 - 5 Вольт), нам понадобится функция map(),

как удобный способ преобразовать один диапазон в другой.

servoposition = constrain(servoposition, 0, 180);

В дополнении мы используем функцию constrain(), которая

 

 

проверит и если надо задаст новые значения, так чтобы они

 

“вписались” в область необходимых: от 0 до 180.

Serial.print("sensor: ");

Serial.print(”sensor: ”); напечатает sensor:, добавит значение

Serial.print(flexposition);

из переменной flexposition, далее Serial.print(” servo: ”);

напечатает servo:, с пробелом перед словом servo, добавит

Serial.print(" servo: ");

значение из переменной servoposition, и после этого, из за

 

Serial.println(servoposition);

Serial.println, переведет курсор на новую строку.

Что вы должны увидеть:

 

Вы должны увидеть поворот

 

серводвигателя в соответствии с тем,

 

на сколько много вы изогнули гибкий

 

датчик. Если схема не работает,

 

убедитесь в том, что все собрано

 

правильно, а также загружен ли код в

 

Arduino, или просмотрите советы по

 

устранению неполадок ниже.

 

Возможные трудности:

Применение в жизни:

Servo не поворачивается

Яркий пример применения датчиков изгиба-

Даже в цветных проводах идущих от серво

это игровые консоли Nintendo “Power Glove”.

легко ошибиться. Возможно ошибка в этом.

Это был первый игровой видео контроллер,

Servo не движется, как ожидалось

который использовал имитацию движения рук

на экране в реальном времени.

Датчик предназначен для изгиба в одном

 

направлении, попытайтесь изгибать полоску

 

в противоположную сторону.

 

Малый диапазон поворота Servo

 

Вам нужно попытаться изменить диапазон

 

значений в функции map().

 

ОПЫТ 10

 

 

 

 

 

 

 

 

 

 

16x2 LCD

 

 

+5 Вольт

VSS

VDD

VO

RS

R/W

E

DB0

DB1 DB2 DB3 DB4

DB5

DB6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GND (Земля)

:

Потенциометр

 

ДЕТАЛИ

 

X1 ЖКИ

X1

DB7

A

K

PIN 2

PIN 3

PIN 4

PIN 5

PIN 11

PIN 12

ЖКИ (LCD) 10

Жидко Кристаллический Индикатор

В этом опыте Вам предстоит освоить ЖКИ (LCD*).

ЖКИ, или жидкокристаллический дисплей является простым дисплеем, который может отображать выполнение команд, выводить информацию от различных датчиков - все зависит от того, как Вы запрограммируете свою плату Arduino.

Вы узнаете основные принципы работы с ЖКИ:

как подключить, как настроить, как использовать ЖКИ в Ваших проектах с Arduino.

ЖКИ модуль поставляется отдельно от разъема и если у вас возникнут сложности с его пайкой, -

обратитесь за помощью к знающему человеку, или специалисту.

*LCD Liquid Crystal Display (eng.)

Провод

X16

Опыт 10: ЖКИ

a b c d e

1

 

 

2

 

 

3

 

 

4

 

 

9

 

 

10

 

 

11

 

 

12

 

 

13

 

 

14

 

 

15

 

 

16

 

 

17

 

 

18

 

 

19

 

 

20

 

 

21

 

 

22

 

 

23

 

 

24

 

 

25

 

 

26

 

 

27

 

 

28

 

 

29

 

 

30

 

 

a

b

c d e

f g h i

1

2

3

f g h i

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]