Контроллер для детской машинки на Arduino Mega 2560

Автор HECTEPOB, 16 Нояб. 2014 в 21:35

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

gde700

#18
[user]HECTEPOB[/user], если нужно именно датчик положения, то за основу проще всего взять конструкцию ручки газа. Либо взять готовую ручку, распотрошить и прикрепить магнит из ручки на рулевую трубу, а напротив по середине поставить один аналоговый датчик холла из этой ручки. Тогда ноль выставлять по среднему напряжению с датчика.
Собственно, там обычно ставят SS49. При отсутствии магнитного поля на выходе датчика в среднем 2,5В.

Li-Ion microvast 55,5V 22Ah
DUAL-E-TWOW S2 15s1p 2x6fet nuclear! :)
Begode Tesla V2 литровая.

HECTEPOB

[user]gde700[/user],

Спасибо!

Идея с ручкой газа нравится. Пожалуй самое простое и надежное решение.

Tygra

Ну у меня нет опыта использования датчиков холла, всяких оптических систем, не дорогих и доступных энкодеров с сигналами о конкретном положении и с достаточной точностью, я не встречал, мне кажется это будет слишком хрупко и не надежно. Вколхозить резистор проще и что не маловажно надежнее. Учтите еще что быстродействие у ардуины ограниченное, слишком большие логические цепи она не успеет с достаточной скоростью обработать.
P\S Но не получается у того кто не делает, попробуйте, мне сия затея выглядит как то спорно. Но если получится, то с удовольствием повторю. Только потом скетч эмулятора сервопривода не потеряйте.

HECTEPOB

[user]Tygra[/user],

С датчиками холла у меня большой опыт работы,  как я писал ранее. Ручка газа видится мне как наиболее надежное решение и что не маловажно подходящее по конструктиву.  Отрезать от ручки лишнее и надеть на вал видится мне задачей не сложной.

По поводу скорости работы: если не будет успевать перепишу на ассемблере. Под все автомобили до примерно 94 года эбу делали вообще на 8051 и ничего учпевали!

Tygra

#22
Ну правильно там с нуля писали, здесь сам язык ардуины может стать проблемой, я не особо программер, базовый курс школы, потому на данный момент мне ассемблер на уровне работы с микроконтроллером не доступен. Из ардуины у меня собран на меге 2560, не потому что лучше, а потому что была в наличии : ). Сейчас есть еще ардуины nano.
P\S С недельку назад были заказаны еще датчики холла http://www.aliexpress.com/item/Free-shipping-10PCS-LOT-The-OH49E-Hall-element-OH49E-Hall-sensor-Hall-Effect-Sensor-In-stock/1660737705.html , я с ними никогда не работал и не очень представляю что с ними делать. Если кто нибудь в общих чертах опишет логику работы, буду премного благодарен. Я конечно понимаю что взять магнитик, поднести к датчику, что то в показаниях датчика будет менятся, а вот что и насколько линейно.

HECTEPOB

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

Датчики холла бывают очень разные.  В простейшем случае это магнито-резистор т. е.  сопротивление меняется в зависимости от напряженности и ориентации в магнитном поле.  Далее идут навороты.  Помещение магнито-резистора в корпус микросхемы с обвязкой. Выход микросхемы может быть разный.  Аналог,  шим, чим, spi,  l2c, ssi и т. д. В самом тяжелом случае это микросхема вместе с магнитом в неком конструктиве.  Например энкодер,  ручка газа и т. д.  с заведомо известной характеристикой выхода относительно механических параметров.  Та же ручка газа в простейшем случае имеет аналоговый выход с линейной характеристикой по углу поворота

HECTEPOB

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

HECTEPOB

[user]Tygra[/user],
По поводу программирования: для меня это самое простое, что может быть в проекте. Имею большой опыт работы с автомобильными ЭБУ, разработки всяких датчиков, реализации всевозможных законов управления.

Так что если нужно что нибудь напрограмить, обращайтесь! Напрограмлю черта лысого! Ж:-))) Взамен хочу помощь по аналоговой (силовой и не только) электронике и идеи по механике (не могу сказать, что руки у меня растут в этом плане откуда положено Ж:-)))) Например очень мне понравилась Ваша идея по задней подвеске. Но к сожалению боюсь не осилить, не знаю даж как подступиться к реализации....

Tygra

Чем смогу помогу, спрашивайте. У меня на механику руки растут оттуда откуда у нормальных людей растут ноги. Но с задней подвеской мне повезло, вышло на удивление не как обычно : ) Отрабатывает отменно. С датчиком холла нужно будет поэкспериментировать, приедут, поиграюсь. Насчет ЭБУ, когда нибудь встречались с фордовскими ecc-v ?

HECTEPOB

По поводу авто эбу из фордов попадался только galaxy. Уже 7 лет не занимаюсь этим. Мы немецкие машины чинили в основном. Здесь это уже офтоп.  Лучше конкретные вопросы по эбу в личку.

Tygra

Ммм, а не будет потом проблем с датчиками холла из-за наличия или отсутствия  вокруг различных железных предметов ? Все таки расстояния буду достаточно значительными. Я бы поставил не один датчик а штук 5, посередине, 2 по краям и по одному между серединой и крайними точками. Выделил бы отдельный контроллер который бы только и делал что высчитывал бы углы или целиком эмулировал бы серву по аналогии с моделями RC. На контроллер выдать уже сигнал с приемника или дублировать через головной контроллер.

HECTEPOB

По поводу металлических предметов: практически не влияет.  Используется довольно мощный магнит и расстояние между ним и датчиком миллиметры.  Гораздо больше проблем с люфтами не жестким закреплением и т. д. Много датчиков - хорошо,  точнее измерения.  Но обработка на порядок сложнее.  Думаю в нашем случае точности одной ручки газа будет более чем достаточно.  Меня больше волнует,  удастся ли реализовать пропорциональное управление при таких люфтах в редукторе.

По идее ручручки газа на руле должно быть достаточно для реализации модельной схемы.

Tygra

#30
Ммм мы наверно думаем о разном. Я думаю ставить датчики на сам редуктор. Главное обеспечить положение самой оси руля в редукторе, в редукторе не такой большой свободный ход, он там минимален. Далее сама ось руля идет на "рулевую" рейку и на колеса, там уже люфт очень большой. Главное сделать нормально по части редуктора, а далее уже пофиг какой будет люфт и потом в процессе усовершенствования можно будет сей люфт уменьшить и он уже никак не повлияет на работу рулевого редуктора.
P\S Думается делать управление по принципу сервы при помощи ШИМа, т.е. Чем выше разница м\у реальным положением руля и заданным тем выше заполнение ШИМ сигнала, чем меньше тем меньше, понятно что из-за люфтов всегда точного поддержания не будет, т.е. 100пр. Но при помощи ШИМ движок редуктора будет всегда стремиться к балансу. Настроив степень зависимости скважности от размера разности положений можно в нужных пределах задать точность поддержания и там уже будет плевать на люфты.

HECTEPOB

Вот в том и проблема, что у меня большой люфт именно в самом редукторе...

Tygra

#32
отредактил сообщение выше, перечитайте.
P\S Я так думаю что угол поворота ручки газа буден не достаточным для установки его на руль. Т.е. угол поворота у руля будет выше чем у ручки газа. Думаю что многоточечный датчик из 5 датчиков хола будет надежнее и точнее и не будет нуждаться в какой либо калибровке после программирования, т.е. уже в "поле". Но логика обработки конечно же будет достаточно сложной. Потому и говорю что лучше на рулевой редуктор ставить отдельный контроллер, так что бы в итоге получить аналог мощной сервы от RC модели. 

HECTEPOB

Для того чтобы все сделать правильно,  надо сначала вывести закон управления.  В Вашем описании мысль верна,  но присутстыприсутствует некоторый сумбур.  Итак раскладываем все по полкам.

1. Что на входе: сигнал с приемника линейный по углу отклонения рулевого колеса на пульте, сигнал с датчика угла поворота рулевого вала. Может быть линейный может логарифмический может экспоненциальный,  какой угодно по отношению к углу поворота вала.
Значения обоих входных сигналов "дробят" для устранения используем усреднение нескольких последних отсчетов.  Для этого используем кольцевые буфера. Т. е.  выделяется массив требуемого размера и заводится переменная текущего индекса. При поступлении на вход нового значения записываем его в массив по текущему индексу и смещаем индекс на единицу.  Если индекс вышел за границы массива,  обнуляем его.  Далее вычисляем среднее по всему массиву и используем его в качестве текущего значения параметра во всех дальнейших расчетах. При этом длина массива пропорциональна степени сглаживания.

2. Чем можем управлять: направлением и скоростью вращения рулевого мотора.

Здесь все зависит от схемы силовой части.  В моем случае это будет полный H-мост.  Управляется он по четырем каналам. Два для верхних ключей два для нижних.  Верхние ключи обязательно работают в противофазе,  желательно с некоторым интервалом между выключением одного и включением другого.
Верхним ключем определяется направление вращения.  Нижним (по диагонали если смотреть на схему моста) управляется скорость вращения посредством ШИМ.

Теперь собственно закон:

1. Вычисляем желаемое положение рулевого вала. Для этого берем усредненное значение сигнала с пультаи делаем либо линейное,  либо табличное преобразование.

2. Вычисляем разницу между усредненным фактическим и желаемым положением.  Если разница по абсолютному значению меньше порога,  то моторы отключаем. Если больше,  то делаем табличное преобразование разницы в скорость вращения (скважность ШИМ) направление вращения выбираем по знаку разницы.

Таблицу скоростей подбираем опытным путем,  таблицу для желаемого положения (при нелинейности сигнала с датчика угла) промеряем после установки датчика поворачивая колеса вручную.

Как то так,  можно пинать Ж:-)

Tygra

По мне слишком сложно, "велосипед" нужно упростить. Проще прога - меньше глючит, быстрее работает. Мне кажется сигнал с приемника усреднять не стоит, допустим на моем приемнике это стабильный сигнал как по качеству так и по времени и не очень нуждающийся в усреднении, тем более таким сложным способом (ну это я так думаю). Усреднение скажется на быстродействии. Я думаю что нужно не изобретать "велик", а сделать так как сделано в RC моделях, там уже все обкатано и надежно работает. Т.е. сделать из редуктора сделать не зависимую серву, которая будет управляться либо напрямую с приемника (ради безопасности, контроллер может взглюкнуть), либо через основной контроллер. Мне кажется напрямую будет правильнее и безопаснее, все таки не картошку возить будем. Если откажет основной контроллер, то хоть рулевое останется, если откажет рулевое, то основным контроллером можно будет тормоз "вдавить". Отказ обоих контроллеров одновременно маловероятен. Почему я склоняюсь к нескольким контроллерам, так я хочу делать эмулятор скоростей и бортсеть в 24в. Выдавать больше скорости в зависимости от нагрузки на ходовых движках, установка термо и токовых датчиков на каждый движок, плюс датчик скорости на ходовой редуктор. Что в совокупности будет сильно много для одного контроллера.
P\S Подумываю о приобретении многоканальной аппаратуры, т.к. текущий временно снят с действующего монстра масштаба 1/8 hpi savage xl. Но в целом я так понимаю что на следующий сезон ребенок уже будет сам во всю рулить и папу через "ремоут" будет принудительно отключать :), посему наличие хорошего пульта становится вопросом спорным. Так же не маловажно, можно попробовать сделать из сервы ЭУР, дабы без пульта ребенку было легче крутить. По поводу ЭУРа у меня особых предложений нет ( по логике работы) кроме желания вообще его иметь : )...

HECTEPOB

Для эур нужен в идеале тензодатчик (датчик усилия) либо два датчика положения. Можно с одним датчиком положения,  но работать будет не айс.