Схема и описание под катом.
Изначально робот мочалка задумывался, как «чувак» который змейкой обходит всю комнату подметая пыль, избавляя от необходимости регулярного подметания. Но после изготовления выяснилось: 1) более менее идеальной змейкой мочалка ездит только по линолеуму. А вот по паркету в моей комнате траектория весьма отдаленно напоминает змейку в силу наличия паркетных стыков. 2) робот не способен таскать за собой элементы питания. Для устранения выявленных недостатков требуется полная переделка «девайса».
Несмотря на выявленные недостатки, я привожу описание конструкции, схему, и софт. Надеюсь этот пост вдохновит кого либо на создание безумных устройств, например каких нибудь РоботовКоторыеЕдятЛюдей. Новая версия устройства удовлетворяющая всем требованиям будет опубликована в этом блоге позднее.
В качестве движителя я использовал саму мочалку, предварительно поместив ее на несколько суток под перевернутую табуретку. После того как табуретка положена на мочалку, ее (табуретку) необходимо сдвинуть в сторону противоположную направлению движения робота. В результате нахождения под табуреткой мочалка изогнется и ее сопротивление при движении в одну сторону станет больше чем при движение в противоположную. Данный принцип применяется при строительстве виброходов (см. схему). Используйте упругую мочалку из синтетики!!! Паралоновые губки не подходят!!! Мне пришлось испробовать две мочалки прежде чем робот поехал!!!
На четырех саморезах к мочалке крепится платформа (крышка от CD-диска), с двумя моторчиками и датчиком столкновений. На валах двигателей находятся эксцентрики (двухрублевые монеты). При работе двух моторов мочалка едет вперед. При работе одного поворачивает. Нашей задачей является отключать при столкновении на какое то время один из моторов. При первом столкновении мы будем отключать левый мотор, а при втором правый и так далее. В этом случае у нас должна получиться змейка (см. схему).
Датчик столкновения изготовлен из половины теннисного шарика приклеенного к стержню от шариковой ручки. Стержень шариковой ручки вставляется с натягом в стержень от гелиевой ручки. Который в свою очередь свободно перемещается в половине корпуса от шариковой ручке упираясь свободным концом в микропереключатель. Таким образом перемещая стержни относительно друг-друга мы можем регулировать расстояние на котором происходит срабатывание датчика.
Для управления двигателем используется драйвер L293D включенный по типовой схеме, датчик столкновения подключен к PORT-D pin-0.
Программа получилась наипростейшая:
/* * —————————————————————————- * Этот продукт является LOVE-WARE (Revision 1): * Если он оказался вам полезным вы должны подарить свою любовь 10 или большему * колличеству людей. Некоторые идеи как это сделать: * * 1) Принять участие в любой благотворительной программе; * 2) Помочь в правом деле друзьям/знакомым/незнакомцам; * 3) Создать собственную империю добра выпустив LOVE-WARE продукт; * 4) Сделать мир лучше, в вашем собственном понимании; * 5) Искренне простить человека; * * * Подробности на LoveWare.sosnyakov.ru. Поделись своей идеей!!!!!!!! * * —————————————————————————- */#include <inttypes.h> #include <avr/io.h> #include <stdio.h>#define L_TIME 5000/* время полного разварота через левое плечо*/ #define R_TIME 5000 /* время полного разварота через правое плечо*/void /* inline */ wait_sensor_signal() { loop_until_bit_is_clear(PIND, 0); /* сенсор на порту D pin0*/ }void delay_ms(unsigned short ms) /* delay for a minimum of <ms> (8 Mhz crystal) */ { unsigned short outer1, outer2; short a; for(a = 0; a <= 2; ++a) {outer1 = 200;while (outer1) { outer2 = 1000; while (outer2) { while ( ms ) ms—; outer2—; } outer1—; } } }void forward() { /* включаем левый мотор*/ sbi(PORTB, 0); /* in2 */ sbi(PORTB, 1); /* enable1 */ /* включаем правый мотор*/ void left() /* выключаем правый мотор*/ void right() /* включаем правый мотор*/ } int wait_sensor_signal(); forward(); wait_sensor_signal(); return(0); |
При запуске робота плата с МК и батарейный отсек находится в руках, с роботом нас связывают три пары проводов (два двигателя + датчик столкновения). К сожалению робот не в состоянии передвигаться нагруженный такой тяжестью;)))
и что он сейчас делает?
в углу пылится?
:-))))
типа того))
эх, как бы в нашем офисе уборщицу не уволили
ану как программисты сделают ЭТО!
Мне нравяться ваши посты