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


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

> Описание: Борьба с экономичными лампами.
nestandart Супермодератор Post Id



Супер-модератор


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



Написал программу управления ботом с ИК пульта (протокол rm-887 , но это не важно).


CODE:


unsigned long val=0;
unsigned long val2=0;
unsigned long val3=0;
unsigned long val4=0;
unsigned long val5=0;
unsigned long val6=0;
unsigned long val7=0;
unsigned long val8=0;



void setup()

{
pinMode(2,INPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(18,OUTPUT);


}
void loop()

{
if(pulseIn(2,LOW)==0)
{
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(10,LOW);
digitalWrite(13,LOW);
digitalWrite(18,LOW);
}



val=pulseIn(2,LOW);
val=(val/1000);



if(val==2)
{
val2=pulseIn(2,LOW);
val3=pulseIn(2,LOW);
val4=pulseIn(2,LOW);
val5=pulseIn(2,LOW);
val6=pulseIn(2,LOW);
val7=pulseIn(2,LOW);
val8=pulseIn(2,LOW);





if((val2/1000)==0&&(val3/1000)==0&&(val4/1000)==0&&(val5/1000)==0&&
(val6/1000)==0&&(val7/1000)==0&&(val8/1000)==0)
{


digitalWrite(18,HIGH);//вперд







}








if((val2/1000)==0&&(val3/1000)==0&&(val4/1000)==1&&(val5/1000)==0&&
(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==1)
{


digitalWrite(13,HIGH);//вперд
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(10,HIGH);






}







if((val2/1000)==0&&(val3/1000)==0&&(val4/1000)==1&&
(val5/1000)==0&&(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==0)
{


digitalWrite(13,LOW);//вправо
digitalWrite(12,HIGH);
digitalWrite(11,LOW);
digitalWrite(10,HIGH);

}





if((val2/1000)==1&&(val3/1000)==1&&(val4/1000)==0&&
(val5/1000)==0&&(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==0)
{



digitalWrite(13,HIGH);//лево
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
digitalWrite(10,LOW);


}



if((val2/1000)==1&&(val3/1000)==0&&(val4/1000)==1&&
(val5/1000)==0&&(val6/1000)==1&&(val7/1000)==1&&(val8/1000)==1)
{



digitalWrite(13,LOW);//назад
digitalWrite(12,HIGH);
digitalWrite(11,HIGH);
digitalWrite(10,LOW);

}
}









}



Прога опрашивает TSOP и когда на нем появляется сигнал (лог0) замеряет длинну импульса.
Если длинна импульса равна 2мс (Первый импульс в пачке пульта)
пограмма опрашивает ту же ногу еще семь раз.
Таким образом получаем кодировки кнопок (первый импульс всегда одинаковый).
Далее , если код кнопки совпадает с заранее запрограмированым программа
запускает определенную комбинацию пинов
(крутит моторы в соответствующюю сторону).
При каждом обновленни цикла опрашивается TSOP и если сигнала нет
(длинна импульса равна 0) все пины переводятся в 0.
Т.е. нажимешь кнопку - едет вперед , отпускаешь - останавливается.
И все бы хорошо , при дневном свете все работает.

НО при включеных энергосберегающих лампах начинаются галюны.
А именно , нажал кнопку - едет , отпустил кнопку - все равно едет.

Я считал импульсы идущие от лампы , оказалось лампа гонит , на несущей частоте TSOPa , импульсы 200 - 400 мкс.
По этому программа постоянно фиксирует наличие импульсов на TSOPе и не может
отключить моторы.

Что делать ?
Решить проблему програмно нет возможности (уже вторую ночь - безрезультатно).

Может есть возможность аппаратно отсекать столь малые импульсы.





До этого были те же проблемы с автономной программой , при "экономичном" свете
(датчик постоянно фиксировал препятствие) , решил установкой кондера 0.1мкф между
сигнальной ногой TSOPа и плюсом , а с пультом так не получается.

Кондер лишь увеличивает длинну импульсов на несколько мкс.

(Отредактировано автором: 25 Октября, 2011 - 11:15:40)

 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



Может тсоп поставить с другой несущей? Какие Вы используете(чтобы самому не нарваться?)

Еще вариант - может быть попробовать фильт видимого света? Что-нибудь типа засвеченного рентгеновского снимка?
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


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



Цитата:
Может тсоп поставить с другой несущей? Какие Вы используете(чтобы самому не нарваться?)


Пульт работает на 36-38КГц , если я сменю TSOP тоне увижу и пульт.

Цитата:
Еще вариант - может быть попробовать фильт видимого света?

Скорее всего там , вместе с видимым светом , на тех же частотах идет и ИК.
Так что врядли .
Мне нужно , как то , отфильтравать импульсы короче 0.5мс , а те что длиннее
пропускать.
 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



nestandart пишет:
Скорее всего там , вместе с видимым светом , на тех же частотах идет и ИК.

Вообще-то энергосберегающие потому и сберегающие, что не греются и не должны бы излучать ИК.
 
 Top
nest Администратор Post Id



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


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



nestandart пишет:
как то , отфильтравать импульсы короче 0.5мс , а те что длиннее
пропускать.
програмно и фильтровать.
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


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



Цитата:
програмно и фильтровать.

Как програмно ?

Паразитные импульсы бомбардируют TSOP постоянно И если прировнять их к нулю мотры будут вращаться через раз (поймали родную пачку - запустили моторы , поймали паразитную -
отключили).
Что должна делать программа когда ловит паразитные импульсы ?
Подскажите , хотябы , какие то варианты алгоритма.

Если на TSOPе тишина - моторы стоят.
Если нет - пытаемся поймать пачку .
Если не поймали не делаем ничего (моторы изначально отключены).
 
 Top
Гость Post Id


УДАЛЁН







ну например каждый бит принимать десятком опросов, а не одним.
можно и в аналоге отфильтровать импульсы короче 0.5мс, (RC цепочкой или еще навороченее) но тогда и фронты позаваливаются
 
 Top
nest Администратор Post Id



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


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



кстати. TSOP подключен по даташиту или "главно что б работало" ?

и начните с того, что переведите работу с TSOP на прерывание. Никаких "програмных" опросов быть не должно, это не "по-пацански".
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



nestandart пишет:
Если на TSOPе тишина - моторы стоят.
Если нет - пытаемся поймать пачку .
Если не поймали не делаем ничего (моторы изначально отключены).

Как то это неправильно. Приёмник должен принять определённый код, расшифровав который он должен принять решение какое действие производить. А не просто есть сигнал/нет сигнала.
nest пишет:
и начните с того, что переведите работу с TSOP на прерывание.

Плюсстопятсот.

(Отредактировано автором: 25 Октября, 2011 - 20:38:51)

 
 Top
nestandart Супермодератор Post Id



Супер-модератор


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



Цитата:
и начните с того, что переведите работу с TSOP на прерывание. Никаких "програмных" опросов быть не должно, это не "по-пацански".


Вообщето на прерываниях будут другие функции , но хорошо.
А что это даст ?
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



nestandart пишет:
А что это даст ?

Даст точность.
А вообще эта проблемма (засветка энергосберегающими лампами ТСОП-а) решается установкой ИК-фильтра перед ТСОП-ом. Например из тёмно-красного или чёрного пластика.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



(не фильтра перед тсопом, а козырька над тсопом. из пластика, (возможно не обязательно окрашенного), а то какой смысл?)
а вообщето, раз вы используете тсоп, то подченитесь выдумкам инженеров филипс, у них кстати есть куча комманд для этих устройств, которые, .......
почему не хотите по даташиту юзать?
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


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



Цитата:
А вообще эта проблемма (засветка энергосберегающими лампами ТСОП-а) решается установкой ИК-фильтра перед ТСОП-ом. Например из тёмно-красного или чёрного пластика.


Ставил окошко от пульта - толку нет.
 
 Top
Гость Post Id


УДАЛЁН







посмотрите как радиочастотники от помех фильтруются (в смысле после демодулятора и компаратора) например граберщики сигналок. думаю тут задача примерно похожая: пакеты сыплются как из ведра, и если пропустить один - ничего страшного, а если мусор принять- хуже, да и тактовые частоты (битрейт) схожий.
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


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



Цитата:
пакеты сыплются как из ведра, и если пропустить один - ничего страшного, а если мусор принять- хуже


Импульсы пульта , в среднем , это 1мс .
Импульсы засветки в два /три раза короче .
Мосор может залетать даже между импульсами.
Но это не мешает , пульт работает.

Мешает то что когда пачек пульта нет , TSOP все равно их регистрирует.
 
 Top
Страниц (2): [1] 2 »
« Электронная мастерская »


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





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