NightOwlMax & ProtoMach
Привет, ПротоМах. Слушай, я тут подумал, может, нам стоит разработать крошечный автономный модуль, который сам сможет решить лабиринт, причём с минимальным энергопотреблением и конструктивной сложностью. Как думаешь, как нам совместить механическую точность и код, который понадобится для его работы?
Используй простую дифференциальную передачу с двумя маленькими DC-моторами. Сделай лёгкий шасси в форме буквы "L" и постарайся удержать вес до 50 граммов. Для датчиков лабиринта достаточно одного отражающего ИК-датчика на вращающейся микро-манипуляторе – чтобы просто обнаруживать стены. Манипулятор может вращаться с шаговым двигателем, управляемым микроконтроллером с режимом глубокого сна. Код – не больше 200 байт: конечный автомат, считывающий датчик, принимающий решения "влево/вправо", и отступающий назад, если застрял. Если нужна большая тяга, можно использовать трёхфазный бесщёточный мотор, но взвесь выигрыш в скорости против увеличения энергопотребления. Провода – короткие, один стабилизатор напряжения, питание от Li-Po на 150 мАч. Это даст примерно 30 минут работы на максимальной скорости и позволит быстро вносить изменения, если дальность действия датчика неправильная. Помни, каждый дополнительный компонент – это ещё одна потенциальная точка отказа. Чем проще, тем лучше.
Звучит неплохо, но инфракрасный привод добавит шума от крутящего момента, а размер шага шагового двигателя может оказаться слишком грубым для сложного лабиринта. Может, лучше перейти на микросервопривод с углом поворота 180° и добавить маленький потенциометр для обратной связи? Так можно будет снизить энергопотребление и уложиться в 200 байт кода. И еще подумай о небольшом магнитометре для корректировки направления – он займет всего несколько байт и повысит устойчивость, если застрянешь. Старайся сделать корпус максимально тонким, может, используй углепластиковую полосу. И обязательно тестируй с несколькими случайными лабиринтами, прежде чем делать окончательный вариант. Удачи, ночь ещё молода.
Серво лучше подходит для точных движений, но потребляет больше тока на микрошагах; делай манипулятор покороче, чтобы крутящий момент оставался низким. Потенциометр добавляет вес, но полезен для обнуления – просто ограничь диапазон до 10 кОм и используй аналоговый пин для этого. Магнитометр отлично подходит для определения ориентации, но дополнительный пин АЦП и драйвер могут перегрузить лимит в 200 байт; можно убрать рутину калибровки и просто считывать сырые значения X, Y, Z. Карбоновая лента экономит вес, но делает корпус хрупким – добавь небольшой резиновый амортизатор на колёса для лучшего сцепления. Сначала тестируй на 3-4 схемах лабиринта, фиксируй причины неудач, потом подкручивай скорость сервы или порог чувствительности датчиков. Сохраняй прошивку компактной; каждый сэкономленный байт позволит устройству работать дольше. Удачи.
Отлично подправил ты с сервоприводом – короткая рычажная передача действительно помогает контролировать крутящий момент. Оставлю потенциометр в диапазоне 10 килоом и буду считывать его напрямую через аналоговый пин, массив для калибровки не нужен. Отказ от калибровки магнитометра – здравая идея; для приблизительного определения направления хватит сырых значений X, Y, Z, да и байт ценный. Резиновые прокладки на колёсах – отличный ход, я сам видел, как углеродные полоски трескались на крутых поворотах. Прогоню три тестовых маршрута и буду записывать каждую задержку, потом покручу размер шага сервопривода и пороговое значение ИК-датчика. Спасибо за советы, ночь ещё впереди, можно поковыряться с точной настройкой.
Звучит неплохо, делай ход короткий, лишь бы избежать этого скрежета. Записывай точки провала и следи за отклонением порога ИК; даже крошечное изменение в 0.5 вольт может всё перевернуть. Если серво продолжает дергаться, переходи на микрошаговый двигатель с меньшим разрешением; это сэкономит энергию и сохранит код чистым. Удачи, и держи кружку с кофе под рукой, когда код наконец-то скомпилируется.
Понял, буду делать минимальный захват и слежу за этим сдвигом в 0,5 вольта по ИК-сигналу. Записываю каждую точку зацикливания и подкручиваю порог по необходимости. Переход на микрошаговый двигатель, если серво будет дергаться – хорошая идея, еще и энергопотребление снизит. Без кофе никак — спасибо, что напомнил. Посмотрим, покорится ли мне наконец этот лабиринт.
Следи за логами, чтобы были в пределах нормы, дай юниту самому найти свой путь. Никаких изысков не нужно – просто чистая платформа, понятный код и стабильное питание. Заглохнет – проверяй датчик или крутящий момент мотора, итерации. Ты справишься.