Od dluzszego czasu zastanawiam sie jak powinno sie przetestowac urzadzenia ktore uruchamiamy. Coraz czesciej tworzymy urzadzenia np. do automatyki domowej, ktore pracuja ciagle, nierzadko sterujac napieciami sieciowymi.
Chcialbym rozpoczac dyskusje, jak sprawdzic / przetestowac swoje urzadzenie aby bylo bezpieczne?
Jakich rozwiazan unikac? Jakie zabezpieczenia stosowac?
Nie wiem czy to odpowiedni dzial wiec w razie czego prosze o przeniesienie do odpowiedniego.
Chodzi o testowanie uruchomionych (czyli już działających) urządzeń, czy są trwałe?
Czy o testowanie nowo montowanych egzemplarzy urządzeń które mogą mieć błędy w projekcie albo w montażu?
Nie pytam dokladnie, a jedynie chcialem poruszyc temat kontroli swoich projektow. Bezpieczenstwa przede wszystkim.
Tak jak napisalem, duzo jest teraz projektow z wykorzystaniem np. Arduino i sterowaniem roznymi urzadzeniami. Zastanawiam sie jak przeprowadzic rzetelna kontrole funkcjonowania i bezpieczenstwa takich urzadzen, ktore pracuja calymi dniami bez nadzoru (dla siebie, nie kontroli przed produkcja masowa).
A to już dużo zależy od jakości softu.
Jeżeli pominąć soft i zostawić samo hardware, to testowanie już uruchomionych układów robi się po prostu metodą pozostawienia układu w działaniu. Metoda jest całkiem dobra bo opiera się na krzywej failure rate:
Prawdopodobieństwo uszkodzenia jest największe w początkowym okresie użytkowania urządzenia.
Bo wtedy urządzenie w ogóle jest wystawiane na jakiekolwiek zagrożenia, więc wszelkie ułomności będą wychodziły od razu (czerwona krzywa, która się przekłada na sumaryczną czarną krzywą).
Oraz metodą sprawdzenia działania dla parametrów granicznych. Czyli jak miał sterować prądem 10A, a teoretycznie powinien dawać radę do 20, to się testuje na te 20. Tutaj też od razu wyjdą ułomności spowodowane przyjęciem zbyt małych parametrów granicznych.
Celowo pomijam wyżej odpowiednie projektowanie, bo nie o to pytasz. Ale prawidłowe zaprojektowanie odpowiada za jakieś 90% prawidłowości działania urządzenia. Testowanie to tylko z 10%. Więc napisze niżej Niestety teraz mamy wysyp nieprawidłowo konstruowanych urządzeń, właśnie z powodu Arduino. Można sobie pogadać o testowaniu, ale tu jest błąd w założeniu że urządzenie trzeba testować zamiast je od razu porządnie zrobić.
Przykładowo w jakichś sterownikach do drukarek 3D padały tranzystory sterujące grzałkami, Dostałem kiedyś taki do naprawy. Jakoś tam to było oparte na Arduino.
Użyty był tam tranzystor IRFZ44, a sterowany był wprost z pinu IO uC czyli napięciem 5V. Co jest błędem bo to nie jest tranzystor Logic-Level.
I wiem że ludzie to testowali, jak to działa i jak często się uszkadza.
Można sobie testować, ale po co.
Gdyby to zrobić porządnie to nie było by czego testować, bo tak proste sterowanie jak sterowanie grzałką On-Off, jest po prostu bardzo mało awaryjne.
Podobnie z czujnikami (w innych projektach niż drukarki 3D) puszczanymi przewodami I2C na wiele metrów. Błąd w projekcie, i nie bardzo jest tu co testować. Bo błędy działania będą wynikały z zakłóceń (niebieska krzywa, choć będzie miała różną wysokość dla każdego przypadku, więc będzie nieprzewidywalna) a nie z uszkadzania się czegoś. Testowaniem nie określimy więc niezawodności jako takiej, a jedynie "niezawodność" w danym ściśle określonym środowisku (gdzie nawet ułożenie kabli będzie miało znaczenie). Przy czym właśnie określimy "niezawodność" w cudzysłowiu, bo to nie będzie niezawodność lecz jedynie informacja że dane warunki są wystarczająco cieplarniane dla działania zawodnego urządzenia. Czyli taki test przetestuje warunki, a nie urządzenie.
Takie testy jak i zadane pytanie są mocno "Arduino-biased". Bo pod pojęciem "swoje urządzenia" masz na myśli użycie gotowej płytki Arduino, i gotowych płytek Shield. A to nie budowanie urządzenia. Ok, nie umniejszam, coś tam trzeba zrobić. Ale jedyne co się dokłada to soft + okablowanie. Więc tylko to ewentualnie można potem testować. A nie całe "swoje urządzenia" czy "DIY".
Całe i swoje by były gdyby samemu projektować podłączenia do uC, filtry na wejściach, sterowanie triaka, przekaźników, itp.
Coraz czesciej tworzymy urzadzenia np. do automatyki domowej, ktore pracuja ciagle, nierzadko sterujac napieciami sieciowymi.
Chcialbym rozpoczac dyskusje, jak sprawdzic / przetestowac swoje urzadzenie aby bylo bezpieczne?
Jakich rozwiazan unikac? Jakie zabezpieczenia stosowac?
Zależy o jakie bezpieczeństwo pytasz, przed ryzykiem porażenia użytkownika inaczej się zabezpieczamy, niż przed przepięciami które mogą uszkodzić urządzenie, a inaczej przed zakłóceniami które mogą spowodować błędną pracą lub zawieszenie, sieć energetyczna obfituje w zakłócenia i przepięcia
Instalacje automatyki domowej mogą wymagać komunikacji przewodowej lub bezprzewodowej, obie mają swoje problemy.
W przypadku jeśli Arduino będzie się zawieszać albo resetować od zakłóceń zbieranych przez samo Arduino albo przez okablowanie, może się okazać zaprojektowanie płytek od nowa jest jedynym wyjściem.
Kolega zrobił kiedyś prosty sterownik na uC PIC obwieszony plątaniną przewodów, urządzenie podobnej klasy jak projekty z Arduino, ja budowałem generator HV z transformatorem z TV, udało mi się zakłócić (nie celowo) pracę tego sterownika z odległości 6m przez dwie ściany, w pobliżu pracowały komputery i inne urządzenia elektroniczne tylko ten amatorski sterownik mikroprocesorowy się resetował i zawieszał.
Moje pierwsze urządzenie sterujące, przez triak, oświetleniem zasilanym z 230V, było podatne na zakłócenia z sieci, światło czasami błysnęło w stanie "wyłączony".
Żeby uzyskać niezawodną pracę, w różnych niesprzyjających warunkach trzeba mieć doświadczenie, szeroką wiedzę i podejść do projektu kompleksowo, co z definicji w projektach amatorskich jest niewykonalne.
Żeby uzyskać niezawodną pracę, w różnych niesprzyjających warunkach trzeba mieć doświadczenie, szeroką wiedzę i podejść do projektu kompleksowo, co z definicji w projektach amatorskich jest niewykonalne
ale jednak w projektach amatorskich tez musimy starac sie zapobiegac chocby pozarom
No ale to właśnie trzeba zapobiegać robiąc odpowiednio projekt. Co przy użyciu Arduino jest niemożliwe bo Arduino już jest zrobione. I nie spełnia wielu wymagań.
Z Arduino podalem tylko przyklad ale i tam rowniez trzeba zastosowac tranzstory, triaki, czy zasilacze ktore moga byc zrodlem problemow.
Projekt oczywiscie wykonujemy jak najbardziej starannie ale po pierwsze jako amatorzy nie znamy wszystkich zagadnien, a wchodzimy czesto w dziedziny ktore nie sa nam do konca znane (jak chocby W.CZ.). Po drugie nawet w idealnym projekcie zdarzaja sie wadliwe podzespoly czy laminaty. Zle przyklejony radiator doprowadzi rowniez do spalenia tranzystora.
Uruchomilem ostatnio kilka urzadzen ktore dzialaja non stop i naszla mnie taka refleksja - Kiedy jestesmy pewni, ze dane urzadzenie jest bezpieczne? Stad moj temat i pytanie moze nieco ogolne ale mysle, ze wlasciwe, bo nawet na forum czesto pojawiaja sie komentarze, ze jakies urzadzenie wykonane jest zle, jest niebezpieczne, itd.
Pewność się ma wtedy jak się wcześniej jest w stanie zadbać o wymagane szczegóły. A to automatycznie wyklucza Arduino bo to jest gotowa płytka i do tego wykonana źle.
Czyli po prostu pewność można mieć tylko gdy się samodzielnie zaprojektuje PCB zgodnie z zasadami projektowania.
Czyli bierzemy uC, triaka, ADC, itp, i czytamy różne dokumenty o poprawnych zasadach projektowania schematu i PCB. Wtedy można mieć dużą pewność że będzie to zaprojektowane dobrze a więc i będzie bezpieczne.
Biorąc Arduino i płytki Shield, i czytając te różne dokumenty, wyjdzie że nie będzie to bezpieczne. I nie ma jak tego poprawić bo by trzeba wymieniać PCB, czyli wszystko rozlutowywać.