роботы робототехника микроконтроллеры


 Страниц (8): « 1 2 [3] 4 5 6 7 8 »   

> Без описания
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



alex1991 пишет:
на пульт он реагирует, а на ик-диод нет
не та частота (совсем) или не тот световой диапазон.
Посмотрите в даташит ваших светодиодов, длина волны должна быть 950nm.
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



alex1991 пишет:
на пульт он реагирует, а на ик-диод нет


Как бампер реагирует на пульт? Индикаторные светодиоды срабатывают? Что это за пульт? От какой техники? Может стоит поискать в сети характеристики ИК приемника (передатчика). Как менять частоту бампера разобрались?

(Отредактировано автором: 24 Мая, 2010 - 17:23:57)

 
 Top
alex1991 Post Id



Генерал


Сообщений всего: 91
Дата рег-ции: Май 2010  



у меня ик-диод TSAL5100 написано в даташите что длина волны у нее 940nm.
(Добавление)
если подавать сигнал на первый tsop то мигает с большой скоростью 1 светодиод если на второй то второй если подавать сигнал с расстояния 20 сантиметров на оба tsopa то мигают по очереди с большой скоростью
Прикреплено изображение
61303787ппп.jpg

(Отредактировано автором: 24 Мая, 2010 - 17:19:26)

 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Случайно не знаете, где используется Ваш TSOP? Можно его характеристики уточнить по документации к этой технике?
 
 Top
alex1991 Post Id



Генерал


Сообщений всего: 91
Дата рег-ции: Май 2010  



у меня пульт от телевизора vesta про документацию на ик-приемник тоесть hl136aa71 не чего в сети не нашел какой-то что ли китайский Замешательство
(Добавление)
http://www.moding.ru/forum/viewt...5a3887a817b75e47
вот все что нарыл пишется что hl136aa71 что это аналог tsop1736
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



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

В крайнем случае, можно перебрать все мыслимые частоты в прошивке. И неплохо бы уточнить частоту микроконтроллера. Если он работает по заводским параметрам, то надо смотреть datasheet. Частота ИК светодиода передатчика зависит от частоты микроконтроллера.

(Отредактировано автором: 24 Мая, 2010 - 17:50:29)

 
 Top
alex1991 Post Id



Генерал


Сообщений всего: 91
Дата рег-ции: Май 2010  



к сожаленнию у меня нет осциллографа попробую перебирать все мыслимые частоты в прошивке только пожалуйста объясните как
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Посмотрю datasheet на ATmega8. Посчитаю немного. И через часик напишу все, что я об этом думаю.
 
 Top
alex1991 Post Id



Генерал


Сообщений всего: 91
Дата рег-ции: Май 2010  



спасибо ok Улыбка
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



CODE:

#include <avr/io.h>
#include <util/delay.h>

int main(void) /* начало основной программы */
{

int i;

DDRB |= (1<<0); /* PB0 сконфигурировать как выход, ИК-диод 2 */
/* PB1 */
/* PB2 */
DDRB |= (1<<3); /* PB3 сконфигурировать как выход, индикаторный светодиод 1 */
DDRB |= (1<<4); /* PB4 сконфигурировать как выход, индикаторный светодиод 2 */
/* PB5 */
/* PB6 */
/* PB7 */

/* PC0 */
DDRC |= (1<<1); /* PC1 сконфигурировать как выход, драйвер двигателя */
DDRC |= (1<<2); /* PC2 сконфигурировать как выход, драйвер двигателя */
DDRC |= (1<<3); /* PC3 сконфигурировать как выход, драйвер двигателя */
DDRC |= (1<<4); /* PC4 сконфигурировать как выход, драйвер двигателя */
/* PC5 */
/* PC6 */
/* PC7 */

/* PD0 */
DDRD &= (~(1<<1)); /* PD1 сконфигурировать как вход, канал радиоуправления */
DDRD &= (~(1<<2)); /* PD2 сконфигурировать как вход, канал радиоуправления */
DDRD &= (~(1<<3)); /* PD3 сконфигурировать как вход, канал радиоуправления */
DDRD &= (~(1<<4)); /* PD4 сконфигурировать как вход, канал радиоуправления */
DDRD &= (~(1<<5)); /* PD5 сконфигурировать как вход, TSOP 1 */
DDRD |= (1<<6); /* PD6 сконфигурировать как выход, ИК-диод 1 */
DDRD &= (~(1<<7)); /* PD7 сконфигурировать как вход, TSOP 2 */

/* PD0 */
PORTD |= (1<<1); /* PD1 установить "1", включаем подтягивающий резистор */
PORTD |= (1<<2); /* PD2 установить "1", включаем подтягивающий резистор */
PORTD |= (1<<3); /* PD3 установить "1", включаем подтягивающий резистор */
PORTD |= (1<<4); /* PD4 установить "1", включаем подтягивающий резистор */
PORTD |= (1<<5); /* PD5 установить "1", включаем подтягивающий резистор */
/* PD6 */
PORTD |= (1<<7); /* PD7 установить "1", включаем подтягивающий резистор */


/* ***** расчет временной задержки *****

Mk 1 MHz TSOP 36 KHz
1000000 / 36000 = 28

ИК-светодиод светит |||||| 14 | 10 | 18 | 6 | 22
ИК-светодиод не светит ||| 14 | 18 | 10 | 22 | 6

28 * 20 = 560 задержка между пачками

----------------------------------------

Mk 1 MHz TSOP 38 KHz
1000000 / 38000 = 26

ИК-светодиод светит |||||| 13 | 10 | 16 | 7 | 19
ИК-светодиод не светит ||| 13 | 16 | 10 | 19 | 7

26 * 20 = 520 задержка между пачками

----------------------------------------

Mk 1 MHz TSOP 40 KHz
1000000 / 40000 = 25

ИК-светодиод светит |||||| 13 | 10 | 15 | 7 | 18
ИК-светодиод не светит ||| 12 | 15 | 10 | 18 | 7

25 * 20 = 500 задержка между пачками

************************************** */


while(1) /* бесконечный цикл */
{


/* формирование пачки для TSOP 1 */
for(i=0;i<20;i++) /* Цикл определяет длину пачки. В данном случае цикл выполняется 20 раз. Рекомендованное количество повторов цикла от 15 до 50 */
{
/* то как выполняется код приведенный ниже зависит от схемы подключения ИК-светодиода к микроконтроллеру */
_delay_us(14); /* временная задержка определяющая время в течении которого ИК-светодиод не светит */
PORTD &= (~(1<<6)); /* установить "0" на PD6, ИК-светодиод светит */
_delay_us(14); /* временная задержка определяющая время в течении которого ИК-светодиод светит */
PORTD |= (1<<6); /* установить "1" на PD6, ИК-светодиод не светит */
}

/* проверка TSOP 1 */
if ( !(PIND & (1<<5)) ) /* проверить "0" на PD5 */
{ PORTB |= (1<<3); } /* установить "1" на PB3 */
else
{ PORTB &= (~(1<<3)); } /* установить "0" на PB3 */

_delay_us(560); /* временная задержка между пачками */


/* формирование пачки для TSOP 2 */
for(i=0;i<20;i++) /* Цикл определяет длину пачки. В данном случае цикл выполняется 20 раз. Рекомендованное количество повторов цикла от 15 до 50 */
{
/* то как выполняется код приведенный ниже зависит от схемы подключения ИК-светодиода к микроконтроллеру */
_delay_us(14); /* временная задержка определяющая время в течении которого ИК-светодиод не светит */
PORTB &= (~(1<<0)); /* установить "0" на PD6, ИК-светодиод светит */
_delay_us(14); /* временная задержка определяющая время в течении которого ИК-светодиод светит */
PORTB |= (1<<0); /* установить "1" на PD6, ИК-светодиод не светит */
}

/* проверка TSOP 2 */
if ( !(PIND & (1<<7)) ) /* проверить "0" на PD7 */
{ PORTB |= (1<<4); } /* установить "1" на PB4 */
else
{ PORTB &= (~(1<<4)); } /* установить "0" на PB4 */

_delay_us(560); /* временная задержка между пачками */


} /* закрывающая скобка бесконечного цикла */

} /* закрывающая скобка основной программы */


В комментариях к программе, вроде все, указал. Изменять можно длину пачки, время свечения ИК светодиода и/или время когда ИК светодиод не светится. Одновременное изменение последних двух параметров приводит к изменению частоты.
(Добавление)
Еще одна светлая мысль посетила меня Ухмылка

Проверьте схему. ИК светодиоды и TSOPы соответствуют друг другу? А то может светится ИК светодиод расположенный рядом с одним TSOPом, а проверяется сигнал на другом?

(Отредактировано автором: 24 Мая, 2010 - 19:30:08)

 
 Top
alex1991 Post Id



Генерал


Сообщений всего: 91
Дата рег-ции: Май 2010  



пробовал с советскими у меня их много и других нет но изменений ненабладалось
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



ИК- светодиод подключенный к PD6 (12 ножка микроконтроллера) должен быть рядом с TSOP подключенным к PD5 (11 ножка микроконтроллера).

ИК- светодиод подключенный к PB0 (14 ножка микроконтроллера) должен быть рядом с TSOP подключенным к PD5 (13 ножка микроконтроллера).

Покажите схему по которой включили ИК-светодиоды.
 
 Top
alex1991 Post Id



Генерал


Сообщений всего: 91
Дата рег-ции: Май 2010  



у меня так и есть использую ту же тему что и в начале этой темы только убрал из схемы транзистор и к минусу ик-светодиода подключит резистор 220 ом который идет к минусу питания
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



рёв в три ручья

Скорость света 300 000 000 м/с
Тактовая частота микроконтроллера 1 000 000 Гц
Один такт длится 1 / 1 000 000 секунды
За это время свет пролетает ( 1 / 1 000 000 ) * 300 000 000 = 300 м

300 метров !!!

Сколько тактов выполняется if ( !(PIND & (1<<5)) ) одному компилятору известно.

Я думаю это многое должно объяснить.


Возможные пути решения проблемы:

1 изменить схему так, чтобы логический сигнал на PD5 и PD7 оставался еще некоторое время после того как TSOP его уже не обеспечивает.
2 разделить передатчик и приемник (ИК-бампер на двух микроконтроллерах или классический myTSOPer).
3 изменить программу (может через прерывания попробовать что то сделать).

Думаю о прерываниях, но просветление сознания не наступает Грустный
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



mihail пишет:
Возможные пути решения проблемы:
1...
2...
3...
4. писать на асм Улыбка

вот тут я демонстрировал расчёт и алгоритм для TSOP-бампера на таймере и прерывании.
 
 Top
Страниц (8): « 1 2 [3] 4 5 6 7 8 »
« Делаем роботов »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru