Продолжение, начало тут.
Определение исходных требований к устройству. Выбор «железа»
Дабы не решать задачу совсем в общем виде, я задался определенными требованиями исходя из общих соображений (бюджета, простоты или сложности покупки комплектующих, сложности в реализации или ожидаемых проблемах в эксплуатации). В то же время, изложение данных соображений позволит сразу перевести возможный диалог в конструктивное русло, а желающему использывать мой опыт — подскажет на какие детали надо обратить внимание. Итак, приступим.
Общие требования
Решение должно быть:
- простым и не дорогим;
- построенным на доступных компонентах;
- устройство должно быть достаточно надежным, так как я планирую использовать его на выездах (то есть в крепком корпусе, разъемы навинчивающиеся и т.д.);
- устройство должно быть ремонтопригодным;
- разработка не должна требовать от меня действительно глубоких знаний в электронике и схемотехнике и сильно выходить за рамки школьного курса;
- разработка не должна затянутся не то что на месяцы, а даже на недели;
- я не хочу заниматься разводкой, травлением плат и т.п — хочется максимально использовать готовые компоненты, желательно в виде модулей.
.
Функционал
Основные функции устройства:
- вращение против часовой стрелки с заданной скоростью(тактовая кнопка, пока нажато — вращаем)
- вращение по часовой стрелке с заданной скоростью (тактовая кнопка, пока нажато — вращаем)
- регулировка скорости вращения (потенциометр)
- команда «освободить двигатель» – снять напряжение с двигателя (для экономии ресурса АКБ и для охлаждения двигателя, при необходимости)
- Кроме того, полезно вставить функцию автоматического снятия напряжения с двигателя если фокусером не пользуются продолжительное время (скажем, более 10 минут) – тут возможны варианты;
- Хорошо бы иметь на пульте ДУ простую индикацию величины скрорости вращения, например яркостью светодиода.
Исходя из способа применения, необходимо иметь как минимум два варианта управления фокусировочным устройством:
- с пульта управления при работе непосредственно у телескопа (в т.ч. при визуальных наблюдениях или при грубой фокусровке по изображению на дисплее цифровой камеры) — то есть меня вполне устроит кнопочный пульт на коротком кабеле ;
- с помощью собственного ПО с ноутбука под OS Windows, значит блок управления фокусером должен подключаться к ПК, например по USB;
- опционально, в будущем — с ПК с помощью ASCOM-драйвера.
При удаленной работе с ПК хочется иметь возможность так же запоминать положение фокусера и переходить к заданному положению. Это связано с тем, что при смене окуляра меняется фокусное расстояние и процедуру фокусировки нужно проводить заново. Хочется сохранить положения фокусера для каждого окуляра в виде пресетов и быстро между ними переключаться при смене окуляра. Конечно придется дофокусировать телескоп, но этого в любом случае не избежать, так как при разной температуре фокусное расстояние может немного отличаться. Исходя из этого, прошивка микроконтроллера должна считать шаги (учитывая режим микрошага) и передавать текущее положение на ПК, а так же прокручивать фокусер до заданной позиции.
Двигатель и драйвер
Двигатель однозначно шаговый, так как большую часть времени фокусер неподвижен, вращение требуется на низких оборотах, при точной фокусировке требуется поворот на минимально возможный угол, а большую часть времени требуется жесткая фиксация положения – шаговый двигатель идеально подходит для решения такой задачи.
Крайне важный параметр, по которому нужно выбирать двигатель – необходимый крутящий момент двигателя. В моем случае, максимальный крутящий момент, который мне удалось зафиксировать составил ~2 кг/см при комнатной температуре.
Желая иметь некоторый запас, я задался минимальным крутящим моментом в 3 кг/см.
Схема 2
Не забываем привести показания динамометра к требуемым единицам и умножить на плечо рычага (обычно крутящий момент указывается в Н*м или в кг*см). Что делать, если нет динамометра? Взять безмен, кухонные весы или сделать самостоятельно с помощью пружины и линейки, например, так:
В последнем случае необходима калибровка, которую можно сделать используя бутыль с водой (1л=1кг). Точность конечно не высокая, но для нашей задачи вполне достаточная.
Важно отметить, что сила трения на подшипниках или червячном механизме фокусера может сильно зависеть от ориентации последнего в пространстве (на телескопе), а также от веса, закрепленного на фокусере оборудования (адаптеры, поворотная призма, окуляр, цифровая камера и т.п.). Поэтому я рекомендую навесить максимум оборудования и провести замеры (по 2-3 раза) в нескольких положениях (как минимум в двух, когда оптическая ось фокусера ориентирована вертикально и горизонтально).
Кроме того, надо иметь ввиду, что на морозе сила трения может заметно увеличтся, соответственно потребуется больший крутящий момент.
Следующий важный параметр – точность позиционирования. Так как я уже решил, что буду использовать шаговый двигатель, то вопрос ставится так: какой шаг должен быть у двигателя и нужно ли мне использоваться драйвер с поддержкой микрошага? Большинство доступных двигателей имеет шаг 1.8° на оборот (или 200 шагов), но так же доступны модели с шагом 0.9° (400 шагов на оборот), 7.5° и другие. Данный параметр так же индивидуален. В моем случае зона фокусировки получилась порядка 15°.
Схема 3
При этом точная фокусировка (минимальный угол, при котором становится заметным смещение среднего луча от центра) – менее 2° (выбранная методика не позволяет делать замеры точнее, но это и не нужно). Таким образом, при использовании двигателя с шагом в 1.8° вся зона фокусировки будет проходиться примерно за 10 шагов, а точная фокусировка будет фактически невозможна. Шаг 0.9° так же скорее всего будет недостаточным для хорошей фокусировки.
Измерив угол, в котором производится фокусировка с разными окулярами, я получил разные значения, но одного порядка – 10-20°. Так что влияние окуляра в данном случае, вероятно, не принципиально.
В итоге я пришел к выводу, что можно использовать шаговый двигатель с шагом 1.8° или 0.9°, но в любом случае нужен драйвер шагового двигателя с поддержкой микрошага. По этой причине мне пришлось отказаться от использования популярных драйверов, распространяемых в виде Arduino Shield – все они не поддерживают микрошаг. Выбор пал на легко доступный и дешевый Polulu A4988, который правда пришлось разместить на отдельной плате.
Позже, в следующем проекте, я использовал DRV8825 того же производителя и он мне понравился значительно больше.
"
Для управления A4988 нужно минимум 6 сигналов — ENABLE, STEP, DIR и три сигнала выбора микрошага MS1, MS2, MS3. Учитывая три таковые кнопки на пульте ДУ (влево, вправо и «освободить») и светодиод скорости получается, что придется задействовать 10 цифровых выходов микроконтроллера.
Питание
Arduino Uno питается достаточно широким диапазоном напряжения (рекомендованный диапазон 7-12В) и небольшим током, поэтому при выборе источника питания фактически приходится отталкивать от двигателя. Драйвер А4988 поддерживает напряжения от 8 до 35В. Шаговые двигатели представлены в широком ассортименте, с разными номинальными параметрами (под разное напряжение и ток). Источник питания хочется использовать один и для блока управления, и для самого двигателя. Отсюда получаем ограничение: напряжение питания должно быть в интервале 8-12В. Окончательный выбор можно делать после того, как будет сделан выбор двигателя исходя из требуемой мощности.
Кроме того, стоит учесть место использования телескопа. В моем случае это лоджия (~220В), крыша дома (АКБ), на выезде (автомобиль, 12В или ~220В через инвертер, но иногда машину приходится оставлять и тогда снова АКБ). Возможно кому-то стоит сразу подбирать АКБ вместо БП.
Механика
Я выбрал соосное размещение двигателя: с помощью соединительной муфты двигатель фиксируется прямо на валу фокусировочного устройства. Вторая точка опоры – произвольное жесткое крепление двигателя к корпусу фокусера. Просто и надежно, хотя и требует большего крутящего момента. Такая схема позволит максимально упростить крепление (одна точка), облегчит процедуру снятия и установки двигателя при необходимости, и, самое главное, позволит избежать «юстировки» механической части – крепления и подгонки шестеренок, шкивов и т.п.
Схема 1
Вес и габариты
Так как двигатель размещается на фокусировочном устройстве на телескопе, вес важен. Слишком большой вес усложнит балансировку, повысит нагрузку на монтировку и треногу, габариты — добавят парусности. Поэтому чем меньше двигатель — тем лучше. Данный критерий достаточно индивидуален, я задался максимальной массой двигателя в 300 г.
Подбор ключевых комплектующих (платформа, ШД, БП, корпус и т.д.)
Выбор двигателя
Итак, мы уже определили, что нам нужен шаговый двигатель с определенными
- Шаг 1.8° или 0.9°;
- Крутящий момент от 3 кг/см;
- Номинальное напряжение 12В;
- Ток обмотки — чем меньше, тем лучше, разумное ограничение — не больше 1А;
- Подключение биполярное (соответственно 4 отвода, если выберете униполярный двигатель с 6-ю отводами, не забудьте удвоить сопротивление обмоток и пересчитать ток);
- Вес – не более 0.3 кг;
- Габариты. Имейте ввиду, что слишком большой двигатель в некоторых положения монтировки может задевать другое оборудование. Этот параметр имеет смысл так же минимизировать.
Далее запускаем браузер и ищем подходящий двигатель на просторах Интернета. Средняя стоимость в Китае – 10-20USD, средняя стоимость в РФ – 1000-1500р. Стараемся выбирать двигатель, с возможно меньшем номинальным током. Теоретически, можно использовать двигатели с током до 2А, но большой ток приведет к сильному нагреву двигателя (его придется отключать каждый раз после фокусировки) и быстрому расходу АКБ. Кроме того, драйвер А4988 имеет встроенный ограничитель силы тока, что хорошо, так как к нему можно подключить двигатель рассчитанный на существенно большие токи. Плохо то, что такой двигатель не будет набирать нужный крутящий момент.
Механика
Для выбора соединительной муфты нам нужно знать посадочные диаметры. Для этого мы должны измерить диаметр вала фокусера и посмотреть диаметр вала двигателя. В моем случае получилось 8 мм и 5 мм соответственно. Так же потребуется знать крутящий момент.
Крепление двигателя к фокусеру – задача сугубо индивидуальная. Я решил ее следующим образом: К двигателю прикрутил алюминиевый уголок (специально вырезанный), а в корпусе фокусера прорезал щель, куда этот уголок вошел. Этого уже достаточно, чтобы исключить проворот, но не достаточно, чтобы исключить люфт. Для исключения люфта я взял трансформаторное кольцо, приклеил к внутренней стороне полоску медицинского ждут и закрепил на фокусере. В алюминиевом уголке просверлил еще одно отверстие по месту и стянул хомут болтом. Люфт ушел, хотя конечно вся конструкция в целом не жесткая: у меня получилась одна точка опоры на фокусере + крепление на вал через гибкую муфту. Соответственно на муфте есть небольшая подвижность. На практике, данная подвижность не мешает, но может «съесть» часть крутящего момента на деформацию муфты.
Данный вопрос является творческим и очень индивидуальным.
Платформа для блока управления
На самом дела, тут конечно вариантов масса, я выбрал Arduino Uno.
- Доступно;
- Не дорого;
- Бесплатная среда разработки;
- Программирование на С++;
- Популярная платформа, поддержка любителей по всему миру;
- Поддержка RS232 – при подключении отладочной платы микроконтроллера (USB) к ПК в системе появляется появляется COM-порт. Поддержка работы с RS232 со стороны программы, выполняемой микроконтроллером так же имеется, причем с точки зрения программирования все ОЧЕНЬ просто.
Ну и самое главное, Arduino Uno имеет достаточно кол-во входов и выходов и полностью готов к использованию — не требуется никакой допонительной разводки, бери и программируй.
Причем вариантов реализации масса, как Arduino-совсместимых, так реализованных на другой архитекктуре, со своими средами разработки и своими сообществами. На Arduino Uno конечно же свет клином не сошелся. Мы живем в удивительное время, когда пользуясь школьными знаниями на базе модульной электроники можно решать самые разные задачи, механизируя и автоматизируя различные процессы — телескопы, аквариумы, оранжереи, укачивание ребенка в люлке или управление высокоточными процессами. Непонятная и нелепая концепция «умного дома» ограниченная регулировками климата, освещения и т.п. наконец обретает какой-то практический смысл, дает какое-то действительно новое качество, которого очень сложно или вообще нельзя было добиться «вручную». Причем на уровне, доступном очень многим. И это просто пкрекрасно!
Выбор блока питания
Очень популярное напряжение – 12В и именно на нем я и остановился. Оно подходит для Arduino; на рынке доступно много шаговых двигателей, рассчитанных на это напряжение; есть масса блоков питания, АКБ, можно подключаться напрямую от прикуривателя автомобиля.
Для своего устройства я остановился на блоке питания 12В и 25 ватт.
С АКБ аналогично, но вместо мощности имеет смысл смотреть емкость и рабочий ток. Ток – до 2А, емкость исходя из 2-3 часов работы – скажем 4-5 А*часа. На практике на фокусировку суммарно в течении ночи уходит вряд ли больше часа, так что емкости 2 А*часа тоже должно быть достаточно.
Следуя условию общего питания для Arduino и двигателя, я объединил шины GND и VIN платы микроконтроллера Arduino c шинами GND и VMOT драйвера А4988 соответственно (см. схему). При этом на корпус выведен второй разъем питания, аналогичный разъему питания Arduino. Это сделано для того, чтобы в случае замены двигателя на более мощный с другим питанием (например, 24В) можно было без особых проблем разделить шины VIN и VMOT и подать на двигатель нужное напряжение.
Конструктив
Так как изначально при разработке устройства я ставил условие использования стандартных компонент, то все комплектующие из спецификации, приведенной ниже, доступны в магазинах, а подавляющее большинство можно заказать в Интернете.
Отдельно хочу сказать пару слов о размещении разъемов в корпусе и кнопок на макетной плате. При размещении разъемов учитываете, что корпус будет закрываться и размещайте разъемы так, чтобы при они не мешали при сборке. При размещении кнопок учитывайте, что на кнопку после сборки одевается колпачок, и этот колпачок может быть шире, чем сама кнопка. Поэтому если кнопки поставить на плате слишком близко друг к другу – колпачки придется подпиливать :) Так же стоит обратить внимание не высоту кнопок – они должны достаточно выходить из корпуса, что бы на них можно было одеть колпачок (высоту кнопок стоит учесть при заказе корпуса пульта ДУ).
Блок управления двигателем
Итак,
- Питание (штатный разъем Arduino и отдельный разъем для независимого питания двигателя при необходимости)
- Разъем силового кабеля двигателя
- Разъем USB платы микроконтроллера для подключения к ПК и удаленного управления
- Разъем пульта ДУ
Как показал опыт, я выбрал не самый удачный, хотя и весьма качественный корпус. Можно брать аналогичный, но на пару сантиметров ниже, и на 1-2 сантиметра шире.
Блок управления я располагаю под телескопом либо на полке на треноге. Соответственно, длина кабеля БУ – двигатель должна быть около 1м. Кабель 4-х жильный, с сечением достаточным для тока до 2А. Можно сплести самостоятельно.
Пульт дистанционного управления
Опять-таки, можно выбирать любой корпус, лишь бы удалось разместить внутри печатную плату. Рекомендую сначала подготовить печатную плату, а потом выбирать корпус.
Отдельное слово о печатной плате. Мне очень не хотелось заниматься разводкой печатной платы, поэтому я взял готовую макетную плату под пайку ДИП-1М, отрезал от нее четверть под А4988, а остальное использовал для пульта ДУ.
На этом на сегодня все. Полная спецификая на выбронные компоненты доступна тут.
Принципиальная схема приведена тут и в первой части.
В следующей части доберемся до кода микроконтроллера и кода панели управления под Windows.
Автор: alex_flyeye