Автор Тема: Ардуино контроллер поворотки  (Прочитано 364629 раз)

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

Оффлайн RC3UE

  • Ветеран
  • *****
  • Сообщений: 1507
  • Репутация: +281/-72
  • 13 el F9FT/21 el F9FT
  • QRA: LO07NG
Re: Ардуино контроллер поворотки
« Ответ #1320 : 06 Май 2020, 23:08:37 »
Делал такое,на заднем конце вала сельсина делал легкую секторную шторку ,которая перекрывала проход светового потока между светодиодом и фотодатчика в нужном секторе ,тем самым тормозя движения поворотки. Применял в то время оптический узел от мышки.
Это то же самое первое, что мне пришло в голову.
НО! Один нерешаемый (для меня) вопрос - как "объяснить" ардуине, "с какой стороны" (против часовой, или наоборот) прилетел алярм?
И соответственно - в какую сторону запускать "обратку"?
Мы  на UA3R сделали так. На ось сельсин-приемника приклеили магнит и поставили в качестве датчика AS5045.
Аналогичный вопрос..
И очень бы хотелось увидеть код (участок кода) скетча, обрабатывающий этот момент.
« Последнее редактирование: 06 Май 2020, 23:32:28 от RC3UE »
73! Александр RC3UE (ex RA3UJ, UA3UES)

Оффлайн UA3RAW Андрей

  • Ветеран
  • *****
  • Сообщений: 1534
  • Репутация: +279/-36
  • <-- CU -->
  • QRA: LO02rr
Re: Ардуино контроллер поворотки
« Ответ #1321 : 07 Май 2020, 12:41:45 »

И очень бы хотелось увидеть код (участок кода) скетча, обрабатывающий этот момент.
В rotator_features.h  разрешить:
#define FEATURE_AZ_POSITION_HH12_AS5045_SSI
#define OPTION_AZ_MANUAL_ROTATE_LIMITS   // this option will automatically stop the L and R             
commands when hitting a CCW or CW limit (settings                                                                        are AZ_MANUAL_ROTATE_CCW_LIMIT, AZ_MANUAL_ROTATE_CW_LIMIT)


При использовании аппаратного датчика (концевика):
#define FEATURE_LIMIT_SENSE
В rotator_pins.h установить ногу, на которой будет концевик.
#define az_limit_sense_pin 0 // input - low stops azimuthal rotation

В rotator_settings.h:
#define AZIMUTH_STARTING_POINT_DEFAULT 0 
#define AZIMUTH_ROTATION_CAPABILITY_DEFAULT 359
// Settings for OPTION_AZ_MANUAL_ROTATE_LIMITS
#define AZ_MANUAL_ROTATE_CCW_LIMIT 0  // if using a rotator that starts at 180 degrees, set this to something like 185
#define AZ_MANUAL_ROTATE_CW_LIMIT 359  // add 360 to this if you go past 0 degrees (i.e. 180 CW after 0 degrees = 540)
« Последнее редактирование: 07 Май 2020, 13:06:00 от UA3RAW Андрей »
73!
Андрей, UA3RAW.

Оффлайн RC3UE

  • Ветеран
  • *****
  • Сообщений: 1507
  • Репутация: +281/-72
  • 13 el F9FT/21 el F9FT
  • QRA: LO07NG
Re: Ардуино контроллер поворотки
« Ответ #1322 : 07 Май 2020, 16:41:26 »
Андрей, спасибо за внимание, но к сожалению, это не то, что нужно..
Дело в том, что я не собираюсь повторять контроллер K3NG. Поэтому, define мне в данном случае не помогут..
Мне нужен всего лишь алгоритм обработки ситуации "прохождения через ноль". И кусочек кода его реализации.
Для использования в своём проекте, более простом и с другим функционалом.

Посмотрел весь код K3NG - увы, самостоятельно мне не выцепить из него необходимое.. :(

Я наверное, зря задал вопрос в этой теме. Возможно, надо было создать новую, но уж очень подходящая показалась..

73! Александр RC3UE (ex RA3UJ, UA3UES)

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 638
  • Репутация: +193/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1323 : 07 Май 2020, 19:49:43 »
НО! Один нерешаемый (для меня) вопрос - как "объяснить" ардуине, "с какой стороны" (против часовой, или наоборот) прилетел алярм?

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

У K3NG, если в качестве датчика используется геркон (нет однозначного понимания направления вращения) импульсы с геркона считаются только в случае нажатия кнопки направления вращения.
Вам надо сделать что-то похожее, так как данные с сельсина вы не получаете в ардуино.
Best regards and 73!
Gleb RM5P

Оффлайн RC3UE

  • Ветеран
  • *****
  • Сообщений: 1507
  • Репутация: +281/-72
  • 13 el F9FT/21 el F9FT
  • QRA: LO07NG
Re: Ардуино контроллер поворотки
« Ответ #1324 : 07 Май 2020, 20:30:21 »
Если проблема понять, с какой стороны достигнут предел вращения и нет абсолютного энкодера, то учитывайте в коде, какая кнопка в данный момент нажата.
Спасибо! Решение одной половины проблемы есть.
А как решить вторую?
Например, в момент прихода поворотки в точку "алярма", произошло аварийное отключение питания.
Или банально выключил всё "хозяйство" и ушёл спать, позабыв вернуть антенну в "предаварийное положение".
Как тут быть? Сохранять во внешней памяти последнее состояние кнопок поворота и статус датчика?
Или как-то пооригинальнее возможно сиё решить? Да и тут, мне кажется, есть подводные камни..

...так как данные с сельсина вы не получаете в ардуино.
Это да. Но если воспользоваться вариантом, который предложил UA3RAW (датчик на AS5045), то наверное возможно и абсолютное значение направления антенны можно получить в любой момент.
Или я ошибаюсь?
Правда, для меня этот вариант тоже вряд ли подъёмен в плане самостоятельного написания обработчика для AS5045.
Учитывая то, что про него я узнал всего лишь несколько часов тому назад..
73! Александр RC3UE (ex RA3UJ, UA3UES)

Оффлайн Bogdan

  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +1/-0
  • Подпись находится в стадии разработки
  • QRA: KO84ov
Re: Ардуино контроллер поворотки
« Ответ #1325 : 08 Май 2020, 11:31:19 »
Всем  привет. 
Делаю балконный вариант  поворотки пока на UNO для работы через спутники. Привод - двуоссевая поворотка для камеры наблюдения. Моторы на 220в. В качестве датчиков  многооборотные резисторы c Алиэкспресс  на 10 ком типа Bourns. Так вот,  после  калибровки  имеется несовпадение показаний  ардуины  и реального угла азимута. Тему читал, но внятного ответа для себя не получил.
Подскажите как с этим  бороться.   
Заранее признателен.   

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 638
  • Репутация: +193/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1326 : 08 Май 2020, 12:35:43 »
Как тут быть? Сохранять во внешней памяти последнее состояние кнопок поворота и статус датчика?

Видимо да, я с ходу вариантов не вижу. Только писать не статус кнопки а последние направление вращения. Подводный камень тут в ресурсе записи данных в энергонезависимую память arduino. Он там критически мал. Придется ставить внешнюю память.

По поводу AS5045. На самом деле там все очень не сложно. Минимального умения читать datasheet и программирования должно хватить. Я писал обработчик для похожей микросхемы только с интерфейсом I2C. Давно это было, лет 7 назад, подробностей уже не помню, но чего то сильно сложного не помню.
А с SPI интерфейсом еще проще должно быть.
Best regards and 73!
Gleb RM5P

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 638
  • Репутация: +193/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1327 : 08 Май 2020, 12:40:21 »
В качестве датчиков  многооборотные резисторы c Алиэкспресс  на 10 ком типа Bourns. Так вот,  после  калибровки  имеется несовпадение показаний  ардуины  и реального угла азимута.

На сколько именно не совпадает? Я вижу две причины которые могут быть, это нелинейность резистора или шаг АЦП ардуино (там всего 254 отсчета). Какую точность вы хотите получить и какая получается?
Best regards and 73!
Gleb RM5P

Оффлайн Bogdan

  • Новичок
  • *
  • Сообщений: 12
  • Репутация: +1/-0
  • Подпись находится в стадии разработки
  • QRA: KO84ov
Re: Ардуино контроллер поворотки
« Ответ #1328 : 08 Май 2020, 13:45:24 »
Спасибо что откликнулись
Ну если 250  выборок то  точность как я понимаю  получается  1.44*.
Вчера весь вечер убил на калибровку. Север принял за точку отсчета  и калибровал по процедуре много раз описанной. O enter <180*ccw-enter-F>cw 360*(возвращаюсь к точке 180*, но с противоположной стороны)-enter.   В итоге даже крайние точки калибровки  сохраняются  не правильно?  Чуть позже приду домой  и опишу поточнее.   

Оффлайн RC3UE

  • Ветеран
  • *****
  • Сообщений: 1507
  • Репутация: +281/-72
  • 13 el F9FT/21 el F9FT
  • QRA: LO07NG
Re: Ардуино контроллер поворотки
« Ответ #1329 : 08 Май 2020, 15:28:20 »
Видимо да, я с ходу вариантов не вижу. Только писать не статус кнопки а последние направление вращения.

Ну да, именно так. Неправильно выразился.. Ну и плюс статус датчика.
Вот только пока не могу сходу сообразить, флаг какого "направления"  изначально (после заливки прошивки, до первого включения) писать в память?
Вроде как безразлично.. Или всё же будет необходимо три флага: "первый старт", "влево", "вправо"?
Подводный камень тут в ресурсе записи данных в энергонезависимую память arduino. Он там критически мал. Придется ставить внешнюю память.
Ну с этим (внешняя память) проблем у меня как раз и не предполагается, т.к. в конструкции предполагается наличие "часов" DS3231, которые имеют на борту память 24С32.
Процедуру работы с памятью я надеюсь осилить. Путём "плагиата" из другого кода. ;)
По поводу AS5045. На самом деле там все очень не сложно. Минимального умения читать datasheet и программирования должно хватить.
А вот с этим,увы, проблема..
Да и наверное, учитывая наличие сельсинов, ни к чему оно мне будет.
Лишнее усложнение конструкции и напряжение мозга, который уже давно работает со скрипом. :)
Отполировать и доработать готовое, возможно и смогу, а вот создать с нуля.. Увы, уже не по силам..
Полагаю, что "фотодатчика" будет вполне достаточно.
73! Александр RC3UE (ex RA3UJ, UA3UES)

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 638
  • Репутация: +193/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1330 : 08 Май 2020, 16:17:19 »
Вроде как безразлично.. Или всё же будет необходимо три флага: "первый старт", "влево", "вправо"?

Уж точно все равно при первой заливки прошивки. Так как при первом же нажатии на кнопку он изменится на правильный.
И вообще, поставьте два датчика со смещением и шторку пошире. Чтобы она перекрывала оба датчика в конечном положении. У вас будет чуть больше 360 градусов, зато не надо морщить мозг над алгоритмом учета направления движения. Достаточно будет отслеживать последовательность срабатывания.
Можно вообще на жесткой логике без микропроцессоров реализовать.
Best regards and 73!
Gleb RM5P

Оффлайн RC3UE

  • Ветеран
  • *****
  • Сообщений: 1507
  • Репутация: +281/-72
  • 13 el F9FT/21 el F9FT
  • QRA: LO07NG
Re: Ардуино контроллер поворотки
« Ответ #1331 : 08 Май 2020, 16:33:05 »
И вообще, поставьте два датчика со смещением и шторку пошире. Чтобы она перекрывала оба датчика в конечном положении.
Ну да, от старой компьютерной мыши, например. Там как раз два фотодиода.
А как посоветуете обрабатывать сигнал с датчиков в ардуине?
Прицепить на прерывания, или будет достаточно тупо опрашивать в loop?
Примером кода обработчика можете поделиться, или ссылкой откуда его выдрать?
73! Александр RC3UE (ex RA3UJ, UA3UES)

Оффлайн UA4FQH

  • Ветеран
  • *****
  • Сообщений: 1893
  • Репутация: +322/-20
  • QRA: LO33ib
Re: Ардуино контроллер поворотки
« Ответ #1332 : 08 Май 2020, 20:04:47 »
Ставлю концевики, так сделано во всех поворотках. Это независимый узел от контроллера.  Например,  залипли контакты у реле приводов у вашей аурдины, и поехали.  Смотрите схему  поворотки  YAESU.  Там всё понятно.                                             
                                                                                                                                                         73. Олег
73! Олег.

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 638
  • Репутация: +193/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1333 : 08 Май 2020, 20:14:32 »
А как посоветуете обрабатывать сигнал с датчиков в ардуине?

Я стараюсь вешать на прерывания.
Это не сложно, зато не думаешь, что там в loop может затормозить.
Best regards and 73!
Gleb RM5P

Оффлайн RM5P

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 638
  • Репутация: +193/-4
  • QRA: KO84VH
Re: Ардуино контроллер поворотки
« Ответ #1334 : 08 Май 2020, 20:15:11 »
Примером кода обработчика можете поделиться,

Обработчика чего?
Best regards and 73!
Gleb RM5P