Forum: Mikrocontroller und Digitale Elektronik Wieviele Drehencoder kann ein atmega8 auswerten?


von tombaer (Gast)


Lesenswert?

Hallo zusammen!

Zuerst wollte ich anmerken, dass ich noch keine praktische Erfahrung mit 
der Programmierung von Mikrokontrollern habe. Literatur, Soft- und 
Hardware sind aber schon vorhanden ;). Meine Frage ist daher vorerst 
noch rein theoretischer Natur.

Aufgabe:
Ich möchte einen Midi-Controller bauen, der einen Musiksynthesizer 
steuern soll.
Es sollen Panasonic-Drehencoder von Pollin verwendet werden, die über 
serielle Schieberegister 74HC165 abgefragt werden (links, rechts und 
Taster).
Nach Auswertung und Entprellung soll der entsprechende Parameter 
überprüft, verändert und über Midi an den Synthie gesendet werden.
Da der Synthesizer ziemlich komplex ist, wären zur optimalen Bedienung 
ca. 200 Encoder notwendig.
Es soll vorzugsweise mit Bascom gearbeitet werden, C oder ASM ist aber 
auch kein Hindernis.

Frage:
Kann man diese Aufgabe mit EINEM Atmega8-16Mhz lösen oder sollte man 
besser mehrere Atmegas einsetzen (z.B. 32 Encoder pro Atmega, 
Übermittlung der Daten über I2C an einen Zentralatmega, usw.)?

Ich freue mich auf jede Antwort.

Gruß von Thomas

von Matthias L. (Gast)


Lesenswert?

>ca. 200 Encoder

Das ist jetzt ein Scherz??

Schonmal über ein anderes, sinnvolleres Konzept nachgedacht?
zum Beispiel ein Encoder + Display und Menuführung??

von mr.chip (Gast)


Lesenswert?

> Schonmal über ein anderes, sinnvolleres Konzept nachgedacht?
> zum Beispiel ein Encoder + Display und Menuführung??

Im Audio-Bereich sind eigentlich sehr, sehr viele Knöpfe völlig normal. 
Mischpulte bringen es locker auf einige hundert Knöpfe, auch wenn man 
problemlos nur die Knöpfe für einen Kanal sowie einen Kanal-Auswahlknopf 
anbringen könnte. Aber offenbar ist sowas in der Hitze des Gefechts zu 
unpraktisch.

von (Gast)


Lesenswert?

www.ucapps.de ist dein Freund.

Da solltest du vernünftige Lösungen für dein Midi-Problem finden.

■

von Peter D. (peda)


Lesenswert?

Einen ATtiny13 pro Encoder und dann jeweils 20 davon per SPI mit nem 
ATMega8 auslesen.


Peter

von Falk B. (falk)


Lesenswert?

@ tombaer (Gast)

>Kann man diese Aufgabe mit EINEM Atmega8-16Mhz lösen oder sollte man
>besser mehrere Atmegas einsetzen (z.B. 32 Encoder pro Atmega,
>Übermittlung der Daten über I2C an einen Zentralatmega, usw.)?

Hmm. Mal rechnen.

Sagen wir mal eine Abtastrate von 200 Hz, mach 5ms pro Abtastperiode. In 
dieser Zeit müssen 200x3 = 600 Bit seriell eingelesen werden. Das dauert 
bei 16 MHz Takt und Hardware SPI ca. 75us, mit Softwareoverhead 
vielleicht 100us. Bleiben für die Auswertung pro Encoder ca. 
4,9ms/200=~25us, was bei 16 MHz Takt 400 Takten entspricht. Puhhh, da 
ist der AVR schon ziemlich ausgelastet, in BASCOM wird das wohl eher 
knapp. C und ASM sollten das schaffen. In BASCOM sollte man pro AVR 
vielleicht nur 50 Encoder auswerten, macht dann 4+1 AVR.

MFG
Falk

von Falk B. (falk)


Lesenswert?

@ Peter Dannegger (peda)

>Einen ATtiny13 pro Encoder

Ist das nicht ein wenig Overkill?

Mfg
Falk

von Jan M. (mueschel)


Lesenswert?

@Falk: Diese Drehencoder müssen häufiger ausgelesen werden, das 
Datenblatt garantiert nur eine Phasenverschiebung der beiden Ausgänge 
von 2.5 ms - 500 bis 1000 Hz sind also Pflicht.

Je nach Aufwand der Midi-Übertragung würde ich also zwei bis vier mega8 
vorschlagen.

von tombaer (Gast)


Lesenswert?

Hallo!

ucapps.de kenne ich schon - die Idee mit den Schieberegistern habe ich 
von dieser Seite (DIN-Modul). Ich möchte aber mit atmegas arbeiten.

Und es sind wirklich um die 200 Encoder erforderlich. Für eine intuitive 
Bedienung ist das hangeln durch verschachtelte Menues eher hinderlich. 
Wer schon einmal an einem modularen Synth geschraubt hat, kann das 
verstehen. Das Schwurbeln an den Drehknöpfen grenzt schon fast an 
Wolllust ;)

So wie es ausschaut, ist wohl eine Arbeitsteilung sinnvoll. Das werde 
ich dann bei meinen ersten Experimenten erforschen.

Auf jeden Fall vielen Dank für alle Antworten!

Viele Grüße von Thomas

von Falk B. (falk)


Lesenswert?

@  Jan M. (mueschel)

>@Falk: Diese Drehencoder müssen häufiger ausgelesen werden, das
>Datenblatt garantiert nur eine Phasenverschiebung der beiden Ausgänge
>von 2.5 ms - 500 bis 1000 Hz sind also Pflicht.

Naja, kommt immer auf die Drehzahl an. Wie schnell kann man die Dinger 
sinnvoll maximal drehen und wieviele Pulse/Umdrehung geben die aus?

MFG
Falk

von Jan M. (mueschel)


Lesenswert?

@Falk: Die Angabe bezieht sich auf 60 U/min, also eine Umdrehung pro 
Sekunde. Wenn man nur eine Viertel Umdrehung macht (= 4 Schritte = 8 
Zustandsänderungen) und ohne mitzuzählen "einfach mal ein Stück dreht" 
ist man deutlich schneller.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ich würde als Konzept mehrere Tiny2313 vorschlagen, die jeder 4 oder 5 
Drehencoder abfragen und per "wired OR" UART an einen Mastercontroller 
melden, der sie zyklisch abfragt. So kann man Peters Idee vielleicht 
materialsparender umsetzen. Als Drehencoder würde ich keinesfalls zu den 
Panasonic-Teilen von Pollin raten, sondern eher zu den PEC11 von 
CSD-Electronics. Die haben ein schwächeres Rastmoment und ein besseres 
Feeling, außerdem eine bessere Kontaktqualität. Die Abfrage bei den 
PEC11 sollte in einem Raster von 1ms erfolgen, um auch schnelle 
Bewegungen mitzubekommen.

von Erik D. (dareal)


Lesenswert?

Warum eigentlich nicht irgendwelche programmierbaren Logic-ICs oder auf 
andere Weise das ganze realisieren?

200 Drehencoder sind schon ne Menge. Allein die Verkabelung bzw. Platine 
wird nen schönes Ding :D

von Falk B. (falk)


Lesenswert?

@ Erik D. (Firma privat) (dareal)

>Warum eigentlich nicht irgendwelche programmierbaren Logic-ICs oder auf
>andere Weise das ganze realisieren?

Hmm, gute Idee. Ein kleiner FPGA + Schieberegister zur Porterweiterung 
könnte das spielend schaffen. Und wenn man dort noch nen kleinen uC 
reinsetzt, ist ein ein schönes System on a Chip (SoC).

MfG
Falk

von Benedikt K. (benedikt)


Lesenswert?

Falk Brunner wrote:

> Naja, kommt immer auf die Drehzahl an. Wie schnell kann man die Dinger
> sinnvoll maximal drehen und wieviele Pulse/Umdrehung geben die aus?

Ich bin mittlerweile auf etwa 5kHz hoch gegangen mit der Abtastrate. 
Dann kann man schon relativ schnell drehen. Man kann aber immer noch 
ohne großen Aufwand so schnell drehen, dass die Software Impulse 
überspringt. Unter 1kHz braucht man bei den Pollin Drehgebern garnicht 
erst anfangen.
Bei größeren Anzahlen würde ich daher auch zu einer Hardwarelösung 
greifen, alleine schon wegen den Pins.

von Mano W. (Firma: ---) (manow)


Lesenswert?

Welcher Synthie soll es denn sein und was willst Du eigentlich senden 
(ein Control Change oder kennt der Synthie auch ein Data 
Increment/Decrement)? Soll die Drehbank ein kleines Display oder 
LED-Kränze besitzten?

von Erik D. (dareal)


Lesenswert?

Gibt es denn vllt. sogar fertige Auswertungs-ICs für Drehencoder?

Wie funktionieren solche programmierbaren Logiken und wie werden sie 
programmiert?

von Falk B. (falk)


Lesenswert?


von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wenn man den Aufbau modular gestaltet, dann ist die Verkabelung auch mit 
der Mehr-Controller-Variante sehr moderat: 5V, Masse und Daten. Die 
Leitungen treffen sich auf der Hauptplatine, können als Ring- oder 
Stichleitung ausgeführt werden. Zusätzlich zum Abfragen der Drehencoder 
kann der Einzelcontroller dem Anwender noch einige Lichtsignale über 
LEDs darstellen, was der intuitiven Bedienung zuträglich ist. Bei einem 
einzigen Logik-IC mit hunderten von Pins wird die Verkabelung sicher 
noch wuliger (3 Leitungen zu jedem Encoder) und ist eigentlich nur auf 
einer großen Hauptplatine, auf die dann alle Drehencoder aufgelötet 
werden, zu beherrschen. Das hat aber wieder mechanisch gesehen 
Nachteile. Weiterhin arbeiten die meisten CPLDs oder FPGAs mit kleineren 
Betriebsspannugen (3.3 oder 2.5V), so daß man für die Anbindung an den 
Hauptcontroller Pegelwandler benötigt. Modulbauweise hat sich bei 
Audiotechnik bewährt, da man im Fehlerfall sozusagen on-the-fly auf der 
Bühne schnell mal ein paar Module auswechseln kann ;-).

von Matthias (Gast)


Lesenswert?

@ Erik D. (Firma privat) (dareal)

Ja, allerdings keine mechanischen.
http://www.austriamicrosystems.com/03products/20_rotary_encoders.htm

Die Teile haben eine Art SPI Schnittstelle. Damit sollte man mehrere 
Problemlos kaskadieren können. Ausserdem liefern die Teile immer einen 
absoluten Wert.

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.