Skocz do zawartości

Zasialnie Atmegi 3V3


Tom277

Pomocna odpowiedź

Mam pytanie jak faktycznie jest z zasilaniem Atmegi382P napięciem 3V3, czy to napięcie jest dobrze akceptowalne? Może trochę dziwne jest moje pytanie, ale napotkałem pewien problem. Zbudowałem układ z ATmega328p kilku czujników, wyświetlacza LCD i jako, że wszystkie czujniki oraz wyświetlacz są na max 3V3 zdecydowałem się na zasilanie wszystkiego takim właśnie napięciem. Niestety w miarę rozrastania się układu i programu zacząłem obserwować dziwne "krzaczki" na LCD, które pojawiały się nieregularnie. Dodatkowo cały wyświetlacz zaczął przygasać a nawet czasami nie startuje poprawnie. Doszło do tego, że obecnie po włączeniu zasilania procesor nie chce mi sam wystartować muszę zrobić reset i wtedy program rusza.

Dlaczego podejrzewam zasilanie? Ponieważ układ ma być bateryjny, odseparowałem zasilanie uP diodą Schottky'ego a za nią spory kondensator (chodzi o podtrzymanie zasilania dla zapisu EEPROM i pracę zegara RTC w procesorze). Rzecz w tym, że jak zrobiłem zasilanie przez diodę to już w ogóle LCD głupieje, procesor nawet go poprawnie nie inicjalizuje, dopiero zwarcie diody wraca jako tako poprane zachowanie. Wnioskuję, że ten niewielki spadek napięcia na diodzie jest już tą kroplą która przelewa czarę. Dodam, że mierzę napięcie na procesorze i na wszystkich nóżkach zasilania jest min 3.25V czyli nie tak strasznie a mimo tego procesor już nie chce pracować poprawnie . W dokumentacji jest napisane, że od 2.7V do 5V można taktować procesor do 10MHz ja taktuję wewnętrznym 8MHz.

Co jest nie tak? Program działała poprawnie, ale muszę zrobić reset po włączeniu zasilania czy programowaniu więc raczej w samym programie nie ma chyba problemu. Z osprzętem też jest chyba ok ponieważ jak wspomniałem po resecie wszystko działa, ale wystarczy tylko ta wspomniana dioda (spadek napięcia na niej) i już program siada.

Nie chodzi mi o konkretne rozwiązani bo przecież to trudne bez programu czy schematu ale bardziej o wasze spostrzeżenia czy ktoś się spotkał z takim problemem? 

Link do komentarza
Share on other sites

328p spokojnie działa na 3.3V taktowana 8MHz. Natomiast upewnij się, że pozostałe komponenty — na przykład ten nieszczęsny wyświetlacz — także działają z tym napięciem. Warto też zmierzyć jakie napięcie masz tak naprawdę, bo jeśli to jest malutka bateryjka a ciągniesz z niej dużo prądu, to możesz mieć spadki napięcia — szczególnie właśnie przy włączeniu.

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

Na tym etapie zasilam wszystko z zasilacza przez stabilizator (popularna płytka zasilająca do stykówki), wszystko jest na stykówce jeszcze, więc spadek napięcia z niewydolnej baterii odpada. Mierzyłem faktyczne napięcie na nóżkach procesora, jest ok 3.2V z diodą o której wspominałem i 3.29V bez diody (zwarta). Wyświetlacz LCD to JLX12864G z kontrolerem UC1701x, według dokumentacji VDD range (Typ.): 1.8V ~ 3.3V i VDD2/3 range(Typ.): 2.5V ~ 3.3V. Reszta też na zakres 1.95V to 3.6V (sprawdzone w dokumentacji). 

No kurcze nie wiem. Najpierw myślałem, że to problem stykówki, ale problem jest zbyt powtarzalny no i to zwieranie i rozwieranie diody również za każdym razem daje ten sam efekt, więc tu jest problem, albo sprzętowy, ale bo coś nie tak z inicjalizacją peryferii. Tylko dlaczego po resecie za każdym razem procesor startuje i działa poprawnie a po programowaniu już nie. Myślałem też, że może po włączeniu zasilania wszytsko na raz rusza i napięcie przysiada, ale przecież w czasie programowania nie wyłączam zasilania więc peryferia nie startują ponownie.

Sam już nie wiem czego szukać.

Link do komentarza
Share on other sites

 

1 godzinę temu, Tom277 napisał:

Tylko dlaczego po resecie za każdym razem procesor startuje i działa poprawnie a po programowaniu już nie.

poczytaj sobie o anti-brownout protection

A może zapomniałeś dodać kondensatory filtrujące wszędzie? Masz w ogóle jakiś schemat tego? Zdjęcie?

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

Tak oczywiście, że mam kondensatory. Dla każdego pinu Vcc po jednym 100nF + 10uF.

Mam włączony Brown-out detection level at Vcc=2.7V BOODLEVEL=101. Przy okazji, nie korzystałem z tego wcześniej, więc dopytam, czy to nie jest za wysokie napięcie ie powinno być minimalne 1.8V przy tym zasilaniu? 

Ale powyższe nic nie zmienia, nadal jest problem.

Zacząłem więc sprawdzać program, najpierw wyremowałem zostawiając jedynie obsługę LCD, było ok. Po kolei odkomentowywałem kolejne sekcje programu, aż dotarłem do samego końca i okazało się, że obsługa UART-a koliduje z programem. Bez wysyłania znaków na UART jest ok z wysyłaniem już jest problem jak opisałem.

Pierwsze wnioski, że jednak byłem w błędzie i problem nie leżał w napięciu a w programie. Musze do zdiagnozować dokładniej może znajdę przyczynę. UART był mi potrzebny do podglądania programu cz i jak tam się dzieję więc ostatecznie mogę go wyłączyć, ale spróbuję znaleźć przyczynę.

Ostatecznie myślałem też o włączeniu WDT, po włączeniu zasilania WDT zrobiłby mi reset bo program przecież stoi, ale takie to trochę leczenie syfa pudrem, co to za naprawa bez znalezienia usterki.

Nic, będę szukał, dzięki za zaangażowanie.

Pozdrawiam

 

Link do komentarza
Share on other sites

Hmmm.... a to jest dobre pytanie🙄 Muszę sprawdzić, niestety wczoraj, jak już nic więcej nie zrobiłem z braku czasu, wrócę do domu sprawdzę co ja tam mam  w tej swojej przejściówce, jakaś tak stara, kiedyś sam ja zrobiłem myślę, że jakiś FT232.

Myślisz, że tu może być przyczyna? Co miałby zmienić reset procesora a włączenie procesora? Wczoraj jedynie ustaliłem, że jak używam komunikacji UART to program nie startuje sam po włączeniu zasilania, dopiero reset z mkAVRCalculator uruchamia program.

No, ale zaraz, chip w przejściówce zasilany jest z USB z komputera więc to jednak chyba nie tu problem. 

Link do komentarza
Share on other sites

2 godziny temu, Tom277 napisał:

No, ale zaraz, chip w przejściówce zasilany jest z USB z komputera więc to jednak chyba nie tu problem. 

No to jest zasilany z 5V i oczekuje 5V sygnałów (oraz takie wysyła) — dałeś tam choć dzielnik napięcia?

Link do komentarza
Share on other sites

🙃 nie, nie dałem.

Konwerter USB-UART dołączany jest poza układem, jak wspomniałem jest mi potrzebny tylko do podglądania (debugowania) w czasie uruchamiania. Procesor to AVR więc bez problemu obsługuje 5V. Uważasz, że dzielnik jest potrzebny? A dodam jeszcze, że wykorzystuję tylko linie Tx z procesora czyli tylko wysyłam do PC-ta. Pytam bo jesteś doświadczonym konstruktorem, więc może źle robiłem dotychczas. Co innego gdybym "prowadził" pełną komunikację a procesor miał tylko na 3V3, więc rozumiem, że mogę uszkodzić Rx w procesorze bo konwerter poda za wysokie napięcie, ale w moim przypadku to chyba nie ma za bardzo znaczenia. Ewentualnie mogę mieć problem z poprawnym odbieraniem danych przez konwerter, ale raczej nie mam, gdy juz program ruszy to bez problemu odczytuje na PC-cie dane wysyłane z procesora. Czy jestem w błędzie?

 

Link do komentarza
Share on other sites

1 godzinę temu, Tom277 napisał:

Procesor to AVR więc bez problemu obsługuje 5V.

Jak sprawdzisz w nocie katalogowej, to zobaczysz, że maksymalne napięcie dopuszczalne na nóżkach GPIO to napięcie zasilania. Jak zasilasz z 5V to jest to 5V, ale jak zasilasz z 3.3V to niestety jest to 3.3V. 

1 godzinę temu, Tom277 napisał:

A dodam jeszcze, że wykorzystuję tylko linie Tx z procesora czyli tylko wysyłam do PC-ta.

W takim razie obejdzie się bez dzielnika, ale 3.3V jest trochę na granicy żeby się liczyć jako high na 5V. Jak spadło trochę przez diodę, to już się mogło nie łapać. Jesteś pewien, że program nie działał, a nie tylko nic na serialu nie widziałeś? Wspomniałeś wyświetlacz, więc chyba jednak cały program...

Link do komentarza
Share on other sites

Kurcze nic wczoraj nie dotknąłem, awaria samochodu, która musiałem się zająć.

Cytat

Jesteś pewien, że program nie działał, a nie....

Tak jestem pewien, ponieważ mam wpięty wyświetlacz, LED-a który sobie mrugał, na wyświetlaczu zrobiłem też liczbę która po  prostu zwiększała swoja wartość tak, żeby zobaczyć czy wyświetlacz się odświeża. Po włączeniu zasilania wyświetlacz się inicjalizował, ładował się obraz tła i tyle. Potem już nic więcej ani zmienna się nie inkrementowała, led nie mrugał. Dopiero reset powodował ruszenie programu. Przepraszam, że nic nie mam do dodania nowego. Ty się angażujesz a ja nic nie sprawdziłem, jak wyżej napisałem wczoraj byłem mechanikiem samochodowym, mam nadzieję, że przez weekend coś ruszę dalej i będę miał jakieś nowe wnioski spostrzeżenia.

Pozdrawiam

Link do komentarza
Share on other sites

Tak mi jeszcze przyszło do głowy, że UART ma odwróconą logikę, więc nawet jeśli na nóżkę RX nic nie wysyłałeś, ale była podłączona, to dostawała 5V.

Atmega ma na nóżkach GPIO diody zabezpieczające przed przepięciami do GND i VCC, więc w tej sytuacji układ tak naprawdę był zasilany 5V z UART.

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.