roboforum.ru

Технический форум по робототехнике.

Робот-газонокосилка (РобоКос)

Re: РобоКос (робот - газонокосилка)

=DeaD= » 17 фев 2010, 16:40

А можно собрать соседним МК инфу - какие 0 и 1 при восходящих и нисходящих сигналах тактировки? Подтяжка к "+" этих линий идёт когда данные не передаются?

Re: РобоКос (робот - газонокосилка)

Michael_K » 17 фев 2010, 17:26

Ну и в общем,
четыре явных "пачки" в данных наводят на мысль, что
каждая пачка соответствует одному из четырех датчиков.
Вы бы попробовали подключить один датчик и помахать ему
перед мордой чем-нибудь - снять пяток осциллограмм.

Добавлено спустя 10 минут 42 секунды:
Подтяжка к "+" этих линий идёт когда данные не передаются?

Судя по картинке, нет :)

Добавлено спустя 3 минуты 48 секунд:
Ну и в конце-то концов, вам протокол разобрать надо или название к нему придумать? :)

Добавлено спустя 7 минут 10 секунд:
Короче, сначала нужно понять, кто генерит клоки.
Потом поставить один датчик, махать перед ним тапком,
снимать данные и смотреть на штатное табло...
Выкладывайте картинки - вряд ли там что-то сложное :)

Добавлено спустя 53 секунды:
Частоты, кстати, какие?

Добавлено спустя 18 минут 41 секунду:
yak-40, а можно вас попросить немножко поэкспериментировать?
Хочется понять, в каких углах он чувствует, и какой минимальный объект...

Re: РобоКос (робот - газонокосилка)

ALHIMIK » 17 фев 2010, 18:18

эта посылка похожа на УСАРТ
одна линия клок вторая TX\RX :oops:

Re: РобоКос (робот - газонокосилка)

yak-40 » 17 фев 2010, 19:01

Вообщем почти разобрался. :Yahoo!:
Из 16 импульсов 8 импульсов (1 байт)относятся к одной паре датчиков, 8 к другой. Причём информация с пары датчиков (левых или правых) идёт не от каждого отдельно, а от того у кого показания меньше. То-есть фактически присутствуют два канала, к каждому из которых подключены по два датчика (я надеялся на четыре канала :( )
Информация передаётся простым двоичным кодом, причём 1 единица кода равна 1 см дистанции. Вроде бы отлично,
но и тут всё не так хорошо как хотелось бы. Дело в том, что показания начинаются с 36 см.
(поэтому на осцилограмме создалась иллюзия четырех датчиков) 36+36 = 0010010000100100
Выяснил это подключив тактирующую линию к внешнему прерыванию, а информационную на один из портов ввода. Информацию выводил на ЖК-индикатор с помощью небольшой программы.
Максимальная дистанция 200 см. Датчики работают вполне уверенно, не мешая друг другу (похоже во времени разнесены). Продолжаю экспериментировать...

Добавлено спустя 4 минуты 35 секунд:
Michael_K писал(а):yak-40, а можно вас попросить немножко поэкспериментировать?
Хочется понять, в каких углах он чувствует, и какой минимальный объект...

Самому интересно :) Но это немного позже, вот разберусь с электроникой, поставлю датчики на косилку, тогда
обязательно всё исследую и результаты выложу.

Re: РобоКос (робот - газонокосилка)

Michael_K » 17 фев 2010, 20:14

Эдак вы его научите высокую траву как стенку чувствовать :)
Получится ленивый косильщик - по-легкому косой помахал,
а в бурьян-камыши лезть наотрез отказывается :))

Re: РобоКос (робот - газонокосилка)

yak-40 » 17 фев 2010, 23:13

Michael_K писал(а):а в бурьян-камыши лезть наотрез отказывается )

Ну на газоне недолжно быть бурьяна/камышей. Да к тому-же это газонокосилка, а не бурьянокосилка :D
А впрочем да, как датчики расположить это вопрос. Думаю направить их вверх под небольшим углом.

Добавлено спустя 3 минуты 17 секунд:
Кстати, причесал тестовую программку, привёл отображение в понятный вид. Теперь можно и с датчиками поэкспериментировать. Заодно определить как их расположить.
pt1.jpg

Re: РобоКос (робот - газонокосилка)

Michael_K » 17 фев 2010, 23:51

красота :good:

Re: РобоКос (робот - газонокосилка)

=DeaD= » 18 фев 2010, 10:09

Да фиг с ним - 2 сонара на 36-200см в корпусе для внешнего применения всего за 800 рублей это же просто супер!
А информация снималась на растущем фронте или падающем? Какие паузы между передачей информации, не замерял?

Re: РобоКос (робот - газонокосилка)

yak-40 » 18 фев 2010, 12:51

=DeaD= писал(а):А информация снималась на растущем фронте или падающем? Какие паузы между передачей информации, не замерял?

Да, прерывание настроил на нарастающий фронт, затем пауза в несколько тактов, ну что-бы устаканилось, потом чтение лапки МК. Паузы между пачками не измерял, но где-то несколько раз в секунду.

Re: РобоКос (робот - газонокосилка)

boez » 18 фев 2010, 19:33

Ну вообще это явно просто SPI по двум проводам (такой например как в PS/2) - его можно смело подключать к SPI контроллера и ловить данные байтами. Разобраться только - кто генерит клок. Если головной контроллер, то SPI мастером, ноги MISO и SCK, слать 2 байта пустышек и смотреть что приходит. Если блок приемника дает такт (или если хочется просто поисследовать пассивно его, подключившись параллельно) - то SPI в режим slave, сигналы на ноги MOSI и SCK, ногу чипселекта подтянуть куда надо. Затем поиграться полярностью и фазой клока, пока не будут приниматься нормально данные.

Re: РобоКос (робот - газонокосилка)

yak-40 » 18 фев 2010, 20:09

Ну, дык, я вроде разобрался. :)
Кода получилось шесть строчек в одном прерывании. Какой смысл со СПИ заморачиваться?
Код: Выделить всёРазвернуть
volatile char uz_count;                  // счётчик импульсов с УЗ датчиков
volatile unsigned int uz_data;           // Данные с УЗ датчиков
interrupt [EXT_INT2] void ext_int2_isr(void)
{
  unsigned char i;
  for (i=0; i<5; i++) #asm("nop");  // Пауза что-бы мусор пропустить
  if(PINB.3)uz_data +=1;            // записать бит   
  uz_data*=2;                       // сдвинуть на бит
  uz_count++;                       // посчитать импульсы
  if(uz_count>15)uz_count=0;        // обнулить счётчик
}

Фсё! :D
Последний раз редактировалось yak-40 19 фев 2010, 10:01, всего редактировалось 1 раз.

Re: РобоКос (робот - газонокосилка)

=DeaD= » 18 фев 2010, 20:12

А как первый импульс от второго отличить? вдруг сбой?

Re: РобоКос (робот - газонокосилка)

yak-40 » 18 фев 2010, 20:55

Ну там между пачками очень большая пауза, и я таймером "uz_count" сбрасываю.

Re: РобоКос (робот - газонокосилка)

ALHIMIK » 18 фев 2010, 21:00

а почему бы не применить УСПП ?
на RX контроллера выход данных
на XCK тактирующий сигнал
получим аппаратный приём байтиков
и меньше в прирывании сидим....

Re: РобоКос (робот - газонокосилка)

=DeaD= » 18 фев 2010, 21:04

yak-40 писал(а):Ну там между пачками очень большая пауза, и я таймером "uz_count" сбрасываю.

Где? Вроде таймер "uz_count" просто в цикле гоняется?


Rambler\'s Top100 Mail.ru counter