Skocz do zawartości

Niskie napięcie na wyjściu - Atmega 328


Pomocna odpowiedź

Napisano

Dzień dobry, mam problem z wyjściem w kontrolerze Atmega 328 (zarówno P jak i PB). Sprawa wygląda tak, że przy wgraniu mojego domyślnego (dość dużego programu) poprzez programator USB-ASP w środowisku Arduino IDE wyjście PD2 ( w Arduino IDE numerowane jako "2") przy stanie niskim daje wartość 0V ale przy stanie wysokim zamiast około 4,7-5V mam 2,4-2,6V. Przez to przekaźnik, który jest sterowany tym wyjściem raz się zapina a raz nie. Przy wgraniu małego programu z prostym przepisanie wejścia na wyjście napięcie jest prawidłowe - widać to też po diodzie którą jest sterowana tym samym wyjściem i świeci dużo mocniej niż wcześniej. 

Macie pomysł gdzie może być problem? Może przy większym programie, który korzysta z wielu dodatkowych różnych elementów (zegar RTC, przetwornik ciśnienia, PWM, przetwornik temperatury itp) brakuję prądu by to wszystko zasilić poprawnie?

A może większy program to dłuższe wgrywanie a co za tym idzie większa szansa na jakieś błędy przy wgrywaniu i niepoprawnie skonfigurowanie tego wyjścia? Jaka jest skuteczność programatora USB-ASP? Jest możliwe, że pomimo komunikatów, że wszystko zostało wgrane i zweryfikowane poprawnie to są jakieś błedy?

Dodam jeszcze, że całość mieści się na płytce PCB i wszystkie elementy są  w formie SMD. 

Załączam program i schemat układu. Jestem początkujący w tych tematach, więc proszę o wyrozumiałość w przypadku jakiś błędów. Cała funkcjonalność programu, była wielokrotnie testowana i działa zgodnie z założeniem - problem jest tylko z tym jednym wyjściem.

Z góry dziękuję za pomoc.

schemat_program.zip

@Nicander witam na forum 🙂 Jeśli dobrze widzę to w Twoim programie brakuje po prostu ustawienia, że ten pin ma być wyjściem (pinMode). Masz to zrobione tylko dla wyjścia z diodą, a przy przekaźniku brak takiego ustawienia - możliwe, że ten sam błąd jest też przy innych wyjściach. Pamiętaj, że domyślnie wszystkie piny są wejściami. Musisz dodać w setup konfigurację typu:

pinMode(PrzekaznikPracy, OUTPUT);

PS Bardzo ładnie narysowany schemat 🙂 

  • Lubię! 1

@Nicander to się cieszę 🙂 Ale dla pewności zweryfikuj, czy inne piny, które używasz nie muszą być również skonfigurowane jako wyjścia. Nie sprawdzałem tego, a może w przyszłości doprowadzi to do jakiś błędów.

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