arduino slider mk-3

Задание “arduino slider mk-3”

Схема устройства

Описание оборудования

Рельс имеет длину L (3 метра)

На рельсе установлена тележка с камерой. Тележка перемещается по рельсу с помощью мотора E1, который управляется через драйвер шагового двигателя SMD. На тележке установлен датчик оборотов RC1. Ротор датчика оборотов присоединен к колесу.

На тележке также установлены расстояния для определения крайне правого (ESR) и крайне левого (ESL) положения. Датчики определяют расстояние до ограничителей, которые находятся на торцах рельса.

Система снабжена LCD дисплеем M1, для контроля выполняния работы и режимов, а также LED матрицей M2, для отображения режимов при работе в условиях с ярким освещением.

Для управления устройством испольщуется матрица кнопок IN1 и пульт дистанционного управления, подключаемый через инфракрасный датчик IR.

в начало

Перечень оборудования

ARDUINO MEGA 2560 – совместимый компьютер

Модули

Шаговый мотор NEMA17 аналог [E1]

https://arduinomaster.ru/motor-dvigatel-privod/shagovye-dvigateli-i-motory-arduino/

Подключение:

Подключен к MD


Модуль управления шаговым мотором L298N [MD]

Control a stepper motor with L298N motor driver and Arduino

Подключение:
  • ENA: 7
  • IN1: 6
  • IN2: 5
  • IN3: 4
  • IN4: 3
  • ENB: 2

Датчик угла поворота KY-040 аналог [RC1]

Подключение:
  • CLK: 11
  • DT: 12
  • SW: 13

Датчик расстояния HC-SR04 [ESL, ESR]

Подключение:

ESR:

  • Trig: 39
  • Echo: 41

ESL:

  • Trig: 43
  • Echo: 45

LCD1602 Display & I2C Serial Interface Adapter [M1]

Подключение:
  • SDA: 20 (SDA)
  • SCL: 21 (SCL)

Мембранная клавиатура 4х4 [IN1]

Подключение:
  • Pin 1: 23
  • Pin 2: 25
  • Pin 3: 27
  • Pin 4: 29
  • Pin 5: 31
  • Pin 6: 33
  • Pin 7: 35
  • Pin 8: 37

MAX7219 Dot led matrix MCU control LED Display module [M2]

Подключение:
  • DIN: 10
  • SC: 9
  • CLK: 8
Дополнительно:

Кодирование рисунка


Infrared IR Wireless Remote Control [IR]

Подключение:
  • S: 47

в начало

Проверка оборудования

Этапы проверки модуля
  1. Составить тест-план и тест-кейсы
  2. Собрать все необходимые библиотеки
  3. Написать код
  4. Загрузить код на тестовом компьютере
  5. Проверить ход выполнения кода
  • Проверка модуля MD.
  • Проверка модуля RC1.
  • Проверка модуля ESL.
  • Проверка модуля ESR.
  • Проверка модуля M1.
  • Проверка модуля M2.
  • Проверка модуля IN1.
  • Проверка модуля IR.

Задачи

1. Создание программного модуля взаимодействия с устройством (ORB)

1.1. Перечислить все возможные и необходимые для работы системы действия и выходные параметры, которые будет выполнять выбранный аппаратный модуль

1.2. Перечислить все возможные и необходимые для работы системы действия и входные параметры

1.3. Установить взаимосвязь между входными и выходными параметрами

1.4. создать функцию, которая будет при получении определенных входных параметров, выдавать соответствующие выходные данные или выполнять соответствующие действия

z=function(x,y)
где x,y – входные параметры или действия, необходимые для работы программно-аппаратного модуля
z – результат работы программно-аппаратного модуля в виде значений и действий

Задачи (предыдущая версия)

Задача 1.  Движение к краю

  • Тележка должна двигаться вправо/влево до тех пор, пока не активирует датчик правого/левого края.
  • Активация датчика долна привести к полной остановке тележки.
  • Функция управления должна получать направление движения в качестве входного параметра.
  • В переменную state записать “task1”

Задача 2. Движение от края до края

  • Находясь в крайнем положении двигаться по рельсу до противоположного датчика
  • Функция управления должна получать в качестве параметра скорость движения тележки
  • Направление движение функция должна выбирать согласно данным, полученным с датчика угла поворота
  • В переменную state записать “task2”

Задача 3. “Пинг-понг”

  • Находясь в произвольном положении тележка должна двигаться до правого/левого датчика  крайнего положения
  • При активации датчика крайнего положения тележка должна с той же скоростью двигаться в противоположном направлении
  • Функция управления должна получать в качестве параметра скорость и направление движения
  • В переменную state записать “task3”

Задача 4. Движение к ближайшему краю

  • Находясь в произвольном положении тележка должна по информации с датчиков расстояния определить собственное положение на рельсе
  • Получив информацию о собственном положении на рельсе определить направление движения к ближайшему краю
  • Двигаться в сторону ближайшего края до активации соответствующего датчика и остановиться
  • Функция управления должна получать в качестве параметра скорость движения
  • В переменную state записать “task4”

Задача 5. Центровка

  • Находясь в произвольном положении тележка должна по информации с датчиков расстояния определить собственное положение на рельсе
  • Получив информацию о собственном положении на рельсе определить направление движения к центру рельса
  • Двигаться в сторону центра рельса до его достижения и остановиться на нем
  • В качестве входного параметра управляющая функция должна получать скорость движения
  • В переменную state записать “task5”

Задача 6. Дельта

  • Находясь в центре рельса тележка отъезжает от него на указанное расстояние D вправо/влево со скоростью V1
  • Переместившись на указанное расстояние тележка меняет направление движения на противоположное
  • Тележка перемещается на расстояниe 2*D со скоростью V2
  • Тележка меняет направление на противоположное и перемещается на расстояние D со скоростью V1 (вернуться в исходное положение)
  • Функция управления в качестве входных параметров должна получать скорость V1, V2 и расстояние D
  • В переменную state записать “task6”

Задача 7. Разгон

  • Тележка находится в крайнем правом/левом положении
  • Тележка начинает равноускоренное движение в противоположную сторону с ускорением A
  • Направление движения тележка выбирает согласно данным, полученным от датчиков расстояния
  • Переместившись в противоположную часть рельса и активировав датчик крайне правого/левого положения тележка останавливается
  • Функция управления должна получать в качестве входного параметра ускорение A
  • В переменную state записать “task7”

Задача 8. Торможение

  • Тележка находится в крайнем правом/левом положении
  • Тележка начинает равнозамедленное движение в противоположную сторону с ускорением A
  • Направление движения тележка выбирает согласно данным, полученным от датчиков расстояния
  • Переместившись в противоположную часть рельса и активировав датчик крайне правого/левого положения тележка останавливается
  • Если ускорение задано таким, что тележка не доезжает до противоположного края рельса, то тележка останавливается в том месте, где её скорость будет нулевой
  • Функция управления должна получать в качестве входного параметра ускорение A
  • В переменную state записать “task8”

Задача 9. Переменное движение тележки

  • Находясь в произвольном положении тележка должна двигаться со скоростью, соответствующей повороту ручки управления RC1
  • Ручка управления RC1 имеет среднее и крайние положения.
  • Нахождение ручки RC1 в среднем положении эквивалентно нулевой скорости тележки
  • Нахождение ручки  RC1 в крайнем положении соответствует максимальной скорости движения в этом направлении
  • В переменную state записать “task9”

Задача 10. Индикация скорости движения тележки

  • На экране отобразить надпись “V=” и значение скорости перемещения тележки
  • Скорость перемещения тележки определить исходя из нескольких замеров значений, полученных от датчика угла поворота, за промежуток времени

Задача 11. Индикация положения тележки

  • На экране отобразить надпись “X=” и значение положения тележки относительно одного из краев
  • Данные положения получить  от датчика угла поворота
  • Крайнее правок положение тележки соответствует надписи “X=0”
  • Крайнее левое положение тележки соответствует надписи “X=100”

Задача 12. Индикация направления движения

  • При движении тележки влево на экране отображать надпись “<<“
  • При движении тележки вправо на экране отображать надпись “>>”
  • Направление движения тележки получать на основании нескольких замеров значений, полученных от датчика угла поворота, за промежуток времени

Задача 13. Индикация ускорения тележки

  • При движении тележки в режиме “разгон”, “торможение” и “переменное движение” на экране отображать надпись “A=” и значение ускорения
  • При равномерном движении отображать “A=0”
  • Ускорение вычислять на основании нескольких замеров значений, полученных от датчика угла поворота, за промежуток времени

Задача 14. Индикация режима работы

  • На экране выводить надпись “R=” и далее режим работы слайдера
  • Режимы работы слайдера получать на основании значений переменной state
  • Режимы имеют следующие названия
    • task1:”toEdge”
    • task2:”adgeToEdge”
    • task3:”pingPong”
    • task4:”toNearEdge”
    • task5:”toCenter”
    • task6:”delta”
    • task7:”accMotion”
    • task8:”decMotion”
    • task9:”varMotion”

Задача 15. Тестирование подвижной части

  • Находясь в произвольном положении тележка должна двигаться вправо до крайнего положения на рельсе, до активации соответствующего датчика
  • При активации датчика крайне правого положения, необходимо проверить показания датчика угла поворота . Данные должны соответствовать его максимальному значению.
  • Далее тележка должна переместиться в крайне левое положение на рельсе до активации датчика крайне левого положения
  • При активации датчика крайне левого положения программа должна проверить показания датчика угла поворота. Данные должны соответствовать его минимальному значению.
  • Если обе проверки прошли успешно, то на экране показать надписть “Motion Test Ok”, в противном случае показать на экране надпись “Motion Test Error”

Задача 16. Тестирование датчков

  • Находясь в произвольном положении тележка должна двигаться вправо до крайнего положения на рельсе
  • Программа должна постоянно считывать данные с датчика угла поворота
  • Если при показании датчиком угла поворота постоянного значения (то есть значения больше не увеличиваются и не уменьшается) программа не получила сигнал от датчика крайне правого положения, то программа должна остановить мотор тележки и выдать на экран сообщение “Right Button Err”
  • Если программа получила сигнал от датчика крайне правого положения, то программа должна остановить мотор тележки и вывести на экран сообщение “Right Button Ok”.
  • Те же самые действия должны быть проведены для движения влево и датчика крайне левого положения.