W tym projekcie będziemy opracowywać fajny obwód wykorzystujący czujnik siły i Arduino Uno. Ten obwód generuje dźwięk liniowo zależny od siły przyłożonej do czujnika. W tym celu zamierzamy połączyć czujnik FORCE z Arduino Uno. W UNO będziemy używać 8-bitowej funkcji ADC (konwersja analogowo-cyfrowa) do wykonania tego zadania.
Czujnik siły lub rezystor wrażliwy na siłę
Czujnik FORCE to przetwornik, który zmienia swoją rezystancję pod wpływem nacisku na powierzchnię. Czujnik FORCE jest dostępny w różnych rozmiarach i kształtach. Będziemy używać jednej z tańszych wersji, ponieważ nie potrzebujemy tutaj dużej dokładności. FSR400 to jeden z najtańszych czujników siły na rynku. Zdjęcie FSR400 pokazano na poniższym rysunku. Nazywa się je również rezystorem wrażliwym na siłę lub FSR, ponieważ jego rezystancja zmienia się w zależności od siły lub ciśnienia przyłożonego do niego. Gdy do tego rezystora wyczuwającego siłę przykładane jest ciśnienie, jego rezystancja spada, to znaczy opór jest odwrotnie proporcjonalny do przyłożonej siły. Więc gdy nie zostanie na nią wywierany żaden nacisk, opór FSR będzie bardzo wysoki.
Teraz ważne jest, aby pamiętać, że FSR 400 jest czuły na całej długości, siła lub ciężar powinny być skoncentrowane na labiryncie pośrodku oka czujnika, jak pokazano na rysunku. Jeśli siła zostanie przyłożona w niewłaściwym momencie, urządzenie może spowodować trwałe uszkodzenie.
Warto wiedzieć, że czujnik może sterować prądami o dużym zakresie. Podczas instalacji należy więc pamiętać o prądach napędowych. Również czujnik ma ograniczenie siły, które wynosi 10 niutonów. Możemy więc przyłożyć tylko 1 kg wagi. Jeśli zastosowane masy przekraczają 1 kg, czujnik może wykazywać pewne odchylenia. Jeśli wzrośnie o więcej niż 3 kg. czujnik może trwale uszkodzić.
Jak powiedziano wcześniej, czujnik ten służy do wykrywania zmian ciśnienia. Tak więc, gdy obciążnik jest nakładany na czujnik FORCE, rezystancja zmienia się drastycznie. Wytrzymałość FS400 na ciężar pokazano na poniższym wykresie,
Jak pokazano na powyższym rysunku, rezystancja między dwoma stykami czujnika zmniejsza się wraz z ciężarem lub przewodnictwo między dwoma stykami czujnika wzrasta. Opór czystego przewodnika jest określony przez:
Gdzie, p- Oporność przewodnika
l = długość przewodu
A = obszar przewodnika.
Rozważmy teraz przewodnik o rezystancji „R”, jeśli na przewód zostanie przyłożony jakiś nacisk, obszar na przewodniku zmniejszy się, a długość przewodu wzrośnie w wyniku ciśnienia. Zatem zgodnie ze wzorem rezystancja przewodnika powinna wzrosnąć, ponieważ rezystancja R jest odwrotnie proporcjonalna do powierzchni, a także bezpośrednio proporcjonalna do długości l.
Tak więc w przypadku przewodu znajdującego się pod ciśnieniem lub ciężarem rezystancja przewodu wzrasta. Ale ta zmiana jest niewielka w porównaniu z ogólnym oporem. Dla znacznej zmiany wiele przewodów jest ułożonych razem. Tak dzieje się wewnątrz czujników siły pokazanych na powyższym rysunku. Przy bliższym przyjrzeniu się można dostrzec wiele linii wewnątrz czujnika. Każda z tych linii reprezentuje przewodnik. Czułość czujnika jest podana w liczbach przewodów.
Ale w tym przypadku opór będzie maleć wraz z ciśnieniem, ponieważ użyty tu materiał nie jest czystym przewodnikiem. FSR to wytrzymałe urządzenia z grubej folii polimerowej (PTF). Nie są to więc urządzenia z czystego materiału przewodzącego. Są one wykonane z materiału, który wykazuje spadek rezystancji wraz ze wzrostem siły działającej na powierzchnię czujnika. Ten materiał wykazuje cechy, jak pokazano na wykresie FSR.
Ta zmiana oporu nie przyniesie nic dobrego, jeśli nie będziemy w stanie ich odczytać. Kontroler pod ręką może tylko odczytać szanse w napięciu i nic mniej, w tym celu użyjemy obwodu dzielnika napięcia, dzięki czemu możemy wyprowadzić zmianę rezystancji jako zmianę napięcia.
Dzielnik napięcia jest obwodem rezystancyjnym i jest pokazany na rysunku. W tej sieci rezystancyjnej mamy jedną stałą rezystancję i drugą zmienną rezystancję. Jak pokazano na rysunku, R1 jest tutaj stałym oporem, a R2 jest czujnikiem FORCE, który działa jako rezystancja. Do pomiaru brany jest środek odgałęzienia. Wraz ze zmianą R2 mamy zmianę w Vout. Więc przy tym mamy zmianę napięcia wraz z wagą.
Ważną rzeczą do zapamiętania jest to, że sygnał wejściowy pobierany przez kontroler do konwersji ADC wynosi zaledwie 50 µA. Ten efekt obciążenia dzielnika napięcia opartego na rezystancji jest ważny, ponieważ prąd pobierany z Vout dzielnika napięcia zwiększa procentowy wzrost błędu, na razie nie musimy się martwić o efekt obciążenia.
Jak sprawdzić czujnik FSR
Rezystor wykrywający siłę można przetestować za pomocą multimetru. Podłącz dwa piny czujnika FSR do multimetru bez użycia siły i sprawdź wartość rezystancji, będzie bardzo wysoka. Następnie przyłóż pewną siłę do jego powierzchni i zobacz spadek wartości oporu.
Zastosowania czujnika FSR
Rezystory wyczuwające siłę są używane głównie do tworzenia „przycisków” wyczuwających nacisk. Są stosowane w różnych dziedzinach, takich jak czujniki zajętości samochodów, rezystancyjne panele dotykowe, robotyczne opuszki palców, sztuczne kończyny, klawiatury, systemy pronacji stóp, instrumenty muzyczne, wbudowana elektronika, sprzęt testujący i pomiarowy, zestaw rozwojowy OEM i elektronika przenośna, sport. Są również wykorzystywane w systemach Augmented Reality, a także w celu usprawnienia interakcji mobilnych.
Wymagane składniki
Sprzęt: Arduino Uno, zasilacz (5v), kondensator 1000 uF, kondensator 100nF (3 sztuki), rezystor 100kΩ, brzęczyk, rezystor 220Ω, czujnik siły FSR400.
OPROGRAMOWANIE: Atmel studio 6.2 lub Aurdino nightly
Schemat obwodu i objaśnienie robocze
Połączenie obwodu do łączenia rezystora wykrywającego siłę z Arduino pokazano na poniższym schemacie.
Napięcie na czujniku nie jest całkowicie liniowe; będzie głośno. Aby odfiltrować szum, kondensatory są umieszczone na każdym rezystorze w obwodzie dzielnika, jak pokazano na rysunku.
Tutaj weźmiemy napięcie dostarczane przez dzielnik (napięcie, które liniowo reprezentuje wagę) i wprowadzimy je do jednego z kanałów ADC UNO. Po konwersji weźmiemy tę wartość cyfrową (reprezentującą wagę) i odniesiemy ją do wartości PWM do sterowania brzęczykiem.
Więc z wagą mamy wartość PWM, która zmienia swój współczynnik wypełnienia w zależności od wartości cyfrowej. Im wyższa wartość cyfrowa, tym wyższy współczynnik wypełnienia PWM, tym wyższy poziom hałasu generowany przez brzęczyk. Więc powiązaliśmy wagę z dźwiękiem.
Zanim przejdziemy dalej, porozmawiajmy o ADC Arduino Uno. ARDUINO ma sześć kanałów ADC, jak pokazano na rysunku. W nich jeden lub wszystkie z nich mogą być użyte jako wejścia dla napięcia analogowego. UNO ADC ma rozdzielczość 10 bitów (czyli wartości całkowite z (0- (2 ^ 10) 1023)). Oznacza to, że będzie mapował napięcia wejściowe od 0 do 5 woltów na wartości całkowite z przedziału od 0 do 1023. Tak więc dla każdego (5/1024 = 4,9 mV) na jednostkę.
Tutaj użyjemy A0 z UNO.
Musimy wiedzieć kilka rzeczy.
|
Przede wszystkim kanały UNO ADC mają domyślną wartość odniesienia 5V. Oznacza to, że możemy podać maksymalne napięcie wejściowe 5 V do konwersji ADC na dowolnym kanale wejściowym. Ponieważ niektóre czujniki dostarczają napięcia od 0-2,5 V, przy wartości odniesienia 5 V uzyskujemy mniejszą dokładność, więc mamy instrukcję, która umożliwia nam zmianę tej wartości odniesienia. Tak więc do zmiany wartości odniesienia mamy („analogReference ();”) Na razie zostawiamy ją jako.
Domyślnie otrzymujemy maksymalną rozdzielczość ADC płyty, która wynosi 10 bitów, rozdzielczość tę można zmienić za pomocą instrukcji („analogReadResolution (bits);”). Ta zmiana rozdzielczości może się przydać w niektórych przypadkach. Na razie zostawiamy to jako.
Teraz, jeśli powyższe warunki są ustawione na domyślne, możemy odczytać wartość z ADC kanału '0' bezpośrednio wywołując funkcję „analogRead (pin);”, tutaj „pin” oznacza pin, do którego podłączyliśmy sygnał analogowy, w tym przypadku jest to byłoby „A0”. Wartość z ADC można przyjąć jako liczbę całkowitą jako „int SENSORVALUE = analogRead (A0); ”, W tej instrukcji wartość po ADC zostaje zapisana jako liczba całkowita„ SENSORVALUE ”.
PWM Arduino Uno można uzyskać na dowolnym z pinów oznaczonych jako „~” na płytce drukowanej. W UNO jest sześć kanałów PWM. Zamierzamy używać PIN3 do naszych celów.
analogWrite (3, VALUE); |
Z powyższego warunku możemy bezpośrednio uzyskać sygnał PWM na odpowiednim pinie. Pierwszy parametr w nawiasach służy do wyboru numeru pinu sygnału PWM. Drugi parametr służy do zapisu współczynnika wypełnienia.
Wartość PWM UNO można zmienić w zakresie od 0 do 255. Od „0” jako najniższego do „255” jako najwyższego. Z 255 jako współczynnikiem wypełnienia otrzymamy 5V na PIN3. Jeśli współczynnik wypełnienia podano jako 125, na PIN3 otrzymamy 2,5V.
Teraz mamy wartość 0-1024 jako wyjście ADC i 0-255 jako współczynnik wypełnienia PWM. Więc ADC jest około czterokrotnie większe od PWM. Czyli dzieląc wynik ADC przez 4 otrzymamy przybliżony współczynnik cła.
Dzięki temu otrzymamy sygnał PWM, którego współczynnik wypełnienia zmienia się liniowo wraz z wagą. Biorąc pod uwagę brzęczyk, mamy generator dźwięku w zależności od wagi.