Silnik oczami programisty

December 22nd, 2016 No comments

Większość osób, które spotkałem i które jest w stanie odróżnić skrzynie biegów dwusprzęgłową od tej z sprzęgłem hydrokinetycznym, patrzy na silnik z zachwytem, szczególnie, gdy chodzi o V8+. Wielkie cylindry, moc, dźwięk…

Jako kierowca czuję przyjemność z jazdy.

Jako programista, patrząc na silnik widzę komputer, sensory, siłowniki, 200 kilo jakiegoś żelastwa, oraz ubogi interfejs użytkownika…

Komputer nazywa się “ectronic control unit” ECU. Komputer podejmuje decyzje o sterowaniu siłownikami, na podstawie odczytu z sensorów.

To nie jest zwyczajny komputer. Działa w nieprzyjemnym środowisku, gdzie jest albo jest zimno, albo gorąco, wilgotno lub sucho i na pewno niezbyt czysto. Komputer ten ma też dość sporo pracy, na przykład przy prędkości obrotowej silnika 4000RPM, komputer będzie musiał jakieś 30 razy na sekundę podejmować decyzje o ilości paliwa, która należy zapodać do każdego z cylindrów – i nie może się spóźnić. Dawkowanie paliwa, oraz sterowanie innymi częściami silnika, zależy od odczytów z sensorów – a tych jest całkiem sporo. Na przykład, w moim aucie, z 2004 roku, więc już nieco starym, mam takie sensory:

  • Obrotów silnika
  • Accelerator pedal position (napisałem z angielska, bo mój edytor tekstu nie lubi polskiego tłumaczenia)
  • Przełącznika kick down
  • Przełącznika trybu bezczynności
  • Wagi zassanego powietrza
  • Sondy lambda
  • Temperatury chłodziwa przed i za radiatorem
  • Temperatury paliwa
  • Ciśnienie powietrza w kolektorze i jego temperatury
  • Brake pedal switch
  • Składu paliwa
  • Hall sender (nie wiem jak to nazwać po Polsku, czujnik służy do wyrównywania obrotów silnika, w przypadku, gdy każdy tłok generuje inny moment obrotowy)
  • Czujnika wysokości

Sensory te, też nie mają lekkiego życia. Warto dodać, że sensory przekazują do komputera sygnał analogowy (przynajmniej cześć sensorów w moim aucie), sygnał analogowy, – czyli napięcie, które przetwarzane jest przez ECU na wartość numeryczną, być może poprzez porównanie go z innymi napięciem. Warunki pracy sensorów, oraz przetwornika AC wpłyną na pewno na powstanie błędów odczytów z sensorów, które programista ECU musiałby uwzględnić.

Na podstawie odczytów z sensorów komputer steruje:

  • Wtryskami paliwa
  • Zaworem EGR
  • Klapą kolektora dolotowego
  • Zaworem sterującym chłodzeniem gazów EGR
  • Ogrzewaniem sondy lambda
  • Pompą paliwa
  • Wirnikami turbosprężarek
  • Świecami żarowymi
  • Zaworem elektro-hydraulicznego mocowania silnika (właśnie tym się pocieszam, gdy wyprzedza mnie jakiś dostawczak)
  • Przełącznikiem małego i dużego obiegu chłodniczego
  • Pompą wspomagającą chłodzenie silnika po wyłączeniu

Część z tych siłowników jest binarnych, np.: pompa wspomagająca chłodzenie silnika może być włączona lub wyłączona, inne siłowniki mogą mieć wartości pośrednie.

To wszystko jest dość skomplikowane. Nie wiem, czy potrafiłbym napisać dobry program do ECU (i trudno mi to mówić, bo moje EGO programistyczne mogłoby się wozić się Q7). Dlatego podziwiam tunerów, – którzy bez kodów źródłowych potrafią zmodyfikować oprogramowanie komputera, tak by wyciągnąć z silnika więcej mocy i jeszcze zredukować spalania.

W przyszłości napiszę o zależnościach pomiędzy niektórymi sensorami a działaniem silnika.

Categories: Zupełnie inne Tags:

Powietrze

December 10th, 2016 No comments

Kilka miesięcy temu samochód mojej żony stracił moc. Podjechałem do mechanika, który pogrzebał coś palcem w silniku, i autko dostało właściwego kopa. Przyczyną był zawór EGR.

Postanowiłem dowiedzieć się więcej o tym jak działa zawór EGR. Zacząłem od YouTube: https://www.youtube.com/watch?v=DwmuACE0Wkg&t=444s. Dowiedziałem się, że sporo osób zamiast naprawiać EGR i DPF robi chip-tuning silnika, chwaląc się większą mocą i niższym zużyciem paliwa. To pogłębiło moją dociekliwość, gdyż wydawało mi się, że spalanie jest proporcjonalne do mocy. Zainteresowałem się więc też, chip-tuningiem.

Dobrałem się z komputerkiem do auta mojej żony. Niestety, mój prosty komputerek, nie pokazuje procentowego EGR, czyli ile procent spalin jest w powietrzu, które pompuje silnik. Mam za to informację z czujnika MAF, mierzącego ilość powietrza, które zasysa silnik oraz RPM, czyli liczbę obrotów na sekundę.

Długo nie mogłem uwierzyć w rezultaty pomiarów. Podejrzewałem błąd sensora MAF lub komputerek diagnostyczny. Jednak one działają raczej poprawnie.

W aucie mojej żony jest silnik 1.7CDTI. Na wolnych obrotach, silnik kręci się z prędkością 750 obrotów na minutę. Silnik jest czterosuwowy, czyli silnik pompuje 11 litrów powietrza na sekundę (turbo na wolnych obrotach nie pracuję): https://www.wolframalpha.com/input/?i=1.7+%2F+2+*+750+%2F+60

Tymczasem MAF pokazuje średnio 6g/sekundę, co daje 5 litrów powietrza na sekundę. (Jeden litr powietrza waży około 1.2 grama). Wniosek, brakujące 60% powietrza w silniku, gdy ten pracuje na wolnych obrotach, to spaliny.

To dużo. Wydaje mi się, że wiem, w jaki sposób chip-tuning może wpłynąć na zmniejszenie zużycia paliwa. Nie bardzo wierzę, że samo przeprogramowanie ECU jest może dać mniej paliwa i więcej mocy, gdy to było takie łatwe to na pewno producenci aut sami by to robili. Jeżeli podczas chip-tuning zablokujemy zawór EGR to silnik na wolnych obrotach będzie palił mniej, a w pewnym zakresie dolnych obrotów uzyska większą moc. Otóż, spaliny EGR, zanim trafią ponownie trafią do silnika są chłodzone, jednak nie zawsze udaje się ich schłodzić do temperatury powietrza. Do silnika trafia cieplejsze powietrze a to obniża jego sprawność: http://hyperphysics.phy-astr.gsu.edu/hbase/thermo/diesel.html, https://pl.wikipedia.org/wiki/Chłodnica_międzystopniowa

 

Categories: Zupełnie inne Tags:

W pogoni za marzeniami

December 5th, 2016 No comments

Marzy mi się prezent na pięćdziesiątkę. Powinien być szybki, i wygodny żebym mógł nim pojechać nad morze i bez bólu pleców stać w korkach. Powinien mieć silnik 12 cylindrów – dla zaspokojenia mojego ego. I powinien mieć turbo a najlepiej 2. Na przykład coś takiego.

Marzenie jest całkiem realne, do pięćdziesiątki jeszcze mi sporo brakuje, ceny W12 pewnie trochę spadną, a ja może znajdę odpowiednio zamęczony egzemplarz.

Gdy byłem mały to marzyło mi się auto zdalnie sterowane, takie z prawdziwego zdarzenia, albo w ogóle jakiekolwiek. Najważniejsze, żeby miało silnik spalinowy, bo tylko takie RC były dość szybkie.

Dziś jestem ojcem, i mogę spełniać swoje dziecięce marzenia. Kupiłem dla synka coś takiego (WL Toys A959) – jutro w końcu Mikołaj:

Trochę więcej niż zabawka, dużo mniej niż modelarstwo. Autko powinno bujać się do 50km/h i ma silnik krokowy do sterowania kątem skrętu kół. Całkiem nieźle driftuje.

Długo szukałem autka na Allegro, jednak w końcu kupiłem w sklepie on-line. Zaważyłem, że prawie w ogóle nie ma autek z napędem spalinowym. W kategorii modelarstwo tylko 10% autek jest z silnikiem spalinowym; od 800zł jest więcej, ale wciąż to tylko 30%. Jednak do 400zł nie ma żadnego autka spalinowego w ofercie.

Kiedyś autka spalinowe RC rządziły. Były marzeniem moim i pewnie wielu innych chłopców. Wtedy, silniki elektryczne – baterie, nie miały żadnych szans. Dziś, zdesperowany tatuś, może kupić autko RC, które po wyjęciu z pudełka bujnie się do 160km/h. Autko będzie przy tym wodo odporne, być może dużo trwalsze i na pewno prostsze w obsłudze niż silnik spalinowy. Po co więc, tatuś, miałby kupować zabawki z kłopotliwym silnikiem spalinowym…

Zastanawiam się, kiedy elektryczne auta zmienią motoryzacje? Być może, moje marzenie o 12 cylindrach, dwóch turbinach i 5 sekundach do setki nie będzie miało żadnego sensu.

 

 

 

 

Categories: Zupełnie inne Tags:

Czas na odjazd

December 1st, 2016 No comments

Od sześciu lat na blogu była pustka. Wcześniej zamieszczałem artykuły o programowaniu inspirowane moimi codziennymi problemami. Teraz jednak programuje w korporacji co wymaga przestrzegania reguł: nie powinienem pisać o pracy – programowaniu.

Będę więc pisał o autkach. Autka kręciły mnie zawsze, a teraz też kręcą mojego syna.

W motoryzacji dzieje się na dużo ciekawego a mi brakuje mi ludzi z którymi mógłbym o tym pogadać (syn ma dopiero 3 lata i bardzo trudno mi jest jemu wytłumaczyć jak, na przykład, działa sprzęgła hydrokinetyczne). Zmiany w motoryzacji nabierają tempa. Czy czeka nas rewolucja, podobna do Internetu?

Categories: Zupełnie inne Tags:

Jak usunąć wirusa na telefonie z Android

September 30th, 2015 No comments

Do dziś wydawało mi się, że telefony z Androidem w codziennym użyciu są bezpieczne od wirusów. Jednak na telefonie znajomego spotkałem coś takiego: http://www.securitybloggersnetwork.com/author/yulong-zhang/

Objawy były następujące: telefon wyświetlał reklamy, działał wolno, grzał się, ściągał jakieś dziwolągi z sieci, bateria rozładowała się szybko.

Zainstalowałem dwa typowe programy antywirusowe z Android Marketu. Obydwa programy pokazały wirusy, jednak nie potrafiły ich usunąć. Dodatkowo, jeden z programów antywirusowych poinformował mnie, że mój telefon działa w trybie “root”. Programy antywirusowe nie radziły sobie z usuwaniem wirusów z partycji /system – partycji systemowej przeznaczonej dla producentów oprogramowania.

Postaram się napisać możliwie prostą instrukcję jak odwirusować telefon. Nie udzielam gwarancji, że zadziała, nie chcę też ponosić odpowiedzialności za problemy, gdy coś się nie powiedzie. Instrukcję piszę w dobrej wierze, jednak praca z telefonem w trybie “root” jest dla tego telefonu niebezpieczna. Korzystając z instrukcji ponosisz odpowiedzialność za sprzęt samemu.

W pierwszej kolejności zainstalowałem Android SDK. W skład SDK wchodzi polecenie adb.exe. Telefon trzeba przestawić w tryb programisty, na przykład korzystając z instrukcji: http://www.greenbot.com/article/2457986/how-to-enable-developer-options-on-your-android-phone-or-tablet.html

Po instalacji SDK możemy sprawdzić czy działa debugowania telefonu “adb devices”

adb.exe devices

List of devices attached

0123456789ABCDEF device

 

Jeżeli nasz telefon w trakcie pracy wirusa przełączył się do trybu “root”, to wykonując polecenie “adb shell” zobaczymy znak # – krzyżyk. W przeciwnym wypadku – normalny tryb pracy zobaczymy $ – dolara.

adb.exe shell

root@QUASAR:/ #

Trzeba przejrzeć zawartość folderu /system/app. Przeglądając daty plików znajdziemy podejrzane aplikacje. W moim przypadku pliki fabryczne były z datą 2014, pliki podejrzane z datą 2015. (Na moim komputerze mam jeszcze zainstalowanego grep http://gnuwin32.sourceforge.net/packages/grep.htm lub Cygwin).

adb.exe shell ls -l /system/app | grep 2015

-rw-r–r– root root 1626485 2015-09-14 10:39 27.apk

-rw-r–r– root root 1024535 2015-08-12 07:19 BackupTool.apk

-rw-r–r– root root 1759953 2015-07-06 19:53 HTMLViewer.apk

-rwxr-xr-x root root 24751 2015-06-26 15:30 SettingProvider.apk

-rw-r–r– root root 188747 2015-09-22 12:39 Sync.apk

-rwsr-sr-x root root 215557 2015-09-08 07:15 ThemeManags.apk

-rw-r–r– root root 53760 2015-07-22 13:34 android.service.apk

-rwsr-sr-x root root 486930 2015-09-08 07:14 cameraupdate.apk

-rwxrwxrwx root root 225771 2015-09-09 06:55 com.android.hardware.ext0.apk

-rwxrwxrwx u0_a101 u0_a101 559775 2015-09-08 07:15 com.android.wp.net.log.apk

-rwxr-xr-x u0_a97 u0_a97 198363 2015-09-08 07:15 providerCertificate.apk

 

Teraz możemy przystąpić do usuwanie niechcianych aplikacji. Lepiej jednak nie zepsuć partycji /system. Dlatego zamiast usuwać aplikację bezpośrednie przeniosą je do innego katalogu. Polecenie remount może nie być potrzebne.

adb.exe remount

adb.exe shell mkdir /system/bad

adb.exe shell mv /system/app/27.apk /system/bad/

 

Polecenie “mv” powtarzamy dla podejrzanych aplikacji aż natrafimy na błąd braku dostępu.

adb.exe shell mv /system/app/ThemeManags.apk /system/bad/

failed on ‘/system/app/ThemeManags.apk’ – Operation not permitted

 

Niestety, zwykła zmiana uprawnień pliku poleceniem “chmod” nie działa. Potrzebne jest polecenie “chattr” którego nie ma standardowo na Androidzie. Jednak, wraz z wirusem polecenie to skrycie instaluje się na naszym systemie. Ja wytropiłem je w katalogu /system/xbin/ pod nazwą “.sys.apk”

adb.exe shell ls -la /system/xbin/

-rwsrwsrwx root root 16080 2015-09-08 07:14 .b

-rwxrwxrwx root root 9008 2015-09-08 07:14 .df

-rwsrwsrwx root root 34312 2015-09-08 07:14 .ext.base

-rwsrwsrwx root root 34368 2015-09-29 20:41 .ld.js

-rwsrwsrwx root root 15560 2015-09-29 20:41 .ls

-rwxrwxrwx root root 9956 2015-09-08 07:15 .sys.apk

-rwxr-xr-x root shell 13672 2014-08-28 16:31 BGW

-rwxrwxrwx root root 1075144 2015-07-06 19:53 busybox

-rwxr-xr-x root shell 80256 2014-08-28 16:30 dexdump

-rwxr-xr-x root shell 1314816 2014-08-28 16:31 libmnlp_mt6582

-rwxr-xr-x root shell 30268 2014-08-28 16:31 mnld

-rwxr-xr-x root shell 9464 2014-08-28 16:31 showmap

-rwsr-sr-x root root 356332 2015-07-06 19:53 su

-rwxr-xr-x root root 652900 2014-08-28 16:31 tcpdump

 

W tym katalogu jest więcej dobra, które pochodzi od twórców wirusa – zwracam uwagi na datę.

Korzystając z polecenia “chattr” ukrytego pod nazwą “.sys.apk” możemy zmienić atrybuty plików na nie będące niezmienne (not immutable) i następnie usunąć niechciane pliki.

adb.exe shell /system/xbin/.sys.apk -a -i /system/app/ThemeManags.apk

adb.exe shell mv /system/app/ThemeManags.apk /system/bad/

 

W katalogu /system/etc/ czai się też coś złowrogiego:

adb.exe shell ls -la /system/etc/ | grep 2015

-rwxr-xr-x root root 53093 2015-09-29 21:41 install-recovery.sh

 

Ten plik jest zmieniany przez wirusa. W moim konkretnym przypadku, został on utworzony całkowicie od zera, więc mogę go po prostu usunąć. Wirus dopisuje się do tego pliku począwszy od linii “/system/bin/daemonnis –auto-daemon &”. Należy usunąć z tego pliku wszystko, co jest za wskazaną linią łącznie z nią. Można to zrobić korzystając z poleceń:

adb.exe shell /system/xbin/.sys.apk -a -i /system/etc/install-recovery.sh

adb.exe pull /system/etc/install-recovery.sh
adb.exe push install-recovery.sh /system/etc/

Zmieniamy atrybuty pliku, ściągamy pliku na dysk komputera (poleceniem pull), edytujemy plik w notatniku, usuwamy niechcianą zawartość i wgrywamy go ponownie do telefonu (poleceniem push).

Mam nadzieję, że podana instrukcja jest pełna.

 

 

 

Categories: Zupełnie inne Tags:

Szczegóły patentu Twittera

March 20th, 2013 No comments

Przeczytałem dziś na WP, że Twitter dostał patent na Twittera. Patent jest całkiem nowy, i na razie ciężko jest go znaleźć gdziekolwiek poza USPTO (dość nie przyjemną stroną do czytania). Zastrzeżenia są dość precyzyjne:

Spróbuję je uprościć. Pierwszy użytkownik zapisuje się na wiadomości od drugiego użytkownika. Drugi użytkownik wysyła wiadomość, która cechuje się tym że nie ma adresata. Tworzona jest lista odbiorców wiadomości, na której znajduje się pierwszy użytkownik. Wiadomość jest następnie poddawana działaniu reguł i odpowiednio formatowana dla każdego z odbiorców i rozgłaszana. Są to rzeczywiście dość szeroko sformułowane zastrzeżenia patentowe. Drugie zastrzeżenie patentu, bardziej szczegółowe, tłumaczy co to jest odpowiedni format:

2. The method of claim 1, wherein the first format is one selected from a group consisting of short message service, instant message, e-mail, web form input, and application program interface function call, wherein the appropriate formats of the endpoints comprise at least one selected from a group consisting of short message service, instant message, e-mail, web form output, and application program interface function call, and wherein the appropriate formats are different from the first format.

Reguły wyjaśnione są w opisie na przykładach:

For example, if a recipient specified that it wanted to receive at most 10 e-mails per day, the rules module would determine if this daily threshold has been reached. If it has been, then the message would not be sent by e-mail, and the rules module would remove the e-mail destination address for that recipient for this message.

Można więc, byłoby powiedzieć że Twitter opatentował cos takiego: (1) zapisanie się, (2) wysłanie wiadomości bez adresata, (3) utworzenie listy odbiorców, (4) uruchomienie reguł, (5) przeformatowanie i (6) wysyłka.

Categories: Zupełnie inne Tags:

WordPress – upload

March 14th, 2013 No comments

Trochę niespodziewanie namęczyłem się, próbując zmusić wordpress do zapisywania plików w katalogu wp-content/uploads. Zawiodło

chmod 777, chown www-data, chgrp www-data, php_admin_value safe mode. 
Przyczyną była źle ustawiona wartość w bazie danych, w tabeli wp_options. Z

mysql> select * from wp_options where option_name='upload_path';
+-----------+-------------+-------------------------------------------------+----------+
| option_id | option_name | option_value                                    | autoload |
+-----------+-------------+-------------------------------------------------+----------+
|        60 | upload_path | /…/…/ftp/wordpress/wp-content/uploads           | yes      |
+-----------+-------------+-------------------------------------------------+----------+
 

Categories: Zupełnie inne Tags:

Najpierw iGoogle a teraz jeszcze Reader

March 14th, 2013 No comments

Co się dzieje z tym Google. Pół roku temu ogłosili koniec iGoogle, teraz chcą zamknąć Google Reader. Może to z zemsty za +?

Categories: Zupełnie inne Tags:

No to po iGoogle

September 6th, 2012 1 comment

Właśnie się dowiedziałem, że iGoogle kończy swój żywot. Decyzji trudno się dziwić. Po co Google miało by wydawać pieniądze na system który nie zarabia. Smuci mnie to o tyle, że kilka lat temu zainwestowałem swój czas w aplikację przeznaczoną dla iGoogle. Później zainwestowałem swój czas w sportowanie tej aplikacji na Google Wave (też jest już zamknięte). W przyszłości będę bardziej ostrożny w pisaniu aplikacji na platformy webowe.

Categories: Zupełnie inne Tags:

Tania kamerka na podczerwień do zabawy z OpenCV

March 10th, 2012 3 comments

Ostatnimi czasy biblioteka OpenCV stałą się bardzo popularna. OpenCV to punkt zaczepienia dla każdego, kto chciałby rozpocząć dziś przygodę z komputerową analizą obrazu. OpenCV zawiera nie tylko narzędzia ułatwiające manipulację obrazem, lecz także przydatne algorytmy które robią magiczne sztuczki z obrazem. Z OpenCV łatwo jest znaleźć twarz w obrazie, wyznaczyć kontury przedmiotów, coś narysować lub policzyć. Dla mnie to jednak przede wszystkim zbiór wiedzy o przydatnych algorytmach wykorzystywanych w świecie obrazków.

OpenCV potrafi operować zdjęciami, filmami wideo z FFmpeg, lub obrazem z kamerki.

Duże pole do popisu daje podczerwień. Człowiek tego nie widzi, a komputer może. Na przykład Kinect widzi podczerwień i daje sporo zabawy. Problem w tym, że Kinect jest dość drogi.

Dlatego, do weekendowej zabawy z przetwarzaniem obrazu polecam kamerkę A4T EVO Smart View Cam. Kamerka rejestruje światło podczerwone, oraz widzialne, a dodatkowo ma diody na podczerwień. Kamerka kosztuje tyle, co inne webcamy dostępne na rynku. Że tak powiem, kamerka widzi w ciemności. W połączeniu z przetwarzaniem obrazu otwiera nowe pole do popisu dla zdolnych programistów.

Do czego użyć kamerki na podczerwień i OpenCV pozostawiam Waszej fantazji. Miłego kodowania!

 

Categories: Zupełnie inne Tags: