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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разное (http://pccar.ru/forumdisplay.php?f=158)
-   -   Интеллектуалный БП для Asus EeePC (http://pccar.ru/showthread.php?t=9254)

Coloss 10.09.2009 11:17

Доброго времени суток.
Не мог бы кто нибудь выложить рисунок печатных плат для схем из 1 и 2-го поста...
Заранее благодарен...

odessit 10.09.2009 13:35

а где ты там в 1 и 2 посте увидел печатные платы ???
Оно собиралось насколько вижу на простой универсальной плате

Coloss 10.09.2009 17:33

Цитата:

Сообщение от odessit (Сообщение 110336)
а где ты там в 1 и 2 посте увидел печатные платы ???
Оно собиралось насколько вижу на простой универсальной плате

Ну просто подумал,что они существуют :blush:Ладно...будем сами творить :unsure2:

Honda_ЛЁТ 11.09.2009 15:47

Цитата:

Сообщение от odessit (Сообщение 107668)
Сбой при заводке двигателя это непроблемма при подключении
через разьем батареи и использовании Конденсаторов !!!

Купил родной БП от прикуривателя, запитал напрямую от аккумулятора, но при заводке авто комп тухнет. Подскажи пожалуйста к каким контактам подсоединения аккумулятора подпаивать "+ -"? Кондёр как я понял припаять на выход источника питания, 4700 мкФ х 25В пойдёт или побольше?

odessit 12.09.2009 16:33

кондер надо ставить совместно с диодом. чтобы при просадке кондер не питал сеть автомобиля!!! соответственно в проход чтобы питание шло от акума к кондеру а обратно нет ... померить прибором ...

odessit 12.09.2009 16:34

4700 врядле хватит у меня стоят 3 по 9000мф ... немного с запасом на зииму ...

по поводу к каким контактам непонял ... вопроса ....

ну минус к минусу = к плюсу желательно протянуть прямые провода от акума ...

Honda_ЛЁТ 13.09.2009 11:43

Цитата:

Сообщение от odessit (Сообщение 110587)
4700 врядле хватит у меня стоят 3 по 9000мф ... немного с запасом на зииму ...

Во спасибо. Всё понял :yes4:.

Цитата:

Сообщение от odessit (Сообщение 110587)
по поводу к каким контактам непонял ... вопроса ....

ну минус к минусу = к плюсу желательно протянуть прямые провода от акума ...

Я имел ввиду контакты подключения родного аккумулятора (EEPC 701), там их штук 8-мь помоему, ты же советовал от них запитаться или пойдет от от сетевого (зарядочного) разъёма?

Прямой "+" от аккумулятора ч/з предохранитель я провёл.

odessit 13.09.2009 14:02

а топ не пробовал читать ????

На предидущей странице есть фото КАк подрубать к бат разьему ...

-qwerty- 22.09.2009 03:29

Толи я что-то не понял, толи оно не работает.
В общем при попытке перейти на AtTiny25 впрямую ничего не получилось, пришлось курить маны.
В итоге было найдено кучка ошибок в коде программы, особенно если всё делать по манам.
Пришлось програмить своё заново, и оно того стоило!
В данный момент программа может работать как на Tiny15, так и на 25/45/85 (последние особо дёшевы в Чип и Дип, 220 рублей за tiny25 и всего 110 за tiny85).

Програмил на AVR-GCC в AVR Studio, код громозок и есть куда оптимизировать, но лень, очень лень.
Выкладываю свою разработку в исходнике, кому надо - оптимизируйте.
AVR Studio нахаляву забрать можно на сайте атмела, WinAVR найти в гугле.
Если кто на выходе в 2 раза сократит прогу, то пойдёт и на tiny15, хотя, ИМХО, проще купитьт 45 или 85 тиню в Чип и Дип.

Шил все тини с помощью UniProf (версию не помню, но последняя с ручным апдейтом exe файла).

Код:

#include
#include

#define ON_PROCESS 1
#define ON 2
#define OFF_PROCESS 3
#define OFF 4
#define SYSTEM_FAIL 10

// ïðåäíàñòðîéêè.. ïðèìåðíî â ñåêóíäàõ :)
#define initTimer                                                4        // ÷àñòîòà ïðîâåðêè òàéìåðîì
#define initButtonDelay                                        2        // çàäåðæêà êíîïêè 2ñåê
#define initBeforeStartDelay                        5        // âðåìÿ äî âêëþ÷åíèÿ 10ñåê.
#define initAfterStartDelay                                90        // çàäåðæêà ïîñëå âêëþ÷åíèÿ 90ñåê âðåìÿ íóæíîå íà ñòàðò âèíäå.

#define initBeforeOFFDelay                                150        // âðåìÿ äî îòêëþ÷åíèÿ 150ñåê
#define initBeforeOFFDelay_Multipler        2        // ìíîæèòåëü 2 .=> 150ñåê*2 = 300ñåê = 5ìèí
#define        initPowerDownDelay                                120        // âðåìÿ îæèäàíèÿ âûêëþ÷åíèÿ êîìïà âî âðåìÿ âûêëþ÷åíèÿ

int PC_State;
int BeforeStartDelay;
int ButtonDelay;
int AfterStartDelay;
int BeforeOFFDelay;
int BeforeOFFDelay_Multipler;
int PowerDownDelay;

int Timer_step;

int main ( void )
{
        DDRB = (1<         TCCR0B = (1<         TIMSK = (1<         sei();

        PORTB = 0x00; // óñòàíàâëèâàåì âñå ñîñòîÿíèÿ â 0 äëÿ íà÷àëà ìîîíèòîðèíãà

        Timer_step = initTimer;
        PC_State = OFF;
        BeforeStartDelay = 0;
        ButtonDelay = 0;
        AfterStartDelay = 0;
        BeforeOFFDelay = 0;
        BeforeOFFDelay_Multipler = 0;
        PowerDownDelay = 0;

        for(;;)
        {
        }
        return 0;
}

// PB0 - OUT BUTTON
// PB1 - OUT POWER
// PB2 - IN USB
// PB3 - IN ACC
// PB4 - OUT LED

void p_OFF()
{
        if ( PINB & (1<         {
                PC_State = ON_PROCESS; // ïåðåõîäèì â ðåæèì âêëþ÷åíèÿ
                BeforeStartDelay = initBeforeStartDelay; // îæèäàíèå äî íàæàòèÿ êíîïêè
                ButtonDelay = initButtonDelay; // êàê äîëãî æàòü êíîïêó
                if ( !(PORTB & (1<                 {
                        PORTB |= (1<                 }
        }
}

void p_ON_PROCESS()
{
        if ( BeforeStartDelay > 0 ) // òàéìàóò äî íàæàòèÿ êíîïêè
        {
                if ( !( PINB & (1<                 {
                        if ( PORTB & (1<                         {
                                PORTB &= ~(1<                         }
                        PC_State = OFF; // ïåðåõîä â ðåæèì ñëåæåíèÿ çà âêëþ÷åíèåì
                        return;
                }
                BeforeStartDelay --; // ìèíóñóåì òàéìàóò
        }else{ // ïîåõàëè âêëþ÷àòü êîìï
                if ( ButtonDelay > 0 ) // äåðæèì êíîïêó íàæàòîé
                {
                        if ( !( PORTB & (1<                         {
                                PORTB |= (1<                         }
                        ButtonDelay --;
                }else{
                        if ( PORTB & (1<                         {
                                PORTB &= ~(1<                                 AfterStartDelay = initAfterStartDelay; // çàäà¸ì òàéìåð äî ïîÿâëåíèÿ USB
                        }else{
                                if ( AfterStartDelay > 0 )  // æä¸ì äî ïîÿâëåíèÿ óñá ïî òàéìåðó
                                {
                                        AfterStartDelay--;
                                }else{ // ïðîâåðÿåì ñòàòóñ USB
                                        if ( PINB & (1<                                         {
                                                PC_State = ON;
                                                return;
                                        }else{
                                                PC_State = SYSTEM_FAIL; // à íåòó óñá, ãîâíî ñëó÷àåòñÿ...
                                                return;
                                        }
                                }
                        }
                }
        }
}

void p_ON()
{
        // ïðîïàäàíèå USB
        if ( !( PINB & (1<         {
                PC_State = SYSTEM_FAIL;
                return;
        }
        if ( !( PINB & (1<         {
                PC_State = OFF_PROCESS;
                BeforeOFFDelay = initBeforeOFFDelay; // èíèöèàëèçàöèÿ òàéìåðà äî âûêëþ÷åíèÿ
                BeforeOFFDelay_Multipler = initBeforeOFFDelay_Multipler; // èíèöèàëèçàöèÿ òàéìåðà  ìíîæèòåëÿ
                ButtonDelay = initButtonDelay; // êàê äîëãî æàòü êíîïêó
                PowerDownDelay = initPowerDownDelay; // êàê äîëãî æäàòü ïîòóõàíèÿ êîìïà
        }
}

void p_OFF_PROCESS()
{
        if ( !( PINB & (1<         {
                PC_State = SYSTEM_FAIL; // íàõóé ïàäàåì è âñ¸ ãàñèì
                return;
        }
        if ( BeforeOFFDelay_Multipler == 0 ) // òèïà òàéìåð ñ ìíîæèòåëåì íà íóëå.
        {
                if ( ButtonDelay > 0 ) // ïîêà äåðæèì êíîïêó, è äàæå åñëè íå äåðæèì.
                {
                        if ( !( PORTB & (1<                         {
                                PORTB |= (1<                         }
                        ButtonDelay --; // ìèíóñóåì òàéìåð íàæàòîé êíîïêè.
                }else{
                        if ( PORTB & (1<                         {
                                PORTB &= ~(1<                         }
                        if ( PowerDownDelay > 0 ) // òèïà æä¸ì ïðîñòîãî âûêëþ÷åíèÿ
                        {
                                PowerDownDelay--; // íó è ìèíóñóåì òàéìåð îæèäàíèÿ âûêëþ÷åíèÿ
                        }else{
                                PC_State = SYSTEM_FAIL; // ïðîâàëèâàåìñÿ â system_fail â ëþáîì ñëó÷àå
                        }
                }
        }else{
                if ( BeforeOFFDelay == 0 )
                {
                        BeforeOFFDelay = initBeforeOFFDelay; // âîññòàíàâëèâàåì òàéìåð îòêëþ÷åíèå
                        BeforeOFFDelay_Multipler--; // ìèíóñóåì ìíîæèòåëü òàéìåðà âûêëþ÷åíèÿ
                }else{
                        if ( PINB & (1<                         {
                                PC_State = ON;
                                return;
                        }
                }
                BeforeOFFDelay --;
        }
}

void p_SYSTEM_FAIL()
{
        if ( PORTB & (1<         {
                PORTB &= ~(1<         }
        if ( PINB & (1<         {
                if ( PORTB & (1<                 {
                        PORTB &= ~(1<                 }else{
                        PORTB |= (1<                 }
        }else{
                PC_State = OFF; // ñáðàñûâàåì ñîñòîÿíèå. àññ íåò âñ¸ ðàâíî.
                if ( PORTB & (1<                 {
                        PORTB &= ~(1<                 }
        }
}

ISR(TIMER0_OVF_vect)
{
        Timer_step--;
        if ( Timer_step == 0 )
        {
                if ( PC_State == OFF )
                {
                        p_OFF();
                }

                if ( PC_State == ON_PROCESS )
                {
                        p_ON_PROCESS();
                }

                if ( PC_State == ON )
                {
                        p_ON();
                }

                if ( PC_State == OFF_PROCESS )
                {
                        p_OFF_PROCESS();
                }

                if ( PC_State == SYSTEM_FAIL )
                {
                        p_SYSTEM_FAIL();
                }

                Timer_step = initTimer;
        }
}

PS Знать бы АСМ получше, на нём бы написал ;)

yurich38 24.09.2009 06:04

За такое, огромный респект!! )
з.ы. комментарии в коде зачетные :D


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

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