roboforum.ru

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

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

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);
}

xapc » 14 апр 2007, 22:34

МУР что-то у тебя калькулятор глючит ))) (ничего что на ты?)
длительность импулься при частоте 36КГц составит 0,0000138 секунды, или 0,0138мс или 13,8мкс
при скважности 0,5 у тебя длительность логической единицы и нуля 6,9 мкс, что легко задается делэями, хотя лучше таймер со счетчиком прикрутить  :roll:

Myp » 14 апр 2007, 22:39

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


блин странно
хотя я калькулятором виндовым считал...
спосибо вобщем :)
щас пойду попробую с делэем

avr123.nm.ru » 14 апр 2007, 22:41

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


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

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

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 » 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]

maktep » 15 апр 2007, 03:34

Ребят, а вы бы по прерыванию таймера то зажигали светодиод для тсопа, а?

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 кГц?
Там задержа должна быть в микросекундах...

avr123.nm.ru » 15 апр 2007, 09:42

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


Измеряй в VMLAB  - пример - avr123.nm.ru/z3.htm

Myp » 15 апр 2007, 12:10

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


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


в теме про моего робота можно заценить видео как это дело у меня работает=)

avr123.nm.ru » 15 апр 2007, 13:23

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


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

Валерос » 15 апр 2007, 16:44

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

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 » 15 апр 2007, 18:48

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


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


ужос
там вобще этот свет из всех дырок светит и засвечивае
железная бленда вокруг тсопа не помогает
по моему ик свет даже по текстолиту  распространяется как по световоду во все стороны  :evil:
надо ещё оставшиеся 2 светодиода запихивать в трубочки и законопачивать вобще всё что можно

Master » 15 апр 2007, 19:06

На счет засветки это действительно полный кошмар. Кстати ТСОП будет реагировать на сигнал от пульта ДУ телевизора. Я даже если в соседнюю комнату свечу, под стол или под диван ТСОП все равно сигнал принимает.


Rambler\'s Top100 Mail.ru counter