Witam
Dziś przedstawiam projekt sterownika układu chłodzenia na bazie termistora produkcji BMW o numerze 13 62 1 703 993. Najpierw trochę danych o samym czujniku i jego zastosowaniu gdyż pewnie wiele osób zastanawia się czemu konkretnie akurat ten.
Jest to podwójny czujnik temperatury zawierający 2 niezależne czujniki typu NTC o rezystancji odpowiednio ok 2,2K i 6,5K w 20 stopniach. Pierwszy z nich przekazuje temperaturę do komputera sterującego praca silnika a drugi do zegara na desce rozdzielczej. We wcześniejszych wersjach modelu BMW E36 (oraz innych modelach produkowanych w tym samym czasie (tj do około roku 2000) stosowano dwa osobne czujniki czyli termistor 2,2K w kolorze niebieskim o numerze części 13 62 1 709 966 oraz termistor 6,5K w kolorze czarnym o numerze części 12 62 1 710 535. Jedynym chyba wyjątkiem jest bardzo rzadka wersja 323TI której wyprodukowano ok 15,5 tys egzemplarzy pod sam koniec produkcji modelu.
Projekt ten powstał na potrzeby swapu(wymiany) silnika o oznaczeniu kodowym M43B18(1.8L) na small block V8 o pojemności 318 cid tj 5.2L produkcji Chryslera/Jeepa do nadwozia wspomnianego BMW. Podczas instalowania silnika okazało się iż fabryczny wentylator wiskotyczny nie wejdzie(zarówno BMW jak i Jeep maja wentylatory mechaniczne a nie elektryczne jak większość samochodów) i należało użyć wentylatora elektrycznego który jednak musi być jakoś sterowany. Dodatkowo do dyspozycji była tylko 1 dziura w kolektorze ssącym a potrzebny był jeszcze przecież czujnik do zegarów w kabinie aby kontrolować temperaturę. Można oczywiście zastosować jakiś czujnik na wężu od chłodnicy i tym podobne protezy ale za pomocą 1 czujnika można wysterować tylko 1 wentylator oraz nie ma możliwości konfiguracji temperatury - są to czujniki a dokładniej termostaty ON-OFF ustawione na konkretne temperatury. Fabryczna chłodnica nie ma miejsca na instalacje dodatkowych czujników gdyż nie ma takiej potrzeby w wykonaniu seryjnym. Tutaj sytuacja jest inna - nie możemy zastosować mechanicznego wentylatora gdyż będzie się obracał w chłodnicy a do podłączania i wysterowania elektrycznego zarówno silnik jak i komponenty nadwozia nie są przystosowane(chyba ze mowa o wersji z klimatyzacja ale te wentylatory tez sterowane z komputera silnika bmw który to usuwamy wraz z silnikiem). O samym silniku można przeczytać tutaj :
http://dodgeram.org/tech/gas/specs/5_2v8.htmsilnik ma jeszcze trochę większego brata o pojemności 5.9L i wielkiego brata całej rodziny magnum czyli V10 o pojemności 8.0L znanego z Dodge Vipera/Dodge Rama
Gdyby ktoś się zastanawiał po co to wszystko :
https://www.youtube.com/watch?v=50wJFv7p8p0zło, zło, samo zło. Ludzie kiedy dodajesz gazu zabierają w popłochu dzieci z ulicy, kury przestają się nieść, krowy dawać mleko a gimbaza zapomina co to fejsbuk i telefon dotykowy.
Tutaj fabryczna wersja e36 V8 (z innym silnikiem niż mój) jak jest ktoś ciekawy - bardzo rzadka wersja - wyprodukowano zaledwie 221szt !
http://www.gieldaklasykow.pl/alpina-b8- ... erniewice/Opracowałem wiec sterownik na bazie atmega 8 do w/w projektu który wykorzystuje zbędny termistor 2,2K w czujniku 13 62 1 703 993 do kontroli chłodzenia silnika i posiada 4 niezależne wyjścia typu otwarty kolektor z programowalna temperatura. Dzięki temu można wysterować np 3 wentylatory oraz np lampkę kontrolna na desce rozdzielczej sygnalizująca przekroczenie ustawionej temperatury. Kanały działają w pełni niezależnie od siebie. Dodatkowo istniej możliwość (po zmianie oprogramowania i dołożeniu kilku elementów) wysterowania wentylatorów elektrycznych z nowszych modeli BMW(npE46) które są już sterowane płynnie tj za pomocą sygnału PWM. Można również użyć innych czujników NTC niż opisany po zmianie funkcji wyliczającej temperaturę i ewentualnej korekcie opornika w dzielniku oporności. Tyle tytułem wstępu po co to komu i do czego
Wszystko składa się z 3 elementów
1)Płytki zasilania oraz dzielników napięciowych wykorzystywanych przy dopasowaniu sygnałów sterujących jeep-bmw(nie wchodzą w skład tego modułu)
2) Właściwego sterownika
3) Panela zewnętrznego do konfiguracji urządzenia zbudowanego na bazie panelu frontowego z dekodera polsatu Echostar 717 z którego wykorzystuje 3 przyciski i 4 segmentowy 7 znakowy wyświetlacz LED. Moduł ten działa na bazie attiny 2313.
Dwa pierwsze moduły są dopasowane do zabudowania w fabrycznej osłonie przewodów instalacji silnikowej produkcji BMW. Było tam sporo miejsca a nie miałem pomysłu jak i gdzie to zabudować inaczej. Wiązkę elektryczna i tak musiałem "uszyc" od nowa na bazie instalacji bmw i tej wyciętej z jeepa wiec od razu wykorzystałem okazje i połączyłem to w całość. Urządzenie do konfiguracji jest w osobnej obudowie gdyż nie jest potrzebne do normalnej pracy jedynie do konfiguracji i podglądu.
Od strony elektrycznej pierwsza płytka zapewnia wstępne filtrowanie napięcia z instalacji oraz obniżenie tego napięcia za pomocą diod prostowniczych do około 8 V aby zmniejszyć grzanie 7805. Sterownik na bazie atmegi za pomocą transoptorów steruje wejściami układu MP4020(4 darlingtony mocy). Układ pomiarowy składa się z termistora i opornika 326R(dzielnik napięcia) oraz tranzystora tez sterowanego przez optoizolator. Okazało się bowiem ze przy tak dużych zmianach oporności (około 18K przy minus 20 do około 100R w 130 stopniach)aby otrzymać sensowne wyniki w interesującym mnie zakresie pracy 20-115 stopni trzeba iść na kompromis - albo duża wartość oporności i mało precyzyjne pomiary albo mala wartość która zwiększa precyzje pomiaru ale powoduje znowu przepływ większego prądu przez termoelement, jego podgrzanie i w konsekwencji zafałszowanie wyniku. Głównym ograniczeniem jest tutaj niskie napięcie 5V którym zasilamy czujnik. Postanowiłem to obejść za pomocą tranzystora - podaje on napięcie na termistor po chwili dokonuje się pomiar i odcinamy zasilanie aby go nie potrzebnie nie nagrzewać. W realu okazało się to nie potrzebne, nie mniej w celu zwiększenia dokładności pomiaru można to robić podobnie jak odcinać na czas pomiaru transmisje I2C. Wartość z dzielnika napięciowego która mierzymy jest odseparowana za pomocą LM358 od wejścia mikrokontrolera. Całość popychana kwarcem o częstotliwości 4433619 - taki akurat miałem. Sam panel konfiguracyjny jest podłączony za pomocą gniazda typu DB9 i komunikuje się za pomocą właśnie TWI. Użyłem fabrycznego oprogramowania sterującego wyświetlaczem do którego "dorobiłem" dodatkowe znaki liter do wyświetlenia sprawdzając wszystkie możliwe 255 kombinacji. Przyciski działają tradycyjnie poprzez zwarcie do masy. Sam panel z dekodera wymagał sporej ingerencji przy pakowaniu go w obudowę - szlifowanie o ok 2mm na wysokość, wlutowania wyższych przycisków, usunięcia oryginalnego kabla, odbiornika podczerwieni, podwójnej diody led i 1 kondensatora oraz przeniesienia 2 innych na druga stronę. 2 oporniki do linii komunikacyjnych są w obudowie na dodatkowej płytce z bo na pcb sterownika nie było już miejsca za bardzo.
Od strony programowej sterownik działa na bazie zmodyfikowanego menu z mojego wcześniejszego projektu (zegarka z dekodera). Sterowaniem zależnościami czasowymi zajmuje się timer 0 w trybie licznika. Za każdym obiegiem pętli programowej sprawdzane są flagi oraz fakt wciśnięcia klawisza i przejście do menu.
Po włączeniu zasilania sterownik odczytuje z eepromu zaprogramowane nastawy i zaczyna pomiar temperatury. Pomiar jest wykonywany kilka razy na sekundę. Następnie na podstawie wartości ADC jest obliczana temperatura już w stopniach a po 15 pomiarach jest wyciągana średnia która następnie jest porównywana z zapisanymi wartościami i w zależności od jej wartości są sterowane wyjścia. Dodatkowo wprowadzona została 2 stopniowa histereza. Po wpięciu panela jest na nim wyświetlana aktualna wartość temperatury w formacie dwie cyfry znak stopnia i C. Przy liczbach większych niż 99 znak stopnia znika. Wciśniecie przycisku 2 pokazuje stan wyjść sterujących w formacie zer lub jedynek np 1000 oznacza aktywne wyjście 1 a 1010 aktywne 1 i 3 itd. Wciśniecie przycisku 3 pokazuje aktualna wartość ADC w formacie 0xxx.
Wciśniecie pierwszego przycisku wyświetla napis menu i następuje przejście w tryb ustawień - pokazuje się 1020 - wyjście 1 i możemy przyciskami +/- ustawić temperaturę która powoduje aktywacje wyjścia. Możliwe nastawy 0 lub zakres 20-101stopni. Po ustawieniu wciskamy znowu pierwszy klawisz i pokazuje się 2020 itd aż do 4. Jeżeli ustawimy 0 stopni kanał jest nie aktywny, a w widoku aktywnych kanałów jest kreska (zamiast 0 lub 1). Potem pokazuje się napis ON lub OFF -jest to opcja uruchomienia specjalnego trybu bezpiecznego chłodzenia - jeżeli układ wykryje uszkodzenie w obwodzie czujnika pomiarowego tzn przerwę lub zwarcie czyli wartości wyjdą po za zakresy domyślne na dłużej niż 3 sekundy automatycznie aktywuje WSZYSTKIE wyjścia( w tym te dezaktywowane) w celu ochrony silnika przed przegrzaniem. Na ten czas jest wyświetlany na wyświetlaczu komunikat cool fail. Po "powrocie" czujnika i 3 sekundach poprawnych odczytów wróci do normalnej pracy i aktywuje wyjścia w oparciu o aktualną temperaturę. Po kolejnym wciśnięciu przycisku pokazuje się END i układ zapisuje dane do eepromu i rozpoczyna normalna prace.
Jest to pierwsza wersja tego urządzenia. Z tym ze jeżeli sprawdzi się po odpaleniu silnika to zostaje gdyż ciężko przewidzieć na obecna chwile jak będzie to pracowało w środowisku pełnym zakłóceń( rozdzielacz zapłonu jest mechaniczny do tego dochodzi prostowanie prądu na diodach w alternatorze) oraz wysokiej i niskiej temperatury - pod maska może być około 80-90 stopni ponieważ żeliwne silniki grzeją się jak reaktory atomowe;) Jeżeli okaże ze będą problemy to kolejna wersja zostanie zainstalowana w kabinie bądź obok komputera sterującego w specjalnej fabrycznej kieszeni. Na pewno będzie już wyposażona w lepsze odniesienie napięcia pomiarowego na TL431 i zapewne LCD. Timer 2 jest zostawiony do wersji przyszłościowych i sterowania PWM gdyby była taka potrzeba. Wrzuciłem również kilka zdjęć ze swapu dla ewentualnie zainteresowanych montażem amerykańskiej technologi w niemieckim nadwoziu. Generalnie jest to dopiero w jakiś 50 % zrobione jeżeli chodzi o mechanikę ale projekt pomału drobnymi kroczkami idzie na przód gdyż problemów takich jak budowa sterownika jest jeszcze kilka...
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Program do poprawnego działania wymaga biblioteki I2C z blubooka i funkcji wyliczającej temperaturę z wartości przetwornika ADC której tutaj nie publikowałem. Wszystkie duże elementy i śruby są rzecz jasna zabezpieczone dodatkowo klejem. Sam sterownik nie jest jeszcze w 100 % zrobiony ponieważ na obecną chwile nie wiem jeszcze ile i jakich wentylatorów użyje docelowo w projekcie.
Zapomniałem tez podłączyć nie używanych pinów do VCC. Flaga 10_ms miała być początkowo użyta do sterowania tranzystorem ale ostatecznie zostawiłem ja na zaś