Pull to refresh

Электрофокусер на базе отладочной платы Arduino Uno, часть 2

Developing for Arduino *
Продолжение, начало тут.

Определение исходных требований к устройству. Выбор «железа»


Дабы не решать задачу совсем в общем виде, я задался определенными требованиями исходя из общих соображений (бюджета, простоты или сложности покупки комплектующих, сложности в реализации или ожидаемых проблемах в эксплуатации). В то же время, изложение данных соображений позволит сразу перевести возможный диалог в конструктивное русло, а желающему использывать мой опыт — подскажет на какие детали надо обратить внимание. Итак, приступим.

Общие требования


Решение должно быть:
  • простым и не дорогим;
  • построенным на доступных компонентах;
  • устройство должно быть достаточно надежным, так как я планирую использовать его на выездах (то есть в крепком корпусе, разъемы навинчивающиеся и т.д.);
  • устройство должно быть ремонтопригодным;
  • разработка не должна требовать от меня действительно глубоких знаний в электронике и схемотехнике и сильно выходить за рамки школьного курса;
  • разработка не должна затянутся не то что на месяцы, а даже на недели;
  • я не хочу заниматься разводкой, травлением плат и т.п — хочется максимально использовать готовые компоненты, желательно в виде модулей.
.

Функционал


Основные функции устройства:
  • вращение против часовой стрелки с заданной скоростью(тактовая кнопка, пока нажато — вращаем)
  • вращение по часовой стрелке с заданной скоростью (тактовая кнопка, пока нажато — вращаем)
  • регулировка скорости вращения (потенциометр)
  • команда «освободить двигатель» – снять напряжение с двигателя (для экономии ресурса АКБ и для охлаждения двигателя, при необходимости)
  • Кроме того, полезно вставить функцию автоматического снятия напряжения с двигателя если фокусером не пользуются продолжительное время (скажем, более 10 минут) – тут возможны варианты;
  • Хорошо бы иметь на пульте ДУ простую индикацию величины скрорости вращения, например яркостью светодиода.


Исходя из способа применения, необходимо иметь как минимум два варианта управления фокусировочным устройством:
  • с пульта управления при работе непосредственно у телескопа (в т.ч. при визуальных наблюдениях или при грубой фокусровке по изображению на дисплее цифровой камеры) — то есть меня вполне устроит кнопочный пульт на коротком кабеле ;
  • с помощью собственного ПО с ноутбука под OS Windows, значит блок управления фокусером должен подключаться к ПК, например по USB;
  • опционально, в будущем — с ПК с помощью ASCOM-драйвера.


При удаленной работе с ПК хочется иметь возможность так же запоминать положение фокусера и переходить к заданному положению. Это связано с тем, что при смене окуляра меняется фокусное расстояние и процедуру фокусировки нужно проводить заново. Хочется сохранить положения фокусера для каждого окуляра в виде пресетов и быстро между ними переключаться при смене окуляра. Конечно придется дофокусировать телескоп, но этого в любом случае не избежать, так как при разной температуре фокусное расстояние может немного отличаться. Исходя из этого, прошивка микроконтроллера должна считать шаги (учитывая режим микрошага) и передавать текущее положение на ПК, а так же прокручивать фокусер до заданной позиции.



Двигатель и драйвер


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

Подключение двигателя - биполярное
Биполярное. Это объясняется тем, что именно биполярное подключение дает максимальный крутящий момент на низких оборотах. В случае, если используется двигатель с 6-ю отводами, необходимо использовать крайние, средние заизолировать. При этом необходимо учитывать, что сопротивление обмоток при этом возрастает в 2 раза, соответственно ток падает в два раза, соответственно падает крутящий момент.


Крайне важный параметр, по которому нужно выбирать двигатель – необходимый крутящий момент двигателя. В моем случае, максимальный крутящий момент, который мне удалось зафиксировать составил ~2 кг/см при комнатной температуре.
Желая иметь некоторый запас, я задался минимальным крутящим моментом в 3 кг/см.

Как измерить крутящий момент без измерительного оборудования в домашних условиях.
Сделать это достаточно просто. Для этого необходимо к валу фокусировочного устройства прикрепить рычаг (можно использовать само фокусировочное колесо, зацепившись за его край) и используя динамометр измерить силу, при которой происходит «срыв» положения вала. Для этого плавно увеличивая усилие тянем динамометр строго перпендикулярно оси рычага (естественно в плоскости рычага, перпендикулярно оси вала фокусера) и ловим момент начала вращения.

Схема 2


Не забываем привести показания динамометра к требуемым единицам и умножить на плечо рычага (обычно крутящий момент указывается в Н*м или в кг*см). Что делать, если нет динамометра? Взять безмен, кухонные весы или сделать самостоятельно с помощью пружины и линейки, например, так:


В последнем случае необходима калибровка, которую можно сделать используя бутыль с водой (1л=1кг). Точность конечно не высокая, но для нашей задачи вполне достаточная.

Важно отметить, что сила трения на подшипниках или червячном механизме фокусера может сильно зависеть от ориентации последнего в пространстве (на телескопе), а также от веса, закрепленного на фокусере оборудования (адаптеры, поворотная призма, окуляр, цифровая камера и т.п.). Поэтому я рекомендую навесить максимум оборудования и провести замеры (по 2-3 раза) в нескольких положениях (как минимум в двух, когда оптическая ось фокусера ориентирована вертикально и горизонтально).
Кроме того, надо иметь ввиду, что на морозе сила трения может заметно увеличтся, соответственно потребуется больший крутящий момент.

UPD! Еще один очень важный момент — обычно производители указывают номинальный крутящий момент. То есть момент, при номинальном напряжении, номинальном токе и полном шаге! Ниже станет ясно, что для достижения необходимой точности нужно пользоваться режимом микрошага, при котором крутящий момент существенно падает! Поэтому выбирать двигатель по величине крутящего момента обязательно нужно с запасом.



Следующий важный параметр – точность позиционирования. Так как я уже решил, что буду использовать шаговый двигатель, то вопрос ставится так: какой шаг должен быть у двигателя и нужно ли мне использоваться драйвер с поддержкой микрошага? Большинство доступных двигателей имеет шаг 1.8° на оборот (или 200 шагов), но так же доступны модели с шагом 0.9° (400 шагов на оборот), 7.5° и другие. Данный параметр так же индивидуален. В моем случае зона фокусировки получилась порядка 15°.

Измерение угла фокусировки
Для оценки точности позиционирования необходимо определить на какой угол мы поворачиваем вал фокусировочного устройства при фокусировке. Для этого на ручку фокусера я нанес метку – нуль-пункт. Далее, используя маску Бахтинова сфокусировался по звезде. Померил угол a1 — положение метки относительно отвеса транспортиром. После чего расфокусировал изображение (в любую сторону) так, чтобы отсутствие фокуса было хорошо заметно (средний луч существенно сместился в сторону от центра симметрии дифракционной картины). Измерил угол a2 – второе положение метки относительно отвеса. Разность значений (a1-a2) по модулю умноженная на 2 – и есть зона фокусировки.

Схема 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 цифровых выходов микроконтроллера.

Пропуск шага и низкая точность в микрошаговом режиме - мифи и реальность
Часто можно услышать, что ШД в режиме микрошага обязательно пропускает шаги, неточно позиционируется, крутящий момент катастрофически падает и т.п., и что мол вообще не надо их использовать. Потратив некоторое время на этот вопрос у меня сложилось впечатление, что это распространенное заблуждение. Подтверждением этому служат как мои собственные эксперименты, так и разнообразные источники в сети. Не являюсь специалистом в данной области, постараюсь обобщить собранную информацию (теоретическую и экспериментальную), предоставив читателю самому делать окончательный вывод. Итак, наиболее распространенные претензии ка ШД и микрошагу:
  1. В режиме микрошага очень сильно падает крутящий момент. Да, действительно, популярные теоретические модели ШД дают существенное падение крутящего момента при переходе к микрошагу. Причем чем мельче шаг, тем больше потеря. В то же время, в ряде источников (например тут и тут). Я тоже не заметил, чтобы в моих экспериментах крутящий момент падал даже в 3 раза, хотя работаю в режиме 1/16 и 1/32 микрошага.
  2. В режиме микрошага ШД обязательно пропускает шаги.
    Давайте разберёмся, по каким причинам может произойти пропуск шага. Основные причины, указываемые производителями:
    • Недостаточное питание ШД. На драйвере А4988 есть регулятор (ограничитель) силы тока, покрутите его и сразу увидете как недостаточный ток (а по сути потеря крутящего момента) сказывается на микрошаге. Уменьшая силу тока постепенно можно вместо 16 микрошагов получить сначала 8, а потом стабильные 4. Это объясняется тем, что крутящий момент в разных фазах полного шага тоже разный;
    • Слишком большой крутящий момент нагрузки. То есть крутящий момент, приложенный к двигателю, заведомо больше выдаваемого данным двигателем в определенных фазах — в этот момент имеем пропуски;
    • Слишком высокая скорость вращения. ШД не успевает шагать. Для данной задачи не актуально;
    • Слишком быстрое торможение/ускорение. В данной задаче не актуально;
    • Неисправный двигатель. И такое тоже бывает.




Кратко и очень ёмко про ШД изложено тут, тут и очень хорошо тут

Чаще всего проблема пропуска шагов, это не проблема ШД, а проблема либо недостаточного питания, либо проблема «перегруза». Первая проблема решается довольно легко выбором правильно блока питания и выставлением правильного положения на ограничителе А4988. Вторая требует аккуратного рассмотрения всех вариантов нагрузки фокусера. Так же необходимо решать проблему увеличения необходимого для проворота крутящего момента из-за роста силы трения (на валу ШД и на фокусере) при низких температурах. Решать ее можно по-разному. Можно взять более мощный двигатель, а можно использовать морозостойкую смазку.

Поэтому я считаю, что для данной задачи ШД подходит практически идеально, а проблема пропуска шагов — это проблема правильного подбора ШД и режима работы. Так, чтобы мощности ШД хватало для того, чтобы во всех ситуациях выдавать достаточный крутящий момент.


Питание


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 мм соответственно. Так же потребуется знать крутящий момент.


Крепление двигателя к фокусеру – задача сугубо индивидуальная. Я решил ее следующим образом: К двигателю прикрутил алюминиевый уголок (специально вырезанный), а в корпусе фокусера прорезал щель, куда этот уголок вошел. Этого уже достаточно, чтобы исключить проворот, но не достаточно, чтобы исключить люфт. Для исключения люфта я взял трансформаторное кольцо, приклеил к внутренней стороне полоску медицинского ждут и закрепил на фокусере. В алюминиевом уголке просверлил еще одно отверстие по месту и стянул хомут болтом. Люфт ушел, хотя конечно вся конструкция в целом не жесткая: у меня получилась одна точка опоры на фокусере + крепление на вал через гибкую муфту. Соответственно на муфте есть небольшая подвижность. На практике, данная подвижность не мешает, но может «съесть» часть крутящего момента на деформацию муфты.
Данный вопрос является творческим и очень индивидуальным.
image

Платформа для блока управления



На самом дела, тут конечно вариантов масса, я выбрал Arduino Uno.

Почему я остановил свой выбора на Arduino Uno или Ода современной модульной электронике
  • Доступно;
  • Не дорого;
  • Бесплатная среда разработки;
  • Программирование на С++;
  • Популярная платформа, поддержка любителей по всему миру;
  • Поддержка RS232 – при подключении отладочной платы микроконтроллера (USB) к ПК в системе появляется появляется COM-порт. Поддержка работы с RS232 со стороны программы, выполняемой микроконтроллером так же имеется, причем с точки зрения программирования все ОЧЕНЬ просто.

Ну и самое главное, Arduino Uno имеет достаточно кол-во входов и выходов и полностью готов к использованию — не требуется никакой допонительной разводки, бери и программируй.

Причем вариантов реализации масса, как Arduino-совсместимых, так реализованных на другой архитекктуре, со своими средами разработки и своими сообществами. На Arduino Uno конечно же свет клином не сошелся. Мы живем в удивительное время, когда пользуясь школьными знаниями на базе модульной электроники можно решать самые разные задачи, механизируя и автоматизируя различные процессы — телескопы, аквариумы, оранжереи, укачивание ребенка в люлке или управление высокоточными процессами. Непонятная и нелепая концепция «умного дома» ограниченная регулировками климата, освещения и т.п. наконец обретает какой-то практический смысл, дает какое-то действительно новое качество, которого очень сложно или вообще нельзя было добиться «вручную». Причем на уровне, доступном очень многим. И это просто пкрекрасно!


Выбор блока питания


Очень популярное напряжение – 12В и именно на нем я и остановился. Оно подходит для Arduino; на рынке доступно много шаговых двигателей, рассчитанных на это напряжение; есть масса блоков питания, АКБ, можно подключаться напрямую от прикуривателя автомобиля.
Для своего устройства я остановился на блоке питания 12В и 25 ватт.

Чуть больше деталей..
Выбор блока питания осуществляется по двум основным параметрам – напряжение и мощность. В моем случае U=12В. Мощность можно оценить зная максимальный ток как I*U. Исходя из 2А на двигателе и напряжении 12В получаем 24 ватт.
С АКБ аналогично, но вместо мощности имеет смысл смотреть емкость и рабочий ток. Ток – до 2А, емкость исходя из 2-3 часов работы – скажем 4-5 А*часа. На практике на фокусировку суммарно в течении ночи уходит вряд ли больше часа, так что емкости 2 А*часа тоже должно быть достаточно.
Следуя условию общего питания для Arduino и двигателя, я объединил шины GND и VIN платы микроконтроллера Arduino c шинами GND и VMOT драйвера А4988 соответственно (см. схему). При этом на корпус выведен второй разъем питания, аналогичный разъему питания Arduino. Это сделано для того, чтобы в случае замены двигателя на более мощный с другим питанием (например, 24В) можно было без особых проблем разделить шины VIN и VMOT и подать на двигатель нужное напряжение.


Конструктив


Так как изначально при разработке устройства я ставил условие использования стандартных компонент, то все комплектующие из спецификации, приведенной ниже, доступны в магазинах, а подавляющее большинство можно заказать в Интернете.
Радости новичка, или о чем не пишут в даташитах...
Хочу только напомнить одну пословицу – «7 раз отмерь, один – закажи» :) После сборки у меня осталась кучка запасных деталей, а вот некоторые пришлось заказывать по второму разу :)
Отдельно хочу сказать пару слов о размещении разъемов в корпусе и кнопок на макетной плате. При размещении разъемов учитываете, что корпус будет закрываться и размещайте разъемы так, чтобы при они не мешали при сборке. При размещении кнопок учитывайте, что на кнопку после сборки одевается колпачок, и этот колпачок может быть шире, чем сама кнопка. Поэтому если кнопки поставить на плате слишком близко друг к другу – колпачки придется подпиливать :) Так же стоит обратить внимание не высоту кнопок – они должны достаточно выходить из корпуса, что бы на них можно было одеть колпачок (высоту кнопок стоит учесть при заказе корпуса пульта ДУ).


Блок управления двигателем


Итак, мозг нашего устройства – это блок управления двигателем. Дабы не загромождать и не утяжелять фокусер, плату микроконтроллера Arduino Uno и драйвер А4988 я вынес в отдельный стандраный промышленный корпус. Соответственно, на корпус выведены следующие разъемы:
  • Питание (штатный разъем Arduino и отдельный разъем для независимого питания двигателя при необходимости)
  • Разъем силового кабеля двигателя
  • Разъем USB платы микроконтроллера для подключения к ПК и удаленного управления
  • Разъем пульта ДУ





Как показал опыт, я выбрал не самый удачный, хотя и весьма качественный корпус. Можно брать аналогичный, но на пару сантиметров ниже, и на 1-2 сантиметра шире.
Блок управления я располагаю под телескопом либо на полке на треноге. Соответственно, длина кабеля БУ – двигатель должна быть около 1м. Кабель 4-х жильный, с сечением достаточным для тока до 2А. Можно сплести самостоятельно.

Пульт дистанционного управления


Опять-таки, можно выбирать любой корпус, лишь бы удалось разместить внутри печатную плату. Рекомендую сначала подготовить печатную плату, а потом выбирать корпус.
Отдельное слово о печатной плате. Мне очень не хотелось заниматься разводкой печатной платы, поэтому я взял готовую макетную плату под пайку ДИП-1М, отрезал от нее четверть под А4988, а остальное использовал для пульта ДУ.


На этом на сегодня все. Полная спецификая на выбронные компоненты доступна тут.

Принципиальная схема приведена тут и в первой части.
В следующей части доберемся до кода микроконтроллера и кода панели управления под Windows.
Tags:
Hubs:
Total votes 26: ↑25 and ↓1 +24
Views 29K
Comments 16
Comments Comments 16

Posts