Forum: Mikrocontroller und Digitale Elektronik Wieviele Encoder bei AVR / Atmega?


von Alexander W. (wackazong)


Lesenswert?

Hallo,

ich möchte so etwas in der Art wie eine Midibox realisieren 
(www.ucapps.de), bin aber noch am überlegen auf welcher 
Mikrocontrollerplattform ich das aufbaue. Ich neige eher zu AVR, scheint 
ein bisschen einfacher zu programmieren zu sein. Ich brauche ca. 200 
Taster und 40 Drehgeber, die ausgelesen werden müssen. Daher nun meine 
Frage:

Wieviele Drehgeber kann ich mit einem AVRuC (meinetwegen der Mega644) 
zuverlässig auslesen (per Timerinterrupt, hab ich schon gelesen)?

Bei den Buttons genau dasselbe: Wieviele maximal für einen uC?

Es hat doch sicher schon einmal jemand so etwas gebastelt auf einem AVR, 
oder nicht?

Ich habe im Forum gesucht, und viele Einträge zu "Wie lese ich einen 
Drehgeber/Encoder aus" gefunden, aber nichts zur Anzahl.

Wäre für ein paar Tips sehr dankbar.

ALEXander.

von Niels H. (monarch35)


Lesenswert?

Ohne eine Anforderung an die Hardwareumgebung zu stellen, ist deine 
Frage ist so nicht zu beantworten. Absolute Zahlen schonmal garnicht.

Es gibt sicherlich viele Wege, auf Drehgeber zuzugreifen und sie 
auszulesen. Jedenfalls könnte ich mir Wege vorstellen, die es 
ermöglichen, beliebig viele Drehgeber anzuschliessen. Das ist natürlich 
auch mit einem gewissen Aufwand verbunden. Selbiges gilt auch für die 
Taster.

von Kuen (Gast)


Lesenswert?

>Ich brauche ca. 200 Taster und 40 Drehgeber, die ausgelesen werden müssen.

Also brauchst du im einfachsten Fall einem µC mit ca. 240 I/O-Ports. 
Oder man schaltet eine Logik davor, Tastermatrix oder ähnliches. Dann 
sind es natürlich weniger.


>Wieviele Drehgeber kann ich mit einem AVRuC (meinetwegen der Mega644)
>zuverlässig auslesen (per Timerinterrupt, hab ich schon gelesen)?

Kannst es per Timerinterrupt machen oder über die externen machen. Wie 
viele du zuverlässig auslesen kannst hängt natürlich von der Anzahl der 
möglichen Interrupteingänge ab und vom den Signalen selber die 
ausgewertet werden sollen.

von Jörg B. (manos)


Lesenswert?

Was sind das für Tasten? Wie viele können gleichzeitig gedrückt sein, 
wie lange sind die mindestens gedrückt, wie schnell max.? Evtl. geht 
sowas dann mit Schieberegistern.
Wenn es sich um Keyboard-Tasten (Musik, nicht Tastatur) handelt, was ist 
mit der Anschlagdynamik?

von T.Danielzik (Gast)


Lesenswert?

Wichtig an der Stelle ist noch,
was soll mit den eingelesenen Drehgeberwerten geschehen?
Nur anzeigen, oder an eine Steuerung zur Regelung weiterreichen?

von Alexander W. (wackazong)


Lesenswert?

Hallo,

vielen Dank für die Fragen, ich versuche mal ein bisschen ausführlicher 
zu werden:

- Die Taster können gleichzeitig gedrückt werden. Maximal 10 
gleichzeitig, jeder Finger ein Taster.
- Wie lange sind die Taster gedrückt? So kurz wie man das mit einem 
Finger machen kann. Ich verwende diese kleinen Printtasten, die man 
direkt auf die Platine löten kann.
- Die Encoder können gleichzeitig bedient werden, allerdings habe ich 
nur zwei Hände, daher werde ich maximal 2 Encoder gleichzeitig drehen 
können.
- Anschlagdynamik spielt keine Rolle.

Ich denke es sollte mit Schieberegistern gehen, so wird das bei ucapps 
auch gemacht. Dort gehen auf einem 40MHz PIC 64 Encoder (ohne Taster) 
gleichzeitig, das ist aber auch in Assembler programmiert und jahrelang 
optimiert, ich würde es eben in C machen wollen.

Ich hoffe das ich mein Projekt ein bisschen besser erklären konnte. Wenn 
nicht, gerne weiterfragen, das ist jedenfalls wirklich das schnellste 
Forum was ich bisher unter den Fingern hatte :)

Gruss, ALEXander.

von Alexander W. (wackazong)


Lesenswert?

Ergänzung:

- Die Drehgeberwerte und Tasterwerte sollen per MIDI oder USB an einen 
Computer geschickt werden.
- Ganz wichtig noch: Die Drehgeber sollten Beschleunigung unterstützen: 
Je schneller ein Drehgeber/Encoder gedreht wird, um so grösser sollten 
die übermittelten Schritte sein (ist im MIDI-Controller Bereich üblich 
und sehr praktisch)

Danke, A.

von Jörg B. (manos)


Lesenswert?

Also 10 Tasten gleichzeitig ist dann wahrscheinlich nix mehr für Matrix, 
aber Schieberegister sollte machbar sein.
Man müsste dann halt mal ausrechnen, in wie viel ms die 200 Bit des 
Schieberegisters eingelesen und ausgewertet sind.
Ist natürlich abhängig von Programmiersprache und Taktfrequenz.

von Jörg B. (manos)


Lesenswert?

Alexander W. wrote:
> - Ganz wichtig noch: Die Drehgeber sollten Beschleunigung unterstützen:
Ist eine frage der Software, nicht der Hardware.

von Alexander W. (wackazong)


Lesenswert?

Hallo,

klar, die Schnelligkeit der Auswertung ist abhängig von 
Programmmiersprache und Taktfrequenz.

Sagen wir mal Taktfrequenz 16MHz (Atmega32) und Programmiersprache C. 
Zusätzlich das Beschleunigungsfeature, was ja auch Zyklen kostet.

Über den Daumen gepeilt (ich weiss es einfach nicht, ich denke ihr könnt 
das evtl. besser abschätzen), wieviele Atmegas32 braucht man?

Einen?

Zehn?

Hundert?

Danke! Alexander.

von Falk B. (falk)


Lesenswert?

@ Alexander W. (wackazong)

Die 200 Tasten sind kein Thema. Ob nur per 16x16 Matrix oder über 
Schieberegister, das sind Peanuts. Deine 40 Drehgeber sind da schon 
etwas anders. Mal als Überschlag.

40 Drehgeber -> 80 Pins

32 Pulse/U, Max. Drehzahl 3 Hz -> 100 Hz

Einlesen mit 300 Hz über 10 Schieberegister -> 10..50us
Auswertung kann ich jetzt nicht abschätzen.

Hmmm. Vielleicht brauchst du einen uC für die USB Kommunikation und 
Tasten und einen zweiten für die Drehgeber. Aber mit 16 MHz takt solle 
es auch ein AVR schaffen.

MFG
Falk

von Jörg B. (manos)


Lesenswert?

Raten würde ich mal 2-3. Einer für die Encoder und einer für die Tasten. 
Vielleicht noch einen dritten der die Ergebnisse der beiden dann an den 
PC sendet.
Kann natürlich auch sein, dass man für die Encoder mehr benötigt 
abhängig davon wie man die abfragen kann (wenn auch da Schieberegister 
geht reicht evtl. einer).

von Falk B. (falk)


Lesenswert?

Für die Beschleunigung kann man sich hier Ideen holen.

Beitrag "Drehimpulsgeber drehgeschwindigkeitsabhängig auslesen"

MfG
Falk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.