Создание ходячего робота

в 14:11, , рубрики: поликапролактон, Программинг микроконтроллеров, программирование микроконтроллеров, робототехника, метки: , , ,

После активной учёбы в универе: лаб, курсовых, экзаменов — летом испытываю ломку чего-нибудь поделать такого интересного, мозги размять, себя порадовать.
Вот и в этот раз не обошлось — решил сделать какого-нибудь прикольного робота. Всякие машинки мне уже надоели, до мультироторных систем я еще не дорос. Решил сделать гуманоида:) Гуманоида не получилось…
Но, конечно, зажегся идеей, вспомнил детские просмотры «Терминатора» и «Звездных воин» и начал работу.

И вот что получилось:

image

В посте опишу процесс создания этой штуковины по прозвищу Тимми(иногда называю его Хромой Вася — в конце в видео будет понятно почему)

Буду вести описание в том виде, в каком это все придумывалось. Сразу оговорюсь, ни к каким дополнительным источникам и примерам я не прибегал, все сделал и придумал сам, так сказать… зачем изобретать колесо? а чтобы научиться его изобретать!

Итак, в качестве «мышц» я решил использовать сервомашинки, и заказал 8 микросерв TowerPro, еще у меня оставались 2 микросервы Fliec, но они мне понравились меньше, так как сильно греются (на картинке на голове радиатор как раз на такой серве).

А пока шли сервы, решил сделать «мозги». Оставался один микроконтроллер Atmega168 и, как мне показалось, его вполне хватит.

Быстро нарисовал дорожки для ЛУТ:

image

Сорри, не спец в оформлении. Плату сделал ЛУТом, залудил сплавом Розе, просверлил дырочки, все спаял и вот что получилось:

image

(за качество фото даже прощения просить не буду, все равно не простите, а вот пооправдываться могу — дома темно и фоткать не умею совсем)

Яркий светодиод — извещение о работоспособности, синий можно подключать к любому пину и повесить на него задачу индикации чего-либо. Пищалка так же может подключаться к любому пину.
Для питания используется простой LM7805, импульсных преобразователей под рукой не нашел. Тут на него прикручен небольшой радиатор, так как токи текут достаточно серьезные от нескольких серв и греется он неплохо.

Итак, сервы пришли, «мозги» готовы (правда, в голове опилки)… настала пора задуматься о том, как и из чего делать скелет… тут на помощь пришел материал под названием Поликапролактон. Это медицинский пластик, биологически разлагающийся, безвредный, с температурой плавления около 60 градусов. Расплавил — и лепи руками:) Единственный минус — изделие не должно подвергаться нагреванию до 50-60 градусов, и я сначала опасался, что сервы сыграют со мной злую шутку. Но оказалось, что опасаются они, так как они грелись лишь спустя 10 минут активной работы и то градусов до 40.

В голове нарисовал себе примерную схему скелета и решил решать проблемы по мере их поступления.
Расплавив в микроволновке погруженный в воду полиморф, раздавил из него лист между двумя отрезками стеклами. Затем разрезал на части, сгибал и спаивал детали паяльным феном. Таким образом все и получилось. Легко и просто. Лишние обрезки можно вновь и вновь переплавять — безотходное производство.

image

Затем закрепил плату и дальномер с микрофоном также на сервомоторе.

image

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

act:   .db 0x3c,0x2a,0x3c, 0x2e,0x42,0x30, 0x36,0x36 ;1 
	   .db 0x3e,0x24,0x42, 0x20,0x40,0x39, 0x36,0x36 ;2
          
	   .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;заглушка

где одна строка задает углы для каждой из 8 сервомоторов, 0x16 — 0 градусов, 0x56 — 180 градусов. Строки меняются по прерыванию 16 разрядного таймера. Если нужно контролировать скорость движения — нужно уменьшить коэффициент предделителя и увеличивать количество строк матрицы. У меня же пока стоит квантование по полсекунды и он дергается как сумасшедший каждые полсекунды.

Вот пример работы этих двух строк с квантованием в полсекунды. Всего две строки и Вася уже хромает!

Автор: allswell

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js