Hi zusammen, bevor ich einen dummen Denkfehler mache und eine Platine falsch herstellen lasse kurz eine Frage: Ausgangssituation: Ich möchte 9 Drehencoder an einen AVR anschließen. Frage: kann ich diese einfach multiplexen (wie Beispielhaft im angehängten Schaltplan)? Aktive Encoder würde ich jeweils auf GND legen, 5V wäre inaktiv. Alle sollen gleichzeitig bedienbar sein. Sehe ich das richtig, das es so hardwaretechnisch funktioniert, vorausgesetzt die Abtastrate ist hoch genug? Danke und Gruß, Sam
sam schrieb: > Sehe ich das richtig ne, siehst du leider falsch. Was passiert, wenn in beiden Encoder gerade ein Schalter geschlossen ist? Dann werden die "inaktiven 5V" und die "aktiven 0V" miteinander kurzgeschlossen.
@ sam (Gast) >Alle sollen gleichzeitig bedienbar sein. Sehe ich das richtig, das es so >hardwaretechnisch funktioniert, vorausgesetzt die Abtastrate ist hoch >genug? Nein, dazu müssen in JEDE Zuleitung der Encoder Dioden. 1N4148 ähnlich. Für dein Multipexing brauchst du 8 IOs. Mit einem Schieberegister ala 74HC165 brauchst du nur 3 und kommst ohne Dioden aus, brauchst dann allerdings für jeden Eingang einen Pull-Up Widerstand.
Falk Brunner schrieb: > Mit einem Schieberegister ala > 74HC165 brauchst du nur 3 und kommst ohne Dioden aus, brauchst dann > allerdings für jeden Eingang einen Pull-Up Widerstand. Lohnt sich das wirklich? Ist es nicht einfacher/billiger/kleiner, einen µC mit ausreichend Pins zu nehmen?
sam schrieb: > Beispielhaft im angehängten Schaltplan ENC1_B und ENC2_B müsstest du dir da sowieso nochmal genauer ansehen...
sam schrieb: > kann ich diese einfach multiplexen (wie Beispielhaft im > angehängten Schaltpla Nein. Mindestens Trenndioden:
1 | +-+-+-+- GND |
2 | | | | | |
3 | R R R R |
4 | | | | | |
5 | +--o o--|>|--+-(-(-(-----+-- ENC12A |
6 | ENC1 -+ | | | | |
7 | +--o o--|>|----+-(-(--+ | |
8 | | | | | |
9 | | | | | |
10 | | | | | |
11 | +--o o--|>|------+-(--(--+ |
12 | ENC2 -+ | | |
13 | +--o o--|>|--------+--+----- ENC12B |
sam schrieb: > Alle sollen gleichzeitig bedienbar sein. Dann macht das sowieso wenig Sinn, schliesslich reduziert die Multiplexerei deine mögliche Abtastrate.
:
Bearbeitet durch User
sam schrieb: > Ausgangssituation: Ich möchte 9 Drehencoder an einen AVR anschließen. Dann nimm 18 Inputs des AVR.
Peter Dannegger schrieb: > sam schrieb: >> Ausgangssituation: Ich möchte 9 Drehencoder an einen AVR anschließen. > > Dann nimm 18 Inputs des AVR. Falls Dein AVR keine Portleitungen mehr übrig hat, dann nimm einen kleinen zweiten µC mit genügend Portleitungen, der die Daten einsammelt und seriell an Deinen AVR übergibt.
PIC4ever schrieb: > Falls Dein AVR keine Portleitungen mehr übrig hat, dann nimm einen > kleinen zweiten µC mit genügend Portleitungen, der die Daten einsammelt > und seriell an Deinen AVR übergibt. Genau, Multiplexing eben anders.
Lothar Miller schrieb: > sam schrieb: >> Beispielhaft im angehängten Schaltplan > ENC1_B und ENC2_B müsstest du dir da sowieso nochmal genauer ansehen... ups, ja stimmt. Das war nur ein Muster schnell zusammengeklickt. Da passt was nicht :) danke und gruß, sam
Peter Dannegger schrieb: > sam schrieb: >> Ausgangssituation: Ich möchte 9 Drehencoder an einen AVR anschließen. > > Dann nimm 18 Inputs des AVR. gerne, aber ich wollte gerne mit maximal TQFP44 auskommen. Dazu kommen noch: LCD Display, 9 Taster, I2C, UART, 2xPWM... Über I2C sind bereits etliche Ausgänge mit separatem AVR angebunden, insgesamt ca. 70 Output Pins. Die ganzen Eingaben hätte ich gerne zentral an einer Stelle "direkt" abgegriffen. Da dachte ich könnte ich am meisten an den Encodern an Pins sparen. Also einfach die Dioden ergänzen, dann sollte es ja passen. Gruß, sam
Die AVRs können mit 20 Mhz laufen, da sollte man als Anwender MaWin schrieb: > > Dann macht das sowieso wenig Sinn, schliesslich reduziert die > Multiplexerei deine mögliche Abtastrate. Meinst du man merkt als Anwender wirklich etwas von der Abtastrate? Ich würde annehmen das das umschalten zwischen den einzelnen Encodern so schnell geht, dass der Anwender nichts davon merkt!? lg sam
Warum eigentlich eine MCU nehmen? Die Encoder liefern doch ein Quadratursignal, richtig? Das kann man doch mit einem D-Flipflop pro Encoder problemlos dekodieren: ein Schalter kommt an den Takt, der andere an D und schon hat man am Ausgang Q die Drehrichtung, das Taktsignal liefert die Impulse. Denke ich zu einfach?
Pd G. schrieb: > Warum eigentlich eine MCU nehmen? > > Die Encoder liefern doch ein Quadratursignal, richtig? > Das kann man doch mit einem D-Flipflop pro Encoder problemlos > dekodieren: ein Schalter kommt an den Takt, der andere an D und schon > hat man am Ausgang Q die Drehrichtung, das Taktsignal liefert die > Impulse. > > Denke ich zu einfach? Vorsichtig ausgedrückt ... Du wirst schon mindestens ein JFK-Flop brauchen bzw speziell dafür hergestellte ausgestorbene Spezial ICs - oder auch Gebastel mit XORs usw.
Extra Logikbauteile lohnen sich eigentlich nicht. Die haben viele Pins, sind groß. Da kann man oft sogar billiger einen weiteren AVR nehmen und den dann so programmieren wie man es braucht. Hm, mit den ganzen Dioden ist wohl einfach ein größerer AVR am einfachsten. Ich suche gerade mal nach geeigneten, verfügbaren und nicht so viel teureren Atmegas... :)
Pd G. schrieb: > Denke ich zu einfach? Vor allem in die falsche Richtung - da werden 2 Signale umgewandelt in 2 Signale, inwiefern spart das I/O-Pins? Georg
Georg schrieb: > inwiefern spart das I/O-Pins? Stimmt, spart keine. War nur so ein Blitzgedanke, weil ich das so vor Jahrenden probiert hatte. Aber dass es keine D-FFs mehr geben soll... /kopfkratz
sam schrieb: > Dazu kommen noch: LCD Display, 9 Taster, Da hast du schon zwei Dinge die du multiplexen kannst und wo das wesentlich einfacher sein wird.
Mit 5 Widerständen lässt sich ein Drehgeber inkl. Taster mit einem ADC-Eingang abfragen. Den 9-ten könnte man mit ein bisschen Trickserei über den Aref-Pin einlesen. mfg.
:
Bearbeitet durch User
F. Fo schrieb: > sam schrieb: >> Dazu kommen noch: LCD Display, 9 Taster, > > Da hast du schon zwei Dinge die du multiplexen kannst und wo das > wesentlich einfacher sein wird. wie kann ich den beim LCD mehr Pins einsparen, als 4bit Ansteuerung? Ich habe jetzt 6 Pins + 2 PWM Pins (Kontrast, Hintergrundbeleuchtung) geplant Taster multiplexen ist doch wieder genau das gleiche wie mit Encodern. Im Endeffekt sind das doch auch nur Taster, die in der Software nur etwas anders ausgewertet werden müssen. Also meine Lösung ist jetzt ein AVR im TQFP-64, der hat genug I/Os um alles direkt anzusteuern. Ist zwar überdimensioniert, aber das wären auch schon die TQFP-44 gewesen... :) Gibt es eigentlich keine "modernen" TQFP-64 mehr von den Atmegas? Nur die alten Atmega 64/128/1281/2561? Bei den kleineren hat sich in den letzten Jahren ja etwas getan gehabt, hier wohl eher nicht?! lg sam
sam schrieb: > Taster multiplexen ist doch wieder genau das gleiche wie mit Encodern. > Im Endeffekt sind das doch auch nur Taster, die in der Software nur > etwas anders ausgewertet werden müssen. Nicht ganz, die Abtastrate ist weniger kritisch, ausserdem wenn immer nur eine Taste gedrückt wird kann man sich die Dioden sparen Um den Drehencoder direkt einzulessen braucht es 12 Pins, momentan hast du 8 vorgesehen, fehlen 4. Wenn man die 9 Taster in einer 3x3 Matrix anordnet braucht es 6 pins, werden also 3 frei. Einen weiteren Pin auftreiben und du bist dabei.
Lattice User schrieb: > sam schrieb: > >> Taster multiplexen ist doch wieder genau das gleiche wie mit Encodern. >> Im Endeffekt sind das doch auch nur Taster, die in der Software nur >> etwas anders ausgewertet werden müssen. > > Nicht ganz, die Abtastrate ist weniger kritisch, ausserdem wenn immer > nur eine Taste gedrückt wird kann man sich die Dioden sparen > > Um den Drehencoder direkt einzulessen braucht es 12 Pins, momentan hast > du 8 vorgesehen, fehlen 4. > > Wenn man die 9 Taster in einer 3x3 Matrix anordnet braucht es 6 pins, > werden also 3 frei. > > Einen weiteren Pin auftreiben und du bist dabei. ich glaube für mein Bastelprojekt ist es am einfachsten, einfach einen großen Atmega zu nehmen. Ich bin gerade sogar auf den 2560 gestoßen, das würde mir ein paar Zusatzplatinen für I/Os sparen. Der scheint durch die Arduino Leute auch recht verbreitet zu sein. Ich denke ich plane sogar mit dem. Kostet eh alles etwa das gleiche und bei Einzelproduktion, was solls. Dafür wird die Software dann einfacher, wenn (fast) alles in direktem Zugriff ist und nicht über externe AVRs angesteuert wird. lg sam
Vorausgesetzt die Taster werden nicht gleichzeitig bedient, dann brauchst du eigentlich nur ein ADC und verschiedene Spannungen, die fest definiert, um alle Taster mit einem Pin abzufragen. Das mit dem Display war ein Gedankenfehler. Hatte 7 Segment im Kopf. Außerdem brauchen die Taster nicht so eine hohe Abtastrate. Auch das gleichzeitige Drücken kannst du über Plausibilität abfangen. Das haben wir früher bei einem Fahrzeugtype so für den Bremsschalter gemacht.
:
Bearbeitet durch User
F. Fo schrieb: > . F. Fo schrieb: > Vorausgesetzt die Taster werden nicht gleichzeitig bedient, dann > brauchst du eigentlich nur ein ADC und verschiedene Spannungen, die fest > definiert, um alle Taster mit einem Pin abzufragen. > Das mit dem Display war ein Gedankenfehler. Hatte 7 Segment im Kopf. > Außerdem brauchen die Taster nicht so eine hohe Abtastrate. > Auch das gleichzeitige Drücken kannst du über Plausibilität abfangen. > > Das haben wir früher bei einem Fahrzeugtype so für den Bremsschalter > gemacht. ja, stimmt. Mit dem ADC würde gehen. Ich nehm jetzt einfach einen großen AVR, Platine wollte ich eh machen lassen. Da ist das am einfachsten und tut sich nicht einmal etwas von den Kosten. Dafür dann sehr einfach aus dem Programm heraus anzusprechen. :) lg sam
Die "Taster" sind keine (unabhängigen) Taster, sondern immer 2 gehören zusammen und ergeben ein Quadratursignal. Und in diesem Signal sind selbstverständlich ab und zu beide Schalter geschlossen...
:
Bearbeitet durch Moderator
@Lothar Miller (lkmiller): Da wird wohl gerade aneinander vorbei geredet, bei einem Encoder ist das klar, aber in den letzten Posts geht es nicht um die Encoder, sondern um: sam schrieb: > Dazu kommen noch: LCD Display, 9 Taster, I2C, UART, 2xPWM... ======== diese 'normalen' Taster, um dort die fehlenden Portpins einzusparen. Mit freundlichem Gruß - Martin
sam schrieb: > ich glaube für mein Bastelprojekt ist es am einfachsten, einfach einen > großen Atmega zu nehmen. Ich würde es einfacher finden, die Drehgeber mit einem ATmega48 auszuwerten und die Zählerstände per IIC abzufragen.
Martin Schlüter schrieb: > Da wird wohl gerade aneinander vorbei geredet Scheint so... Ich würde einfach alle Taster und den Drehgeber über Schieberegister einlesen. Das ist dann auch richtig zukunftssicher, weil für weitere 8 Eingänge einfach nochmal ein Schieberegister drangepappt werden kann...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.