Skocz do zawartości

Pomocna odpowiedź

Napisano

Mam zbudowany układ radiowy na baterię oparty o Attiny. Z racji, że walczę o każdą µAh to usypiam procka i chciałem uśpić również peryferia czyli moduł radiowy HC12 i sensor wilgotności (sygnał analog). Na początku dałem tranzystor sterowany pinem procka i działało OK ale z racji, że tranzystor obniża napięcie to układ przestawał pracować mniej więcej w połowie baterii, w okolicach 3,6-3,7V. Więc zastąpiłem mosfetem N irlml6244. Sprawdziłem go najpierw na krótko podając VCC na bramkę (z pulldownem 10k do GND)-> testowa dioda się zapalała i gasła. Nieco dziwnie zachowywał się wiatraczek 5v podłączony w miejsce diody ponieważ po odpięciu VCC od bramki i zatrzymaniu się zdarzało mu się drgać czyli jakieś małe prądy tam się pojawiały.
Przeniosłem to do Attiny i steruję pinem w stanie wysokim. Dioda również zapala się i gaśnie-> wszystko OK. Cuda się zaczynają po podpięciu peryferiów (nieważne czy radio czy sensor czy oba). Przy wybudzaniu procek się restartuje za każdym razem, podpięcie/wypięcie peryferiów w trakcie pracy powoduje reset lub zwiechę, zwykle uwala też komunikację na serialu (muszę odpinać programator i ponownie podłączać). Na module HC12 w momencie, kiedy mosfet powinien być zamknięty pojawia się napięcie -0,5V czyli jakiś mały prąd w przeciwnym kierunku.
Nie wiem co się tam dzieje i dlaczego i nie mogę z tym ruszyć dalej. Pin ustalam standardowym digitalWrite(10,HIGH/LOW), nie ustawiałem pullupu na nim.

Z elektroniki jestem na poziomie podstawowym niemniej jeżeli ktoś mógłby wskazać potencjalną przyczynę problemu lub sposób zdiagnozowania byłbym wdzięczny. Po prostu nie wiem w jakim kierunku szukać.

Zrzut ekranu 2024-09-23 101533.png

(edytowany)

Odłączanie masy od czujników (przy wysterowanych wejściach) nie jest dobrym rozwiązaniem; trzeba odłączać napięcie Vcc (tranzystorem z kanałem P).

Edytowano przez jand
  • Lubię! 2

Tak, sam takie używam.

Nie zapomnij o oporniku (kilka kilo) pomiędzy źródłem a bramką. I tak na wszelki wypadek - włączanie tranzystora odbywa się stanem niskim, trzeba zmieniać i program.

  • Lubię! 1

OK. Czyli reasumując:

  1. zmiana mosfeta na P (irlml2244 - ?)
  2. Zmiana schematu na odłączanie VCC
  3. dodanie opornika S-G
  4. Zmiana szkicu na załączanie digitalWrite(10,LOW);

a. Opornik pomiędzy S i G będzie działał jak pullup. Czyli na pewno opornik do gnd do usunięcia i pytanie czy potrzebny skoro mogę włączyc pullup programowy (wszystkie piny mam w sofcie podciągnięte, żeby nie tracił energii przez floating pins)?
b. Czy opornik do G typu 1k zostawić? Czy nie ma znaczenia?
(Poprawiony schemat)

Zrzut ekranu 2024-09-25 133121.png

(edytowany)

ad a) Tak, to pull-up, ale lepiej by był to opornik zewnętrzny. Gdyby się okazało, że w stanie wysokim na bramce tranzystor się w pełni nie wyłącza, to trzeba będzie zmniejszyć jego wartość.

ad b) Niech zostanie.

Edytowano przez jand

Zanim dotarły do mnie nowe mosfety to grzebałem trochę i ... znalazło się rozwiązanie, które chyba leczy skutek bardziej niż przyczynę ale ... działa. Pomogło wstawienie diody LED na pinie włączającym zasilanie peryferiów. Z jednej strony zabezpiecza przed "powrotnym" prądem, który to (na to wychodzi) był przyczyną resetów i zawieszania się układu a dodatkowo daje informację, kiedy zasilanie jest włączone.

  • Lubię! 1

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