roboforum.ru

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

ИК-локатор

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

ИК-локатор

Сообщение Airat » 21 ноя 2005, 14:48

День добрый!

Начал разбираться с ИК-локатором http://parts.roboclub.ru/index.shtml?ik, но несколько не понимаю...
В приведенной статье ИК-излучатель включается на 4 такта, выключается на 5 - и так десять раз, потом задержка 20 тактов. Частота МК - 1 MHz.
Локатор работает следующим образом: контроллер включает ИК-излучатель LED1 несколько раз с частотой около 36кГц...

Как получаются эти 36 кГц? У меня получается, что
1 МГц / (4+5) = 111 кГц.
Объясните, пожалуйста, никак не соображу...

Александр, а как Вы собираетесь с помощью ИК-локатора измерять расстояние? Регулируя мощность излучения?..
Airat
 
Сообщения: 20
Зарегистрирован: 16 ноя 2005, 16:49
Откуда: Москва

Сообщение -= Александр =- » 21 ноя 2005, 15:23

Как там - не вникал, щас подумать некогда.
Я делал так: таймер на 72 кГц и счетчик, считающий импульсы. Пачку насчитал - считает паузу. А приемник висит на прерывании.

С дальностью - пока не ясно, пробую всякие варианты.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение Airat » 21 ноя 2005, 16:05

-= Александр =- писал(а):Как там - не вникал, щас подумать некогда.
Я делал так: таймер на 72 кГц и счетчик, считающий импульсы. Пачку насчитал - считает паузу. А приемник висит на прерывании.

С дальностью - пока не ясно, пробую всякие варианты.


Правильно понимаю, что таймер срабатывает с частотой 72кГц, при нечетных срабатываниях включаем излучение, при четных - выключаем?

Да, хотелось бы, конечно, иметь какую-то возможность измерять расстояние, но хоть я совсем чайник, мне кажется, что с помощью ИК-локатора этого добиться если и можно, то варьируя мощностью излучения...
Звуковой локатор никто не делал? Мне попалась пока только такая вещь:
http://www.ottawarobotics.org/articles/ultrasonic/ultrasonic.html
Без ультразвука можно обойтись, скажем, парой микрофонов и одной пищалкой?...
Airat
 
Сообщения: 20
Зарегистрирован: 16 ноя 2005, 16:49
Откуда: Москва

Сообщение -= Александр =- » 21 ноя 2005, 16:14

Не, сонар не делал, да и не буду, слишком у него направленность плохая при такой сложности... С обычным звуком не знаю, наверно будет работать так-же, но пищание действует на нервы, да и ложных срабатываний много будет. Потом волны разной длины по-разному отражаются, скорее всего работать будет хуже...
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение MiD » 23 ноя 2005, 13:01

а у меня что-то этот ИК-датчик на TSOP1736 реагирует на любой свет, кроме ИК... Правда пока еще всерьез не брался за него - нет осцилографа
Аватара пользователя
MiD
 
Сообщения: 76
Зарегистрирован: 21 сен 2005, 13:04
Откуда: Питер

Сообщение -= Александр =- » 23 ноя 2005, 16:12

Все TSOPы дают инвертированный сигнал. Ноль если что-то принято и один если ничего.
И еще к ним обвязка нужна чтоб помехи не проходили, они очень к питанию критичны...
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение MiD » 23 ноя 2005, 17:49

ну вот он у меня все и принимает кроме ИК  :D
Аватара пользователя
MiD
 
Сообщения: 76
Зарегистрирован: 21 сен 2005, 13:04
Откуда: Питер

Сообщение -= Александр =- » 23 ноя 2005, 21:57

Значит левый он какой-то или питание плохо фильтруется...
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

ИК-бампер

Сообщение Vovan » 30 ноя 2005, 23:35

Прошу помощи или объяснения по конкретному вопросу:
http://parts.roboclub.ru/index.shtml?ik в этой ссылке приведена программа:
;********************************************************************
;* ИК-локатор: ИК-светодиод на PB4 дает пачки импульсов с частотой
;* около 36кГц, а TSOP1736 на PB3 их отслеживает
;*  
;* MCU: ATtiny12@1MHz (c) RoboClub 2003  
;********************************************************************


.include "tn12def.inc"

rjmp RESET ;reset handle


;* Объявление переменных

.def  t1      = r1 ;счетчик для "длинных" задержек
.def  temp    = r19 ;счетчик времени задержки
.def  count   = r20 ;счетчик числа импульсов в пачке

;* Определения

.equ  led    = 0 ;LED на PB0
.equ  tsop   = 3 ;TSOP на PB3
.equ  ir_led = 4 ;IR LED на PB4

;* Начало кода

RESET:
sbi   DDRB, led ;подключаем LED на выход PORTB линия 5
sbi   DDRB, ir_led ;подключаем IR LED на выход PORTB линия 3
   
cbi   DDRB, tsop ;подключаем TSOP на вход PORTB линия 2
sbi   PORTB,tsop ;включаем "подтяжку"

;* Задание значений

.equ  TIME1   =  4 ;длительность импульса
.equ  TIME2   =  5 ;задержка между импульсами
.equ  TIME3   =  20 ;задержка между пачками импульсов
.equ  COUNT   =  10 ;число импульсов в пачке


; Главный цикл программы
; ----------------------
start:
ldi   count, COUNT ;загружаем в счетчик число импульсов в пачке

; цикл выдачи пачки импульсов
flash:
cbi   PORTB, ir_led ;зажигаем IR LED

ldi   temp, TIME1 ;загружаем в temp длительность импульса          
Delay1: dec   temp ;уменьшаем на единицу temp, пока
brne   Delay1     ;  не станет равным 0

sbi   PORTB, ir_led ;гасим IR LED
       
ldi   temp, TIME2 ;загружаем в temp длительность паузы между импульсами
Delay2: dec   temp ;уменьшаем на единицу temp, пока
brne   Delay2 ;  не станет равным 0


dec   count ;уменьшаем на 1 счетчик числа импульсов
brne   flash ;если не 0, то посылаем следующий импульс

;когла пачка импульсов выдана - проверяем, есть ли сигнал от TSOP

sbis PINB, tsop ;если уровень на выходе TSOP низкий (т.е. сигнал есть)
rjmp ledon ;то идем зажигать LED
cbi PORTB, led ;иначе гасим LED
rjmp wait_next ;и переходим к ожиданию следующей пачки

ledon: sbi PORTB, led ;гасим LED

;задержка перед следующей пачкой импульсов
wait_next:

clr t1 ;сбрасываем t1 (т.е. t1=0 или, что тоже t1=256)
ldi   temp, TIME3 ;устанавливаем число задержек

Delay3: dec   t1 ;задержка по счетчику t1 от 256 до 0
brne   Delay3 ;   т.е. 256*3 тактов
dec temp ;повторяем TIME3 раз задержку по t1
brne   Delay3 ;   т.е. всего  (TIME3*256*3 + TIME3*3) тактов

rjmp   start ;переходим к началу главного цикла
*************************************************************
AVR Studio "последней модели" постоянно выдает ошибку указывая на вот енту строчку: .equ  COUNT   =  10 ;число импульсов в пачке
Подскажите, пожалуйста, в чём проблема?
___________
С уважением
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: ИК-локатор

Сообщение mitart » 07 июл 2009, 19:24

У меня вопрос такой же как у автора этой темы(к сожалению он ответа не получил). Как там получается частота 36 кГц, если длительность импульса 4 периода тактового сигнала, длительность паузы - 5, а частота 1 МГц (то есть период 1 мкс и получается что период излучения 9 мкс, хотя для 36 кГц надо 28 мкс). :o

И еще есть вопрос тоже по этому локатору - как мк может надежно определить, что близко препятствие? Всмысле когда оно еще не очень близко ну или далеко то на выходе приемника изредка появляется низкий уровень сигнала, потом он появляется всё чаще и чаще.... Так вот как определить тот момент, когда препятствие однозначно близко. Подкиньте идею :pardon:
mitart
 
Сообщения: 43
Зарегистрирован: 07 июн 2009, 10:34
Откуда: Самара
прог. языки: с
ФИО: Артем Митрофанов

Re: ИК-локатор

Сообщение blindman » 07 июл 2009, 19:44

А кто сказал, что длительности там задаются в тактах процессора?
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: ИК-локатор

Сообщение SiemX » 07 июл 2009, 19:47

Взять переменную и при 0 на тсопе ++ ее, потом выполняем программу и опять проверяем выход тсопа вобщем в главный цыкл ее. А по прерыванию от таймера сбрасывать в ноль. Если число в переменной превысит некоторое значение значет близко
SiemX
 
Сообщения: 159
Зарегистрирован: 08 май 2009, 21:21
Предупреждения: -1

Re: ИК-локатор

Сообщение mitart » 07 июл 2009, 20:17

А кто сказал, что длительности там задаются в тактах процессора?


А в чём же?

за идею с увеличением значения переменной спасибо, кажется понял :good:
mitart
 
Сообщения: 43
Зарегистрирован: 07 июн 2009, 10:34
Откуда: Самара
прог. языки: с
ФИО: Артем Митрофанов

Re: ИК-локатор

Сообщение Yuraskas » 29 авг 2009, 21:11

И еще один спросивший не получил ответ (а может и сам догадался, да не поделился ни с кем).
Почему же все таки 4 такта и 5 тактов? И в чём еще в этой программе может задаваться длительность, кроме как в тактах процессора? ИК-диод горит в течение 4х тактов и не горит в течение 5...
Ты приснись ей, ангел белый, пусть ей будет хорошо...
Аватара пользователя
Yuraskas
 
Сообщения: 119
Зарегистрирован: 20 июл 2009, 13:59
Откуда: Канск

Re: ИК-локатор

Сообщение Yuraskas » 01 сен 2009, 09:39

Неужели таки никто не подскажет, каким образом в той программе рассчитвается длительность импульса? :(
Ты приснись ей, ангел белый, пусть ей будет хорошо...
Аватара пользователя
Yuraskas
 
Сообщения: 119
Зарегистрирован: 20 июл 2009, 13:59
Откуда: Канск

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22