Skocz do zawartości
szczesny32

Bezprzewodowe sterowanie - Arduino/nRf24L01, przekaźniki + tranzystory

Pomocna odpowiedź

Napisano (edytowany)

Hej,

aktualnie jestem na etapie projektowania sterowania bezprzewodowego rozdzielaczy hydraulicznych. Do wysterowania mam 2 wyspy po 4 zawory + po 1 sekcji startowej. Aktualnie mam to zrobione na kablach i przekaźnikach wraz z joystickami na stycznikach. Rozwiązanie generalnie działa, ale sterownik (zadajnik - skrzynka) jest za duża a dodatkowo w przyszłości będę potrzebował aby móc zabrać sterownik ze sobą.

Nie zagłębiając się z szczegóły złożyłem już nadajnik (kształtem przypomina Dualshock od PS :D) i komunikuje się z odbiornikiem, wysyła dane jak należy a odbiornik jest otrzymuje. Sprawa zaczęła mi się komplikować po stronie odbiornika - zadajnika do zaworów. Do dyspozycji mam tylko zasilanie z gniazda traktora rolniczego (12VDC). Planuję doprowadzić je do arduino i obniżyć do poziomu odpowiedniego dla arudino a do wysterowania przekaźników użyć wyjść 5V w arduino.

Wyspa zaworowa też jest sterowana 12VDC. Można zadać pytanie po co mi przekaźniki skoro napięcie dla cewek elektrozaworów jest takie samo jak dla przekaźnika. Mianowicie pojedyncza cewka ma moc około 30W co daje 2.5A max prądu. Aktualnie mam zastosowane przekaźniki HF41F w gniazdach DIN (bez arduino i żadnego sterownika - tylko joysticki ze stycznikami) i śmiga bardzo dobrze, ale boję się o wyjścia arduino ponieważ max prąd pobierany przez przekaźnik to około 17mA a cewek jest aż 18 więc to zdecydowanie za dużo dla arduino.

Wymyśliłem sobie że przekaźnik będzie sterowany tranzystorem BC547 przez arduino a dodatkowo potrzebuję manualne przesterowanie awaryjne na wypadek utraty komunikacji nadajnik - odbiornik. Poniżej wrzucam kawałek układu.

obraz.thumb.png.677768d2e7ead61cd3075114dced401e.png

Od lewej D22 - pin wyjścia z arduino, dioda Schottky (zabezpieczenie przed prądem zwrotnym z ręcznego przesterowania)

Na dole - ręczne przesterowanie, dioda Schottky (zabezpieczenie)

Na górze, przekaźnik. Po lewej u góry dioda sygnalizacyjna i dioda zabezpieczająca

Po prawej na dole - + i - to wyjścia na cewkę elektrozaworu.

 

Każda flaga +12VDC to to samo źródło a każda GND to to sama masa. Pytania do układu:

Czy sterowanie ręczne +12VDC jest możliwe w taki sposób i nie spowoduje zwarcia układu jeśli źródło sterowania jest tym samym co źródło napięcia? Chodzi o napięcie bazy na tranzystorze i napięcie na kolektorze? (pochodzą z tego samego źródła)

Czy układ z diodą sygnalizującą i diodą zabezpieczającą do cewki ma sens?

Czy diody Schottky w tych miejscach ma sens i czy to zadziała?

Pytanie czy oporniki są dobrane jak należy? Przy diodzie sygnalizującej wychodzi około 7mA (dioda może świecić słabo - nie przeszkadza mi to). Więc jeśli ma ok. 8mA a cewka 17mA to razem w górnej pętli powinno być około 25mA. wg. kalkulacji jeśli za diodą Schottky spadek będzie wynosił 0,3V to da 4,7V więc z wyliczeń powinienem zastosować rezystor około 2k? A przy 12V i tym samym spadku ok. 4,7k?

Prośba o sprawdzenie czy to co tu piszę ma jakiś sens. Nie mam zbyt dużego doświadczenia w temacie tranzystorów i ich sterowania a i ciągle szkolę się z elektroniki więc weźcie proszę na to poprawkę 🙂

Wybaczcie przydługie wprowadzenie, ale wydaje się że informacje w temacie są istotne a jeśli cały projekt wypali chciałbym w przyszłości podzielić się wynikami całej pracy na forum więc warto będzie podać też źródła co i jak 🙂 Jeśli coś co napisałem jest niejasne lub po prostu głupie ( 😄 ) proszę o informację, postaram się wyjaśnić co i jak. Z góry dzięki serdeczne za każdą pomoc 🙂

Edytowano przez szczesny32
błędy językowe

Udostępnij ten post


Link to post
Share on other sites

No to po kolei (szkoda, że nie numerowałes pytań, byłoby łatwiej do nich się odnosić):

Sterowanie ręczne jest oczywiście w ten sposób możliwe. Jeśli tylko źródło prądu bazy ma wspólną masę ze źródłem zasilania przekaźników tj. oba prądy (Ib i Ic) spływają do tej samej szyny GND na której stoi emiter, to jest OK. W szczególności może to być jedno źródło 12V albo tak jak tutaj 12V i 5V. Moim zdaniem prościej byłoby wstawić sterowanie ręczne poprzez zwykłe zwieranie kolektora na krótko do masy (oszczędzając diody i opornik) co tranzystorowi w niczym nie przeszkadza ale tak, na diodoej bramce OR też można.

Tak, układ wokół cewki przekaźnika (sygnalizacja i zabezpieczenie) ma sens i jest poprawny.

Diody są w porządku, choć nie muszą być diodami Schottky. Istnieją diody podwójne np. BAV99, BAV70 czy BAW56 w małych obudowach, które są idealne do tego typu małosygnałowych/logicznych zastosowań. Oczywiście istnieją też wersje Schottky w SOT23 (BAT54A, BAT54C, BAT54S).

Nie wiem z jakich wyliczeń a raczej z jakich do nich założeń korzystasz więc trudno ocenić wyniki. Skoro potrzebujesz ok. 25mA w kolektorze to spokojnie możesz założyć 1-2mA w bazie. To przy sterowaniu z 5V wymaga (5V-0.2V-0.7V)/2mA=2k, a przy 12V: (12-0.2-0.7)/2mA=5.6k. Wygląda, że założenia co do tranzystorów mamy podobne 🙂 Wszystko w okolicach tych rezystancji zadziała.

Jedyna uwaga: nie masz żadnego elementu który wymuszałby wyłączenie tranzystora, bo gdy Arduino poda stan niski a switch będzie wyłączony, to baza zaczyna wisieć w powietrzu (nie, diody nie zwierają do masy w tę stronę) a tego bardzo nie lubimy. Pojawia się wtedy niesterowany węzeł o sporej impedancji, który chętnie łapie wszelkie zakłócenia a tych w środowisku maszynowo-samochodowym nie brakuje. Dlatego opornik bezpośrednio od bazy do masy (np. 10k) jest konieczny. Ponieważ przy 0.6V..0.7V na bazie pochłonie on trochę prądu (dla 10k to tylko 60uA ale nie wiemy ile wstawisz), trzeba przeliczyć oba oporniki sterowania tak jakby prądu Ib było potrzeba odrobinę więcej.

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
13 godzin temu, marek1707 napisał:

No to po kolei (szkoda, że nie numerowałes pytań, byłoby łatwiej do nich się odnosić):

Sterowanie ręczne jest oczywiście w ten sposób możliwe. Jeśli tylko źródło prądu bazy ma wspólną masę ze źródłem zasilania przekaźników tj. oba prądy (Ib i Ic) spływają do tej samej szyny GND na której stoi emiter, to jest OK. W szczególności może to być jedno źródło 12V albo tak jak tutaj 12V i 5V. Moim zdaniem prościej byłoby wstawić sterowanie ręczne poprzez zwykłe zwieranie kolektora na krótko do masy (oszczędzając diody i opornik) co tranzystorowi w niczym nie przeszkadza ale tak, na diodoej bramce OR też można.

Tak, układ wokół cewki przekaźnika (sygnalizacja i zabezpieczenie) ma sens i jest poprawny.

Diody są w porządku, choć nie muszą być diodami Schottky. Istnieją diody podwójne np. BAV99, BAV70 czy BAW56 w małych obudowach, które są idealne do tego typu małosygnałowych/logicznych zastosowań. Oczywiście istnieją też wersje Schottky w SOT23 (BAT54A, BAT54C, BAT54S).

Nie wiem z jakich wyliczeń a raczej z jakich do nich założeń korzystasz więc trudno ocenić wyniki. Skoro potrzebujesz ok. 25mA w kolektorze to spokojnie możesz założyć 1-2mA w bazie. To przy sterowaniu z 5V wymaga (5V-0.2V-0.7V)/2mA=2k, a przy 12V: (12-0.2-0.7)/2mA=5.6k. Wygląda, że założenia co do tranzystorów mamy podobne 🙂 Wszystko w okolicach tych rezystancji zadziała.

Jedyna uwaga: nie masz żadnego elementu który wymuszałby wyłączenie tranzystora, bo gdy Arduino poda stan niski a switch będzie wyłączony, to baza zaczyna wisieć w powietrzu (nie, diody nie zwierają do masy w tę stronę) a tego bardzo nie lubimy. Pojawia się wtedy niesterowany węzeł o sporej impedancji, który chętnie łapie wszelkie zakłócenia a tych w środowisku maszynowo-samochodowym nie brakuje. Dlatego opornik bezpośrednio od bazy do masy (np. 10k) jest konieczny. Ponieważ przy 0.6V..0.7V na bazie pochłonie on trochę prądu (dla 10k to tylko 60uA ale nie wiemy ile wstawisz), trzeba przeliczyć oba oporniki sterowania tak jakby prądu Ib było potrzeba odrobinę więcej.

Dziękuję bardzo za obszerną i dokładną odpowiedź 🙂 Faktycznie mogłem ponumerować pytania, będę pamiętał na przyszłość 😉

Rozumiem, że co do ostatniego punktu odnośnie GND bezpośrednio na nitce bazy wraz z rezystorem to będzie to wyglądało np. tak? 🙂

obraz.thumb.png.d263361e550c5c1569d7cdea8a0fba76.png

Co do obliczenia rezystancji potrzebnej na odnogach, znalazłem na 2 zagranicznych forach tematy dla tego samego tranzystora, że:

Ic = 25mA = 0.025A (dla mojego przypadku)

Ib = Ic/10 = 0.0025A

Rb = Vs/Ib = 4.7/0.0025 = 1880 Ohm (4,7V po spadku napięcia na diodzie Schottky z pierwotnego 5V)

więc faktycznie chyba powinienem dać 2k tak jak radziłeś zamiast 2,2k 😉 A dla drugiej nitki z 12V:

Ic = 25mA = 0.025A (dla mojego przypadku)

Ib = Ic/10 = 0.0025A

Rb = Vs/Ib = 11.7/0.0025 = 4680 Ohm więc tutaj dałem najbliższe 4,7k 🙂 (11,7 po spadku napięcia na diodzie Schottky z pierwotnego 12V).

Mnożnik Ib = Ic/10 znalazłem na kilku innych stronach odnośnie BC547 więc uznałem że to prawda 😄

Co do reszty tematów to zasilanie +12VDC to zasilanie z tego samego źródła a GND jest wspólna dla każdego znacznika na schemacie (wspólna dla całości układu).

Pozdrawiam, Krzychu.

Udostępnij ten post


Link to post
Share on other sites

Tak, właśnie o dodanie R4 mi chodziło.

Ażeby być dokładnym: przy obliczeniach prądu dla obwodu bazy zaczynasz od napięcia z portu procesora (które nie będzie równe 5V jeśli tylko jakikolwiek prąd z pinu pobierasz a im go więcej tym napięcie niższe - odsyłam do karty katalogowej procesora, tutaj możesz bezpiecznie przyjąć np. 4.5V), od tego odliczasz nie tylko napięcie diody szeregowej (0.3V - może być) ale i napięcie Ube tranzystora (0.7V?) i dopiero to co zostaje odkładasz na rezystorze ograniczającym/wyznaczającym prąd.

Na szczęście przyjęty "mnożnik" (czyli wzmocnienie prądowe tranzystora) = 10 jest na tyle pesymistyczny, że naprawdę nie robi różnicy czy przy 5V Arduino użyjesz opornika 2k, 2.2k czy nawet 3.3k lub 5.1k 🙂 bo tranzystor z przekaźnikiem w kolektorze i tak wejśdzie w nasycenie a różnica będzie polegała jedynie na jego głębokości, czyli na tym czy stracisz na przejściu C-E 100mV czy 300mV z 12V zasilania. Moim zdaniem nie ma to znaczenia dla poprawnej pracy przekaźnika a moc strat w tranzystorze w każdym przypadku jest tak minimalna, że także w jej kontekście nie ma się czym przejmować.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
1 godzinę temu, marek1707 napisał:

Tak, właśnie o dodanie R4 mi chodziło.

Ażeby być dokładnym: przy obliczeniach prądu dla obwodu bazy zaczynasz od napięcia z portu procesora (które nie będzie równe 5V jeśli tylko jakikolwiek prąd z pinu pobierasz a im go więcej tym napięcie niższe - odsyłam do karty katalogowej procesora, tutaj możesz bezpiecznie przyjąć np. 4.5V), od tego odliczasz nie tylko napięcie diody szeregowej (0.3V - może być) ale i napięcie Ube tranzystora (0.7V?) i dopiero to co zostaje odkładasz na rezystorze ograniczającym/wyznaczającym prąd.

Na szczęście przyjęty "mnożnik" (czyli wzmocnienie prądowe tranzystora) = 10 jest na tyle pesymistyczny, że naprawdę nie robi różnicy czy przy 5V Arduino użyjesz opornika 2k, 2.2k czy nawet 3.3k lub 5.1k 🙂 bo tranzystor z przekaźnikiem w kolektorze i tak wejśdzie w nasycenie a różnica będzie polegała jedynie na jego głębokości, czyli na tym czy stracisz na przejściu C-E 100mV czy 300mV z 12V zasilania. Moim zdaniem nie ma to znaczenia dla poprawnej pracy przekaźnika a moc strat w tranzystorze w każdym przypadku jest tak minimalna, że także w jej kontekście nie ma się czym przejmować.

Super, wszystko co chciałem już wiem 🙂 Bardzo mi pomogłeś. Jak widać, sporo nauki jeszcze przede mną 😄 Dziękuję bardzo!

P.S Sprawdziłem w karcie katalogowej i minimalne napięcie ząłączenia przekaźnika to 9V więc faktycznie tak znikoma różnica nie powinna mieć znaczenia 😉

obraz.thumb.png.08008f80d96a50559c77bf0fec76eeb1.png

Jeszcze raz dziękuję!

 

#EDIT2:

Poszedłem jednak za radą i przerobiłem ręczne sterowanie na przyłączenie kolektora do GND. W takim układzie nawet jeśli tranzystor padnie to nadal powinna zostać możliwość sterowania przekaźnikiem. Poniżej układ dla 2 przekaźników.

obraz.thumb.png.ee10897c3bbc1ef805e0f78342ca0b7b.png

Edytowano przez szczesny32
Zmiana układu

Udostępnij ten post


Link to post
Share on other sites

OK, tylko że nawet w tak prostym układzie każdy element zależy od pozostałych (jak na talerzu makaronu: tu pociągasz a gdzieś się rusza). Skoro przeniosłeś sterowanie ręczne do kolektora, to przestała być potrzebna dioda w bazie a opornik do masy (nowy R4), który wcześniej był wymagany z uwagi na odcięcie bazy tranzystora przy obu diodach zablokowanych teraz będzie pełnił rolę jedynie ustalania Ube=0V w przypadku gdy powyższy driver zostanie odłączony z jakiegoś powodu (podczas testów? uruchamiania? pomiarów?) od pinów procesora. W przeciwnym razie procesor steruje albo do +5V albo aktywnie do masy i opornik może być spokojnie zwiększony np. do 22-100k. Niemniej powinien zostać, bo sytuacja braku sterowania (porty na wejście) zachodzi także podczas wielu sekund programowania procka nowym kodem.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
10 minut temu, marek1707 napisał:

OK, tylko że nawet w tak prostym układzie każdy element zależy od pozostałych (jak na talerzu makaronu: tu pociągasz a gdzieś się rusza). Skoro przeniosłeś sterowanie ręczne do kolektora, to przestała być potrzebna dioda w bazie a opornik do masy (nowy R4), który wcześniej był wymagany z uwagi na odcięcie bazy tranzystora przy obu diodach zablokowanych teraz będzie pełnił rolę jedynie ustalania Ube=0V w przypadku gdy powyższy driver zostanie odłączony z jakiegoś powodu (podczas testów? uruchamiania? pomiarów?) od pinów procesora. W przeciwnym razie procesor steruje albo do +5V albo aktywnie do masy i opornik może być spokojnie zwiększony np. do 22-100k. Niemniej powinien zostać, bo sytuacja braku sterowania (porty na wejście) zachodzi także podczas wielu sekund programowania procka nowym kodem.

Dzięki za odpowiedź. To znaczy że należy aktualnie usunąć diodę Schottky dać większy rezystor R4 i R5 z przedziału 22-110k? Coś takiego np.?

obraz.thumb.png.9f486ac7370d881f56fd1c0663cfa667.png

Udostępnij ten post


Link to post
Share on other sites
3 minuty temu, marek1707 napisał:

Np. coś takiego 🙂 

No i super. Tak właśnie zrobię. Dzięki wielkie za pomoc 🙂

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...