PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка устройств (http://pccar.ru/forumdisplay.php?f=18)
-   -   помогите со схемкой подкл. нормально замкнутого датчика (http://pccar.ru/showthread.php?t=10744)

aarpro 06.12.2009 23:27

помогите со схемкой подкл. нормально замкнутого датчика
 
имеем инсталированный датчик уровня масла который в нормальном состоянии замкнут (разомкнут когда уровень масла падает)

подключение его на контрольную лампочку выполнено, в настоящий момент так:

http://s52.radikal.ru/i135/0912/26/6712d3fd86e4.png

то есть через реле

Обнаружился "дребезг" датчика, вернее даже не "дребезг", а тенденция к кратковременному размыканию, так как при разгоне/торможении автомобиля масло в поддоне "плещется"...

то есть требуется задержка при подаче 12В на контрольную лампу примерно 5-7 секунд, при пропадании сигнала - задержка не нужна

Почитал форум - нашел несколько схем задержки подачи напряжения, но так и не понял что же лучше применить так как они для задержки включения мониторв и/или блоков питания, и я не уверен что они выдержат многократное вкл/выкл на входе (практически "дребезг")...

Кроме того возник вопрос - а нельзя ли собрать простую схемку без участия реле, которая будет выполнять необходимые функции:

на входе нормально замкнутые контакты, при кратковременном размыкании которых (3-7 секунд) на выходе ничего не происходит, при длительном размыкании этих контактов имеем на выходе схемы +12В (на контрольную лампочку или другое устройство), при следующем замыкании этих контактов (на входе, контакты датчиков) на выходе +12В пропадает сразу, без задержки...

Заранее спасибо братцы, а то своих знаний не хватает

Urvin 06.12.2009 23:37

Возьми за основу схему включения камеры заднего хода на пике, предложенную Chipом.
Тогда можно будет точно задавать времена включения/отключения.
Вместо реле можно использовать полевой транзистор. Какой - зависит от лампочки.
Если нужен просто факт наличия 12В или повесить светодиод, то обычный биполярный.

aarpro 06.12.2009 23:50

Цитата:

Сообщение от Urvin (Сообщение 122680)
Возьми за основу схему включения камеры заднего хода на пике, предложенную Chipом.
Тогда можно будет точно задавать времена включения/отключения.
Вместо реле можно использовать полевой транзистор. Какой - зависит от лампочки.
Если нужен просто факт наличия 12В или повесить светодиод, то обычный биполярный.

ты эту схемку имеешь в виду:
http://s50.radikal.ru/i129/0912/42/231fc07de135.gif

Urvin 06.12.2009 23:55

угу. или соседняя картинка

aarpro 07.12.2009 00:03

а на каких элементах лучше собирать ?

и это так сказать задержка прихода напруги на лампочку (лампочка в приборке уж не знаю сколько ватт)

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

admin 07.12.2009 00:22

Электролитический конденсатор параллельно лампочке , и диод в разрыв цепи

aarpro 07.12.2009 00:33

Цитата:

Сообщение от admin (Сообщение 122699)
Электролитический конденсатор параллельно лампочке , и диод в разрыв цепи

параллельно лампочке или все же обмотке реле ? в какой разрыв диод ?

можно лучше схемку ? :sad2:

Urvin 07.12.2009 00:34

http://funkyimg.com/u2/710/361/pic.png

Программку вот эту подергать надо (hi-tech C):
Код:

//------------------------------------------------------------------------//
#include
//------------------------------------------------------------------------//



//------------------------------------------------------------------------//
// БИТЫ КОНФИГУРАЦИИ
//------------------------------------------------------------------------//
__CONFIG(INTIO & WDTDIS & PWRTDIS & MCLREN & BORDIS & UNPROTECT & UNPROTECT & RCCLK);
//------------------------------------------------------------------------//
// Oscillator              = Internal RC no Clockout
// Watchdog Timer          = Off
// Power Up Timer          = Off
// Master Clear Enable      = External
// Brown Out Detect        = Off
// Code Protect            = Off
// Data EE Read Protect    = Off
// Bandgap Calibration Bits = Highest Bandgap Voltage
//------------------------------------------------------------------------//



//------------------------------------------------------------------------//
// ВРЕМЕННЫЕ ЗАДЕЖКИ ЗМЕНЕНИЯ СОСТОЯНИЙ
//------------------------------------------------------------------------//
#define TIMER_COUNTS_BEFORE_SWITCH_ON 30
#define TIMER_COUNTS_BEFORE_SWITCH_OFF 150
//------------------------------------------------------------------------//



//------------------------------------------------------------------------//
volatile unsigned char state = 0;                        // Переменная номера состояния
volatile unsigned char timerCounts = 0;    // Счетчик таймера
//------------------------------------------------------------------------//



//------------------------------------------------------------------------//
// ФУНКЦИЯ ПРЕРЫВАНИЙ
//------------------------------------------------------------------------//
void interrupt my_isr(void){
        // Прерывание от таймера
        if((T0IE)&&(T0IF))
        {
                T0IF=0;        // clear event flag
               
                // Инкрементация счетчика таймера
                timerCounts++;
               
                // Если состояние "реле включено, камера выключена"
                if (state == 1)
                {
                        // Если срок включения вышел, переодим в стабильное состояние
                        if (timerCounts >= TIMER_COUNTS_BEFORE_SWITCH_ON) state = 2;
                }
               
                // Если состояние "реле выключено, камера включена"
                else if (state == 3)
                {
                        // Если срок выключения вышел, переодим в стабильное состояние
                        if (timerCounts >= TIMER_COUNTS_BEFORE_SWITCH_OFF) state = 0;
                }

        }
       
}
//------------------------------------------------------------------------//



//------------------------------------------------------------------------//
// ИНИЦИАЛИЗАЦИЯ ОБОРУДОВАНИЯ
//------------------------------------------------------------------------//
void init(void){
        // Включение прерывания таймера
        INTCON        = 0b00100000;
       
        // Ножка 1 на вход, прочие на выход
        TRISIO        = 0b00000010;
       
        // Делитель 128, внутренний генератор сигнала
        OPTION        = 0b00000110;
       
        // Обнуление таймера
        TMR0 = 0;
       
        // Непосредственное включение прерываний
        ei();
       
}
//------------------------------------------------------------------------//



//------------------------------------------------------------------------//
// ГЛАВНАЯ ФУНКЦИЯ
//------------------------------------------------------------------------//
void main(void)
{       
        init();                        // Первичная инициализация

       
        while (1)                // Бесконечный главный цикл
        {
                // Если состояние "все выключено"
                if (state == 0)
                {
                        GPIO0 = 1;                        // Отключаем камеру
                       
                        if (GPIO1 == 0)                // Если включилось оптореле...
                        {
                                state = 1;                // переходим в следующее состояние
                                timerCounts=0;  // и обнуляем счетчик таймера
                        }
                }
                else if (state == 1)
                {
                        if (GPIO1 == 1) state=0;
                }
               
                // Если состояние "все включено"
                else if (state == 2)
                {
                        GPIO0 = 0;                        // Включаем камеру
                       
                        if (GPIO1 == 1)                // Если оптореле выключилось...
                        {
                                state = 3;                // переходим в состояние пятисекундной задержки
                                timerCounts=0;        // обнуляем счетчик таймера
                        }
                }
                else if (state == 3)
                {
                        if (GPIO1 == 0) state=2;
                }
               
        }        // Конец главного цикла
}
//------------------------------------------------------------------------//


aarpro 07.12.2009 00:40

не через чур для просто задержки включения лампочки ?
____________________________________________

а оптопары бывают с задержкой включения ?

Urvin 07.12.2009 00:54

Зато точно по времени и ничего подбирать не надо)
Я такой, люблю точность до нанограммов.

Конденсатор не даст всегда одинакового времени. Можно городить на NE555, уже интереснее, но у меня с этими микросхемами нелюбовь.

http://funkyimg.com/u2/658/319/l1.png


Часовой пояс GMT +4, время: 21:37.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot