"Лего-кирпич" из Мега2560

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

По первой ссылке - цилиндрические - это НЕ "130-й" мотор. 130-ым он называется по диаметру пластин якоря. А там наружный диаметр 17мм, то есть на корпус и магнитную систему остается 4/2 по 2мм на сторону. Маловато будет для 130-го. Скорее всего якорь 11 или 12мм, что снижает тяговые параметры. Ещё: на 6в он крутит всего 7400об/мин - это очень мало для 130-го мотора. Соответственно, в нем может оказаться "сильная" магнитная система (чем больше поток - тем ниже скорость ХХ), что есть "гуд" и компенсирует слабый якорь. А судя по току останова в 460мА и напруге в 6в .. получаем якорь в 13ом, т.е. обмотка "ну совсем очень тонким проводом", соотвественно перегружать его по току - скорее всего не получится, что есть "не айс", ибо тянет все-таки ток.

Мой вывод: не фонтан, но можно взять для использования хорошей магнитной системы в нормальном корпусе, если подойдет.

По второй ссылке - классика, подозрительно дешевая и легкая по весу (мало пластин, мало провода) и "средним" числом оборотов на ХХ. Нет электрических параметров, что не удивляет: ни якоря ни проводов на нем, скорее всего нет и жрет оно соответственно много .. подозреваю ампера 2-3 на 6в.

Я оыскался в свое время на Али нормальных 130-х моторов .. их там нет. Вы думаете мне просто в кайф было сидеть и перематывать по 150-200 витков на обмотку провода, который я глазами и разглядеть-то уже толком не в состоянии да "виток к витку"? :)

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

Хочешь иметь отличный мотор? Сделай сам.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не дождался я тебя. заказал которые понравились. у меня в одной радиоуправляемой игрушке стоял один 130 мотор. гоняла только так. а тут 4 шт, даже слабые. если что может и перемотаю. на 3д принтере распечатаю диски колесные сразу с шестерней на корпусе. мотор сразу колесо будет крутить. то что шестерня будет будет почти у поверхности "дороги" , и обычно так не стоит делать. не страшно, ведь ездить будет по "трассе". тут главное добится хорошего сцепления, и небольшого веса. даже пружины заказал, может пригодятся в качестве амортизаторов

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Бегать как-то они будут любые. Вопрос "как" и "сколько" и чем их придется кормить и через что управлять .. моторы, у которых написано от 3в, как правило имеют якоря в 1-2.5 ома, что конечно же "крутанет" от 6в, но при этом потребует токов под 2.5-3А, что может себе позволить не каждый драйвер и не каждая батарейка. Да на пару мотров, если не на все 4шт.. Тут важен вопрос "экономичности", в смысле соответствия параметров мотора месту их применения.

Мне надо было унифицировать питание в первую очередь с моторами Лего, а они все последние на 9в (ни 2 ни полтора: 2S - мало, 3S - много).. ну и заодно ужать их прожорливость не потеряв мех.мощности.

Поищите по слову Downsol или Mabuchi у них хорошие магнитные системы, и 130 моторы серии 16140 - у них неплохие якоря, но ищите те, которые от 6в. Ну и как правило, неплохие моторы на Али стоят от доллара..

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ок. тогда такие варианты

https://ru.aliexpress.com/item/DC-6V-6300RPM-2mm-Shaft-Magnetic-Mini-Motor-for-DIY-Toys-Hobby-Silver/32753149870.html

https://ru.aliexpress.com/item/130-16140-6V-12500RPM-DC-Motor-w-Varistor-for-Smart-Car-Model-Toy/32740697175.html

хороший теоретический 130 мотор или более крупный. или я неправильно понял. никакой стандартизации при оформлении на али. попробуй пойми какой мотор крупнее

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Круглый мотор несколько крупнее, у меня такие есть. Похожие моторы стоят в Лего EV3-motor и считаются самыми мощными из лего. Вторая ссылка - нормальный 130-й мотор ..

только чего Вы находите тех, у кого нет электрических параметров? Если их нет, то окажется что-то "недомотанное" (косоглазые любят медь экономить) и? Как Вы будете выставлять "притензии"? .. попробуйте запросить у продавана электрические параметры моторов

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Выкладываю тут нашу очередную поделку, скоростной робот по линии:

Первоначальный вариант. Узкие колеса 62.4х20 и 4 датчика на "первой линии" и "главный комплект" возле шаровой опоры (красненькие). второе фото - в процессе сборки, хорошо видны детали и общий размер робота. Вес робота составил 620гр.

Окончательный вариант с карантина соревнований:

Процессор: Ардуино Нано на расширительном шилде + драйвер L298N + 2 аналоговых датчика по центру и по 2 цифровых с каждой стороны в одну линию и вынесены далеко вперед. Ультразвуковой датчик тоже пришлось перенести вперед, поскольку он цеплялся за датчики и его приходилось поднимать слишком высоко (нарушение положения Ц.Т.). Колеса заменены на 81.6х38, что привело к их большей инерции вращения и увеличению времени реакции системы на управление .. пришлось все пересчитывать заново. Вес тележки вырос почти до 700гр.

Особенности: разнос датчиков на 1/3 от ширины линии, так чтобы датчики работали попеременно по одиночке или парой, что позволило на 3-х датчиках с каждой стороны получить 6 значений удаления от оси линии. Применен "предсказатель поворотов": если было движение прямо и отклонение от оси линии растет быстрее допустимого, то это крутой поворот и применяется ABS торможение внутренним колесом с интервалами по 4мсек. Внешнее колесо просто сбрасывает скорость до допустимой в повороте.

Параметры: вес робота 683гр, габарит проекции 360х210мм при допустимой 400х400мм, максимальная скорость по прямой при полностью заряженных аккумуляторах (3S Li-ion 18650, вес 150гр) - 196см/сек. Максимальная скорость на соревновании была ограничена до 132см/сек (ШИМ=170). и в конце соревнований упала до 110см/сек из-за разряда аккумуляторов, была попытка поднять макс. скорость по прямой до 160см/сек - проезд однократно удачный (ШИМ=230, проверка дома по прямой после соревнований и замены аккумуляторов).

ПО: применена единая функция управления моторами согласно вычисленной скорости. Сделан свой (на Ардублок) pulseIn() для ограничения времени контроля препятствий при их отсутствии до 4мсек. С этим "периодом" и происходил опрос датчиков и управление моторами. Применен упрощенный (фикс. десятичные вычисления в 1/128-ых - целочисленная арифметика) ПИД в варианте ПД (без интегратора) + "предсказатель поворотов". Разгон внешнего колеса в поворотах ограничивался той же максимальной скоростью.

Итого: среднее время прохождения трассы длиной около 10м составило около 14сек. Кино залито сюда:

Одна из первых тренировочных попыток: http://radikal.ru/video/sDRZpgy1CfU  Ещё стоит декоративная крышка..

Тоже первая тренировка, тут видно команду - победитель соревнований по итогу: http://radikal.ru/video/rXMyssPizPB Тоже применен ПИД

Одно из удачных прохождений трассы нашей тележкой http://radikal.ru/video/2RbO51csvxS

Еще удачный проезд на первой тренировке: http://radikal.ru/video/A1UMeTSd1RC

вот хорошая сборка, видны покатушки практически всех участников: http://radikal.ru/video/vcYLcHbi7aA

Его первая попытка заезда http://radikal.ru/video/DKR52ovwKQK вот примерно так же произошло и на всех остальных попытках.. :(

К сожалению, при подготовке к соревнованиям было потрачено много времени на пересборку тележки и пожигание деталек (сгорело: Ардуино Мега2560, драйвер L298N - 2шт, датчики YL-63 оба те что на первом фото, Ардуино УНО, 1 самодельный аналоговый датчик, Ардуино Нано и у примененной Нано выгорел 12 пин уже не знаю по каким причинам), а также очень много времени ушло на промеры к-та трения, положения Ц.Т. и т.д., расчеты и перерасчеты движения робота в поворотах и отладку и доводку программы управления.

Был совершенно выпущен из подготовки момент "постановки на карантин" и возможного уплыва настройки датчиков .. даже не подумалось как-то в этом направлении .. не успелось. Этот момент и сыграл свою роковую роль на самом соревновании.

Обсуждение в процессе подготовки и описание соревнований есть в этой теме: http://arduino.ru/forum/obshchii/skorostnoe-dvizhenie-po-linii-kak

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Середина второй тренировки, ситуация "оно не едет" практически у всех участников соревнований .. кто, как проводил "мозговой штурм" (справа играют в игрушку) :)

diger67
Offline
Зарегистрирован: 25.07.2015

Ой еой, программа модернизации ядерного щита под угрозой. :)) Ребята вы молодцы, не сдавайтесь. Может это предел восьмибиток и пора двигать дальше. Просто мозга не успевает за реальностью!!???

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Мозга успевает с просто огромным запасом, если не тупить откровенно. В целом, задача скоростного движения решена, но не до окнца. В смысле теоретические пределы скорости движения по управляемости, трению и др. теор. ограничениям достигнуты не были. Практически приблизились примерно к 75-80% от "теор. потолка"..

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вот нашел ещё фотку с другого ракурса.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну вот. Сделал расширительный шилд для Нано на базе приехавших стабилизаторов LM-2596-ADJ и наш "паук" или "совенок" или как там его таки пошел. Как и предпологалось не хватало тока для работы серводвигателей в количестве 8шт. Кино смогу выложить попозже.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Подниму тему. В общем, погоняли мы этот "мосфетный драйвер" .. Остались очень довольны. Моторы начинают крутить с ШИМ 15-20, против 35-40 для L298N при тех же условиях. Моща мотора с мосфетным драйвером на ШИМ 255 и питании 2S (7.8v) практически сопоставима с питанием L298N напряжением 3S (12в). Афигеть сколько просирает L298N..

Микросхемы полумостов остаются полностью холодными при питании моторов с током до 3А (больше нету) и переключении (правильном!) направления вращения с частотой до 10-20кГц. (паузы: 2мксек -"до переключения" + 12мксек - "после переключения").

Алгоритм примерно такой:

Включить мотор "вперед", пауза 25-50мксек, "смена направления" (с выдержкой пауз выше), включить "взад" 25-50мксек .. повтор. Напряжение драйвера 3S (12v), мотор с сопротивлением якоря 4.2ома.

Сделана "двухстороняя" плата на 4 мотора, по 2шт с каждой стороны. Очень понравилось.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а что за драйвер? из темы про драйвер или что то другое?

a5021
Offline
Зарегистрирован: 07.07.2013

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Никуда не пропал, ничего не глотал. :)

Меги пока лежат, развожу плату под них с памятью. Обменял 1 память на 1 ATmega128A для "разводу". Делается медленно, поскольку у нас очередная подготовка к очередным гонкам. На этот раз спаял 6 аналоговых датчиков из мышиных свето- фотодиодов, что стоят на колесиках... работают, но тоже "не ахти". Диапазон снимаемых значений: 0..14 - "черное", 45..150 - "белое" в зависимости от внешнего освещения и датчика (большой разброс показаний у разных датчиков). Это на типовом analogRead(). Наши оставшиеся в живых 2 датчика в тех же условиях показывают ровнее от 5-10 "черное" до "60-70" белое, что легче обрабатывается программно.

Пришла пачка свето- фото-диодов на 940нм 3мм и 5мм по 25пар .. вот думаю не запаять ли на них ишо, для верности и не довесить ли LM358-е как усилители сигнала (тоже пришло 50шт).

Кроме того, разжились парой леговских колес на 95.4 х 20мм (от мотоцикла) .. на них предельная скорость по прямой достигается в 180см/сек даже на 2S питании с мосфетным драйвером, но у них заметно хуже сцепление с трассой .. вот, мучаемся: или делать тележку на них или вернуться к 62-й резине и питание 3S.. проблема в том, что теперь предельный габарит меньше 200х200мм и на трассе есть препятствия в виде "рельсов" - балки высотой 8мм "поперек трассы" .. надо бы амортизацию, но её некуда впендюрить .. не влезает ни в какую.

Мосфетный драйвер - тот, схему которого обсуждали в "той" теме на стр. 7-8 примерно и которую я выложил здесь ранее. Запаян он уже давненько .. ещё в декабре, но окончательно прошел проверку только недавно. Плату (svg под ЛУТ) могу выложить. Драйвер движка управляется 2-я проводами: dir + pwm на каждый мотор И жестким программным контролем сквозняков.. как оказалось "не проблема ни разу". Мосфетные полумосты AO4606 раскачиваются через резисторы: верхние 1к2 + 2к4, нижние 240 ом. Минимально допустимое напряжение на моторах = 6.5в, максимальное - под 30в. Предельный ток через эти приборы до 5А "постоянки" и 20А "в импульсе" .. кажись так по даташиту. Расчет необходимых пауз при переключении направлений - приводил в этой теме раньше.

arduinec
Offline
Зарегистрирован: 01.09.2015

Arhat109-2 пишет:

в зависимости от внешнего освещения

А свою подсветку нельзя сделать?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Там стоит "свой" ИК-светодиод. Но я не знаю их параметров (вынуты из пачки старых мышей) и похоже они таки ловят обычное освещение тоже. Дома - оч. хорошо заметно: место под люстрой освещено наиболее ярко. Автонастройка уровней датчиков под люстрой - не работает в углу комнаты и наборот. Поле небольшое, домашнее всего 1х2м, но освещается по-разному.

diger67
Offline
Зарегистрирован: 25.07.2015

А что если использовать принцип спектроанализации, черный одна реакция, белый другая. или надо ставить светофилтр пропускающий узкий спектр и повышающий надежность определения.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Зачем? Пришли пары ИК свето- фото- диодов на 940нм., в количестве 25 пар за 54руб. Протестил (сделал пробный датчик). С гасящим резистором на светодиоде в 120ом (ток ок. 40мА, допустимый до 100мА согласно даташиту) фотодиод на резисторе 750кОм отдает на белом до 550мВ, на черном 45-55мВ. Боковая засветка дневным светом добавляет 20-30мВ к белому и 10-12мВ к черному. Что устраивает "более чем". Даже при стандартном analogRead(), работающем в опорным в 5в получаем 10-15 единиц на черном и 90-125 единиц на белом. Тоесть диапазон черное/белое почти 20Дб.

В общем, опробовали 3 способа управления тележкой по линии:

Трасса: имеет прямой участок длиной около 60см, радиусы поворотов около 60, 25, и 13см. + 2 перекрестка. Общая длина трассы около 5м70см.

Тележку можно сделать с такими параметрами: ширина колеи 16-18см, база колес 10-15см, расстояние от оси вращения тележки до датчиков 12-15см, вес тележки 400-550гр, высота ЦТ 28-45мм, смещение ЦТ от оси вращения тележки "вперед" 25-45мм, поперечный к-т трения колес о баннер 0.78-0.82. Макс. скорость по прямой около 180-210см/сек.

1. "Тупой" - скорость прямо устанавливается сразу на максиум. При обнаружении линии датчиком, его колесо просто останавливается, или даже тормозится обратным вращением. При частоте срабатываний датчиков (и упр. воздействий) в 2-4мсек, позволяет достигать средней скорости по трассе  до 60-70см/сек. Требуется оптимально 3 датчика.

2. "Табличный" - движение прямо - постепенно разгоняет и выравнивает моторы; Изменение скорости при срабатывании датчика берется из расчетной (подбор на тренировке) таблицы типовых радиусов поворотов. Без дополнений (пропорциональное управление) позволяет ехать со средними скоростями 50-60см/сек. (далее срыв на радиусе 13см). С "дифференциальным" дополнением (первое изменение датчиков) улучшает движение до 70-90см/сек. Интегральные добавки у нас оказались только во вред. Существенно, и практически до теоретического предела вплотную тут помогает своеобразный "ИИ", хранящий результат своего опыта в EEPROM - "предсказатель крутых поворотов". Тут используется у нас 5-6 датчиков в зависимости от ширины линии. Все вычисления в фикс. числах с точностью 1/128.

3. "Плавный ПИД" - насколько можно конечно для целочисленной арифметики 1/128. Пропорциональное, дифференциальное и интегральные составляющие вычисляют текущее ИЗМЕНЕНИЕ скоростей колес. Далее используется нормировочная процедура, возвращающая результат в разумный предел ШИМ (-255; 255)... результат примерно тотже, что и в п.2, но программа значительно сложнее.

ПыСы: Во всех случаях 1 цикл loop() укладывался в 4мсек. специальной проверкой millis() - "блин без делай". :) Дело в том, что экспериментально было выявлено, что циклы управления меньшей длительности практически полностью нивелируются мех. инерцией системы "мотор-колесо-тележка" при любых моторах, колесах и даже гусеничном движителе.

Ну вот, как-то так. Поскольку предстоящие соревнования для нас практически последние из-за "взятия под контроль" МИНОБРом и курирующими его органами (участие у нас ТОЛЬКО от учреждений, имеющих лицензию на образование, даже там, где в Положениях прописано иное), то на этом наши изыскания в области самокатных тележек можно считать завершенными. Да и с "ардуиино в целом", скорее всего тоже. В силу обстоятельств, уходим на Лего и в "образовательное учреждение".. :(

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

точно фотодиоды, а не фототранзисторы? на всякий случай уточняю. ссылочку можно

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Извиняюсь, наврал с данными по датчикам (посмотрел не в те записки). Исправил пост. Да, это ИК пары фото- и свето- диодов.

Ссылка с заказа более недоступна. Типа таких: https://ru.aliexpress.com/item/40pcs-5mm-940nm-IR-LEDs-Infrared-Emitter-...

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Наконец-то залил часть флешки с фотоаппарата, буду постепенно выкладывать тут, всё чего напаяли, насобирали и наснимали .. продолжаем.

Датчики линии последний релиз, про которые писал выше:

 

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Наша самокатная тележка (первый вариант на этих датчиках) - "Трактор Митя - 5":

 

.. очень долго гонялись за этими большими колесами от Лего .. на проверку оказалось "фуфло полное" .. к-т трения с баннером не превышает 0.4 .. пришлось разобрать "митю".. :(

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Предыдущий вариант "трактор Митя 3" на 62-й резине, быстрых моторах (30:1) и датчиках из мышей, точнее из оптронных пар мышиного колесика .. далеко не все мыши оказывается имеют таковые, по большей части теперь там ставят механический энкодер.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Во, нашелся таки наш "главный робототехник" :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

"Скорость прямого хода по шоссе" - 60см/сек. :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Следующая версия - 2/4wd Кабриолет. 2 мотора, все 4 колеса - ведущие. Особенностью конструкции являются колеса разного диаметра, приводимые в движение одним мотором. Подбор диаметров колес с диаметром имеющихся шестеренок .. вариант оказался единственным для "лего":

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

На дальнем плане - гусеница для варианта "большой гусеничный танк" .. собирать дальше одного блока так и не стали.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну и наконец, последний вариант: "Адская колесница". Видимо она и будет участвовать в соревновании. Правда, уже ребенок колеблется .. широковата (193мм), надо бы переделать поуже - трасса имеет узкие края, а соревноваться будут на столах .. велик риск "упасть" снова

Все та же 81.6х38 резина, что использовалась на предыдущих соревнованиях. Передние колеса на очень мягкой подвеске, датчики из последнего релиза. Рассчетная предельная скорость движения по прямой на 3-х Li-ion аккумуляторах и мосфетном драйвере моторов около 1.2 м/сек.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а я то думал вот я в игрушки не наигрался

последняя машинка сзади круто выглядит

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

:) Это по большей части всё "десткое творчество" пока я на работе .. приезжаешь, а тут уже новый вариант. Только успевай фотать и кино снимать. Видео буду выкладывать позже, после соревнований.. там есть забавные моменты, которые так толком и не победили: иногда, в т.ч. и при движении по прямой машинка внезапно останавливается или резко разворачивается и пытается ехать задним ходом .. как такое удается - не получается ни поймать момент (даже на видео) ни смоделировать. При этом несколько раз гоняли по часу - полтора часа - едет строго по линии .. "капризная" программа. :)

Кстати, 3-х Li-ion 18650 2200мач хватает на пару дней плотных покатушек.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Расширительный шилд для Нано на базе LM2596-ADJ:

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Нашлись фото мышиных датчиков:

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

Проблема была в примерно такой части кода (мое изложение того что он сделал на Ардублок):

// int dirMS -- глобал (тут всё глобалы и только). Ошибка направления
//      = [-6, -4, -3, -2, -1, 0, 1, 2, 3, 4, 6] от того какой комплект датчиков "видит черное"
// при этом -6, 6 -- это потеря линии слева и справа соответственно.
//
// int prevDir -- "предыдущая ошибка направления" оно же с предыдущего цикла loop()
//
// было когда устойчиво внезапно ехало взад:
if ( (prevDir>0 && dirMS<0) || (prevDir<0 && dirMS>0) ) dirMS=0;

// после обнаружения что едем в ситуации 6 -> -4 или -6 -> 4 исправлено:
if ( (prevDir==6 && dirMS<0) || (prevDir==-6 && dirMS>0) ) dirMS=prevDir;

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

Теперь это место переводится так: если произошла потеря линии слева(<0) или справа(>0) то игнорируем новое значение до тех пор пока не найдем её с той же стороны или не обнаружим ноль. Ноль может появится при потере линии и подъезде к перекрестку под определенным углом.

Почему "ехало взад"? При крайних значениях +-4, +-6 мотор внутреннего колеса вращается в обратную сторону, чтобы сократить радиус поворота и, быстрая смена направления 6:0:-4 или -6:0:4 (срабатывание крайнего датчика с противоположной стороны) приводит к тому, что внутреннее колесо, вращающееся в обратную сторону внезапно и быстро становится внешним. Его алгоритм вычисления скоростей в поворотах (табличный ПД-регулятор - полноценные формулы ему ещё сильно рано как и вещественная арифметика, только "подбор значений" в табличках) за основу брал скорость внешнего колеса и по таблице строит скорость внутреннего в 1/128 долях.. вот и получался внезапный недолгий прокат "взад".

Собственно алгоритм вычисления скорости внутреннего колеса у него прост:

// int speedIn, speedEx -- глобалы, текущие скорости внутреннего и внешнего колеса.
// int dir                        -- глобал =abs(dirMS)
// мой перевод с Ардублок (нет в нем тернарных операторов):

prop = tblProps[dir];

// вычисляем только 1 раз при изменении направления:
if( dirMS != prevDir ){
  diff = ( (dir - abs(prevDir))>0? -1 : 1) * tblDiffs[dir]; // ситуация ухудшается или улучшается?
} else {
  diff = 0;
}
speedIn = speedEx*(prop+diff)/128;

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Отчет по результатам соревнования "отборочный тур Робофест Новосибирск 2017 Hello Robot Arduino, категория Шорт-трек".

19 февраля, прошел наш отборочный тур. На соревнование было представлено всего 2 участника - мы и ещё одна "семейная команда". Наш противник - оказался тоже Андрей и примерно тогоже возраста, но представил гусеничный вариант тележки на базе Ардуино 2560, 4-х Li-ion 18650 аккумуляторов, 8-и аналоговыми датчиками и парой мощных и скоростных моторов (покупные). Какой был драйвер моторов - не разглядел. Балансировка моторов осуществлялась регулировкой подаваемого на них напряжения двумя DC-DC преобразователями с ручной подстройкой. Программа, со слов его папы, написана полностью на С/С++ с активным использованием прерываний как для замера дальности, так и для работы аналоговых датчиков, без применения wiring. Из особенностей, папа указал на специальную "процедуру доворота" хорошо удерживающую гусеничный вездеход на трассе.

Заявленная скорость движения папой по трассе "может до 10-11сек", практически достигнутая 13.8 - 14.2сек. Очень красиво смотрелся на горке, перелетая её по воздуху. Размер робота 195х195мм.

Нами был представлен колесный вариант, поначалу на мелкой и узкой 62х20 резине от набора 42009 со скользящими передними колесами (вперед катятся, но легко скользят вбок), 5-ю аналоговыми датчиками, мосфетным драйвером моторов и 2-я Li-ion 18650 аккумуляторами с нашей парой "синих моторов" (они участвовали на городских соревнованиях, но с 81 резиной). Размер тележки 165х180мм (значительно уже и мельче противника). Использована Ардуино Нано. Ожидаемое время прохождения трассы "до" начала 13-14сек. Практически показанное на этих колесах 16сек. (первая квалификация). Программно остановились на табличном ПД-регуляторе без предсказателя поворотов (решили что обойдется и так), все сделано ребенком на базе Ардублока, соответственно замер расстояний - в основном цикле с ограничением таймаута до 2мсек (ок 30см) и контрольным расстоянием в 20см. ПД-регулятор получал значения с датчиков (dir): -6, -4, -3, -2, -1, 0, 1, 2, 3, 4, 6, где -6 и 6 -- потеря линии слева и справа соответственно. Внешнее колесо в поворотах тупо ускорялось с шагом приращения до макс. скорости поворота, а внутренне колесо вычислялось как доля от скорости внешнего колеса по таблице tblProps[abs(dir)] +- значение из таблицы tblDiffs[abs(dir)] в зависимости от того ухудшалась ситуация в повороте или улучшалась (отклонение больше/меньше предыдущего) или +0, если без изменений. Соответственно, практически каждое значение tblProps представляло собой комплект соотношения скоростей для того или иного радиуса поворота. Собственно и всё, что можно было внятно разъяснить ребенку по "ПИД регуляторам" на его уровне знаний.. при возврате на прямую (dir=0), при значительной разнице сокорости колес работал алгоритм выравнивания, который замедлял быстрое колесо на нек. значение и ускорял внутреннее на двойное значение. Значение вычислялось от разницы скоростей колес, но ограничивалось сверху, чтобы не получить "потерю контакта с дорогой". Никаких особых выкрутас, только то, что доступно 10-и летнему ребенку с несколько расширенным знанием (отрицательные числа, дроби).

После обеда наш поменял резину на 81х38 и размер тележки вырос до 195х195мм, скорость движения поднялась до 13.8сек на тренировке, но вот пройти квалификацию нашему не удалось и время зафиксировано так и не было. Тем не менее, до финала были допущены обе машинки, перед финалом наш противник поменял батарейки, наш так и остался на одном комплекте (то ли забыл, то ли не стал менять, домашний замер показал 4.01в из 4.2 до соревнований).

Из проблем второй тренировки и второй квалификации внезапно оказалось, что наш противник крайне плохо проходит перекрестки, путясь и поворачивая не в ту сторону, особенно после горки. Замеры зрителей на тренировке стабильно показывали 13.5 - 13.9сек. при удачном прохождении трассы. Вторая его особенность - неверная настройка датчика препятствий - он был подготовлен для обнаружения .. балки и снижения скорости перед ней, вместо поиска противника на трассе. Этот момент вызвал бурную дискуссию папы с судьей: будет ли считаться столкновение при догоне за ошибку и дисквалификацию. Папа аргументировал съемкой Робофест 2017 Урал, где такое НЕ защитали как дисквалификацию и победу получил тот, кто догнал и столкнулся, но наш судья твердо настоял на том, что это будет проигрыш. .. не знаю, но ребенок что-то там переделывал или подстраивал, но на второй квалификации он уже изрядно нервничал и истерил. Папе пиршлось дважды заходить в соревновательную зону и в присутствии судьи (разрешено правилами) успокаивать его. Квалификацию они прошли на 14.2сек.

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

Перед финалом, наш решил полностью убрать автонастройку датчиков с ручными покатушками и проставить значения, которые собирался замерить на трассе .. но тут пришла руководитель соревнований и .. попыталась запретить выход с ноутбуком на трассу, грубо наорав на сына. К счастью, судьи заступились, разъяснив ей что это не запрещено регламентом. В результате, провозившись с ноутбуком у трассы, убрать до конца он так и не успел (было 30мин, он решил вставить новые массивы "белое" и "черное" и оставить вычисление уровня вместо того, чтобы тупо записать массив уровней и его использовать .. нервы, нервы.. мышиное управление картинками в глючащем и валящемся ардублоке .. тоже ещё то занятие .. перегружал с его слов раза 3 всю Ардуино ИДЕ) и вернул все "на родину".

Финал обещался быть классным: 2 соперника, с примерно равными роботами .. судья объявил что будет и горка и балка, надо будет ехать 3 заезда по 5 кругов, столкновения не допускаются ни в каком виде .. зрителей осталось вполне достаточно .. первый заезд наш проиграл вчистую: его робот потеряв контакт с боковым датчиком поехал в сторону вместо трассы. Обидно, но бывает. Второй заезд. Среди зрителей напряги, обсуждения, споры (два соседа чуть не подрались из-за "нужна ли горка вообще?"), дети на взводе "не подходи" .. нашему досталась внешняя дорожка (наконец-то, удобнее стартовать) и .. старт! И .. поехали! Первые полкруга прошли достаточно уверенно, наш обнаружив противника на внешней линии остановился и соответственно приотстал на втором (нашем первом) внутреннем развороте, прямая у нас балка у него горка .. полет нормальный, пройден перектресток гусеничным вездеходом, наш на амортизаторах, балку даже и не заметил и тоже быстро пошел в разгон, догоняя противника .. второй внутренний (для нас) разворот и .. он снова ловит вездеход на датчик препятствий, идущий по внешней линии и останавливается в паре сантиметров! и тут .. вездеход заруливает к нашему роботу и пинает его в переднее колесо (потом на видео, было хорошо видно как с него полетел декоративный светящийся диск Лего) .. вот она - особенность: "процедура доворота" его папы .. в зале крики "зацеп!", пока судьи остановили заезд, роботы успели пройти перекутресток без проишествий (наш опять успел тормознуть и пропустить противника) и подъезжали к горке и балке .. по мне так не надо было останавливать такой шикарный заезд .. но, решает судья и заезд был остановлен.

По факту просмотра нашего видео (его папа был в лучшей позиции, но видео показывать не стал), было решено что неоднозначно и заезд ПЕРЕИГРЫВАЕТСЯ. Нам поменяли дорожки и .. тут случилось невероятное для такого зажигательного финала: тот Андрей впал в полную истерику и отказался продолжать заезд .. уговаривали все и я и его папа и судьи .. абсолютно невменяемая истерика, бросание стульями и т.д. Ребенок не слышит ничего вовсе .. какая жалость .. прошло минут 10 и внезапно нарисовалась руководитель соревнований. Поуговаривав истрящего ребенка пару минут, она объявила что "настройка робота должна быть ограничена 10секундами" (нашему, тот тоже был близок к истерике и ходил кругами), а гусеничный вездеход запустит .. тренер (папа, есть видео!) .. и победа будет присуждена только по этому заезду. Аргумент - "Вы же видите - это особенный ребенок!". Запуск .. наш робот едет в сторону игнорируя линию .. первое место присуждено второму Андрею, в зале среди зрителей куча возмущенных голосов..

.. по завершению соревнований .. нам предложено поехать в Москву .. мы - согласились. Так что, ждите в гости! :)

P.S. по этой причине, пока не буду выкладывать никаких фото- видео- материалов. Пока не буду.

lean_74
Offline
Зарегистрирован: 22.12.2015

читал на одном дыхании, классно. а судью на мыло!

alex_r61
alex_r61 аватар
Offline
Зарегистрирован: 20.06.2012

lean_74 пишет:

читал на одном дыхании, классно. а судью на мыло!

"Ия того же мнения!" Ещё бы видео.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Пасибки. Сегодня он таки доправил свою программу, заменив автонастройку датчиков предварительным замером и расчетом порогового уровня "белое/черное" .. дошло, что достаточно поправить уже имеющийся массив и тупо удалить вызов подпрограммы, которая его формировала. :)

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

Ещё сегодня внезапно случилась какая-то мистика .. отказал второй уз.датчик HCSR-04 .. излучатель вроде как "трещит" (слышно), но сигнала echo от него нет вовсе никакого. Внимательный осмотр датчика показал что у средней микросхемы контакты 5,6 залиты "блямбой" из припоя (на втором, тоже сломанном - ничего похожего нет, взяты в одном месте за один раз) .. вроде бы ничего не паяли, а вчера он ещё работал .. да и паяльник как лежал в разъездной сумке так там и был .. фантастика. Снял припой - результат тотже. Едет ещё 3шт, уже "пересекло границу РФ".

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вот такое чудо собрано на пару с сыном из "говна и палок". Колеса - симбиоз его р/у джипа и бывшего р/у трактора, окраска дисков акрил "под медь". Амортизаторы тоже изъяты из р/у джипа. Передние колеса от какой-то древней пластмассовой машинки-покатушки. Забегая вперед, оказалось что собранные мною "мотор-редукторы" хоть и красивы с прозрачным пластиком, но на проверку оказались "никуда не годны". Увы, уже в переделке.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

а как обстоят дела с внешней sram?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Пока никак. Успел развести только саму мегу и расположить все 86 контактов "по группам" удобства для. Разводка памяти как-бы есть, но она была сделана как самостоятельный девайс, теперь надо её интегрировать на одну плату с мегой.. некогда. И так, после работы приезжаю и смотрю чего ребенок наделал и довожу до ума часов до 3-х ночи.. упластался уже.

Сегодня таки решили собрать энкодер и замерить вращения моторов что есть в наличии и уже по результатам пилить мотор-редуктор. Жалко, что этот прозрачный пластик толщиной 1мм оказался таким хрупким .. ребенку понравилось, что видны шестеренки и как они крутятся в моторе. Увы, не судьба. Первое же включение мотора и попытка остановить колесо - выломала этот пластик напрочь даже с небольшим усилием.

В крайнем случае, будем снимать лего-детальки с моторов, которые использовались на отборочных соревнованиях и придумывать как закрепить на нем колесо без применения лего осей.. в общем *опа полная пока что.

Ну и как итог, который уже писал: в силу обстоятельств это направление "Ардуино как Лего" мы для себя закрыли совсем. Получается ни 2 ни 1.5:

На Лего соревнования нас не берут, потому что у нас "ардуино"; На большую часть соревнований мы вообще не попадаем, поскольку мы "семейная команда" без лицензии образовательного учреждения; И даже оставшийся Робофест для нас практически закрыт, потому что "Ардуино - это не Лего" и наши поделки тут тоже "не в тему" внезапно. В общем, как уже писал тут где-то раньше, мой вывод однозначен: для привлечения ребенка к робототехнике - Ардуино это "не та тема" вовсе. Надо отдавать ребенка в "образовательное учреждение с лицензией" и на Лего. Все остальное - развод для лохов.

diger67
Offline
Зарегистрирован: 25.07.2015

По поводу памяти и mega2560, все  бы ни чего, да вот только нет в нем DMA. Работая с stm32 убедился что прировт при испоьзовании DMA довольно значительный, плюс передача больших массивов информации происхлдит в фоновом режиме. Тода уж надо смотреть в сторону stm8 или на крайний случай в сторону Xmega.

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

1. Идите Вы со своим STM куда подальше .. выпилю отсюда нафиг. :)

2. Да как-то не искал, не задумывался .. да и "как это организуешь" в домашних условиях?

diger67
Offline
Зарегистрирован: 25.07.2015

Прежде чем посылать и выпиливать может гляните вот на это.

https://youtu.be/U4Ci-gbDWQM

 Было бы желание, похоже что все эти соревнования вам просто ненужны........

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Посмотрел ваше видео .. Вы серъезно считаете что ребенку в возрасте 10 лет это будет точно интересно? :)

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

Выбрав это направление "Ардуино как Лего" мы хотели показать, что на базе Ардуино вполне можно делать построюшки и сборки доступные в этом возрасте. Особенность этого направления - устранение множества мелких, рутинных операций по изготовлению разного рода "крепежа", заменяя его на лего-конструктив. Кстати, делая в скоростном режиме эту тележку "из говна и палок", ребенок в полной мере ощутил все прелести нашего подхода:

-"да ... а ещё надо придумать КАК крепить передние колеса, а ещё это все надо будет вырезать, випилить, склеить и покрасить .. долго. А вот на Лего я бы уже всё собрал".

Ну и мнение преподавателей в тему: -"Почему Ардуино распространено плохо, а больше собирают на Лего? Так вот смотрите, надо опробовать работу с вот таким датчиком .. на Лего взял датчик, пару деталек, собрал пробную конструкцию и посмотрел подойдет или нет. Нашим хватило 30мин. чтобы решить вопрос. Рядом же сидели Ардуинщики и через 2.5 часа(!) они только начали собирать и программировать задачу. Потому что все надо изготовить для каждого случая ОТДЕЛЬНО. Вот нафиг кому это надо? Да и возраст. Нормально работать с паяльником, инструментом .. таже Техника Безопасности .. оно надо кому-то рисковать в таком возрасте? Постарше 14-17 лет, да нормально."

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

diger67
Offline
Зарегистрирован: 25.07.2015

Видео это для вас, как пример использования stm32 и внешней памяти при передачи иформации между устройствами с помощью DMA. Что бы вы не рубили шашкой с плеча. Заметьте это tft с разрешением 320 на 240 и все это будет работать так же на tft с большим разрешением.

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Мне, это и без видео понятно, что наличие ДМА завсегда лучше его отсутствия, кто бы спорил. Но .. тут приходится выбирать "одно из трех": или простота программирования Мег, в частности Мега2560 и её полнота функционала и легкость прошивки или Икс-меги с геммороем прошивки по "спец. интерфейсу". По крайней мере так понял читая даташит и видя как мало распространены эти иксы .. недостаток вижу только 1: изменение схемы программирования камня. Или переходить на АРМ, но тогда уж или тоже от Атмел или кого-то ещё, но уж никак не на чудесатые девайсы от СТМ, где в даташитах крупно (реклама) писано одно, а мелким шрифтом чуть иное .. разбираться в сортах говна - увольте. :)

P.S. Все дальнейшее обсуждение СТМ, если появится буду вытирать нещадно из этой темы.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

"Адская Колесница" версия из говна и палок:

Наконец-то собрали нашу тележку. Запускать начнем уже завтра, сегодня - поздно. :)

Итого, вес тележки 430гр. Размеры 195мм х 156мм. Высота Ц.Т. - 45мм.