MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

ArduinoMega 6-dof универсальная прошивка.

Строим реалистичный симулятор перегрузок своими руками. Рекомендации. Советы.

Модераторы: Death_Morozz, null, Ale

ArduinoMega 6-dof универсальная прошивка.

Сообщение Ale » 20 апр 2014, 00:00

Начну я пожалуй.

Как и обещал - подготовил универсальную прошивку для расширяемых систем. Естественно - вместе с программой настройки. Пока прошивка существует только для Arduino Mega 2560, но надеюсь скоро адаптировать ее и для Arduino Uno / Duemilanove

Прошивка написана на CodeVisionAVR. Загрузка в Arduino осуществляется утилитой Xloader

Вот некоторые фичи проекта:
- разрядность всех каналов ШИМ - 8 бит.
- поддержка любого количества осей (от 1-й до 6-и) без специальных ухищрений.
- специальный режим 2-dof совместимый по пинам с Monster Motor Shield (с двумя сигналами ДИР1/2 на ось).
- полный ПИД регулятор для каждой оси.
- несколько переключаемых режимов управления:
--- классический ШИМ+ДИР с настраиваемой частотой генерации ШИМ, ( фикс. значения от 70 Гц до 70 кГц ),
--- "аналоговый" ШИМ с нулем на уровне 2.5 вольта,
--- режим управления сервоприводами.
- экспериментальная поддержка UltraSonic обратной связи.
- программные "ограничители" для датчиков обратной связи.
- период регулирования ПИД порядка одной миллисекунды в любом режиме.
- оперативная передача данных на компьютер для визуализации и настройки.

Недоделки:
- пока не прикрутил "сквозную" трансляцию данных от SimTools сквозь xSimCtrl на Ардуину. Обязательно прикручу.

Протокол управления
Скорость обмена - 500 кБод
Управляющая "посылка" - строка (по три символа на ось).
Первый символ - название оси из списка 'L','R','X','Y','Z','W'
Второй и третий символы - байт в HEX формате (от '00' до 'FF')
ПРИМЕР L7FR00XFF
Длина "посылки" - произвольная. Для 2dof управления достаточно передать 6 символов, для 3dof - 9 символов и т.д

уфф. ладно, это затравка. Буду продолжать постепенно. Заодно и интерес пощупаем :lol:
Приглашаю коллег к тестированию и обсуждению.


ЗЫ: Прежде чем включать силовое питание обязательно убедитесь на каких нибудь "светодиодах" что все работает как надо. Ибо сказано - "ПРОГРАММ БЕЗ ОШИБОК НЕ БЫВАЕТ" :D

ЗЫЗЫ: Режим совместимости с MonsterMotorShield еще не проверял, возможно он пока не полный, так что пока не торопитесь с подключением "монстра". Проверю - дам отмашку.

xSim6_ArdMega_firmware.rar
собственно прошивка
(15.24 КБ) Скачиваний: 319

xSimCtrl_6dof.rar
Утилита для настройки и визуализации данных
(274.63 КБ) Скачиваний: 298

XLoader.rar
Утилита для загрузки *.hex файлов в Arduino
(438.03 КБ) Скачиваний: 223

Wiring table.pdf
Таблица назначений выводов
(113.93 КБ) Скачиваний: 395
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение Death_Morozz » 20 апр 2014, 20:46

ага, поймали.
Хочешь сделать хорошо - сделай это сам.
Изображение
Аватара пользователя
Death_Morozz
Фраерок
 
Сообщения: 2839
Зарегистрирован: 11 янв 2007, 23:35
Откуда: Ростов-на-Дону
Благодарил (а): 822 раз.
Поблагодарили: 312 раз.
Баллы репутации: 200
ТехнарьТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 20 апр 2014, 21:55

Монстр!!! Я в ступоре. Столько всего нового. Нужно хороший мануал с картинкам.
Что дает полный пид. В чем будет ощутимое преимущество?
А есть режим для простых частотников в которых нет возможности отрегулировать аналоговый ШИМ с нулем на уровне 2.5 вольта? То есть, есть аналоговый вход от 0 до 5 вольт что регулирует скорость мотора, а направление уже задается цифровыми входами.
Вижу программа еще не до конца сформирована. Предлагаю еще такой вариант. Есть симулятор например 2dof используется только два каналы другие в простое, почему бы не задействовать например для дополнительных гаджетов (спидометры, датчики, индикаторы, эффект ветра, и тд ). Но они все могут отличаться разными требованиям выходного сигнала из Ардуино. Предлагаю сделать для каждого канала настройки выходного сигнала. Конечно это извращение, можно и не отвечать на предложение :)
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение Ale » 20 апр 2014, 22:38

Привет, CraCk ;)

CraCk писал(а):А есть режим для простых частотников в которых нет возможности отрегулировать аналоговый ШИМ с нулем на уровне 2.5 вольта? То есть, есть аналоговый вход от 0 до 5 вольт что регулирует скорость мотора, а направление уже задается цифровыми входами.

Не понял? ШИМ от 0 до 5 вольт и направление отдельным сигналом? Так это основной режим работы каналов.

CraCk писал(а):Вижу программа еще не до конца сформирована. Предлагаю еще такой вариант. Есть симулятор например 2dof используется только два каналы другие в простое, почему бы не задействовать например для дополнительных гаджетов (спидометры, датчики, индикаторы, эффект ветра, и тд ). Но они все могут отличаться разными требованиям выходного сигнала из Ардуино. Предлагаю сделать для каждого канала настройки выходного сигнала.


Да, программа еще "сырая". Отдельно для каждого канала довольно сложно сделать.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение null » 22 апр 2014, 09:22

Ale
Приветствую! Очень хорошо что не бросил эту затею, честно говоря снова импульс появился для восстановления сима. Спасибо!

CraCk писал(а):Предлагаю еще такой вариант. Есть симулятор например 2dof используется только два каналы другие в простое, почему бы не задействовать например для дополнительных гаджетов (спидометры, датчики, индикаторы, эффект ветра, и тд ).

Рад тебя видеть! Такие вещи мне кажется стоит реализовывать на отдельных девайсах. Я делал именно так - проблем не было.
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 22 апр 2014, 12:40

Ale писал(а):Не понял? ШИМ от 0 до 5 вольт и направление отдельным сигналом? Так это основной режим работы каналов.

Ок с ШИМ разобрались. Но как с управляющими сигналами для режима 6dof там только один dir сигнал? А для частотника нужно два сигнала так как в режиме Motor Shield 2dof.
Для моего варианта Thanos Н-bridge тоже нужно использовать 2dof режим?
null писал(а):Такие вещи мне кажется стоит реализовывать на отдельных девайсах.

Не спорю, согласен ;)
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение Ale » 22 апр 2014, 13:44

CraCk писал(а):Ок с ШИМ разобрались. Но как с управляющими сигналами для режима 6dof там только один dir сигнал? А для частотника нужно два сигнала так как в режиме Motor Shield 2dof.
Для моего варианта Thanos Н-bridge тоже нужно использовать 2dof режим?

Я изначально ориентировался на плату Arduino Uno. Так вот у нее принципиально нет столько ножек, что бы реализовать 6-доф с двумя пинами направления для каждой оси. Но в принципе для Arduino Mega это вполне можно осуществить.
Да, для моста Таноса нужно по два управляющих сигнала на каждый канал.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 22 апр 2014, 13:56

Ale писал(а):Я изначально ориентировался на плату Arduino Uno.

Можно на Arduino Uno сделать максимум 3-4dof. С полным набором параметров.
За одно можно будет объединить режим 2-dof с 6-dof совпадением пинов. Что защит от случайного переключением режимов в xSimCtrl
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение Ale » 22 апр 2014, 20:16

CraCk писал(а):Можно на Arduino Uno сделать максимум 3-4dof. С полным набором параметров.
За одно можно будет объединить режим 2-dof с 6-dof совпадением пинов. Что защит от случайного переключением режимов в xSimCtrl

Юр, мне категорически не нравятся мосты, для которых надо ДВА пина направления держать. Просто потому, что вероятность ОДНОВРЕМЕННОЙ подачи единицы на оба пина довольно велика. А это приведет к сгоранию моста.
На мой взгляд проще (и лучше) доработать мост введением доп. микросхемы, которая будет ОДИН сигнал подавать на два входа моста заведомо в противофазе.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 22 апр 2014, 22:29

Ale писал(а):Юр, мне категорически не нравятся мосты, для которых надо ДВА пина направления держать.

Конечно такие мосты ненадежные. Но я веду к тому что такой вариант с ДВОМА пинами комфортней использовать для частотников. Я не фанат систем с использованием асинхронных двигателей, они мене не по карману :( . Но если создается прошивка с 6-dof это значит что 90% контингента будут использовать частотники.
Вариант с двумя пинами для частотников можно исключить, если такой подход тоже может повредить частотник или мотор.
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 27 апр 2014, 11:31

Всем привет!
Прошил Mega 2560. Не могу связать МК с xSimCtr. Какую скорость порта в xSimCtr и диспетчере устройств устанавливать? Пробовал 9600, 115200. Ни какие данные не принимает и не передает. МК отключен от всех соединений н-моста и ОС.
Какую частоту ШИМ ставить для моста Таноса?
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение Ale » 28 апр 2014, 06:39

CraCk писал(а):Всем привет!
Прошил Mega 2560. Не могу связать МК с xSimCtr. Какую скорость порта в xSimCtr и диспетчере устройств устанавливать? Пробовал 9600, 115200. Ни какие данные не принимает и не передает. МК отключен от всех соединений н-моста и ОС.
Какую частоту ШИМ ставить для моста Таноса?


Привет. Читаем внимательнее топик :lol: Там написано, что скорость обмена - 500 кбод. В диспетчере устройств ничего менять не надо. Только в xSimCtrl настроить порт. И установить 2 стоповых бита, 8 бит данных, без паритета.

Что касается частоты ШИМ - то можно пробовать любую. Для начала поставь 7 кГц. Я читал некий труд, в котором автор довольно убедительно показывал, что управлять моторами лучше вообще в "прерывистом" режиме. Т.е давать на некоторое время Максимальное напряжение, а затем на некоторое время отключать напругу вовсе. Именно для проверки его идеи у меня появился экзотический режим ШИМ - 70 герц. Хорошо бы поэкспериментировать с ним.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 28 апр 2014, 17:11

Ale писал(а):Привет. Читаем внимательнее топик

Ну что поделаешь. Лузер Я :).
А почему в диспетчере устройств не нужно менять скорости и параметры бытности? Как влияет параметр "2 стоповых бита"?
Кажись в xSimCtrl перепутаны местами axis Z и axis W относительно вывода данных на график.
Пока что все ;) Продолжаю тестить.
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение CraCk » 12 май 2014, 21:46

Появилось немного свободного времени. Решил протестировать прошивку в режиме 2dof с тестером в руках :)
И так по порядку:
1)Если изменить SensLO c 100 на 950, а SensНІ с 950 на 100. тогда перестает отображаться данные SET, POS, PWM также не рисуются палки на той осе которой произвел изменение. Только ADC изменяется.
2)После использования кнопки Reset на МК во время передачи\приема данных. Невозможно восстановит соединение. Приходиться полностью обесточивать МК и закрывать xSimCtrl.
3)Тестером проверил каналы PWM_L-пин5 и PWM_R-пин6. Оказалось что работает только PWM_R и то сразу на двух каналах. PWM_L простаивает в любом случае независимо каким потенциометром крутить. тоже самое относиться к IN_R1 - IN_R2.
4) Очень не хватает пояснения к всем параметрам. Смотрю на них как баран на ........
5)Непонятным остается рисования графиков.
Аватара пользователя
CraCk
SIMER
 
Сообщения: 371
Зарегистрирован: 31 мар 2010, 21:25
Откуда: Made in Ukraine
Благодарил (а): 67 раз.
Поблагодарили: 104 раз.
Баллы репутации: 112
ТехнарьТехнарь

Re: ArduinoMega 6-dof универсальная прошивка.

Сообщение Ale » 13 май 2014, 09:04

Гуд, пройдусь с тестером и осциллографом еще раз. И попробую хоть кратенький мануальчик соорудить
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

След.

Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 188

cron
x

#{title}

#{text}