Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

GPIO - sterowanie klimatyzacją

tinware 31 Maj 2018 18:36 465 16
  • #1 31 Maj 2018 18:36
    tinware
    Poziom 9  

    Cześć,

    W ten dzisiejszy piękny letni dzień postanowiłem rozebrać swoją przenośną klimatyzację i podpatrzeć jak jest zbudowana, podejrzeć wygląd sprzężarki, skraplacza, parownika, panelu sterowania, sterownika, dróg wentylacyjnych itd. Skręcając ją postanowiłem wyciągnąć panel od sterowania na zewnątrz obudowy, aby mięć do niego dostęp.

    GPIO - sterowanie klimatyzacją

    GPIO - sterowanie klimatyzacją

    GPIO - sterowanie klimatyzacją

    Chciałem zakupić np. raspberry pi i za pomocą pinów GPIO wpiąć się równolegle do tego panelu. Mogę zrobić to na dwa sposoby: 0/1 oddzielnymi przewodami na każdy switch, każdy segment wyświetlacza oraz każdą diodę led. W ten sposób mogę odczytywać lub wysyłać sygnał do sterowania - to potrafię, ale będzie mało profesionalnie, masa przewodów i nie wiem czy wystarczy pinów w mikro komputerze.

    Do podłączenia są następujące elementy:
    * 4 switche (tryb pracy, zimniej, cieplej, zasilanie)
    * 4 diody led (stan zasilania, aktualny tryb pracy - chłodzenie, wentylator, osuszanie powietrza)
    * 2 pozycje wyświetlacza 7-segmentowego (ósmy, czyli "kropka" w moim modelu klimatyzacji oznacza stan zasilania)

    Wygląda na to, że potrzebuję min. 22 piny wejść oraz wyjść. Chciałem podnieść poprzeczkę i wpiąć się w szynę pomiędzy panelem sterowania, a sterownikiem. Oba komponenty połączone są ze sobą przewodem 5-żył. Nie robiłem jeszcze pomiarów, ale domyślam się, że dwa z nich to zasilanie stałe plus i minus, kolejne dwa to transmisja danych, ostatni nie wiem.

    GPIO - sterowanie klimatyzacją

    GPIO - sterowanie klimatyzacją

    GPIO - sterowanie klimatyzacją

    Moje pytanie brzmi:
    Czy jest możliwe takie podłączenie w raspberry pi i jak to wykonać oraz jak odczytywać i sterować informacjami "z" oraz "na" szynę danych za pomocą terminala z shell-em Linuxa Debiana?

    P.S.: Z napisaniem programu sobię poradzę, zapewne postawie na PHP oraz JavaScript ;-)


    Edycja 1: Dodałem opis rozpoznania zasilania przy kości na wejściu płytki

    0 16
  • Sklep HeluKabel
  • Pomocny post
    #2 31 Maj 2018 21:00
    piterek-23
    Poziom 32  

    tinware napisał:
    Moje pytanie brzmi:
    Czy jest możliwe takie podłączenie w raspberry pi i jak to wykonać oraz jak odczytywać i sterować informacjami "z" oraz "na" szynę danych za pomocą terminala z shell-em Linuxa Debiana?

    Wszystko się da zrobić, ale na początek trzeba się dowiedzieć na czym jest oparta komunikacja sterownik-panel.

    0
  • Sklep HeluKabel
  • #3 31 Maj 2018 21:21
    tinware
    Poziom 9  

    Jasne. Powiedz mi, jak mogę to sprawdzić? Niestety, dość mało mam do czynienia z inżynierią elektroniki, więc mam tutaj problem

    0
  • Pomocny post
    #4 31 Maj 2018 21:57
    3029369
    Użytkownik usunął konto  
  • #5 31 Maj 2018 22:16
    tinware
    Poziom 9  

    Pong.Chu napisał:
    Podłączasz oscyloskop

    Niestety, nie posiadam oscyloskopu. Mam tylko multimetr. Czy jestem jeszcze w stanie to jakoś sprawdzić oprócz wygenerowania impulsu i odczytania go oscyloskopem?

    Rozpoznałem wstępnie kość na wejściu płytki:
    GPIO - sterowanie klimatyzacją

    0
  • Pomocny post
    #6 01 Cze 2018 09:26
    Samuraj
    Poziom 35  

    Sprawdź co to za duży układ nad złączem do panelu (biała płytka).
    Dobrze by było sprawdzić czy dwa wyprowadzenia z panelu są podłączone do tego układu.

    0
  • #7 01 Cze 2018 12:55
    tinware
    Poziom 9  

    tinware napisał:
    Mogę zrobić to na dwa sposoby: 0/1 oddzielnymi przewodami na każdy switch, każdy segment wyświetlacza oraz każdą diodę led.

    W pierwszym wątku napisałem nieprawdę. Wczoraj zrobiłem pomiary multimetrem. Cztery switche wysterowywane są za pomocą masy, sygnał 0/1 - i tutaj poradziłbym sobie z wysterowaniem. Zapewne musiałbym połączyć masy RPI z masą tego panelu, połączyć pin gpio z nogą switcha, następnie ustawić port jako wyjściowy, ustawić na nim masę, a po sekundzie ustawić go jako port wejściowy. Wydaje mi się, że ustawienie stanu wysokiego w celu "odkliknięcia" switcha mogłoby spowodować zwarcie lub fizycznie switch przestałby chodzić - miałby podawany wysoki stan z RPI.

    Niestety, w przypadku wyświetlacza oraz tych trzech diod led (cool, fan, dry) sygnał nie jest 0/1 - odczytuje tutaj różne wartości, nawet gdy np. dana dioda nie świeci. Sprawdziłem to aparatem fotograficznym, wszystkie te elementy migają, czyli są wysterowywane za pomocą, hmm częstotliwości?

    Pong.Chu napisał:
    może się okazać, że całe sterowanie jest w tym panelu, a wychodzą tylko sygnały sterujące np. silnik sprężarki.

    Też przez chwile miałem takie wrażenie, ale np. w funkcji osuszacza powietrza (dry) na wyświetlaczu podawana jest aktualna wartość temperatury otoczenia. Na tym panelu nie widzę żadnego elementu mierzącego temperaturę, zaś przy parowniku widzę jakiś czujnik, który podłączony jest do tej dolnej płytki. Wychodziłoby na to, że komunikacja jest obustronna.

    Przyglądając się temu bliżej mam wrażenie, że główniejszym sterownikiem jest jednak ten panel, a dolna płytka z przekaźnikami dostaje już gotowe informację kiedy załączać sprężarkę, wentylator itd.

    Samuraj napisał:
    Sprawdź co to za duży układ nad złączem do panelu (biała płytka).
    Dobrze by było sprawdzić czy dwa wyprowadzenia z panelu są podłączone do tego układu.

    Mam już skręconą obudowę całej klimatyzacji, aby dostać się do tej płytki trzeba wszystko rozebrać od nowa - zrobię to później.

    Może wracając na chwilę do pierwszej koncepcji - wpinania się w poszczególne elementy tego panelu, jak mógłbym odczytać wartość, która znajduję się aktualnie na wyświetlaczu oraz która z tych trzech diod aktualnie świeci? Sprawdziłem GPIO w RPI - mam 28 wejść i wyjść 0/1 ;)

    Dochodzę do wniosku, że mam do czynienia z wyświetlaczem multipleksowanym. U góry znajduje się 5 pinów, na dole również. W sytuacji, w której urządzenie jest w "standby" świeci się tylko kropka w pierwszym segmencie. Na górnych pięciu pinach jest +2.5V, na dolnych od lewej 1, 2 i 5 pin to +2.5V, a 3 i 4 pin skacze w okolicach +1V. Moje pytanie: czy będę w stanie wychwycić te zmiany za pomocą RPI i odczytać najpierw stan diod po lewej stronie, następnie liczbę z pierwszego segmentu, potem z drugiego.





    Podając +5V na poszczególne piny narysowałem pinologię tego układu, zostawiam to dla potomnych :)
    GPIO - sterowanie klimatyzacją

    Rozumiem, że muszę wykonać trzy odczyty jeden po drugim, gdy:
    1. Pin 1 oraz pin 2 mają 0V - odczytuję A, B, C - tryb pracy (cool, fan, dry)
    2. Pin 1 ma +5V, a pin 2 ma 0V - odczytuję A, B, C, D, E, F, DP - pierwsza liczba
    3. Pin 1 ma 0V, a pin 2 ma +5V - odczytuję A, B, C, D, E, F, DP - druga liczba
    ...następnie wykonać te 3 pomiary ponownie, aby sprawdzić czy żadna z wyświetlanych wartości nie uległa zmianie.

    P.S.:
    DP z pierwszego segmentu - świeci, gdy urządzenie jest w standby
    DP z drugiego segmentu - z tego co pamiętam gdy uruchomiona jest funkcja uśpienia po czasie lub uruchomienia po czasie

    I jeszcze to, czas na odczyt stanów GPIO:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    Wyniki:
    Cytat:
    Odczyt 1: 0.076
    Odczyt 2: 0.107
    Odczyt 3: 0.140
    Odczyt 4: 0.174
    Odczyt 5: 0.205
    Odczyt 6: 0.238
    Odczyt 7: 0.264
    Odczyt 8: 0.289
    Odczyt 9: 0.313
    Odczyt 10: 0.337


    Myślę, że poradzę sobie z odczytem, mam tylko pewną wątpliwość, czy podczas każdego jednorazowego pomiaru wynik będzie prawdziwy. Mam tutaj na myśli sytuację, w której coś się wyświetla i zmienia na inną wartość na wyświetlaczu, i czy GPIO pinów ABC nie wyłapie z pierwszego odświeżenia, i np. DEF już z drugiego odświeżenia po zmianie wartości?

    0
  • #8 03 Cze 2018 13:05
    tinware
    Poziom 9  

    Odczytałem nr. układu scalonego na płytce z panelem sterowania. Numer tego układu to SH79F161A.

    GPIO - sterowanie klimatyzacją

    Sprawdziłem również połączenia z gniazda do układu. Wszystkie idą przez rezystor, co również zaznaczyłem. Trzeci pin jest połączony do masy przez kondensator 100uF.

    GPIO - sterowanie klimatyzacją

    Do obsługi zakupiłem Orange Pi Zero:
    GPIO - sterowanie klimatyzacją
    Proszę Was o pomoc.

    0
  • Pomocny post
    #9 03 Cze 2018 13:11
    piterek-23
    Poziom 32  

    Wygląda, że to będzie RS232-TTL
    Trzeba by było "posłuchać" co się dzieje na linii.

    Uwaga.
    Twój klimatyzator działa prawdopodobnie z logiką 5V, a wszystkie Raspberry czy Orange mają logikę 3V3

    0
  • #10 03 Cze 2018 13:41
    tinware
    Poziom 9  

    piterek-23 napisał:
    Trzeba by było "posłuchać" co się dzieje na linii.

    Jak już wcześniej wspomniałem, nie posiadam oscyloskopu. Czy mogę zrobić to za pomocą Orange Pi?

    piterek-23 napisał:
    Twój klimatyzator działa prawdopodobnie z logiką 5V, a wszystkie Raspberry czy Orange mają logikę 3V3

    Dziękuję za cenną informację. Czyli odczyt i zapis się nie uda - zbyt wysoki poziom dla mikrokomputera - spali się?

    0
  • Pomocny post
    #11 03 Cze 2018 14:27
    piterek-23
    Poziom 32  

    tinware napisał:
    Jak już wcześniej wspomniałem, nie posiadam oscyloskopu. Czy mogę zrobić to za pomocą Orange Pi?

    Jeżeli jest to UART to można by spróbować się wpiąć konwerterem USB-UART (np. TAKI) pod sterownik i "posłuchać" co on tam gada ;)
    tinware napisał:
    Czyli odczyt i zapis się nie uda - zbyt wysoki poziom dla mikrokomputera - spali się?

    Wystarczy coś TAKIEGO jeżeli chcesz używać portów GPIO Orange

    0
  • #12 03 Cze 2018 14:50
    tinware
    Poziom 9  

    Według dokumentacji tego układu w panelu sterowania klimatyzacją można mieć do czynienia z dwoma rodzajami komunikacji: noga 19 i 20 tego układu może wskazywać na MISO/MOSI czyli komunikację SPI lub RXD/TXD czyli komunikację EUART - dobrze rozumiem?

    piterek-23 napisał:
    Jeżeli jest to UART to można by spróbować się wpiąć konwerterem USB-UART (np. TAKI) pod sterownik i "posłuchać" co on tam gada ;)

    Dlaczego proponujesz mi konwerter do usb, skoro Orange Pi Zero na nogach 8 i 10 posiada komunikację UART1, 11 i 13 posiada komunikację UART2 oraz 19, 21, 23 i 24 posiada komunikację SPI? Wybacz, jeśli pytanie niestosowne, ale nie jestem ekspertem od typów i rodzajów komunikacji. Czy nie można wpiąć się bezpośrednio ze sterownika klimatyzacji do odpowiednich goldpinów w mikrokomputerze? Jaka jest szansa, że znajdę tam informację odnośnie wyświetlanych wartości na wyświetlaczu i trybu pracy na diodach led, jeśli ta szyna danych schodzi przewodem do dolnej płyty, na której znajdują się tylko przekaźniki (zapewne od wentylatora, sprężarki)?

    Poprawiam się jeszcze z jednym wejściem w kostce. Co oznacza połączenie kondensatora 100 uF do masy?
    GPIO - sterowanie klimatyzacją

    0
  • #13 03 Cze 2018 20:19
    piterek-23
    Poziom 32  

    tinware napisał:
    Według dokumentacji tego układu w panelu sterowania klimatyzacją można mieć do czynienia z dwoma rodzajami komunikacji: noga 19 i 20 tego układu może wskazywać na MISO/MOSI czyli komunikację SPI lub RXD/TXD czyli komunikację EUART - dobrze rozumiem?

    Z tego co mi wiadomo (mogę się mylić) komunikacja SPI to: SCLK, MISO, MOSI, SS
    tinware napisał:
    Dlaczego proponujesz mi konwerter do usb, skoro Orange Pi Zero na nogach 8 i 10 posiada komunikację UART

    Przepraszam, mój błąd... myślałem, że chcesz kupić Orange Pi, a Ty już je masz ;)
    Poleciłem konwerter USB ponieważ jest tańszy niż Orange, a i do testów wystarczy. Z drugiej strony to taki konwerter powinien być w szufladzie elektronika/majsterkowicza.
    tinware napisał:
    Wybacz, jeśli pytanie niestosowne, ale nie jestem ekspertem od typów i rodzajów komunikacji.

    Ja też nie jestem ekspertem. Razem z Tobą sobie gdybam :D
    tinware napisał:
    Czy nie można wpiąć się bezpośrednio ze sterownika klimatyzacji do odpowiednich goldpinów w mikrokomputerze?

    Możesz, ale i tak musiałbyś mieć konwerter napięć, ponieważ sterownik działa (pradopodobnie) z logiką 5V, a Orange z logiką 3V3
    Gdyby udało się rozszyfrować komunikację to i tak pozostaje jeden, mały, wielki problem... komunikacja RS232 to komunikacja między dwoma urządzeniami, a tu byłyby trzy :(
    tinware napisał:
    Jaka jest szansa, że znajdę tam informację odnośnie wyświetlanych wartości na wyświetlaczu i trybu pracy na diodach led, jeśli ta szyna danych schodzi przewodem do dolnej płyty, na której znajdują się tylko przekaźniki (zapewne od wentylatora, sprężarki)?

    To jest dobre pytanie. Na drugiej płycie musi być też jakiś mikrokontroler.

    Co to za scalaki?
    GPIO - sterowanie klimatyzacją

    0
  • #14 03 Cze 2018 21:45
    tinware
    Poziom 9  

    piterek-23 napisał:
    Przepraszam, mój błąd... myślałem, że chcesz kupić Orange Pi, a Ty już je masz ;)

    Dokładniej to już je zamówiłem, ale fakt nie wspomniałem o tym wcześniej. Jak coś mam zdalny dostęp do raspberry pi, ale to nie jest środowisko produkcyjne, abym robił na nim jakieś potężne zmiany ;-)

    piterek-23 napisał:
    Z drugiej strony to taki konwerter powinien być w szufladzie elektronika/majsterkowicza.

    Zgodzę się, ale dla informatyka / programisty mam nadzieję, że wystarczy Orange Pi.

    piterek-23 napisał:
    tinware napisał:
    Czy nie można wpiąć się bezpośrednio ze sterownika klimatyzacji do odpowiednich goldpinów w mikrokomputerze?
    Możesz, ale i tak musiałbyś mieć konwerter napięć, ponieważ sterownik działa (pradopodobnie) z logiką 5V, a Orange z logiką 3V3

    Czyli bez oscyloskopu się nie obejdzie. Kurczę, to dosyć kosztowy zakup. Znalazłem coś bardzo taniego na Al****, ale widzę, że działa do częstotliwości 200kHz, to trosze mało...

    piterek-23 napisał:
    komunikacja RS232 to komunikacja między dwoma urządzeniami, a tu byłyby trzy :(

    Nie odczytywałem jeszcze żadnej transmisji, ale na zdrową logikę myślę, że sercem całej automatyki w tym klimatyzatorze jest właśnie ten układ. On dostaje informację wejściową (masa) 0/1 odnośnie tryb, zimniej, cieplej, włącz/wyłącz, następnie wysyła wyjście 0/1 sygnał na wyświetlacz multipleksowy oraz jakąś transmisję na druga płytkę, gdzie ta informacja jest rozszyfrowywana przez kolejny układ i podawana na przekaźniki sygnał 0/1 do ich załączania, gdzieś do tej drugiej płytki podłączony jest czujnik temperatury, który wraca z niej transmisją z powrotem do panelu sterowania - i to wydaje mi się wszystko.

    piterek-23 napisał:
    Na drugiej płycie musi być też jakiś mikrokontroler.

    piterek-23 napisał:
    Co to za scalaki?

    Tak, są dwa jak na zdjęciu. Skręciłem obudowę na chwilę obecną.

    Zastanawiam się, co zrobić dalej? - teoretycznie podłączając się pod każdy element nie wiem czy:
    1. Orange Pi zdąży wychwycić zmiany
    2. Na pilocie mam opcję "LED Display", który wyłącza wyświetlacz. Trochę nieciekawie byłoby w takiej sytuacji pobierać z niego informację.

    0
  • Pomocny post
    #15 03 Cze 2018 22:31
    Samuraj
    Poziom 35  

    Wszystko to dywagacje może 3 może 5V, może RS może I2C a może jeszcze coś innego. A wystarczy odczytać układ i zobaczyć z którymi wyprowadzeniami są podłączone te dwa przewody.

    0
  • #17 04 Cze 2018 06:34
    piterek-23
    Poziom 32  

    Jak widać, jest to komunikacja RS232.

    Ja bym zrobił teraz tak:
    - odpinamy płytę z przekaźnikami
    - podpinamy konwerter USB-UART pod PC
    *TX do RX, RX do TX i GND do GND
    - odpalamy np PUTTY (Windows) lub MINICOM (Linux)
    - zaczynając od prędkości 9600
    *jak się pojawiają krzaki to zmieniamy prędkość 2400, 19200, 115200...
    - "słuchamy" co sterownik gada
    - wszystkie komendy wykorzystujemy później we własnym sterowniku

    0