Miniaturowy czujnik MEMS oznaczony symbolem FC30 należy do nowej kategorii układów, określanych mianem „czujników funkcjonalnych”. Rozpoznaje on i sygnalizuje na 3-bitowym wyjściu cyfrowym (jest to wyjście kombinacyjne, zgodnie z rys. 1) 6 kierunków, umożliwia wykrywanie także pozycji pośrednich pomiędzy „sąsiadującymi” kierunkami.
Inną funkcją realizowaną przez czujnik FC30 jest wykrywanie puknięć i uderzeń (rys. 2), które są sygnalizowane za pomocą impulsowych zmian stanów sygnałów na wyjściach: PC (Portrait) lub LC (Landscape), w zależności od kierunku uderzenia. Funkcję tę można wykorzystać na przykład do sterowania pracą urządzenia – włączania za pomocą dwukrotnego piknięcia w określonym kierunku lub detekcji manipulowania przez osoby nieupoważnione przy zabezpieczanym samochodzie lub motocyklu.
Na rys. 3 pokazano orientację układu FC30 względem podłoża.
Na rys. 4 pokazano schemat elektryczny wskaźnika położenia, który wyposażono w 3-diodowy wskaźnik LED (D1...D3) oraz złącze szpilkowe Con1, dzięki któremu wskaźnik można dołączyć do systemu alarmowego lub dowolnego układu detekcji. Urządzenie powinno być zasilane stabilizowanym napięciem 3,3 VDC, bez LED pobiera ok. 0,55 mA.
Na schemacie pokazanym na rys. 4 jedna rzecz może budzić wątpliwości uważnych Czytelników: wejście PD (Power Down) dołączono na stałe do +3,3 V, co zgodnie z notą katalogową (rys. 5) powinno przełączyć układ FC30 w stan stand-by. Podczas prób okazało się jednak, że w nocie katalogowej jest błąd – czujnik podczas normalnej pracy musi mieć na wejściu PD stan 1, jest wyłączany gdy PD przyjmuje stan 0. Diagnozę potwierdził (niezwykle sprawny!) support techniczny firmy STMicroelectronics (zgłoszenie R10010107).
Sposób kodowania kierunków na wyjściach układu FC30 – jakkolwiek logiczny – można przekodować do bardziej czytelnych formatów. Na list. 1 pokazano prosty opis transkodera w języku CUPL (dla układów GAL i pochodnych) i VHDL (list. 2 – dla dowolnych układów CPLD lub FPGA).
PartNo 00 ;
Date 2026-06-11 ;
Revision 01 ;
Designer Gemini ;
Company Home ;
Assembly None ;
Location None ;
Device g16v8 ; /* Wybór popularnego układu GAL16V8 */
/* ================= I/O Pins Definition ================= */
/* Wejścia z czujnika FC30 */
PIN 1 = IN2;
PIN 2 = IN1;
PIN 3 = IN0;
/* Wyjścia zdekodowane (np. na 6 diod LED wskazujących kierunek) */
PIN 12 = OUT0;
PIN 13 = OUT1;
PIN 14 = OUT2;
PIN 15 = OUT3;
PIN 16 = OUT4;
PIN 17 = OUT5;
/* ================= Wektory (Pola) ====================== */
FIELD wejscie = [IN2, IN1, IN0];
FIELD wyjscie = [OUT5, OUT4, OUT3, OUT2, OUT1, OUT0];
/* ================= Logika Transkodera ================== */
/* Tutaj mapujesz stany z czujnika na konkretne wyjścia. */
/* Dostosuj przyporządkowanie bitów na podstawie artykułu. */
TABLE wejscie => wyjscie {
'b'000 => 'b'000001; /* Położenie 1 */
'b'001 => 'b'000010; /* Położenie 2 */
'b'010 => 'b'000100; /* Położenie 3 */
'b'011 => 'b'001000; /* Położenie 4 */
'b'100 => 'b'010000; /* Położenie 5 */
'b'101 => 'b'100000; /* Położenie 6 */
/* Stany zabronione / nieużywane */
'b'110 => 'b'000000;
'b'111 => 'b'000000;
}
Listing 1.
use IEEE.STD_LOGIC_1164.ALL;
entity transkoder_fc30 is
Port (
fc30_in : in STD_LOGIC_VECTOR (2 downto 0); -- 3 bity z czujnika FC30
dir_out : out STD_LOGIC_VECTOR (5 downto 0) -- 6 linii wyjściowych
);
end transkoder_fc30;
architecture Behavioral of transkoder_fc30 is
begin
-- Instrukcja wyboru działająca jak klasyczna tabela prawdy
with fc30_in select
dir_out <= "000001" when "000", -- Położenie 1
"000010" when "001", -- Położenie 2
"000100" when "010", -- Położenie 3
"001000" when "011", -- Położenie 4
"010000" when "100", -- Położenie 5
"100000" when "101", -- Położenie 6
"000000" when others; -- Zabezpieczenie dla pozostałych stanów
end Behavioral;
Listing 2.
Przedstawione tabele przekodowań są przykładowe i nie obejmują wszystkich możliwych kombinacji stanów wyjść czujnika FC30 (opisano sposób przekodowania stanów wejściowych z rys. 1, bez uwzględnienia stanów przejściowych), każdy konstruktor może także dostosować do wymogów własnej aplikacji stany wyjść.
Urządzenie prototypowe zmontowano na płytce, której schemat montażowy pokazano na rys. 6.
Niewielka liczba elementów i ich duże wymiary powodują, że montaż jest łatwy, ale... dopiero po zamontowaniu czujnika FC30. Jest on niestety dostępny wyłącznie w obudowie QFN 3×5×0,9 mm, więc jego montaż wymaga sporej wprawy. Jak sobie z nim poradzić, pokażemy w jednym z kolejnych wydań EP.
Andrzej Gawryluk
- R1...R3: 820 Ω/0805
- C1: 10 µF/16 V SMDA
- C2, C3: 100 nF/0805
- U1...U3: 74V1G125STR
- U4: FC30
- D1...D3: diody LED 0805
- Con1: złącze szpilkowe gold-pin 2×5