Телескопы покупают здесь


A A A A Автор Тема: GOTO на Arduino практическая реализация "Импортозамещение"  (Прочитано 48714 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
Тут видимо дело принципа - сделать сверхзвуковой кукурузник.
А ведь, реально, Ардуино гонит 13-14кГц при использовании timeMachine micros и PORTD &=~_BV(PD*)
Только девиация 1кГц ...
Интересно, DRV8825 выдержит 14кГц при микрошаге 1\32..

Высокий уровень держится 8 мкс. Для DRV8825 требуется от 1.9 мкс, судя по интернетам.
Без нагрузки, так что фронты еще завалит, скорее всего, в реальной схеме. Для 14кГц надо покороче сделать дорожки.




« Последнее редактирование: 04 Окт 2016 [19:19:38] от Boris Green »

Оффлайн lipaal

  • *****
  • Сообщений: 2 929
  • Благодарностей: 50
    • Сообщения от lipaal
void rewindsRa(int dir,int steps, int del){  //направление, число шагов, длительность импульса
  digitalWrite(PinDir, dir);
  while (steps>0) {
   digitalWrite(PinDr, HIGH);
   delayMicroseconds(del*50);
   digitalWrite(PinDr, LOW);   
   steps--;
  }
}

Вызов в случае ускоренного движения  -   rewindsRa(HIGH,10,1);  // 10 шагов подряд по 50 мкс
Для того, что бы утверждать про 50 мкс - надо смотреть осциллографом.
Потому что Вам неизвестно скорость выполнения  digitalWrite.
Если учесть то, что про  digitalWrite пишут в сети - лучше изначально отказаться от  digitalWrite.
Надо либо напрямую в порт писать, либо адекватные костыли ставить.
Александр.
DS F750X150 на LXD-55, Neximage, Canon 400D, Ю37МС.
.....
Сайга-20К, ТОЗ106, ТОЗ-34, Барс4-223  - смерть фонарям!!!!!!

Сообщений kismet-а не вижу

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
Надо либо напрямую в порт писать, либо адекватные костыли ставить.

PORTD _BV()  помогает и ускоряет работу. 1 MHz  против 14 kHz   http://tronixstuff.com/2011/10/22/tutorial-arduino-port-manipulation/


Но в Ардуино точность delayMicroseconds(us)  +_ 3 мкс и даже хуже. 


void MOTOR_RA_TICK() {
  PORTB |= _BV(PB0); //high
  delayMicroseconds(9); //DRV8825 needs 1.9 us    дает 7-10 мкс задержку
  PORTB &= ~_BV(PB0); //low
  delayMicroseconds(9); //DRV8825 needs 1.9 us    дает 7-10 мкс задержку
}

В цикле loop крутится единственная функция STATEMACHINE_loop();
void STATEMACHINE_loop() {
  uint32_t  STATEMACHINE_currMicros = micros();

  if ((STATEMACHINE_currMicros - STATEMACHINE_prevMicros_gotoSpeed) > 63) { //63 мкс прошло
    GOTO_tick();
    STATEMACHINE_prevMicros_gotoSpeed = STATEMACHINE_currMicros;
    return;
  }
  //... тут другие временнЫе периоды по такому же принципу
}




Оффлайн sleeping07

  • ***
  • Сообщений: 149
  • Благодарностей: 16
    • Сообщения от sleeping07
PORTD _BV()  помогает и ускоряет работу. 1 MHz  против 14 kHz   http://tronixstuff.com/2011/10/22/tutorial-arduino-port-manipulation/
По приведенной вами ссылке автор пишет последовательно в 8 портов разом, стоило ему убрать цикл перебора портов - частота выросла с 14 до 15 кГц, а если бы писал в 1 порт - было бы значительно быстрее, поскольку получившаяся частота - сумма 8 операций. Пусть не в 8 раз, конечно, нужны вероятно промежуточные задержки, но все же. 

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
последовательно в 8 портов разом
Кстати, PORTB = b11111111 быстрее, чем дергать каждый порт через _BV

У меня теперь проблема - монтировка бежит через всю окружность, если нужно навести на другой объект. Код не понимает, что объект рядом и можно проскочить через нуль.

Оффлайн toh@

  • *****
  • Сообщений: 4 023
  • Благодарностей: 238
    • Сообщения от toh@
Кстати, PORTB = b11111111 быстрее, чем дергать каждый порт через _BV
Смотрю на все это, и мне очень любопытно, когда уже кто-нибудь придет к мысли забить на скетчи, и написать нормальную прошивку на С под МК (без всяких костылей)...
Astro-Tech 8" f/4+Paracorr(I)+SBIG ST-8300C на NEQ6 Pro, ED-80+0,85, Orion SSAG

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 087
  • Благодарностей: 95
    • Сообщения от Дядя Вова
Кстати, PORTB = b11111111 быстрее, чем дергать каждый порт через _BV
Смотрю на все это, и мне очень любопытно, когда уже кто-нибудь придет к мысли забить на скетчи, и написать нормальную прошивку на С под МК (без всяких костылей)...
Да, вот я тоже пропустил... До прерываний дело уже дошло или еще с задержками мучаемся?
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн Serj

  • *****
  • Сообщений: 4 595
  • Благодарностей: 95
    • Сообщения от Serj
    • Тверской астроклуб
Смотрю на все это, и мне очень любопытно, когда уже кто-нибудь придет к мысли забить на скетчи, и написать нормальную прошивку на С под МК (без всяких костылей)...
А мне любопытно, когда станут использовать нормальные драйверы типа l6470 или Тринамика, и сосредоточатся на главном.
We have met the enemy and he is us.

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
драйверы типа l6470
А в чем преимущество?
Дикий микрошаг на дешевых шаговиках?
Разве что встроенный контроллер и SPI, профиль ускорения. Но тогда логика управления монти другая.
Сейчас считаем шаги, зная их фиксированную частоту. С ускорениями это не прокатит.

Самое смешное, что всё это городить на eq2, eq3-2, eq5, где червяк может быть гнутый с завода и подшипники алюминий по алюминию.

Тогда уж ждите, когда мы пересядем на Лебедя и EQ8 )))

Оффлайн toh@

  • *****
  • Сообщений: 4 023
  • Благодарностей: 238
    • Сообщения от toh@
и сосредоточатся на главном.
... видимо, когда ардуино-сообщество родит функцию готовую на эти драйверы...
Честно говоря, 1/128 для EQ3, EQ5 - нафик не нужно. 1/32 - за глаза. Главное тут - механика монти...
Astro-Tech 8" f/4+Paracorr(I)+SBIG ST-8300C на NEQ6 Pro, ED-80+0,85, Orion SSAG

Оффлайн toh@

  • *****
  • Сообщений: 4 023
  • Благодарностей: 238
    • Сообщения от toh@
... опередили с ответом...
Astro-Tech 8" f/4+Paracorr(I)+SBIG ST-8300C на NEQ6 Pro, ED-80+0,85, Orion SSAG

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
1/128 для EQ3, EQ5 - нафик не нужно. 1/32 - за глаза.
Я не уверен, что Nema17 даже на 1\32 равномерно вращается. Вопрос только в количественной оценке этой неравномерности и какая цифра нас устроит.
А устроит любая, иначе смысл этого огорода. 

Оффлайн Yoda_49

  • Новичок
  • *
  • Сообщений: 31
  • Благодарностей: 0
  • лупоскопый скополун
    • Сообщения от Yoda_49
    • О зрении
Потому что Вам неизвестно скорость выполнения  digitalWrite.
Функцию digitalWrite можно расковырять до "самого низа". В ней куча ненужных проверок и перестраховок. Делал так для arduino due и esp8266 - скорость ногодрыга увеличилась почти на порядок.
Celestron CPC 800
Celestron TravelScope 70
Celestron Outland 10x42
Binoviewer Deepsky

Оффлайн Serj

  • *****
  • Сообщений: 4 595
  • Благодарностей: 95
    • Сообщения от Serj
    • Тверской астроклуб
Сейчас считаем шаги, зная их фиксированную частоту. С ускорениями это не прокатит.
А тут драйвер шаги считает.
... видимо, когда ардуино-сообщество родит функцию готовую на эти драйверы...
Так их море, выбирай любую. Я лично вот этой библиотекой пользовался: https://github.com/DeathByLogic/L6470-AutoDriver/tree/daisy_chain
We have met the enemy and he is us.

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
Ну вот тики на Timer1, норм тикает и 53Гц и 14кГц без особых девиаций.

Вся соль в мат.модели наведения - самое сложное.

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
В продолжении темы самодельного GOTO.

Прошу прокомментировать схемы:

1. Проводной пульт, подключаемый к Ардуино проводом 1-2 метра
2. Ардуино и DRV8825
3. Питание


Оффлайн toh@

  • *****
  • Сообщений: 4 023
  • Благодарностей: 238
    • Сообщения от toh@
В продолжении темы самодельного GOTO.
Прошу прокомментировать схемы:

Чтобы комментировать, нужно видеть всю картину (включая программный алгоритм)...

1. попахивает паранойей: если длина линии не метров 200 и вести до контроллеров не воздушной линией по веткам дубов в грозу, супрессор можно выкинуть.
в остальном, обычное включение кнопки с защитой от дребезга. Низкий уровень активный (что предполагает функция обработки кнопки - не знаю...)
2. опять не понятно, зачем супрессор, (возможно у ардуинеров принято городить все устройства на макетках, соединенных "соплями", работающих на коленках, тогда могу предположить, что это защита от статики...).
1К токоограничивающий - не нужен (хотя от общей схемы зависит). Если ставят, принят стандартный номинал 100 Ом. И то с умом надо ставить, может фронты валить, в зависимости от емкости входа и частоты коммутации...
100К - подтяжка. Нужен, чтобы на время инициализации контроллера (пока выводы в Hi-Z) драйвер не брыкался мотором...
3. Такое ощущение, что кто-то пытался выполнить план по супрессорам...
Обычно ставят в таких случаях либо пару варистор-диод, либо односторонний супрессор (правда он в схеме, почему-то вверх ногами нарисован...), все три элемента не надо точно... В целом очень полезная опция...
Ну и пару дроссель-электролит по-хорошему моделируют (чтобы возбуд не словить), в зависимости от диапазона частот коммутации (на практике ставят что-то среднее, например 3,3uH - 330uF), и при работе осциллоскопом смотрят, чтобы намеков на генерацию не было, если что, корректируют номинал...
Или можно проще - R-C по питанию поставить...

Еще по первым двум - важный момент:
Обычно земли через резисторы подвешивают с четким пониманием, где и для чего это делать...
Если нет - жесткая привязка земли контроллера к общей земле рекомендуется...
Astro-Tech 8" f/4+Paracorr(I)+SBIG ST-8300C на NEQ6 Pro, ED-80+0,85, Orion SSAG

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
Спасибо!

Чтобы комментировать, нужно видеть всю картину (включая программный алгоритм)...
https://github.com/musgravehill/bobGoTo


TVS ставлю от статики - молнии бывают даже от ковра или кота. Причем, двунаправленные - кто знает, какая полярность стукнет.
А TVS у меня есть в запасах - пришлось на Али покупать на 10-50 штук.

Резисторы поставлю 100R на сигнальные линии.
Для кнопок номинал конденсатора и полученного ФНЧ особо не важны.
А вот для STEP-сигнала 15кГц надо подобрать RC цепочку.

По питанию: диод от переполюсовки (сгорит предохранитель), а TVS от сильных помех (откроется при +18В). Диод тоже от помех, только откроется при -*В помехи. 

LC дроссель по питанию драйверов, да, придется смотреть по поводу резонанса.

Землю я сделал 2 видов: чистая и грязная.
Чистая - это AVR с обвязкой.
Грязная - драйверы и кнопки.
Чистая и грязная земли соединяются в 1 месте через резистор 10R.

Оффлайн Boris Green

  • *****
  • Сообщений: 1 458
  • Благодарностей: 74
    • Сообщения от Boris Green
100К - подтяжка. Нужен, чтобы на время инициализации контроллера (пока выводы в Hi-Z) драйвер не брыкался мотором...

В DRV8825 рядом и STEP, DIR, и силовые пины.
Я опасаюсь, что подтяжки AVR может не хватить - поставил доп.подтяжки  100К к GND, чтобы DIR не переключился, когда мотор лупит 15кГц. Бросок тока будет знатный.

Оффлайн toh@

  • *****
  • Сообщений: 4 023
  • Благодарностей: 238
    • Сообщения от toh@
А вот для STEP-сигнала 15кГц надо подобрать RC цепочку.
Так фильтр Вам фронты завалит...
Цепляйте или напрямую или уж тогда просто через 100ом, на крайняк..
По питанию: диод от переполюсовки (сгорит предохранитель), а TVS от сильных помех (откроется при +18В). Диод тоже от помех, только откроется при -*В помехи.
Супрессоры бывают односторонние (стабилитрон), и двухсторонние (два стабилитрона встречно последовательно). Так вот односторонний ставят обычно в цепи питания постоянного тока (после предохранителя). Он как стабилитрон, в одну сторону всегда открыт (как диод, от переполюсовки), а в другую, открывается при превышении порога напряжения... На одностороннем обычно маркировка - полоска как у диода...
Землю я сделал 2 видов: чистая и грязная.
Чистая - это AVR с обвязкой.
Грязная - драйверы и кнопки.
Все относительно... Все земли и линии питания в схеме относительно (более или менее) чистые или грязные... Это условности...
Достаточно на контроллер подать землю отдельным отводом (непроходную для импульсных нагрузок), те звезда с центром на входном блокировочном конденсаторе схемы...
Astro-Tech 8" f/4+Paracorr(I)+SBIG ST-8300C на NEQ6 Pro, ED-80+0,85, Orion SSAG