Київський клуб аматорів астрономії "Астрополіс"

astromagazin.net
* *
Ласкаво просимо, Гість. Будь ласка, увійдіть або зареєструйтеся.
19 Вересня 2024, 01:23:18

Увійти

google


Автор Тема: Помогите с моторизацией EQ2  (Прочитано 8083 раз)

0 Користувачів і 1 Гість дивляться цю тему.

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Помогите с моторизацией EQ2
« Відповідь #140 : 26 Серпня 2015, 23:00:01 »
. - .

Звездная скорость:
- За  23 часа 56 минут 4 секунды (86164 сек) монтировка должна сделать один оборот.

- Если ШД прикручен напрямую к червячному редуктору 1:130 и имеет 4076 шагов на оборот (M0 = 1), один оборот оси соответствует 130*4076 = 529880 шагов.

- Отсюда следует, что длительность одного шага равно 86164/529880 = 0.162610 секунды

- За один шаг дважды вызываем функцию задержки, т.е. делим еще на два, получаем 0.081305, т.е. 81305 мксек



Превращаем конечный цикл в бесконечный.

Было
Код: [Select]
for(int i=0;i<steps;i++){
   digitalWrite(stepperPin, HIGH);
   delayMicroseconds(800);
   digitalWrite(stepperPin, LOW);
   delayMicroseconds(800);
 }

Стало

Код: [Select]


int tdiv2 = 81305;

while(true){
   digitalWrite(stepperPin, HIGH);
   delayMicroseconds(tdiv2);
   digitalWrite(stepperPin, LOW);
   delayMicroseconds(tdiv2);
 }
Записаний

CasterV

  • Offline Offline
  • Повідомлень: 223
  • Подяк: 8
Re: Помогите с моторизацией EQ2
« Відповідь #141 : 26 Серпня 2015, 23:46:49 »
. - .

М_М, Вы немного с передаточным отношением ошиблись, должно быть 1:138, но это мелочи, меня больше волнует выполнение кода с задержками, микросекундами, на сколько это будет точный способ если допустить идеальную механику монтировки и прочие условия? Не будет ли проще задавать заранее посчитанное количество шагов которое должен сделать двигатель за минуту? В старом варианте скетча для амбарки у меня было именно так, к тому же это количество шагов и подправлять на ходу легче.
Вот как я считаю:
- за 1436 мин червяк должен сделать 138 оборотов;
- следовательно, за одну минуту это будет 138/1436=0,096 оборота;
- полный оборот вала двигателя происходит за 4076 шагов;
- что бы провернуть вал на 0,096 оборота нужно сделать 4076*0,096=391 шаг.

Как мне кажется так проще, задаем количество шагов в минуту и все контроллер сам подберет задержки, нужно чуть быстрее/медленнее - кнопками увеличили или уменьшили это значение без необходимости расчетов микросекунд.

Что скажете, такой вариант возможно реализовать, есть такие функции?
« Останнє редагування: 26 Серпня 2015, 23:57:41 від CasterV »
Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: Помогите с моторизацией EQ2
« Відповідь #142 : 27 Серпня 2015, 07:18:06 »
. - .

А потом вы захотите ещё функцию для ввода и отображения количества оборотов в минуту с точностью до десятитысячных, т.к. окажется, что 391 мало, а 392 уже много.
Ни один контроллер в мире сам ничего вам не подберёт. Вы должны его научить подбирать сами.
Если вам не нравится пользоваться заранее вычисленным периодом между шагами, то это совсем не означает, что этот период можно игнорировать. Все равно все ваши трехэтажные хотелки приведут в конечном результате к периоду между шагами.
Сейчас пока вижу, что вы хотите записать в контроллер скетч из 300 строчек, хотя можно обойтись и 30 строками.
Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Помогите с моторизацией EQ2
« Відповідь #143 : 27 Серпня 2015, 12:15:07 »
. - .

От перестановки множимых произведение не меняется. Принцип понятен - значит результат посчитаете.

На точность влияет два фактора.
1) Точность алгоритма задержки. У функции delayMicroseconds есть два недостатка. Первый - она содержит ошибки в коде, поэтому длинные выдержки считает неточно. Второй - вставляя в цикл такую задержку, мы не учитываем время исполнения других операторов. Лечится применением другой функции.
2) Точность частоты кварца. Например, в одной из плат вместо 16 мгц кварцевый генератор работает на 15.914.  Это на границе пределов допуска.
Учесть можно на этапе подсчета количества шагов, измерив предварительно эту частоту.

Можно просто эмпирически подобрать количество шагов на такт, используя фактор стабильности, т.е. если всякие лишние задержки алгоритма постоянны и частота кварцевого генератора от температуры меняется слабо. Например, если скорость монти на 1% меньше требуемого - значит уменьшаем число шагов на 1%. Это неточный метод, но за несколько итераций легко достичь вполне приемлемой точности и не морочить себе голову с вышеописанными двумя пунктами.

Записаний

CasterV

  • Offline Offline
  • Повідомлень: 223
  • Подяк: 8
Re: Помогите с моторизацией EQ2
« Відповідь #144 : 27 Серпня 2015, 12:46:23 »
. - .

M_M, по Вашему совету залил вот такой скетч:
int dirPin = 3;
int stepperPin = 2;
void setup() {
 pinMode(dirPin, OUTPUT);
 pinMode(stepperPin, OUTPUT);
}
 void step(boolean dir,int steps){
 digitalWrite(dirPin,dir);
 delay(50);
 
 int tdiv2 = 76592;

while(true){
   digitalWrite(stepperPin, HIGH);
   delayMicroseconds(tdiv2);
   digitalWrite(stepperPin, LOW);
   delayMicroseconds(tdiv2);
 }
}
void loop(){
 step(true,1600);
 
}

вал двигателя делает полный оборот за полторы минуты, хотя по идее должен за минуту сделать 0,096 оборота, что-то не так с задержками, а ещё движок прилично греется. Что я делаю не так?
 

alex~, я не говорил, что предложенный М_М вариант ерунда а мой единственно правильный, я привел свой вариант лишь для сравнения, так как предыдущий мой скетч использовал функцию setSpeed(), мне казалось, что это удобно. Если Вы считаете, что правильнее работать с задержками - буду работать с задержками, даже если мне это не нравится или не удобно. 
Записаний

MAKsutik

  • Offline Offline
  • Повідомлень: 4715
  • Подяк: 256
  • Ищи на третьей планете.
    • Project EQDrive
Re: Помогите с моторизацией EQ2
« Відповідь #145 : 27 Серпня 2015, 12:54:06 »
. - .

а ещё движок прилично греется. Что я делаю не так?
на плате ШД ест резистор подстроечный ним установите нужный ток вашего ШД, то есть сделайте меньше ток.
Записаний



M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Помогите с моторизацией EQ2
« Відповідь #146 : 27 Серпня 2015, 13:07:42 »
. - .

Думаю, проблема именно в функции delayMicroseconds, которая неправильно отсчитывает большие интервалы.
Как диагностический шаг к определению причины, я бы попробовал заменить (в двух местах)
delayMicroseconds(tdiv2);
на
delay(76).

Точность, понятное дело, недостаточная, но лучше чем полтора оборота вместе одного.

Различные методы повышения точности обсуждались на последних страницах в похожей теме:
http://www.astroclub.kiev.ua/forum/index.php?topic=23438.0
Записаний


CasterV

  • Offline Offline
  • Повідомлень: 223
  • Подяк: 8
Re: Помогите с моторизацией EQ2
« Відповідь #147 : 27 Серпня 2015, 13:31:11 »
. - .

Максутик, мне посоветовали на выходе DC-DC сделать 9В, до какого значения понизить 6-7В?

М_М, заменил строчки, теперь похоже на правду, оборот делает примерно за 10 мин. Как думаете, такая приблизительная точность достаточна, стоит ли бороться за ее повышение учитывая, что это для EQ2?
Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Помогите с моторизацией EQ2
« Відповідь #148 : 27 Серпня 2015, 13:56:06 »
. - .

Эксперимент - критерий истины. Для визуала вполне достаточно. Для фото - зависит от фокусного расстояния. В случае применения delay (как сейчас), тщательный подбор числа ограничен невозможностью применить дробное число. Условно можно сделать 75 или 76, тогда как надо 75.54.
Ошибка 0.5/75 - это ~0.7% скорости

К какому смазу приведет такая ошибка можно легко подсчитать, зная фокусное расстояние телескопа, размер пикселя матрицы и время экспозиции.

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

Упомянутый интервал в 75.54 получится вот так:
Код: [Select]
delay(75);
delayMicroseconds(540);

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

Если нужно строго, красиво и правильно - используем прерывания процессора напрямую или с использованием готовых библиотек (например, TimerOne), стабилизацию или учет температуры итд. Вплоть до синхронизации с GPS или даже TAI, было бы желание, достаточно времени и денег.

Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: Помогите с моторизацией EQ2
« Відповідь #149 : 27 Серпня 2015, 14:26:11 »
. - .

Думаю, проблема именно в функции delayMicroseconds, которая неправильно отсчитывает большие интервалы.
Вроде припоминаю (из своей практики), что эта функция работает с параметром не более 16000.
Записаний

MAKsutik

  • Offline Offline
  • Повідомлень: 4715
  • Подяк: 256
  • Ищи на третьей планете.
    • Project EQDrive
Re: Помогите с моторизацией EQ2
« Відповідь #150 : 27 Серпня 2015, 14:36:41 »
. - .

Максутик, мне посоветовали на выходе DC-DC сделать 9В, до какого значения понизить 6-7В?
Когда и где?
Записаний



CasterV

  • Offline Offline
  • Повідомлень: 223
  • Подяк: 8
Re: Помогите с моторизацией EQ2
« Відповідь #151 : 27 Серпня 2015, 15:14:31 »
. - .

М_М, думаю на пробу сойдет и так, а дальше возможно пригодится Ваш совет по увеличению точности. Думал сегодня попробовать так небо затянуло и дождь моросит(. Съемку планирую вести с ФР 50мм максимум 100мм и выдержками до 3-5 мин (камера Sony Nex-3n, кроп - 1,5 ), на большее с EQ2 рассчитывать как я понял не стоит.

MAKsutik, в сообщениях № 87, 92
Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Помогите с моторизацией EQ2
« Відповідь #152 : 27 Серпня 2015, 15:50:38 »
. - .

Максутик, мне посоветовали на выходе DC-DC сделать 9В, до какого значения понизить 6-7В?
Когда и где?
Эта тема феерически прекрасна! ;D Речь про драйвер 8825 с минимальным питанием 8.2В по даташиту.

@CasterV
Цитувати
на плате ШД ест резистор подстроечный ним установите нужный ток вашего ШД, то есть сделайте меньше ток.
Здесь не про подстройку напряжения на выходе DC-DC, а про регулировку на самой плате DRV8825. Теоретически, вы можете сделать меньше ток через ШД, но при этом будет падать и крутящий момент.

Практически же, одна биполярная обмотка сейчас имеет сопротивление 100 Ом, при питании 9В ток никак не может превысить 90мА, при токовых резисторах на плате драйвера в 0.1 Ом..., похоже, что никаких ограничений по току драйвер не сможет сделать. :hz:
Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Помогите с моторизацией EQ2
« Відповідь #153 : 27 Серпня 2015, 15:53:54 »
. - .

Вроде припоминаю (из своей практики), что эта функция работает с параметром не более 16000.
Да, это число фигурировало в каком-то неофициальном описании этой функции. Сам не проверял.
Записаний

CasterV

  • Offline Offline
  • Повідомлень: 223
  • Подяк: 8
Re: Помогите с моторизацией EQ2
« Відповідь #154 : 27 Серпня 2015, 16:08:23 »
. - .

Крутить это (стрелочка)?
Где делать замеры напряжения? Какое оно должно быть сейчас и на сколько снижать? А может пусть греется если нет опасности, что сгорит?
Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: Помогите с моторизацией EQ2
« Відповідь #155 : 27 Серпня 2015, 16:25:54 »
. - .

Замер напряжения нужно проводить в этой точке.
Там обычно сквозное отверстие и оно одно на плате..
Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Помогите с моторизацией EQ2
« Відповідь #156 : 27 Серпня 2015, 16:28:40 »
. - .

Да, крутилка по стрелочке.
НО!
В даташите есть формула I = V/(5*Rs), где
I - ток, который не нужно превысить
V - напряжение идущее с крутилки
Rs - сопротивление больших резисторов (рядом с крутилкой "R100" = 0.1 Ом) на плате драйвера

Допустим, мы хотим ограничить ток с 90мА до 60мА. Искомое V = 0.06*5*0.1 = 0.03В. Это далеко за диапазоном 1-3.3В, указанным в том же даташите. Как будет себя вести драйвер - хз. Как вы померяете 0.03В тоже хз.

Можно таки уменьшить выходное с DC-DC до 8.2В, а там пусть греется. Других вариантов, на мой взгляд, не просматривается.
Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: Помогите с моторизацией EQ2
« Відповідь #157 : 27 Серпня 2015, 16:29:51 »
. - .

Крутить это (стрелочка)?
Какое оно должно быть сейчас и на сколько снижать? А может пусть греется если нет опасности, что сгорит?
https://www.pololu.com/product/2133
К примеру, вам нужен ток через ШД не более 1А, тогда нужно установить подстроечником напряжение равное 0,5В.

Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Помогите с моторизацией EQ2
« Відповідь #158 : 27 Серпня 2015, 16:39:05 »
. - .

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

А еще мне помнится, весь этот цирк был затеян с целью подать на мотор 10 вольт амплитуды, для этого даже мотор переделывался. А для этого питание на вольт-два должно быть выше. Откуда и следовал совет о 12-вольтовом аккумуляторе.

При 7 вольтах на переделанном моторе тяга теоретически должна быть такая же как на 5 вольтах до переделки. Т.е. питание 8 вольт с цирком не дает никаких преимуществ по сравнению с оригинальным без цирка.
Записаний

CasterV

  • Offline Offline
  • Повідомлень: 223
  • Подяк: 8
Re: Помогите с моторизацией EQ2
« Відповідь #159 : 27 Серпня 2015, 16:42:22 »
. - .

Ребят, наверно я таки не буду трогать эту крутилку, а то накручу. За 10 мин движок нагревается примерно до 50 градусов, руку можно держать (кажется 60 и выше, руку не удержать), это ведь не опасно для двигателя?
Записаний