4 tsop одновременно

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Сообщение Myp » 14 апр 2007, 21:36

блин чёто я запутался

36 кГц это 36 тысяч импульсов в секунду?
тоесть 1 импульс это 1/36000 секунды
сответсно 1/(36000*2) это длит. высокого уровня и столько же длит. низкого уровня( Lo+Hi=1 импульс)
тоесть 7.7*Е-10
а наносекунды это всего лишь -9 степень
это получается у меня 0.77 наносекунды  :durak:
блин а сколько мне надо поставить в delay_ns() если у меня длинна короче чем минимально возможно :durak:
в чём косяк объясните :durak:


а вобще вот так я посылаю импульсы :)
Код: Выделить всё
for( i=0 ; i<10 ; i++ )
{
PORTC.2 = 1;
delay_us(100);
PORTC.2 = 0;
delay_us(100);
}
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение xapc » 14 апр 2007, 22:34

МУР что-то у тебя калькулятор глючит ))) (ничего что на ты?)
длительность импулься при частоте 36КГц составит 0,0000138 секунды, или 0,0138мс или 13,8мкс
при скважности 0,5 у тебя длительность логической единицы и нуля 6,9 мкс, что легко задается делэями, хотя лучше таймер со счетчиком прикрутить  :roll:
xapc
 
Сообщения: 68
Зарегистрирован: 13 окт 2005, 14:13
Откуда: Ростов-на-Дону
Skype: hars_oleg
ФИО: Олег Харсеев

Сообщение Myp » 14 апр 2007, 22:39

[off]можно и на ты =) главное буквы в нике правильно писать, первая заглавная а две оставшиеся прописные :lol:  :lol:  :lol:
писатьпоанглиски я уж не прошу, хотя там на самом деле "эм" "игрэк" "пэ"[/off]


блин странно
хотя я калькулятором виндовым считал...
спосибо вобщем :)
щас пойду попробую с делэем
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение avr123.nm.ru » 14 апр 2007, 22:41

Myp писал(а):блин чёто я запутался


если в микросекундах то так:

1000 000 / 72 000 = 13,88888....
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 14 апр 2007, 22:48

Код: Выделить всё
for(i=0;i<10;i++)
{
PORTC.2 = 1;
delay_ms(7);
PORTC.2 = 0;
delay_ms(7);
}




неа не работает такой код
чёто не та частота, от пульта тсоп работает а от светодиода нет =/
Последний раз редактировалось Myp 14 апр 2007, 22:55, всего редактировалось 1 раз.
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 14 апр 2007, 22:52

avr123.nm.ru писал(а):
Myp писал(а):блин чёто я запутался


если в микросекундах то так:

1000 000 / 72 000 = 13,88888....

Код: Выделить всё
for(i=0;i<10;i++)
{
PORTC.2 = 1;
delay_ms(14);
PORTC.2 = 0;
delay_ms(14);
}

частота получается 35,7 кГц должно схватыватся
но не работает тоже...
осцилографа нету немогу реальную частоту померять чтоб исправить

[off]пойду в протеусе потестю...
кстати
delay зависит от частоты кварца ???
ато у меня мега8 с заводской установкой я ещё фьюзы не ставил ибо не решил как мне хочетсо

блин
ну что такое

в протеусе вобще не симулируетсо Sad
шим симулируется, я вижу его
а на ноге со светиком постоянно лог единиса.
хотя в реале там чтото есть так как светик моргает

пойду спатьпожалуй ато моск отказал[/off]
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение maktep » 15 апр 2007, 03:34

Ребят, а вы бы по прерыванию таймера то зажигали светодиод для тсопа, а?
Аватара пользователя
maktep
Правохранитель
 
Сообщения: 197
Зарегистрирован: 23 фев 2007, 02:23
Откуда: Зеленоград

Сообщение ATLab » 15 апр 2007, 06:18

Myp писал(а):
avr123.nm.ru писал(а):
Myp писал(а):блин чёто я запутался


если в микросекундах то так:

1000 000 / 72 000 = 13,88888....

Код: Выделить всё
for(i=0;i<10;i++)
{
PORTC.2 = 1;
delay_ms(14);
PORTC.2 = 0;
delay_ms(14);
}

частота получается 35,7 кГц должно схватыватся
но не работает тоже...
осцилографа нету немогу реальную частоту померять чтоб исправить

[off]пойду в протеусе потестю...
кстати
delay зависит от частоты кварца ???
ато у меня мега8 с заводской установкой я ещё фьюзы не ставил ибо не решил как мне хочетсо

блин
ну что такое

в протеусе вобще не симулируетсо Sad
шим симулируется, я вижу его
а на ноге со светиком постоянно лог единиса.
хотя в реале там чтото есть так как светик моргает

пойду спатьпожалуй ато моск отказал[/off]

Да... Спать это в самый раз.
Как это из 28 миллисекунд (2 раза delay_ms(14)) получилось 35,7 кГц?
Там задержа должна быть в микросекундах...
ATLab
 
Сообщения: 11
Зарегистрирован: 14 мар 2007, 12:15
Откуда: Россия

Сообщение avr123.nm.ru » 15 апр 2007, 09:42

Myp писал(а):осцилографа нету немогу реальную частоту померять


Измеряй в VMLAB  - пример - avr123.nm.ru/z3.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 15 апр 2007, 12:10

короче так
всё исправил всё заработало
дальность неуверенного срабатывания 30см, частые вспышки
на растоянии 15 см уже стабильное срабатывание без пропуска импульсов


боковая засветка  действительно  ужасная=)


в теме про моего робота можно заценить видео как это дело у меня работает=)
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение avr123.nm.ru » 15 апр 2007, 13:23

Myp писал(а):боковая засветка  действительно  ужасная


Делай бленду. Для начал просто трубочку поставь для отсечения бокового света.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Валерос » 15 апр 2007, 16:44

Так выложи окончательную схему и код, пожалуйста.
Аватара пользователя
Валерос
 
Сообщения: 364
Зарегистрирован: 30 сен 2006, 19:05
Откуда: Санкт-Петербург

Сообщение Myp » 15 апр 2007, 18:33

Валерос писал(а):Так выложи окончательную схему и код, пожалуйста.

хе
ну раз просите...
ток там собсно кода то и нет никакого
и схемы тоже нету практически

вот код для отправки пачки из 10 импульсов сразу на все 3 ИК диода(на схеме нарисован одинн но можно хоть 10)
Код: Выделить всё
void send(void)
{
for(i=0;i<14;i++)  // количество импульсов минимум 10 но для надёжности я  думаю надо больше, но не больше 70 хотя у меня и с 14 всё отлично работает
{
PORTC.2 = 1;  // начало импульса
delay_us(14);  // задержка чтоб получить 36 кГц
PORTC.2 = 0;  // конец импульса
delay_us(14);  // пауза между импульсами чтоб получилось 36 кГц
}
}



код для приёма должен быть примерно такой
в таком варианте принимаем сигнал от 3х тсопов
Код: Выделить всё
void recive(void)
{
x ^= PINC.5; //если x,y или z единиса значит чёто приняли
y ^= PINC.4; //5,4,3 это ноги МК к которым подключены выходы тсопов
z ^= PINC.3;  
}


а в мэйне чтото типа этого
Код: Выделить всё
while(1)
{
void send();
void recive();

delay_us(500); // небольшая задержка чтоб тсоп успел расслабится и переключится в высокое состояние
             // после 1 пачки из 10 импульсов надо ждать время равное длинне минимум 14 импульсов тоесть 392 микросекунды минимум
             // в даташите правда нарисовано 600 микросекунд... наверно прозапас =)
//----опять можно посылать импульсы и принимать сигнал
void send();
void recive();
}

если после отправки тсоп сработал то на выходе тсопа будет низкий уровень который мы и считаем в x,y,z
для надёжности запускаем второй раз сканирование
и если после второго раза тоже чтото приняли значит стопудово препятствие
иначе просто помеха случайная
Вложения
ACDSee6 BMP Image.jpg
вот почему вобще это всё работает
ACDSee6 BMP Image.jpg
а вот так выглядит моя схема
транзюк резистор и диод подбирайте по желанию.
также как и количество тсопов
Последний раз редактировалось Myp 05 май 2007, 16:38, всего редактировалось 1 раз.
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 15 апр 2007, 18:48

avr123.nm.ru писал(а):
Myp писал(а):боковая засветка  действительно  ужасная


Делай бленду. Для начал просто трубочку поставь для отсечения бокового света.


ужос
там вобще этот свет из всех дырок светит и засвечивае
железная бленда вокруг тсопа не помогает
по моему ик свет даже по текстолиту  распространяется как по световоду во все стороны  :evil:
надо ещё оставшиеся 2 светодиода запихивать в трубочки и законопачивать вобще всё что можно
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Master » 15 апр 2007, 19:06

На счет засветки это действительно полный кошмар. Кстати ТСОП будет реагировать на сигнал от пульта ДУ телевизора. Я даже если в соседнюю комнату свечу, под стол или под диван ТСОП все равно сигнал принимает.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Пред.След.

Вернуться в Микроконтроллеры

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

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