Ponieważ zbliża się sezon letni i szyberdach będzie używany nieco bardziej intensywnie, więc postanowiłem zrobić prosty układ automatycznego zamykania szyberdachu po zgaszeniu silnika.
Niestety w moim przypadku często zapominam go zamknąć, a samochód w żaden sposób tego nie sygnalizuje. Ponadto mój moduł komfortu nie pozwala go domykać z pilota (tak samo nie domyka szyb).
Rozgrzebałem już w swoim aucie panel obsługi szyberdachu (z oświetleniem i schowkiem na okulary), by wyprowadzić sobie z niego zasilanie kamery monitorującej jazdę, to miałem już tam wsadzony zasilacz 5V z USB, podłączony w taki sposób, że uruchamiał się w pozycji stacyjki nr2 , więc postanowiłem wykorzystać to do zasilania modułu domykania szyberdachu. Moduł podłączony jest pod zasilacz kamerki i monitoruje jednocześnie napięcie na swoim zasilaniu. Gdy gaszę samochód i przekręcam stacyjkę na poz. 1 (nie końcową - 0), to układ obserwując spadek napięcia przechodzi na zasilanie z kondensatora i załącza przekaźnik, który symuluje przełącznik szyberdachu w położenie ZAMKNIJ (zwarcie 3 odpowiednich pinów modułu sterowania). Układ nie zawsze zadziała, jeśli gasząc auto przełączymy kluczyk od razu do pozycji 0 - przynajmniej ok 1s trzeba przetrzymać kluczyk na pozycji 1.
Cechy rozwiązania:
- oparty o Arduino - wymaga minimalnej wiedzy elektronicznej i 20 min nauki jak programować Arduino (bardzo proste)
- wymaga ingerencji w istniejącą instalację pod panelem obsługi szyberdachu/świateł/schowkiem na okulary
- nie wpływa na działanie modułu sterowania szyberdachem
- domkniecie szyberdachu wymaga zatrzymania się kluczykiem na niecałą sekundę na poz. 1 stacyjki
- układ jest odporny na chwilowe spadki napięcia
- bardzo prosty w budowie, bez problemu mieści się w obudowie 1,5 * 3 * 4 cm i w przestrzeni obok panela szyberdachu
- tani w budowie - koszt elementów mieści się w 20 pln.
Załączam schemat elektryczny oraz obrazkowy pokazujący sposób podłączenia (oznaczyłem piny w gnieździe modułu szyberdachu) i sketch programu do Arduino.
const int testPin = 4; // pin sprawdzajacy napięcie const int RelayPin = 6; // pin sterujacy przekaźnikiem int testState = 0; // stan napięcia void setup() { pinMode(testPin, INPUT); pinMode(RelayPin, OUTPUT); digitalWrite(RelayPin, HIGH); } void loop() { testState = digitalRead(testPin); if (testState == LOW) { delay(700); if (testState == LOW) { digitalWrite(RelayPin, LOW); delay(700); digitalWrite(RelayPin, HIGH); while(testState == LOW) { testState = digitalRead(testPin); } } } }
Użytkownik rzuber edytował ten post 20:10, 07.05.2017