ВНИМАНИЕ! На форуме началось голосование в конкурсе - астрофотография месяца ИЮНЬ!
0 Пользователей и 2 Гостей просматривают эту тему.
Я только одно не понял. Микруха даёт возможность перехода в 1/16 микрошага в пределах -32768…+32767 от текущей позиции. А если нужно дальше, нужно идти на 32к, стопить мотор, ресетить и идти ещё на 32к и т.п.?
Цитата: moscow от 26 Янв 2011 [09:56:43]Я только одно не понял. Микруха даёт возможность перехода в 1/16 микрошага в пределах -32768…+32767 от текущей позиции. А если нужно дальше, нужно идти на 32к, стопить мотор, ресетить и идти ещё на 32к и т.п.?а что мешает завести ещё одну переменную и складывать-вычитать значения текущего шага?
Да-да, слышал не только о кренке, но и о людях, рукой крутящих R.A. вместо мотора , это не прибавляет мне оптимизма.Насчёт рывков. Монти EQ6pro, к примеру. Мотор работает в микрошаге 1/64, каждый микрошаг равен 0.14". В секунду нужно пройти 15", то есть ~107.14 микрошагов. С учётом далеко ненулевой массы нагрузки на монти, которая работает как демпфер, мне кажется говорить о том, что 1/64 микрошаг с частотой 100+ Гц есть атомарное явление - неверно, скорей это достаточно плавная синусоида.Что есть ДПТ, как не шаговик с 2-3 шагами на круг и системой коммутации (щётки, например)? Как раз с точки зрения плавности хода при синусоиде на фазах (достаточно мелком микрошаге) шаговик выиграет, кмк.Другое дело, что ДПТ с энкодером небольшого разрешения ставят через более "мощный" редуктор (с бОльшим коэффициентом редукции), делая из него серву.
//#######################################################//прерывание для обработки шаговика RA. //#######################################################void __attribute__((interrupt, no_auto_psv)) _T5Interrupt(void){ signed int tempPos=St2[2].ActPos; //Сохраним значение предыдущей позиции шаговика signed long Delta; GetST2(2); //Считываем статус2 в котором есть текущая позиция шаговика GetST1(2); if (((GoTo.State&NO_KALIBR)==FALSE)&&(FlagWork!=STAR_SPEED)&&(tempPos!=St2[2].ActPos)) { //Если система откалибрована, то обновим координату if (abs((signed long)St2[2].ActPos-(signed long)tempPos)<3200) { //если небыло перехода через границу внутреннего счетчика GoTo.Motor[2].POS+=St2[2].ActPos-tempPos; //Обновляем позицию шаговика } else { //если был переход через край внутреннего счетчика if ((tempPos<-25000)&&(St2[2].ActPos>25000)) { //Был переход через нижнюю границу GoTo.Motor[2].POS-=tempPos-St2[2].ActPos; //Обновляем позицию шаговика } else { //Был переход через верхнюю границу GoTo.Motor[2].POS+=St2[2].ActPos-tempPos; //Обновляем позицию шаговика } } if (GoTo.Motor[2].POS>=HA_MAX) { GoTo.Motor[2].POS-=HA_CIRCLE; } else if (GoTo.Motor[2].POS<=HA_MIN) { GoTo.Motor[2].POS+=HA_CIRCLE; } } if (FlagWork==GO_TO) { //Работаем в режиме GO_TO TMC2_Speed = HIGH_SPEED_VAL; Delta=GoTo.Motor[2].TARG-GoTo.Motor[2].POS; if (Delta!=0) { //Еще не приехали GoTo.State|=WRONG_HA; // Поднимаем флаг неверной координаты if (Delta>30000) Pos[2].TargPos=St2[2].ActPos+30000; // Если еще далеко else if (Delta<-30000) Pos[2].TargPos=St2[2].ActPos-30000; // Если еще далеко else Pos[2].TargPos=St2[2].ActPos+Delta; // Уже ближе SetPOS(2); } else { GoTo.State&=~WRONG_HA; // Очищаем флаг неверной координаты TMC2_Direction=STOP; SoftSTOP(2); } } else { //В остальных режимах if (TMC2_Direction==GO_RIGHT) { Pos[2].TargPos=St2[2].ActPos+1; SetPOS(2); } else if (TMC2_Direction==GO_LEFT) { Pos[2].TargPos=St2[2].ActPos-1; SetPOS(2); } else if (TMC2_Direction==RUN_RIGHT) { Pos[2].TargPos=St2[2].ActPos+1000; SetPOS(2); } else if (TMC2_Direction==RUN_LEFT) { Pos[2].TargPos=St2[2].ActPos-1000; SetPOS(2); } else if ((St1[2].Motion==3)||(St1[2].Motion==7)||(St1[2].Motion==1)||(St1[2].Motion==6)) { //Проверяем флаг движения, если едем на макс. скорости или ускоряемся то тормозим SoftSTOP(2); } } SET_SPEED2(TMC2_Speed); _T5IF = 0;}
moscow мне кажется если взялись за эту разработку то ее желательно сделать легко повторяющуюся,к примеру как схему П.Бахтинова конечно если вы преследуете эти цели.
А еще бы хорошо если бы попробовали на Arduino, например Arduino Nano - недорого стоит. Зато унифицированная...И программировать просто.
Все реализуется довольно просто. В самой первой версии GOTO которая была выпущена единственным экземпляром у нас стояли именно такие контроллеры на всех осях. Теперь он остался только для фокусера.
А к чему пришли? И почему отказались от этого жука?
это жук работает на фокусер, а на оси поставили ТМС249 с внешними мосфетами, так как токи требуются больше 820 мА.
Другое дело, что управление мотором со стабилизацией тока - это правильно и я изучаю этот вопрос, возможно драйверы L6219 (аналогично схеме Павла Бахтинова) и стоит применить. Видел Иван Ионов реализовал на них 1/16 микрошаг управляя опорными напряжениями атмегой, но ещё не успел разобраться детально).
Собственно, если убрать из начальной схемы FT245R, убрать макса, точнее заменить его FT232R.
И кстати - не забудьте зарезервировать место под дисплей
ЦитатаСобственно, если убрать из начальной схемы FT245R, убрать макса, точнее заменить его FT232R. Тогда придется создавать заново ПО, которое уже отлажено Иваном и проверенно многими.Может лучше оставить 245, ПО Ивана и бросить силы на другое? Например то же ГОТО и реализацию микрошага на 6219?
смысла в экране не вижу,удорожание конструкции, лишний геморой с программированием.нужно запустить простую схему, а потом как модинг уже можно и подумать о экране.
так же нужно сразу предусмотреть пересчет на разный коэффициент редукции как у Павла Бахтинова, без этого схема не получит популярности.
Первым делом я прикинул, что дисплей нужен (тем более недавно успешно экспериментировал с ним), но потом так и не придумал, что туда выводить.Какие функции дисплея видите Вы? Запихать в пульт базу объектов месье и ещё сотню ярких дипов и планет и сделать GoTo с пульта?
Поэтому пришёл я к мысли, что хоть технически подключить LCD 16x2 или 20x2 (ровно как и бОльший) легко и дёшево (придётся только поменять жука на атмегу16, у "восьёмрки" банально не хватит портов, но это тоже копейки), но он тут совершенно не нужен.
Ага, в первом сообщении так и написал - в планах создание своего ascom драйвера монти с полноценным GoTo по координатам, а не по "времени нажатия на кнопку".
Конечно, ошибки лёгкой и дешёвой механики, на которые я изначально планирую эту систему внедрять (EQ1...3...5) никто не отменял, но всё же мне было бы интересно попробовать создать дешёвый аналог syntrek для мелких монти.
ATmega128A-AU 190 рублей - МОРЕ памяти и аппаратуры, много ШИМ, 2 USART корпус TQFP-64