Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » плывут мозги уже.....

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

31. rain_cbc - 06 Февраля, 2010 - 21:19:18 - перейти к сообщению
уже 3 перепробовал Грустный
и ничего
32. nest - 06 Февраля, 2010 - 21:34:43 - перейти к сообщению
а как вы видите "срабатывание" фототранзистора ?
замерте напряжение между коллектором фототранзистора и ПЛЮСОМ источника питания в затемнённом и осветлённом "положении", сколько ?
33. rain_cbc - 06 Февраля, 2010 - 21:51:58 - перейти к сообщению
навожу его на лампу в прямую....потому что ничего не происходит если не навести на яркий свет.....напряжение в темноте 4.14 при срабатывании 0.09
34. nest - 06 Февраля, 2010 - 21:55:26 - перейти к сообщению
rain_cbc, подключите резистор 50-100 кОм между коллектором и плюсом питания.
35. rain_cbc - 06 Февраля, 2010 - 22:03:44 - перейти к сообщению
типа вот так?
36. nest - 06 Февраля, 2010 - 22:36:30 - перейти к сообщению
rain_cbc пишет:
потому что ничего не происходит если не навести на яркий свет
"ничего" - в смысле поведение моторчика не меняется?

вот так. только не 50 Ом, а 50..100 кОм (любой от 50 кОм до 100 кОм)
37. rain_cbc - 10 Февраля, 2010 - 17:25:41 - перейти к сообщению
можно глупый вопросик?это типа ножка выхода к мк? Смущение
38. nest - 10 Февраля, 2010 - 19:05:08 - перейти к сообщению
rain_cbc, в общем - да.
39. rain_cbc - 26 Февраля, 2010 - 22:45:56 - перейти к сообщению
есть вопрос)пытаюсь подружить вот это http://myrobot.ru/stepbystep/r_firstbot1.php
с вот этим http://robozone.su/2008/04/22/mo...ratora-dlja.html
http://robozone.su/mrc28/19-modul-ik-datchika-na-osnove-tsop2136.html
возникает много вопросов.....по идее в мк как я понимаю должно быть задействовано 2 ножки....1 по которой передается программа с подачей импульсов...а вторая для приема состояния тсопа....но там вроди идет только 1 ножка.почему так?или я чтото не правельно понимаю?
подключал как там показано но не подсоединял к мк просто питание подавал заметил такую штуку...когда препятствия нету на out тсопа показывает гдето 2.85,когда приближаеш преграду ничего не происходит.....но когда она поевляется рывкон(очень быстро) тогда падает около -2.8
кто-то может подсказать как мне это все привести в порядок? Смущение
40. ОЛЕГ - 27 Февраля, 2010 - 01:08:32 - перейти к сообщению
rain_cbc пишет:
когда препятствия нету на out тсопа показывает гдето 2.85,когда приближаеш преграду ничего не происходит.....но когда она поевляется рывкон(очень быстро) тогда падает около -2.8
кто-то может подсказать как мне это все привести в порядок?

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

Если у Вас есть МК, зачем тогда использовать внешний генератор?
Какую программу и куда Вы хотите передавать?

Нарисуйте схематично (просто блоками, где что происходит и что на что влияет), как Вы себе представляете согласование устройств, ссылки на которые Вы привели.
41. rain_cbc - 01 Марта, 2010 - 20:18:57 - перейти к сообщению
я хотел сделать бампер))тоесть насколько теперь понял то сигнал можно генерировать мк не подключая гениратор?
если все так как понял то должно быть так?:
42. nest - 01 Марта, 2010 - 20:37:56 - перейти к сообщению
если есть МК, то тогда уж так:
43. rain_cbc - 01 Марта, 2010 - 21:05:51 - перейти к сообщению
ну да....на моем рисунке ик датчик это http://robozone.su/mrc28/19-modu...ve-tsop2136.html
я в програмировании еще полный чайник...поэтому нашол похожий код и немного его переделал...он компилируется но ничего не происходит((((кто-то может подсказать в чем проблема?
вот код
#include <avr/io.h>
#include <avr/delay.h>

int main( void )
{
//конфигурация портов
DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
DDRD = 0x00; // все выводы порта D сконфигурировать как входы

while( 1 )
{
//цикл подачи пачки импульсов ик светодиодом
for( char i = 0; i < 30; i++ )
{
_delay_us(14); // задержка 14 микросекунд, чтобы получилась частота примерно 36 кГц
PORTD ^= 0x01; // начало импульса
}

PORTD &= ~0x01;

if(!(PINC & (1<<PINC5))) // проверка: если на ноге PC5 (к ней TSOP подключен) ноль (есть сигнал)
{
PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C
}
else // если нет сигнала
{
PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C
}
_delay_us( 1000 ); //пауза между пачками импульсов
}

return 0;
}

Смущение
44. ОЛЕГ - 01 Марта, 2010 - 23:06:09 - перейти к сообщению
rain_cbc пишет:
for( char i = 0; i < 30; i++ )
{
_delay_us(14); // задержка 14 микросекунд, чтобы получилась частота примерно 36 кГц
PORTD ^= 0x01; // начало импульса
}

PORTD &= ~0x01;


Так не получится.
Раз Вы решили поступить таким образом, то тогда лучше вот так:

CODE:

for( char i = 0; i < 30; i++ )
{
PORTD &= ~0x01;
_delay_us(14); // задержка 14 микросекунд, чтобы получилась частота примерно 36 кГц
PORTD ^= 0x01; // начало импульса
_delay_us(14);
}


Мне кажется, Вам придется поиграть задержкой для того, чтобы поточнее подстроить частоту.
И следует обратить внимание, что после генерации очередной пачки МК должен успеть "метнуться" к TSOP, а на том все еще должен быть "0".

И я не уверен по поводу _delay_us(14);
45. nest - 01 Марта, 2010 - 23:11:08 - перейти к сообщению
ОЛЕГ пишет:
после генерации очередной пачки МК должен успеть "метнуться" к TSOP, а на том все еще должен быть "0"
или завести его на прерывание.

Весь алгоритм с пояснениями (хоть и почти на асм) с использованием прерывания и всеми расчётами я уже приводил как то :) >>>