Przez pewien czas poznałem mikrokontroler pic i mam wystarczającą wiedzę na temat obsługi cyfrowej elektroniki. Pracowałem nad podstawowymi projektami elektronicznymi i teraz muszę pracować nad niektórymi aplikacjami komercyjnymi.
Moje pytanie dotyczy tego, jak zaprojektować i zbudować niezawodne i trwałe obwody. Zbudowałem obwód automatycznego kontrolera światła, który pobiera dane z LDR i wyświetla wartość odczytu analogowego na siedmiosegmentowym panelu. Następnie wykonuje pewne obliczenia i steruje światłem przez przekaźnik. Obwód ten musi być włączony na stałe (24 godziny na dobę). Przez pierwsze kilka miesięcy obwód działał idealnie, ale po około 6 miesiącach zaczął działać nieprawidłowo. Na 7-segmentowym wyświetlaczu pokazywał bezsensowne rzeczy (pokazywał tylko części liczb), a następnie zapala żarówkę na diodzie LED, ale nie włącza przekaźnika. Nie jest to oczekiwane zachowanie. Chodzi o to, że nie zawsze tak będzie. Czasami działa idealnie. Następnie zaczyna znowu działać nieprawidłowo. Nie ma dokładnej kolejności, w jakiej to działa.
Teraz moje pytanie brzmi: dlaczego te obwody zachowują się w ten sposób? Zakładam, że może to być spowodowane tym, że działa przez cały dzień bez żadnych przerw. Ten rodzaj aplikacji musi działać przez cały dzień. Używam PIC, ponieważ wiem tylko o piciu. Czy atmal jest bardziej niezawodny niż pic? (Zapytałem, ponieważ atmal jest używany w większości aplikacji automatyki, częściej niż używany jest pic) Potrzebuję porady od eksperta w dziedzinie elektroniki cyfrowej. Jak budowane są tego rodzaju aplikacje przemysłowe? Czy są jakieś specjalne zasady, których należy przestrzegać? Jak zaprojektować bardziej niezawodne obwody? Wszelkie porady lub wskazówki eksperta będą mile widziane. Dziękuję Ci...
EDYTOWAĆ
Jak sugerują odpowiedzi, zedytuję odpowiedź, dostarczając dodatkowe zasoby, aby pomóc w rozwiązywaniu błędów w projekcie.
Poniżej znajduje się obraz opisujący wygląd obwodu po jego zbudowaniu. To centralnie zasilany transformator 12 V, który zasila obwód. Jest prostowany za pomocą prostownika półfalowego, a następnie regulowany za pomocą układu scalonego 7805.
Poniżej znajduje się schemat.
Jeśli potrzebne będą dodatkowe informacje, dostarczę wszystko, co potrzebne. Jeśli program jest potrzebny, dodam go. Program jest nieco długi i wykorzystuje przerwania.
źródło
Odpowiedzi:
Zanim zaczniesz myśleć o zmianie, upewnij się, że masz dobry solidny projekt. Musisz zacząć myśleć o wszystkich sposobach, w jakie możesz mieć problemy w swoim projekcie. Dobrym sposobem na to jest przestanie myśleć o mikroprocesorze jako „magicznym pudełku”, w które wkładasz kod i robi to, co mu powiesz, i zaczynasz myśleć o tym, jak on działa, na poziomie bramki i na poziomie systemu. Musisz dbać o swój mikroprocesor.
To, co naprawdę musisz zrobić, to znaleźć mechanizm awarii. Musisz wiedzieć, dlaczego się nie udaje. Gdy dowiesz się, dlaczego nie działa, możesz rozwiązać problem. Jeśli nie możesz tego stwierdzić, będziesz musiał uczynić swój projekt niezwyciężonym, aby zapobiec występowaniu problemów. Jeśli nie, możesz przełączyć mikroprocesory i nadal mieć te same problemy. Jeśli chcesz przełączyć, ST tworzy świetne mikroprocesory, które są bardziej odpowiednie do zastosowań przemysłowych.
źródło
Ponieważ nie mówisz, zastanawiam się, jak fizycznie skonstruowany jest problematyczny obwód - ponieważ brzmi to DOKŁADNIE tego rodzaju problem, który zwykle pojawia się, gdy ktoś, kto nie lutuje, buduje obwód na tymczasowej płytce ściennej typu „push to connect” i wychodzi przez kilka miesięcy.
Jeśli jest to podobne do twojego przypadku, oznacza to, że masz problem; jeśli nie, nadal podejrzewam słabe połączenia, ale staje się to kwestią „umiejętności lutowania” bardziej niż „niepowodzeniem lutowania czegokolwiek”.
źródło
Nie masz kondensatora odsprzęgającego na zasilaniu PIC, ale na takiej małej płytce prawdopodobnie Ci się to uda. Możesz również dodać ochronę przed przepięciami, aby PIC był resetowany, jeśli napięcie spadnie poniżej progu.
Ale patrzę na twój kod.
Na początek powinieneś mieć włączony watchdog na micro. Jeśli kod przestanie działać poprawnie, watchdog uruchomi go ponownie.
Najprawdopodobniej właśnie gdzieś masz błąd. Z zawodu jestem inżynierem oprogramowania wbudowanego, sądzę, że ma to związek z przerwaniami, ponieważ to właśnie tam początkujący najczęściej popełniają błędy. Jednak jako początkujący istnieje ogromny zestaw błędów, które możesz popełnić w kodzie, więc to tylko pierwsze miejsce, w którym bym szukał. (Nie obrażaj się - sam popełniłem wiele takich błędów, w tym kiedy naprawdę powinienem był wiedzieć lepiej ;-)
źródło
Zgadzam się z komentarzami, że potrzebujesz ładnego kondensatora tłuszczu po obu stronach 7805. Zwłaszcza z przekaźnikiem. Spodziewam się, że to jest główny problem. Dodałbym również kondensator odsprzęgający na liniach zasilania PIC.
Chciałbym również szukać suchych stawów.
Dokładnie sprawdziłbym również mój program i korzystałem z wszelkich dostępnych funkcji nadzoru.
Ale oto kilka interesujących fragmentów twojego pytania:
Chciałbym dowiedzieć się, co się stało. Czy na przykład PIC się zawiesił?
Teraz, jeśli poprawnie odczytałem twój schemat, to aby każdy z 7 segmentów wyświetlał coś , i coś innego i stały na co najmniej dwóch z nich, to każdy z Q1, Q2 i Q3 musi być ciągle obracany kolejno, a dane wyjściowe do segmentów muszą być poprawne. To by mi powiedziało, że twój PIC nadal działa przynajmniej część swojego kodu, ale jakoś wyjście cyfrowe zostało zakodowane. Na przykład być może nie otrzymano cyfry 0-9 do wyświetlenia, ale cyfrę 17 lub podobną (dla której pobiera układ cyfr z losowej lokalizacji pamięci).
Mówisz:
Patrząc na schemat, to chyba że wyjście PIC pulsuje lub coś (nie jest to niemożliwe, ponieważ jest to również port wyjściowy timera), musiałby to być albo awaria elektryczna (np. Złącze suche), problem z zasilaczem (patrz wyżej kondensatory) lub tranzystor Q4 nie jest (być może) w pełni nasycony. Nie przeczytałem arkusza danych PIC, ale BC547 ma maksymalny I C wynoszący 100 mA (mam nadzieję, że to wystarcza do napędzenia przekaźnika i diody LED) oraz hFE 120 na tym poziomie, więc potrzebujesz około 1 mA w. 10k może być więc trochę za dużo. Mogę spróbować 3k3.
Ponadto nie masz przydatnych metod debugowania. Ponieważ wyświetlacz jest cały czas włączony, być może możesz sprawić, by końcowy punkt dziesiętny migał raz na sekundę (lub podobnie), aby wskazać, że wszystko jest w porządku.
Gdybym musiał wykonać dziki cios w ciemności, zgaduję, że szczególnie, gdy przekaźnik jest włączony, obwód pobiera znaczący prąd. Z powodu braku dużego kondensatora po stronie wejściowej 7805, gdy napięcie prądu przemiennego przekroczy zero, 7805 nie będzie wytwarzał żadnego prądu wyjściowego (i może rzeczywiście odprowadzać sam kondensator) - z arkusza danych 7805 „The napięcie wejściowe musi zwykle wynosić 2,0 V powyżej napięcia wyjściowego, nawet podczas niskiego punktu napięcia tętnienia wejściowego ” . Napięcie na PIC zostanie zatem zmniejszone, być może wystarczające, aby je rozbić. Umieść zakres linii 5 V obok PIC, a jeśli nie widzisz nic poza ładną, solidną linią 5 V, wiesz, że masz problem.
źródło
Za każdym razem, gdy masz nieprawidłowe zachowanie w mikroprocesorze, istnieją dwa główne źródła problemu. 1) brakujące lub niewystarczające kondensatory „bypassowe”, 2) „pływające” piny mikroprocesora.
Każdy „układ” musi mieć kołpak obejściowy, bezpośrednio na pinie układu podłączonym do Vcc (+ 5 V).
Każdy nieużywany pin musi być zawiązany wysoko lub nisko, ale nigdy nie powinien pozostawać „pływający”.
Zgadzam się, że nie jeździsz „wystarczająco mocno” Q4, zalecam 1K dla R12.
źródło