Pfad: Home => AVR_DE => Anwendungen => Schalter und Tasten am ADC => Tasten am ADC => VR-RL-Tasten   This page in English: Flag EN Logo
VR/RL-Tasten mit Widerstaenden Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega and ATxmega
Vor-/Rückwärts und Rechts/Links-Tasten

Vor-/Rückwärts- und Rechts-/Links-Tasten an einem AD-Wandler-Kanal


1 Spezialtasten

Um ein Automodell zu dirigieren braucht man zwei Tastenpaare: eines das Vorwärts und Rückwärts und eines das Links und Rechts bewirkt. In der Mitte der beiden Tasten ist jeweils Niemandsland und es wird entweder gar nix verändert oder auf Mittenstellung gestellt.

Zwei Spezialzustände sind noch zu berücksichtigen: wird die Vorwärts- und die Rückwärts-Taste gleichzeitig gedrückt, sollte das Modell stehenbleiben (Schnell-Stop). Der zweite Fall: Wenn die Links- und die Rechts-Taste gleichzeitig gedrückt werden, sollte das Modell in Mittenstellung gehen (richtungsneutral).

Schalbild der Vorwaerts/Rueckwaerts und Rechts/Links-Kombination Um diese vier Tasten zu erkennen, braucht es vier Input-Pins oder halt einen einzigen ADC-Pin. Der produziert bei den elf verschiedenen Zuständen elf verschiedene Spannungspegel, aus dem dann Controller sich das passende aussuchen und darauf reagieren kann. Es wird dabei unterstellt, dass die Taster in Mittenstellung aus sind (entweder AN-AUS-AN-Taster oder, noch besser, zwei separate Einzeltaster).

Sollwerte der Spannungen am ADC Da bei zwei gleichzeitig geschlossenen Tasten deren angeschlossene Widerstände parallel geschaltet werden, ist die Aufgabe, die Widerstandswerte optimal einzustellen, nicht trivial. Ich habe dafür die Soll-Spannungen am ADC die linksstehende Tabelle erstellt, um den elf Zuständen eindeutige Spannungen zuzuweisen.

Die Software zum Ermitteln der Widerstandswerte

Software fuer die Naeherung Die Software ist in Free-Pascal geschrieben. Der Source-Code ist hier, die für Win64 kompilierte Software ist hier erhältlich. Sie ermöglicht Die an einem 8-ADC abzulesenden Werte und der durch die Toleranzen verursachten Wertebereiche und die Anzahl der Überlappungen der Spannungsbereiche können beobachtet werden (sollte bei erfolgreicher Iteration Null sein). Für die Kontrolle mit dem Voltmeter sind noch Nominal-Spannungen und die Sollspannungen bei 5V Betriebsspannung angegeben.

Bei der Iteration werden nur R1 bis R4 zufällig ausgewählt und nach unten oder oben verändert, R5 kann nur manuell geändert werden.

Mit der Taste w wird der derzeitige Zustand in eine Textdatei geschrieben. Das Folgende zeigt deren Inhalt an einem Beispiel.
 Resistor matrix for encoding Forw/Neutral/Backw and Left/Neutral/Right keys
 ---------------------------------------------------------------------------
 Resistor matrix    Res-Value      Mode  min - nom. -  max Delta  mV@5V  mV-Sh
 (+) (+)  (+) (+)    R1=10k     Off-Off    0 -    0 -    5     0      0     0
  |   |    |   |     R2=5k1     Bck-Off   63 -   64 -   64     0   1241  1250
  -   -    -   -     R3=2k2     For-Off   99 -  101 -  102    22   1964  1550
 |R| |R|  |R| |R|    R4=1k      F+B-Off  125 -  127 -  128    -4   2471  2550
 |1| |2|  |3| |4|    R5=3k3     Off-Lft  152 -  154 -  155     0   3000  3000
  -   -    -   -                Bck-Lft  164 -  166 -  167     0   3233  3250
  | O |    | O |    Row=E24     For-Lft  174 -  175 -  176    -2   3411  3450
  o   o    o   o    Tol=1%      Off-Rgt  196 -  196 -  197    -1   3837  3850
   \ /      \ /                 Bck-Rgt  200 -  201 -  202     0   3920  3925
    o        o                  For-Rgt  203 -  204 -  205    -1   3989  4000
    |        |                  Off-R+L  211 -  212 -  213     0   4138  4150
    +--------+-O ADC                                   Sum=   30
     ----    |      
 |--| R5 |-- +                                    Overlaps=    0
     ----                                  Iteration steps=  100
                                Successful iteration steps=   25
  (C)2020 by DG4FAC                 Last iteration step on=   R2 (successful up)

; Assembler table
ResTable: ; First value: start of key, Second value: end of key plus 1
.db 0, 6 ; Off-Off, V=    0
.db 63, 65 ; Bck-Off, V= 1241
.db 99, 103 ; For-Off, V= 1964
.db 125, 129 ; F+B-Off, V= 2471
.db 152, 156 ; Off-Lft, V= 3000
.db 164, 168 ; Bck-Lft, V= 3233
.db 174, 177 ; For-Lft, V= 3411
.db 196, 198 ; Off-Rgt, V= 3837
.db 200, 203 ; Bck-Rgt, V= 3920
.db 203, 206 ; For-Rgt, V= 3989
.db 211, 214 ; Off-R+L, V= 4138
Mit der Assemblertabelle am Ende lässt sich bequem der Quellcode für die Auswertung schreiben.

Noch ein paar Hinweise:

Fünfertaste Und nun noch eine Variation: warum nicht eine fünfte Taste hinzufügen und die direkt mit der Betriebsspannung verbinden? Diese Super-Taste, z. B. in der Mitte der vier Tasten, kann als Not-Aus oder Alarm dienen. Wer so was braucht, fügt die einfach hinzu, fügt in der Software noch eine Abfrage hinzu, die das Entsprechende einleitet, wenn der ADC an seiner Obergrenze ist (8 Bit: > 250). Das geht ratzfatz und ist super-zuverlässig.

Viel Erfolg.

©2020 by http://www.avr-asm-tutorial.net