Вернуться   Общая Астрономическая Конференция > Практика > Своими руками

Ответ
 
Опции темы Опции просмотра
Старый 08.04.2016, 15:37   #21
Oleg1601
Авторитет
 
Аватар для Oleg1601
 
Регистрация: 13.02.2011
Адрес: г. Саранск
Сообщений: 351
По умолчанию Re: Простая система управления монтировкой на Arduino

Цитата:
Сообщение от саня барада Посмотреть сообщение
Отличная работа
Спасибо
__________________
DS DTF 130/1000 EQ3/AT-5 (MOD)
Oleg1601 вне форума   Ответить с цитированием
Старый 08.04.2016, 16:58   #22
D_a_r_k_man
Старожил
 
Аватар для D_a_r_k_man
 
Регистрация: 15.11.2011
Адрес: Белгородская обл, Валуйский р-н, Юрий
Сообщений: 1,983
По умолчанию Re: Простая система управления монтировкой на Arduino

Оно живое!!!
Поздравляю тебя)
__________________
- SW 254/1200, клубный GSO Dob 16" "Бандура"
- Lumenera Lu070M + искатель 8х50,
- QHY163M, Astronomic LRGB 2", MPCC Mk.III
- EQDrive Standard
D_a_r_k_man вне форума   Ответить с цитированием
Старый 08.04.2016, 17:24   #23
ASheff
Гуру
 
Аватар для ASheff
 
Регистрация: 04.11.2014
Адрес: РнД\СПб
Сообщений: 1,045
По умолчанию Re: Простая система управления монтировкой на Arduino

Круто!
__________________
- Meade Maxvision 80/480 ED, SW MAK127
- SW HEQ5Pro belt-mod, SW EQ5
- Canon EOS 50D, ASI 178MC, QHY5R-II-C
- MC Helios 44M-6, Юпитер-37А, 3М-5СА
ASheff вне форума   Ответить с цитированием
Старый 08.04.2016, 18:12   #24
Oleg1601
Авторитет
 
Аватар для Oleg1601
 
Регистрация: 13.02.2011
Адрес: г. Саранск
Сообщений: 351
По умолчанию Re: Простая система управления монтировкой на Arduino

Всем спасибо!
__________________
DS DTF 130/1000 EQ3/AT-5 (MOD)
Oleg1601 вне форума   Ответить с цитированием
Старый 24.04.2016, 13:59   #25
Oleg1601
Авторитет
 
Аватар для Oleg1601
 
Регистрация: 13.02.2011
Адрес: г. Саранск
Сообщений: 351
По умолчанию Re: Простая система управления монтировкой на Arduino

Только что закончил работу с новым скетчем, который позволит добавить в систему ещё одну кнопку+индикация, позволяющую включать большие скорости для предварительного наведения телескопа. При этом скорость наведения может достигать, на выбор, 4,66 град/сек или 9,32 град/сек, кроме уже существующей скорости в 2,33 град/сек. Можно конечно сделать и 18,64 град/сек, но, по моему, это слишком много.
Если кому интересно, могу выложить.
__________________
DS DTF 130/1000 EQ3/AT-5 (MOD)
Oleg1601 вне форума   Ответить с цитированием
Старый 24.04.2016, 18:30   #26
саня барада
Авторитет
 
Регистрация: 13.05.2013
Адрес: планета в 1 а.е. от солнца
Сообщений: 823
По умолчанию Re: Простая система управления монтировкой на Arduino

Цитата:
Сообщение от Oleg1601 Посмотреть сообщение
Только что закончил работу с новым скетчем.
Поздравляю, скорость наведения монтировки впечатляет, разгон ШД предусмотрен, или "рвет" с места?
__________________
sw dob 6"+энкодеры
sw 1149

eq2+pic goto
бинокль konus giant 20x80
EOS 30D
jv 250
EQ платформа для монтировки Добсона
саня барада вне форума   Ответить с цитированием
Старый 24.04.2016, 21:17   #27
Oleg1601
Авторитет
 
Аватар для Oleg1601
 
Регистрация: 13.02.2011
Адрес: г. Саранск
Сообщений: 351
По умолчанию Re: Простая система управления монтировкой на Arduino

Цитата:
Сообщение от саня барада Посмотреть сообщение
Поздравляю, скорость наведения монтировки впечатляет, разгон ШД предусмотрен, или "рвет" с места?
Разгон движением ручки джойстика.
__________________
DS DTF 130/1000 EQ3/AT-5 (MOD)
Oleg1601 вне форума   Ответить с цитированием
Старый 25.04.2016, 08:17   #28
саня барада
Авторитет
 
Регистрация: 13.05.2013
Адрес: планета в 1 а.е. от солнца
Сообщений: 823
По умолчанию Re: Простая система управления монтировкой на Arduino

Цитата:
Сообщение от Oleg1601 Посмотреть сообщение
Разгон движением ручки джойстика.
В таком случае вообще отлично!
__________________
sw dob 6"+энкодеры
sw 1149

eq2+pic goto
бинокль konus giant 20x80
EOS 30D
jv 250
EQ платформа для монтировки Добсона
саня барада вне форума   Ответить с цитированием
Старый 26.04.2016, 11:18   #29
Oleg1601
Авторитет
 
Аватар для Oleg1601
 
Регистрация: 13.02.2011
Адрес: г. Саранск
Сообщений: 351
По умолчанию Re: Простая система управления монтировкой на Arduino

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




Скетч и библиотека AccelStepper 1.51 в одном архиве:

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

Ссылка для скачивания:
http://www.fayloobmennik.net/6119003
__________________
DS DTF 130/1000 EQ3/AT-5 (MOD)
Oleg1601 вне форума   Ответить с цитированием
Старый 09.06.2016, 18:51   #30
Oleg1601
Авторитет
 
Аватар для Oleg1601
 
Регистрация: 13.02.2011
Адрес: г. Саранск
Сообщений: 351
По умолчанию Re: Простая система управления монтировкой на Arduino

Скетч для наглядности:

/*

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

#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_SPR 1600 // Кол-во шагов на 1 оборот вала двигателя
#define MOTOR2_SPR 1600

#define MOTOR1_MAX_SPEED 8000.0 // Максимальная скорость моторов в режиме 1
#define MOTOR2_MAX_SPEED 8000.0

#define MODE2_MAX_SPEED 14.35 // Скорость в режиме 2 - Звездная скорость

#define INT_PIN 12 // номер вывода на MS
#define LED_PIN 6 // номер вывода светодиода
#define BUTTON_PIN 7 // номер вывода кнопки B1

// Органы управления и индикации

#define MOTOR1_JOY_IN 0 // Ось Y джойстика
#define MOTOR2_JOY_IN 1 // Ось X джойстика
#define BTN1 0 // Кнопка РЕЖИМ 2 СТАРТ/СТОП
#define LED_MODE 1 // Индикатор режима:
// 0=РЕЖИМ 2 (светодиод горит)
// 1=РЕЖИМ 1 (светодиод не горит)



// переменные и константы для обработки сигнала кнопки
boolean flagPress= false; // признак кнопка в нажатом состоянии
boolean flagClick= false; // признак нажатия кнопки (фронт)
byte buttonCount= 0; // счетчик подтверждений состояния кнопки
#define TIME_BUTTON 12 // время устойчивого состояния кнопки (* 2 мс)

boolean ledState; // переменная состояния светодиода

int nMotor1SP, nMotor2SP; // Задание направления от джойстика
int nMode2SP; // Задание скорости для работы в РЕЖИМ 2
int nMotor1MV, nMotor2MV; // Задание скорости после ограничителя
int nModeControllerState = 0; // Текущее состояние конечного автомата ModeController
int nMode = 0; // Текущий номер режима
// 0=РЕЖИМ 1. Управление от джойстика
// 1=РЕЖИМ 2. Движение с заданной скоростью по одной оси
bool bBTN1Value; // Состояние кнопки BTN1


AccelStepper stpMotor1(AccelStepper: DRIVER, MOTOR1_STEP_PIN, MOTOR1_DIR_PIN);
AccelStepper stpMotor2(AccelStepper: DRIVER, MOTOR2_STEP_PIN, MOTOR2_DIR_PIN);



void setup() {
phInit();

pinMode(INT_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}


void loop() {
static int nBTN1Counter;

phGetCommand();

switch (nModeControllerState) {


case 0:
if (bBTN1Value == false) {
nBTN1Counter++;
} else {
nBTN1Counter = 0;
}

if ((bBTN1Value == false) && (nBTN1Counter > 10)) {
nModeControllerState = 1;
nBTN1Counter = 0;
}
break;

case 1:
if (bBTN1Value==true) {
nModeControllerState = 2;
nMode = 1;
digitalWrite(LED_MODE, 0);
}
break;

case 2:
if (bBTN1Value == false) {
nBTN1Counter++;
} else {
nBTN1Counter = 0;
}

if ((bBTN1Value == false) && (nBTN1Counter > 10)) {
nModeControllerState = 3;
nBTN1Counter = 0;
}
break;

case 3:
if (bBTN1Value==true) {
nModeControllerState = 0;
nMode = 0;
digitalWrite(LED_MODE, 1);
}
break;
default:
break;
}


switch (nMode) {

case 0:
phMotorRunMode1();
break;

case 1:
phMotorRunMode2();
break;
default:
break;
}

if ( flagPress == (! digitalRead(BUTTON_PIN)) ) {

buttonCount= 0;
}
else {
buttonCount++;

if ( buttonCount >= TIME_BUTTON ) {
flagPress= ! flagPress;

if ( flagPress == true ) flagClick= true;
}
}

// блок управления светодиодом и выходом управления
if ( flagClick == true ) {
flagClick= false;
ledState= ! ledState;
digitalWrite(LED_PIN, ledState);
digitalWrite(INT_PIN, ledState);
}
}

void phInit()
{
pinMode(MOTOR1_DIR_PIN, OUTPUT);
pinMode(MOTOR2_DIR_PIN, OUTPUT);
pinMode(MOTOR1_STEP_PIN, OUTPUT);
pinMode(MOTOR2_STEP_PIN, OUTPUT);

pinMode(BTN1, INPUT_PULLUP);
pinMode(LED_MODE, OUTPUT);

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);

digitalWrite(LED_MODE, 1);

return;
}

void phGetCommand()
{
bBTN1Value = digitalRead(BTN1);

nMotor1SP = analogRead(MOTOR1_JOY_IN) - 512; // Ось Y джойстика
nMotor2SP = analogRead(MOTOR2_JOY_IN) - 512; // Ось X джойстика
nMode2SP = MODE2_MAX_SPEED * 1; // Задание скорости режима 2 Поменять на -1 если требуется реверс

if ((nMotor1SP < -40) || (nMotor1SP > 40)) {

nMotor1MV = map(nMotor1SP, -512, 511, -1*MOTOR1_MAX_SPEED, MOTOR1_MAX_SPEED);
} else {
nMotor1MV = 0;
}
nMotor1MV = nMotor1MV * 1; // Поменять на -1 если требуется реверс



if ((nMotor2SP < -40) || (nMotor2SP > 40)) {

nMotor2MV = map(nMotor2SP, -512, 511, -1*MOTOR2_MAX_SPEED, MOTOR2_MAX_SPEED);
} else {
nMotor2MV = 0;
}
nMotor2MV = nMotor2MV * 1; // Поменять на -1 если требуется реверс

}

void phMotorRunMode1()
{
stpMotor1.setSpeed(nMotor1MV); // Задаем скорость для мотора 1
stpMotor2.setSpeed(nMotor2MV); // Задаем скорость для мотора 2

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

void phMotorRunMode2()
{
stpMotor1.setSpeed(nMode2SP); // Задаем скорость для мотора 1
stpMotor1.runSpeed(); // Выполняем движение с заданной скоростью
}
__________________
DS DTF 130/1000 EQ3/AT-5 (MOD)
Oleg1601 вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухмоторная система управления для монтировки EQ-3 (CG-4) core2 Астрономическое оборудование 7 13.01.2012 10:48
Программа для управления монтировкой с ПК MiXaSA Любые вопросы от новичков 13 13.09.2010 10:38
COM порт для управления монтировкой CG-5GT pignus Полезное для астрономии 8 02.08.2010 21:06
Компьютерная система управления GotoNova KVaSiCH Астрономическое оборудование 36 21.06.2008 01:45
простая оптическая система. оффтопик Anonymous Астрономическое оборудование 5 17.03.2002 14:25


Часовой пояс GMT +4, время: 09:41.


Powered by vBulletin® Version 3.8.4 Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.