Hallo, ich bin neu hier und möchte erstmal alle Forumler grüßen. Ich will sofort vorwegschicken, dass ich noch relativ neu bei den µC bin und die ganze Elektronik nur zum Spaß betreibe. Was mich z. Zt. brennend interessiert ist, wie man am geschicktesten vorgeht, wenn man mehrere Drehimpulsgeber (ca. 20 Stückt) an einem PIC betreiben möchte. Ich bastele da gerade an etwas aus dem Bereich Musik-Instrumente-Elektronik und möchte jeden Parameter im direkten Zugriff haben, denn ich hasse Mehrfachbelegung von Reglern, Tastern usw. Liebe Grüße
Denke mal dass es sich hier ja um relativ statische Zustaände bei den einzelnen Gebern handelt. Ich würde die Geber mit Pullups an ganz normale Portpins anschließen. Softwaremäßig das Ganze entprellen, wie bei einem Taster. Pro Drehgeber hast du zwei Signale (Anschlüsse) mit zwei möglichen Zustande. Macht in Kombination vier. Da machst du die für jeden einzelnen Drehgeber einen Zustandsautomat. Darin wird der alte Zustand mit den neuen verglichen. Ist den Zustand gleich, passiert nichts. Beim Kippen von dem einen in den anderen Zustand wird aufwärts, oder abwärts gezählt, je nachdem. Keine Sorge: Hört sich komplitierter an als es wirklich ist. Müsste soetwas sogar noch fertig irgendwo rumfliegen haben für einen PIC18. Werd das mal posten, wenn ich heut Abend zuhause bin.
Hast du schon mal einen ausgewertet? Wenn nicht fang damit an.
Klaus Ludwig schrieb: > Was mich z. Zt. brennend interessiert ist, wie man am geschicktesten > vorgeht, wenn man mehrere Drehimpulsgeber (ca. 20 Stückt) an einem PIC > betreiben möchte. Kommt darauf an: 20 Encoder sind 40 Ports und die musst du dann alle Abfragen entprellen ... Einen Encoder kannst du aber auch als State Machine mit 4 Zuständen sehen die selbiger mechanisch speichert. Dann kannst du alle zusammen auf 2 Ports legen die Eingänge multiplexen und den Status einzeln abfragen. Das braucht dann 22 Ports und du muss die Encoder mit Dioden entkoppeln. Die Abfragezeit für alle machst du dann etwas größer als die Entprellzeit, dann hast du nach 2 Abfragen den Zustand im Register und vergleichst den mit dem Originalzustand.
********************************************************************* gleicher Post auf http://www.fernando-heitor.de/index.php?option=com_jfusion&Itemid=53&jfile=index.php&topic=4672.msg23977 *********************************************************************
Udo Schmitt schrieb: > Hast du schon mal einen ausgewertet? > Wenn nicht fang damit an. Hallo, und nein, ich habe bisher noche keinen ausgewertet. Ich bin derzeit noch in der Überlegungs- und Planungsphase und will mich erst mal schlau machen, was geht. Der Vorschlag von "iaoffline" klingt sehr interessant. Ich hatte auch schon über multiplexen nachgedacht, aber ich war mir nicht sicher ob das geht. schneibva schrieb: > ********************************************************************* > > gleicher Post auf > http://www.fernando-heitor.de/index.php?option=com_jfusion&Itemid=53&jfile=index.php&topic=4672.msg23977 > > ********************************************************************* was willst du mir damit sagen? Wenn du darauf hinaus willst, dass ich die gleiche Frage in zwei Foren gestellt habe - ja. Mir war, nachdem ich den Thread im anderen Forum verfasst hatte, aufgefallen, dass jenes nicht sooo gut besucht ist. Darum habe ich hier erneut gepostet. Liebe Grüße
Bevor du mit multiplexen anfängst mach dir gedanken darüber wie viele Zustandsänderungen pro Sekunde bei einem schnell gedrehten Encoder auftreten können und wie lange die maximale Prellzeit ist. Falls die Prellzeit im Millisekundenbereich sein kann bin ich einem Multiplexing gegenüber etwas skeptisch eingestellt. Vor allem einem 10:1 oder gar 20:1. Und ehe du eine Monsterplanung machst bringe erst mal was kleines zum Laufen.
Man nutze Schieberegister als Porterweiterung und werte die Drehgeber solide aus. Siehe Artikel. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Porterweiterung_f.C3.BCr_Eing.C3.A4nge MFG Falk
Hallo Udo, du hast natürlich prinzipiell recht. Und ich werde natürlich nicht eine Platine für 20 Encoder erstellen um damit zu üben. Ich habe diesen Encoder von Alpha entdeckt: http://www.taiwanalpha.com/english/p_e_166.htm der mir 4 Bit liefert. Da müßte man doch gemütlich multiplexen können und den Encoder auswerten. Mir steht doch alle Zeit der Welt zur Verfügung, um die Daten auszulesen - oder mache ich einen Denkfehler? Gruß
Ich hätte auch vorgeschlagen einen Absolutwertgeber zu nehmen. Dann hast du die Positionen auch noch nach dem Einschalten. Falls die 16 Stellungen reichen kannst du die 4-Bitter Multiplexen.
Klaus Ludwig schrieb: > Ich habe diesen > Encoder von Alpha entdeckt: > http://www.taiwanalpha.com/english/p_e_166.htm der mir 4 Bit liefert. Das macht die Auswertung aber erheblich komplizierter. Ich würde vorschlagen, einen kleinen MC (14-Pin) für je 4 Encoder und dann per I2C oder SPI vom Master auslesen. Peter
Hallo Peter, also Job-Sharing bei µc. :-) Dann muß man mal schaun, wieviele PICs ich brauche. Ich nehme die dsPIC30xx. Da komme ich bei den DIP-Versionen bis zu max. 40 I/O. Gruß
@ Klaus Ludwig (elblindo) >Dann muß man mal schaun, wieviele PICs ich brauche. Ich nehme die >dsPIC30xx. Da komme ich bei den DIP-Versionen bis zu max. 40 I/O. OMG. Einen Ferrari kaufen und nicht mal Fahrad fahren können . . . Meine Herrn, für die paar IOs bei den schleichenden Abtastraten tuns ein paar Schieberegister für ein paar Dutzend Cent locker. Aber jedem das Seine . . . MFG Falk
74HC165 8-Bit Parallel-Input to Serial-Output Shift Register Reichelt: 34ct, du benötigst 2x20/8bit = 5 Stück davon. Zusammen 1,70 EUR...
Klaus Ludwig schrieb: > Dann muß man mal schaun, wieviele PICs ich brauche. Ich nehme die > dsPIC30xx. Da komme ich bei den DIP-Versionen bis zu max. 40 I/O. Das würde ich mir als rookie gut überlegen, für das was du mit den Encodern vorhast sind dsPics überdimensioniert . Falls du damit Signalprozessing vorhast dann mach deine Encoder erstmal als einen Pic und übe damit. Später kannst du Software immer noch in den komplexeren chips integrieren oder den encoderPic als Subsystem nehmen. Ein 4 Bit Encoder macht keinen Sinn, du brauchst doppelt so viele Leitungen als bei 2 Bit Encodern, gewinnst aber nichts. Fang mit einem an, dann 2 usw. Ob du später jedem Encoder nen Pic spendierst (macht aus deinen 41 Leitungen 3-4 (+- und z.B. Onewire I2C LIN etc) oder nen Drahtverhau bastelst ist eine Frage von Vorkenntnissen. Joachim ... schrieb: > 74HC165 8-Bit Parallel-Input to Serial-Output Shift Register > Reichelt: 34ct, du benötigst 2x20/8bit = 5 Stück davon. Zusammen 1,70 > EUR... Ob das die Entprellarie einfacher macht? Oder die Verdrahtung? Flexibel ist das ganze auch nicht und wer 20 Encoder statt 20 Tasten und einem Encoder nimmt dem sind 50 ct auch egal.
Was spricht gegen Multiplexen? Immer 4 gleichzeitig einlesen (8 Pins), und das x5. Wenn die 13 Pins zuviel sind, nimmt man ein 74HC165 zum einlesen und ein 74HC299 zum Multiplexen: Das kostet 4 Pins (MOSI, MISO, 2xSCK). Der Aufwand zum einlesen ist verschwindend gering.
...ich habe das mal so gelöst: Kaufe dir bei ebay den "bcr2000". Darin ist genau was du suchst. Sie gehen für 40€ über die Bühne. Es wird dort auch über Register gelöst. Man kann Teilplatinen verwenden oder einfach das Midi Protokoll auswerten und damit unzählige Ansteuerungen realisieren. Wie sich die LED verhalten sollen kann man in einem Menue einstellen. TS
Oder vllt. doch normale Potis nehmen und die über 2 CD4067 16 Kanal-Muxes auf einen AD Wandler schicken. Multiplexer setzen, Poti lesen, nächster Multiplexer Kanel...
Hallo, und danke für die vielen Hinweise. Bei einigen Antworten stört mich ein wenig der polemische Unterton. Diskussion über Geld finde ich z. B. unangebracht. Ich will hier nicht etwas konstruieren um Geld zu sparen, sondern weil ich Spaß daran habe und etwas lernen will. Ich kann auch schon etwas Fahrrad fahren und Ferrari ist nicht mein Geschmack. Aber es macht meiner Meinung nach durchaus Sinn, sich schon im Vorfeld Gedanken darüber zu machen, was auf einen zukommt. Und wenn der Weg dann mehr oder weniger klar vor einem liegt, kann man sich Etappenziele setzen und die Einzelergebnisse zum Schluß zusammenfügen. Die Idee mit den normalen Potis hat einen Schönheitsfehler; ich will mehrere Settings abspeichern können d.h. Encoder und digitale Potis sind nötig. Gruß
>Ich würde vorschlagen, einen kleinen MC (14-Pin) für je 4 Encoder und >dann per I2C oder SPI vom Master auslesen. Wenn schon I2C dann mit PCF8574 oder sein 16bit Bruder und auf Interrupt reagieren. Wobei die Sache mit den Shiftregistern wohl am billigsten sein dürfte und auch vollkommen ausreicht.
heinzhorst schrieb: > würde die Geber mit Pullups an ganz > normale Portpins anschließen. Softwaremäßig das Ganze entprellen, wie > bei einem Taster. Pro Drehgeber hast du zwei Signale (Anschlüsse) mit > zwei möglichen Zustande. Wozu soll da eine Software-Entprellung gut sein, wenn dich die Position deiner Regler interessiert? Die Drehgeber liefern einen 2-bit Gray Code, d.h. da kann gar nichts schief gehen beim Mitzählen und wenn der Geber "genau" auf eine Schaltschwelle steht und das Umkippen des Signals vom Flügelschlag eines Schmetterlings am anderen Ende der Welt abhängt, nützt eine Entprellung mit irgendwelchen Zeitkonstanten sowieso nichts.
Klaus Ludwig schrieb: > und danke für die vielen Hinweise. Bei einigen Antworten stört mich ein > wenig der polemische Unterton. Das ist hier der Preis für in meinen Augen gutes bis sehr gutes Fachwissen. Technos haben manchmal ne schulmeisterliche Art (passiert mir auch ab und zu). > > Diskussion über Geld finde ich z. B. unangebracht. Ich will hier nicht > etwas konstruieren um Geld zu sparen, sondern weil ich Spaß daran habe > und etwas lernen will. Dann lass Sie einfach sein und ignoriere off topic kram.. > Die Idee mit den normalen Potis hat einen Schönheitsfehler; ich will > mehrere Settings abspeichern können d.h. Encoder und digitale Potis sind > nötig. Einfache Potis haben auch nur 270° Einstellbereich, das reicht oft nicht. Wenn du jedem Encoder nen eigenen Pic spendierst hat das auch den Vorteil das du das ganze Modular machen kannst und theor. auch 100 Encoder mit 4 Drähten einbinden kannst (Potis einlesen geht dann nebenbei). Hab sowas schon gebaut (mit I2C) was aber den Nachteil hat das der Master alle ständig pollen muss obwohl meist nur an einem gedreht wird. Heute würde ich dafür eher ne Art Multimaster Eindraht Can Bus nehmen. Was nur heißt das der Encoder an dem gedreht wird seine Position sendet. F. Gray schrieb: > Wozu soll da eine Software-Entprellung gut sein, wenn dich die Position > deiner Regler interessiert? Die Drehgeber liefern einen 2-bit Gray Code, Womit du nach deiner Theorie auch nur 4 Positionen hast F. Gray schrieb: > d.h. da kann gar nichts schief gehen beim Mitzählen Hast du schon mal selbst Encoder ausgewertet? Wenn ja interessiert mich dein Ansatz sehr, falls nein empfehle ich die bekannte Handlungsanweisung von D. Nuhr. Bei mir prellen die Dinge jedenfalls wie blöd, alle mechanischen, auch die besten. Je schneller Sie gedreht werden desto mehr und je älter auch noch. Auf der anderen Seite stellt sich auch die Frage warum es sauteure optische Encoder gibt wenn es mit den mechanischen ja so easy ist.
F. Gray schrieb: >> würde die Geber mit Pullups an ganz normale Portpins anschließen. Pics haben interne sog. "weak (schwache) pullups". Nach meiner Erfahrung reichen die für mechanische Encoder dicke aus.
Hallo, und noch eine Frage - gibt es bei der Wahl der Encoder etwas zu beachten, oder gilt " Wo 2 Bit Gray draufsteht, ist auch 2 Bit Gray drin"? Ich meine jetzt nicht qualitative Unterschiede (im Sinne von Verarbeitung) sondern mehr prinzipielle. Gruß
Klaus Ludwig schrieb: > Die Idee mit den normalen Potis hat einen Schönheitsfehler; ich will > mehrere Settings abspeichern können d.h. Encoder und digitale Potis sind > nötig. Das habe ich auch so verstanden. Die normalen Potis sollen ja nur zum Werte verstellen sein. Ich habe schon einige solche Geräte gesehen ( digitales Neumann Pult oder das Eleven Rack von AVID ) die den Wertestand am Display anzeigen und du kannst ihn dann mit dem Poti oder Fader 'einfangen' und verstellen. M.e. eine recht elegante Methode und das hast trotzdem das klassische 'Poti in der Pfote' Gefühl.
iaoffline schrieb: > Bei mir prellen die Dinge jedenfalls wie blöd, alle mechanischen, auch > die besten. Und genau deswegen nimmt man eine Auswertesoftware, die auch entprellt. Wenn man den Graycode verstanden hat, geht Entprellen nämlich ganz einfach. Peter
Matthias Sch. schrieb: > Die normalen Potis sollen ja nur zum Werte verstellen sein. Ich habe schon einige > solche Geräte gesehen (digitales Neumann Pult oder das Eleven Rack von AVID ) > die den Wertestand am Display anzeigen und du kannst ihn dann mit dem Poti oder > Fader 'einfangen' und verstellen. M.e. eine recht elegante Methode und > das hast trotzdem das klassische 'Poti in der Pfote' Gefühl. Naja, wenn ich einen Parametersatz abspeichern und nachher wieder laden will, ist es blöd, wenn ich erst alle Potis und Fader "einfangen" muß. Und immer auf einem Display die Werte alle ablesen zu müssen, ist auch nicht praktikabel. Die eleganteste Variante wären Motorpotis und -fader. Die kann man so ansteuern, daß sie sich selbst einfangen, aber die sind halt nicht grad billig.
Rolf Magnus schrieb: > Naja, wenn ich einen Parametersatz abspeichern und nachher wieder laden > will, ist es blöd, wenn ich erst alle Potis und Fader "einfangen" muß. > Und immer auf einem Display die Werte alle ablesen zu müssen, ist auch > nicht praktikabel. Aber - wie willst du denn das mit den Encodern machen, das Problem ist doch das gleiche. Also - Potis einstellen und das Set abspeichern. Beim Aufrufen der Speicherbank zeigt dein Display die eingestellten Werte an. Zum Ändern eines Parameters 'fängst' du den entsprechenden Wert mit dem korrespondierenden Poti ein und verstellst ihn.Speicherbank wählen und das neue Set abspeichern - fertig. Ich seh da keinen Unterschied. Beim Eleven Rack geht das ( von anderen Firmware Problemen mal abgesehen ) sehr gut und ich hab diese Methode auch bei vielen digitalen Mischpulten und Lichtpulten gesehen. Bei Pulten wird dann der Wert dann über eine LED Reihe neben dem Fader angezeigt ( so wars bei Neumann ) oder über ein zentrales LCD ( so machens die modernen ). Und es ist von der Hardware her sehr einfach zu realisieren . Wenn du das Panel hinter die Frontplatte machst und den Controller woanders hin, hast du sogar recht wenige Kabel und wenig Portpins verbraucht.
Matthias Sch. schrieb: > Zum Ändern eines Parameters 'fängst' du den entsprechenden Wert mit dem > korrespondierenden Poti ein und verstellst Bei einem Drehgeber muß man nichts "fangen". Bei den Scopes, die ich kenne, kann man nach dem Laden eines Setups sofort etwas verstellen, ohne etwas fangen zu müssen. MfG Klaus
Klaus schrieb: > Bei einem Drehgeber muß man nichts "fangen". Bei den Scopes, die ich > kenne, kann man nach dem Laden eines Setups sofort etwas verstellen, > ohne etwas fangen zu müssen. > > MfG Klaus Das bezog sich auch auf einen anderen Vorschlag zur Hardware. Lies erst weiter oben meinen anderen Beitrag.
Matthias Sch. schrieb: > Aber - wie willst du denn das mit den Encodern machen, das Problem ist > doch das gleiche Genau das meine ich, bei Drehgebern gibt es das Problem garnicht, sie stehen immer so, wie es angezeigt wird. Bei Absolutencodern, wie z.B. Potis, braucht man eine Krücke wie "fangen" oder einen Motor. MfG Klaus
Hallo, ich will mit den Drehgeber per PIC auslesen und den Wert in der entsprechenden Variablen in- bzw dekrementieren. Diesen Wert am Display anzeigen und das Digitalpoti entsprechend einstellen. Diese Variable speichere ich mit den anderen Variablen im Flash o. EEPROM ab und kann sie jederzeit wieder laden. Nix einfangen von Werten. Potis wären da echt kontrapruduktiv. Dann bräuchte ich auch keinen PIC, denn wenn ich nicht direkt die Werte einladen kann, tät es auch ein Zettel auf den ich die Potistellungen aufmale. Gruß
Klaus Ludwig schrieb: > Potis wären da echt kontrapruduktiv. Du könntest die (linearen) Potis ja nur als Sollwertgeber verwenden. D.h. du liest mit einem AD-Wandler nur die Stellung aus und über- gibst den Wert einer Variablen. Der Vorteil wäre, das auch beim Ausschalten der Wert (die Stellung des Potis) gespeichert bliebe. M.E. lässt sich so etwas wesentlich einfacher (mit weniger Fehler- möglichkeiten) programmieren als viele Drehgeber. Gruss Harald
iaoffline schrieb: > Hast du schon mal selbst Encoder ausgewertet? Wenn ja interessiert mich > dein Ansatz sehr, ... Bei mir wird der Sensorzustand per Timer-ISR regelmäßig eingelesen. Zusammen mit dem Zustand beim vorherigen Einlesen ergeben sich daraus 4 Bit, die über eine 16 Byte Tabelle in einen Statuswert übersetzt werden. Als Statuswerte kommen dann neben den beiden Zuständen für stehenden Drehgeber die beiden Zustände "Count-up" und "Count-Down" zur weiteren Veranlassung vor. Durch Änderung der Tabelle läßt sich das dann prima für vertauschte Anschlüsse und verschiedene Rastungen anpassen. Die Abtastung muß natürlich so häufig sein, dass beim Drehen mindestens einmal jede Phase des Drehgebers erfaßt wird.
http://www.ucapps.de/ hier gibt es unter Midibox verschiedene Lösungsansätze. Mit einem Multiplexer für analoge Signal lässt sich das ganze auch billig mit Potis realisieren. Ansonsten Drehgeber, Schieberegister und ein PIC.
Klaus Ludwig schrieb: > Diese Variable > speichere ich mit den anderen Variablen im Flash o. EEPROM ab und kann > sie jederzeit wieder laden. Nix einfangen von Werten. Bloss stimmt dann die Stellung der Pseudo-Potis mit den gespeicherten Werten eher zufällig mal überein. Ist sicher sehr unterhaltsam, so ein Gerät zu bedienen, bei dem das Lautstärkepoti auf Null steht und die vollen 200 W Sinus losbrüllen... Gruss Reinhard
Reinhard Kern schrieb: > Klaus Ludwig schrieb: >> Diese Variable >> speichere ich mit den anderen Variablen im Flash o. EEPROM ab und kann >> sie jederzeit wieder laden. Nix einfangen von Werten. > > Bloss stimmt dann die Stellung der Pseudo-Potis mit den gespeicherten > Werten eher zufällig mal überein. Ist sicher sehr unterhaltsam, so ein > Gerät zu bedienen, bei dem das Lautstärkepoti auf Null steht und die > vollen 200 W Sinus losbrüllen... > > Gruss Reinhard Ich verstehe nicht worauf du hinauswillst. Die Stellung der Drehimpulsgeber beim - nennen wir es - Programmwechsel ist doch völlig irrelevant. Wenn, um bei deinem Beispiel zu bleiben, die Lautstärke auf 100 Prozent stand beim Speichern, dann soll sie das nach dem Laden auch wieder sein. Dafür speichere ich doch. Das ist der Sinn der Übung. Gruß
> Ich verstehe nicht worauf du hinauswillst. Die Stellung der > Drehimpulsgeber beim - nennen wir es - Programmwechsel ist doch völlig > irrelevant.... Entschuldigung, da war ich halt noch hoffnungslos altmodisch. Ich dachte immer, wenn der Lautstärkeregler ganz rechts ist, ist es laut, und wenn er ganz links ist, ist es leise. Aber du hast ja recht, solche Konventionen muss man einfach hinter sich lassen. Es ist eben nach Einstein alles relativ, auch die Lautstärke. Gruss Reinhard
Hallo Reinhard, ob relativ oder nicht - so was wie Rechtsanschlag gibt es beim Encoder nicht. Der dreht und dreht und ... Gruß
Ich merke, das da noch viel Erklärungsbedarf herscht bei dem Konzept mit Potis . Schaut euch bei Interesse mal auf avid.com das Eleven Rack an, das benutzt dieses Konzept, weil es von Gitarristen benutzt wird, die das Gefühl eines echten Potis haben wollen. Unter dem zentralen LCD sind 5 Potis, die auch auf dem LCD abgebildet werden. Zum Einstellen eines Wertes dreht man am Poti und das Poti auf dem LCD läuft mit. Hat man die Parameter wunschgemäss eingestellt , spechert man die Bank ab. Beim Aufrufen einer anderen Bank zeigen nun die Potis auf dem LCD den neuen Wert an und springen natürlich nicht auf den Wert, der am (Hardware) Poti unter dem Display eingestellt ist. Erst wenn man am Poti rumdreht, springt das LCD-Poti auf den Wert des echten. Klar jetzt ? Ist also eine elegante Methode um an einem echten Poti zu drehen um eine Vielzahl von Parametern zu ändern. Ich hab jetzt weggelassen, das man mit einem Encoder zwischen einem ganzem Wust von Sets für Verzerrer, Kompressoren, Hall, Klang, Amp Simulation usw. wechselt, wobei die Parameter für jeden dieser Blöcke wieder mit den 5 Potis eingestellt wird.
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.