Motosterownik czyli 4w1
: 24.01.2012, 11:33
Po zakupie Trampka stwierdziłem, że brakuje mi kilku rzeczy, które miałem w poprzednim sprzęcie (albo które mnie wtedy nie dotyczyły ze względu na inną konstrukcję napędu).
Szybkie podsumowanie i wyszło, że trampiszonowi przydałby się:
1. Termometr
2. Woltomierz
3. Sterowanie grzanymi manetkami
4. Sterowanie olejarką
Wszystko da się dokupić i zamontować ale parę miesięcy temu zafascynowałem się programowaniem mikrokontrolerów AVR i postanowiłem zmierzyć się z tematem.
Od razu zaznaczę, że nie wiem czy projekt finalnie powstanie i będzie działał - ten temat to poniekąd swego rodzaju motywator do dalszych prac.
Generalnie sterownik będzie się składał z wyświetlacza LCD 2 wiersze po 16 znaków na którym będzie wyświetlana aktualna temperatura, napięcie aku, procent grzania manetek i czas otwarcia zaworu olejarki.
Do tego będą 4 diody LED sygnalizujące niską temperaturę, zbyt niskie lub zbyt wysokie napięcie, grzanie manetek i tryb pracy olejarki.
Sterowanie czasem otwarcia zaworu olejarki i poziomem grzania manetek będzie zrobione na 2 potencjometrach. No i na koniec jeszcze 3 pozycyjny przełącznik do trybu olejarki (dłuższe odstępy pomiędzy otwarciem zaworu, krótsze odstępy, wyłączona).
Pierwotnie wartości temperatury czy napięcia miały być zaszyte na sztywno w kodzie procesora ale im dłużej pracowałem nad rozwiązaniem tym bardziej dochodziłem do wniosku, że ciężko będzie jednoznacznie ustalić np. próg napięcia (wystarczy spojrzeć na wątek dot. kontrolki ładowania - jedni chcą 15.5V, inni 16V, itp.). Kolejne kilka/naście/ godzin kodowania i ... dorobiłem menu gdzie można sobie definiować te wartości.
W każdym razie jeśli chodzi o funkcjonalność to:
ad. 1 - Temperatura
Pomiar z dokładnością do 0.5st C i rozdzielczością 0.1st C. Wyświetlanie na LCD aktualnej wartości temperatury. Sygnalizacja migającą diodą zbyt niskiej temperatury - próg ustawiany w menu od wartości 0st. do 10st. (zakres progów mogę zmienić ale muszę je zaszyć na sztywno w kodzie - teoretycznie można dać dowolny zakres ale uważam, że to bez sensu i lepiej od razu ograniczyć).
Domyślna wartość progu to 2st. C.
ad. 2 - Woltomierz
Pomiar z dokładnością ok. 0.1-0.2V (ciężko mi to dokładnie zweryfikować). Wyświetlanie na LCD aktualnego napięcia. Sygnalizacja migającą dwukolorową diodą LED zbyt niskiego lub zbyt wysokiego poziomu napięcia (dla napięcia pomiędzy tymi wartościami dioda jest wyłączona - napięcie można sprawdzić na wyświetlaczu LCD).
Tak samo jak w przypadku temperatury możliwość ustawienia dolnego i górnego poziomu z dokładnością do 0.1V.
Dolny próg będzie mógł być ustawiony w zakresie od 10 do 13V, górny od 14.5 do 18V. Oczywiście ustawia się jedną wartość z takiego zakresu i jeśli zmierzone napięcie będzie mniejsze/większe od ustawionego progu to zacznie odpowiednio migać dioda LED. Czyli ustawienie górnego na 15V spowoduje, że dioda będzie migać i dla 15.1V i dla 20V.
Domyślna wartość dolnego progu to 12V, górnego to 15.5V.
ad. 3 - Sterowanie grzanymi manetkami
Tu w sumie prosta sprawa - sterowanie w zakresie od 0 do 100% ze skokiem co 5%. Zrobiłem pierwotnie co 1% ale to bez sensu - nie wiem czy wręcz nie zrobię skoku co 10% ale chwilowo nie mam grzanych manetek żeby to przetestować. Wartość grzania wyświetlana na LCD i dodatkowo po włączeniu manetek zapala się dioda LED.
ad. 4 - Sterowanie olejarką
Oczywiście chodzi o sterowanie elektrozaworem od olejarki "grawitacyjnej" czyli takiej jak większość konstrukcji DIY.
Jest to w sumie największy moduł i najbardziej zaawansowany jeśli chodzi zarówno o stronę programistyczną jak i możliwości.
Sterowanie odbywa się dwupoziomowo.
Po pierwsze przełącznikiem wybieramy tryb (0, 1, 2) gdzie 0 - olejarka wyłączona, 1 - tryb gdzie elektrozawór będzie rzadziej otwierany i 2 - częstsze otwieranie elektrozaworu. Tryb pracy pokazuje 3-kolorowa dioda LED.
Druga sprawa to czas otwarcia elektrozaworu ustawiany potencjometrem. Czas otwarcia pokazywany jest na wyświetlaczu LCD. Można ustawić wartość od 0.2s do 5s otwarcia zaworu. Jeśli dobrze pamiętam to można będzie skonfigurować ten czas w menu ale akurat teraz nie jestem tego pewien.
Tryb 1 domyślnie otwiera zawór co 60s. W menu będzie możliwość zmiany tego parametru od 30 do 180s.
Tryb 2 domyślnie otwiera zawór co 30s. Możliwość zmiany konfiguracji w zakresie od 10 do 120s (czyli w skrajnych przypadkach można zmienić wręcz zasadę, że tryb 1 otwiera częściej zawór niż tryb 2).
Dodatkowo będzie wyprowadzenie na czujnik luzu i w przypadku wykrycia luzu wstrzymywana jest praca olejarki (jeśli wrzuciliśmy luz w trakcie otwarcia zaworu to zawór się zamyka od razu i po wrzuceniu biegu otwiera się ponownie na czas jaki mu pozostał, jeśli wrzucimy w momencie przerwy pomiędzy otwarciami zaworu to po prostu wydłużamy ten czas - mam nadzieję, że w miarę jasno to opisałem).
Dla bezpieczeństwa samo otwarcie zaworu dodatkowo sygnalizowane jest zapaleniem się diody LED (żeby się nie zastanawiać czy olejarka działa czy nie).
Zastanawiałem się nad dopięciem się do czujnika prędkościomierza ale na tym etapie z tego zrezygnowałem - czujnik luzu jest na tyle uniwersalny, że będzie działał nie tylko w Trampku ale w praktycznie dowolnym innym sprzęcie.
EDIT: właśnie skojarzyłem, że przecież dodałem jeszcze jedną funkcję czyli zależność od temperatury. Wiadomo, że przy wyższych temperaturach olej robi się rzadszy więc taki sam czas otwarcia zaworu powoduje, że leci więcej oleju a to oznacza w większości zachlapanie felgi (tak mi się wydaje - nie jeździłem nigdy z takim smarowaniem - wnioski wyciągnięte na podstawie opinii na różnych forach motocyklowych).
Jeśli dobrze pamiętam (teraz nie mam dostępu do sterownika) to dałem 2 progi temperaturowe i 2 czasy o ile ma być wydłużony czas pomiędzy otwarciami zaworu. Oczywiście każdy tryb pracy olejarki ma osobno definiowane progi i dodatkowe czasy.
Przykład żeby to lepiej zrozumieć: dla trybu 1 (domyślne otwarcie zaworu co 60s) ustawiamy 25st. jako pierwszy próg i dodatkowy czas 20s, drugi próg na 32st. i dodatkowy czas 40s.
Olejarka dla temperatury otoczenia 24st. otwiera się co 60s na czas ustawiony potencjometrem. Przy 28st. otwiera się co 80s (60+20). Przy 33st. jest to co 100s (60+40) (czasy dodatkowe się nie sumują).
Progi temperaturowe i dodatkowe czasy można oczywiście ustawić w menu (teraz nie pamiętam zakresów ale to też jest do ustalenia). Domyślnie progi będą ustawione na 25 i 32st. ale czas = 0 żeby nie miał wpływu na działanie (przekroczenie progu temp. nie spowoduje wydłużenia czasu pomiędzy otwarciem zaworu).
Aha - jeszcze w celu napełnienia przewodów olejarki olejem zazwyczaj trzeba strasznie kombinować i "wstrzeliwać" się w czas otwarcia zaworu (albo czekać bardzo długo po pierwszym napełnieniu). W menu dodana jest opcja stałego otwarcia zaworu właśnie w celu prostszego napełnienia układu olejem.
"Chodzenie" po menu jest trochę pokrętne i wymaga chwili przyzwyczajenia bo nie ma żadnych przycisków. Poruszamy się za pomocą 2 potencjometrów i przełącznika trybu olejarki (chciałem ograniczyć ilość elementów). Wejście do menu powoduje wstrzymanie działania sterownika (nie działa olejarka, nie działają manetki, itp.).
Dla osób, które za bardzo namieszają w ustawieniach istnieje możliwość przywrócenia ustawień domyślnych.
Zmiany wartości poszczególnych parametrów oczywiście są zapamiętywane w pamięci EPROM więc nawet całkowite odłączenie zasilania nie powoduje konieczności ich ponownego wprowadzania (zresztą zamysł jest taki, żeby sterownik podpinać do instalacji przez przekaźnik tak żeby włączał się dopiero po przekręceniu stacyjki).
Ze względów gabarytowych nie udało mi się zmieścić modułu wykonawczego sterującego manetkami i zaworem olejarki więc będzie to osobna puszka do umieszczenia gdzieś pod siedzeniem. W sumie to nawet i lepiej bo manetki biorą jakieś 50-60W więc kable musiałyby być grubsze.
Obudowa niestety wyszła wielkości większej paczki papierosów czyli: 90x60x27mm. Takiej ilości sprzętu nie da się upchnąć na mniejszej powierzchni nawet korzystając z elementów SMD (lutowanie powierzchniwe takie jak jest np. w płytach głównych w komputerach czy innych nowoczesnych urządzeniach).
Aktualny status wygląda tak, że mam zrobiony projekt płytki drukowanej, partyzancko wykonaną obudowę, napisane praktycznie 99% kodu programu (brakuje tylko zabezpieczenia przy zawieszeniu się procka).
Jeśli dobrze pójdzie to w tym tygodniu zrobię płytkę i polutuję elementy.
Do dorobienia jest moduł wykonawczy do manetek i sterowania elektrozaworem (tu mam na razie wyłącznie koncepcję, której jeszcze nie sprawdzałem czy zadziała - ale takich konstrukcji jest sporo więc na tym etapie się tym nie martwię).
Ostatnio prototyp wyglądał tak:
Na wyświetlaczu (kolor dopasowany pod kolor wyświetlacza w XL700 ) widać właśnie napięcie (U), temperaturę (T), manetki (M) i czas otwarcia zaworu olejarki (O). Obok obudowa z wyciętymi otworami (jeszcze bez panela przedniego).
W tle zmontowany "na pająka" układ - to wszystko muszę upchnąć w obudowę .
A tak wygląda pierwsza wersja płytki (teraz już nieaktualna bo dodałem obsługę czujnika luzu) wykonana własnoręcznie metodą chałupniczą (w sumie moja pierwsza płytka zrobiona od czasu skończenia szkoły średniej czyli od ponad 17 lat ).
Co do samego projektu - jeśli ktoś będzie zainteresowany i ma smykałkę do lutowania to mogę udostępnić projekt płytki, schemat i "wkład" do procesora - ew. mogę zaprogramować procesor jeśli ktoś mi go dostarczy (pod warunkiem, że taka osoba nie będzie chciała na tym zarabiać tylko złoży na swój użytek albo za przysłowiowe piwo zmajstruje komuś znajomemu).
Sam na ten moment raczej nie zamierzam składać tego na sprzedaż (może kiedyś zmienię zdanie - na razie jestem zbytnim amatorem jeśli chodzi o takie konstrukcje - jakby nie patrzeć to moja pierwsza tego typu konstrukcja).
Komentarze mile widziane. Sensowności projektu proszę nie komentować (robię to bo tak jak napisałem na początku cholernie spodobały mi się możliwości takich mikroprocesorów a najlepiej jest się uczyć na podstawie czegoś konkretnego).
Jeśli na forum jest ktoś obeznany z elektroniką to chętnie bym podesłał schemat układu do konsultacji
Szybkie podsumowanie i wyszło, że trampiszonowi przydałby się:
1. Termometr
2. Woltomierz
3. Sterowanie grzanymi manetkami
4. Sterowanie olejarką
Wszystko da się dokupić i zamontować ale parę miesięcy temu zafascynowałem się programowaniem mikrokontrolerów AVR i postanowiłem zmierzyć się z tematem.
Od razu zaznaczę, że nie wiem czy projekt finalnie powstanie i będzie działał - ten temat to poniekąd swego rodzaju motywator do dalszych prac.
Generalnie sterownik będzie się składał z wyświetlacza LCD 2 wiersze po 16 znaków na którym będzie wyświetlana aktualna temperatura, napięcie aku, procent grzania manetek i czas otwarcia zaworu olejarki.
Do tego będą 4 diody LED sygnalizujące niską temperaturę, zbyt niskie lub zbyt wysokie napięcie, grzanie manetek i tryb pracy olejarki.
Sterowanie czasem otwarcia zaworu olejarki i poziomem grzania manetek będzie zrobione na 2 potencjometrach. No i na koniec jeszcze 3 pozycyjny przełącznik do trybu olejarki (dłuższe odstępy pomiędzy otwarciem zaworu, krótsze odstępy, wyłączona).
Pierwotnie wartości temperatury czy napięcia miały być zaszyte na sztywno w kodzie procesora ale im dłużej pracowałem nad rozwiązaniem tym bardziej dochodziłem do wniosku, że ciężko będzie jednoznacznie ustalić np. próg napięcia (wystarczy spojrzeć na wątek dot. kontrolki ładowania - jedni chcą 15.5V, inni 16V, itp.). Kolejne kilka/naście/ godzin kodowania i ... dorobiłem menu gdzie można sobie definiować te wartości.
W każdym razie jeśli chodzi o funkcjonalność to:
ad. 1 - Temperatura
Pomiar z dokładnością do 0.5st C i rozdzielczością 0.1st C. Wyświetlanie na LCD aktualnej wartości temperatury. Sygnalizacja migającą diodą zbyt niskiej temperatury - próg ustawiany w menu od wartości 0st. do 10st. (zakres progów mogę zmienić ale muszę je zaszyć na sztywno w kodzie - teoretycznie można dać dowolny zakres ale uważam, że to bez sensu i lepiej od razu ograniczyć).
Domyślna wartość progu to 2st. C.
ad. 2 - Woltomierz
Pomiar z dokładnością ok. 0.1-0.2V (ciężko mi to dokładnie zweryfikować). Wyświetlanie na LCD aktualnego napięcia. Sygnalizacja migającą dwukolorową diodą LED zbyt niskiego lub zbyt wysokiego poziomu napięcia (dla napięcia pomiędzy tymi wartościami dioda jest wyłączona - napięcie można sprawdzić na wyświetlaczu LCD).
Tak samo jak w przypadku temperatury możliwość ustawienia dolnego i górnego poziomu z dokładnością do 0.1V.
Dolny próg będzie mógł być ustawiony w zakresie od 10 do 13V, górny od 14.5 do 18V. Oczywiście ustawia się jedną wartość z takiego zakresu i jeśli zmierzone napięcie będzie mniejsze/większe od ustawionego progu to zacznie odpowiednio migać dioda LED. Czyli ustawienie górnego na 15V spowoduje, że dioda będzie migać i dla 15.1V i dla 20V.
Domyślna wartość dolnego progu to 12V, górnego to 15.5V.
ad. 3 - Sterowanie grzanymi manetkami
Tu w sumie prosta sprawa - sterowanie w zakresie od 0 do 100% ze skokiem co 5%. Zrobiłem pierwotnie co 1% ale to bez sensu - nie wiem czy wręcz nie zrobię skoku co 10% ale chwilowo nie mam grzanych manetek żeby to przetestować. Wartość grzania wyświetlana na LCD i dodatkowo po włączeniu manetek zapala się dioda LED.
ad. 4 - Sterowanie olejarką
Oczywiście chodzi o sterowanie elektrozaworem od olejarki "grawitacyjnej" czyli takiej jak większość konstrukcji DIY.
Jest to w sumie największy moduł i najbardziej zaawansowany jeśli chodzi zarówno o stronę programistyczną jak i możliwości.
Sterowanie odbywa się dwupoziomowo.
Po pierwsze przełącznikiem wybieramy tryb (0, 1, 2) gdzie 0 - olejarka wyłączona, 1 - tryb gdzie elektrozawór będzie rzadziej otwierany i 2 - częstsze otwieranie elektrozaworu. Tryb pracy pokazuje 3-kolorowa dioda LED.
Druga sprawa to czas otwarcia elektrozaworu ustawiany potencjometrem. Czas otwarcia pokazywany jest na wyświetlaczu LCD. Można ustawić wartość od 0.2s do 5s otwarcia zaworu. Jeśli dobrze pamiętam to można będzie skonfigurować ten czas w menu ale akurat teraz nie jestem tego pewien.
Tryb 1 domyślnie otwiera zawór co 60s. W menu będzie możliwość zmiany tego parametru od 30 do 180s.
Tryb 2 domyślnie otwiera zawór co 30s. Możliwość zmiany konfiguracji w zakresie od 10 do 120s (czyli w skrajnych przypadkach można zmienić wręcz zasadę, że tryb 1 otwiera częściej zawór niż tryb 2).
Dodatkowo będzie wyprowadzenie na czujnik luzu i w przypadku wykrycia luzu wstrzymywana jest praca olejarki (jeśli wrzuciliśmy luz w trakcie otwarcia zaworu to zawór się zamyka od razu i po wrzuceniu biegu otwiera się ponownie na czas jaki mu pozostał, jeśli wrzucimy w momencie przerwy pomiędzy otwarciami zaworu to po prostu wydłużamy ten czas - mam nadzieję, że w miarę jasno to opisałem).
Dla bezpieczeństwa samo otwarcie zaworu dodatkowo sygnalizowane jest zapaleniem się diody LED (żeby się nie zastanawiać czy olejarka działa czy nie).
Zastanawiałem się nad dopięciem się do czujnika prędkościomierza ale na tym etapie z tego zrezygnowałem - czujnik luzu jest na tyle uniwersalny, że będzie działał nie tylko w Trampku ale w praktycznie dowolnym innym sprzęcie.
EDIT: właśnie skojarzyłem, że przecież dodałem jeszcze jedną funkcję czyli zależność od temperatury. Wiadomo, że przy wyższych temperaturach olej robi się rzadszy więc taki sam czas otwarcia zaworu powoduje, że leci więcej oleju a to oznacza w większości zachlapanie felgi (tak mi się wydaje - nie jeździłem nigdy z takim smarowaniem - wnioski wyciągnięte na podstawie opinii na różnych forach motocyklowych).
Jeśli dobrze pamiętam (teraz nie mam dostępu do sterownika) to dałem 2 progi temperaturowe i 2 czasy o ile ma być wydłużony czas pomiędzy otwarciami zaworu. Oczywiście każdy tryb pracy olejarki ma osobno definiowane progi i dodatkowe czasy.
Przykład żeby to lepiej zrozumieć: dla trybu 1 (domyślne otwarcie zaworu co 60s) ustawiamy 25st. jako pierwszy próg i dodatkowy czas 20s, drugi próg na 32st. i dodatkowy czas 40s.
Olejarka dla temperatury otoczenia 24st. otwiera się co 60s na czas ustawiony potencjometrem. Przy 28st. otwiera się co 80s (60+20). Przy 33st. jest to co 100s (60+40) (czasy dodatkowe się nie sumują).
Progi temperaturowe i dodatkowe czasy można oczywiście ustawić w menu (teraz nie pamiętam zakresów ale to też jest do ustalenia). Domyślnie progi będą ustawione na 25 i 32st. ale czas = 0 żeby nie miał wpływu na działanie (przekroczenie progu temp. nie spowoduje wydłużenia czasu pomiędzy otwarciem zaworu).
Aha - jeszcze w celu napełnienia przewodów olejarki olejem zazwyczaj trzeba strasznie kombinować i "wstrzeliwać" się w czas otwarcia zaworu (albo czekać bardzo długo po pierwszym napełnieniu). W menu dodana jest opcja stałego otwarcia zaworu właśnie w celu prostszego napełnienia układu olejem.
"Chodzenie" po menu jest trochę pokrętne i wymaga chwili przyzwyczajenia bo nie ma żadnych przycisków. Poruszamy się za pomocą 2 potencjometrów i przełącznika trybu olejarki (chciałem ograniczyć ilość elementów). Wejście do menu powoduje wstrzymanie działania sterownika (nie działa olejarka, nie działają manetki, itp.).
Dla osób, które za bardzo namieszają w ustawieniach istnieje możliwość przywrócenia ustawień domyślnych.
Zmiany wartości poszczególnych parametrów oczywiście są zapamiętywane w pamięci EPROM więc nawet całkowite odłączenie zasilania nie powoduje konieczności ich ponownego wprowadzania (zresztą zamysł jest taki, żeby sterownik podpinać do instalacji przez przekaźnik tak żeby włączał się dopiero po przekręceniu stacyjki).
Ze względów gabarytowych nie udało mi się zmieścić modułu wykonawczego sterującego manetkami i zaworem olejarki więc będzie to osobna puszka do umieszczenia gdzieś pod siedzeniem. W sumie to nawet i lepiej bo manetki biorą jakieś 50-60W więc kable musiałyby być grubsze.
Obudowa niestety wyszła wielkości większej paczki papierosów czyli: 90x60x27mm. Takiej ilości sprzętu nie da się upchnąć na mniejszej powierzchni nawet korzystając z elementów SMD (lutowanie powierzchniwe takie jak jest np. w płytach głównych w komputerach czy innych nowoczesnych urządzeniach).
Aktualny status wygląda tak, że mam zrobiony projekt płytki drukowanej, partyzancko wykonaną obudowę, napisane praktycznie 99% kodu programu (brakuje tylko zabezpieczenia przy zawieszeniu się procka).
Jeśli dobrze pójdzie to w tym tygodniu zrobię płytkę i polutuję elementy.
Do dorobienia jest moduł wykonawczy do manetek i sterowania elektrozaworem (tu mam na razie wyłącznie koncepcję, której jeszcze nie sprawdzałem czy zadziała - ale takich konstrukcji jest sporo więc na tym etapie się tym nie martwię).
Ostatnio prototyp wyglądał tak:
Na wyświetlaczu (kolor dopasowany pod kolor wyświetlacza w XL700 ) widać właśnie napięcie (U), temperaturę (T), manetki (M) i czas otwarcia zaworu olejarki (O). Obok obudowa z wyciętymi otworami (jeszcze bez panela przedniego).
W tle zmontowany "na pająka" układ - to wszystko muszę upchnąć w obudowę .
A tak wygląda pierwsza wersja płytki (teraz już nieaktualna bo dodałem obsługę czujnika luzu) wykonana własnoręcznie metodą chałupniczą (w sumie moja pierwsza płytka zrobiona od czasu skończenia szkoły średniej czyli od ponad 17 lat ).
Co do samego projektu - jeśli ktoś będzie zainteresowany i ma smykałkę do lutowania to mogę udostępnić projekt płytki, schemat i "wkład" do procesora - ew. mogę zaprogramować procesor jeśli ktoś mi go dostarczy (pod warunkiem, że taka osoba nie będzie chciała na tym zarabiać tylko złoży na swój użytek albo za przysłowiowe piwo zmajstruje komuś znajomemu).
Sam na ten moment raczej nie zamierzam składać tego na sprzedaż (może kiedyś zmienię zdanie - na razie jestem zbytnim amatorem jeśli chodzi o takie konstrukcje - jakby nie patrzeć to moja pierwsza tego typu konstrukcja).
Komentarze mile widziane. Sensowności projektu proszę nie komentować (robię to bo tak jak napisałem na początku cholernie spodobały mi się możliwości takich mikroprocesorów a najlepiej jest się uczyć na podstawie czegoś konkretnego).
Jeśli na forum jest ktoś obeznany z elektroniką to chętnie bym podesłał schemat układu do konsultacji