komstomtymt
|
|
1 | |
ИК приемник-передатчик. Проблем18.03.2011, 19:29. Показов 6886. Ответов 5
Метки нет (Все метки)
Доброго времени суток!
Стоит такая задача сделать ИК бампер для определения препятствия, для отправки сигнала используется ИК диод, а для приема приемник IRM8601S. посылку и прием пытаюсь осуществить вот этой функцией Код
ISR(TIMER0_OVF_vect) { if (TM_count == 1) { TCNT0 = 255-75; sei(); TM_count = 2; while(1) { IR_LED_PORT &= ~(1<<IR_LED); _delay_us(time); IR_LED_PORT |= 1<<IR_LED; _delay_us(time); } } if (TM_count == 2) { TCNT0 = 255-75; sei(); TM_count = 1; while(1) { if((IR_RES_PIN&(1<<IR_RES))!=0) { S1_LED_PORT |= 1<<S1_LED; S0_LED_PORT &= ~(1<<S0_LED); cli(); work(); } else { S0_LED_PORT |= 1<<S0_LED; S1_LED_PORT &=~(1<<S1_LED); } } } } прошу помощи в создании алгоритма. datasheet на IRM8601S и проект для Студии в архиве [252.16 Кб] заранее спасибо. |
18.03.2011, 19:29 | |
Ответы с готовыми решениями:
5
Передатчик-приемник Atmega8 и 433Mhz передатчик и приемник Приемник, передатчик Передатчик и приемник (помогите с выбором) Передатчик приемник 100м дальности |
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 62
|
|
21.03.2011, 12:11 | 2 |
Сообщение от komstomtymt
заранее спасибо. Логика какая то странная. То есть ты в одном прерывании сначала включаешь лампу потом отключаешь. и заем пытаешся что то уловить датчиком. Лучше сделать детектор на отдельном, физическом прерывании, независимом от таймера. а в таймере сохратять время старта. И последнее. Работать ето должно быстрее скорости света - ведь растояние меряется не от земли до луны и реагировать должно мгновенно.
0
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
|
|
21.03.2011, 18:46 | 3 |
Если надо просто определить "есть стена"/"нет стены", то все примитивно:
-Включаем свет. Надо не просто включить, но мигать с определенной частотой (несущая - 36кГц, 38кГц, тыды). Можно сделать на ШИМ. -Чуть ждем (примерно 10-20 циклов несущей), чтобы приемник мог поймать отраженный сигнал. -Проверяем выход с приемника. Если поймал сигнал, значит - "есть стена" :)
0
|
komstomtymt
|
|
30.03.2011, 20:09 | 4 |
Спасибо за ответы,очень помогли, извиняюсь что раньше не написал, навалилась много учебы. Проблема решена, действительно процесс очень быстрый, поэтому пришлось переделать алгоритм.
Итак выкладываю свое решение, мало ли кому то пригодится и будет полезным =) Код
#include <avr/io.h> #include <avr/interrupt.h> #include "def_irdemo3.h" ISR(TIMER0_OVF_vect){ // обработчик прерывание таймера IR_LED_PORT^=1<<IR_LED; // осуществляющего задержку и мигание IR дилдом TCNT0=time; // время задержки } int main(){ IR_LED_DDR |= 1<<IR_LED; // определям нужные порты на выход S0_LED_DDR |= 1<<S0_LED; S1_LED_DDR |= 1<<S1_LED; IR_RES_DDR &=~(1<<IR_RES); // и на вход для получение результатов IR_RES_PORT |= 1<<IR_RES; TCCR0 = 1<<CS00|1<<CS01|0<<CS02; // настраеваем предделитель таймера TIMSK = 1<<TOIE0|0<<OCIE0; // разрешаем приревание по переполнению TCNT0 = time; sei(); while(1){ // в отладочном варианте бесконечный цикл if((IR_RES_PIN&(1<<IR_RES))==0){ // если датчик принял сигнал cli(); // запрещяем прирывание, перестаем мигать S0_LED_PORT |= 1<<S0_LED; // зажигаем сигнальный диод //briok; // и выходим из цикла } } } и проект целиком [9.67 Кб] |
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
|
|
30.03.2011, 20:22 | 5 |
Тестил? Как ведет себя с разными поверхностями? (цвет, материал)
0
|
komstomtymt
|
|
31.03.2011, 02:17 | 6 |
потестил и привожу результаты с разными поверхностями, какие только смог найти дома
мерил примерное максимальное расстояние на котором определялось препятствие, получились вот такие результаты: материал: лист белой буниги, прим растояние 15см материал: рука, 8см материал: черная кожанная папка, практически не ловит материал: зеркало, 35 см материал: страница из журнала хакер, 15 см материал: глянцывая фото бунига, 15-18 см материал: белая хлопкавая ткань, 12 см материал: красная бунига, 15-18 см материал: зеленая бунига, 15-18см материал: желтая бунига, 15-18 см материал: коврик от мыши, 12 см материал: текстолит, 9 см материал: медь на текстолите, 35 см материал: фанера, 16 см Как уже писал выше регулировать расстояние можно либо изменять сопротивление около диода или изменять частоту мигание диода путем изменение задержки. При изменении одного из этих параметров расстояние меняется у всех материалов примерно на одинаковую величину. |
31.03.2011, 02:17 | |
31.03.2011, 02:17 | |
Помогаю со студенческими работами здесь
6
Радио приёмник и передатчик arduino Собрать СВЧ передатчик и приёмник Простой приемник и передатчик на микроконтроллере Atmega8 Выбор типа пары Приемник-Передатчик FM передатчик Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |