Купил тут несколько старых роботов-пылесосов Tefal Series 20 задешево. Чисто глянуть, что там внутри. Давненько ничего не разбирал. И поучиться у профессионалов.
Собственно говоря мои машинки - это близкие родственники робота-пылесоса. Так-что есть шанс применить знания на практике.
Прежде всего поразило, насколько легко в разных направлениях вращается заднее колёсико.
Причина - очень хороший подшипник, правда он запрессован в корпусе, так что воспользоваться этим узлом будет не так просто. Надо будет подумать над их использованием. Всё-таки узлы трения-скольжения сильно хуже, чем подшипники. Кстати на этом колесе так-же стоит оптопара для определения - вращается ли колесо.
Дальше - колёсико.
Тут можно вспомнить о том, что человек сам по себе "слаб и глуп". И только общество делает нас более-менее умными. Я всегда думал, что для определения положения колеса нужен rotary encoder. Т.е. два фотоприёмника со сдвигом входного сигнала на 90 градусов. Тут разработчики воспользовались одним фотоприёмником. А направление движения колеса видимо определяют по поданному на колесо напряжению. Надо будет поиграться с этим узлом. Если сопротивление фотоприёмника изменяется достаточно плавно, то попробую воспользоваться аналоговым сигналом и стопорить колесо в определённом положении. Сам редуктор на колесе убогонький. Суммарный люфт (вперёд/назад) на колесе - 2 мм. При расстянии между колёсами в 25 см это получается ошибка в 1-2 градуса при развороте на 180 градусов. Надо будет подумать - можно ли это учесть программно. Я что-то ожидал меньшего люфта.
Внутрях большое количество пар светодиод-фотодиод для определения расстояния до пола, до стен. Даже нажатие передней панели определяется фотодиодами.
Вот кстати передняя панель.
Фотодиод черный слева (и справа). И куча светодиодов по всей панели. Вот зачем там столько светодиодов и как они ими пользуются для определения расстояния - для меня загадка.
Сама плата довольно большая - 9x17 см.
Пайка бессвинцовая, но микроконтроллёр запаян отдельно. Я кстати так-же поступаю. Сначала все SMD запаиваю, а микроконтроллёр в конце паяю.
Ради интереса попробовал выпаять хоть что-то. Если использовать нижний подогрев, то мелкие детальки вполне можно снять. Обратно правда прилипают плохо без флюса. Бессвинцовая пайка - та ещё гадость. Получится ли отпаять микроконтроллер - не знаю.
Микроконтроллёр кстати STM32F091VBT6 - т.е. вполне современный. Для управления периферией само-то. Может даже воспользуюсь ими. А то крутить моторы используя STM32F407 - это некоторый overkill. Надо кстати глянуть - получится ли сделать универсальную плату, на которую можно и то и другое запаять.
Драйвер мотора DRV8870 - тоже кстати надо на вооружение взять. Я раньше использовал драйвера без стабилизации по току. Приходилось снимать массив данных, как мотор ведёт себя при разном напряжении питания и разной нагрузке. Может стабилизация по току упростит этот процесс.