хочу замутить себе на авто устройство чтоб включало ближний как только машина поедит, в инете полно схем, но хочется самому! так вот: схему вроде накидал, спаял прошил контроллер(тини 13) но... свет включается даже когда еще зажигание включаеш или заводишь(когда как ) я так думаю что всему виной помехи возникающие при запуске двигателя или при вкл. зажигания вопрос: как с ними програмно бороться? вот кусок кода где я пытаюсь отфильтровать импульсы короче 5млс, т.е. я думаю что помехи не будут длиннее, или ни так? Спойлер
Код:
#define FARA_ON PORTB.0=1; DSA_IMP; // счётчик импульсов с датчика скорости mls=5;
interrupt [EXT_INT0] void ext_int0_isr(void) {
if(RUCHNIK==1){ if(impuls==0){ //здесь в первый раз? T3=1; //да, запускаем таймер на 1млс, impuls=1; // и ставим флаг что были здесь }else{ //нет, мы уже были тут T3=0; //останавливаем таймер mills=TS3; //в mills сохраняем то сколько натикал млс. таймер if(mills>=mls){ // сравниваем время таймера с предустановленным значением DSA_IMP++; //если прошло больше времени чем надо, то считаем этот импульс mills=0;} //и сбрасываем mills impuls=0; //и сбрасываем флаг того что тут уже были }; };
ну так я и подсоединяю к ДСА(датчик скорости автомобиля) машинка инжекторная,датчик выдаёт 6 импульсов на оборот! вот в этом то и проблема, не должно быть там ни каких импульсов с датчика скорости пока машина не поедит, а у меня ловит какие то помехи на этом проводе, и поэтому свет врубает контроллер! посему интересно как можно програмно побороть эти помехи?
_________________ ***********
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********
сначала определить, что машина заведена ( померить бортовое напряжение, что бы не ниже 13 вольт), а потом отлавливать импульсы. Хотелось бы глянуть на схему, может у вас схемный косяк.
вообще то лучше сделать нормальный резистор а не использовать внутренний подтягивающий.И можно еще поставить небольшой конденсатор у ноги Мк, какую нибудь керамику на пару сотен uF. Можно определить, что машина едет очень просто если шесть импульсов на оборот, а оборот делает примерно за один метр, и начало движения всегда будет медленным, то есть к примеру началом будет 1км/ч то получается, что самый длинный импульс будет 3600[сек] / 6000[имп/км] =0,6 секунд. Можно для надежности ждать пока три секунды пройдет и не было импульсов, то можно тушить свет. Далее считаем когда можно включить свет пусть максимальная скорость будет 120км/ч, тогда самый короткий импульс для включения 0,6[сек]/120= 0.005сек Из этих расчетов можно составить алгоритм если состояние выключеных фар и время между импульсами 5мс-0,6 сек, то фары включаем. если состояние фар включено, считаем сколько импульсов за 3 секунды, если меньше 1(или 2 или 3), то фары можно потушить.
Честно говоря я не понял как в вашем виде фары тушатся.Вроде в начале проверка на ручник, а когда фары горят уже не выключаются от ручника?
vitalik_1984 я впринципе так и стараюсь сделать т.е. у нас есть переменная mls в которой я храню количество миллисекунд которые должны быть между импульсами(в данном случае 5млс) как только поступит первый импульс, запускаю таймер и жду следующего импульса. Приходит следующий импульс, время которое нотикал таймер(в миллисекундах) сохраняю в переменную mils, а далее сравниваю оба значения:
Код:
if(mills>=mls){ // сравниваем время таймера с предустановленным значением
и делаю вывод, был ли импульс с ДСА или просто помеха!
а ручник это я просто так ввёл в программу от безвыходности и все равно не помогает, т.е. машина на ручнике стоит, заводим её(пока на ручнике импульсы не считаем) опускаю ручник(машина стоит) то фары иногда включаются!
можно конечно подсоединиться с датчику экранированным проводом возможно это снизит помехи, но не хочется ведь в машине ни одного экранированного провода нет, ЭБУ как то же работает!
Ооо... 512 слов ПЗУ + Си... Ммняаа... (кажись там и NE555 вполне хватило ...) А на схемотехнику ЧХИ!!! ... Сколько ...метров проводка между коллектором и входом (или между выходом датчика и входным делителем)?
Параметры сигнала датчика мне неизвестны, но думаю, амиплитуда там не менее 12 Вольт... У тиньки требуется режим с внутренним сбросом, 8:->1KOm->:1 без конденсатора, коллекторный резистор не более 910 Ом... Входной делитель 10:1 ...? там нужен преобразователь, чувствительный только к полному размаху входного сигнала... да и топология монтажа... Автомобилус... блин... особопомехоопасное существо... Слазь на котов сундук или http://radioparty.ru/index.php/literatura за двумя томами Рюмиковской "1000 и одна микроконтроллерная схема" + раздел "авто" на http://elektromehanika.org/load/avto/8 , авось чего прояснится!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения