Projektowanie obwodów o dłuższej żywotności

11

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.

wprowadź opis zdjęcia tutaj

Poniżej znajduje się schemat.

wprowadź opis zdjęcia tutaj

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.

danial weaber
źródło
6
Jeśli użyjesz układu scalonego w ramach określonych wartości (patrz arkusz danych), prawie każdy producent gwarantuje 10-letni okres użytkowania. I to w wysokiej temperaturze. Możesz obwiniać komponenty, ale myślę, że problem polega na tym, że w twoim projekcie dzieje się coś nieoczekiwanego. A może jeden z chipów ucierpiał na skutek wyładowania elektrostatycznego i pojawia się dopiero teraz. Najpierw musisz znaleźć wadliwy komponent, zanim udzielisz przydatnych porad.
Bimpelrekkie
2
Oprócz tego, co powiedział FakeMoustache, wątpię, że PIC jest źródłem awarii. Bardziej niż prawdopodobne jest to, że są to dyskretne elementy lub związane z konstrukcją obwodu.
DigitalNinja
1
Mam PIC-y pracujące cały czas w wielu trudnych miejscach. Nie ma problemów. Jedynym problemem, jaki miałem, była korozja wtyczek i fizycznie wymuszony elektryczny kondensator TFT ze zepsutym stykiem.
Szidor
1
I BTW, myślę, że masz na myśli Atmel zamiast „atmal”. Ponadto PIC to microC od MicroChip (MicroChip je robi). Atmel jest również producentem microC, wytwarzają mikrokontrolery Atmega. Oba są po prostu cyfrowymi układami scalonymi wykonanymi w podobnych procesach produkcyjnych i mają podobną niezawodność. Gdyby jeden był mniej lub bardziej niezawodny od drugiego, nikt by go nie kupił (po podobnej cenie, jaką są).
Bimpelrekkie
3
Musisz opublikować schemat, a najlepiej obraz niesprawnego systemu. Wątpię też, by twoje problemy były „oczekiwaną długością życia”, ale raczej brakowało czegoś naprawdę podstawowego, takiego jak czystość zasilacza lub EMI.
Techydude

Odpowiedzi:

17

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.

  1. Zasilanie - Jeśli zasilanie mikroprocesorów nie jest czyste, nie będzie działać poprawnie. Oznacza to przyjrzenie się projektowi płytki drukowanej i upewnienie się, że masz dobrą ścieżkę niskiej indukcyjności z zasilacza i upewnienie się, że masz odpowiednie ograniczenia mocy w pobliżu układu. Monitoruj i mierz moc według projektu, o którym wiesz, że nie działa z oscyloskopem i woltomierzem, czy to moc? Czy widzisz, że problem występuje, gdy występuje skok lub spadek mocy? Czy widzisz skoki lub spadki na linii Vcc?
  2. Kod \ Zegar - czy w kodzie jest błąd, który powoduje, że nie działa on poprawnie? Czy spojrzałeś na kod w jednostce przerywanej? Czy weryfikuje (dopasowuje) kod, który masz teraz? Czy dostajesz degradacji pamięci flash? Co z zegarem? Z czasem energia może faktycznie obniżyć czas . Czy twój zegar jest tym, czym powinien być? Jeśli zwolnisz zegar, czy Twój kod przestanie działać?
  3. Ochrona środowiska. Czy używasz mikroprocesora w specyfikacjach, dla których został zaprojektowany? Czy temperatura jest stała w jednostkach, które zawodzą? Czy znajdują się w obszarze z czynnikami środowiskowymi, takimi jak kurz, EMI, ESD lub temperatura, które mogą spowodować awarię. Czy twoje dane wejściowe są chronione przed światem zewnętrznym, czy ludzie mogą zapchać urządzenie? Ciepło z czasem źle wpłynie na elektronikę. Weź kamerę termowizyjną i sprawdź, czy wszystko jest w porządku

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.

Skok napięcia
źródło
2
Dodaj promieniowanie do listy czynników środowiskowych. Promieniowanie jonizujące większości rodzajów (atomowe, fotoniczne itp.) Może powodować, że elektronika doświadcza SEU lub zakłóceń pojedynczych zdarzeń, co skutkuje zniekształconą mocą wyjściową.
rdtsc
Zgodnie z sugestią zaktualizowałem odpowiedź, dodając dodatkowe zasoby. schemat i obraz jeśli obwód. czy możesz znaleźć jakieś błędy w projekcie.
danial weaber
Wielkie dzięki. Mam pomysł i większą wiedzę na temat projektowania bardziej niezawodnych obwodów. Muszę dowiedzieć się więcej, zanim zacznę budować aplikacje komercyjne. Wielkie dzięki. Zaakceptowano jako odpowiedź.
danial weaber
Zakładam, że promieniowanie nie jest czynnikiem, ale jeśli prowadzisz te rzeczy obok elektrowni jądrowej lub innego źródła promieniowania (lub w kosmosie, staje się poważnym problemem z komercyjnym MCU mającym kilka SEU tygodniowo, nawet Rad twarde procesory będą miały SEU). Zwykły MCU może mieć SEU, ale wydaje mi się, że byłby to rząd lat dla prawdopodobieństwa tego w normalnym środowisku.
Skok napięcia
@danial weaber 7805 nie powstrzyma zaniku zasilania przy pomocy czapek, które masz. Powiedzmy, że pobór mocy z 5 V reg wynosi maks. 100 mA (możesz zmierzyć te łydki, jeśli zmierzysz swój rzeczywisty maksymalny prąd), to byłoby jak obciążenie 50 omów. Twój limit wynosi 10uf, więc tau = RC -> tau = 50 * 10uf = 0,5 ms. Jest to w przybliżeniu czas, który zajmie Ci problem. Możesz kupić tanią chińską „brodawkę ścienną” za kilka dolców, które mogą tolerować niektóre przerwy w dostawie prądu z sieci. Lub możesz użyć konwertera DC na DC, który może być bardziej tolerancyjny. Jak wygląda twoje uziemienie na płytce drukowanej?
Skok napięcia
7

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

Ecnerwal
źródło
3
Aby dodać do tej niewłaściwej techniki lutowania, można wytworzyć połączenia o niskiej wytrzymałości mechanicznej i inne problemy, które powodują uszkodzenie złącza po znacznie skróconym okresie czasu.
krytyczny
Wielkie dzięki. Zaktualizowałem swoją odpowiedź i jeśli możesz znaleźć jakiś błąd w projekcie, który byłby bardzo wdzięczny.
danial weaber
Lutowania wyglądają dobrze, nie widać efektów lutowania. Czy może to być problem związany z programem? Ale jak to działa na raz
danial weaber
... podać zdjęcie strony lutowniczej? Jeśli chodzi o problemy z programowaniem, które czasem działają, a czasem nie, w komentarzach do pytania wspomniano już o różnych opcjach. I jest gniazdo, w którym znajduje się układ scalony jako punkt lutowniczy potencjalnego uszkodzenia (między gniazdem a stykami układu scalonego). Gniazda są czasem dobrym pomysłem, ale mogą powodować problemy. Jeśli problemy będą się przez pewien czas poprawiać, jeśli usuniesz i wymienisz układ scalony, może to być część problemu. ... również kondensatory filtrów zasilających wyglądają trochę na małą stronę - wszystkie 33 pF między mostkiem a wejściem regulatora? Naprawdę?
Ecnerwal
5

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

Graham
źródło
+1 bardzo dziękuję. Teraz rozumiem, że popełniłem kilka błędów. Muszę dowiedzieć się znacznie więcej, zanim zacznę tworzyć aplikacje komercyjne.
danial weaber
3

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:

Na 7-segmentowym wyświetlaczu pokazywał bezsensowne rzeczy (pokazywał tylko części liczb)

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:

zapala żarówkę na wskaźniku LED, ale nie włącza przekaźnika

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.

w płomieniach
źródło
+1 bardzo dziękuję. Ta odpowiedź dała mi dobry pomysł na zaprojektowanie obwodu i kilka błędów, które popełniłem. Sprawdź źle dodaj kondensatory i powiedz o wynikach.
danial weaber
3

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.

Guill
źródło
+1 dzięki w odpowiedzi. Zle spróbuję dodać dwubiegowe kondensatory. Czy to konieczne, aby przypisać wartości dla pinów, których nie używam w projekcie.
danial weaber
Prawidłowe słowo to kondensator „odsprzęgający”, a nie „obejście”. Zgodziliśmy się również, że pływające szpilki mogą robić śmieszne rzeczy. Dodałbym trzecie główne źródło - zaniki zasilania lub podobne podejrzane warunki resetowania. Ale nawet wtedy, w tym przypadku, gdy początkujący robi skomplikowane rzeczy z przerwaniami, moje pieniądze są zawsze na oprogramowaniu.
Graham