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

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

Увійти

google


Автор Тема: EQ2. привод по одной оси.. нужна помощь.  (Прочитано 9371 раз)

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

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #40 : 09 Квітня 2015, 21:12:54 »
. - .

  skyspeed=153453;

поставил такое значение.. скоро будем тестить, но мне кажется надо будет еще 0 добавить %)
Записаний
чистого всем неба и длинных безлунных ночей...

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #41 : 09 Квітня 2015, 21:17:24 »
. - .

  skyspeed=153453;

поставил такое значение.. скоро будем тестить, но мне кажется надо будет еще 0 добавить %)
ха ха ... 
ничего не выйдет через микросекунды...
нужно немного усложнять, т.к.  delayMicroseconds() параметром не понимает число большее, кажется,  12 или 16 тысяч  :)
Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #42 : 09 Квітня 2015, 21:18:13 »
. - .

Записаний

wanowar

  • Offline Offline
  • Повідомлень: 184
  • Подяк: 36
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #43 : 09 Квітня 2015, 21:20:54 »
. - .

помогите посчитать.

391 шаг за 1 мин (60 сек) = 6.5 шага в секунду. 13 полушагов в секунду. а вот дальше начинается какая то ерунда.. не могу понять что считать надо :)

если 1 000 000 \ 13 = получаем совсем маленькую цифру и большую скорость вращения.

Ну так все посчитано
Один шаг (т.е период) должен делаться каждые 86164/562500 = 0,153180 с.
Для полушагового режима, соответственно, период уменьшить вдвое.

меня путают нули.. 153 это сколько в микросекундах? 153 000? так это очень быстро будет вал вращаться.
0,15318 с или 153,18 мс, или 153180 мкс.
Вот поэтому я не люблю пользоваться функцией "delay". порой она дает совсем не те периоды, особенно в микросекундах.

Вы же учитывайте редукцию 1/138х64




Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #44 : 09 Квітня 2015, 21:21:32 »
. - .

Код: [Select]
{ delay(153); delayMicroseconds(453); } ;D
Записаний
Подякували

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #45 : 09 Квітня 2015, 21:24:42 »
. - .

похоже на правду.. но если бы я поставил delay153 думаю она бы тоже отлично вела. в принципи у меня изначально стояло значение 110.. не сильно промахнулся. как на глаз :)

Спасибо Алекс! :beer:
Записаний
чистого всем неба и длинных безлунных ночей...

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #46 : 09 Квітня 2015, 21:25:38 »
. - .

 :beer:
так звезды уже остановились в окуляре ?
Записаний


wanowar

  • Offline Offline
  • Повідомлень: 184
  • Подяк: 36
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #47 : 09 Квітня 2015, 21:26:47 »
. - .

Да не заморачивайтесь, ставьте 153 мс. Для небольшого периода времени погрешность небольшая. Для тестироватия подойдет. А дальше подправите.
Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #48 : 09 Квітня 2015, 21:43:27 »
. - .

Кстати, алгоритмец - зачетный! На нобелевку потянет!  :up:
 ;D
Записаний

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #49 : 09 Квітня 2015, 21:45:55 »
. - .

Кстати, алгоритмец - зачетный! На нобелевку потянет!  :up:
 ;D

спасибо.

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

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #50 : 09 Квітня 2015, 21:46:33 »
. - .

Код: [Select]
void loop()
{
  button10st = digitalRead(button10);
  button11st = digitalRead(button11);
  button12st = digitalRead(button12);
 
  digitalWrite(motor11,LOW);
  digitalWrite(motor12,LOW);
  digitalWrite(motor13,LOW);
  digitalWrite(motor14,LOW);


это типа - встали и стоим.  а чего ждем? если нужно шагать ?   :hz:
Записаний

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #51 : 09 Квітня 2015, 21:50:27 »
. - .

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

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #52 : 09 Квітня 2015, 21:54:28 »
. - .

// GOTO 
  but10:
  while (button10st==LOW) {
  digitalWrite(motor11, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor12, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor11, LOW); 
  button10st = digitalRead(button10);
  digitalWrite(motor12, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor13, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor12, LOW);
  button10st = digitalRead(button10);
  digitalWrite(motor13, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor14, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor13, LOW);
  button10st = digitalRead(button10);
  digitalWrite(motor14, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor11, HIGH); delay(153); delayMicroseconds(skyspeed); digitalWrite(motor14, LOW);
  button10st = digitalRead(button10);
  button11st = digitalRead(button11);
  button12st = digitalRead(button12);


а тут что это такое? 
тут вижу 12ть записей в порты шаговика, с паузами..  это шаг? или полтора шага? или полтора полушага?   я чегой-то не въеду ...  :insane:
да еще и чтение кнопок между выводом сигналов на шаговик 
"мамадарагая!" :facepalm:

Записаний

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #53 : 09 Квітня 2015, 21:57:31 »
. - .

я так полшага организовал.

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

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


зы: я последний раз проги писал в 11 классе. это было 20 лет назад. не судите строго :) старался как мог. вижу пару косяков. для обкатки пойдет. а там до ума доведем.. главное что работает.
Записаний
чистого всем неба и длинных безлунных ночей...

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #54 : 09 Квітня 2015, 22:02:43 »
. - .

Комбинация delay + delayms неплохое решение. Однако
полный цикл это время delay + время остальных манипуляций.
Правильным решением будет самостоятельный отсчет времени, не зависящий от размера и времени выполнения этих самых остальных манипуляций.
Для этого есть функция micros().
В отличие от delayMicroseconds() она прекрасно понимает большие числа.

Пример использования:

Код: [Select]
void loop()
{
  static unsigned long oldTime = 0;
  long myDelay= 153453;
  long elapsed;

  do
  {
    elapsed = micros() - oldTime;
  } while (elapsed < myDelay);
  oldTime += myDelay;

// тут остальные манипуляции;

}

Записаний
Подякували

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #55 : 09 Квітня 2015, 22:13:46 »
. - .

Код: [Select]
// GOTO 
  but10:
  while (button10st==LOW) {
    digitalWrite(motor11, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor12, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor11, LOW); 
    digitalWrite(motor12, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor13, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor12, LOW);
    digitalWrite(motor13, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor14, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor13, LOW);
    digitalWrite(motor14, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor11, HIGH);
    delay(153); delayMicroseconds(453);
    digitalWrite(motor14, LOW);

я так понимаю, что это "звездный" кусок.
отбросил из кода шелуху с чтением кнопок.
и получается вот такое. я что-то не пойму - ЧТО ЭТО ?  что это за 12ть записей в порты ?
поясните кто-нибудь... это какой-то новый режим работы ШД ?
подали сигнал на один выход и делаем паузу ?
а почему бы сразу не сделать вывод на четыре ноги ШД и сделать тогда уже паузу ?  :o
 :hz:
Записаний

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #56 : 09 Квітня 2015, 22:35:49 »
. - .

двигатель униполярный. А что даст подача питания на все 4 ноги?? она закоротит все обмотки. какой в этом смысл?

в общем почти поймал полярку. ведет объект почти 15 минут. есть некоторая погрешность по склонению. еще чуть подправил и оставил. хай работает..

всем спасибо за поддержку.


зы: нашел очень любопытное видео.. https://www.youtube.com/watch?v=-9Ghv99BeiA оно реально даст прирост мощности в 2 раза? кто в курсе? подскажите плиз. я себе тогда и склонение забабахаю на мотор. А то шток уж больно жестко двигается..
Записаний
чистого всем неба и длинных безлунных ночей...

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #57 : 09 Квітня 2015, 22:52:26 »
. - .

Короче, пора отвыкать от Delay() и пора переходить на таймерные прерывания!

/**
 *  This is an example sketch for VEduino Library.
 *  It shows how to use Arduino timers with VEduino Library.
 *
 *  There are 3 timers in ATmega328 microcontroller:
 *    DEV_TIMER0 is 8-bit timer with A and B Output Compare channels
 *    DEV_TIMER1 is 16-bit timer with A and B Output Compare channels
 *    DEV_TIMER2 is 8-bit timer with A and B Output Compare channels
 *
 *  http://sites.google.com/site/vanyambauseslinux/biblioteka-ve_avr
 */
#include <ve_avr.h>    // This sketch uses VEduino Library.

#define STEP_PIN  13   // It should blink.

// These variables are volatile, since their values are changing by interrupt handler.
volatile uint16_t newValue;

// DEV_TIMER1 Output Compare A interrupt handler
ISR(TIMER1_COMPA_vect)
{
  DEV_TIMER1.setOutputCompareA(newValue);  // This sets next interrupt timeout.
  digitalWrite(STEP_PIN, !digitalRead(STEP_PIN));      
}

// Setup function.
void setup()
{
  pinMode(STEP_PIN, OUTPUT);
  DEV_TIMER1.setClockSelect(TimerW::Prescaler_256);             // 16MHz / 256 = 62500 Hz. Timer1 will
                                                                                    // increase its TCNT value each 16 us.
  DEV_TIMER1.setWaveGenMode(TimerW::FastPWM_OCRA);      // Timer1 will compare its TCNT value
                                                                                    // with its OCRA value and
                                                                                    // each time when TCNT1 = OCR1
  DEV_TICTRL1.outCompIntEnableA();    // TIMER1_COMPA_vect ISR handler will be called.
  newValue = 4795;                           // 4795 * 16 * 2 = 153440 us
  interrupts();                                   // Enable interrupts also.
}

// Main loop iteration.
void loop()
{
  // А тут хоть танцы с бубном! :) 
  // А тут хоть танцы с бубном! :) 
  // А тут хоть танцы с бубном! :) 
  // А тут хоть танцы с бубном! :) 
}
Записаний

alex~

  • Offline Offline
  • Повідомлень: 6026
  • Подяк: 295
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #58 : 09 Квітня 2015, 22:54:31 »
. - .

зы: нашел очень любопытное видео.. https://www.youtube.com/watch?v=-9Ghv99BeiA оно реально даст прирост мощности в 2 раза? кто в курсе? подскажите плиз. я себе тогда и склонение забабахаю на мотор. А то шток уж больно жестко двигается..
я в своем на днях уже перепилил дорожку от пятого вывода.  ;D
как оно там и чего приросло.. не мерял.. да и нечем...
Записаний

exez

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1886
  • Подяк: 708
  • Астроманьяк
Re: EQ2. привод по одной оси.. нужна помощь.
« Відповідь #59 : 09 Квітня 2015, 23:47:41 »
. - .

так это драйвер другой нужен будет получается? и запитывать его надо будет уже не 5-6В...
Записаний
чистого всем неба и длинных безлунных ночей...