Spisu treści:
Wideo: Detektor indukcyjny impulsowy oparty na Arduino - pułapka LC: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Szukając dalszych pomysłów na prosty wykrywacz metali Ardino Pulse Induction z tylko jednym napięciem zasilania trafiłem na stronę domową Teemo:
www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit
Stworzył prosty detektor Pulse Induction wykorzystujący zasadę LC-Trap. Podobne obwody zostały opublikowane tutaj na Instructable przez TechKiwiGadgets. Z wyjątkiem tego, że obwód Teemo wykorzystuje wewnętrzne komparatory mikrokontrolera PIC, dzięki czemu wymaga mniej komponentów zewnętrznych
Poproszono mnie więc o użycie Arduino zamiast kontrolera PIC dla tego schematu i zobaczenie, jak daleko mogę się dostać.
Krok 1: Schemat
Schemat Arduino jest nieco bardziej skomplikowany, ponieważ Arduino nie pozwala na skierowanie wewnętrznego sygnału analogowego na wejście komparatora. Dodaje to dwa elementy do prostego dzielnika napięcia. Prowadzi to do projektu z 12 komponentami zewnętrznymi (pomijając głośnik i wyświetlacz LCD 16x2), w porównaniu do 9 konstrukcji Flip Coil.
Zasada działania schematu jest bardzo dobrze wyjaśniona na stronie Teemo. Zasadniczo cewka jest zasilana, a następnie wyłączana. Po wyłączeniu cewka i kondensator równolegle wytworzą drgania tłumione. Na częstotliwość i zanik drgań ma wpływ metal w pobliżu cewki. Więcej informacji na temat obwodu można znaleźć na stronie Teemo lub TechKiwi tutaj w Instructables.
Podobnie jak w detektorze Flip Coil Pulse Induction wykorzystuję wewnętrzny komparator oraz możliwość wyzwalania przerwania w celu pozyskania sygnału z cewki.
W takim przypadku otrzymam wiele przerwań, ponieważ napięcie oscyluje wokół napięcia odniesienia ustawionego na komparatorze. Pod koniec oscylacji napięcie na cewce ustabilizuje się w okolicach 5V, ale nie do końca. Wybrałem dzielnik napięcia 200 Ohm i 10k Ohm, aby uzyskać napięcie około 4,9 V
Aby zmniejszyć złożoność schematów, użyłem D4 i D5, aby zapewnić GND (dla rezystora 10k) i 5V (dla rezystora 220 Ohm). Kołki są ustawiane przy uruchomieniu czujki.
W tej wersji dodałem połączenie głośnikowe za pomocą wielotonowego podejścia z regulacją głośności, jak opisano w Jak zaprogramować wykrywacz metali oparty na Arduino. Pozwala to na zróżnicowanie właściwości celu, a także wyczucie siły sygnału. Głośnik można podłączyć do dodatkowej 5-pinowej listwy. Pozostałe 3 piny nagłówka zostaną wykorzystane do przycisków (do realizacji).
Krok 2: Programowanie
Po zaprojektowaniu obwodu i zbudowaniu prototypu nadszedł czas na znalezienie odpowiedniego podejścia do wykrywania metalu.
1. Liczenie impulsów
Liczenie impulsów oscylacji do całkowitego zaniku to jeden z pomysłów.
Jeśli w pobliżu cewki znajduje się metal, wielkość oscylacji zmniejsza się. W takim przypadku napięcie odniesienia komparatora powinno być ustawione na takim poziomie, aby ostatni impuls był ledwo mierzony. Jeśli więc coś zostanie wykryte, impuls ten natychmiast znika. To było trochę problematyczne.
Każda fala oscylacji tworzy dwa przerwania. Jeden podczas schodzenia i jeden w górę. Aby ustawić napięcie odniesienia dokładnie na szczyt fali oscylacyjnej, czas między spadkiem a wzrostem powinien być jak najkrótszy (patrz rysunek). Niestety tutaj narzut środowiska Arduino stwarza problemy.
Każdy wyzwalacz przerwania wywołuje ten kod:
ISR(ANALOG_COMP_vect){
Toggle1=Toggle0 // zapisz ostatnią wartość Toggle0=TCNT1; // pobierz nową wartość }
Ten kod zajmuje trochę czasu (jeśli dobrze pamiętam, około 78 cykli instrukcji, co wynosi około 5 mikrosekund @ 16MHz). Dlatego minimalna wykrywalna odległość między dwoma impulsami to dokładnie czas, jaki zajmuje ten kod. Jeśli czas między dwoma wyzwalaczami skróci się (patrz rysunek), pozostanie niewykryty, ponieważ kod jest w pełni wykonywany przed wykryciem drugiego przerwania
Prowadzi to do utraty wrażliwości. Jednocześnie zauważyłem, że tłumienie oscylacji jest bardzo wrażliwe na wszelkie wpływy zewnętrzne, co w sumie nieco utrudnia to podejście.
2. Pomiar częstotliwości
Innym sposobem wykrywania metalu jest pomiar częstotliwości oscylacji. Ma to dużą zaletę w porównaniu z pomiarem tłumienia oscylacji, ponieważ zmiana częstotliwości pozwala na rozróżnienie metalu. Jeśli w pobliżu cewki znajduje się materiał żelazny, częstotliwość spadnie, jeśli w pobliżu cewki znajduje się metal szlachetny, częstotliwość wzrośnie.
Najłatwiejszym sposobem pomiaru częstotliwości jest pomiar ilości impulsów po rozpoczęciu drgań cewek. Częstotliwość to okres czasu między początkiem a ostatnim impulsem podzielony przez całkowitą liczbę zmierzonych impulsów. Niestety kilka ostatnich oscylacji jest dość niesymetrycznych. Ponieważ obecność metalu wpływa również na zanik oscylacji, ostatnie oscylacje są jeszcze bardziej niesymetryczne, a odczyty są trudne do interpretacji. Na rysunku jest to pokazane na skrzyżowaniu 1 do 1' i 2 do 2'.
Lepszym sposobem jest zatem użycie wcześniejszych impulsów do pomiaru częstotliwości. Podczas testów, co ciekawe, dowiedziałem się, że niektóre impulsy impulsowe są bardziej czułe niż inne. Gdzieś przy 2/3 oscylacji jest dobrym punktem do pozyskania danych.
Przetwarzanie danych
Początkowy kod oparty na loop() wywołującej funkcję pulse() do wykonania taktowania cewki. Chociaż wyniki nie były złe, miałem ochotę poprawić wyczucie czasu. Aby to zrobić, stworzyłem w pełni oparty na zegarze kod, prowadzący do oddzielnego, intuicyjnego Jak zaprogramować wykrywacz metali oparty na Arduino. Ta instrukcja szczegółowo wyjaśnia czas, dane wyjściowe LCD itp
1. Wyświetlacz LCD
Pierwszym podejściem było zmierzenie 10 impulsów, a następnie wyświetlenie wartości na wyświetlaczu LCD. Ponieważ dowiedziałem się, że transfer danych I2C był zbyt wolny, zmieniłem kod, aby zaktualizować tylko jeden znak na impuls.
2. Podejście do wartości minimalnej
Aby dodatkowo poprawić stabilność odczytów, napisałem procedurę wyjścia szeregowego, aby uzyskać lepsze wyczucie mierzonych danych. Tam okazało się, że chociaż większość odczytów była w pewnym stopniu stabilna, niektóre nie! Niektóre odczyty „tego samego” impulsu oscylacji były tak daleko od siebie, że zrujnowałoby to każde podejście do analizy zmiany częstotliwości.
Aby to zrekompensować, stworzyłem „granicę”, w obrębie której wartość była godna zaufania. Tj. gdy wartości były oddalone o więcej niż 35 cykli timera1 od wartości oczekiwanej, wartości te były ignorowane (wyjaśniono szczegółowo w Instruktażowym „Jak zaprogramować wykrywacz metali oparty na Arduino”)
Takie podejście okazało się bardzo stabilne.
3. Napięcie
Oryginalna konstrukcja Teemo jest zasilana poniżej 5 woltów. Ponieważ moje założenia brzmiały „więcej woltów = więcej mocy = większa czułość” na początku zasilałem urządzenie 12V. Spowodowało to nagrzewanie się MOSFET-u. To rozgrzanie spowodowało ogólny dryf mierzonych wartości, co prowadziło do częstego ponownego równoważenia detektora. Zmniejszając napięcie do 5 V, generowanie ciepła przez MOSFET można było zminimalizować do poziomu, w którym prawie nie zaobserwowano dryfowania odczytów. To sprawiło, że obwód był jeszcze prostszy, ponieważ wbudowany regulator napięcia Arduino nie był już potrzebny.
Jako MOSFET wybrałem początkowo IRL540. Ten MOSFET jest kompatybilny z poziomami logicznymi, ale ma maksymalne napięcie znamionowe powyżej 100V. Miałem nadzieję na lepszą wydajność, przechodząc na IRL640 z ocenami 200V. Niestety wyniki były takie same. Więc albo IRL540, albo IRL640 wykona zadanie.
Krok 3: Wyniki końcowe
Zaletą detektora jest to, że rozróżnia materiał szlachetny i żelazny. Wadą jest to, że czułość przy tym prostym schemacie nie jest tak dobra. Do porównania wydajności użyłem tych samych referencji, co w przypadku detektora Flip-Coil. Prawdopodobnie dobry do niektórych lokalizacji, ale najprawdopodobniej rozczarowujący przy prawdziwym wyszukiwaniu.
Tutaj oryginalny projekt z kontrolerem PIC może być bardziej czuły, ponieważ działa na 32 MHz zamiast 16 MHz w celu zapewnienia wyższej rozdzielczości do wykrywania zmian częstotliwości.
Wyniki osiągnięto przy użyciu cewki z 48 zwojami @ 100mm.
Jak zawsze, otwarci na opinie
Zalecana:
Czujnik/detektor światła oparty na LDR: 3 kroki
Czujnik/detektor światła oparty na LDR: Czujniki i detektory światła są niezwykle przydatne w przypadku mikrokontrolerów i systemów wbudowanych, a także należy przeprowadzić monitorowanie natężenia. Jednymi z najprostszych i najtańszych takich czujników są LDR. Rezystory LDR lub Light Dependent Resistors mogą być łatwo używane z
Detektor wycieku gazu oparty na IOT: 4 kroki
Detektor wycieku gazu oparty na IOT: Wymagania1 - Nodemcu (ESP8266)2 - Czujnik dymu (MQ135)3 - Przewody połączeniowe (3)
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266): 4 kroki (ze zdjęciami)
Generator muzyki oparty na pogodzie (Generator Midi oparty na ESP8266): Cześć, dzisiaj wyjaśnię, jak zrobić własny mały generator muzyki oparty na pogodzie. Jest oparty na ESP8266, który jest trochę jak Arduino i reaguje na temperaturę, deszcz i intensywność światła.Nie oczekuj, że sprawi, że całe utwory lub akordy będą pro
Silnik indukcyjny z pojedynczą cewką / silnik elektryczny: 6 kroków
Silnik indukcyjny z pojedynczą cewką / silnik elektryczny: W tym projekcie zamierzamy wykonać silnik indukcyjny z pojedynczą cewkąKomercyjne i znacznie bardziej rozbudowane wersje tego silnika elektrycznego są używane w większości urządzeń na prąd przemienny. Nasz silnik nie ma wysokiego momentu obrotowego, chodzi bardziej o działanie
Detektor indukcyjny impulsowy oparty na Arduino - odwracana cewka: 5 kroków (ze zdjęciami)
Wykrywacz indukcyjny impulsowy oparty na Arduino - Flip Coil: Idea Po zbudowaniu niektórych wykrywaczy metali w przeszłości z różnymi wynikami chciałem zbadać możliwości Arduino w tym kierunku. Istnieje kilka dobrych przykładów budowania wykrywaczy metali za pomocą Arduino, niektóre tutaj jako pouczające