Pfad:
Home =>
AVR-DE =>
Anwendungen =>
Taster und Schalter an einem ADC =>
Tastenfeld => Widerstandsmatrix Grafik Tool
 |
AVR-Einchip-Mikrokontroller AT90S, ATtiny, ATmega
von ATMEL in praktischen Beispielen |
 |
Software für Tastenfelder mit 1 bis 16 Tasten am ADC eines AVR
Diese Seite zeigt die Software zum Anschluss und Betrieb eines Tastenfelds
mit 1 bis 16 Tasten an einem ADC-Eingang eines AVR. Beschrieben wird ein
grafisches Programm zur Optimierung der Widerstandsmatrix.
- Die Software,
- Wie sie funtioniert,
- Was sie produziert,
- Welche Erfahrungen damit gemacht wurden,
- Feedback.
Die Software ist in Delphi-Pascal geschrieben. Die gezippte ausführbare
Datei für Win32 ist hier verfügbar.
Die folgenden Fensterbestandteile sind zu erkennen:
- Auswahl der Spalten- und Zeilen-Anzahl (1+1...4+4),
- Auswahl der Widerstandsreihe (E12 und E24 sind realistisch, E48 und E96 sind eher
theoretisch) und der Toleranz (5% und 1% sind praktikabel, 2% ist eher
theoretisch),
- Auswahl der ADC-Auflösung (8 Bit für kleinere Felder bis 12 Tasten,
10 Bit für größere Felder bis 16 Tasten),
- das aktuelle Schaltbild und die Widerstände.
Auf der rechten Seite des Fensters
- kann die Anzahl der Näherungsschritte ausgewählt werden, und
- die aktuellen Ergebnisse werden dargestellt.
.
Die Software kann auch unter Wine in Linux gestartet werden. Der einzige
Unterschied ist nur der unterschiedliche Font.
To the top of the page
2.1 Auswahl der Tastenfeldgröße
Die Anzahl an Spalten und Zeilen bewirkt einen Neustart der Widerstandsmatrix.
Das kann auch dazu verwendet werden, um einen Neustart zu provozieren, wenn
ein Näherungslauf kein gutes Ende genommen hat.
2.2 Auswahl des Matrixmodus
Je zwei Varianten können ausgewählt werden:
- Die "Rmode"-Auswahl schaltet entweder Einzelwiderstände
oder gestapelte Widerstände ein.
- Die "Ymode"-Auswahl bewirkt, dass der ADC-Anschluss entweder
an R1 (exklusiv) oder an R3/R4 angeschlossen ist (inklusiv). Das ändert
die Spannungsberechnung entsprechend.
2.3 Widerstandstypen und ADC-Auflösung
Die Widerstandsreihe und die AD-Wandler-Auflösung werden automatisch
der Größe des Tastenfelds angepasst. Das Ändern der E-Reihe
kann sich in Änderungen von Widerstandsreihen bemerkbar machen, da
Widerstandswerte in ihr nahestes Äquivalent in der Zielreihe umgewandelt
wird. Das Ändern der ADC-Auflösung kann die Anzahl Überlappungen
verändern und verändert auch die Ergebnistabelle und den
Assembler-Quellcode (siehe unten).
2.4 Näherungsschritte
Die Schaltfläche "Step" vollführt einen einzelnen
Näherungsschritt, d.h.
- ein Widerstand oberhalb R1 wird zufällig ausgewählt,
- die aktuellen Distanzen zwischen den Sollwerten und den Istwerten
für alle Tasten werden aufsummiert,
- diesselben Summen werden gebildet, wenn der gewählte Widerstand
auf den nächsten Wert und den vorausgehenden Wert der E-Reihe
gesetzt wird,
- der Widerstandswert wird neu gesetzt, wenn sich diese Summe bei
höherer oder niedrigerer Widerstandswahl verringert (der
Widerstandswert wird rot eingefärbt)
Das Schaltfeld "Run low" führt 100 Näherungsschritte
auf einmal mit den niedrigeren Widerständen aus (R2 bis R4 im Fall
mit 16 Tasten, die Schaltfläche "Run all" variiert alle
Widerstände außer R1. 100 Schritte reichen meistens schon
aus, um das Optimum zu erreichen. Alle Widerstände, die sich beim
letzten Lauf verändert haben, werden rot eingefärbt.
Die Anzahl Durchläufe und die Anzahl an Überlappungen werden
angezeigt. Die Überlappungen sind die Summe aller Fälle, bei
denen der gemessene Spannungspegelbereich innerhalb denjenigen anderer
Tastenkombinationen liegt. Die Anzahl Überlappungen sollte Null
sein.
Da die Widerstandsauswahl zufällig erfolgt, kann bei jedem Durchlauf
ein anderes Ergebnis resultieren. Es macht daher bei nicht erfolgreichem
Abschluss Sinn, weitere Durchläufe durch Auswahl der
Spalten-/Reihen-Einstellung zu starten.
2.5 Manuelle Änderung von Widerstandswerten
Durch Klicken auf ein Widerstandssymbol im Schaltbild öffnet sich
ein Eingabefeld, das die Eingabe eines neuen Wertes ermöglicht.
Die Eingabe kann k, K oder M enthalten. Ein Klick auf die Schaltfläche
"Set" ändert den Wert entsprechend.
To the top of the page
Wenn der letzte Näherungsschritt die gleiche Abstandssumme und Null
Überlappungen ergab, sind die drei Schaltflächen
"Save as ...", "Save" und "Asm table"
aktiv. Durch Drücken der Schaltflächen wird folgendes bewirkt:
- "Save as ..." speichert das Schaltbild als Grafikdatei
entweder als Bitmap (BMP)- oder als gif (GIF)-Datei,
- "Save" schreibt die Liste der Widerstände in eine
Textdatei,
- "Asm table" schreibt eine Assembler-Include-Datei.
Unter Windows werden die Dateien per Default in den Pfad geschrieben,
der die ausführbare Datei enthält. Unter Linux-Wine ist der
Speicherort der Dokumenten-Ordner. Andere Speicherorte können im
Dialog angegeben werden.
3.1 Schaltbild
Der Dateiname beginnt mit "RMat_" und enthält danach
- die Varianten StIn, SiIn, StEx oder SiEx der Matrix,
- die E-Reihe,
- die Widerstandstoleranz, und
- die ADC-Auflösung.
In diesem Falle ist der Name der Grafikdatei
"RMat_StIn_E12_1%_10bit.gif".
To the top of the page
3.2 Liste der Widerstände
Die Widerstands-Textdatei enthält die Widerstände als reiner
ASCII-Text.
3.3 Assembler-Include-Tabelle
Die Include-Tabelle "(Dateiname).inc" sieht so aus:
; C4R4 keypad, Inclusive, Stacked
; Decimal table for assembler
Keytable: ; lower limit, upper limit+1, 'Key'
.DW 20, 22 ; '1'
.DW 54, 57 ; '2'
.DW 66, 70 ; '3'
.DW 84, 88 ; 'A'
.DW 88, 92 ; '4'
.DW 214, 222 ; '5'
.DW 253, 262 ; '6'
.DW 304, 314 ; 'B'
.DW 316, 326 ; '7'
.DW 569, 580 ; '8'
.DW 623, 634 ; '9'
.DW 683, 693 ; 'C'
.DW 732, 741 ; '*'
.DW 896, 901 ; '0'
.DW 918, 923 ; '#'
.DW 940, 944 ; 'D'
.DW 0 ; table end
Keyvalues:
.DB "123A456B789C*0#D" ; Key values ASCII
Sie kann mit der Direktive .INCLUDE "(Dateiname).inc"
direkt in den Quellcode eingelesen werden.
Bitte beachten, dass beim 8-Bit-ADC Bytes, beim 10-Bit-ADC Worte in der
Tabelle stehen.
Der Inklusiv-Modus arbeitet in den meisten Fällen erfolgreich und
endet mit Null Überlappung. Wenn nicht, einfach neu starten. Der
Exklusiv-Modus funktioniert nur mit 12 und weniger Tasten. Ab neun
Tasten und mehr muss schon auf 1%-Widerstände oder 10-Bit-ADC
umgestellt werden. Bei 16 Tasten endet die Näherung nahezu immer
erfolglos und es muss auf manuelle Änderungen ausgewichen werden.
Die Varianten mit gestapelten oder einzelnen Widerständen
unterscheiden sich bezüglich ihrer Näherungseigenschaften
kaum.
Feedback bitte an info (at) avr-asm-tutorial.net, (at) durch @ ersetzen
und Leerzeichen entfernen.
To the top of the page
©2014 by http://www.avr-asm-tutorial.net