Я не знаю как доказать но мое мнение с подсветкой датчики работают стабильнее. Пусть будет подсветка . Для примера попробуйте вынести телевизор на солнышко улицу с пульта ДУ не всегда получится переключиться.
На солнышко - оно понятно, там спектр засветки практически непрерывный и в ИК диапазоне вполне себе велик. А вот в помещениях, да под машинкой - вовсе не так. Но .. вам видней как делать, не настаиваю. Просто рассказал как теперь сделано у нас.
Мне сейчас куда любопытней кто и с какими алгоритмами поедет .. есть какие-то "прорывные" идеи или все тот же неподходящий ни разу ПИД? ИМХО конечно, некоторые его вполне успешно запинывают и для скоростной линии. Правда машина "не Ардуино" ни разу ..
Мы попытались ещё на Робофесте представить таблично смоделированную и сильно нелинейную (как оказалось) функцию управления с учетом центробежных сил (перенос веса) и мех. характеристики моторов. Но, похоже этот способ себя тоже исчерпал... вот и интересно, будет ли что-то "новенькое" на этот раз?
Кстати, кто-то где-то встречал описание алгоритмов управления от "лидеров" таких соревнований .. ну вот КАК они едут 14-и метровую трассу за 5.23сек?
У нас пока ещё фоток нет, есть одно кривое видео для контроля .. видимо - суеверен. Месяц назад пробовали выйти на минимальный вес, собирали в 150гр., но моторы N20 с редуктором 10:1 оказались фатально слабы, отказались. Более-менее тянут 1.5в моторы (Rя=3.5 ома) от 8в (2S Li-ion), но их хватает не более чем на 4-6 часов покатушек чистого времени, далее - на выброс. В отличии от 130-х моторов, у которых снашиваются щетки, тут истирается коллектор якоря. Пришлось уйти на такие же 130-е моторы, только "самопальные" (7.2в - 1А, 100гр*см на валу и 11тыс. об. в мин. на ХХ) и редуктор самодельный 6:1. Общий вес возрос до 265гр. (242гр без "декоративных" элементов Лего), но даже такие моторы нормально тянут только 30-е леговские колеса. На 45-х идет хуже, про 49-е вообще лучше не вспоминать. Макс. скорость по прямой около 2.5 м/сек. Но реализовать её полностью так и не удалось. В переводе нашего табличного управления на ПИД получается что диф. коэффициент выходит за возможности ШИМ-управления (-255,+255).
Те, что тут выложены в начале темы как "образцы" для подражания имеют штатный вес в районе 110-150гр. Но, наш подход обрамлять всё в лего детальки и использовать лего как конструктивное соединение - не позволяет выйти на такие веса... тяжелое оно "лего".
Да, и Клапауций как понимаю теперь - полностью не прав, утверждая что "японцы запоминают трассу". Такой подход может и возможен, но маловероятно что используется на практике. И уж точно не на базе Ардуино УНО/Нано/Мега с их "куриной памятью".. :)
Да, и Клапауций как понимаю теперь - полностью не прав, утверждая что "японцы запоминают трассу". Такой подход может и возможен, но маловероятно что используется на практике. И уж точно не на базе Ардуино УНО/Нано/Мега с их "куриной памятью".. :)
я то здесь при чём? это японцы - с них и спрашивай, почему они не правы и знают ли они, что дуино нужно на свои машинки ставить.
Ну и? Ни у кого нет идей КАК можно ехать 14-метровую трассу на 5-6 секунд, да на которой есть повороты под 90* с радиусом в .. 75 миллиметров? :-)
Идеи о том, что нужно сделать, чтобы двигаться в указанном направлении, есть, и я их высказывал:
1. Измерять скорость в м/с, а ускорение - в м/с2, а не все "в единицах ШИМ".
2. Провести численное моделирование движении машинки по трассе, чтобы выяснить, на что можно надеяться, и понять, в какую сторону копать.
1. Мне по-прежнеу ни разу не понятно как выбор системы единиц измерения, СИ, СГС, или ШИМ + попугаи АЦП влияют на результат. Может Вы и правы и надо измерять скорость в м/сек а момент в н*м, но мне как-то ближе и проще в гр*см, а для практического применения не переводить попугаи АЦП в вольты: например, согласно опорному 5В, показания в 112 попугаев дает около 0.55в и, чем мне это помогает? Как очевидно - ничем. Точно также скорость вращения мотора на ХХ при напруге в 8.2в равная 11200 об/мин (замерено датчиком) полностью соответствует значению ШИМ = 255. А если "нет разницы", зачем измерять в том, что требует пересчетов в программе, да ещё и в виде float, на камне, который даже нацело и то делит "столбиком"?
Я право не понимаю в чем разница..
2. Проведено. Без применения "спец средств", улучшающих сцепление с трассой качественно, ехать трассу Робофеста быстрее около 6сек .. нереально. Она имеет всего 9.6м длины (замерено) и только 2 крутых поворота радиусом .. 130 и 150мм.
Как быть?
В догонку, на этом Робофинисте, машинки со "спец. средставами" (импеллер, прижимающий машинку к трассе - "доп. вес") показали скорость около 4.6сек на типовой широкой трассе .. против около 7-8сек. для "обычных машинок" .. и? Вроде как в ваши формулы "вес" не входит и вовсе даже? :-)
На практике, Робофестовская трасса (она просто типовая) проезжается на проспиртованных колесах и мытой с мылом трассой за 6.2 - 6.5сек не только лишь нами .. есть ещё. Быстрее - не видел. Но это для достаточно ЛЕГКИХ тележек.
И ещё: ДПТ на постоянных магнитах (это все то что используется на практике N20, N30, 130, 280 etc.) при фикс. напруге, имеют линейную характеристику падения скорости вращения от нагрузки на валу мотора, которая достаточно легко считается. Так при прямолинейном движении - это по сути - сила трения качения, у которой коэффициент трения практически постоянен для очень широкого спектра и много где принимается равным 0.03. Отсюда, зная подаваемое напряжение (эффективное от заданного ШИМ, ибо на моторе стоит достаточно "большой" конденсатор исполняющий роль интегратора) и вес - можно получить скорость прямого движения согласно скорости мотора и имеющимся колесам.
Что мешает считать напрямую эту скорость в ШИМ-попугаях, а не м/сек?
andriano, это не стеб, я на самом деле не понимаю где "разница"..
...Точно также скорость вращения мотора на ХХ при напруге в 8.2в равная 11200 об/мин (замерено датчиком) полностью соответствует значению ШИМ = 255.
Вы заблуждаетесь.
Если "значение ШИМ 255" и соответствует "11200 об/мин при 8.2В", то никак не "полностью", а лишь в одном частном конкретном случае: в статическом режиме и при фиксированной нагрузке. Стоит изменить нагрузку или просто изменять напряжение (единицы ШИМ) во времени, как ваше "соответствует" идет лесом.
Цитата:
А если "нет разницы", зачем измерять в том, что требует пересчетов в программе, да ещё и в виде float, на камне, который даже нацело и то делит "столбиком"?
Я право не понимаю в чем разница..
В том, что поведение реальной тележке подчиняется дифференциальному уравнению с несколькими переменными, но никак не простейшей линейной зависимости от одной единственной переменной.
Цитата:
2. Проведено.
Не верю.
Невозможно провести численное моделирование процесса, описывваемого дифференциальным уравнением (причем, кстати, не одним), не понимая даже отличия дифференциального уравнения от линейного.
Что мешает считать напрямую эту скорость в ШИМ-попугаях, а не м/сек?
andriano, это не стеб, я на самом деле не понимаю где "разница"..
Про "мешает" я ничего не утверждал. Я лишь утверждал, что считать подобным образом радикально не соответствует физике явления. Соответственно, раз Вы неправильно описываете задачу, у Вас практически нет шансов поймать оптимальное решение. Поскольку Вы его ищете не там, где оно находится, а там, где можно быстрее вычислить. (в полной аналогии с анекдотом: не там, где потерял, а там, где светлее).
Да с какого боку оно НЕ соответствует физике процесса-то?!? Я вот ЭТОГО как раз и не помгу понять, уж извините за эмоциональность, но Вы толчете одну и ту же воду в ступе без каких-либо пояснений от слова "совсем". Неужели так сложно разъяснить вопрос?
Во-первых, как в статике с конкретным напряжением и без нагрузки (режих ХХ) ШИМ есть ПРЯМОЕ соответствие реальным оборотам в минуту, так и ДИНАМИКЕ он совершенно точно определяется тем же самым ШИМ, но ЧЕРЕЗ МЕХАНИЧЕСКУЮ характеристику мотора, которая для конкретного движка ИЗМЕРЯЕТСЯ с любой требуемой точностью НЕПЕРЕД.
Да, при падении напряжения на моторе, один и тот же ШИМ будет соответствовать разным оборотам, но черех мех. характеристику (и она в данном случае ЛИНЕЙНА!) легко вычисляется такое изменение.
Да, при возрастании нагрузки на моторе точно так же ШИМ будет давать разные обороты на двигле согласно .. своей мех. характеристике и она .. упс. В широком диапазоне нагрузок .. опять линейна!
"Я лишь утверждал, что считать подобным образом радикально не соответствует физике явления."
andriano, ну так я и прошу показать в каком конкретном месте оно не соответствует, да ещё и "ради-кально" :-)
Там вся физика достаточно примитивна и легко моделируется:
Процесс разгона по прямой - есть инерционная масса тележки, момент инерции колес, есть к-т трения с трассой + мех. характеристика мотора + электрические ТТХ драйвера (просадка напряжения и гашение импульсов самоиндукции мотора). Что тут сложного сложит "2+2" в динамике с дискретностью в 1-2 миллисекунды и получить цифровую модель разгона?
Процесс торможения - практически аналогично, те же самые "2+2" в обратном порядке..
На процесс движения в повороте накладывается только центробежная сила, которая также легко считается по радиусу и размерно-весовым параметрам тележки ...
Где эта ваша "радикальное несоответствие"? не понимаю .. чесслово надеюсь на развернутое пояснение с вашей стороны..
Ну и про это "Невозможно провести численное моделирование процесса, описывваемого дифференциальным уравнением (причем, кстати, не одним), не понимая даже отличия дифференциального уравнения от линейного." тоже:
Яндекс "численное решение дифференциальных уравнений" .. нашлось 50млн. ответов. ... в чем проявляется ваша "невозможность"? В "непонимании" мною, чего именно? Того что в каждый конкретный момент времени имеем "баланс сил и моментов", зависящий от скорости движения, инерции всей тележки и моментов инерции колес и самой тележки относительно оси поворота, а также трение передней опоры и её влияние или что? Неизвестность мех. характеристики моторов или не учет момента инерции якоря или выбросов самоиндукции при рекурперативном режиме торможения?
Где то "непонимание", за которое Вы пишете и видимо имеете сами? Или делиться такими знаниями и моделями как-бы "не принято" в среде "чемпионов трасс"?
То моделирование, что проведено мною, показывает наглядно почему ПИД регулятор принципиально НЕ подходит для достижения предельных режимов движения согласно "физике процесса" (по трению колес)... да, в итого там далеко НЕ линейные зависимости, которые не моделируются линейным "П" (фикс. к-т, подбираемый "настройкой") и плохо исправляются через константное/линейное (фикс. к-т) "Д" и тем более "И", который зачастую выбрасывается многими за ненадобностью и результаты на трассах показывают верность такого решения...
2. Ограничено допустимым габаритом тележек. У каждого вида соревнований они свои, но фиксированы. Это раз, и второе - практика показывает что существует оптимальный вынос и выносить далее - просто бессмысленно.
3. Это какое? В смысле что Вы понимаете под "активным" торможением в части движения со скоростями предельными или за предельными согласно ограничению по к-ту трения колес?
Последнее поясню: движение по трассе ограничено "физикой", а именно коэффициентом сцепления колес с трассой. Для очень хорошей "резины" он составляет 0.8 и даже 0.86. Соответственно, скорость в повороте (70-80-90 % движения по трассе) ограничивается этим параметром и без применения "спец. средств" (мягкие силиконовые колеса изменяющие профиль пятна от веса + импеллеры, прижимающие тележку к трассе + ..) движение ограничено и его скорость невелика. А если учесть "люфты", несоосности колес и прочие дефекты сборки, то предел скорости движения составит не более 80% от теории, что изложена в начале этой темы в посте andriano.
Повстеместно применяется ПИД регулятор, у которого "Д" как правило выстраивается много больше "П", что приводит к дополнительной проблеме, а именно "микропотерям сцепления с трассой" из-за резких изменений скорости вращения колеса под высоким "Д". Особенно сильно сказывается на тяжелых тележках, несмотря на то, что в теор. предел вес вроде как и не входит совсем..
Вопрос поставлен мною примерно так: какие ухищрения ПО способны улучшить движение по трассе БЕЗ применения "спец. средстсв"? То есть интересны программные решения вопроса.
Да с какого боку оно НЕ соответствует физике процесса-то?!? Я вот ЭТОГО как раз и не помгу понять, уж извините за эмоциональность, но Вы толчете одну и ту же воду в ступе без каких-либо пояснений от слова "совсем". Неужели так сложно разъяснить вопрос?
Во-первых, как в статике с конкретным напряжением и без нагрузки (режих ХХ) ШИМ есть ПРЯМОЕ соответствие реальным оборотам в минуту, так и ДИНАМИКЕ он совершенно точно определяется тем же самым ШИМ, но ЧЕРЕЗ МЕХАНИЧЕСКУЮ характеристику мотора, которая для конкретного движка ИЗМЕРЯЕТСЯ с любой требуемой точностью НЕПЕРЕД.
Да, при падении напряжения на моторе, один и тот же ШИМ будет соответствовать разным оборотам, но черех мех. характеристику (и она в данном случае ЛИНЕЙНА!) легко вычисляется такое изменение.
Да, при возрастании нагрузки на моторе точно так же ШИМ будет давать разные обороты на двигле согласно .. своей мех. характеристике и она .. упс. В широком диапазоне нагрузок .. опять линейна!
Ну в чем проблема-то?
Движение тележки описывается несколькими дифференциальными (в общем случае нелинейными) уравнениями. А Вы говорите о каких-то линейных коэффициентах. Еще раз:
Движение описывается не алгебраическим, а дифференциальным уравнением.
Механическая характеристика двигателя снимается в (квази)стационарных условиях, т.е. характеористика статическая, динамику она описывать принципиально не может.
Вообще говоря, ШИМ в какой-то мере аппроксимирует среднее напряжение только для омической нагрузки. В случае нагрузки нелинейной или индуктивной - там весьма своеобразная зависимость, которую я детально не исследовал (скажу только, что максимум потребляемого тока приходится отнюдь не на максимум среднего напряжения), поэтому тут могу лишь утверждать, что присутствует не просто нелинейность, а даже немонотонность.
Ну ладно, давайте посмотрим, что происходит с тележкой в приближении постоянного напряжения на двигателе.
Итак, поехали:
- в начальный момент скорость тележки равна 0, ЭДС смоиндукции обмоток за счет вращения также равна 0, ток быстро (но не мгновенно - из-за индукции) возрастает, а вмесите с ним возрастает момент на валу.
- этому моменту противостоит мимент инерции колеса и сила трения колеса с опорной поверхностью.
- в некоторый момент сила трения достигает своего максимального значения (считаем, что постоянная времени нарастания тока существенно меньше постоянной времени разгона колеса/тележки, хотя здесь тоже неплохо бы промоделировать процесс, чтобы убадиться в этом), после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
- если до этого процесс еще обладал некоторым подобием линейности (или, по крайней мере, полиномиальной функции - и то - от времени, а не от приложенного напряжения), то при срыве колеса ни о какой линейности (даже дифференциального уравнения) речи уже идти не может.
- в общем, колесо постепенно разгоняется, разгону по прежнему противостоит момент инерции колеса и сила трения скольжения. В то же время по мере разгона возрастает противоиндукция, которая вычитается из приложенного напряжения. Соответственно, ток, а вместе с ним и момент - падают.
- тележка постепенно разгоняется, при этом ее скорость не совпадает со скоростью вращения колеса (за счет проскальзывания).
- далее, по мере разгона, момент на колесе падает и наступает момент максимальной скорости вращения колеса.
- теперь по мере разгона тележки скорость вращения колеса падает из-за того, что уменьшается момент за счет ЭДС.
- в какой-то момент времени скорость тележки (увеличивающаяся) и скорость вражения колеса (уменьшающаяся) совпадут. Восстановится контакт колеса с поверхностью. Резко возрастет коэффициент трения (переключившись с коэффициента трения скольжения на коэффициент трения покоя). После этого (при неизменном напряжении) колесо уже не будет терять контакта с поверхностью. Но толко до тех пор, пока мы не изменм напряжение. Мы ведь не собираемся, однажды включив его, больше никогда не менеять?
А теперь смотрм, что у нас получилось: в течение всего описывавемого времени напряжение на двигателе оставалось постоянным, т.е., судя по Вашим статическим характеристикам, постоянными также должны были бы быть скорость вращения колеса и скорость движения тележки, а тем временем каждая из указанных скоростей изменялась по своему закону. При том, что начальная и конечная точка у них совпадали. Если бы это были линейные функции (хотя по-вашему, они должны быть вообще константами), то, как известно, через две точки можно провести только одну прямую. А у нас явно получается две неосвпадающие линии, которые только из этого факта несовпадения не могут быть прямыми.
И теперь объясните, как Вы собираетесь описывать данный процесс разгона, имея только зависимость скорости на холостом ходу от напряжения и механическую характеристику (суть зависимость скорости вращения от момента).
Еще раз обращу Ваше внимание, что весь описываемый мною процесс происходил при фиксированном напряжении на двигателе.
Механическая характеристика двигателя снимается в (квази)стационарных условиях, т.е. характеористика статическая, динамику она описывать принципиально не может.
неверно в принципе, ибо теория двигателей пост. тока разработана давно и детально. Всё считается по достаточно простым формулам, поищите.
andriano пишет:
Вообще говоря, ШИМ в какой-то мере аппроксимирует среднее напряжение только для омической нагрузки. В случае нагрузки нелинейной или индуктивной - там весьма своеобразная зависимость, которую я детально не исследовал (скажу только, что максимум потребляемого тока приходится отнюдь не на максимум среднего напряжения), поэтому тут могу лишь утверждать, что присутствует не просто нелинейность, а даже немонотонность.
Есть такое, но не настолько явно выражено как Вам кажется. В первом приближении двигатель можно считать омической или "почти" омической нагрузкой .. косинус фи там в районе 0.85-0.9 Так что для ДПТ на магнитах ШИМ апроксимирует скорость на валу достаточно неплохо как изменяемое напряжение. Отличия для малых ШИМ и скоростей .. как раз из-за индуктивности, но они как раз не существенны ибо не используются на практике (скоростное движение)
andriano пишет:
Ну ладно, давайте посмотрим, что происходит с тележкой в приближении постоянного напряжения на двигателе.
Итак, поехали:
- в начальный момент скорость тележки равна 0, ЭДС смоиндукции обмоток за счет вращения также равна 0, ток быстро (но не мгновенно - из-за индукции) возрастает, а вмесите с ним возрастает момент на валу.
- этому моменту противостоит мимент инерции колеса и сила трения колеса с опорной поверхностью.
- в некоторый момент сила трения достигает своего максимального значения (считаем, что постоянная времени нарастания тока существенно меньше постоянной времени разгона колеса/тележки, хотя здесь тоже неплохо бы промоделировать процесс, чтобы убадиться в этом), после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
Этот момент "старта" неинтересен в процессе моделирования ни разу. Интересует движение, то есть после того как колесо сдвинулось с места..
- если до этого процесс еще обладал некоторым подобием линейности (или, по крайней мере, полиномиальной функции - и то - от времени, а не от приложенного напряжения), то при срыве колеса ни о какой линейности (даже дифференциального уравнения) речи уже идти не может.
andriano пишет:
- в общем, колесо постепенно разгоняется, разгону по прежнему противостоит момент инерции колеса и сила трения скольжения. В то же время по мере разгона возрастает противоиндукция, которая вычитается из приложенного напряжения. Соответственно, ток, а вместе с ним и момент - падают.
- тележка постепенно разгоняется, при этом ее скорость не совпадает со скоростью вращения колеса (за счет проскальзывания).
Верно отчасти. Если скорость разгона колеса превышает трение - то да. Но это как правило не интересный вариант и скорость разгона спец. снижают для исключения такого режима движения. ШИМ увеличивается плавно, а не скачком 0->255. Скорость плавного увеличения ШИМ как раз и зависит в ПИД регулировании по большей части от "Д" (переход с поворота на прямую и вот тут - Вы правы) или задается явно (и ограничивается как раз по этому требованию).
Можно принять что для скоростного движения тележка НЕ ДОЛЖНА срываться на "микрозанос" при разгоне.
andriano пишет:
- далее, по мере разгона, момент на колесе падает и наступает момент максимальной скорости вращения колеса.
- теперь по мере разгона тележки скорость вращения колеса падает из-за того, что уменьшается момент за счет ЭДС.
- в какой-то момент времени скорость тележки (увеличивающаяся) и скорость вражения колеса (уменьшающаяся) совпадут. Восстановится контакт колеса с поверхностью. Резко возрастет коэффициент трения (переключившись с коэффициента трения скольжения на коэффициент трения покоя). После этого (при неизменном напряжении) колесо уже не будет терять контакта с поверхностью. Но толко до тех пор, пока мы не изменм напряжение. Мы ведь не собираемся, однажды включив его, больше никогда не менеять?
В общем, тут тоже применимо все замечания выше..
andriano пишет:
А теперь смотрм, что у нас получилось: в течение всего описывавемого времени напряжение на двигателе оставалось постоянным, т.е., судя по Вашим статическим характеристикам, постоянными также должны были бы быть скорость вращения колеса и скорость движения тележки, а тем временем каждая из указанных скоростей изменялась по своему закону.
Верно. моделирование подтверждает все ваши заключения. Если у мотора "хватает дури" (что крайне редко на практике!) то да. Можно получить все нестационарности, описанные Вами в т.ч. и в модели.
andriano пишет:
При том, что начальная и конечная точка у них совпадали. Если бы это были линейные функции (хотя по-вашему, они должны быть вообще константами)
Нигде не писал что они у меня - константы. Вроде как даже наоборот писал об этом у ПИД-регулирования и как обоснование его НЕПРИМЕНИМОСТИ.
andriano пишет:
, то, как известно, через две точки можно провести только одну прямую. А у нас явно получается две неосвпадающие линии, которые только из этого факта несовпадения не могут быть прямыми.
И теперь объясните, как Вы собираетесь описывать данный процесс разгона, имея только зависимость скорости на холостом ходу от напряжения и механическую характеристику (суть зависимость скорости вращения от момента).
Еще раз обращу Ваше внимание, что весь описываемый мною процесс происходил при фиксированном напряжении на двигателе.
Ответил выше. Процесс разгона не является движением при "неизменном напряжении на двигателе" со всеми вытекающими последствиями. В общем-то вопрос был иной: интересен процесс прохождения поворотов и изменения параметров движения с учетом предельных и запредельных скоростей согласно трения..
Ну и в догонку, повторю свой вопрос ещё раз: где в описываемом характере разгона, пусть даже сильно нестационарном, ШИМ не является эквивалентом оборотов мотора (не колеса!) ? Вы как раз показали ПРИМЕНИМОСТЬ такой "единицы измерения" даже тут. :)
Смотря как и что считать. Если делать в целочисленной арифметике (у нас uint16_t имитация фикс. точки в дробях 1/128, пробовали long в дробях 1/256 особой разницы не заметили, примерно то на то и выходит), то расклад получается примерно такой: считывание датчиков блоком АЦП - 3 замера на 7 датчиков в режиме 79ksps (частота АЦП НАНО = 1Мгц) - около 400 мксек со всей арифметикой фильтров, пересчет целочисленного ПИД (если про него речь) - ещё около 400мксек, управление моторами от 100 до 1200 мксек. и + пауза до след. цикла loop() - около 2500 мксек. Итого весь цикл управления в районе 3-4мсек. Управлять моторами чаще - во первых нет никакого смысла ибо "постоянная мотора" в районе 8-30 миллисекунд, смотря какой мотор-редуктор-колесо, а во-вторых, придется переходить на ШИМ с большей частотой, ибо 490гц типового ШИМ это чуть меньше 2мсек. Такой переход болезненно скажется на соответствии малых значений ШИМ оборотам мотора, и придется поднимать минимально допустимую скорость движения. Значения ШИМ ниже этого порога у нас просто заменяются остановкой мотора ибо не имеют смысла вовсе, даже на ходу, когда второе колесо как-бы помогает и тянет.
Ну и ещё. Наш мосфетный драйвер (есть темка в проектах) не поддерживает режим торможения короткозамкнутым ротором. Соответственно можем или остановить мотор "на выбег" или "рекурперативное торможение" резким вращением "взад".. последнее продлевает срок работы батарейков подзаряжая аккумы "на ходу", но и только.
Ну и уже писал, что на скоростях движения(разворота) в 3метра в сек, тележка за 1мсек "пролетает" соответственно 3 миллиметра трассы, за 4мсек - уже 12мм. На тонкой линии (15мм) уже можно запросто проскочить линию датчиками при быстром развороте.
Главная проблема - мало программного времени на реакцию по датчику. ..
Собственно - да, проблема именно в этом. Даже конкретней: проблема в недостатке времени на проведение управляющего воздействия согласно средней скорости движения и постоянной времени объекта управления.
Так это ТС уже 7 страниц разные люди в разных терминах пытаются вдолбить. А ему все пропорционально! Похоже тема создана для того, чтоб все задолбались разяснять что нельзя игнорировать механику и автор в конце сказал, что никто так и не смог помоч.
По сути, напомню таксказать.
1. У телеги и ей частей есть масса и момент инерции, скорости линейная и угловая не могут изменится мгновенно при любой конечной мощности привода (в дальнейшем эту особенность именую динамическое свойство для краткости). Потому тезис ШИМ=скорость - ересь супротив механики Нютона.
2. Степени свободы телеги не есть независимыми - нельзя вернутся на линию не продвинувшись вдоль ней и не совершив поворот телеги вокруг вертикальной оси и изменения скорости колес. Отсюда требуется учет динамических свойств п.1.
3. При учете динамических свойст выяснится, что все требует времени. Время требует механика, а не кривой и тормознутый код. В код проблема лечится. В механике почти нет, попытка лечить в механике сразу вызовут рост массы со всеми последствиями. Вобщем не лечится, только новую делать.
4. Для получения запаса времени на п.3 необходимо как можна ранее узнавать о положении относительно линии. Датчики вперед выносить.
5. Телега - не материальная точка, и даже не жесткая система. Имеет массу следствий: перераспределения усилий между колесами; сигнал с датчика характеризует не только линейный уход с линии но и угол поворота к ней.... Это не игнорить, хотя и очень хочется т.к. оно сильно усложняет дело.
6. В заносы не входить, расчет этого безнадежно сложен. Тут бы с изложеным разобратся. Только после разбора осторожно подумать про занос.
7. Определить расчетно и эксперементально граничные возможности системы не в терминах "крутится волчком" а цивилизовано: минимальный радиус трассы в ххх мм устойчиво проходит на скорости ууу м/с; без потери скорости проходится радиус R мм; быстрый разгон без пробуксовки согласно такому графику.... и так по всем режимам движения. Тут видеосемка в помощ будет.
8. В алгоритме должны быть проверки на условия п.7. Никакой ПИД не заставит делать механику то, что её динамика не позволит. А если попробует - занос, пробуксовка и пр. нерасчетное поведение.
Что делать? С учетом п.1-п.6 строить матмодель. Да, с дифурами. Просчитывать по модели и проверять экспериментально границы из п.7. Совпало - виват! Несовпало - искать ошибки. Имея модель - пооптимизировать механику иногда чудеса бывают. Тут станет понятно на что телега годна или может новую делать. Дальше просто кодим согласно п.8. Да, малой это не потянет, недецкое это все.
неверно в принципе, ибо теория двигателей пост. тока разработана давно и детально. Всё считается по достаточно простым формулам, поищите.
неверно в принципе, т.к. для того, чтобы написать роман в стихах совершенно необязательно учить весь алфавит и тем более - уметь складывать буквавы в слова, а слова в предложения. Как писать буквы "А", "Б" и "В" детально давно известно. Зная эти три буквы, просто написать роман в стихах, поищите.
Цитата:
В первом приближении двигатель можно считать омической или "почти" омической нагрузкой .. косинус фи там в районе 0.85-0.9
Уважаемый, вы путаете двигатель постоянного тока с асинхронным двигателем переменного тока.
Цитата:
Этот момент "старта" неинтересен в процессе моделирования ни разу. Интересует движение, то есть после того как колесо сдвинулось с места..
100% моего поста посвящено именно "после того как колесо сдвинулось с места". Так что это именно то, чего Вам хотелось.
Цитата:
Верно отчасти. Если скорость разгона колеса превышает трение - то да. Но это как правило не интересный вариант и скорость разгона спец. снижают для исключения такого режима движения.
ВЫ сами себе противоречите: если необходимо "исключить", значит, нужно понять, при каких условиях то, что нужно исключить, возникает. То есть - "вариант интересный". Неинтересен он может быть при одном единственном условии: если Вы, не зная условитий возникнгвения проскальзывания, настолько снижаете момент на валу, что проскальзывание становится невозможным в принципе. Но при таком ограниченном моменте Вы заведомо будете прихродить к финишу последним. Если Вас это устраивает, зачем было поднимать настоящую тему?
Цитата:
ШИМ увеличивается плавно, а не скачком 0->255.
Я рассмотрел простейший случай - неизменного постоянного напряжения. Любое изменение, в первую очередь, плавное - существенно усложняет задачу.
Не нужно сразу хвататься за сложную задачу - попытайтесь сначала решить простую.
Цитата:
Нигде не писал что они у меня - константы. Вроде как даже наоборот писал об этом у ПИД-регулирования и как обоснование его НЕПРИМЕНИМОСТИ.
г-н Журден тоже не знал, что разговает прозой.
Я лишь перевожу с Вашего языка на более или менее наукообразный.
И давайте ПИД пока отложим. Нам с обыкновенным дифференциальным уравнением движения бы для начала разобраться.
Цитата:
Ответил выше. Процесс разгона не является движением при "неизменном напряжении на двигателе" со всеми вытекающими последствиями.
Еще раз: чтобы приступить к моделированию с изменяющимся напряженем на двигателое, нужно сначала освоиться с более простой задачей - неизменного напряжения.
Цитата:
В общем-то вопрос был иной: интересен процесс прохождения поворотов и изменения параметров движения с учетом предельных и запредельных скоростей согласно трения..
Еще раз:
прежде, чем пытаться сформулировать задачу в двумерной постановке с двумя ведущими колесами и моментом инерции тележки, давайте сначала убедимся, что мы в состоянии решить гораздо более простую задачу - с единственнвм колесом, движущимся по прямой (вдоль единственного измерения).
PS. Какой-то сбой с цитированием, чтобы было понятно, кто что пиал, выделил све свои ответы жирным.
Ну и в догонку, повторю свой вопрос ещё раз: где в описываемом характере разгона, пусть даже сильно нестационарном, ШИМ не является эквивалентом оборотов мотора (не колеса!) ? Вы как раз показали ПРИМЕНИМОСТЬ такой "единицы измерения" даже тут. :)
Вы действиетльно не поняли ни слова из моего ответа или просто решили меня потроллить?
На протяжении всего моего рассуждения скорость непрерывно изменялась, а величина ШИМ оставалась строго постоянной. Или что Вы подразумеваете под "эквивалентом"?
Вот скажите, где экспонента не эквивалентна константе?
На всякий случай еще раз отвечу на Ваш вопрос (точнее, три раза - для надежности):
- ШИМ нигде не является эквивалентом скорости,
- ШИМ никогда не является эквивалентом скорости,
- ШИМ ни в одной точке не является эквивалентом скорости.
Шим это скорее величина импульса который мотор передает тележке на колеса. При движении тележка теряет часть импульса на трение и сопротивление воздуха. Если эти импульсы равны, то тележка движется равномерно. Иначе тележка ускоряется или тормозится. Но это если линия прямая. При кривой надо вычислять и уметь передать боковые корректирующие импульсы. Вот только тележка движется не космосе. И поэтому надо еще и предусмотреть конструкцию тележки, что бы эти импульсы правильно были направлены.
У меня стойкое ощущение диалога глухого со слепым. Ко всем учатсникам дисскуссии, в т.ч. и к себе тоже.. :)
andriano, давайте ещё раз. Вы пишете что "ШИМ не является", я пытаюсь Вам донести что "является через мех. характеристику мотора" и тем не менее, ещё раз:
"Итак, поехали: - в начальный момент скорость тележки равна 0, ЭДС самоиндукции обмоток за счет вращения также равна 0, ток быстро (но не мгновенно - из-за индукции) возрастает, а вместе с ним возрастает момент на валу"
Словами все писано верно .. в теории. Теперь давайте уточнять на практике этот "начальный момент": какова индукция мотора? Ответ: около 200мГн. Как быстро нарастает ток в якоре? Ответ U=L*di/dt или или скорость нарастания тока будет: di/dt = U/L = 8в / 0.2гн или 40 ампер в сек. Ток начала вращения якоря на ХХ можно принять за 0.1А, соответственно двигатель начнет вращаться через 0.1/40 = 2.5мсек. Это и есть причина моей фразы: начальный момент не интересен ни разу. Что там происходит в первые 2.5 (и даже больше!) миллисекунд - НЕ ИНТЕРЕСНО.
В общем, теперь надеюсь понятно почему отписал "не интересно". Ну да ладно, как быстро будет нарастать крутящий момент на валу двигателя? Ответ: ровно с той же самой скоростью, с какой нарастает ток ибо для ДПТ на пост. магнитах - момент равен M=Cя*Ф*I, где поток магнитов постоянен. И, если для 1А имеем момент в 65 гр*см, то не сложно понять что момент нарастает со скоростью 40*65 (гр*см/сек) или 2600 (гр*см/сек) или на 2.6 гр*см каждую миллисекунду. Это пока мотор стоит, что, ещё раз, не интересено ни разу.
Не интересно даже больше по времени - потому что растущий момент на валу, реально вырастет до момента трогания колеса с места ещё несколько позже, а именно только тогда, когда ток нарастет до такой величины, момент от ампер-витков которого превысит трение покоя всей системы "мотор-редуктор-колесо-тележка" и это не 0.1, а больше. То есть "не интересно" гораздо дольше по времени. Об чем и писал.
- этому моменту противостоит момент инерции колеса и сила трения колеса с опорной поверхностью.
На самом деле, выделенное неверно в принципе, поскольку пока мотор не вращается никакой "момент инерции" ему не противостоит. И вращаться (без люфтов) он не начнет до тех пор, пока сила движения вперед всей тележки от момента на валу двигателя не превысит .. трение покоя всей тележки. Сколько это? А просто: вес тележки 250грамм, к-т трения покоя 0.8, итого сила трения покоя тележки = 200гр. Какой требуется "момент на валу" для преодоления такого трения покоя?
Колесо диаметром 37мм (Лего 37х22 вес 10.34гр по сайту Лего), соответственно момент на колесе (1/2, колес 2шт!) * 200гр / 1.65см = 60.6 гр*см / 5 (редуктор) / 0.85 (его кпд) = 14,3 гр*см. То есть надо нарастить ток до 14,3/65 = 0,22А или стоять будем не менее 0,22/40 = 5,5мсек.
100% моего поста посвящено именно "после того как колесо сдвинулось с места".
Это разъяснение тем 0% вашего поста, про которые Вы забыли.. :)
А вот ПОСЛЕ того как мотор стронулся с места (люфтами пренебрегаем), ему кроме трения колеса ещё противостоит момент инерции вращения. Сколько это? Колесо диаметром 37мм (Лего 37х22 вес 10.34гр по сайту Лего), сосредоточенных по большей части на внешней четверти радиуса .. момент инерции вращения J=mR^2 = 10.34*1.25^2 = 16,2 гр*кв.см. + момент вращения якоря мотора весом около 20гр и радиусом 6.5мм (130-й мотор - диаметр якоря 13.0мм, 100% заполнение каркаса, общий вес мотора 30гр из них около 10гр - статор) = (1/2)*20*0.65^2 = 27.5 гр*кв.см. Итого, суммарный момент инерции вращения = 16.2/5/0,85 + 27.5 = 31,3 гр*кв.см. момент инерции колеса - "за редуктором". Чтобы привести его к валу мотора тупо делим на к-т редуктора и его кпд.
- в некоторый момент сила трения достигает своего максимального значения (считаем, что постоянная времени нарастания тока существенно меньше постоянной времени разгона колеса/тележки, хотя здесь тоже неплохо бы промоделировать процесс, чтобы убедиться в этом), после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
На силу трения КАЧЕНИЯ, а не скольжения. Зачем скользить, когда можно тупо катиться?
Какова "постоянная времени разгона колеса"? На макс. напряжении мотор жрет до 1.5А, то есть имеет макс. момент на валу = 65*1.5 = 97,5 гр*см. Соответственно, макс. угловое ускорение составит 97.5 / 31,3 = 3,11 сек^-1 (178,5грд/сек) а на "первых порах" куда как меньше (14,3/31,3=0,46 сек^-1 = 26грд/сек), но .. прямо пропорционально току мотора (об чем и писал ранее за ШИМ, который и определяет этот самый "ток мотора").
В начальный момент троганья всей системы (скорость мотора = 0, колеса = 0, преодолен к-т трения покоя) ток на моторе ещё только 220 мА и нарастает по 40мА в мсек, мотор начинает вращение со скоростью 26 градусов в сек, а колесо в 5 раз медленней. И это ПОСЛЕ 5.5 мсек молчаливого стояния на Днепре..
В общем, со всей остальной частью 100%-го поста за "после страгивания" аналогичная чехарда.
Как итог этой части разбора: ШИМ - интегрально за период определяет напряжение, управляющее мотором. От этого напряжения И текущей нагрузки, согласно мех. и эл. параметрам можно считать СКОРОСТЬ вращения вала двигателя (показал выше связь одного с другим) и вести расчет движения в попугаях ШИМ. Да, они каждый раз разные, согласно приложенной нагрузке, которая меняется при прямом движении и в поворотах. Но и только.
Давайте разберу ещё кусок, чтобы не быть голословным (долго это портянки писать):
после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
- если до этого процесс еще обладал некоторым подобием линейности (или, по крайней мере, полиномиальной функции - и то - от времени, а не от приложенного напряжения), то при срыве колеса ни о какой линейности (даже дифференциального уравнения) речи уже идти не может.
Переключается оно всеж-таки на силу трения качения, к-т которой много где принимается за 0.03. Давайте и мы примем. И так, тронулись с места, трение качения составляет 250*0.03 = 7,5 гр., в то время как (+5.5мсек от подачи напруги на мотор) ток мотора равен 0.22А и нарастает по 40мА в мсек, вал мотора начинает вращение со скоростью 26 грд/сек и трение скачком падает и существенно до 7.5гр, что снижает момент на колесе до (1/2) * 7,5 / 1.65см = 2,27 гр*см и момент от силы трения, приведенный к валу = 2,27 / 5 (редуктор) / 0.85 (его кпд) = 0,53 гр*см.
Казалось бы вот она жуткая нелинейность! Но, что имеем "далее"? А просто: мотор преодолевает инерцию момента вращения колес на которую накладывается теперь уже трение качения имея при этом уже момент вращения в 5.5 раз превышающий миллисекундную скорость его прироста. То есть за след. миллисекунду момент на валу вырастет всего на 40/220 = 18.2%, угловое ускорение вырастет на теже 18.2% и переход в режим качения .. никак качественно не сказывается на процессе разгона.
Вот и весь сказ на "не может быть речи".. да не заметит мотор банально что тележка куда-то покатилась, озабоченный раскручиванием по большей части своего же якоря, а и не колеса даже. :)
1- У вас все же тележка, а не паровоз. А колесо тележки катится в плоскости качения, а в поперечной плоскости оно как бы скользит. Если ехать по прямой, то боковое скольжение можно не учитывать, но на скоросном повороте это по любому приходится учитывать.
2- У вас какой привод передний задний или на оба боковых колеса. Если последний , то ШИМ на повороте должен быть разным. Вы это учитываете? И да переднеприводные вроде более разворотистые чем заднеприводные.
Тележка вообще-то двух колесная, но по отношению к общему центру масс, можно считать что заднеприводная. Передняя опора - скользящая, её к-т трения и момент инерции при поворотах тоже просчитывается и может быть учтен. Там есть несколько "критичных" факторов при поворотах, но тут (пока) речь за совсем иной вопрос, а именно: непонимание границ применимости теоретической постановки вопроса, при отсутствии практического моделирования, в самом простом случае - разгон по прямой с места. И в общем, почему ШИМ мотора вполне можно принимать за скорость на валу мотора или за момент вращения .. смотря как переводить его через текущие параметры и мех. характеристику мотора.
Вообще-то, интересовал конечно иной вопрос (в который раз уже?): какими программными средствами можно улучшить скоростное прохождение трасс на "предельных" и "запредельных" скоростях по к-ту трения? То есть на тех, где ПИД-регулирование не работает в силу сильной нелинейности (вообще-то кубической) характера управления от радиуса движения в повороте при условии что регулирование "с упреждением" (аналог - коэффициент "Д" в ПИД) выходит за допустимые рамки управления двигателями, то есть когда ШИМ выходит за допустимые (-255, 255) для "теории"..
Ну или по-просту, как катать 250 граммовую тележку с к-том трения 0.8 по трассе Робофеста быстрее чем за 5.5 секунд, без применения спец. средств? .. это примерный порог по трению ибо средняя скорость движения по трассе примерно в 2 раза ниже пиковой на относительно прямых участках. Чисто прямых на ней нет вовсе.
Надеюсь, понятно что движение со скоростями не превышающими "предельное" значение по трению - реализовано и не интересно..
У меня стойкое ощущение диалога глухого со слепым. Ко всем учатсникам дисскуссии, в т.ч. и к себе тоже.. :)
andriano, давайте ещё раз. Вы пишете что "ШИМ не является", я пытаюсь Вам донести что "является через мех. характеристику мотора"...
Ваше утверждение, что ШИМ якобы связан со скоростью через механическую характеристику не выдерживает никакой критики, т.к. у Вас размерности не сходятся.
По поводу остальных Ваших утверждений: и насчет отсутствия момента, пока колесо не движется, и насчет силы трения качения - я даже отвечать не хочу, ибо написаное Вами явно противоречит физике.
По поводу "не интересно ни разу": если Вы хотите поесть вкусного борща, для чего Вам надо его сперва приготовить, то если Вам не интересен ни разу сам процесс приготовления, а Вы готовы обсуждать только процесс разливания по тарелкам, то ничего кроме пустой воды Вам отведать не придется.
Надеюсь, аналогия прозрачна.
Поэтому предприму последнюю попытку Вами помочь: давайте для начала напишем уравнение движения, а уже потом будем от него плясать, что нам интереснео, а что - нет.
Предлагаю для начала записать уравнение движени тележки, имеющей одно колесо и при этом стабилизированной по углам в одномерном случае. А потом постепеннь будем переходить к более сложным и "интересным" случаям.
Если тележка движется равномерно, то момент на валу равен моменту сопротивления движения на трение и повороты. Но тележка движется с разной скоростью и разным направлением, что меняет момент сопротивления. Поэтому для решения этой задачи надо обращаться к математикам, а не программистам. Вот только математики должны отлично владеть вышкой и матанализом. Составить правильно условие задачи и решить часные случаи.
Вы ещё больше укрепили меня в мысли за разговор слепого с глухим.. увы.
andriano пишет:
Ваше утверждение, что ШИМ якобы связан со скоростью через механическую характеристику не выдерживает никакой критики, т.к. у Вас размерности не сходятся.
Это даже не смешно, ссылаться на размерности в данном случае.
andriano пишет:
По поводу остальных Ваших утверждений: и насчет отсутствия момента, пока колесо не движется, и насчет силы трения качения - я даже отвечать не хочу, ибо написаное Вами явно противоречит физике.
А Вы попытайтесь, в каком конкретно месте и что там не соответствует физике. Я вам привел цифирьки что, когда и как происходит. Желательно также с цифирьками. Жду внимательно.
andriano пишет:
По поводу "не интересно ни разу": если Вы хотите поесть вкусного борща, для чего Вам надо его сперва приготовить, то если Вам не интересен ни разу сам процесс приготовления, а Вы готовы обсуждать только процесс разливания по тарелкам, то ничего кроме пустой воды Вам отведать не придется.
Надеюсь, аналогия прозрачна.
Поэтому предприму последнюю попытку Вами помочь: давайте для начала напишем уравнение движения, а уже потом будем от него плясать, что нам интереснео, а что - нет.
Предлагаю для начала записать уравнение движени тележки, имеющей одно колесо и при этом стабилизированной по углам в одномерном случае. А потом постепеннь будем переходить к более сложным и "интересным" случаям.
Вы опять впадаете в абстрактную теорию так и не поняв, что все уже промоделировано "в деталях" и давно, в т.ч. и с учетом моментов инерции, центробежных сил и сил трения от передней опоры. Там нет и не может быть единого "уравнения движения" даже для одномерного случая ибо режимы движения очень разнообразны. Я уже сильно сомневаюсь в ваших возможностях оказания помощи, уж извините но ещё раз: движение на допредельных скоростях меня НЕ интересует ни в одном глазу (ваше "уравнение движения"). Меня интересуют программные изыски, позволяющие решать задачу "запредельного" движения, в т.ч. и "управляемый занос".
В целом, пока вчера писал Вам ответ, появилась мысля "что можно предпринять" .. опробую, возможно отпишусь.
1) ШИМ - аналог плавного регулирования напряжения (на индуктивной нагрузке)
2) ток через обмотки двигателя (!!! в установившемся режиме) пропорционален приложенному напряжению
3) момент на валу двигателя пропорционален силе тока, протекающей через обмотку
Т.е. в первом приближении, регулируя ШИМ, мы регулируем момент вращения на валу.
!!! Здесь остается неизвестна скорость вращения
Да, всё именно так. В установившемся режиме ШИМ есть полный аналог приложенного напряжения к мотору, которое приводит к соответствующему через него току и скорости вращения вала, согласно мех. характеристике мотора, которая снимается "на раз" ибо линейна от каждого параметра (напряжения, нагрузки, тока). То есть прикладывая ШИМ к мотору, на заданной статической нагрузке получаем скорость его вращения и зная характер изменения нагрузки (вход в поворот с прямой) и требуемые согласно поворота скорости моторов с учетом ширины колеи, текущей скорости и центробежной силы - легко получаем необходимый ШИМ для движения по заданному радиусу или перехода на него.
Что позволяет легко запрограммировать табличное управление движением по трассе (аналог "П" для ПИД) по заданному (а не линейному как у ПИД!) закону. Причем типовые радиусы считаются легко и вовсе не те, которые есть на трассе, а согласно расположению датчиков линии: угол из центра оси вращения до конкретного датчика и есть "хорда поворота" по этому выделенному радиусу. Именно этот момент не позволяет выносить датчики слишком далеко: датчики перестают "видеть" крутые повороты ибо их "радиусы" увеличиваются. Для каждой трассы есть оптимальный вынос, которым покрывается большая часть радиусов трассы.
Отсюда, существует оптимальное расположение датчиков и поперек тоже, а именно на 2/3 от ширины линии. Это позволяет получить в 2 раза больше состояний датчиков относительно их количества, поскольку они в таком случае работают "через раз" ровно: один, два соседних, следующий. Длительность состояний при такой их ширине - одинакова. Любое иное расположение датчиков приводит к неравномерности длительности состояний при плавных(!) разворотах и рваному управлению..
Проблему (незначительную) в данном месте представляют "неравномерности и случайности", а именно: как-то скачет напряжение на аккумах, как-то динамически меняется сцепление с трассой, моторы не всегда идентичны друг другу, как и колеса, биения на валах и люфты редуктора .. все это компенсируется либо почти статичным "И" (разные моторы, колеса, развесовка по осям) и в табличном управлении относительно небольшим "Д" ибо закон движения задается точнее (там практически кубическая зависимость ШИМ от радиуса И текущей скорости, чего ПИД - не делает в принципе, заменяя сверхбольшими "Д").
Дополнительно, "Д" можно снизить путем установления разных законов движения "с трассы" и "на трассу", улучшив тем самым как среднюю скорость движения, так и уменьшив "болтанку" при перерегулировках. Расчетные "П" получаются верны только в первом приближении.
В итоге, при таком подходе можно достаточно плавно двигаться по линии со скоростями близкими к предельно разрешенным для габаритно-весовых параметров телеги по к-ту трения.
Проблему составляет ситуация того что при скоростном движении управляющие воздействия летят со скоростью в несколько раз превышающей (около 10 раз, ежели вче, по цифирькам выше это должно быть видно) инерционные силы в моторах. Как утверждает теория ПИД, в этом разе "спасет увеличение Д", которое и есть как-бы "предсказание".. вот при таком запаздывании "Д" легко вылетает за допустимый интервал управления даже ещё до достижения "предельных" режимов движения при типовом ПИД.
что делать с этим - в этом и есть "вопрос" последних попыток получить тут "консультацию".
Если тележка движется равномерно, то момент на валу равен моменту сопротивления движения на трение и повороты. Но тележка движется с разной скоростью и разным направлением, что меняет момент сопротивления. Поэтому для решения этой задачи надо обращаться к математикам, а не программистам. Вот только математики должны отлично владеть вышкой и матанализом. Составить правильно условие задачи и решить часные случаи.
Тележка не просто "движется с разной скоростью и разным направлениям" .. эта зараза ещё и читает свои датчики, которые стоят с определенным шагом, то есть выдают сигнал ошибки не аналоговый, а дискретный и она, тележка, реагирует на итог "периодически", что приводит к "вилянию" по трассе даже при неплохой настройке. Просто виляние зависит от частоты натыкивания датчиков и качества настройки и может быть слабозаметным, но оно ВСЕ РАВНО ЕСТЬ. И вот отсюда, попадание в поворот возможно как с удачного завиливания (мотор уже начал тормозится/разгоняться) так и ровно наоборот - только что компенсировали свиль с трассы и на тебе - "поворот" .. мотор надо СРОЧНО крутить в обратном режиме - разгонять, если тормозили или наоборот .. и постоянно "попадать" удачно - нереально.
А когда тележка прет по трассе со скоростями 2-5 метров в сек. "ждать" (интегрировать) мотор до его нормальной "постоянной времени" - это профигачивать "мимо" по 20-50 миллиметров трассы со всеми последствиями для например её ширины в 15мм.
:) "сигнал ошибки" - это как раз то, зачем их вообще ставят для движения по линии. Это "расстояние" центра машинки от середины линии, постоянно замеряемое датчиками. Задача регулирования как раз сводится к изменению управляющих ШИМ на моторах так, чтобы свести это расстояние в ноль как можно быстрей, но достаточно плавно. :)
В программном развитии это путь в ОПП и разумеется привет С++. Опять же надо вводить переменную обратный радиус поворота(1/R). Руль у людской машины это средство задания этой переменной . 0- прямо. - х это влево +x вправо. А ваша сенсорная система должна выдавать две переменные : обратный радиус поворота трасы и ошибка центрирования машины на трассе. 0 это машина на трасе -y смещена на y мм влево , +y тоже но вправо. Вот еще "переднеприводная система" более устойчива математически на трасе.
Какова "постоянная времени разгона колеса"? На макс. напряжении мотор жрет до 1.5А, то есть имеет макс. момент на валу = 65*1.5 = 97,5 гр*см. Соответственно, макс. угловое ускорение составит 97.5 / 31,3 = 3,11 сек^-1 (178,5грд/сек) а на "первых порах" куда как меньше (14,3/31,3=0,46 сек^-1 = 26грд/сек), но .. прямо пропорционально току мотора (об чем и писал ранее за ШИМ, который и определяет этот самый "ток мотора").
В начальный момент троганья всей системы (скорость мотора = 0, колеса = 0, преодолен к-т трения покоя) ток на моторе ещё только 220 мА и нарастает по 40мА в мсек, мотор начинает вращение со скоростью 26 градусов в сек, а колесо в 5 раз медленней.
Радует что Вы хоть както начали считать, жаль только пока совершенно безграмотно. Пока два бала. Ошибки следующие.
1. Не учтена масса телеги. У вас не только колесо начинакт двигатся, но и вся телега. Её инерция тоже замедляет старт.
2. Попутали граммы и граммысилы в расчетах момента силы. Не пользуйтесь граммсилы, эта старая внесистемная единица до добра не доводит. Используйте Н, а момент силы соответственно Н*м или Н*см. Тогда и ускорения будут адекватными. Вас же самого наверняка смутило ускорение вращения 26 и 178 градусов в сек за сек, да еще и а "колесо в 5 раз медленней". Это первый оборот колеса завершится через 4,5 сек после начала движения )))
3. Ускорение вращениясек^-2 а не сек^-1, но то такое, будем считать опиской.
Важно другое, не придираясь к цифрам. ШИМ в течении всего рассмотреного процесса 100%. А скорость изменяется от 0, с некоторым ускорением, еще и не постоянным (по вашим цифрам от 26 до 178 градусов в сек за сек). Понимаете, ШИМ постоянен, а скорость в процессе разгона изменяется. Потому и ШИМ не годится для определения скорости в динамике.
ПС. В остальных расчетах тоже мрак, я их глянул по диагонали. Но они не так важны пока, потому я их не коментирую.
"Радует что Вы хоть както начали считать, жаль только пока совершенно безграмотно. Пока два бала. Ошибки следующие."
Спасибо, что до Вас наконец-то дошло, что все считано и моделировано ещё весной, к Робофест-2017, где взяли 3-е место из-за чистой случайности имея первое на квалификации с большим отрывом от остальных. :)
Там конечно же угловое ускорение от момента силы в градусах в сек за сек. Это описка, спасибо. Замедление от инерции всей телеги не стал добавлять, ибо стремился показать что инерция раскрутки только якоря - уже достаточное основание, чтобы не было никаких "нелинейностей" как-бы "следующих из теории". Сам когда-то также ошибся пока таки не построил полноценную модель всего этого "барахла". С учетом инерции всей телеги там все ещё печальней.
Ничего там не попутано. Угловое ускорение от момента силы как ни крути а все одно останется в радианах в сек, за сек. Всё там посчитано верно.
Важно то, что ШИМ тут нет вовсе никакого, а показана раскрутка мотора в начальный момент времени от приложенного постоянного напряжения. И тут важно то, что первые 5.5мсек (это вообще-то ДВА с хвостиком периода ШИМ!) мотор будет тупо стоять и только потом начнет вращаться и первоначальная скорость колеса да-да, те самые 4.5 секунды(!) на 1 оборот. То есть мотор не "рвет с места" как это кажется визуально (при подаче пост. напруги, тележка вообще-то легко встает на дыбы из-за слишком "быстрого разгона"). При переходе к миллисекундам всё становится "медленно и печально".
Так что тут ШИМ не постоянен .. его просто нет в этом рассмотрении. Вариант ШИМ, скажем 50% с периодом в 2мсек (500гц) рассмотрите самостоятельно. Заодно оцените насколько дольше мотор "включается в работу".. :) В качестве подсказки, ток спадает на индуктивности ровно также как нарастает.. :) Ну и для справки: тележка вполне стартует, начиная с ШИМ около 20%.. :)
Я не знаю как доказать но мое мнение с подсветкой датчики работают стабильнее. Пусть будет подсветка . Для примера попробуйте вынести телевизор на солнышко улицу с пульта ДУ не всегда получится переключиться.
На солнышко - оно понятно, там спектр засветки практически непрерывный и в ИК диапазоне вполне себе велик. А вот в помещениях, да под машинкой - вовсе не так. Но .. вам видней как делать, не настаиваю. Просто рассказал как теперь сделано у нас.
Мне сейчас куда любопытней кто и с какими алгоритмами поедет .. есть какие-то "прорывные" идеи или все тот же неподходящий ни разу ПИД? ИМХО конечно, некоторые его вполне успешно запинывают и для скоростной линии. Правда машина "не Ардуино" ни разу ..
Мы попытались ещё на Робофесте представить таблично смоделированную и сильно нелинейную (как оказалось) функцию управления с учетом центробежных сил (перенос веса) и мех. характеристики моторов. Но, похоже этот способ себя тоже исчерпал... вот и интересно, будет ли что-то "новенькое" на этот раз?
Кстати, кто-то где-то встречал описание алгоритмов управления от "лидеров" таких соревнований .. ну вот КАК они едут 14-и метровую трассу за 5.23сек?
Наша команда собирает тачку на такой платформе. Максимальная скорость что она может выдать примерно 1 метр в секунду по прямой.
У нас пока ещё фоток нет, есть одно кривое видео для контроля .. видимо - суеверен. Месяц назад пробовали выйти на минимальный вес, собирали в 150гр., но моторы N20 с редуктором 10:1 оказались фатально слабы, отказались. Более-менее тянут 1.5в моторы (Rя=3.5 ома) от 8в (2S Li-ion), но их хватает не более чем на 4-6 часов покатушек чистого времени, далее - на выброс. В отличии от 130-х моторов, у которых снашиваются щетки, тут истирается коллектор якоря. Пришлось уйти на такие же 130-е моторы, только "самопальные" (7.2в - 1А, 100гр*см на валу и 11тыс. об. в мин. на ХХ) и редуктор самодельный 6:1. Общий вес возрос до 265гр. (242гр без "декоративных" элементов Лего), но даже такие моторы нормально тянут только 30-е леговские колеса. На 45-х идет хуже, про 49-е вообще лучше не вспоминать. Макс. скорость по прямой около 2.5 м/сек. Но реализовать её полностью так и не удалось. В переводе нашего табличного управления на ПИД получается что диф. коэффициент выходит за возможности ШИМ-управления (-255,+255).
Те, что тут выложены в начале темы как "образцы" для подражания имеют штатный вес в районе 110-150гр. Но, наш подход обрамлять всё в лего детальки и использовать лего как конструктивное соединение - не позволяет выйти на такие веса... тяжелое оно "лего".
Да, и Клапауций как понимаю теперь - полностью не прав, утверждая что "японцы запоминают трассу". Такой подход может и возможен, но маловероятно что используется на практике. И уж точно не на базе Ардуино УНО/Нано/Мега с их "куриной памятью".. :)
Ну и? Ни у кого нет идей КАК можно ехать 14-метровую трассу на 5-6 секунд, да на которой есть повороты под 90* с радиусом в .. 75 миллиметров? :-)
У вас основная проблема инерционность движков? паузы между управляющим сигналом и началом реакции движка?
Конденсатор разряжать на обмотки двигателя, на стенде с обратной связью, замерив скорость реакции.
Да, и Клапауций как понимаю теперь - полностью не прав, утверждая что "японцы запоминают трассу". Такой подход может и возможен, но маловероятно что используется на практике. И уж точно не на базе Ардуино УНО/Нано/Мега с их "куриной памятью".. :)
я то здесь при чём? это японцы - с них и спрашивай, почему они не правы и знают ли они, что дуино нужно на свои машинки ставить.
Ну и? Ни у кого нет идей КАК можно ехать 14-метровую трассу на 5-6 секунд, да на которой есть повороты под 90* с радиусом в .. 75 миллиметров? :-)
Идеи о том, что нужно сделать, чтобы двигаться в указанном направлении, есть, и я их высказывал:
1. Измерять скорость в м/с, а ускорение - в м/с2, а не все "в единицах ШИМ".
2. Провести численное моделирование движении машинки по трассе, чтобы выяснить, на что можно надеяться, и понять, в какую сторону копать.
Ну и? Ни у кого нет идей КАК можно ехать 14-метровую трассу на 5-6 секунд, да на которой есть повороты под 90* с радиусом в .. 75 миллиметров? :-)
Идеи о том, что нужно сделать, чтобы двигаться в указанном направлении, есть, и я их высказывал:
1. Измерять скорость в м/с, а ускорение - в м/с2, а не все "в единицах ШИМ".
2. Провести численное моделирование движении машинки по трассе, чтобы выяснить, на что можно надеяться, и понять, в какую сторону копать.
1. Мне по-прежнеу ни разу не понятно как выбор системы единиц измерения, СИ, СГС, или ШИМ + попугаи АЦП влияют на результат. Может Вы и правы и надо измерять скорость в м/сек а момент в н*м, но мне как-то ближе и проще в гр*см, а для практического применения не переводить попугаи АЦП в вольты: например, согласно опорному 5В, показания в 112 попугаев дает около 0.55в и, чем мне это помогает? Как очевидно - ничем. Точно также скорость вращения мотора на ХХ при напруге в 8.2в равная 11200 об/мин (замерено датчиком) полностью соответствует значению ШИМ = 255. А если "нет разницы", зачем измерять в том, что требует пересчетов в программе, да ещё и в виде float, на камне, который даже нацело и то делит "столбиком"?
Я право не понимаю в чем разница..
2. Проведено. Без применения "спец средств", улучшающих сцепление с трассой качественно, ехать трассу Робофеста быстрее около 6сек .. нереально. Она имеет всего 9.6м длины (замерено) и только 2 крутых поворота радиусом .. 130 и 150мм.
Как быть?
В догонку, на этом Робофинисте, машинки со "спец. средставами" (импеллер, прижимающий машинку к трассе - "доп. вес") показали скорость около 4.6сек на типовой широкой трассе .. против около 7-8сек. для "обычных машинок" .. и? Вроде как в ваши формулы "вес" не входит и вовсе даже? :-)
Дополню:
На практике, Робофестовская трасса (она просто типовая) проезжается на проспиртованных колесах и мытой с мылом трассой за 6.2 - 6.5сек не только лишь нами .. есть ещё. Быстрее - не видел. Но это для достаточно ЛЕГКИХ тележек.
И ещё: ДПТ на постоянных магнитах (это все то что используется на практике N20, N30, 130, 280 etc.) при фикс. напруге, имеют линейную характеристику падения скорости вращения от нагрузки на валу мотора, которая достаточно легко считается. Так при прямолинейном движении - это по сути - сила трения качения, у которой коэффициент трения практически постоянен для очень широкого спектра и много где принимается равным 0.03. Отсюда, зная подаваемое напряжение (эффективное от заданного ШИМ, ибо на моторе стоит достаточно "большой" конденсатор исполняющий роль интегратора) и вес - можно получить скорость прямого движения согласно скорости мотора и имеющимся колесам.
Что мешает считать напрямую эту скорость в ШИМ-попугаях, а не м/сек?
andriano, это не стеб, я на самом деле не понимаю где "разница"..
...Точно также скорость вращения мотора на ХХ при напруге в 8.2в равная 11200 об/мин (замерено датчиком) полностью соответствует значению ШИМ = 255.
Вы заблуждаетесь.
Если "значение ШИМ 255" и соответствует "11200 об/мин при 8.2В", то никак не "полностью", а лишь в одном частном конкретном случае: в статическом режиме и при фиксированной нагрузке. Стоит изменить нагрузку или просто изменять напряжение (единицы ШИМ) во времени, как ваше "соответствует" идет лесом.
А если "нет разницы", зачем измерять в том, что требует пересчетов в программе, да ещё и в виде float, на камне, который даже нацело и то делит "столбиком"?
Я право не понимаю в чем разница..
В том, что поведение реальной тележке подчиняется дифференциальному уравнению с несколькими переменными, но никак не простейшей линейной зависимости от одной единственной переменной.
2. Проведено.
Не верю.
Невозможно провести численное моделирование процесса, описывваемого дифференциальным уравнением (причем, кстати, не одним), не понимая даже отличия дифференциального уравнения от линейного.
Дополню:
Что мешает считать напрямую эту скорость в ШИМ-попугаях, а не м/сек?
andriano, это не стеб, я на самом деле не понимаю где "разница"..
Про "мешает" я ничего не утверждал. Я лишь утверждал, что считать подобным образом радикально не соответствует физике явления. Соответственно, раз Вы неправильно описываете задачу, у Вас практически нет шансов поймать оптимальное решение. Поскольку Вы его ищете не там, где оно находится, а там, где можно быстрее вычислить. (в полной аналогии с анекдотом: не там, где потерял, а там, где светлее).
Да с какого боку оно НЕ соответствует физике процесса-то?!? Я вот ЭТОГО как раз и не помгу понять, уж извините за эмоциональность, но Вы толчете одну и ту же воду в ступе без каких-либо пояснений от слова "совсем". Неужели так сложно разъяснить вопрос?
Во-первых, как в статике с конкретным напряжением и без нагрузки (режих ХХ) ШИМ есть ПРЯМОЕ соответствие реальным оборотам в минуту, так и ДИНАМИКЕ он совершенно точно определяется тем же самым ШИМ, но ЧЕРЕЗ МЕХАНИЧЕСКУЮ характеристику мотора, которая для конкретного движка ИЗМЕРЯЕТСЯ с любой требуемой точностью НЕПЕРЕД.
Да, при падении напряжения на моторе, один и тот же ШИМ будет соответствовать разным оборотам, но черех мех. характеристику (и она в данном случае ЛИНЕЙНА!) легко вычисляется такое изменение.
Да, при возрастании нагрузки на моторе точно так же ШИМ будет давать разные обороты на двигле согласно .. своей мех. характеристике и она .. упс. В широком диапазоне нагрузок .. опять линейна!
Ну в чем проблема-то?
"Я лишь утверждал, что считать подобным образом радикально не соответствует физике явления."
andriano, ну так я и прошу показать в каком конкретном месте оно не соответствует, да ещё и "ради-кально" :-)
Там вся физика достаточно примитивна и легко моделируется:
Процесс разгона по прямой - есть инерционная масса тележки, момент инерции колес, есть к-т трения с трассой + мех. характеристика мотора + электрические ТТХ драйвера (просадка напряжения и гашение импульсов самоиндукции мотора). Что тут сложного сложит "2+2" в динамике с дискретностью в 1-2 миллисекунды и получить цифровую модель разгона?
Процесс торможения - практически аналогично, те же самые "2+2" в обратном порядке..
На процесс движения в повороте накладывается только центробежная сила, которая также легко считается по радиусу и размерно-весовым параметрам тележки ...
Где эта ваша "радикальное несоответствие"? не понимаю .. чесслово надеюсь на развернутое пояснение с вашей стороны..
Ну и про это "Невозможно провести численное моделирование процесса, описывваемого дифференциальным уравнением (причем, кстати, не одним), не понимая даже отличия дифференциального уравнения от линейного." тоже:
Яндекс "численное решение дифференциальных уравнений" .. нашлось 50млн. ответов. ... в чем проявляется ваша "невозможность"? В "непонимании" мною, чего именно? Того что в каждый конкретный момент времени имеем "баланс сил и моментов", зависящий от скорости движения, инерции всей тележки и моментов инерции колес и самой тележки относительно оси поворота, а также трение передней опоры и её влияние или что? Неизвестность мех. характеристики моторов или не учет момента инерции якоря или выбросов самоиндукции при рекурперативном режиме торможения?
Где то "непонимание", за которое Вы пишете и видимо имеете сами? Или делиться такими знаниями и моделями как-бы "не принято" в среде "чемпионов трасс"?
То моделирование, что проведено мною, показывает наглядно почему ПИД регулятор принципиально НЕ подходит для достижения предельных режимов движения согласно "физике процесса" (по трению колес)... да, в итого там далеко НЕ линейные зависимости, которые не моделируются линейным "П" (фикс. к-т, подбираемый "настройкой") и плохо исправляются через константное/линейное (фикс. к-т) "Д" и тем более "И", который зачастую выбрасывается многими за ненадобностью и результаты на трассах показывают верность такого решения...
1. использовать прерывания
2. Вынести датчики как можно дальше вперед и в стороны
3. использовать активное торможение
....
1. Зачем?
2. Ограничено допустимым габаритом тележек. У каждого вида соревнований они свои, но фиксированы. Это раз, и второе - практика показывает что существует оптимальный вынос и выносить далее - просто бессмысленно.
3. Это какое? В смысле что Вы понимаете под "активным" торможением в части движения со скоростями предельными или за предельными согласно ограничению по к-ту трения колес?
Последнее поясню: движение по трассе ограничено "физикой", а именно коэффициентом сцепления колес с трассой. Для очень хорошей "резины" он составляет 0.8 и даже 0.86. Соответственно, скорость в повороте (70-80-90 % движения по трассе) ограничивается этим параметром и без применения "спец. средств" (мягкие силиконовые колеса изменяющие профиль пятна от веса + импеллеры, прижимающие тележку к трассе + ..) движение ограничено и его скорость невелика. А если учесть "люфты", несоосности колес и прочие дефекты сборки, то предел скорости движения составит не более 80% от теории, что изложена в начале этой темы в посте andriano.
Повстеместно применяется ПИД регулятор, у которого "Д" как правило выстраивается много больше "П", что приводит к дополнительной проблеме, а именно "микропотерям сцепления с трассой" из-за резких изменений скорости вращения колеса под высоким "Д". Особенно сильно сказывается на тяжелых тележках, несмотря на то, что в теор. предел вес вроде как и не входит совсем..
Вопрос поставлен мною примерно так: какие ухищрения ПО способны улучшить движение по трассе БЕЗ применения "спец. средстсв"? То есть интересны программные решения вопроса.
Да с какого боку оно НЕ соответствует физике процесса-то?!? Я вот ЭТОГО как раз и не помгу понять, уж извините за эмоциональность, но Вы толчете одну и ту же воду в ступе без каких-либо пояснений от слова "совсем". Неужели так сложно разъяснить вопрос?
Во-первых, как в статике с конкретным напряжением и без нагрузки (режих ХХ) ШИМ есть ПРЯМОЕ соответствие реальным оборотам в минуту, так и ДИНАМИКЕ он совершенно точно определяется тем же самым ШИМ, но ЧЕРЕЗ МЕХАНИЧЕСКУЮ характеристику мотора, которая для конкретного движка ИЗМЕРЯЕТСЯ с любой требуемой точностью НЕПЕРЕД.
Да, при падении напряжения на моторе, один и тот же ШИМ будет соответствовать разным оборотам, но черех мех. характеристику (и она в данном случае ЛИНЕЙНА!) легко вычисляется такое изменение.
Да, при возрастании нагрузки на моторе точно так же ШИМ будет давать разные обороты на двигле согласно .. своей мех. характеристике и она .. упс. В широком диапазоне нагрузок .. опять линейна!
Ну в чем проблема-то?
Движение тележки описывается несколькими дифференциальными (в общем случае нелинейными) уравнениями. А Вы говорите о каких-то линейных коэффициентах. Еще раз:
Движение описывается не алгебраическим, а дифференциальным уравнением.
Механическая характеристика двигателя снимается в (квази)стационарных условиях, т.е. характеористика статическая, динамику она описывать принципиально не может.
Вообще говоря, ШИМ в какой-то мере аппроксимирует среднее напряжение только для омической нагрузки. В случае нагрузки нелинейной или индуктивной - там весьма своеобразная зависимость, которую я детально не исследовал (скажу только, что максимум потребляемого тока приходится отнюдь не на максимум среднего напряжения), поэтому тут могу лишь утверждать, что присутствует не просто нелинейность, а даже немонотонность.
Ну ладно, давайте посмотрим, что происходит с тележкой в приближении постоянного напряжения на двигателе.
Итак, поехали:
- в начальный момент скорость тележки равна 0, ЭДС смоиндукции обмоток за счет вращения также равна 0, ток быстро (но не мгновенно - из-за индукции) возрастает, а вмесите с ним возрастает момент на валу.
- этому моменту противостоит мимент инерции колеса и сила трения колеса с опорной поверхностью.
- в некоторый момент сила трения достигает своего максимального значения (считаем, что постоянная времени нарастания тока существенно меньше постоянной времени разгона колеса/тележки, хотя здесь тоже неплохо бы промоделировать процесс, чтобы убадиться в этом), после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
- если до этого процесс еще обладал некоторым подобием линейности (или, по крайней мере, полиномиальной функции - и то - от времени, а не от приложенного напряжения), то при срыве колеса ни о какой линейности (даже дифференциального уравнения) речи уже идти не может.
- в общем, колесо постепенно разгоняется, разгону по прежнему противостоит момент инерции колеса и сила трения скольжения. В то же время по мере разгона возрастает противоиндукция, которая вычитается из приложенного напряжения. Соответственно, ток, а вместе с ним и момент - падают.
- тележка постепенно разгоняется, при этом ее скорость не совпадает со скоростью вращения колеса (за счет проскальзывания).
- далее, по мере разгона, момент на колесе падает и наступает момент максимальной скорости вращения колеса.
- теперь по мере разгона тележки скорость вращения колеса падает из-за того, что уменьшается момент за счет ЭДС.
- в какой-то момент времени скорость тележки (увеличивающаяся) и скорость вражения колеса (уменьшающаяся) совпадут. Восстановится контакт колеса с поверхностью. Резко возрастет коэффициент трения (переключившись с коэффициента трения скольжения на коэффициент трения покоя). После этого (при неизменном напряжении) колесо уже не будет терять контакта с поверхностью. Но толко до тех пор, пока мы не изменм напряжение. Мы ведь не собираемся, однажды включив его, больше никогда не менеять?
А теперь смотрм, что у нас получилось: в течение всего описывавемого времени напряжение на двигателе оставалось постоянным, т.е., судя по Вашим статическим характеристикам, постоянными также должны были бы быть скорость вращения колеса и скорость движения тележки, а тем временем каждая из указанных скоростей изменялась по своему закону. При том, что начальная и конечная точка у них совпадали. Если бы это были линейные функции (хотя по-вашему, они должны быть вообще константами), то, как известно, через две точки можно провести только одну прямую. А у нас явно получается две неосвпадающие линии, которые только из этого факта несовпадения не могут быть прямыми.
И теперь объясните, как Вы собираетесь описывать данный процесс разгона, имея только зависимость скорости на холостом ходу от напряжения и механическую характеристику (суть зависимость скорости вращения от момента).
Еще раз обращу Ваше внимание, что весь описываемый мною процесс происходил при фиксированном напряжении на двигателе.
Несколько не так, поясню:
Механическая характеристика двигателя снимается в (квази)стационарных условиях, т.е. характеористика статическая, динамику она описывать принципиально не может.
неверно в принципе, ибо теория двигателей пост. тока разработана давно и детально. Всё считается по достаточно простым формулам, поищите.
Вообще говоря, ШИМ в какой-то мере аппроксимирует среднее напряжение только для омической нагрузки. В случае нагрузки нелинейной или индуктивной - там весьма своеобразная зависимость, которую я детально не исследовал (скажу только, что максимум потребляемого тока приходится отнюдь не на максимум среднего напряжения), поэтому тут могу лишь утверждать, что присутствует не просто нелинейность, а даже немонотонность.
Есть такое, но не настолько явно выражено как Вам кажется. В первом приближении двигатель можно считать омической или "почти" омической нагрузкой .. косинус фи там в районе 0.85-0.9 Так что для ДПТ на магнитах ШИМ апроксимирует скорость на валу достаточно неплохо как изменяемое напряжение. Отличия для малых ШИМ и скоростей .. как раз из-за индуктивности, но они как раз не существенны ибо не используются на практике (скоростное движение)
Ну ладно, давайте посмотрим, что происходит с тележкой в приближении постоянного напряжения на двигателе.
Итак, поехали:
- в начальный момент скорость тележки равна 0, ЭДС смоиндукции обмоток за счет вращения также равна 0, ток быстро (но не мгновенно - из-за индукции) возрастает, а вмесите с ним возрастает момент на валу.
- этому моменту противостоит мимент инерции колеса и сила трения колеса с опорной поверхностью.
- в некоторый момент сила трения достигает своего максимального значения (считаем, что постоянная времени нарастания тока существенно меньше постоянной времени разгона колеса/тележки, хотя здесь тоже неплохо бы промоделировать процесс, чтобы убадиться в этом), после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
Этот момент "старта" неинтересен в процессе моделирования ни разу. Интересует движение, то есть после того как колесо сдвинулось с места..
- если до этого процесс еще обладал некоторым подобием линейности (или, по крайней мере, полиномиальной функции - и то - от времени, а не от приложенного напряжения), то при срыве колеса ни о какой линейности (даже дифференциального уравнения) речи уже идти не может.
- в общем, колесо постепенно разгоняется, разгону по прежнему противостоит момент инерции колеса и сила трения скольжения. В то же время по мере разгона возрастает противоиндукция, которая вычитается из приложенного напряжения. Соответственно, ток, а вместе с ним и момент - падают.
- тележка постепенно разгоняется, при этом ее скорость не совпадает со скоростью вращения колеса (за счет проскальзывания).
Верно отчасти. Если скорость разгона колеса превышает трение - то да. Но это как правило не интересный вариант и скорость разгона спец. снижают для исключения такого режима движения. ШИМ увеличивается плавно, а не скачком 0->255. Скорость плавного увеличения ШИМ как раз и зависит в ПИД регулировании по большей части от "Д" (переход с поворота на прямую и вот тут - Вы правы) или задается явно (и ограничивается как раз по этому требованию).
Можно принять что для скоростного движения тележка НЕ ДОЛЖНА срываться на "микрозанос" при разгоне.
- теперь по мере разгона тележки скорость вращения колеса падает из-за того, что уменьшается момент за счет ЭДС.
- в какой-то момент времени скорость тележки (увеличивающаяся) и скорость вражения колеса (уменьшающаяся) совпадут. Восстановится контакт колеса с поверхностью. Резко возрастет коэффициент трения (переключившись с коэффициента трения скольжения на коэффициент трения покоя). После этого (при неизменном напряжении) колесо уже не будет терять контакта с поверхностью. Но толко до тех пор, пока мы не изменм напряжение. Мы ведь не собираемся, однажды включив его, больше никогда не менеять?
В общем, тут тоже применимо все замечания выше..
А теперь смотрм, что у нас получилось: в течение всего описывавемого времени напряжение на двигателе оставалось постоянным, т.е., судя по Вашим статическим характеристикам, постоянными также должны были бы быть скорость вращения колеса и скорость движения тележки, а тем временем каждая из указанных скоростей изменялась по своему закону.
Верно. моделирование подтверждает все ваши заключения. Если у мотора "хватает дури" (что крайне редко на практике!) то да. Можно получить все нестационарности, описанные Вами в т.ч. и в модели.
Нигде не писал что они у меня - константы. Вроде как даже наоборот писал об этом у ПИД-регулирования и как обоснование его НЕПРИМЕНИМОСТИ.
И теперь объясните, как Вы собираетесь описывать данный процесс разгона, имея только зависимость скорости на холостом ходу от напряжения и механическую характеристику (суть зависимость скорости вращения от момента).
Еще раз обращу Ваше внимание, что весь описываемый мною процесс происходил при фиксированном напряжении на двигателе.
Ответил выше. Процесс разгона не является движением при "неизменном напряжении на двигателе" со всеми вытекающими последствиями. В общем-то вопрос был иной: интересен процесс прохождения поворотов и изменения параметров движения с учетом предельных и запредельных скоростей согласно трения..
Ну и в догонку, повторю свой вопрос ещё раз: где в описываемом характере разгона, пусть даже сильно нестационарном, ШИМ не является эквивалентом оборотов мотора (не колеса!) ? Вы как раз показали ПРИМЕНИМОСТЬ такой "единицы измерения" даже тут. :)
Главная проблема - мало программного времени на реакцию по датчику.
Чтобы дать себе запас по времени - использовать прерывания.
Далее - оптимизировать реакцию системы.
Если реакция не успевает - снижать скорость.
Главная проблема - мало программного времени на реакцию по датчику.
Чтобы дать себе запас по времени - использовать прерывания.
Далее - оптимизировать реакцию системы.
Если реакция не успевает - снижать скорость.
Если под прерываем понимать часть времени, то можно такой алгоритм попробовать.
РОБОТ на полосе — едем прямо один временной интервал
РОБОТ съехал с полосы — поворачиваем к полосе один временной интервал.
Смотря как и что считать. Если делать в целочисленной арифметике (у нас uint16_t имитация фикс. точки в дробях 1/128, пробовали long в дробях 1/256 особой разницы не заметили, примерно то на то и выходит), то расклад получается примерно такой: считывание датчиков блоком АЦП - 3 замера на 7 датчиков в режиме 79ksps (частота АЦП НАНО = 1Мгц) - около 400 мксек со всей арифметикой фильтров, пересчет целочисленного ПИД (если про него речь) - ещё около 400мксек, управление моторами от 100 до 1200 мксек. и + пауза до след. цикла loop() - около 2500 мксек. Итого весь цикл управления в районе 3-4мсек. Управлять моторами чаще - во первых нет никакого смысла ибо "постоянная мотора" в районе 8-30 миллисекунд, смотря какой мотор-редуктор-колесо, а во-вторых, придется переходить на ШИМ с большей частотой, ибо 490гц типового ШИМ это чуть меньше 2мсек. Такой переход болезненно скажется на соответствии малых значений ШИМ оборотам мотора, и придется поднимать минимально допустимую скорость движения. Значения ШИМ ниже этого порога у нас просто заменяются остановкой мотора ибо не имеют смысла вовсе, даже на ходу, когда второе колесо как-бы помогает и тянет.
Ну и ещё. Наш мосфетный драйвер (есть темка в проектах) не поддерживает режим торможения короткозамкнутым ротором. Соответственно можем или остановить мотор "на выбег" или "рекурперативное торможение" резким вращением "взад".. последнее продлевает срок работы батарейков подзаряжая аккумы "на ходу", но и только.
Ну и уже писал, что на скоростях движения(разворота) в 3метра в сек, тележка за 1мсек "пролетает" соответственно 3 миллиметра трассы, за 4мсек - уже 12мм. На тонкой линии (15мм) уже можно запросто проскочить линию датчиками при быстром развороте.
Собственно - да, проблема именно в этом. Даже конкретней: проблема в недостатке времени на проведение управляющего воздействия согласно средней скорости движения и постоянной времени объекта управления.
привет что делать если на ардуино нано при подключение компу горить красный деод помогите пожалусто ком не распозноет
пешите сразу ва все темы и расылку па поште всем нужна а деод гарит это он так работает или сгорает
Здесь видимо нужно посложнее задачку решать
С учетом момента инерции конструкции.
Все регулировки должны быть ПЛАВНЫМИ.
Не нужно делать трагедии если датчик пересек линию - ПЛАВНО начинаем подтормаживать и выравнивать траекторию.
У большинства команд здесь резко падает скорость потому как полностью тормозят один из двигателей.
Движения получаются рваные.
Заново разгонять тележку - потря скорости/времени...
Это до меня тоже дошло .. но вот "КАК" .. потому и поднял тему, интересны идеи, решения .. может коллективно что-то придумается? :)
Здесь видимо нужно посложнее задачку решать
С учетом момента инерции конструкции.
Все регулировки должны быть ПЛАВНЫМИ.
Так это ТС уже 7 страниц разные люди в разных терминах пытаются вдолбить. А ему все пропорционально! Похоже тема создана для того, чтоб все задолбались разяснять что нельзя игнорировать механику и автор в конце сказал, что никто так и не смог помоч.
По сути, напомню таксказать.
1. У телеги и ей частей есть масса и момент инерции, скорости линейная и угловая не могут изменится мгновенно при любой конечной мощности привода (в дальнейшем эту особенность именую динамическое свойство для краткости). Потому тезис ШИМ=скорость - ересь супротив механики Нютона.
2. Степени свободы телеги не есть независимыми - нельзя вернутся на линию не продвинувшись вдоль ней и не совершив поворот телеги вокруг вертикальной оси и изменения скорости колес. Отсюда требуется учет динамических свойств п.1.
3. При учете динамических свойст выяснится, что все требует времени. Время требует механика, а не кривой и тормознутый код. В код проблема лечится. В механике почти нет, попытка лечить в механике сразу вызовут рост массы со всеми последствиями. Вобщем не лечится, только новую делать.
4. Для получения запаса времени на п.3 необходимо как можна ранее узнавать о положении относительно линии. Датчики вперед выносить.
5. Телега - не материальная точка, и даже не жесткая система. Имеет массу следствий: перераспределения усилий между колесами; сигнал с датчика характеризует не только линейный уход с линии но и угол поворота к ней.... Это не игнорить, хотя и очень хочется т.к. оно сильно усложняет дело.
6. В заносы не входить, расчет этого безнадежно сложен. Тут бы с изложеным разобратся. Только после разбора осторожно подумать про занос.
7. Определить расчетно и эксперементально граничные возможности системы не в терминах "крутится волчком" а цивилизовано: минимальный радиус трассы в ххх мм устойчиво проходит на скорости ууу м/с; без потери скорости проходится радиус R мм; быстрый разгон без пробуксовки согласно такому графику.... и так по всем режимам движения. Тут видеосемка в помощ будет.
8. В алгоритме должны быть проверки на условия п.7. Никакой ПИД не заставит делать механику то, что её динамика не позволит. А если попробует - занос, пробуксовка и пр. нерасчетное поведение.
Что делать? С учетом п.1-п.6 строить матмодель. Да, с дифурами. Просчитывать по модели и проверять экспериментально границы из п.7. Совпало - виват! Несовпало - искать ошибки. Имея модель - пооптимизировать механику иногда чудеса бывают. Тут станет понятно на что телега годна или может новую делать. Дальше просто кодим согласно п.8. Да, малой это не потянет, недецкое это все.
Ну и в догонку, повторю свой вопрос ещё раз: где в описываемом характере разгона, пусть даже сильно нестационарном, ШИМ не является эквивалентом оборотов мотора (не колеса!) ? Вы как раз показали ПРИМЕНИМОСТЬ такой "единицы измерения" даже тут. :)
Вы действиетльно не поняли ни слова из моего ответа или просто решили меня потроллить?
На протяжении всего моего рассуждения скорость непрерывно изменялась, а величина ШИМ оставалась строго постоянной. Или что Вы подразумеваете под "эквивалентом"?
Вот скажите, где экспонента не эквивалентна константе?
На всякий случай еще раз отвечу на Ваш вопрос (точнее, три раза - для надежности):
- ШИМ нигде не является эквивалентом скорости,
- ШИМ никогда не является эквивалентом скорости,
- ШИМ ни в одной точке не является эквивалентом скорости.
Шим это скорее величина импульса который мотор передает тележке на колеса. При движении тележка теряет часть импульса на трение и сопротивление воздуха. Если эти импульсы равны, то тележка движется равномерно. Иначе тележка ускоряется или тормозится. Но это если линия прямая. При кривой надо вычислять и уметь передать боковые корректирующие импульсы. Вот только тележка движется не космосе. И поэтому надо еще и предусмотреть конструкцию тележки, что бы эти импульсы правильно были направлены.
Для начала можно измерить минимальный радиус поворота (без скольжения) для различных скоростей движения тележки.
Потом появятся мысли...
В пределе оптимизацию алгоритма движения можно поручить нейронным сетям (обучив их)...
У меня стойкое ощущение диалога глухого со слепым. Ко всем учатсникам дисскуссии, в т.ч. и к себе тоже.. :)
andriano, давайте ещё раз. Вы пишете что "ШИМ не является", я пытаюсь Вам донести что "является через мех. характеристику мотора" и тем не менее, ещё раз:
"Итак, поехали: - в начальный момент скорость тележки равна 0, ЭДС самоиндукции обмоток за счет вращения также равна 0, ток быстро (но не мгновенно - из-за индукции) возрастает, а вместе с ним возрастает момент на валу"
Словами все писано верно .. в теории. Теперь давайте уточнять на практике этот "начальный момент": какова индукция мотора? Ответ: около 200мГн. Как быстро нарастает ток в якоре? Ответ U=L*di/dt или или скорость нарастания тока будет: di/dt = U/L = 8в / 0.2гн или 40 ампер в сек. Ток начала вращения якоря на ХХ можно принять за 0.1А, соответственно двигатель начнет вращаться через 0.1/40 = 2.5мсек. Это и есть причина моей фразы: начальный момент не интересен ни разу. Что там происходит в первые 2.5 (и даже больше!) миллисекунд - НЕ ИНТЕРЕСНО.
В общем, теперь надеюсь понятно почему отписал "не интересно". Ну да ладно, как быстро будет нарастать крутящий момент на валу двигателя? Ответ: ровно с той же самой скоростью, с какой нарастает ток ибо для ДПТ на пост. магнитах - момент равен M=Cя*Ф*I, где поток магнитов постоянен. И, если для 1А имеем момент в 65 гр*см, то не сложно понять что момент нарастает со скоростью 40*65 (гр*см/сек) или 2600 (гр*см/сек) или на 2.6 гр*см каждую миллисекунду. Это пока мотор стоит, что, ещё раз, не интересено ни разу.
Не интересно даже больше по времени - потому что растущий момент на валу, реально вырастет до момента трогания колеса с места ещё несколько позже, а именно только тогда, когда ток нарастет до такой величины, момент от ампер-витков которого превысит трение покоя всей системы "мотор-редуктор-колесо-тележка" и это не 0.1, а больше. То есть "не интересно" гораздо дольше по времени. Об чем и писал.
- этому моменту противостоит момент инерции колеса и сила трения колеса с опорной поверхностью.
На самом деле, выделенное неверно в принципе, поскольку пока мотор не вращается никакой "момент инерции" ему не противостоит. И вращаться (без люфтов) он не начнет до тех пор, пока сила движения вперед всей тележки от момента на валу двигателя не превысит .. трение покоя всей тележки. Сколько это? А просто: вес тележки 250грамм, к-т трения покоя 0.8, итого сила трения покоя тележки = 200гр. Какой требуется "момент на валу" для преодоления такого трения покоя?
Колесо диаметром 37мм (Лего 37х22 вес 10.34гр по сайту Лего), соответственно момент на колесе (1/2, колес 2шт!) * 200гр / 1.65см = 60.6 гр*см / 5 (редуктор) / 0.85 (его кпд) = 14,3 гр*см. То есть надо нарастить ток до 14,3/65 = 0,22А или стоять будем не менее 0,22/40 = 5,5мсек.
100% моего поста посвящено именно "после того как колесо сдвинулось с места".
Это разъяснение тем 0% вашего поста, про которые Вы забыли.. :)
А вот ПОСЛЕ того как мотор стронулся с места (люфтами пренебрегаем), ему кроме трения колеса ещё противостоит момент инерции вращения. Сколько это? Колесо диаметром 37мм (Лего 37х22 вес 10.34гр по сайту Лего), сосредоточенных по большей части на внешней четверти радиуса .. момент инерции вращения J=mR^2 = 10.34*1.25^2 = 16,2 гр*кв.см. + момент вращения якоря мотора весом около 20гр и радиусом 6.5мм (130-й мотор - диаметр якоря 13.0мм, 100% заполнение каркаса, общий вес мотора 30гр из них около 10гр - статор) = (1/2)*20*0.65^2 = 27.5 гр*кв.см. Итого, суммарный момент инерции вращения = 16.2/5/0,85 + 27.5 = 31,3 гр*кв.см. момент инерции колеса - "за редуктором". Чтобы привести его к валу мотора тупо делим на к-т редуктора и его кпд.
- в некоторый момент сила трения достигает своего максимального значения (считаем, что постоянная времени нарастания тока существенно меньше постоянной времени разгона колеса/тележки, хотя здесь тоже неплохо бы промоделировать процесс, чтобы убедиться в этом), после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
На силу трения КАЧЕНИЯ, а не скольжения. Зачем скользить, когда можно тупо катиться?
Какова "постоянная времени разгона колеса"? На макс. напряжении мотор жрет до 1.5А, то есть имеет макс. момент на валу = 65*1.5 = 97,5 гр*см. Соответственно, макс. угловое ускорение составит 97.5 / 31,3 = 3,11 сек^-1 (178,5грд/сек) а на "первых порах" куда как меньше (14,3/31,3=0,46 сек^-1 = 26грд/сек), но .. прямо пропорционально току мотора (об чем и писал ранее за ШИМ, который и определяет этот самый "ток мотора").
В начальный момент троганья всей системы (скорость мотора = 0, колеса = 0, преодолен к-т трения покоя) ток на моторе ещё только 220 мА и нарастает по 40мА в мсек, мотор начинает вращение со скоростью 26 градусов в сек, а колесо в 5 раз медленней. И это ПОСЛЕ 5.5 мсек молчаливого стояния на Днепре..
В общем, со всей остальной частью 100%-го поста за "после страгивания" аналогичная чехарда.
Как итог этой части разбора: ШИМ - интегрально за период определяет напряжение, управляющее мотором. От этого напряжения И текущей нагрузки, согласно мех. и эл. параметрам можно считать СКОРОСТЬ вращения вала двигателя (показал выше связь одного с другим) и вести расчет движения в попугаях ШИМ. Да, они каждый раз разные, согласно приложенной нагрузке, которая меняется при прямом движении и в поворотах. Но и только.
Давайте разберу ещё кусок, чтобы не быть голословным (долго это портянки писать):
после чего скачком уменьшается "переключаясь" с силы трения покоя на силу трения скольжения.
- если до этого процесс еще обладал некоторым подобием линейности (или, по крайней мере, полиномиальной функции - и то - от времени, а не от приложенного напряжения), то при срыве колеса ни о какой линейности (даже дифференциального уравнения) речи уже идти не может.
Переключается оно всеж-таки на силу трения качения, к-т которой много где принимается за 0.03. Давайте и мы примем. И так, тронулись с места, трение качения составляет 250*0.03 = 7,5 гр., в то время как (+5.5мсек от подачи напруги на мотор) ток мотора равен 0.22А и нарастает по 40мА в мсек, вал мотора начинает вращение со скоростью 26 грд/сек и трение скачком падает и существенно до 7.5гр, что снижает момент на колесе до (1/2) * 7,5 / 1.65см = 2,27 гр*см и момент от силы трения, приведенный к валу = 2,27 / 5 (редуктор) / 0.85 (его кпд) = 0,53 гр*см.
Казалось бы вот она жуткая нелинейность! Но, что имеем "далее"? А просто: мотор преодолевает инерцию момента вращения колес на которую накладывается теперь уже трение качения имея при этом уже момент вращения в 5.5 раз превышающий миллисекундную скорость его прироста. То есть за след. миллисекунду момент на валу вырастет всего на 40/220 = 18.2%, угловое ускорение вырастет на теже 18.2% и переход в режим качения .. никак качественно не сказывается на процессе разгона.
Вот и весь сказ на "не может быть речи".. да не заметит мотор банально что тележка куда-то покатилась, озабоченный раскручиванием по большей части своего же якоря, а и не колеса даже. :)
1- У вас все же тележка, а не паровоз. А колесо тележки катится в плоскости качения, а в поперечной плоскости оно как бы скользит. Если ехать по прямой, то боковое скольжение можно не учитывать, но на скоросном повороте это по любому приходится учитывать.
2- У вас какой привод передний задний или на оба боковых колеса. Если последний , то ШИМ на повороте должен быть разным. Вы это учитываете? И да переднеприводные вроде более разворотистые чем заднеприводные.
Тележка вообще-то двух колесная, но по отношению к общему центру масс, можно считать что заднеприводная. Передняя опора - скользящая, её к-т трения и момент инерции при поворотах тоже просчитывается и может быть учтен. Там есть несколько "критичных" факторов при поворотах, но тут (пока) речь за совсем иной вопрос, а именно: непонимание границ применимости теоретической постановки вопроса, при отсутствии практического моделирования, в самом простом случае - разгон по прямой с места. И в общем, почему ШИМ мотора вполне можно принимать за скорость на валу мотора или за момент вращения .. смотря как переводить его через текущие параметры и мех. характеристику мотора.
Вообще-то, интересовал конечно иной вопрос (в который раз уже?): какими программными средствами можно улучшить скоростное прохождение трасс на "предельных" и "запредельных" скоростях по к-ту трения? То есть на тех, где ПИД-регулирование не работает в силу сильной нелинейности (вообще-то кубической) характера управления от радиуса движения в повороте при условии что регулирование "с упреждением" (аналог - коэффициент "Д" в ПИД) выходит за допустимые рамки управления двигателями, то есть когда ШИМ выходит за допустимые (-255, 255) для "теории"..
Ну или по-просту, как катать 250 граммовую тележку с к-том трения 0.8 по трассе Робофеста быстрее чем за 5.5 секунд, без применения спец. средств? .. это примерный порог по трению ибо средняя скорость движения по трассе примерно в 2 раза ниже пиковой на относительно прямых участках. Чисто прямых на ней нет вовсе.
Надеюсь, понятно что движение со скоростями не превышающими "предельное" значение по трению - реализовано и не интересно..
К предыдущим цифирькам: типовой ШИМ Ардуино - это 490гц или чуть больше 2 мсек на период .. так, сравнения для .. :)
1) ШИМ - аналог плавного регулирования напряжения (на индуктивной нагрузке)
2) ток через обмотки двигателя (!!! в установившемся режиме) пропорционален приложенному напряжению
3) момент на валу двигателя пропорционален силе тока, протекающей через обмотку
Т.е. в первом приближении, регулируя ШИМ, мы регулируем момент вращения на валу.
!!! Здесь остается неизвестна скорость вращения
У меня стойкое ощущение диалога глухого со слепым. Ко всем учатсникам дисскуссии, в т.ч. и к себе тоже.. :)
andriano, давайте ещё раз. Вы пишете что "ШИМ не является", я пытаюсь Вам донести что "является через мех. характеристику мотора"...
Ваше утверждение, что ШИМ якобы связан со скоростью через механическую характеристику не выдерживает никакой критики, т.к. у Вас размерности не сходятся.
По поводу остальных Ваших утверждений: и насчет отсутствия момента, пока колесо не движется, и насчет силы трения качения - я даже отвечать не хочу, ибо написаное Вами явно противоречит физике.
По поводу "не интересно ни разу": если Вы хотите поесть вкусного борща, для чего Вам надо его сперва приготовить, то если Вам не интересен ни разу сам процесс приготовления, а Вы готовы обсуждать только процесс разливания по тарелкам, то ничего кроме пустой воды Вам отведать не придется.
Надеюсь, аналогия прозрачна.
Поэтому предприму последнюю попытку Вами помочь: давайте для начала напишем уравнение движения, а уже потом будем от него плясать, что нам интереснео, а что - нет.
Предлагаю для начала записать уравнение движени тележки, имеющей одно колесо и при этом стабилизированной по углам в одномерном случае. А потом постепеннь будем переходить к более сложным и "интересным" случаям.
!!! Здесь остается неизвестна скорость вращения
Если тележка движется равномерно, то момент на валу равен моменту сопротивления движения на трение и повороты. Но тележка движется с разной скоростью и разным направлением, что меняет момент сопротивления. Поэтому для решения этой задачи надо обращаться к математикам, а не программистам. Вот только математики должны отлично владеть вышкой и матанализом. Составить правильно условие задачи и решить часные случаи.
Вы ещё больше укрепили меня в мысли за разговор слепого с глухим.. увы.
Это даже не смешно, ссылаться на размерности в данном случае.
А Вы попытайтесь, в каком конкретно месте и что там не соответствует физике. Я вам привел цифирьки что, когда и как происходит. Желательно также с цифирьками. Жду внимательно.
Надеюсь, аналогия прозрачна.
Поэтому предприму последнюю попытку Вами помочь: давайте для начала напишем уравнение движения, а уже потом будем от него плясать, что нам интереснео, а что - нет.
Предлагаю для начала записать уравнение движени тележки, имеющей одно колесо и при этом стабилизированной по углам в одномерном случае. А потом постепеннь будем переходить к более сложным и "интересным" случаям.
Вы опять впадаете в абстрактную теорию так и не поняв, что все уже промоделировано "в деталях" и давно, в т.ч. и с учетом моментов инерции, центробежных сил и сил трения от передней опоры. Там нет и не может быть единого "уравнения движения" даже для одномерного случая ибо режимы движения очень разнообразны. Я уже сильно сомневаюсь в ваших возможностях оказания помощи, уж извините но ещё раз: движение на допредельных скоростях меня НЕ интересует ни в одном глазу (ваше "уравнение движения"). Меня интересуют программные изыски, позволяющие решать задачу "запредельного" движения, в т.ч. и "управляемый занос".
В целом, пока вчера писал Вам ответ, появилась мысля "что можно предпринять" .. опробую, возможно отпишусь.
1) ШИМ - аналог плавного регулирования напряжения (на индуктивной нагрузке)
2) ток через обмотки двигателя (!!! в установившемся режиме) пропорционален приложенному напряжению
3) момент на валу двигателя пропорционален силе тока, протекающей через обмотку
Т.е. в первом приближении, регулируя ШИМ, мы регулируем момент вращения на валу.
!!! Здесь остается неизвестна скорость вращения
Да, всё именно так. В установившемся режиме ШИМ есть полный аналог приложенного напряжения к мотору, которое приводит к соответствующему через него току и скорости вращения вала, согласно мех. характеристике мотора, которая снимается "на раз" ибо линейна от каждого параметра (напряжения, нагрузки, тока). То есть прикладывая ШИМ к мотору, на заданной статической нагрузке получаем скорость его вращения и зная характер изменения нагрузки (вход в поворот с прямой) и требуемые согласно поворота скорости моторов с учетом ширины колеи, текущей скорости и центробежной силы - легко получаем необходимый ШИМ для движения по заданному радиусу или перехода на него.
Что позволяет легко запрограммировать табличное управление движением по трассе (аналог "П" для ПИД) по заданному (а не линейному как у ПИД!) закону. Причем типовые радиусы считаются легко и вовсе не те, которые есть на трассе, а согласно расположению датчиков линии: угол из центра оси вращения до конкретного датчика и есть "хорда поворота" по этому выделенному радиусу. Именно этот момент не позволяет выносить датчики слишком далеко: датчики перестают "видеть" крутые повороты ибо их "радиусы" увеличиваются. Для каждой трассы есть оптимальный вынос, которым покрывается большая часть радиусов трассы.
Отсюда, существует оптимальное расположение датчиков и поперек тоже, а именно на 2/3 от ширины линии. Это позволяет получить в 2 раза больше состояний датчиков относительно их количества, поскольку они в таком случае работают "через раз" ровно: один, два соседних, следующий. Длительность состояний при такой их ширине - одинакова. Любое иное расположение датчиков приводит к неравномерности длительности состояний при плавных(!) разворотах и рваному управлению..
Проблему (незначительную) в данном месте представляют "неравномерности и случайности", а именно: как-то скачет напряжение на аккумах, как-то динамически меняется сцепление с трассой, моторы не всегда идентичны друг другу, как и колеса, биения на валах и люфты редуктора .. все это компенсируется либо почти статичным "И" (разные моторы, колеса, развесовка по осям) и в табличном управлении относительно небольшим "Д" ибо закон движения задается точнее (там практически кубическая зависимость ШИМ от радиуса И текущей скорости, чего ПИД - не делает в принципе, заменяя сверхбольшими "Д").
Дополнительно, "Д" можно снизить путем установления разных законов движения "с трассы" и "на трассу", улучшив тем самым как среднюю скорость движения, так и уменьшив "болтанку" при перерегулировках. Расчетные "П" получаются верны только в первом приближении.
В итоге, при таком подходе можно достаточно плавно двигаться по линии со скоростями близкими к предельно разрешенным для габаритно-весовых параметров телеги по к-ту трения.
Проблему составляет ситуация того что при скоростном движении управляющие воздействия летят со скоростью в несколько раз превышающей (около 10 раз, ежели вче, по цифирькам выше это должно быть видно) инерционные силы в моторах. Как утверждает теория ПИД, в этом разе "спасет увеличение Д", которое и есть как-бы "предсказание".. вот при таком запаздывании "Д" легко вылетает за допустимый интервал управления даже ещё до достижения "предельных" режимов движения при типовом ПИД.
что делать с этим - в этом и есть "вопрос" последних попыток получить тут "консультацию".
Тележка не просто "движется с разной скоростью и разным направлениям" .. эта зараза ещё и читает свои датчики, которые стоят с определенным шагом, то есть выдают сигнал ошибки не аналоговый, а дискретный и она, тележка, реагирует на итог "периодически", что приводит к "вилянию" по трассе даже при неплохой настройке. Просто виляние зависит от частоты натыкивания датчиков и качества настройки и может быть слабозаметным, но оно ВСЕ РАВНО ЕСТЬ. И вот отсюда, попадание в поворот возможно как с удачного завиливания (мотор уже начал тормозится/разгоняться) так и ровно наоборот - только что компенсировали свиль с трассы и на тебе - "поворот" .. мотор надо СРОЧНО крутить в обратном режиме - разгонять, если тормозили или наоборот .. и постоянно "попадать" удачно - нереально.
А когда тележка прет по трассе со скоростями 2-5 метров в сек. "ждать" (интегрировать) мотор до его нормальной "постоянной времени" - это профигачивать "мимо" по 20-50 миллиметров трассы со всеми последствиями для например её ширины в 15мм.
Вот "КАК" быть? :)
.. эта зараза ещё и читает свои датчики, которые стоят с определенным шагом, то есть выдают сигнал ошибки ..
Чтобы не реагировало на ошибки, датчики надо пакетом штуки по три-пять ставить параллельно.
:) "сигнал ошибки" - это как раз то, зачем их вообще ставят для движения по линии. Это "расстояние" центра машинки от середины линии, постоянно замеряемое датчиками. Задача регулирования как раз сводится к изменению управляющих ШИМ на моторах так, чтобы свести это расстояние в ноль как можно быстрей, но достаточно плавно. :)
Не проще ли поставить датчики скорости вращения колес?
Какова "постоянная времени разгона колеса"? На макс. напряжении мотор жрет до 1.5А, то есть имеет макс. момент на валу = 65*1.5 = 97,5 гр*см. Соответственно, макс. угловое ускорение составит 97.5 / 31,3 = 3,11 сек^-1 (178,5грд/сек) а на "первых порах" куда как меньше (14,3/31,3=0,46 сек^-1 = 26грд/сек), но .. прямо пропорционально току мотора (об чем и писал ранее за ШИМ, который и определяет этот самый "ток мотора").
В начальный момент троганья всей системы (скорость мотора = 0, колеса = 0, преодолен к-т трения покоя) ток на моторе ещё только 220 мА и нарастает по 40мА в мсек, мотор начинает вращение со скоростью 26 градусов в сек, а колесо в 5 раз медленней.
Радует что Вы хоть както начали считать, жаль только пока совершенно безграмотно. Пока два бала. Ошибки следующие.
1. Не учтена масса телеги. У вас не только колесо начинакт двигатся, но и вся телега. Её инерция тоже замедляет старт.
2. Попутали граммы и граммысилы в расчетах момента силы. Не пользуйтесь граммсилы, эта старая внесистемная единица до добра не доводит. Используйте Н, а момент силы соответственно Н*м или Н*см. Тогда и ускорения будут адекватными. Вас же самого наверняка смутило ускорение вращения 26 и 178 градусов в сек за сек, да еще и а "колесо в 5 раз медленней". Это первый оборот колеса завершится через 4,5 сек после начала движения )))
3. Ускорение вращения сек^-2 а не сек^-1, но то такое, будем считать опиской.
Важно другое, не придираясь к цифрам. ШИМ в течении всего рассмотреного процесса 100%. А скорость изменяется от 0, с некоторым ускорением, еще и не постоянным (по вашим цифрам от 26 до 178 градусов в сек за сек). Понимаете, ШИМ постоянен, а скорость в процессе разгона изменяется. Потому и ШИМ не годится для определения скорости в динамике.
ПС. В остальных расчетах тоже мрак, я их глянул по диагонали. Но они не так важны пока, потому я их не коментирую.
"Радует что Вы хоть както начали считать, жаль только пока совершенно безграмотно. Пока два бала. Ошибки следующие."
Спасибо, что до Вас наконец-то дошло, что все считано и моделировано ещё весной, к Робофест-2017, где взяли 3-е место из-за чистой случайности имея первое на квалификации с большим отрывом от остальных. :)
Там конечно же угловое ускорение от момента силы в градусах в сек за сек. Это описка, спасибо. Замедление от инерции всей телеги не стал добавлять, ибо стремился показать что инерция раскрутки только якоря - уже достаточное основание, чтобы не было никаких "нелинейностей" как-бы "следующих из теории". Сам когда-то также ошибся пока таки не построил полноценную модель всего этого "барахла". С учетом инерции всей телеги там все ещё печальней.
Ничего там не попутано. Угловое ускорение от момента силы как ни крути а все одно останется в радианах в сек, за сек. Всё там посчитано верно.
Важно то, что ШИМ тут нет вовсе никакого, а показана раскрутка мотора в начальный момент времени от приложенного постоянного напряжения. И тут важно то, что первые 5.5мсек (это вообще-то ДВА с хвостиком периода ШИМ!) мотор будет тупо стоять и только потом начнет вращаться и первоначальная скорость колеса да-да, те самые 4.5 секунды(!) на 1 оборот. То есть мотор не "рвет с места" как это кажется визуально (при подаче пост. напруги, тележка вообще-то легко встает на дыбы из-за слишком "быстрого разгона"). При переходе к миллисекундам всё становится "медленно и печально".
Так что тут ШИМ не постоянен .. его просто нет в этом рассмотрении. Вариант ШИМ, скажем 50% с периодом в 2мсек (500гц) рассмотрите самостоятельно. Заодно оцените насколько дольше мотор "включается в работу".. :) В качестве подсказки, ток спадает на индуктивности ровно также как нарастает.. :) Ну и для справки: тележка вполне стартует, начиная с ШИМ около 20%.. :)