Skocz do zawartości

Piny cyfrowe i ich początkowe, chwilowe napięcie


mmajorek01

Pomocna odpowiedź

Witajcie!

Mam nietypowe pytanie dotyczące Arduino, piszę nietypowe, bo nigdzie nie spotkałem się z takim w cudzysłowie „problemem”. Chodzi mi o piny cyfrowe np. w Arduino Uno. Po podaniu napięcia (po podłączeniu zasilania do płytki Arduino) na tych pinach od razu na krótko pojawia się napięcie. Do jednego z pinów mam podpięty buzzer i za każdym razem, gdy Arduino jest włączane ten buzzer brzęczy. Kod jest napisany w ten sposób, że po przekroczeniu temperatury powinien się wzbudzać informując o tym dźwiękiem. Wszystko jest zamontowane w samochodzie i po przekręceniu stacyjki przez około 1 s. brzęczy i przestaje (z czasem może to stać się uciążliwe). Potem oczywiście spełnia swoją funkcje, jeśli temperatura wzrośnie powyżej ustawionej. Chciałbym, aby nie było tego dźwięku na początku po przekręceniu stacyjki, a później żeby oczywiście działało normalnie. Czy mogę coś zmienić w kodzie, albo jest jakiś inny sposób na to, aby te napięcie na pinach cyfrowych nie pojawiało się przez tą sekundę po zasileniu arduino. Z góry dziękuję za odpowiedz.

Link do komentarza
Share on other sites

Możesz spróbować wgrać kod programatorem isp...to spowoduje że program będzie się uruchamiał "odrazu" po podaniu napięcia...drugi sposób to odwrócenie logiki dla buzzera, czyli stanem niskim włączasz buzzer, jak Ardu startuje i ustawia stan wysoki na pinach to buzzer milczy, a w dalszym ciągu w kodzie ustawiasz pin na wysoki i buzzer dalej milczy..

Link do komentarza
Share on other sites

Dziękuję za odp. Mam jeszcze pytanie

Nie do końca wiem o co chodzi z tym spięciem wyjścia Arduino do masy.

Czy jeśli mam ustawione OUTPUT na pinie 8, to przez rezystor np. 1k mam spiąć przewód do masy GND i zmienić z OUTPUT na INPUT na pinie 8? A drugą nogę buzzera normalnie spiąć do  5V ?

A sterowanie będzie się odbywać stanem niskim?

Proszę możesz mi to rozjaśnić, jeszcze muszę się wiele nauczyć i pewnie często będę zaglądał na te forum. Dziękuję?

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

A może ktoś słyszał o czymś takim jak stany nieustalone w układach mikroprocesorowych? Krótko na wyjściach(pinach, czy precyzyjniej portach) po włączeniu zasilania może pojawiać się stan wysoki, ma to swoją wadę, bo na przykład: może uszkodzić układ. Producenci rożnych modułów ostrzegają przed tym problemem informując jak temu zaradzić. Podobna sytuacja może mieć miejsce w chwili wyłączenia systemu mikroprocesorowego. Polecam dokumentację do układu ATmega328p, można również zamiast bezpośrednio z pinu, zastosować sterowanie poprzez tranzystor z układem gaszącym w obwodzie bazy(filtr RC), najczęściej pojawiające się opóźnienie będzie niewielkie

Link do komentarza
Share on other sites

26 minut temu, SQ7EQE napisał:

można również zamiast bezpośrednio z pinu, zastosować sterowanie poprzez tranzystor z układem gaszącym w obwodzie bazy(filtr RC), najczęściej pojawiające się opóźnienie będzie niewielkie

I ten temat mnie interesuje... mógłbyś tak na chłopski rozum wyjaśnić zasadę działania takiego filtra? Jak dobrać kondensator? Wiem że on przewodzi dopóki się nie naładuje, ale jakoś nie mogę tego ogarnąć..

Link do komentarza
Share on other sites

Nie ma problemu, przygotuję kilka wpisów, łącznie z wynikami symulacji pod ngspice(grafiki). Zajmie mi to góra dwa-trzy dni. Sorry, wykorzystuje  Oprogramowanie Open-Source w tym i do Hobby więc będzie ngspice(kod źródłowy i grafiki) inni by pewnie woleli PSpice ja tam wolę wolne oprogramowanie. Jutro po południu powinien być pierwszy wpis, wzory przygotuję pewnie pod Latex albo pod LibreOffice Math, zobaczę jeszcze 

  • Lubię! 1
Link do komentarza
Share on other sites

25 minut temu, ethanak napisał:

Latex to materiał na... powiedzmy baloniki.

I na ubrania kwasoodporne, rękawiczki, narzuty na stół roboczy (chociaż folia skrawana z PTFE jest lepsza, ale za to latex wychodzi taniej) 😉 

Link do komentarza
Share on other sites

W momencie włączenia zawsze wszystkie szyny zostają wprowadzone w stan wysoki a związane jest to z resetem procesora.Jeśli tak to rozsądnym rozwiązaniem problemu  jest podpięcie  buzera pomiędzy plusem Vcc a pinem.I teraz należy wyjaśnić o który plus idzie.Arduino ma różne napięcia zasilania a związane jest to z wersją kontrolera ATMEL328.Jedne Arduino mają Vcc=5V inne 3,3V i jeszcze dodatkowe 12V lub max 7V dla wersji 3,3V .Musisz się podłączyć do napięcia takiego jakie ma procesor.Jeśli jest wersja 5V to do plusa 5V jeśli jest to wersja 3,3V to do 3,3V.Oczywiście bezpośrednie sterowanie urządzenia wykonawczego zużywającego dość dużo prądu jest błędem konstrukcyjnym.Zatem jak sugerują koledzy należy zastosować tranzystor.Ale na razie pomińmy ten problem i skupmy się na tym co należy zmienić w oprogramowaniu.Jeśli na pinie wyjściowym masz wysoki stan i połączony buzer pin - Vcc  to prąd nie będzie płynąc i buzer  będzie  milczał.Natomiast jak pojawi się niski stan na wyjściu prąd zacznie płynąć przez buzer co spowoduje pojawienie się fali dźwiękowej.Stąd wniosek,że w programie musisz zmienić  w void setup() np. digitalWrite(wyA, LOW); na digitalWrite(wyA, HIGH); i odpowiednio w pętli głównej z digitalWrite(wyA, HIGH); na digitalWrite(wyA, LOW); Wracając  do sterowania tranzystorem to zastosuj tranzystor pnp  .

 

Link do komentarza
Share on other sites

Teoria wymaga odrobiny matematyki ... a tu edytora równań brak🤪

I po przeszukaniu posiadanych materiałów, można zastosować transoptor, wtedy pin w ATmega nie będzie przeciążony, bo buzer trochę może ciągnąć, katodę podłącza się do pinu, anodę poprzez rezystor 1k do +V i steruje całość logicznym 0, myślę, że PCF817 wystarczy. Podobne rozwiązania zastosowali konstruktorzy modułów z przekaźnikami do RPI i Arduino jest wtedy pewności, że po pojawieniu się logicznej 1 na wyjściu pinu buzer się nie włączy

Link do komentarza
Share on other sites

Można również zastosować taki układ opóźnionego włączania buzera, dla podanych wartości elementów i przekaźnika 12V opóźnienie to  ok 2-3 sekundy, schemat jest poglądowy.

delay-relay.thumb.png.012395145c1915e9ed1e6dad33592bcb.png

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.