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

Płytka przekaźnikowa sterowana poprzez I2C

ghost666 27 Lip 2015 18:06 7701 7
  • Płytka przekaźnikowa sterowana poprzez I2C
    Przekaźniki są jednym z najpopularniej wykorzystywanych interfejsów, pozwalających kontrolować poprzez mikrokontroler urządzenia zewnętrzne. Zapewnia on dodatkowo izolację galwaniczną pomiędzy niskonapięciowym układem kontrolującym go, a jego obciażeniem.

    Poniższy projekt przedstawia płytkę wyposażoną w przekaźniki, sterowane poprzez interfejs I²C. Pozwala to na sterowanie dużej ilości przekaźników, z wykorzystaniem tylko dwóch linii sterujących w interfejsie I²C. Moduł ten sterowany może być poprzez systemy takie jak np. Arduino czy Raspberry Pi.

    Krok 1: Klasyczne sterowanie przekaźnikiem.

    Płytka przekaźnikowa sterowana poprzez I2C


    W typowym układzie, gdzie steruje się jedynie ograniczoną liczbą przekaźników, najlepiej jest wykorzystać driver cewki oparty o tranzystor, jak pokazano powyżej. To prosty, efektywny i niedrogi układ. Rezystory podciągają bazę do masy i ograniczają prąd bazy tranzystora. Sam tranzystor służy do zwiększania prądu, jaki może zostać pobrany prze cewkę. Układ pobiera jedynie około 1 mA z pinu sterującego, a pozwala na zasilenie cewki przekaźnika prądem do 100 mA. To wartość dostateczna dla większości przekaźników, spotykanych na rynku. Dioda wpięta równolegle z cewką przekaźnika zabezpiecza układ przed szpilkami napięcia generowanymi na indukcyjności cewki.

    Zaletą stosowania takiego układu jest także możliwość kontrolowania przekaźników na napięcie większe niż napięcie wyjściowe układu (np. 5 V). Zaprezentowany układ pozwala na wykorzystanie przekaźników z cewką zasilaną napięciem do 48 V.

    Jednak układ ten ma pewną wadę. Każdy przekaźnik wymaga 4 elementów dyskretnych. Sumaryczna liczba elementów szybko rośnie, wraz z zwiększaniem liczby przekaźników, więc układ kiepsko nadaje się do pracy z np. ośmioma przekaźnikami w systemie. Co zrobić jeśli chcemy zmniejszyć rozmiary płytki drukowanej (PCB) a jednocześnie zachować liczbę kanałów sterowania?

    Krok 2: Poznajmy ULN2803.

    Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C






    Im więcej przekaźników wymagane jest w projekcie, tym więcej elementów trzeba by wykorzystać do jego sterowania. Oznacza to coraz większy rozmiar PCB. Ale zamiast elementów dyskretnych wykorzystać można scalone układy tranzystorowe, takie jak ULN2803. Pozwoli to istotnie zmniejszyć wielkość PCB. Wspomniany układ kompatybilny jest z napięciem wejściowym 3,3 V i 5 V, takim jakie obecne jest na wyjściu większości mikrokontrolerów. Układ scalony ULN2803 wbudowane ma 8 kanałów sterujących, każdy z nich zdolny do sterowania pojedynczym przekaźnikiem.

    Karta katalogowa układu ULN2803 dostępna jest tutaj.

    Krok 3: Układ póki co:

    Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C


    Poprzez wykorzystanie scalonego sterownika ULN2803 zamiast dyskretnych elementów, udało nam się zredukować liczbę elementów na PCB sterujących ośmioma przekaźnikami z 32 elementów dyskretnych do jednego układu scalonego.

    Pozwala to na uproszczenie projektu PCB i zmniejszenie jej wymiaru.

    Krok 4: Podłączenie przekaźników do układu z wykorzystaniem drivera ULN2803.

    Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C


    Powyższe rysunki pokazują projekt w którym układ steruje 16 przekaźnikami. Jak widać miejsce na PCB zabierane przez te układy jest bardzo niewielkie, a wyprowadzenia driverów pozwalają na bardzo wygodną implementację ich w układzie. Złącza po prawej stronie ULN2803 służą do podłączenia przekaźników. Czyni to projekt PCB bardzo prostym i przejrzystym.

    Więc czy można jeszcze jakoś ulepszyć taki system?

    Krok 5: Poznajmy ekspander MCP23017 firmy Microchip.

    Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C


    Układ MCP23017 jest 16 bitowym ekspanderem I/O produkowanym przez firmę Microchip. Zapewnia on 16 dodatkowych wyjść/wejść cyfrowych programowalnych niezależnie. Układ kontrolowany jest z pomocą dwuprzewodowego interfejsu I²C. Dzięki możliwości wybory trzech bitów adresu układu w sieci I²C możliwe jest podłączenie do 8 takich układów do pojedynczego mikrokontrolera, co przekłada się na do 128 dodatkowych, programowalnych pinów GPIO.

    W projekcie z 16 przekaźnikami pomiędzy główną PCB systemu, a płytką przekaźników konieczne jest 17 kabli - 16 dla przekaźników oraz zasilanie. Przy wykorzystaniu MCP23017 liczbę tą można zredukować do 5:
    * Zasilanie dla przekaźników (napięcie zależne od konkretnych przekaźników)
    * Zasilanie dla MSP23017 (5 V)
    * Masa
    * SDA (interfejs I²C)
    * SCL (interfejs I²C)

    Co najlepsze te same pięć linii jest dostateczne, aby sterować do 128 kanałów I/O. Pozwala to na projektowanie systemów z prostym okablowaniem wewnętrznym i niewielkimi płytkami drukowanymi.

    Karta katalogowa układu MCP23017 dostępna jest tutaj.

    Krok 6: projektowanie płytki przekaźnikowej sterowanej poprzez I²C.

    Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C


    Z uwagi na ograniczenia programu do projektowania PCB (CadSoft Eagle w wersji freeware) maksymalny rozmiar PCB wynosi 100 mm x 80 mm. W takim rozmiarze niestety nie mieści się układ 16 przekaźników. Jednakże na takiej płytce mieści się system złożony z ośmiu przekaźników, drivera ULN2803 i ekspandera MCP23017. System taki wykorzystuje tylko połowę (osiem) wyjść z ekspandera, druga połowa zostaje wolna. W ten sposób aby osiągnąć 16 kanałów wyjściowych z systemu, potrzebne są dwie takie płytki.

    Dobór elementów

    Projekt zrealizowano z wykorzystaniem elementów przewlekanych. Do selekcji adresu na PCB wykorzystano zworki co pozwala niezależnie konfigurować bity adresu - A0, A1 i A2 - dla każdego MCP23017 obecnego w układzie. Dzięki temu w systemie można wykorzystywać do ośmiu takich płytek. Oznacz to do 64 kanałów przekaźnikowych

    Zasilanie przekaźników

    Przy możliwości sterowania do 64 przekaźników prądy potrzebne do ich kontroli mogą być dosyć duże, dlatego też zasilanie nie może być pobierane z płytki z mikrokontrolerem. Każde PCB z przekaźnikami wyposażono w niezależne konektory, pozwalający na bezpośrednie zasilenie każdej z płytek.

    Napięcie zasilania przekaźników

    Napięcie przy którym poprawnie działa driver ULN2803 wynosi od 5 V do 48 V. Daje to ogromną możliwość dobrania odpowiedniego przekaźnika do układu.

    Podłączanie obciążenia do przekaźników

    Na każdy przekaźnik przypadają trzy konektory śrubowe, pozwalające na podłączenie obciążenia do układu. Na złączu wyprowadzono wspólny terminal przekaźnika oraz wyjścia - normalnie zwarte i normalnie rozwarte. Nie ma żadnego wspólnego połączenia pomiędzy poszczególnymi przekaźnikami, co dodaje elastyczności w stosowaniu płytki przekaźnikowej w systemie.

    Podłączanie interfejsu I²C

    Sygnały interfejsu sterującego podłączone są z pomocą wyprowadzeń. Dodano dwa zestawy wyprowadzeń dla wygodniejszego podłączania większej ilości płytek tego rodzaju do systemu.

    Projekt ścieżek płytki PCB tego projektu znaleźć można tutaj. Z kolei pod tymi linkami znaleźć można projekt w postaci plików Eagle: PCB oraz schemat.

    Krok 7: Podłączanie płytki do systemu

    Płytka przekaźnikowa sterowana poprzez I2C Płytka przekaźnikowa sterowana poprzez I2C


    Zaprezentowany projekt wyposażono w 16 kanałów przekaźnikowych. Do układu podłączono dwie płytki, których adresy skonfigurowano na 0 i 1. Jak widać połączenia pomiędzy płytkami a głównym PCB systemu są minimalne. Wystarczy podłączyć linie +5 V, GND (0 V), SDA i SCL z płytki (w tym przypadku Arduino). Do płytki z przekaźnikami podłączyć należy odpowiednie napięcie zasilania przekaźników.

    Krok 8: Arduino i płytka przekaźników na I²C

    Płytka przekaźnikowa sterowana poprzez I2C


    Poniżej znajduje się prosty skecz programu na Arduino, obsługujący płytkę przekaźników poprzez interfejs I²C. Wykorzystana jest tylko biblioteka wire.h, wymagana do komunikacji poprzez interfejs I²C.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 9: Obsługa modułu przekaźnikowego z poziomu Raspberry Pi

    Obsługa ekspandera na I²C poprzez płytkę Raspberry Pi opisana została w tym projekcie. Zamieszczono tam schemat połączeń linii SCL i SDA interfejsu I²C do RPi oraz przykładowy skrypt Pythona do obsługi ekspandera.

    Źródło: http://www.instructables.com/id/I2C-Relay-Board/?ALLSTEPS


    Fajne!
  • Relpol
  • #2 03 Sie 2015 18:37
    2636394
    Użytkownik usunął konto  
  • Relpol
  • #3 03 Sie 2015 19:27
    ghost666
    Tłumacz Redaktor

    kokeszkov napisał:
    Jak dla mnie brakuje optoizolacji. Większość takich kart przekaźnikowych ma to w standardzie.


    To prawda, tutaj jednakże bardzo łatwo sobie z tym problemem poradzić stosując optoizolację na I²C.

  • #4 03 Wrz 2015 06:03
    Czang16
    Poziom 11  

    Witam
    Mam takie pytanie. Czy jest mozliwosc dodania opcji sterowania z internetu? :-) z gory dZiekuke za odpowiedz.

  • #5 05 Wrz 2015 13:16
    ghost666
    Tłumacz Redaktor

    Czang16 napisał:
    Witam
    Mam takie pytanie. Czy jest mozliwosc dodania opcji sterowania z internetu? :-) z gory dZiekuke za odpowiedz.


    Możliwość jest zawsze :)

  • #6 05 Wrz 2015 14:45
    Czang16
    Poziom 11  

    A orientuje sie Pan jak mozna to zrobic?

  • #7 05 Wrz 2015 15:13
    ghost666
    Tłumacz Redaktor

    Np. Podpinając powyższą płytkę do Raspberry Pi.

  • #8 09 Wrz 2015 22:48
    mielmar
    Poziom 1  

    Czang16 napisał:
    Witam
    Mam takie pytanie. Czy jest mozliwosc dodania opcji sterowania z internetu? :-) z gory dZiekuke za odpowiedz.


    Można to dosyć łatwo przerobić zamieniając ADRUINO na na ESP8266. Nawet ESP-01 można podłączyć pod I2C , wbudowana karta WIFI no i można programować w środowisku ARDUINO.

    Zrobiłem coś takiego do sterowania taśmami LED przez WWW - tylko ja użyłem PCF8574+ULN2803