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


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

Тестирование прошивки для АМС1.5

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

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

Тестирование прошивки для АМС1.5

Сообщение Death_Morozz » 14 апр 2012, 19:10

Изображение
ХОЧЕШЬ? Быть тестером и участвовать в разработке?
Сначала, пиши свои пожелания, концепции и предложения в тему Разработка нового контроллера.

Цели и Техническое Задание: аппаратно - программная разработка. Для модернизации существующего симулятора до состояния - универсальности, безотказной работоспособности, совместимости с существующими моделями.

Только факты и предложения о текущей разработке.

НОВАЯ ВЕРСИЯ XSIMCTRL V2.2 (ENG):
http://simdevice.ru/download/Ale/files/xSimCTRLv2.2eng.rar

Краткий F.A.Q по прошивке РУС/ENG

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

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

Сообщение Ale » 16 апр 2012, 09:17

Ну, я начну, пожалуй. Изображение
Итого, на сегодняшний день, ПО для платы Таноса умеет работать с UART, LCD, мостом Таноса и резисторами в обратной связи. Реализованы два канала управления - 10-битный ШИМ с П-регулированием. ШИМ сделан НЕ ПОД АНАЛОГОВЫЙ ВЫХОД, т.е ноль рассогласования по обратной связи дает 0 на выходе шима. Главный программный цикл вертится с периодом 3.7 мс (для кварца 18 МГц). Я вроде вычитал, что у Таноса этот период равен 2 мс. Поэтому коэффициент регулирования Kp может отличаться от Таносовского.
Сейчас в отладке Энкодеры в качестве датчиков обратной связи.
Предлагаю высказаться на предмет развития функций ПО.
Мои предложения (из вычитанного на форуме)
- Сделать включение/выключение регулирования движков по кнопке. Тут было обсуждение про задержку включения, предлагалось даже реле-замедлитель делать. Сейчас все в наших руках, любые задержки внесем в ПО
- Сделать переключаемым метод регулирования ШИМ - биполярное (для моста Таноса) или ОДНОПОЛЯРНОЕ с "нулем" = 2.5 Вольт. Для аналогового управления частотниками.
- Как переключать энкодеры/резисторы , видимо в прошивке, потому как энкодеры будут иметь разные характеристики. С другой стороны - никто не мешает нам сделать вполне себе терминальную программу для "тонкой" настройки контроллера.

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

Сообщение Pavel155 » 16 апр 2012, 16:59

Подключил к ПЧ.
Работает, позиционирует, но медленно, буду корректировать Кр.
Есть предложение по модернизации:
Что есть: когда m_set и m_por = 0 - отключается выхода PORTD, но т.к. двигатель не может точно остановиться в позиции (например 127 126(127)мигает), маленький ШИМ остается. При этом слышно как ПЧ дает малый ШИМ на двигатель и тот стоя на месте шумит.
Что сделать: добавить отключение ШИМ. Сделать мертвую зону.


(Добавление)
Работа ограничителей.
Щас работа сделана так m1_pos <= sensorDN
если я хочу сделать защиту от проворота больше чем 4, например 100. Получается, что данные от 0 до 100 не будут обрабатываться МК. Тоже самое сверхним пределом.
Тот диапазон, что остается между sensorUP и sensorDN должен быть в пределе от 0 до 255.
Вариант: read_adc - sensorDN = отметка старта.
Иногда пропадаю. Пишите в личку.
Аватара пользователя
Pavel155
SIMER
 
Сообщения: 172
Зарегистрирован: 06 июл 2011, 10:39
Откуда: Саратов
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Баллы репутации: 20
Новичок

Сообщение null » 16 апр 2012, 20:38

Прошивка работает, а это не может не радовать. Огромное спасибо автору!!!

А теперь о недостатках. Прошивка с KP5 не завелась совсем почему-то, пробовал несколько раз. KP10 завелась, но тут соглашусь с Павлом. Медленно позиционирует, но при резком скачке неминуемо проворачивает мотор. После проворота контроллер теряет контроль на двигателем, до тех пор пока его не вернешь на место внешним воздействием. Самый простой способ вернуть двигатели на место для меня оказалось - обратно заливать прошивку Таноса. Если это не "баг", а "фича", то ее надо сделать отключаемой. Т.к. проворот например в моем симе - авария несущественная.

Pavel155
Само по себе ограничение диапазона контроллером, вещь отличная и я согласен что это обязательно нужно добавить в настройки контроллера. Сейчас я могу порекомендовать воспользоваться матплагинами хсим - percent scaler или percent limiter. Я лично давно пользуюсь scaler'ом. Он работает немного интересней простого лимитера.

Итого сейчас как мне кажется основная проблема - регулирование и реализация изменения и сохранения настроек контроллера.

(Добавление)
Pavel155 писал(а):Тут было обсуждение про задержку включения, предлагалось даже реле-замедлитель делать. Сейчас все в наших руках, любые задержки внесем в ПО

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

Сообщение Ale » 17 апр 2012, 14:01

Если это не "баг", а "фича", то ее надо сделать отключаемой.

Это "баг", который испортил "фичу". Т.е. это неправильная работа ограничителей, которые заложены в программу, и предназначены для ограничения рабочего диапазона датчиков. Своего рода - аналоги концевых выключателей, только программные. В первой реализации этой функции не было учтено направление вращения двигателя. В следующей версии прошивки будет исправлено.

Да было бы хорошо иметь какой-либо сигнал готовности для нмоста.

Предлагайте - сделаем. Только не "какой-либо", а как лучше реализовать?

Итого сейчас как мне кажется основная проблема - регулирование и реализация изменения и сохранения настроек контроллера.

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

А теперь о недостатках.

Будем устранять Изображение

(Добавление)
Что сделать: добавить отключение ШИМ. Сделать мертвую зону.

Сделано, тестируется...

Работа ограничителей.
Щас работа сделана так m1_pos <= sensorDN
если я хочу сделать защиту от проворота больше чем 4, например 100. Получается, что данные от 0 до 100 не будут обрабатываться МК. Тоже самое сверхним пределом.
Тот диапазон, что остается между sensorUP и sensorDN должен быть в пределе от 0 до 255.
Вариант: read_adc - sensorDN = отметка старта.

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

Сообщение null » 17 апр 2012, 14:35

Ale писал(а):Предлагайте - сделаем. Только не "какой-либо", а как лучше реализовать?

Практически это просто лог "1" на какой либо ноге при готовности контроллера. Можно также будет управлять нмостом при получении из ком порта определенной управляющей последовательности байт. Например в хсим есть фишка "Datapacket sent at simulator start" и "stop". Таким образом при желании можно будет включать/выключать нмост из хсим.
Ale писал(а):Можно даже спец прогу скостомить на быструю руку, в которой на компе будут всякие "окошечки" для ввода параметров, "ползунки" для проверки,"кнопочки" для записи настроек в EEPROM контроллера. По мне, это может быть удобнее, чем терминалом пользоваться.

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

Сообщение Ale » 17 апр 2012, 15:15

Практически это просто лог "1" на какой либо ноге при готовности контроллера. Можно также будет управлять нмостом при получении из ком порта определенной управляющей последовательности байт. Например в хсим есть фишка "Datapacket sent at simulator start" и "stop". Таким образом при желании можно будет включать/выключать нмост из хсим.

Про лог1 на ноге при готовности - не понял. У моста есть два входа включения - Motor IN1 и Motor IN2. Если оба в нуле, то мост отключен. Так вот, у меня в софте мост отключен сразу по этим выходам, и включается только когда контроллер готов. Другое дело, готов к чему? Может сделать, к примеру, первое включение моста только по приходу данных от компьютера? Или все же по тумблеру, который пользователь может включать-выключать по своему усмотрению? Или по команде с компа?

Да, конечно это было бы прикольно. Кроме того если бы эта прога умела рисовать графики с требуемым/текущим положением мотора для настройки, ей бы не было цены

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

Сообщение null » 17 апр 2012, 15:42

Ale писал(а):Про лог1 на ноге при готовности - не понял. У моста есть два входа включения - Mitor IN1 и Motor IN2.

Одновременно контроллер с прошивкой таноса и нмост включать нельзя по причине кратковременного замыкания в мосте. Железо выдерживает, но непрятный осадок все же остается. Что именно с прошивкой не так разбираться не стал, т.к. исправить это было невозможно.
Поэтому я поставил отдельный тумблер на нмост и включал его только после запуска контроллера. Т.к. тумблеры включения питания на нмост грелись и со временем выходили из строя, я решил установить реле. Заодно и сделал RC цепочку для задержки включения чтобы больше не приходилось щелкать лишние кнопки.
В общем сейчас моя идея в том, чтобы управлять питанием двигателей (или реле) при помощи контроллера.
Ale писал(а):Может сделать, к примеру, первое включение моста только по приходу данных от компьютера? Или все же по тумблеру, который пользователь может включать-выключать по своему усмотрению? Или по команде с компа?

Все эти условия в различных ситуациях могут быть интересны, поэтому вполне достойны реализации. А применение того или иного способа может быть настраиваемо.
Ale писал(а):Ооо... Графики - это мое любимое занятие

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

Сообщение Ale » 17 апр 2012, 16:39

Одновременно контроллер с прошивкой таноса и нмост включать нельзя по причине кратковременного замыкания в мосте. Железо выдерживает, но непрятный осадок все же остается. Что именно с прошивкой не так разбираться не стал, т.к. исправить это было невозможно.

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

Сообщение Death_Morozz » 17 апр 2012, 18:07

Думаю, от этого можно избавиться простой подтяжкой на землю ножек Motor1 In1 b In2 через резисторы порядка 5-10 Ком.


Наверное, отправим это в faq, пусть практики используют, посмотрят результат.

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

Сообщение null » 17 апр 2012, 18:46

Ale писал(а):Думаю, от этого можно избавиться простой подтяжкой на землю ножек Motor1 In1 b In2 через резисторы порядка 5-10 Ком.

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

Сообщение Ale » 18 апр 2012, 08:58

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

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

Теперь, что касается регулирования. После анализа высказываний на форуме (сам пока опыта не имею) пришел к выводу, что одного параметра Kp не хватает. При малом Kp нет перелетов на больших регулирующих воздействиях, но вяленько на слабых. И наоборот.

Так что решил ввести вместо одного - два Kp, которые динамически меняются в программе в зависимости от ЗАДАНИЯ на перемещение. Т.е. в процессе отработки ШИМом очередного задания, пришедшего по UART Kp не изменяется. А изменяется он только при получении новой точки от Компа. При этом логика такая - если разница между двумя последовательными точками от компа больше порога "KpTh" - то вместо Kp ставится KpHi. Если же меньше - то подставляется KpLo. На следующей посылке от компа опять проводится анализ ...
По умолчанию в программе стоят KpHi = 10 (для больших перемещений) и KpLo = 20 (для малых). Алгоритм настройки может быть следующим - если хотим иметь один Kp (как у Таноса) - выставляем одинаковый KpLo и KpHi. А вот если хотим нового чего - тогда подбираем порог переключения KpTh и выставляем разные Kp для больших и малых перемещений.

И еще, введена она переменная - для мертвой зоны, что бы двигатель не работал, если отклонение не превышает величины +/- MinD.

Это все в терминах, которые можно увидеть в ТЕРМИНАЛЕ для настройки прошивки.
В терминал попадаем по 1 джамперу, как у Таноса.

И еще, в прошивке ограничители на резисторы выставлены так, что бы (для резистора 270 градусов) ограничить зону регулирования в 180 градусов. Рабочая зона - в центре резистора. При этом а AVREF нужно подавать +5В

(Добавление)
Свежие прошивки для двух кварцев и с возможностью терминального управления лежат тут.

http://files.mail.ru/BM3LJL

Исходники - по запросу ))


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

Сообщение Ale » 18 апр 2012, 13:29

PS: Тут такая возникает дилемма: совместимость - либо правильность?!

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

Сообщение Ale » 26 апр 2012, 17:01

Как то не густо нынче с тестерами Изображение . Спасибо AlexVr за первый реальный тест и отзыв. И особое спасибо Pavel155. Собственно благодаря ему и появилась очередная версия прошивки, в которой реализовано все, что разработчикам казалось полезным.
А именно:
1 - через терминал появилась возможность настраивать рабочую зону датчиков обратной связи (абсолютных, таких как резисторы или датчики Холла). Настраивается это дело отдельно для каждого датчика. Параметры Sens1(2)Lo (нижняя граница) и Sens1(2)Hi (верхняя граница).
2 - появилась поддержка энкодеров в качестве датчиков обратной связи. Энкодеры присоединяются к ножкам порта B контроллера: 0,1 для первого канала и 2,3 для второго. Кроме энкодеров необходимо подсоединить концевые выключатели ( 0В - если сработал концевик) к ножкам порта A: 4(низ), 5(верх) для первого канала и 6(низ), 7(верх) для второго.
3 - в связи с появлением энкодеров в прошивку включена процедура начальной калибровки, которая запускается по подаче 0 (кнопкой) на ножку 2 порта А. При этом оси опускаются вниз до упора в концевики и программа фиксирует нулевую позицию осей
4 - процедура калибровки может вызываться и из софта сима передачей на контроллер сообщения 0x41, 0x42, 0x7F, 0xXX, 0xXX .

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

Собственно прошивки тут:

http://files.mail.ru/I9O1JP

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

Сообщение Death_Morozz » 26 апр 2012, 20:34

Pavel155 - отпишись, а то пропал в приватах, IMHO..

P.S.: Практики с энкодерами (вместо датчиков Холла и потенциометров (переменных резисторов)), делитесь своими наработками в этой теме - если практики.
Создавайте темы - описания своих симуляторов , если подобная тема отсутствует!

Ваш сим тоже нужен и интересен!

И ещё, -это важно для доработки контроллера - до идеального состояния.

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

След.

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

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

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

cron
x

#{title}

#{text}