Pytanie:
Sinking 80 mA z mikrokontrolerem bez obwodu sterownika?
Flood Gravemind
2016-02-17 04:33:18 UTC
view on stackexchange narkive permalink

Zastanawiałem się, skoro mikrokontroler może pobierać 20 mA na każdym pinie, czy mogę obniżyć 4-pinowe porty przez oprogramowanie i po prostu podłączyć dodatnią stronę obciążenia do Vcc, czy jest to niezawodna metodologia sterowania większymi obciążeniami ? Czy jedyną rzeczą, o którą należy się martwić i modlić, jest to, że cykl maszyny jest wystarczająco szybki, aby poradzić sobie z wahaniami ustawiania wszystkich kręgli w tym samym czasie? Czy jestem na dobrej drodze?

W wielu środowiskach wielkie litery M oznaczają Mega ...
Chip będzie miał również całkowity maksymalny prąd doziemny.Nie powinieneś tego przekraczać!
Informacje zawarte w arkuszu danych są ogólnie uważane za lepsze niż modlitwa.
@Daniel na chipie arduino max wynosi 200ma.
Testowanie jest jeszcze lepsze niż arkusze danych lub modlitwa.Użyj miernika prądu i podłącz szpilki zarówno wysokie, jak i niskie i zobacz, czy się nagrzewa.Wypróbuj przez 20 minut w jedną stronę.Jeśli zrobi się ciepły w dotyku, osiągnąłeś limit.W przeciwnym razie, o ile przedmiot nie jest zbyt gorący, powinien działać dobrze.Oblicz także liczby Fibonacciego w pętli co 1 ms.
@squarewav Zanim spróbuję, dostałem jedną szansę, chyba że chcę odwiedzić Amazon / ebay i poczekać 2 dni, aby ponownie rozpocząć pracę, dziękuję za zrozumienie mojego punktu.
Cóż, potrzebujesz jakiegoś obciążenia (np. 5V powyżej 250R to 20 mA).
*** Jak to jest poza tematem?Chodzi w szczególności o projektowanie elektroniki ***
@squarewav, jeśli Twój MCU nagrzewa się w dotyku od źródła lub tonięcia prądu na szpilce, przekroczyłeś limit kilka godzin temu.W OP: Prosta odpowiedź brzmi: nie, nie można łączyć pinów równolegle bez rezystancji ochronnych, ponieważ nie znasz wewnętrznych procesów i wymiarów tranzystora na wszystkich pinach.Mogą również występować różnice między pinami ze względu na połączone możliwości.Wszystko to może działać swobodnie, gdy nawet niewielkie fragmenty ciepła lub nierównowagi prądu powodują poważne pęknięcia chipów.
Nie pamiętam, czy to Atmel czy TI, który ma małą notatkę o równoległym podłączeniu GPIO do tego konkretnego celu, głównie z powodu spadku napięcia z powodu zbyt dużego poboru prądu na jednym pinie.Tak długo, jak całkowity prąd płynący przez pin vcc / gnd jest zgodny ze specyfikacją i zawsze ustawiasz piny w tej samej instrukcji, będzie dobrze.Układ Darlington, taki jak ULN2003A, wyraźnie wspomina o pracy równoległej w celu uzyskania większej przepustowości na kanał.
Nie jesteśmy tutaj, aby czytać Ci arkusz danych.
Sześć odpowiedzi:
Ecnerwal
2016-02-17 04:55:15 UTC
view on stackexchange narkive permalink

Jeśli problem nie dotyczy kupowania „modułu”, rozważ wydanie 6 centów (lub mniej) na tranzystor, który z radością pobierze 200 lub 500 mA i zajmie tylko jeden pin dla wejścia sterowania podstawowego. Myślę, że 6 centów to tyle, ile zapłaciłem za ostatnią partię 2N3904 / 6 i 2N4401 / 2 w partiach po 100. Kupowanie mniej niż to nie ma sensu, ale jeśli lubisz płacić 4 razy tyle za jedną naraz, bądź moim Gość.

Są to bardzo dalekie od najnowocześniejszych części, ale dobrze wykonują określony rodzaj pracy i są dość tanie.

Problem prawdopodobnie nie jest kosztowny.Problem może polegać bardziej na prostocie, przestrzeni i rezygnacji z rzeczy, które nie są naprawdę potrzebne.Potrzebny byłby również rezystor bazowy, aby ograniczyć prąd do podstawy.Nawet gdyby był to mosfet, myślę, że nadal chciałbyś rezystor bramkowy.Jeśli naprawdę dobrze rozumiesz wymagania dotyczące zasilania, myślę, że jest wiele przypadków, w których możesz obejść się bez zewnętrznych sterowników.
Passerby
2016-02-20 01:14:13 UTC
view on stackexchange narkive permalink

Powinno działać dobrze, ale musisz pamiętać o kilku rzeczach.

  1. Maksymalny prąd VCC lub Maksymalny prąd GND. Istnieje maksymalny prąd, który mikrokontroler może obsługiwać przez swój pin VCC lub GND.
  2. Maksymalny prąd portu. Pojedynczy port również ma maksymalny prąd.
  3. Przypnij ESR. Wyjście GPIO będzie miało spadek (lub wzrost) napięcia w zależności od tego, ile prądu przez nie przepływa. Zazwyczaj zalecany maksymalny prąd płynący przez styk dotyczy danego napięcia wyjściowego w porównaniu z VCC lub GND.

enter image description here
Np .: Rodzina MSP430G2xxx Niskie napięcie wyjściowe wzrośnie o 1 wolt od Gnd, przy ~ 30 mA.

Jeśli obciążenie mieści się w tych specyfikacjach, a przykład obciążenia 80 mA powinien być dla mikrokontrolerów ATMega, wtedy innym problemem jest zapobieganie szorty.

Musisz upewnić się, że zmieniasz cały port naraz zamiast jednego pinezki na raz. Jeśli zmieniasz tylko jeden pin naraz, z Low na High lub High na Low, możesz stworzyć martwe zwarcie między pinami, wydmuchując jeden lub więcej z nich. W zależności od domyślnego stanu pinów, kiedy uruchomienie, zanim kod będzie mógł je ustawić, może nie być możliwe do uniknięcia bez dodatkowych części. Postaraj się również, aby był odizolowany do pojedynczego portu, ponieważ zmiana wielu portów w tym samym czasie będzie trudna, a różnice napięcia między portami mogą zaszkodzić.

Zazwyczaj pomocne będzie posiadanie rezystorów szeregowych na pinach . Te rezystory również zostaną połączone równolegle z każdym pinem, co pomaga regulować prąd między nimi.

Zakładając, że chcesz, aby obciążenie 80 mA było równe na 4 pinach, to daje to 4 dodatkowe części jako zabezpieczenie. W tym momencie możesz równie dobrze wybrać jeden tranzystor + parę rezystorów.

Przy starannym kodowaniu nie powinieneś ich potrzebować, a równoległe GPIO będzie dobrze działać jako odbiorniki prądu.

Wyjścia Open Collector, które mogą być tylko niskie, nie mają problemów ze zwarciami, ale nadal powinny być zmieniane w tym samym czasie. Brak zmiany ich w tym samym czasie może prowadzić do prądu, chociaż tylko jednego wyjścia, co spowoduje problemy, jeśli nie ma ogranicznika prądu. Typowy procesor GPIO mikrokontrolera nie jest typu Open Collector, ale można go odwzorować , przełączając się tylko między trybem wejściowym o niskiej i wysokiej impedancji.

Jeśli OP jest po prostu tonącym prądem, jak sugeruje pytanie, a styki są skonfigurowane jako otwarte odpływy, to styki nie będą faktycznie zwarte, nawet jeśli nie zostały wszystkie przełączone w tym samym czasie.Ale piny powinny być przełączane w tym samym czasie, aby wyrównać obciążenie na nich wszystkich (chyba że nie wszystkie są na tym samym porcie).
@tcrosley ale większość mcu gpio to push pull, a nie open drain.Ale to też dodam.
@Passerby - większość mikrokontrolerów oferuje konfigurację wyjścia z otwartym drenem, a nawet te, które tego nie robią, mogą mieć ten sam efekt osiągnięty przez użycie wyjścia włączania / kierunku zamiast rejestru danych pinów.Skutecznie zapisujesz pin rejestru danych na niskim poziomie, gdy jest on wejściem, a następnie * ustawiasz go jako wyjście.
@ChrisStratton tak, dlatego powiedziałem ** naśladuj ** to.Ale czy naprawdę?3 najpopularniejsze MCU, które znam, to Atmel, TI i Microchip i nie widziałem na nich żadnych wyjść typu open collector.
To są marki, a nie MCU.
Tak, marki z wieloma liniami MCU i prawie wszystkie z tą samą standardową konfiguracją gpio ... wiesz, co miałem na myśli.
Voltage Spike
2016-02-17 04:52:26 UTC
view on stackexchange narkive permalink

Nigdy nie podłączaj portu cyfrowego do uziemienia, jeśli jest to push pull, Vcc lub uziemienie, jeśli jest otwarty spust. Sprawdź arkusz danych, myślę, że rasp pi nie ma arkusza danych, ale informacje są tam. Łączenie różni się od pozyskiwania. Jeśli masz wyjście z otwartym drenem, czasami możesz zużyć więcej prądu niż w trybie push-pull. Możesz być w stanie uciec z trochę więcej dzięki równoległej konfiguracji otwartego drenu, ponieważ nie rozpraszasz dużo mocy w chipie, ale nadal jesteś ograniczony przez szerokość drutu, jeśli wyjdziesz poza to, nagrzeje się i spalić.

W przypadku push pull jest to ogólnie zły pomysł, możesz równolegle podłączyć styki procesora, aby uzyskać więcej prądu, ale nie otrzymujesz więcej prądu przez Vcc Io lub I / O pin zasilania napięciem. W niektórych przypadkach urządzenia cyfrowe podają aktualną ocenę na Vccio i na samym pinie. Nie przekraczaj tych ocen.

Scott Seidman
2016-02-19 22:50:34 UTC
view on stackexchange narkive permalink

Według mnie, pomimo pomysłu, że to może zadziałać, jeśli wszystko pójdzie dobrze, to naprawdę zły pomysł, ponieważ tak łatwo byłoby wypalić rzeczy, jeśli jeden wiersz kodu jest zły lub coś złego stanie się podczas pobierania kodu. Po prostu zła praktyka

Techydude
2016-02-21 08:47:51 UTC
view on stackexchange narkive permalink

Nie zgaduj, nie módl się, nie testuj, po prostu postępuj zgodnie z arkuszem danych i traktuj go jak swojego Boga.

Zgadzam się, że może to być trochę ezoteryczne, kategoria pinów będzie miała zalecane maksymalne prądy (albo źródło & / albo tonące). Prawdopodobnie będą również wartości maksymalne dla całego portu 8/16/32 pinów i / lub maksymalne źródło / ujście dla pinów I / O całego układu. Przeczytaj arkusz danych, wykonaj obliczenia i uzyskaj odpowiedź. Aby jeszcze bardziej skomplikować sprawę, niektóre mikrokontrolery pozwalają zaprogramować maksymalny prąd ujścia / źródła, przy którym będą działać (np. We / wy na MCU TI BeagleBone). Wszystkie wspomniane platformy / mikrokontrolery są różne.

Istnieje niebezpieczeństwo w prostym połączeniu kilku pinów we / wy i wykorzystaniu ich połączonych możliwości pozyskiwania lub tonięcia prądu, a nie jest to przypadek na port ani na chip maksima, o których wspomniałem powyżej; MCU nie mają być urządzeniami bocznikowymi, dlatego nazywa się je mikrokontrolerami. To:

(a) co się dzieje z tymi I / O, gdy chip jest w trybie RESET? Większość będzie miała wejście o wysokiej impedancji, co prawdopodobnie jest w porządku, ale czasami pin będzie miał specjalne przeznaczenie, które może pojawić się podczas resetowania lub bezpośrednio po nim, w takim przypadku, co będzie robił twój obwód w tym czasie, & jak dużo prądu przez ten pin?

(b) technika, za pomocą której ustawiłeś / wyczyściłeś te piny I / O: czy użyłeś tylko pinów z 1 portu, w takim przypadku możesz wpisać bajt / słowo do rejestru I / O i ustawić / wyczyścić wszystkie naraz, więc wszyscy od razu zaczną dyrygować - świetnie. Ale jeśli rozłożysz obciążenie na piny z wielu portów we / wy (np.Port A & Port B), to wymaga wielu zapisów w rejestrze, co dzieje się sekwencyjnie, co oznacza, że ​​pierwszy zapisany pin / port przewodzi jako pierwszy i przenosi sumę prąd, to nie będzie, dopóki następny / ostatni port nie zostanie zapisany, że prąd będzie dzielony mniej więcej równo na wszystkie piny, do których jesteś podłączony. Jeśli robisz to i / o pisząc po jednym pinie na raz (np. "DidtalWrite (Pin, State)" Arduino, to ten pierwszy pin będzie przewodził PEŁNY prąd aż do zapisania kolejnych pinów drugiego &. To wszystko jest ZŁE i prawdopodobnie zabije MCU, jeśli nie natychmiast, to w ciągu oczekiwanego czasu życia.

Rozwiązanie jest proste. Zdobądź tranzystor NPN lub N-ch MOSFET o odpowiedniej specyfikacji, podłącz jego bazę / bramkę do pinu we / wy MCU (i oblicz odpowiedni rezystor szeregowy między nimi), podłącz jego kolektor / dren do tego, co chcesz włączyć / wyłączyć, i podłącz jego emiter / źródło do uziemienia. 1 pin we / wy , 1 tranzystor, nadaje się do wszystkiego, od dziesiątek mA & poza. W SE pojawią się inne pytania, jak to zrobić szczegółowo.

Od czasu do czasu arkusz danych nie jest Bogiem.Podam ten przykład: http://www.ti.com/lit/ds/symlink/lm4040-n.pdf.Podłączono pakiet TO-92 zgodnie z wyprowadzeniami na stronie 4. Nie działa.Dzieje się tak, ponieważ arkusz danych jest nieprawidłowy.To nie jest widok z góry, to widok z dołu.Starsza wersja tego samego arkusza danych robi to dobrze: https://www.adafruit.com/datasheets/lm4040-n.pdf
Nikt nie jest doskonały, nawet guru projektantów chipów, i możesz przytoczyć rzadkie wyjątki, dopóki krowy nie wrócą do domu, ale w stosunku do wszystkich innych sugestii (w tym pytaniu, a szczególnie jest to nieprawidłowe przeskakiwanie do Arduino.SE, gdzie odpowiedziałem),arkusz danych jest porównany przez Boga do zgadywania, modlitwy i, co gorsza, „testowania” go przez pobieranie coraz większego prądu, aż chip zacznie się nagrzewać (przypadek „Wiesz, że ta linia nie powinna przekraczać? Spójrz za siebie. ”)
Nie wiem, czy w świetle kontrprzykładu Willisa ujdzie ci to na sucho z argumentem „arkusz danych jest Bogiem”.Powiedzenie „arkusz danych jest twoim Bogiem” jest jak powiedzenie „Honda Civic to najlepszy samochód na czterech kołach, jaki kiedykolwiek zaprojektowano ludzkimi rękami”, ponieważ porównujesz tego Civica ze starymi, zardzewiałymi rowerami.Przynajmniej umieść przypis, który wyjaśnia, że arkusze danych są tak naprawdę tuż obok Boskości (tuż obok „czystości”)
To semantyczne samobiczowanie, do którego już odniosłem się w mojej odpowiedzi dla Willisa.
Peter Green
2016-02-21 20:52:34 UTC
view on stackexchange narkive permalink

Przychodzi na myśl kilka obaw.

  1. Co się stanie, jeśli popełnisz błąd w kodzie i wbijesz jeden pin wysoko, podczas gdy inny będzie niski? Masz teraz zwarcie do masy przez parę pinów IO, co nie jest dobre.
  2. Czy są jakieś ograniczenia dotyczące całkowitego maksymalnego prądu dla pinów IO. Jeśli tak, to czy mieści się w tych granicach
  3. Jak dobrze wyważone są tranzystory napędu. TO ZNACZY. Jak blisko do równego będą one początkowo dzielić prąd.
  4. Jaki jest współczynnik temperaturowy tranzystorów wyjściowych. Ponieważ niezrównoważony prąd powoduje nierówne nagrzewanie się tranzystorów wyjściowych, to poprawi lub pogorszy równowagę prądową.

Problem 1 dotyczy głównie tego, ile kondycji masz we własnym kodzie. Na problem 2 można odpowiedzieć w arkuszach danych, ale nie sądzę, żebym kiedykolwiek widział arkusz danych, który odpowiada na pytania 3 i 4.

W związku z tym nie polecałbym tej konfiguracji. Użyj zewnętrznego tranzystora do przełączania obciążenia.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...