Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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.

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..

Ja bym najpierw spróbował spiąć wyjście Ardu jakimś kiloomem do masy. Może być tak, że buzzer reaguje nie na "jest jedynka" a na "nie ma zera" (pin ustawiony początkowo jako INPUT).

  • Lubię! 2
  • 3 tygodnie później...

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ę?

 

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

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ąć..

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
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) 😉 

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  .

 

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

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

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...