Манипулятop ДЛЯ РИСОВАНИЯ НА Arduino Uno
- Подробности
- Категория: Схемы на Arduino
- Опубликовано: 25.11.2018 10:15
- Просмотров: 2587
Д. МАМИЧЕВ, п. Шаталово Смоленской обл.
Внешний вид этого устройства показан на рис. 1. Манипулятор по командам оператора может рисовать любую последовательность знаков (в данном случае — цифр) на бумаге или на поверхности тонкой плёнки. Манипулятор имеет "плечевой сустав" (сервопривод, обозначенный как S1), "локтевой сустав" (сервопривод, обозначенный как S2) и подъёмник фломастера (на сервоприводе S3). Управление сервоприводами реализовано с помощью платы Arduino Uno (рис. 2).
Команды для самой платы подаёт оператор с помощью переменного резистора R1, который снабжён шкалой (рис. 3).
333
Вращая ручку этого резистора, выбирают цифру от 0 до 9, которая будет нарисована манипулятором следующей. После рисования четырёх цифр манипулятор останавливает работу в ожидании дальнейших действий оператора. Для продолжения рисования цифр нужно передвинуть бумагу и нажать на кнопку "Reset" на плате Arduino Uno. Для запуска достаточно установить указатель переменного резистора R1 в положение "0" и в течение последующих 4 с переустановить указатель на цифру, которую нужно нарисовать далее, а во время её рисования установить указатель на следующую и т. д. Если оператор не будет вращать ось переменного резистора во время рисования, будут нарисованы четыре одинаковые цифры, на которых стоит указатель, например цифра 5, в соответствии с рис. 3.
Конструкцию манипулятора поясняют рис. 1 и рис. 4.
Он состоит из основания 1 — прямоугольного отрезка оргстекла размерами 85x130 мм и толщиной 5 мм; опоры 2 (2 шт.) сделаны из сантехнических резиновых прокладок и приклеены к основанию; другая пара опор 18 — это неодимовые магниты, извлечённые из старого компьютерного привода жёсткого диска. Они закреплены на основании 1 с помощью отрезков двухсторонней липкой ленты (скотча). Их наличие позволяет крепить к основанию сверху небольшие отрезки бумаги с помощью стальных шайб 19 или листы 7 большего размера, используя стальную пластину 5 и магниты 6 (роторы от двигателей DVD-приводов). Пластина 5 размерами 65x140 мм вырезана из корпуса привода.
В основании 1 сделаны пять отверстий. Два — для крепления сервопривода S3, два — прорези для вклеивания стоек 3, внутри которых на оси 12 поворачивается корпус сервопривода S1, и одно — для крепления переходной платы 13.
Сервопривод S3 крепят к основанию через пластину-переходник толщиной 3 мм и размерами 22x22 мм. Она приклеена к боковой поверхности привода "секундным" клеем. В её углах по диагонали просверлены сквозные отверстия для крепления с помощью миниатюрных саморезов. Их завинчивают сквозь основание в пластине. Такое решение позволяет сделать привод съёмным с дополнительными точками крепления. Пластины 3 (2 шт.) — длиной 30 и шириной 16 мм, расстояние между ними — 22 мм. Отверстия для стальных шпилек 12 просверлены на расстоянии 5 мм и 8 мм от краёв пластин 3. Пластина 10 вырезана из пласт- массы толщиной 3 мм, её длина — 50 мм, ширина — 22 мм. В ней сделано прямоугольное окно размерами 22x12 мм для корпуса сервопривода SG90. В боковой поверхности просверлены сквозные (входят внутрь окна) отверстия для крепления шпилек 12.
Ось шпилек и ось выходного вала сервопривода должны по возможности пересекаться под углом 90°. Люфт между пластинами 3 и 10 желательно сделать минимальным, в то же время пластина с приводом должна свободно поворачиваться вокруг шпилек.
Размеры рычагов 8 и 11 — 20x85 мм и 20x75 мм соответственно. Важно, чтобы расстояния между осями валов сервоприводов и стержнем фломастера были одинаковыми. В авторском варианте оно — 65 мм. Поэтому центр отверстия для установки фломастера размечают в последнюю очередь. Его жёсткое крепление к рычагу можно сделать с помощью винта или винта-самореза 9. Качалки сервоприводов крепят к рычагам с помощью пар винтов и гаек 16 диаметром 2 мм (можно меньше). Приводы S1, S2 (элемент 17) привинчивают к рычагам с помощью винтов-саморезов из их комплекта. Отверстия для их завинчивания следует просверливать сверлом меньшего диаметра, чем диаметр винта.
Переходная плата 13 изготовлена из одностороннего фольгированного стеклотекстолита размерами 16x18 мм, её чертёж приведён на рис. 5.
Для исключения ошибок при монтаже желательно на элементах конструкции разместить информационные шильдики 14 и 20 (см. рис. 1 и рис. 4). Удобнее распечатанный с ними отрезок бумаги наклеить на одну поверхность двухсторонней бумажной ленты и закрыть сверху односторонней прозрачной липкой лентой. Затем вырезать по контуру и наклеить на поверхность, воспользовавшись вторым липким слоем. Соединительные шлейфы сервоприводов можно скрутить и зафиксировать отрезками изоленты 15 или пластиковыми хомутами. Перед монтажом приводов валы сервоприводов нужно выставить в положение 90° (центральное), качалки следует надевать так, чтобы стержень фломастера находился над центральной частью листа, левее и ниже (ближе к S3), а плоскости рычагов были параллельны плоскости основания.
Для питания устройства следует применить стабилизированный сетевой источник питания напряжением 5 В с выходным током до 750... 1000 мА.
Перейдём к программной части манипулятора. Проще всего реализовывать рисование цифр в полярной координатной сетке (рис. 6).
Внешний примерный вид сегментов цифр дан на рис. 7.
Для движения фломастера М по дуге окружности, например вправо, достаточно уменьшать значение угла а1, не изменяя суммарное значение угла а2+аЗ. Чтобы рисовать вверх по радиусу, нужно синхронно изменять углы а1 и а2+аЗ. При этом изменения должны быть связаны соотношением 1:2. Если угол а1 увеличивать, а2+аЗ также надо увеличить.
При самостоятельном написании скетча также удобнее пользоваться сегментным начертанием цифр, проходя фломастером по одному и тому же маршруту 1-2-3-4-5-6-1-7 (рис.7), поднимая и опуская стержень по заданному цифрой "сценарию". Аналогично можно составить алгоритм рисования любой буквы, воспользовавшись их 16-сегментным начертанием.
Управляющая программа (скетч Jun24a) имеет два массива: tablB[70] и tablA[12], в которых хранятся последовательность 0 и 1, определяющая, рисовать или не рисовать конкретный сегмент заданной цифры, а также выражения с переменными а01, а02, da1, da2, определяющие углы поворотов сервоприводов (своего рода угловые координаты) для узловых точек сегментов (выделены цветом на рис. 7). Значения переменных а01 и а02 задают начальное положение стержня фломастера на цифре, da1 и da2 — размер рисуемых цифр по ширине и высоте соответственно. Процедура поднимания и опускания фломастера вынесена в отдельную функцию f_() с аргументами-параметрами 0 — поднять и 1 — опустить. Число 4 в строке a01=a01-da1-4; (в конце скетча) определяет ширину отступа между соседними цифрами.
Ещё один вариант, более простой в работе скетча, — использование для управления манипулятором дополнительных переменных резисторов R2 и R3 (выделены цветом на рис. 2). Управляющая программа для этого случая находится в папке potenz-manip. Оператор может рисовать сам любые изображения. С помощью резистора R1 управляют движением фломастера в "горизонтальном" направлении, резистором R2 — в "вертикальном". Резистор R3 управляет подъёмом и опусканием фломастера.
Меняя числовые значения (выделены полужирным шрифтом) в строках da1=map(da1,0,1023,-35,0); da2 = map(da2,0,1023,30,-20); da3=map(da3,0,1023,20,-20);, можно изменять размеры области рисования. При налаживании и тренировках удобно пользоваться прозрачной плёнкой вместо бумаги, стирая надписи кусочком губки.
Скетчи для Arduino Uno и демонстрационный ролик, иллюстрирующий работу устройства
Радио №9 2018