Скетч для управления телескопом

Oleg1601
Offline
Зарегистрирован: 24.04.2015

 

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

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

[url=http://postimg.org/image/vwnsojqa3/][img]http://s17.postimg.org/vwnsojqa3/stepper_joystick_bb_1.jpg[/img][/url]

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

Oleg1601
Offline
Зарегистрирован: 24.04.2015
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а железо уже есть?

Oleg1601
Offline
Зарегистрирован: 24.04.2015

Да, все есть.

http://postimg.org/image/h2osahsh3/

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а пульт зачем?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

открываешь примеры к stepper motor (библиотека такая) подключаешь все правильно. для драйверов внешнее питание не забудь и тренируешься управлять шаговиками. не сложнее чем: иди туда на 3 шага, и туда на 8 и стой там

Oleg1601
Offline
Зарегистрирован: 24.04.2015

jeka_tm пишет:

а пульт зачем?

Да просто купил. Применять его не собираюсь (пока).

Oleg1601
Offline
Зарегистрирован: 24.04.2015

jeka_tm пишет:

открываешь примеры к stepper motor (библиотека такая) подключаешь все правильно. для драйверов внешнее питание не забудь и тренируешься управлять шаговиками. не сложнее чем: иди туда на 3 шага, и туда на 8 и стой там

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

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хорошо. analogRead уже использовал? если нет научись

vov4ik
Offline
Зарегистрирован: 10.09.2013

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

art100
Offline
Зарегистрирован: 09.03.2014

1.Джойстик должен работать как 4 кнопки. Даже если ардуиновский это переменные резисторы плевать программой обрабатываем как кнопки

2.шаговые моторы твои думаю 200 шагов на оборот

Логика

палку заломал

шаговый мотор меееелкккккиииимммиии шажками начал двигать железо

если сегодня соками не напьюсь с другом может напишу код для своего Х У станка с ЧПУ может выложу нужный вам кусок

тут где-то лежит на форуме мой кусок кода нужный вам джойстик-шаговики

а пока посмотрите милицейскую мигалку на этом железе

https://yadi.sk/i/wVJKQNy8gDoAy

ТС думай над тем

как механику прикрутишь

как 12 вольтовый блок питания

как плату макетку закреплять на своем чудо оргстекле

 

Oleg1601
Offline
Зарегистрирован: 24.04.2015

vov4ik пишет:

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

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

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

Oleg1601
Offline
Зарегистрирован: 24.04.2015

art100 пишет:

1.Джойстик должен работать как 4 кнопки. Даже если ардуиновский это переменные резисторы плевать программой обрабатываем как кнопки

Можно кусок скетча, как это выглядит?

art100 пишет:

 

2.шаговые моторы твои думаю 200 шагов на оборот

Да, на 200 шагов

art100 пишет:

 

...  ТС думай над тем

как механику прикрутишь

как 12 вольтовый блок питания

как плату макетку закреплять на своем чудо оргстекле

Чудо оргстекла не будет - все платы будут размещены в другом корпусе. Блок питания на 12В имеется. На счет механики уже все решено-тут вопросов нет.

 

art100
Offline
Зарегистрирован: 09.03.2014

[Цитата=Oleg1601]

[Цитата=art100]

1.Джойстик должен работать как 4 кнопки. Даже если ардуиновский это переменные резисторы плевать программой обрабатываем как кнопки

[/Цитата]

Можно кусок скетча, как это выглядит?

[Цитата=art100]

 

2.шаговые моторы твои думаю 200 шагов на оборот

[/Цитата]

Да, на 200 шагов

[Цитата=art100]

 

... ТС думай над тем

как механику прикрутишь

как 12 вольтовый блок питания

как плату макетку закреплять на своем чудо оргстекле

[/Цитата]

Чудо оргстекла не будет - все платы будут размещены в другом корпусе. Блок питания на 12В имеется. На счет механики уже все решено-тут вопросов нет.

 

[/Цитата]

вот возьми за основу мой тестер драйверов шаговиков волшебной палкой

повырезай лишнее

у волшебной палки на одной оси 5 положений прграммируй

левая максимальная

левая медленная

не реагируем на центральное дрожание

правая медленная

правая максимальная

короче дарю код я его тут гдето выкладывал но найти уже не могу

правь

// art100 писать 20140523 теста шаговых двигателей A4988 pololulu
// булавки---------------------------------------
// джойстик--------------------------
инт joypinx = А0; //пин джойстика 
инт joypiny = А1; //пин джойстика
инт joypinf = А2; //пин джойстика
// лазеры, светодиоды----------------
инт сд3 = А4;//3; // 
// шаговые двигатели------------
инт dir_Pin1 = 4;//
инт stepPin1 = 3;//
#определить microstep16pin А5//
#определить sleeppin 2//
// константы для джойстика-------------------------------------------
инт sp1table = 120;// a4988 1000;//медленный
инт sp2table = 10;// a4988 10000;//скорость a3987
инт joyx = 0; //джойстик
joyy Тип int = 0; //джойстик
инт joyf = 0; //джойстик
инт stepxcor =10;// для коррекции >0<
инт stepycor =10;// для коррекции >0<
// по USB------------------------------
инт commandusb = 0; //
//---------------------------
// 1 pololulu A4988 stepper мотор-------------------------------
пустота stepA4988(логическое каталог1,steps1 инт,инт msec1){
 digitalWrite(dir_Pin1,каталогов dir1); // направление
 для(Тип int я=0;я<steps1;я++){
 digitalWrite(stepPin1,высокая); delayMicroseconds(msec1);
 digitalWrite(stepPin1, низкий); delayMicroseconds(msec1);
}
}
//--------------------------------------------------------------------------------------
недействительными установки(){ 
 pinMode(joypinx, вход); //джойстик х
 pinMode(joypiny, вход); //по Y джойстика 
 pinMode(joypinf, INPUT_PULLUP); //джойстик pin пожара
 pinMode (сд3,выход); //лазера
 digitalWrite(сд3, высокий); //
 pinMode(dir_Pin1, выход);//Таблица
 pinMode(stepPin1, выход);//Таблица 

 pinMode(microstep16pin, выход);
 digitalWrite(microstep16pin, высокий); //для 16microstepping высокого, низкого уровня микрошаговый
 pinMode(sleeppin, выход);

Серийный.то begin(9600);
} 
//======================================================================
недействительными петля(){
 // джойстик----------------------------------------------------------
 joyx = analogRead(joypinx)>>7; // 3 кнопка 0/4/7 0.1.2.3.4.5.6.7 sanks для скорости сдвига реестра Dimax
 joyy = analogRead(joypiny)>>7; // 3 кнопка 0/4/7 0.1.2.3.4.5.6.7 sanks для скорости сдвига реестра Dimax 
 // Серийного.печать('х');серийный.печати(joyx);серийный.печать(';'); серийный.печать('у');серийный.печати(joyy);серийный.код println(';'); //тест
если(joyx==0){stepA4988(ложь,stepxcor,sp1table);}//скорость
 если(joyx==7){stepA4988(правда ,stepxcor,sp1table);}//скорость 
если(joyy==0){stepA4988(ложь,stepxcor,sp2table);}//скорость
 если(joyy==7){stepA4988(правда ,stepxcor,sp2table);}//скорость 
 // Сид--------------------------------------------------------
 если(digitalRead(joypinf)==низкий (Low) { digitalWrite(сд3), низкая); } // лазера для работы
 еще { digitalWrite(сд3,высокая); } // лазера для работы
 Серийный.напечатать("joyx joyy sp1table sp2table: "); серийный.печати(joyx);серийный.печати(joyy);серийный.код println(";");//последовательный.печати(sp1table);серийный.печати(sp2table);серийный.код println(";");//
 // джойстик ---------------------------------------------------------- 

 // по USB----------------------------------------------------------------
 если (серийный.лучшие() > 0) { 
 commandusb = серийный.прочитать();
 если (commandusb==76 ) {digitalWrite(сд3, высокая);} // лазера на Л
 если (commandusb==108) {digitalWrite(сд3), низкая);} // выключение лазера л
 если (commandusb==45 ) {stepA4988(правда, stepycor,sp1table);} // вниз+ 
 если (commandusb==43 ) {stepA4988(ложь,stepycor,sp1table);} // до -
 Серийный.напечатать("commanda по USB получил: "); серийный.код println(commandusb);
}
 // по USB ---------------------------------------------------------------- 
} 

// digitalWrite(STEP_PIN_0, высокий);
// digitalWrite(STEP_PIN_1, высокий);
// задержки(1);
// digitalWrite(STEP_PIN_0, низкий);
// digitalWrite(STEP_PIN_1, низкий);
// задержки(1);

//========================================================================
// шаговый двигатель 1 стол для A3987 easydriver 2 булавки------------------------------------
//недействительными шаг1(логическое каталог1,steps1 инт,инт msec1){
// digitalWrite(dir_Pin1,каталогов dir1); // направление
// для(Тип int я=0;я<steps1;я++){
// digitalWrite(stepPin1,высокий); delayMicroseconds(msec1);
// digitalWrite(stepPin1, низкий); delayMicroseconds(msec1);
// }
//}
// шаговый двигатель 2 лазерная для A3987 easydriver 2 булавки------------------------------------
//недействительными шаг2(логическое директория dir2,steps2 инт,инт msec2){
// digitalWrite(dir_Pin2 директория dir2); // направление
// для(Тип int я=0;я<steps2;я++){
// digitalWrite(stepPin2,высокая); delayMicroseconds(msec2);
// digitalWrite(stepPin2, низкий); delayMicroseconds(msec2);
// }
//}
// для L298 4 булавки--------------------------
//// для (о=0; о<stepsmotor1; О'++) { // 360 градус Таблица
// для (м=0; м<step1Laser/8; м++) { // 200step/8=25step 25step*1.8 градуса/шаг = 45 градус сканирования низкая 
// digitalWrite(сд3, высокий); //лазер и вниз
// //myStepper2.Шаг(+1);
// Шаг 2(правда, steptable,speetable);
//// задержка(100); //для компьютерных тормоз 0,01 шведских крон 
// задержка(500); //для компьютерных тормоз 0,01 шведских крон 
//// задержка(1000); //для компьютерных тормоз 1 шведская крона
// } 
// //возвращение на старт
// для (м=0; м<step1Laser/8; м++) { // 200step/8=25step 25step*1.8 градуса/шаг = 45 градус вернуть
// digitalWrite(сд3), низкая);
// //myStepper2.шаг(-1); // лазер вверх
// //myStepper1.Шаг(+1); // Таблица 45 градус
// Шаг 2(ложь,steptable,speetable);
// Шаг 1(правда, steptable,speetable);
// } 
// задержка(1000); //для компьютерных тормоз 1 5 шведских крон

//------------------------------------------
//Дек Гольца д ч д ч д ч
//0 нуль 32 СП 64 @ 96 ` 
//1 33 ! 65 в 97 в 
//2 34 " 66 Б, 98 б
//3 35 # 67 с 99 с 
//4 36 $ 68 д 100 д 
//5 37 % 69 Е 101 е 
//6 38 & 70 Ф 102 Ф 
//7 39 ' 71 г 103 г 
//8 40 ( 72 ч 104 ч 
//9 вкладка 41 ) 73 я 105 я 
//10 линия 42 * 74 106 Дж Дж 
//11 43 + 75 штук 107 к 
//12 44 , 76 Л 108 л 
//13 возв 45 - 77 М 109 м 
//14 46 . 78 по N 110 по N 
//15 47 / 79 111 О'О' 
//16 48 0 80 стр. 112 стр. 
//17 1 49 81 113 Кью Кью 
//18 50 2 82 Р 114 р 
//83 19 51 3 ы ы 115 
//20 52 4 84 Т Т 116 
//21 53 5 85 117 ед ед 
//22 6 54 86 118 с V с V 
//23 55 7 87 Вт 119 Вт 
//24 8 56 88 х 120 х 
//25 57 89 9 по Y 121 Y в 
//26 58 : 90 122 Z в Z в 
//27 59 ; 91 [ 123 { 
//28 60 < 92 \ 124 | 
//29 61 = 93 ] 125 } 
//30 62 > 94 ^ 126 ~ 
//31 63 ? 95 _ 127 
//----------------------------------------

 

в железе этот тестер выглядил где-то вот так

http://yadi.sk/d/LYEIqRSMSENTT

или так

http://yadi.sk/d/sydH7XAzR5NQQ

покажи свою механику

Oleg1601
Offline
Зарегистрирован: 24.04.2015

Даааа, тут без бутылки не разберешься... особенно непрофессионалу.

Но, тем не менее, спасибо!

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Перевожу:

недействительными установки()
void setup ()

Серийный.то begin(9600);
Serial.begin ( 9600 );

недействительными петля() 
void loop()

 

Oleg1601
Offline
Зарегистрирован: 24.04.2015

 

Загрузил ваш скетч - пишет "Ошибка компиляции"

sketch_apr28b.ino:57:1: error: stray '\' in program

sketch_apr28b.ino:57:1: error: stray '\' in program
sketch_apr28b.ino:58:1: error: invalid digit "8" in octal constant
sketch_apr28b.ino:58:1: error: stray '\' in program

Oleg1601
Offline
Зарегистрирован: 24.04.2015

Нашел интересную статью http://pacpac.ru/forum/viewtopic.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();
}

 

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

http://postimg.org/image/um57qrgqr/

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

Возникшие вопросы:
1. Как убрать из скетча концевые выключатели (а то, пока они последовательно не сработают, не включается управление джойстиком)?
2. Как устранить медленное вращение двигателей в режиме Стоп?
3. Как в скетч внести старт/стоп одного двигателя, с помощью дополнительной кнопки, в одну сторону с одной скоростью (+светодиод индикации этого режима) ?

Oleg1601
Offline
Зарегистрирован: 24.04.2015

 

Чуть не забыл, для управления ШД в программе используется библиотека AccelStepper - http://www.open.com.au/mikem/arduino/AccelStepper/index.html

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

........Но, в процессе тестирования, было замечено, что двигатели незаметно (медленно) вращаются.......

Вы только-что открыли что Земля вертится!!!!!!!!

#define MOTOR1_INIT_SPEED -200.0
#define MOTOR2_INIT_SPEED 800.0

........управление джойстиком не включается, пока не сработают концевики установленные на 6 и 7 контактах

stpMotor1.setCurrentPosition(0);

Это он "0" свой ищет......

Oleg1601
Offline
Зарегистрирован: 24.04.2015

trembo пишет:

........Но, в процессе тестирования, было замечено, что двигатели незаметно (медленно) вращаются.......

Ой. Я забыл написать, что вращение это происходит в режиме Стоп, когда джойстик находится в нейтральном положении.

vov4ik
Offline
Зарегистрирован: 10.09.2013

Ну как-то так.

int x; int y;
void setup() {
  Serial.begin(9600);
}
void loop() {
  int sensorValuex = analogRead(A0);
  int sensorValuey = analogRead(A1);
  if (sensorValuex < 510 || sensorValuex > 514){
 if (sensorValuex < 510){x = map(sensorValuex,0,510,-100,0);}
 if (sensorValuex > 514){x = map(sensorValuex,514,1023,0,100);}
 } else {x = 0;}
 if (sensorValuey < 519 || sensorValuey > 523){
 if (sensorValuey < 519){y = map(sensorValuey,519,0,0,100);}
 if (sensorValuey > 523){y = map(sensorValuey,1023,523,-100,0);}
  } else {y = 0;}
  Serial.print("X=");
  Serial.print(x);
  Serial.print(" Y=");
  Serial.println(y);
  delay(25);
}

Промапить можно по желанию, лично я настроил что провода подходят с лева, особенности моего джостика x = 512; y = 520/521;.

Что получилось при бысром вращении по часовой стрелке.

X=0 Y=100
X=25 Y=100
X=92 Y=100
X=100 Y=100
X=100 Y=71
X=99 Y=ll
X=100 Y=0
X=100 Y=0
X=100 Y=-45
X=100 Y=-83
X=100 Y=-100
X=99 Y=-100
X=65 Y=-100
X=24 Y=-100
X=0 Y=-100
X=0 Y=-100
X=0 Y=-100
X=-2 Y=-100
X=-42 Y=-100
X=-73 Y=-100
X=-100 Y=-10
X=-100 Y=-99
X=-100 Y=-57
X=-100 Y=-10
X=-100 Y=0
X=-100 Y=0
X=-100 Y=0
X=-100 Y=19
X=-100 Y=5S
X=-100 Y=99
X=-50 Y=100

 

Oleg1601
Offline
Зарегистрирован: 24.04.2015

Это, что, нужно залить и посмотреть зачения в Мониторе? Должны быть нули?

vov4ik
Offline
Зарегистрирован: 10.09.2013

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

особенности моего джостика x = 512; y = 520/521;

значит if (sensorValuex < 510 || sensorValuex > 514) if (sensorValuey < 519 || sensorValuey > 523), повторюсь у вас могут быть другие значения.

Oleg1601
Offline
Зарегистрирован: 24.04.2015

Где данные то смотреть?

Oleg1601
Offline
Зарегистрирован: 24.04.2015

Всем спасибо! Вопрос со скетчен полностью решен.

mof1re
Offline
Зарегистрирован: 08.02.2018

Oleg1601 пишет:

Всем спасибо! Вопрос со скетчен полностью решен.

Добрый день, тем-же вопросом заинтересовался, можно как-то лично узнать как реализовали в итоге? Так совпало, что все тоже-самое грубо говоря взял. UNO + Nema17 шаговики, (правда еще шестерни + ремни) и контроллеры.

Я себе просто представлял как ТЗ, это как:

 Что должен быть пульт, либо приложение, где буду задавать скорости постоянной работы оси RA(звездная, Лунная). В случае с пультом, как по-мне, тут удобнее 2 отдельные кнопки.

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

В идеале конечно еще и порт для гидирования реализовать в будущем.

Поэтому возвращаюсь к вопросу, если не сложно, объяснить может как реализовано у вас это сейчас? Арудино купил первый раз, поэтому попутно буду копаться в ресурсах сайта и форума для понимания, что это и с чем едят. :)

Спасибо заранее.

vvadim
Offline
Зарегистрирован: 23.05.2012

для получения помощи ПРАВИЛЬНО - создать свою тему, а не писать в чужой, да ещё и трёхлетней давности.

все ваши хотелки можно реализовать, а вот получить ответ от астронома здесь шанс не высокий))))

mof1re
Offline
Зарегистрирован: 08.02.2018

Я подумал с обратной логикой, первым делом пошел в поиск. Дабы не засорять форум одинаковыми темами. А нашел именно ту, в которой решена моя сегодняшняя задача, хоть и года назад :) Не ответит - пока сам, насколько смогу "матчасть" тут подтяну, и уже с проблемами и непонятками создам ветку.

Надежда умирает последней :)

vvadim
Offline
Зарегистрирован: 23.05.2012

путей несколько.

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

выбор за вами)))

mof1re
Offline
Зарегистрирован: 08.02.2018

Угу, я понял, Готовое не найду это 100%. 

Начну собирать сам, так как детали уже есть и от этого никуда не деться :) А там уже как получится, попробовать по крайне мере интересно.

Не справлюсь - уже буду обращаться за деньги :)

Спасибо.

vvadim
Offline
Зарегистрирован: 23.05.2012

главное  написать себе техзадание, в котором чётко расписать логику работы системы и учесть все свои хотелки.

и в гугле задавать правильно вопросы. если и это не поможет - тогда на форум с написанным кодом и своей бедой)))