zauważyłem,że do realizacji kokpitu F16 potrzeba trochę enkoderów.W moim przypadku liczba 50 jest dużym zapasem.
OK, odpaliłem nawet 80 enkoderów :banan (więcej się nie da ze względu na ilość wejść matrycy) wymagało to nieco zabawy w optymalizacje kodu, ale w końcu poszło.
W międzyczasie zetknąłem się z problemem, jakim jest jakość enkoderów.
Normalnie przebieg sygnału powinien wyglądać tak: (sygnały przesunięte w fazie o 90stopni)

Niestety - w praktyce wygląda to dużo mniej idealnie. Musiałem dostosować firmware do obsługi 2 typów enkoderów, które akurat posiadam:
- enkoder bez przycisku, 12 kroków/obrót
- enkoder z przyciskiem w osi, 24 kroków/obrót
Pierwszy generuje takie przebiegi:
obrót w prawo:

obrót w lewo:

Widać bardzo mocną degenerację sygnału i praktycznie brak przesunięcia fazowego z jednej strony. Okres istnienia przesunięcia fazowego jest czasem bardzo mały: 240 uS, co wymagało by odpytywania z częstotliwością ponad 8000 razy na sekundę, co w naszym przypadku nie jest możliwe.
Drugi typ enkodera (z przyciskiem w osi) ma lepszy kształt sygnału, generuje za to dużo większy jitter
obrót w prawo:

obrót w lewo:

Ze względu na większą ilość impulsów na obrót timingi też są bardziej krytyczne - przesunięcie sygnałów bywa i na poziomie 160uS (wymaga próbkowania 12000/s)
Do tego poważny jitter: tu o amplitudzie 4.6V i czasie trwania kilku szybkich impulsów !

Generuje dodatkowe, przekłamujące impulsy:



Przy powolnym obracaniu (nie szybciej niż 1 sek/obrót) układ działa bezbłędnie. Przy bardziej dynamicznym obracaniu zaczyna generować "fałszywe klawisze" tzn - w ciągu klawiszy przypisanych obrotowi w prawo pojawia się jeden lub kilka klawiszy przypisanych obrotowi w lewo.
Obawiam się, że enkodery jeszcze gorszej jakości mogą nie pracować idealnie.
Niestety - nie mam tu zbyt wielkiego pola manewru i jeśli taka jakość wystarczy - wolał bym na razie przy niej pozostać. Jedyny sposób na złagodzenie tych dolegliwości to obniżenie ilości stosowanych przez użytkownika elementów i zwiększenie (ustawienie w opcjach programu konfiguracyjnego) wartości filtra cyfrowego (ustawiane osobno dla enkoderów i osobno dla przycisków i przełączników)
Co Wy na to ?