Перейти к содержанию
AUTO TECHNOLOGY

DigiBigga

Новичок
  • Постов

    1
  • Зарегистрирован

  • Посещение

Старые поля

  • Автомобиль
    Гетц

Информация

  • Пол
    Мужчина
  • Город
    Спб

Достижения DigiBigga

Newbie

Newbie (1/14)

0

Репутация

  1. Внесу свою лепту. Вариант для очень ленивых инженеров и любителей пива=). Ссылки на приобретение деталюх выставлять не буду, ибо рекламу не люблю. все легко ищется и приобретается на всероссийской алипомойке. Начнем с питания. Мелкомодуль питания на 2307, с шимом. Очень маленький, но мощный. Его выставляем на 5.1 вольт для питания контроллера.Ну и пару емкостей по выходу 0,01 и 20 мкф 10в. Если собираетесь заниматься отладкой, то контроллер запитываем через любой шоттки. Контроллер в виде ардуино про-мини, 168-328 без разницы, пятивольтовая версия. Силовой модуль с двумя n-канальными мосфетами. XY-MOS. Нужно учитывать, что этот тип модуля управляет минусом. Если у вас в головном свете коммутируемый плюс, то нужен другой модуль. Диоды кремниевые, я повыпаивал из старых плат, использовал КД521=)))))). Их роль - развязать входы ардуины от губительных 12в. Собственнно еще понадобится преобразователь USB-UART, или программатор USBASP что-бы залить прошивку. Логика такая. Питание на схему подается с 15 клеммы, схема начинает работать при погасшей лампе генератора И невключенных габаритах И отпущенном ручнике. Плавный розжиг до ~ 40% (4Ах2H4). При соблюдении прочих условий и затянутом после розжига ручнике, свет плавно гаснет через 30сек. В случае остановки двигателя свет плавно гаснет сразу. В случае включения габаритов- гаснет без диммирования. Обратный старт из всех положений происходит при тех же начальных условиях: 0ручник+0габарит+0генератор ----------------------------начало------------------------------------------------------------------------------------------------------------ const uint8_t parkPin = 2; // через диод на лампу ручника const uint8_t gabaritPin = 3; //через диод на габариты. ПОМНИМ что коммутируется у нас минус, и высокий уровень неактивный const uint8_t generatorPin = 4; // через диод на лампу генератора или авар давления масла. const uint8_t dlrOut = 10; // выход на мосфеты. const uint8_t ledPin = 5; // индикация работы, можно забить ибо будет подсвечиваться лампа дальнего на приборке bool work; bool stage; bool parkFlag; bool parkStage; uint8_t bright; long globalTime; void setup() { pinMode(dlrOut, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(parkPin, INPUT_PULLUP); pinMode(generatorPin, INPUT_PULLUP); pinMode(gabaritPin, INPUT_PULLUP); digitalWrite(ledPin, LOW); Light(0); work=false; parkFlag=false; parkStage=false; } void loop(){ bool park = digitalRead(parkPin); bool generator = digitalRead(generatorPin); bool gabarit = digitalRead(gabaritPin); if(park&&parkFlag&&work)parkFlag=false; if(generator&&gabarit){ if (park){ Light(84); work=true; parkFlag=false; } if(!park&&!parkFlag&&work){ globalTime = millis(); parkFlag=true; Light(30); Serial.print("; parkFlag :"); Serial.println(parkFlag); } if(!park&&work){ if((millis()- globalTime)>30000){ Light(0); work=false; } } } if((!generator&&work)||(!gabarit&&work)){ Light(0); work=false; } digitalWrite(ledPin, work); } void Light(uint8_t newBright) { uint8_t i = bright; if (newBright > bright) { for (i; newBright >= i; i++) { analogWrite(dlrOut, i); delay(20); } bright=newBright; } if (newBright < bright) { analogWrite(dlrOut,newBright); bright=newBright; } if (newBright == bright) { //Эгегей! } } -----------------------------------------конец---------------------------------------------------------- Все соединяется согласно вышеизложенному говнокоду и пакуется в подходящий корпусец из чип-дипа за 100р. Нагрев мосфетов 45 цельсия после 30 минут теста.
×
×
  • Создать...
Яндекс цитирования