Сделал машинку а-ля танк. Думаю синхронизировать колеса. Как?
- Войдите на сайт для отправки комментариев
Всем доброго!
Вкратце в чем суть: собрал машинку а-ля танк (два ведущих колеса, радиус разворота отсутствует-может развернуться на месте на 360 градусов).
И вот в чем загвоздка: из-за разности изготовления двигателей-машинку сносит. Причем чем больше скорость-тем сильнее сносит в одну сторону, вплоть до разворота вокруг оси (на максимальной скорости).
Как думаю с этим бороться:
Вариант А(геморройный): установка энкодеров /или датчиков холла-на каждое колесо. И усреднять скорость через ШИМ: подгонять отстающее колесо или тормозить бегущее вперед. Вариант хороший-но геморный. Много всего надо собрать и наворотить.
Вариант Б: установка некого датчика ускорения просто на раму машинки. И уже по показателям датчика -регулировать обороты двигунов. Скажем пришла команда "вперед". А машинку сносит на 10 градусов влево. Значит корректируем скорости двигателей так, чтобы она ехала прямо. На мой взгляд-самый недурной вариант. Так как требует минимальных трудов по созданию физической части.
Вот такие "мюсли"....
Критикуем, соглашаемся и т.д. Любые идеи- приветствуются! :-)
Как бы хорошо было, если бы вдруг от дома провести подземный ход или чрез пруд выстроить каменный мост, на котором бы были по обеим сторонам лавки, и чтобы в них сидели купцы и продавали разные мелкие товары, нужные для крестьян.
P.S. забыл добавить-машинка будет ездить по практически идеальной ровной поверхности. Поэтому ускорением по Z можно пренебречь и задача упрощается (если ставить датчик на раму).
А если поставить 2 датчика на раму-около каждого колеса -то и вообще хорошо: мне кажется эта система будет выдавать корректирующие сигналы с достаточно приемлемой точностью. Идеала не надо- не в космос летим :-). Достаточно "более-менее ехать вперед". Это всё :-)
Вариант Б: установка некого датчика ускорения просто на раму машинки. И уже по показателям датчика -регулировать обороты двигунов. Скажем пришла команда "вперед". А машинку сносит на 10 градусов влево. Значит корректируем скорости двигателей так, чтобы она ехала прямо. На мой взгляд-самый недурной вариант. Так как требует минимальных трудов по созданию физической части.
Тут не датчик ускорения, а гироскоп нужен. Хотя они сейчас часто с акселерометрами в одном флаконе идут.
Вот, например https://aliexpress.ru/item/32918386356.html
задача решается обычным триммированием аппаратуры )))
"А после государь, прознав о такой удивительной дружбе, обоих наградил бы и пожаловал в генералы"
... :0D
Но смех смехом, а подруливание с помощью акселерометра, - кажется мне здравой идеей. Тем более, если "аппа" - обычная клава и управление с компа.
Но смех смехом, а подруливание с помощью акселерометра, - кажется мне здравой идеей. Тем более, если "аппа" - обычная клава и управление с компа.
а какая разница какая у вас аппаратура, надо просто вывести 0 точку, это делается простым триммированием и изобретать велосипед там, где всё уже давно изобретено напрасная трата времени
вот тут для внучки делал
В общем боролся, боролся с триммированием. Да- "некие симптомы" можно убрать. Но саму болезнь победить не получается...Может руки кривые конечно-не исключаю. Максимум, что удалось добиться- что машинка едет сантиметров 40 прямо, потом ее сносить начинает. Некого "ультимативно прямого" движения, которое есть даже у покупных машинок на радиоуправлении за 200 рублей из "FIXPRICE" -не удается добиться.
В общем, сегодня прикупил вот такой чип акселерометра/гироскопа. Буду делать постоянное автоподруливание (если пришла команда ехать вперед).
имхо рыскание только на акселерометре не реализовать. нужен еще магнитометр
Матчасть-то перед покупкой читал? А то опять "может руки" окажется.
у покупных машинок на радиоуправлении за 200 рублей из "FIXPRICE"
У них нету никаких акселерометров и вообще никаких "хз-чего-метров". Может Вам лучше сначала купить парочку да посмотреть что там и как, чем огород-то городить?
именно , что покупал. Понятно, что у них другая система- ведущая задняя единая ось и рулевая передняя.
Я просто для примера их назвал.
Задача несколько упрощается тем, что ехать машинке надо всего пару метров. В хоккей будут играть. То есть, даже если будет накопление ошибки- но более плавное, чем при триммировании-уже хорошо.
В хоккей будут играть.
У меня играли. Площадка и ворота и сейчас сохранились. Весело было.
А вообще, если Вам интересны "умные машинки", посмотрите вот эту тему. Там реально крутая наука - пользы ребятёнкам будет немеряно!
ага, тоже хочу веселуху устроить. Можно было бы конечно машинку не танкового типа. А именно ведущая ось, рулящая ось. Но у нее управляемость снижена, присутствует радиус поворота. А у танковой системы- отличная управляемость, есть возможность развернуться на 360 градусов прямо на месте.
Удар будет наноситься и корпусом и клюшкой специальной. Машинка очень резкая во вращении (стоит преобразователь на 12V и движки от этого напряжения просто зверями становятся :-)
P.S. вот тут люди собирали на этом акселерометре. Буду сейчас изучать...
ок, сейчас гляну, спасибо!
В общем боролся, боролся с триммированием.
у всех получается простым триммированием, кривую регулировки подстройте ежели что
Кстати, может кто подскажет-сейчас копаю эту тему-т.к. не сталкивался:
Использую в esp32 8-битное разрешение ШИМ и, соответственно, от 0 до 255 уровней ШИМ - для регулировки скоростей двигателей.
Опытным путем было выяснено-что шаг в 1 единицу - слишком большой при триммировании. Надо мельче-т.к. выровнять почти удалось, но грубо.
То есть, на одном движке скорость у меня стоит скажем 72 (из 255 возможных), на другом - 73 (из 255 возможных).
Уже почти хорошо-но грубовато.
Вот и думаю-esp32 поддерживает 16-битное разрешение (у меня сейчас стоит 8-бит).
Правильно ли понимаю, что если выставить 16-бит, то мне станут доступны 510 уровней корректировки сигнала?
Короче говоря, копаю пока эту тему- как сделать более плавную регулировку ШИМ-не такую скачкоообразную...
Кстати, может кто подскажет-сейчас копаю эту тему-т.к. не сталкивался:
Использую в esp32 8-битное разрешение ШИМ и, соответственно, от 0 до 255 уровней ШИМ - для регулировки скоростей двигателей.
Опытным путем было выяснено-что шаг в 1 единицу - слишком большой при триммировании. Надо мельче-т.к. выровнять почти удалось, но грубо.
То есть, на одном движке скорость у меня стоит скажем 72 (из 255 возможных), на другом - 73 (из 255 возможных).
Уже почти хорошо-но грубовато.
Вот и думаю-esp32 поддерживает 16-битное разрешение (у меня сейчас стоит 8-бит).
Правильно ли понимаю, что если выставить 16-бит, то мне станут доступны 510 уровней корректировки сигнала?
Короче говоря, копаю пока эту тему- как сделать более плавную регулировку ШИМ-не такую скачкоообразную...
нет, станут доступны 65536 уровней )))
Правильно ли понимаю, что если выставить 16-бит, то мне станут доступны 510 уровней корректировки сигнала?
Грубо говоря, каждый бит разрешения удваивает количество уровней
Ого! Спасибо!
И вот еще что: есть ли там какое то ограничение по частоте?
Скажем у меня сейчас частота стоит 30 000 при 8-битах.
Могу ли я оставить частоту такой же(чтобы писка для уха было не слышно) -или придется понижать/повышать - при 16 битах?
Вопрос немного некорректный- ограничения по частоте есть-я знаю :-)
P.S. вопрос вроде снимается- вычитал такое:
"Очень просто настроить сигнал ШИМ на любой желаемой частоте с любым желаемым разрешением при условии, что вы не превысите максимальную «пропускную способность»: частота, умноженная на разрешение, должна быть меньше половины тактовой частоты устройство.
Полное объяснение по отношению к ESP-IDF составляет доступно здесь".
В общем вот как обстоят дела после всех тестов: да, с помощью расширенного диапазона ШИМ - удалось многое сгладить, но в силу разных причин(несбалансированность тележки, неровно стоят колеса, все-таки некоторое различие в скоростях двигателей)- кардинально улучшить прямолинейное движение не получается.
Поставил сейчас этот чип MPU 6050 и пытаюсь рулить акселерометром (пару дней). Пока получается так себе :-D. Ибо не умею. Накопал кучу кода для самобалансирующихся штук а-ля гироскутер. Но это не совсем то.
Может для моего случая (когда по сути надо всего то 1 ось считывать, обработать ошибки датчика и ехать прямо, я так думаю :-))) - может кто подскажет дельное, или кто-то может делал такое?
Помурыжусь, потрачу кучу времени-я конечно найду, разберусь и сделаю...Но охота побыстрее :-))))
тут поможет компас
Нее, компас -это слишком ультимативно и круто :-). Почему: машинки будут сталкиваться друг с другом и менять траекторию движения друг друга. И это нормально. Гораздо хуже будет, если после столкновения -все опять поехали по своим старым траекториям. Это уже какие то роботы несбиваемые. Терминаторы :-))))
Не надо так... :-)
...кардинально улучшить прямолинейное движение не получается.
Может для моего случая (когда по сути надо всего то 1 ось считывать...
Да не...все правильно делаю. Только малость не то. Вчера нашел мануал одного чела-решал такую же задачу. Он пишет что решил так: вместо акселерометра-стал читать данные гироскопа. А конкретно ось Z. И этого достаточно, чтобы машинка ехала прямо. Глянул его видео-да все работает вроде...Сегодня буду так же пробовать.
Да не...все правильно делаю. Только малость не то. Вчера нашел мануал одного чела-решал такую же задачу. Он пишет что решил так: вместо акселерометра-стал читать данные гироскопа. А конкретно ось Z. И этого достаточно, чтобы машинка ехала прямо. Глянул его видео-да все работает вроде...Сегодня буду так же пробовать.
ну не знаю, у Онкеля ездят прямо, у меня прямо, у Архата аналогично, может машинки надо допилить напильником
А вы как сделали? Только триммированием? Или все-таки через акселерометр/гироскоп?
Расскажу как я пробовал через триммирование:
1 этап: поставил 8-бит (и соответственно 255 уровней).
Скорость выставил 70 уровней (чтобы не слишком быстро летала от 12 вольт).
Выяснилось, что на одном двигуне- 70, а на другом надо 62.
И тогда "почти получилось". Но все равно-40-50 см проезжает и сносит вбок.
2 этап: поставил 10 бит (и соответственно 765 уровней).
Начал настраивать...Плюнул, все проклял :-)))))
И понял, что проще разобраться в гироскопе-чем вручную настроить и ловить эти мизеры на 10 машинках...
P.S. машинки особо "допиливать" некуда- они полностью 3d печатные. Там отклонения мизер...
2 этап: поставил 10 бит (и соответственно 765 уровней).
10 бит - это 1024 уровня (0-1023) . Определяется просто - количество уровней = 2^n, где n - разрешение. В вашем случае 2^10=1024
ок, ошибся, сорри.
Но я не про то хотел сказать. А про то, что при уменьшении шага настройки- задолбаешься настраивать вручную. Тем более 10 машин. Проще гироскоп понять и настроить ...
Выяснилось, что на одном двигуне- 70, а на другом надо 62.
И тогда "почти получилось". Но все равно-40-50 см проезжает и сносит вбок.
Выяснилось, что на одном двигуне- 70, а на другом надо 62.
И тогда "почти получилось". Но все равно-40-50 см проезжает и сносит вбок.
думаешь не в движении триммировал? Оригинально
ЛЮБУЮ радиоуправляемую модель первым делом учат ходить, если требуется сильно большое триммирование подстраивают тяги, тяг у вам нет, значит обязана настраиваться, если разбаланс зависит от величины отклонения руля, подстраивают кривые управления, как то так и, каждую индивидуально
но мы так и не увидели кода, там может в коде косяки
Ок, кидаю код.
Это код, без внесенной поправки на разный ход двигателей.
"Нулёвый" так сказать, с разрешением 8 бит(пока что).
Версию кода с гироскопом пока не даю-т.к. работаю над ней. Давать нечего -все в разбросанных кусках:-)
Кстати, может по коду кто подскажет такую умную вещь: сейчас код запускает сервер на ESP32, на которой становится доступен интерфейс управления из браузера (по IP подключаешься к esp32 - и "вперде!" :-).
В чем вопрос: кнопки реагируют только на нажатие. Нажатие/отпускание кнопки-не реагируют. Если бы прикрутить отпускание кнопки-было бы зело удобно :-)
Да не...все правильно делаю. Только малость не то. Вчера нашел мануал одного чела-решал такую же задачу. Он пишет что решил так: вместо акселерометра-стал читать данные гироскопа. А конкретно ось Z. И этого достаточно, чтобы машинка ехала прямо. Глянул его видео-да все работает вроде...Сегодня буду так же пробовать.
Я еще 2 недели назад здесь писал, что гироскоп надо использовать, а не акселерометр. Акселерометр фиксирует ускорение вдоль оси, а гироскоп вращение вокруг оси. А если машинка отклоняется от прямой, то именно вращение и происходит. И как раз с гироскопом одной оси достаточно будет.
Вчера вот такой код нашел любопытный-с фильтром Маджвика. Надо попробовать...
Да не...все правильно делаю. Только малость не то. Вчера нашел мануал одного чела-решал такую же задачу. Он пишет что решил так: вместо акселерометра-стал читать данные гироскопа. А конкретно ось Z. И этого достаточно, чтобы машинка ехала прямо. Глянул его видео-да все работает вроде...Сегодня буду так же пробовать.
Я еще 2 недели назад здесь писал, что гироскоп надо использовать, а не акселерометр. Акселерометр фиксирует ускорение вдоль оси, а гироскоп вращение вокруг оси. А если машинка отклоняется от прямой, то именно вращение и происходит. И как раз с гироскопом одной оси достаточно будет.
ага, было такое...:-)
Я как раз аксель+гироскоп взял потом. Вот такой. Попроще конечно-но сойдет. Нам не "боинги" сажать :-)
и где там триммирование?
Есть же стандарты для девайсов радиоуправления PWM, PPM, SBUS, IBUS
Тайминги 1000 - 1500 - 2000 надо к ним придти и вокруг них плясать
А так получилась уникальная не настраиваемая хрень
А если поставить 2 датчика на раму-около каждого колеса -то и вообще хорошо: мне кажется эта система будет выдавать корректирующие сигналы с достаточно приемлемой точностью. Идеала не надо- не в космос летим :-). Достаточно "более-менее ехать вперед". Это всё :-)
Вот такой датчик, где то 20 импульсов на один оборот + простая программа автобаланса.
https://cdn.usdigital.com/assets/images/posts/optical-encoder-tech.png
да, я изначально так примерно и думал. Если не получится с гироскопом( а это вряд ли, как я понимаю) - то можно будет пробовать такое...
У ЕвгенийП точно есть код для тележки, внуки рассекали, и там всё прямо ехало, спросить как он решил проблему прямохода
спросить как он решил проблему прямохода
Там были BLDC драйверы с обратной связью (тахоимпульсы валились по хрен-помнит-сколько на оборот). Считал время между импульсами тахометров и подравнивал обороты двигателей в зависимости ещё от положения рулевого джойстика. При этом меня интересовали именно обороты двигателей, а не прямизна траектории. Например, если давление в шинах на одной стороне оказалось бы не такое, как на другой - машинка вполне могла и заворачивать, или из-за неровностей дороги - подруливание уже на водителе было.
Пару дней назад накопал весьма ядреный труд (автор издает аж книги) - по автовыравниванию машинки. Там выложены полные листинги. Открываешь их и....крыша уезжает :-))))) Как минимум из-за того, что все работает из-под freeRTOS (встраиваемая операционка под esp32).
Сижу вот изучаю...А вот результат его трудов(один из): https://www.youtube.com/watch?v=XFPTE3VfiJ4
Пару дней назад накопал весьма ядреный труд (автор издает аж книги) - по автовыравниванию машинки. Там выложены полные листинги. Открываешь их и....крыша уезжает :-))))) Как минимум из-за того, что все работает из-под freeRTOS (встраиваемая операционка под esp32).
Сижу вот изучаю...А вот результат его трудов(один из): https://www.youtube.com/watch?v=XFPTE3VfiJ4
посмотрел, есть ПИД регулятор, значит есть УНИТАЗИНГ, на видео мы его и видим )))
У вас машинка ручного управления, зачем плодить сущности?
Пару дней назад накопал весьма ядреный труд (автор издает аж книги) - по автовыравниванию машинки. Там выложены полные листинги. Открываешь их и....крыша уезжает :-))))) Как минимум из-за того, что все работает из-под freeRTOS (встраиваемая операционка под esp32).
Сижу вот изучаю...А вот результат его трудов(один из): https://www.youtube.com/watch?v=XFPTE3VfiJ4
посмотрел, есть ПИД регулятор, значит есть УНИТАЗИНГ, на видео мы его и видим )))
У вас машинка ручного управления, зачем плодить сущности?
Без ПИ-регулятора или аналога ровное движение в этой ситуации сделать не получится
Кстати, сейчас гуглю теорию по ПИД-регуляторам. Давно хотел их понять-а тут как раз повод. Пока что на данный момент, мой ламерский вопрос звучит так: "зачем он вообще нужен, не проще ли просто прибавить/убавить скорость двигателя и всё тут" :-)))
Ищу ответ...