Скетч для управления телескопом
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Скетч для управления телескопом
Привет!
Похоже, что использовать значения MOTORn_MAX_SPEED больше 1000 не получится. Разработчик библиотеки не рекомендует при использовании метода setSpeed() указывать частоту импульсов больше 1000 имп/с. Поэтому в вашем случае максимальная скорость вращения ШД с учетом ограничения метода setSpeed() и дробления шага на 8 будет = 1000 * (1/(200*8)) = 0,625 об/сек или 60*0,625 = 37,5 об/мин.
Если вам надо реализовать возможность быстрых перемещений при управлении от джойстика и медленных при работе во втором режиме, то следует подумать над динамическим изменением коэффициента дробления шага в драйвере. Для этого можно задействовать дополнительные выходы Arduino и переключаться с полного шага на 1/8 когда вы переходите из режима 1 в режим 2.
Похоже, что использовать значения MOTORn_MAX_SPEED больше 1000 не получится. Разработчик библиотеки не рекомендует при использовании метода setSpeed() указывать частоту импульсов больше 1000 имп/с. Поэтому в вашем случае максимальная скорость вращения ШД с учетом ограничения метода setSpeed() и дробления шага на 8 будет = 1000 * (1/(200*8)) = 0,625 об/сек или 60*0,625 = 37,5 об/мин.
Если вам надо реализовать возможность быстрых перемещений при управлении от джойстика и медленных при работе во втором режиме, то следует подумать над динамическим изменением коэффициента дробления шага в драйвере. Для этого можно задействовать дополнительные выходы Arduino и переключаться с полного шага на 1/8 когда вы переходите из режима 1 в режим 2.
Re: Скетч для управления телескопом
Здравствуйте.
Странно, что получается только 37,5 об/мин...
Как уже писал, ставил значение MOTORn_MAX_SPEED - 8000 (в принципе эти 8000 микрошагов = 1000 шагам в режиме драйвера 1/8, что не противоречит условим AccelStepper), но в любом случае получал 96 об/мин - засекал минуту по секундомеру и просто считал полные обороты двигателя в положении джойстика - максимум.
По поводу "переключаться с полного шага на 1/8 когда вы переходите из режима 1 в режим 2" даже не знаю, получится ли - ведь на драйвере для этого (режим 1/1, 1/2, 1/4, 1/8) нужно замыкать соответствующие контакты - тут, получается, рэле нужно будет.
Что по поводу моего второго вопроса?
Странно, что получается только 37,5 об/мин...
Как уже писал, ставил значение MOTORn_MAX_SPEED - 8000 (в принципе эти 8000 микрошагов = 1000 шагам в режиме драйвера 1/8, что не противоречит условим AccelStepper), но в любом случае получал 96 об/мин - засекал минуту по секундомеру и просто считал полные обороты двигателя в положении джойстика - максимум.
По поводу "переключаться с полного шага на 1/8 когда вы переходите из режима 1 в режим 2" даже не знаю, получится ли - ведь на драйвере для этого (режим 1/1, 1/2, 1/4, 1/8) нужно замыкать соответствующие контакты - тут, получается, рэле нужно будет.
Что по поводу моего второго вопроса?
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Скетч для управления телескопом
Если по простому, то библиотеке AccelStepper не важно какое дробление шага используется. Она просто генерирует последовательность импульсов с частотой, которая указывается при вызове метода setSpeed(). Максимальная частота следования импульсов ограничена быстродействием микроконтроллера. Поэтому автор не рекомендует указывать более 1000 имп/с. Вы указав 8000, похоже, уперлись в ограничение на частоте 2000 имп/с, что соответствует скорости вращения 95 об/мин.
Теперь по второму вопросу. Чтобы реализовать указанные требования надо добавить в исходный код еще один конечный автомат для второй кнопки и еще добавить функцию phMotorRunMode3() в которой будет реализовано управление моторами.
Теперь по второму вопросу. Чтобы реализовать указанные требования надо добавить в исходный код еще один конечный автомат для второй кнопки и еще добавить функцию phMotorRunMode3() в которой будет реализовано управление моторами.
Re: Скетч для управления телескопом
Спасибо за оперативный ответ!
А как можно реализовать предложенные вами условия? В Режиме 2 желательно использовать микрошаговый режим 1/8, т.к. этот режим будет использоваться для астрофото и там нужно очень плавное ведение.
В драйвере режим 1/4 включается замыканием контакта MS1 на землю, в 1/8 контакт свободен.
Только что проверил работу моторов с разными коэфф. дробления шага - действительно скорость моторов при использовании режимов 1/4 и 1/2 выростает. В режиме 1/4 уже достаточно приемлимо для моих требований.Mr.Kubikus писал(а): Если вам надо реализовать возможность быстрых перемещений при управлении от джойстика и медленных при работе во втором режиме, то следует подумать над динамическим изменением коэффициента дробления шага в драйвере. Для этого можно задействовать дополнительные выходы Arduino и переключаться с полного шага на 1/8 когда вы переходите из режима 1 в режим 2.
А как можно реализовать предложенные вами условия? В Режиме 2 желательно использовать микрошаговый режим 1/8, т.к. этот режим будет использоваться для астрофото и там нужно очень плавное ведение.
В драйвере режим 1/4 включается замыканием контакта MS1 на землю, в 1/8 контакт свободен.
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Скетч для управления телескопом
Как вариант, можно выделить два пина Arduino для управления линиями MS1 и MS2. В программе надо будет использовать функции digitalWrite() для управления этими выходами. Ну и про pinMode() в функции setup() не забывайте.
Re: Скетч для управления телескопом
Проверил эти пины, т.е. MS1 и MS2 - на них постоянно подается +5В. Для реализации микрошагового режима 1/4 пин MS1 замыкается на корпус, для режима 1/2 - MS2 замыкается на корпус.Mr.Kubikus писал(а):Как вариант, можно выделить два пина Arduino для управления линиями MS1 и MS2. В программе надо будет использовать функции digitalWrite() для управления этими выходами. Ну и про pinMode() в функции setup() не забывайте.
Как реализовать это программно, чтобы переключать скорости с помощью Ардуино, или добавить еще одну кнопку, честно, никак не соображу - результатом утренних манипуляций стал один угробленный драйвер
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Скетч для управления телескопом
Надо подключить пины MS1 и MS2 драйвера к выходам Arduino. Уровнем на выходах управлять программно с помощью функции digitalWrite().
В качестве эксперимента нарисовал схему для одного ШД в редакторе Fritzing. Может быть она поможет вам разобраться. Вот схема крупнее в формате PDF:
В качестве эксперимента нарисовал схему для одного ШД в редакторе Fritzing. Может быть она поможет вам разобраться. Вот схема крупнее в формате PDF:
Re: Скетч для управления телескопом
За схему спасибо.
Не понял одно, что за напряжение, согласно схемы, подается на контакт платы ардуино Vin ?
Не понял одно, что за напряжение, согласно схемы, подается на контакт платы ардуино Vin ?
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Скетч для управления телескопом
Это питание микроконтроллера 7-12 В. Я рекомендую использовать раздельные источники питания для МК и для ШД. Вместо контакта Vin для питания МК можно использовать цилиндрический разъем на плате.
Re: Скетч для управления телескопом
Оперативно!
Вас понял - питание на драйверы ШД и МК с самого начала подаю раздельное.
Вот только с правкой имеющегося скетча (на 2-ой странице темы) возникли проблемы, программист я никакой, а простейшие примеры приводящиеся на разных форумах света на решение задачи не проливают. Сколько не писал скетчей, либо моторы стоят, либо... вышедший из строя драйвер ШД.
Помогите пожалуйста доделать этот скетч, тем более, что Вы его и писали.
Вас понял - питание на драйверы ШД и МК с самого начала подаю раздельное.
Вот только с правкой имеющегося скетча (на 2-ой странице темы) возникли проблемы, программист я никакой, а простейшие примеры приводящиеся на разных форумах света на решение задачи не проливают. Сколько не писал скетчей, либо моторы стоят, либо... вышедший из строя драйвер ШД.
Помогите пожалуйста доделать этот скетч, тем более, что Вы его и писали.