Перейти к содержанию

Скетч Для Управления Телескопом


Рекомендуемые сообщения

Здравствуйте.

Для имеющегося телескопа хочу собрать систему управления по двум осям монтировки. Для этого приобрел Ардуино-УНО R3, два драйвера на a3967, джойстик и пару шаговых моторов.

Хочу сделать следующее - при помощи джойстика будут осуществляться повороты трубы телескопа (вверх/вниз, вправо/влево), для наведения. При этом, на каждую ось монтировки будет установлено по одному мотору, вращающемуся в обе стороны. Нажатие на кнопку джойстика - режим "стоп" для обоих моторов. Нажатие еще на одну дополнительную кнопку включает один двигатель с заданной скоростью для ведения за объектом наблюдения.

Проблема в том, что я никогда не занимался программированием. Очень нужна Ваша помощь в написании скетча для моего проекта.

Ниже, примерная схема подключения узлов.

Жду Ваших советов!

post-190521-0-10633700-1429886946_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

"Проблема в том, что я никогда не занимался программированием." - займитесь. Никто не будет против.

"нужна Ваша помощь в написании скетча для моего проекта" - это не помощь, это работа. Пора бы научиться отличать. Предложения о работе в другой ветке.

Покажете свои исходники и задатите адекватные вопросы по ним - кто-то и здесь поможет.

Ссылка на комментарий
Поделиться на другие сайты

Я, купил шикарный "Бентли", машину никогда не водил, прав нет, ищу нахаляву водителя.

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Повторю еще раз. Это не помощь. Это работа вместо Вас.

И не жаба нас душит, а Ваше отношение к предмету. Не хотите изучать, просто забейте на это. Делайте на рассыпухе.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

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

Ссылка на комментарий
Поделиться на другие сайты

Верно, займет.

А пояснить найдется кому. Шла бы от Вас инициатива.

Я вот тоже не владею программированием современных устройств. Так и не лезу ведь со своими "хотелками". Есть некоторое желание, но нужно будет сначала вспомнить старое да подучить новое.

Чего и Вам советую. Удачи!

Ссылка на комментарий
Поделиться на другие сайты

Посоветовали... Это - тоже-самое, что совет "воспользоваться поиском...

Пробовал уже кучу разных скетчей, особенно понравились примеры с сайта http://www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html . В 5-ом примере, там, говорится как раз про управление телескопом, но надо вместо кнопок джойстик, переменный резистор не нужен. Кроме этого, с этого же джойстика надо управлять вторым двигателем.

Ссылка на комментарий
Поделиться на другие сайты

Снова здравствуйте. На этот раз я не с пустыми руками.

Нашел интересную статью http://pacpac.ru/for....php?f=23&t=233 - управление панорамной головкой.

Практически все подходит под мои требования.

Вот, чуть изменил скетч - теперь скорость регулируется от угла наклона джойстика. Переменный резистор мне нужен.

#include <AccelStepper.h>

#define MOTOR1_DIR_PIN 8

#define MOTOR2_DIR_PIN 11

#define MOTOR1_STEP_PIN 9

#define MOTOR2_STEP_PIN 10

#define MOTOR1_LS_PIN 6

#define MOTOR2_LS_PIN 7

#define MOTOR1_SPR 200 // Кол-во шагов на 1 оборот вала двигателя

#define MOTOR2_SPR 200

#define MOTOR1_MAX_SPEED 50000.0

#define MOTOR2_MAX_SPEED 50000.0

#define MOTOR1_INIT_SPEED -200.0

#define MOTOR2_INIT_SPEED 800.0

#define MOTOR1_JOY_IN 0 // Ось Y джойстика

#define MOTOR2_JOY_IN 1 // Ось X джойстика

#define SPEED_KNOB_IN 2 // Задатчик скорости - переменный резистор 4,7К

AccelStepper stpMotor1(AccelStepper::DRIVER, MOTOR1_STEP_PIN, MOTOR1_DIR_PIN);

AccelStepper stpMotor2(AccelStepper::DRIVER, MOTOR2_STEP_PIN, MOTOR2_DIR_PIN);

int nMotor1SP, nMotor2SP; // Задание направления от джойстика

int nSpeedSP; // Задание скорости от задачика

int nMotor1MV, nMotor2MV; // Задание скорости после ограничителя

void setup() {

phInit();

}

void loop() {

phGetCommand();

phMotorRun();

}

void phInit()

{

pinMode(MOTOR1_DIR_PIN, OUTPUT);

pinMode(MOTOR2_DIR_PIN, OUTPUT);

pinMode(MOTOR1_STEP_PIN, OUTPUT);

pinMode(MOTOR2_STEP_PIN, OUTPUT);

pinMode(MOTOR1_LS_PIN, INPUT_PULLUP);

pinMode(MOTOR2_LS_PIN, INPUT_PULLUP);

nMotor1MV = 0;

nMotor2MV = 0;

stpMotor1.setMaxSpeed(MOTOR1_MAX_SPEED);

stpMotor2.setMaxSpeed(MOTOR2_MAX_SPEED);

stpMotor1.setAcceleration(10.0);

stpMotor2.setAcceleration(10.0);

stpMotor1.setSpeed(0);

stpMotor2.setSpeed(0);

stpMotor1.setSpeed(MOTOR1_INIT_SPEED);

while (digitalRead(MOTOR1_LS_PIN) != 0) {

stpMotor1.runSpeed();

}

stpMotor1.setCurrentPosition(0);

stpMotor1.setSpeed(-MOTOR1_INIT_SPEED);

while (abs(stpMotor1.currentPosition()) < 400) {

stpMotor1.runSpeed();

}

stpMotor1.setCurrentPosition(0);

stpMotor1.setSpeed(0);

stpMotor2.setSpeed(MOTOR2_INIT_SPEED);

while (digitalRead(MOTOR2_LS_PIN) != 0) {

stpMotor2.runSpeed();

}

stpMotor2.setCurrentPosition(0);

stpMotor2.setSpeed(-MOTOR2_INIT_SPEED);

while (abs(stpMotor2.currentPosition()) < 2400) {

stpMotor2.runSpeed();

}

stpMotor2.setCurrentPosition(0);

stpMotor2.setSpeed(0);

return;

}

void phGetCommand()

{

nMotor1SP = analogRead(MOTOR1_JOY_IN) - 512; // Ось Y джойстика

nMotor2SP = analogRead(MOTOR2_JOY_IN) - 512; // Ось X джойстика

nSpeedSP = 1023 - analogRead(SPEED_KNOB_IN);

if (nMotor1SP > 100) {

nMotor1MV = nSpeedSP;

} else if (nMotor1SP < -100) {

nMotor1MV = -nSpeedSP;

} else {

nMotor1MV = 0;

}

nMotor1MV = nMotor1MV / 5;

if (nMotor2SP > 100) {

nMotor2MV = nSpeedSP;

} else if (nMotor2SP < -100) {

nMotor2MV = -nSpeedSP;

} else {

nMotor2MV = 0;

}

nMotor2MV = nMotor2MV * -1;

}

void phMotorRun()

{

stpMotor1.setSpeed(nMotor1SP); // Задаем скорость по оси Y

stpMotor2.setSpeed(nMotor2SP); // Задаем скорость по оси X

stpMotor1.runSpeed(); // Выполняем движение с заданной скоростью

stpMotor2.runSpeed();

}

Собрал схему:

image.jpg

Залил для тестирования, выложенный мной выше скетч - управление джойстиком не включается, пока не сработают концевики установленные на 6 и 7 контактах (схема управления Панорамной головкой). Затем моторы, скорость и направление вращения, управляются джойстиком как положено.

Но, в процессе тестирования, было замечено, что двигатели незаметно (медленно) вращаются - 1-ый против часовой стрелки (за 1,5 минуты - четверть оборота), 2-ой по часовой (четверть оборота - за 5минут).

Что может быть? Что то в скетче, или из-за джойстика (утечки)?

Теперь, что осталось доработать. В скетче осталось введены концевые выключатели на контактах 6 и 7 Ардуино. Мне они не нужны - как их убрать из скетча (а то, пока они не сработают, не включается управление джойстиком)?

Кроме этого, как в такой скетч внести старт/стоп одного двигателя, с помощью дополнительной кнопки, в одну сторону с одной скоростью (+светодиод индикации этого режима) ?

Ссылка на комментарий
Поделиться на другие сайты

Возникшие вопросы:

1. Как убрать из скетча концевые выключатели (а то, пока они последовательно не сработают, не включается управление джойстиком)?

2. Как устранить медленное вращение двигателей в режиме Стоп?

3. Как в скетч внести старт/стоп одного двигателя, с помощью дополнительной кнопки, в одну сторону с одной скоростью (+светодиод индикации этого режима) ?

Ссылка на комментарий
Поделиться на другие сайты

Вопрос со скетчен полностью решен!

Благо есть есть умные и безкорыстные люди (на другом сайте) которые любезно помогли быстро и качественно разрешить вопрос.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
  • 4 года спустя...

Да-а-а... Давненько я не заглядывал в эту тему... Хочу сообщить, эту систему - систему управления телескопом я всё-таки сделал!

1. На создание этой устройства меня сподвигла мысль собрать простую и достаточно удобную систему управления своей монтировкой DS EQ-3 с помощью микроконтроллера. Хотелось сделать её такой, чтобы можно было с комфортом визуалить и заниматься планетным астрофото. Поскольку пайкой заниматься не хотелось, взгляд упал на популярную аппаратную платформу Ардуино. Из её модулей и было решено собирать электрическую часть. Все электронные блоки и моторы были приобретены мною на интернет-портале eBay и Aliexpress.
Что касается пульта управления, то была идея сделать его простым в управлении, чтобы не делать "распальцовку" по кнопкам пульта, как на кодовом замке подъезда, а чтобы было пропорциональное управление джойстиком, то есть, чем дальше наклоняем ручку джойстика от центрального положения, тем выше скорость поворота монтировки на соответствующей оси. Что собственно и было реализовано при написании скетча.
В итоге, у меня получилась простая система практически ручного управления, безо всяких го-то и прочего.

Система выполняет следующие функции:
 1.   Управление обоими осями с помощью шаговых двигателей;
 2.  Управление скоростью поворота с помощью джойстика;
 3.   Режим ведения с астрономической скоростью для одной (полярной) оси.
 4.  Добавлено увеличение скорости в режиме наведения
  5.  Добавлено управление электрофокусером с помощью джойстика


Описание работы программы:
    Тут всё просто. После подачи питания монтировка переходит в режим дистанционного управления по командам от джойстика. Направление движения, а также скорость, задаётся ручкой джойстика. Возможно движение трубы телескопа одновременно по двум осям, правда скорость в этом случае ниже, чем  движение по какой-то одной выбранной оси.
Для того, чтобы включить режим ведения со звёздной скоростью для наблюдения за выбранным объектом (по оси RA), нужно нажать на кнопку джойстика. При этом загорается красный светодиод индикации на пульте. Во время работы этого режима повороты трубы, с помощью джойстика, отключаются. Чтобы вернуться к первоначальному управлению поворотами трубы телескопа нужно повторно нажать кнопку джойстика.

Итак, из чего всё состоит:
    Сердце всей системы – это, конечно же, плата Arduino UNO R3, собранная на микропроцессоре ATmega328P CH340.
Сигналы управления с неё поступают на два драйвера EasyDriver V44, собранные на микросхемах А3967, которые подходят к любым биполярным шаговым двигателям на ток до 750 мА.
По умолчанию (без установки перемычек) драйверы EasyDriver уже работают в микрошаговом режиме 1/8, который позволяет получать на моторе, делающего 200 полных шагов/оборот, 1600 микрошагов/оборот. Этот режим и был использован в работе устройства. Напряжение питания (от 6 до 30 В и ток 2А; в моём случае 28 В) на драйвера подаётся с внешнего блока питания по кабелю. Вообще, чем выше напряжение, тем выше крутящий момент на высоких скоростях.
Транзисторы, и особенно микросхемы драйверов во время работы существенно нагреваются – поэтому, в обязательном порядке, пришлось придумать их охлаждение. На корпуса этих радиоэлементов были приклеены радиаторы, а напротив самих плат драйверов, в крышку корпуса, врезан компьютерный кулер охлаждения.
Блок управления собран в корпусе из отжившего свой век компьютерного CD-рома. В нём размещены платы микроконтроллера, драйверов, стабилизатор на 12 вольт для питания кулера охлаждения (на фото его ещё нет), а также элементы коммутации.
        Все разъёмы управления и питания, а также индикация включения, вынесены на фронтальную панель корпуса - это 2 розетки под вилки RJ-11 4P-4C для подключения моторов и одна розетка под вилку RJ-45 8P-8C для подключения пульта ДУ. Здесь же находится 5мм гнездо для подачи напряжения питания (28 вольт) на драйверы ШД, кнопка включения/выключения, светодиод индикации включения, а также выходы платы микроконтроллера Ардуино - гнездо подачи напряжения питания (5 вольт) и розетка mini USB для подключения к ПК. Если Ардуино подключено к ПК через mini USB, то 5В через отдельное гнездо можно не подавать.
Блок управления с пультом соединяется кабелем Path Сord с разъёмами RJ-45 на концах.
Сигналы управления моторами передаются через кабели (удлинители) FD-6113 с разъёмами RJ-11 на концах, используемые в телефонной связи. Плюс этих кабелей, кроме того, что они оснащены удобными миниатюрными разъёмами в том, что они совершенно не замерзают на морозе и остаются гибкими - не «дубеют».

    Проводной пульт управления собран в корпусе вышедшего из строя радиотелефона Siemens. Отверстия оставшиеся от удалённых кнопок, дисплея и прочих внутренностей были заполнены клеем «холодная сварка». После того, как клей высох, корпус шлифовался и красился.
   Внутри корпуса пульта деталей разместилось совсем немного – плата с джойстиком, светодиод индикации режима «ведения со звёздной скоростью» и разъём RJ-45 для подключения кабеля. Ручка джойстика вынесена наружу корпуса через удачно расположенное отверстие вызывного динамика телефона - нужно было только удалить его решётку.
Режим «Стоп» включается в «нейтральном», среднем, положении ручки джойстика, т.е., не трогаем джойстик – телескоп не движется.
Слежение со звёздной скоростью (горит красный светодиод на пульте), включается при нажатии на среднюю кнопку джойстика.

    Повороты осей монтировки осуществляют биполярные шаговые двигатели Nema17 42х42мм, марка 17HS2408, рассчитанные на ток 600мА. Вращение от них на червячные приводы монтировки передаётся через одноступенчатые редукторы, выполненные из двух пар металлических шестерёнок. Малые шестерни, диаметром 10мм, имеют по 30 зубьев. Большие шестерни, диаметром 50мм, имеют по 168 зубьев. Передаточное отношение у таких пар шестерён редуктора получается - 5.6, что с червячными парами (по оси DEK - 88 зубьев, на RА - 138 зубьев) даст передаточное отношение 1:492.8 и 1:772.8 соответственно.

Расчёты для вставки в скетч (у всех, в зависимости от применямого железа,т.е. шестеренок, они будут разные) ЭТО ВАЖНО!

   Количество шагов для установки в скетч (для обеспечения звёздной скорости) #define MODE2_MAX_SPEED 14.31 рассчитывалось так (в расчётах даны цифры монтировки DS EQ-3):
1. Сначала считаем количество импульсов на оборот оси RA монтировки
- передаточное отношение основной червячной пары (138) умножается на передаточное число редуктора (5.6), умножается на число шагов ШД на полный оборот (200), и ещё умножается на кратность микрошага - 8.
138 х 5.6 х 200 х 8 = 1 236 480

2. Период обращения Земли - 23 часа 56 минут 4 секунды, это будет 1 градус в 4 минуты времени, или же 15 угловых секунд в секунду времени.
Пересчитываем в градусах, минутах и секундах, на сколько угловых секунд или их долей RA будет смещаться на один тик шаговика (учитывая микрошаг, редуктор и саму ЧП), делим 15" на получившееся число. Это и будет кол-во импульсов в секунду.

360° это 360 х 60 = 21 600 угловых минут или 21 600 х 60 = 1 296 000 угловых секунд.
Значит, с такой редукцией, на таком микрошаге, получается чуть больше одной угловой секунды на один микрошаг шаговика, а именно 1 296 000/1 236 480 = 1.048136645962733 угловых секунды на один "тик" на входе STEP драйвера. Это и есть разрешающая способность монтировки по ведению.
То есть, для 15 угловых секунд в секунду времени нужно сделать 15/1.048136645962733 = 14.31 импульса.

02 - комплектующие.JPG

03 - подготовка корпуса.jpg

04 - корпус.jpg

05 - внутренности пульта.JPG

06 - подготовка корпуса пульта.jpg

07 - пульт-итог.jpg

08 - моторы и шестерни.JPG

09 - подгонка площадок.JPG

10 - монтировка с установленными моторами 1.jpg

11 - монтировка с установленными моторами 2.jpg

01 - принципиальная схема.jpg

2. Через несколько месяцев схема претерпела изменения - Добавлено увеличение скорости в режиме наведения

Выбрать только один из вариантов подключения!
В схема показано соединение контакта 12 ардуино с контактами драйверов MS1, что позволит получить максимальную скорость предварительного наведения 4,66 град/сек; моторы при этом будут работать в микрошаговом режиме 1/4.
- Если выполнить соединение с контактами драйверов MS2,то  это позволит получить максимальную скорость предварительного наведения 9,32 град/сек; моторы при этом будут работать в микрошаговом режиме 1/2.
- Если выполнить соединение с контактами драйверов MS1 и MS2, то это позволит получить максимальную скорость предварительного наведения 18,64 град/сек; моторы при этом будут работать в полношаговом режиме, т.е. 1/1.
Данный режим бОльшей скорости наведения включается дополнительной кнопкой В1 подключенной к 7 контакту ардуино. Эту кнопку можно разместить на пульте, чтобы оперативно переключаться с одной скорости на другую. Индикация осуществляется светодиодом HL2.
По умолчанию (кнопка В1 не нажата) моторы работают в микрошаговом режиме 1/8, и максимальная скорость наведения при этом 2,33 град/сек.

принципиальная схема 2.jpg

3. И, наконец, последняя доработка,  добавлено управление электрофокусером с помощью джойстика

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


Скетчи и библиотека AccelStepper находятся в одном архиве:
Чтобы скетч скомпилировался, надо скопировать библиотеку AccelStepper в папку libraries в директории, в которой у вас хранятся скетчи для Arduino.

Номера скетчей соответствуют номеру версии данной модели систему управления.

принципиальная схема 3.jpg

 

MONTI_1.rar

MONTI_ 2.rar

MONTI_3.rar

Изменено пользователем Oleg1601
Ссылка на комментарий
Поделиться на другие сайты

  На Астрофоруме есть несколько тем по управлению монтировками с помощью Arduino:

Универсальная система управления телескопом на Arduino

Очередная система цифровых кругов (DSSC) на Ардуино

Простая система управления монтировкой на Arduino

GOTO на Arduino: практическая реализация

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

Ссылка на комментарий
Поделиться на другие сайты

"Простая система управления монтировкой на Arduino", что вы привели в качестве примера - это как раз моя разработка, а "Универсальную" парень делал с оглядкой на мою, а затем очень сильно развил и расширил её возможности, введя GOTO и др.

Изменено пользователем Oleg1601
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...