45

Слава роботам! Оно заработало!⁠⁠

Серия Новый астротрекер не совсем из говна и палок

Итак, хорошие новости. Вчера как следует загуглил проблему своего тупящего трекера, а именно - судорог двигателя и отсутствия вращения.

В процессе гугления местный ИИ (Gemini), которого я попросил проанализировать скетч автора OG трекера, сообщил, что в коде есть ошибка и один недостаток, смотрим сюда:

const int EN=2; //ENABLE PIN

const int Step=3; // STEP PIN

const int dir=4; // DIRECTION PIN

void setup()

{

pinMode(EN,OUTPUT); // ENABLE AS OUTPUT

pinMode(dir,OUTPUT); // DIRECTION AS OUTPUT

pinMode(Step,OUTPUT); // STEP AS OUTPUT

digitalWrite(dir,HIGH);

}

void loop()

{

digitalWrite(dir,HIGH);

digitalWrite(Step,HIGH); // STEP HIGH

delay(66.48 ); // WAIT

digitalWrite(Step,LOW); // STEP LOW

delay(66.48); // WAIT

}

Что мы видим?

Задействованы пины D2...D4 для выходов Enable, Step и Direction соответственно.

А дальше?

Смотрим Void setup и видим, что несмотря на то, что пин D2 у нас - Enable, функция выходу не придана.

А TMC2209 любит, когда сигнал с пина Enable имеет значение LOW. А у нас никакого значения нет.

Я провел опыт, отсоединив провод от пина Enable и мотор вовсе заглох (что странно, т.к. без управляющего сигнала этого выхода все равно что нет).

Чтобы это исправить, вставляем перед строчкой digitalWrite (dit, HIGH) строчку digitalWrite (EN, LOW)

На выходе имеем:

const int EN=2; //ENABLE PIN

const int Step=3; // STEP PIN

const int dir=4; // DIRECTION PIN

void setup()

{

pinMode(EN,OUTPUT); // ENABLE AS OUTPUT

pinMode(dir,OUTPUT); // DIRECTION AS OUTPUT

pinMode(Step,OUTPUT); // STEP AS OUTPUT

digitalWrite(EN, LOW);

digitalWrite(dir,HIGH);

}

void loop()

{

digitalWrite(dir,HIGH);

digitalWrite(Step,HIGH); // STEP HIGH

delay(66.48); // WAIT

digitalWrite(Step,LOW); // STEP LOW

delay(66.48); // WAIT

}

Обратите внимание, что вместо просто delay, измеряемой в миллисекундах у нас написано delayMicroseconds и указано число в 1000 раз большее.

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

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

ВАЖНОЕ ДОПОЛНЕНИЕ:

Всё-таки код в этой части лучше не трогать. В случае микросекунд вращается слишком быстро.

КОД ВЫШЕ - ПРАВИЛЬНЫЙ И 100% РАБОЧИЙ!!! Все ошибки исправлены.

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

Разобрал штекер, переставил контакты, все заработало ровно и тихо. Ура, я молодец! Ну и все, кто помогал советами в комментариях к предыдущему посту - вы крутые, спасибо!

Вечером соберу трекер обратно (пришлось разбирать) и буду ждать неба!

P.S.: по дурости чуть не спалил Ардуино. Когда засовывал ее в кроватку, то ошибся на зуб и она сдвинулась. Появился дымок, но я вовремя отрубил питание и ничего не успело сдохнуть.

Слава роботам! Оно заработало!

Исследователи космоса

20.5K постов50K подписчиков

Правила сообщества

Какие тут могут быть правила, кроме правил установленных самим пикабу :)

0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Чтобы взять готовую библиотеку, надо знать что за библиотека и где ее взять.

Еще буквально недавно, когда я только взялся за этот астротрекер, я знал только что Ардуино существует. На этом моя осведомленность заканчивается)

Какие скетчи? Какие коды??? Темный лес для меня. Вот когда взялся за это и начал разбирать, тогда и начало понимание приходить. Но опять же - не настолько, чтобы как-то радикально править чей-то код, непонятный мне практически полностью.

С этими тремя строчками вроде разобрался и на том спасибо)

Надо этим вплотную заниматься, конечно, чтобы самому можно было что-то простенькое накропать с моторчиками. Но пока я полный ноль) В любом случае, спасибо за мнение.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества