Контролер стеклоочистителя
Думаю попробовать такой проект на Сардуино...
Раньше ездил на БМВ и мне там очень нравился алгоритм работы стеклоочистителя:
1. Программируемая пауза прерывистого режима - т.е. выдержал нужную паузу и он продолжает с ней работать.
2. Постоянный режим - интенсивность зависит от скорости и при остановке переходит в прерывистый режим.
Re: Контролер стеклоочистителя
от скорости да, но еще бы как то непосредственно к интенсивности осадков привязать :)
Re: Контролер стеклоочистителя
Программируемый стеклоочиститель легко реализуем ,
а если датчик осадков поставить, построеного по принципу переломления отраженного светогого пучка.
Re: Контролер стеклоочистителя
принцып я знаю :) но не понимаю, почему после замены лобового, он обычно не работает (месяц назад на LX470, 2года назад на LC100...)
Re: Контролер стеклоочистителя
Может быть обычный триплекс отражает сигнал от стекла во внутренем слое?
Re: Контролер стеклоочистителя
фиг знает... но уже несколько раз видел, как после замены стекла с датчиком на обычное, датчик перестает работать, и несет полную пургу...
есть стекла с датчиком, но они стоят... много :)
обычные неслабо, а с датчиком, просто МНОГО :)
Re: Контролер стеклоочистителя
А если микрокамеру от оптической мышки приспособить?
Re: Контролер стеклоочистителя
Цитата:
Сообщение от
(vS)
от скорости да, но еще бы как то непосредственно к интенсивности осадков привязать :)
У меня не было датчика дождя... а так - хорошо бы
Re: Контролер стеклоочистителя
Цитата:
Сообщение от
Chip
А если микрокамеру от оптической мышки приспособить?
надо йопыты ставить
Re: Контролер стеклоочистителя
в общем есть опытный образец датчика дождя. Состоит из ИК диода и ИК-приемника TSOP3374.
Скеч:
PHP код:
void setup() // run once, when the sketch starts
{
Serial.begin(9600);
pinMode(10, OUTPUT); // Инфракрасный светодиод
pinMode(11, INPUT); // приемник ИК излучения
}
void loop() // run over and over again
{
digitalWrite(10, HIGH);
delayMicroseconds(60);
if (digitalRead(11) == HIGH)
Serial.println("1"); значение=1
digitalWrite(10, LOW);
delayMicroseconds(60);
if (digitalRead(11) == LOW)
Serial.println("0");
}
открываем порт и смотрим. 1010101010101 - Есть сигнал, 111111111 - нет сигнала
Соответственно диод и приемник крепятся на стекло под таким углом чтобы капля (грязь, снег и т.д.) попавшая на стекло создавала отражение сквозь стекло на приемник. Дальше делаем все что захотим... Особенность приемника в его помехозащищенности. Не реагирует на изменение освещенности, такой же применяется в аппаратуре с ик пультами.
Re: Контролер стеклоочистителя
Спасибо за скетч, но судя по коду не совсем верно получается , длительность полупериода 60 мкс этоочень много , если частота приемника 38кГц то длительность на полупериод с учетом исполняемого кода должна примерно равнятся 9мкс
Re: Контролер стеклоочистителя
Цитата:
Сообщение от
Ger$$$
Соответственно диод и приемник крепятся на стекло под таким углом чтобы капля (грязь, снег и т.д.) попавшая на стекло создавала отражение сквозь стекло на приемник.
немного не понятно,пример можно?
Вложений: 1
Re: Контролер стеклоочистителя
Сопротивление нужно рассчитывать по току светодиода или подбирать по чувствительности датчика
Схема:
Вложение 6305
Вложений: 1
Re: Контролер стеклоочистителя
Цитата:
Сообщение от
Chip
Спасибо за скетч, но судя по коду не совсем верно получается , длительность полупериода 60 мкс этоочень много , если частота приемника 38кГц то длительность на полупериод с учетом исполняемого кода должна примерно равнятся 9мкс
делал по даташиту на 33 кГц, там написано 60. работает четко.
вложение присутствует
Re: Контролер стеклоочистителя
Вот набросал код для ИК приемника на 38кГц
по позже допишу , чтобы была помехозащищенность
PHP код:
//http://compcar.ru
byte tsop = 11; //ИК приемник
byte irLed = 10; //ик-светодиод
byte Led = 13; //осветодиод(L) на плате
byte i; // счётчик
byte num=16; //число периодов несущей 38кГц в посылаемом пакете
byte impulse=8; // длительность полупериода
byte val=1; //переменная для хранения сигнала с ИК приемника
void setup()
{
pinMode (irLed, OUTPUT); // разъём 10 на вывод
pinMode(Led, OUTPUT); //разъём 13 на вывод
pinMode(tsop, INPUT); // разъём 11 на ввод
Serial.begin(115200);
}
void loop()
{
cli(); //запретить все прерывания
for(i=0; i<num; i++) //цикл несущей
{
digitalWrite(irLed, HIGH); //зажигаем ик-диод
delayMicroseconds(impulse); //положительный полупериод
digitalWrite(irLed, LOW); //гасим ик-диод
delayMicroseconds(impulse-1); //выравниваем скважность периода
}
digitalWrite(Led,(digitalRead(tsop)==LOW) ? HIGH:LOW); //если сигнал низкий то зажигаем светодиод
sei(); //разрешить прерывания
delayMicroseconds(impulse*3*num); //пауза между пакетами.
}