Страница 1 из 5

BEAM робот

Добавлено: Ср янв 11, 2006 21:07:22
WildCat
Доброго времени суток! Я ищу схему простого робота на микроконтроллере (BEAM робот - кно знает, тот поможет) Чтобы по квартире катался, врезался в собак :evil: и объезжал стороной кошек :P (шучу). И чтобы лампочками :idea: моргал.

Добавлено: Ср янв 11, 2006 21:47:48
Serega
У нас концепция такая: нету схемы - разработай сам. 8)
Давай подумаем, че и как. Какая предполагается механика, какие датчики, движки и т.д.?

Добавлено: Чт янв 12, 2006 20:28:26
WildCat
предполагается два движка (левый и правый), датчики врезания (2 кнопки на борту), датчики света (для поиска зарядки - надо какую-то фильтрацию сделать, может инфракрасный модулированный сигнал? а то будет на каждую ламчоку кидаться), а для декоративности всякие светодиоды, пищалку. Кстати, а как можно заставить робота воспроизводить звуки? Вариант с магнитофоном отпадает :))) а про ISD микрушки я знаю. Но они не катят, имхо там нет выбора нужного фрагмента, а они идут по порядку. Прошивку уж как-нить додумаю (кошаку местному идея понравилась, а он на СИ хорошо кодит)

Добавлено: Чт янв 12, 2006 20:30:35
WildCat
про звук - я имел в виду то, что он должен кататься и бурчать себе под нос :evil: , а когда врезается в стены - материться :shock:

Добавлено: Чт янв 12, 2006 20:40:14
Serega
Мля, чувак, клевая идея!!! :)))
Короч, не, все проще.
Во-первых, ИСДшки могут играть произвольный кусок, если ими управлять с контроллера. НО! Исдки могут воспроизводить звук, только собою же и записанный. Извне загрузить в нее нельзя. Это, по-моему, не есть хорошо. Поэтому, предлагаю использовать просто внешнюю флешку. Какую-нить AT45DBxxx. Она подключается к контроллеру, контроллер - к компу. Из компа загружается.
Звук можно выводить либо через ЦАП (самое простое - подключить на несколько выводов контроллера резистивную матрицу) или проще - выводить в виде ШИМ-сигнала.

Добавлено: Пт янв 13, 2006 21:46:13
WildCat
С флешкой идея не катит, т.к. громоздить еще и ЦАП. А заливку на ИСДшку я имел в виду с аналогого входа. Т.е. один раз записал и оставил. С помощью микрофона перезаписал (сам же и сматюгнулся :))

Добавлено: Пт янв 13, 2006 23:19:27
Serega
Ну короче, читаем тогда даташиту по ИСДешке и врубаемся как подружить ее с контроллером :)

Добавлено: Сб янв 14, 2006 09:35:05
moLCHec
посмотри журналы "Радио" №2 и№12 за 2002 год в каком-то из нах на котроллере сомоходный матершинник. запись речи как раз на той микрухе, контроллер вроде AT90S2313 давно смотрел не помню уж. Но это то что тебе нужно. и про запись речи там по русски и неплохо написано.

Добавлено: Сб янв 14, 2006 20:39:43
WildCat
У меня с "Радио" проблема - я беру в библиотеке журналы. А там для меня уже специально :) откладывают свежие номера. Я их самый первый читаю. Но вот за 2002 год - не найду. Хочу на барахолке диск купить с журналами за 10 лет, но никак собраться и поехать не могу.
А так ни у кого нету даташитов?

Добавлено: Сб янв 14, 2006 20:51:39
WildCat
Я тут ссылку нашел, посмотрите:
http://www.rtcs.ru/news_detail.asp?id=87
Может, поможете разобраться? А то, если честно я ни фига не понимаю про управление от контроллера.

Добавлено: Сб янв 14, 2006 21:48:02
Serega
Ну то что ты дал - это, грубо говоря, перевод даташита.
Смысел в том, что ИСДшка подключается к контроллеру по интерфейсу SPI (Serial Peripheral Interface) - последовательный интерфейс (трехпроводной).
Провода:
MISO - master input, slave output - вход ведущего, выход ведомого
MOSI - master output, slave input - выход ведущего, вход ведомого
SCK - serial clock - тактирующий сигнал

Master - это, в данном случае, контроллер,
Slave - ИСДшка

В контроллерах с аппаратным SPI (все серии АВРок) общение по этому интерфейсу происходит просто и непринужденно: загружаем в регистр контроллера то, чего хотим передать, запускаем передачу - оно передается на подключенное устройство. Одновременно, в этот же регистр задвигается информация с устройства (если оно что-то нам хочет сказать). Ее можно читать, можно не читать - по обстоятельствам.

Далее: смотрим список кодов команд управления ИСДшкой, загружаем в регистр код команды, отправляем на ИСДшку - она ее тут же выполняет :)
Вот и вся премудрость

Добавлено: Вс янв 15, 2006 22:39:48
WildCat
Это я опять.
Вот насчет программатора: можно ведь программировать контроллер в отдельном разъеме, а можно прямо в плате. Так там есть ведь подводные камни перепрошивки? Например, на входных/выходных цепях что-то замыкает сигнал на землю и т.п. И для прошивки на плате нужен любой 5-штырьковый разъем. А как стандарт, нужен IDC6. Никто не знает его распиновки для программатора 5 проводков?

Добавлено: Вс янв 15, 2006 22:48:51
Serega
Человек. Вообще-то кроме форума на нашем сайте есть еще много всего полезного и интересного. В том числе - раздел "обучалка". Там очень подробно написано, как программить контролеры и чем

Добавлено: Пн янв 16, 2006 19:02:28
WildCat
Пасиба! Но про разъем сказано, что он используется только во время прошивки. А распиновки там, нет, только нумерация выводов. Я искал названия всех тычков :) И чем отличиется AT90S2313 от AT90S3213-10PI? В разных схемах по разному, но разводка вроде бы одна и таже, прошивки тоже... Ну, непонятно, в общем :cry:

Добавлено: Вт янв 17, 2006 00:29:34
Serega
Последние цифры и буквы указывают на тип корпуса и максимальную частоту.
10PI - тип корпуса DIP, частота - 10 МГц
еще бывают 10SI - корпус SOIC,
и т.д.

Добавлено: Вт янв 17, 2006 20:06:46
WildCat
Теперь понял. И все-таки, уж надоел, но что такое "подтягивающие" резисторы, которые подключают программно?

Добавлено: Вт янв 17, 2006 22:13:12
Serega
Кого подключают программно? Куда подключают???
"Подтягивающими", обычно называются резисторы, включенные между сигнальным проводом и шиной питания: "плюсом" или "минусом". В цифровой технике нужны для того, чтобы назначить логический уровень при отсутствии сигнала.

Добавлено: Вт янв 17, 2006 22:22:44
WildCat
Про резисторы понял, а вот кусок исходного кода одной из прошивок:

Код: Выделить всё

DDRB  = 0xff;  // назначаем все линии порта B на выход
  PORTB = 0x00;  // и устанавливаем на них низкий уровень

  DDRD  = 0x00;  // назначаем все линии порта D на вход
  PORTD = 0xff;  // подключаем внутренние "подтягивающие" резисторы


То есть программно устанавливаются необходимые уровни вместо настоящих резисторов?

Добавлено: Вт янв 17, 2006 22:31:15
Serega
ГЫ :)
Не, тут имеется в виду логический "ноль". Его еще зовут "низкий уровень". Соответственно, единицу зовут "высокий уровень". Мы прописываем в PortB число 0x00 - то есть, назначаем всем каналам порта значение "0"

Добавлено: Ср янв 18, 2006 21:48:58
WildCat
Значит, это просто задается значение? А резюки тут ни при чем. Ну ладно. А ты не знаешь, как генерить звук на лапке контроллера? Чтобы пищалку подрубил, а он сигналил (с целью диагностики ошибок)? Если просто изменять состояние лапки, делать задержку для получения нужного тона и циклить программу , то она будет виснуть. Есть тут выход?