Hallo, gibt es einen Chip, an welchem ich mehrere Encoder (mit Schalter) anschließen kann und diesen über SPI auslesen kann? Aktuelle Schalterstellung und Position vom Drehgeber? Erste Google Suche sieht nicht vielversprechend aus, auch bei Mouser "SPI Encoder decoder" etc. schlägt nicht an. Gibt es sowas wirklich nicht? Wäre doch praktisch das Frontpanel nur über SPI verbinden zu müssen und dann dadrüber mit 4 Leitungen 5 oder mehr Drehgeber auszulesen? Ist ja auch nichts zeitkritisches. Danke für eure Hilfe!
Nils H. schrieb: > Aktuelle Schalterstellung und Position vom Drehgeber? Du meinst die relative Position? Absolut ist bei einem inkrementell arbeitenden Drehgeber nämlich nur nach Referenzierung möglich. Viele UC bieten heutzutage ein Quadrature Encoder Interface (QEI) an. Mit so etwas könnte man sich natürlich behelfen. Wenn es wirklich mehrere QEIs innerhalb eines Chips sein müssen, würde ich wahrscheinlich zu einem FPGA greifen und mir so viele Instanzen rein ziehen wie ich brauche. Ansonsten schau mal bei iC-Haus vorbei. Die haben da mit Sicherheit einen Chip für einen QEI.
Es wäre aber nichts gewonnen. Man braucht insgesamt pro Encoder 4 Leitungen. VCC, GND, A, B. Man kann dann je alle A und B-Leitungen zusammenführen, GND sowieso und jeweils per PIN vom uC VCC der Encoder schalten. Macht einmalig A, B und je einmal VCC pro Encoder. Entgegen SCK und DATA für SPI und je einem /SS
Nils H. schrieb: > Ist ja auch nichts zeitkritisches Naja,, das wäre ja nur für Spezialfälle interessant. Bei manuellen Bedienelementen z.b., aber selbst da müsste man mindestens 10 mal pro Sekunde Pollen.
Ich verwende einen Xmega. Dort führe ich derzeit 14 IO-Pins an das Frontpanel. Theoretisch kann ich dort 14/3 = 4 Drehgeber per Eventsystem/Timer auslesen. Aber sollte noch einer hinzukommen, reicht dies nicht mehr.
Frank schrieb: > Viele UC bieten heutzutage ein Quadrature Encoder Interface (QEI) an. Was man heute alles haben kann. Leider kein µ für einen µC. So etwas hat man oder eben nicht :(
Hallo, Nils H. schrieb: > Ich verwende einen Xmega. Dort führe ich derzeit 14 IO-Pins an das > Frontpanel. Theoretisch kann ich dort 14/3 = 4 Drehgeber per > Eventsystem/Timer auslesen. Aber sollte noch einer hinzukommen, reicht > dies nicht mehr. 1x oder 2x MCP23S17 als Portexpander auf das Frontpanel. Sind dann 16 oder 32 recht frei programmierbare I/O. Bis 8 Stück sind direkt kaskadierbar und können auch über SPI in Software adressiert werden, also nur 1x SPI + 1x /CS Betriebsspannung 1,8V....5V, max. 10MHz SPI-Clock. Für handbetätigte Drehencoder sollten 10ms Abfragezyklus reichen, da wäre also zeitlich genug Luft. Kannst Du dann alles digitale ranhängen (Drehgebern, Taster, Schalter, LEDs) was Dein Panel so bekommen soll. Gruß aus Berlin Michael
Nils H. schrieb: > Ich verwende einen Xmega. Dort führe ich derzeit 14 IO-Pins an das > Frontpanel. Theoretisch kann ich dort 14/3 = 4 Drehgeber per > Eventsystem/Timer auslesen. Aber sollte noch einer hinzukommen, reicht > dies nicht mehr. Nimm einen STM32F4xx. Da gibt es 6 Hardware-Decoder: Timer1 - 5 und Timer 8. Auch wenn Du alle Encoder per Software auswertest, langweilt sich der µC bis zum Abwinken. Oder Du nimmst viele, viele bunte Tiny25: Beitrag "mini Quadraturdekoder + 32 Bit Zähler + TWI, Attiny25"
Für sowas habe ich Schieberegister 74x165 in kaskadierter Form genommen. Jede Millisekunde wird per SPI ausgelesen (Polling). Mikrocontroller war ein STM32F103. Bei mir funktioniert es einwandfrei.
Stefan S. schrieb: > Es wäre aber nichts gewonnen. Man braucht insgesamt pro Encoder 4 > Leitungen. VCC, GND, A, B. Man kann dann je alle A und B-Leitungen > zusammenführen, GND sowieso und jeweils per PIN vom uC VCC der Encoder > schalten. Macht einmalig A, B und je einmal VCC pro Encoder. Entgegen > SCK und DATA für SPI und je einem /SS Doch es wäre einiges gewonnen. Ich führe im Moment einen Drehschalter (8 Pins), drei Potentiometer (3 ADC Leitungen) und einen Drehgeber (3 leitungen) zum Frontpanel. Macht in Summe 14 Leitungen. Möchte ich nun alles durch Drehgeber ersetzen und es gäbe kaskadierbare SPI Decoder, bräuchte ich nur eine Leitung, weil ich SPI ohne schon zum Frontpanel für ein Display führe. Der xmega kann höchsten 4 Encoder parallel decodieren (in Hardware, nur 4 Eventkanäle können dies), 5 nicht - sonst könnte ich diese 14 Leitungen einfach hierfür benutzen. Aber scheinbar gibt es sowas nicht. In Zukunft werde ich aber irgendwann den mega ersetzen (müssen).
Nils H. schrieb: > Möchte ich nun alles durch Drehgeber ersetzen Nils H. schrieb: > SPI Decoder Trumpelstielzchen schrieb: > Für sowas habe ich Schieberegister 74x165 in kaskadierter Form genommen. > Jede Millisekunde wird per SPI ausgelesen (Polling). das ist doch die Lösung, verstehe nicht warum du die Antworten nicht liest.
Nils H. schrieb: > Ich führe im Moment einen Drehschalter (8 > Pins), drei Potentiometer (3 ADC Leitungen) und einen Drehgeber (3 > leitungen) zum Frontpanel. Macht in Summe 14 Leitungen. > > Möchte ich nun alles durch Drehgeber ersetzen und es gäbe kaskadierbare > SPI Decoder, bräuchte ich nur eine Leitung, weil ich SPI ohne schon zum > Frontpanel für ein Display führe. Ich glaube du denkst einfach in die falsche Richtung. Entweder nimmst du einen Portexpander (SPI, I2C, Schieberegister - was am besten paßt). Oder du setzt einen weiteren µC auf dein Frontpanel, der dann auch gleich die Drecksarbeit (z.B. das Pollen der Encoder oder das Multiplexen einer Anzeige) erledigen kann und mit der Steuerzentrale ein etwas abstrakteres Protokoll redet als nur "frage Pin X ab" oder "setze Pin Y auf H". Das zweite ist bei weitem eleganter, birgt aber natürlich auch eigene Fallstricke.
Hallo, nimm doch einen extra Xmega als SPI-Slave oder I2C-Slave, da kannste dann reinprogrammieren was du brauchst. Weiterhin kannst du da auch gleich das Quadrature Encoder Interface des Xmegas verwenden. Über geschickte Multiplexing kann man das sicher auch für mehrere Encoder verwenden. Verknüpfst du das ganze noch mit dem Eventsystem und dem DMA läuft das Ganze sogar fast nur auf Hardwarebasis. Ich selber arbeite viel mit den Xmegas und finde die Harware einfach nur toll. Viele Grüße Martin
Joachim B. schrieb: > Nils H. schrieb: >> Möchte ich nun alles durch Drehgeber ersetzen > Nils H. schrieb: >> SPI Decoder > > Trumpelstielzchen schrieb: >> Für sowas habe ich Schieberegister 74x165 in kaskadierter Form genommen. >> Jede Millisekunde wird per SPI ausgelesen (Polling). > > das ist doch die Lösung, verstehe nicht warum du die Antworten nicht > liest. Diese Antwort kannte ich schon, bevor ich die Frage hier stellte. Ich frage mich aber, ob es eine SPI Lösung mit Hardware-Decoder gibt, kein zusätzlicher µC oder Eingangsschieberegister, was ich in Software decodieren muss. :)
Nils H. schrieb: > Theoretisch kann ich dort 14/3 = 4 Drehgeber per > Eventsystem/Timer auslesen. Aber sollte noch einer hinzukommen, reicht > dies nicht mehr. Kannst du die Encoder nicht multiplex auslesen? Da benötigst du n+2 Leitungen rein für die Encoder. Also 7 Leitungen bei 5 Encodern. Hab es bisher zwar nur für 3 Encoder praktiziert (Routine nach PeDa erweitert um eine kleine Multiplexroutine), ich sehe aber prinzipiell keinen Grund, warum das nicht auch bei 5 Encodern klappen sollte. Natürlich nur falls es dir nur um den zusätzlichen Encoder geht. Reiner
Nils H. schrieb: > gibt es einen Chip, an welchem ich mehrere Encoder (mit Schalter) > anschließen kann und diesen über SPI auslesen kann? > > Aktuelle Schalterstellung und Position vom Drehgeber? Drehencoder haben keine Position. Man kann sie immer weiter rumdrehen bis irgendwann der Zähler dieses Chips überlaufen würde, dann kann man das nicht mehr von der vorherigen Stellung unterscheiden. Immerhin muss man für 32bit Zähler ziemlich oft drehen. Aber es gibt einen SPI ansteuerbaren Drehencoderchip: http://www.lsicsi.com/pdfs/Data_Sheets/LS7366R.pdf der einen Drehencoder ausliest. Ob es auch welche gibt, die mehrere können, weiss ich nicht.
Nils H. schrieb: > Ich verwende einen Xmega. Dort führe ich derzeit 14 IO-Pins an das > Frontpanel. Theoretisch kann ich dort 14/3 = 4 Drehgeber per > Eventsystem/Timer auslesen. Aber sollte noch einer hinzukommen, reicht > dies nicht mehr. Wenn man auf dem Frontpanel keinen weiteren Chip will. Aber du willst dort sogar einen Drehencoderchip. Wie wäre es mit einem viel einfacheren Eingangsmultiplexer ? Du glaubst, das geht nicht, weil dann ja kein "Event" durchkommt ? Hast du auch nur das grundlegendste vom Drehencoder verstanden ? Man reagiert dort nicht auf die Flanken der Kontakte, sondern fragt schnell genug wiederholt ab. http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29 https://www.mikrocontroller.net/articles/Drehgeber Der uC ist dabei der Initiierende, das geht mit jedem Chip der eine Anzahl von Eingängen lesen kann, ob 74HC161, PCA9502 oder 74HC151. Nils H. schrieb: > Doch es wäre einiges gewonnen. Ich führe im Moment einen Drehschalter (8 > Pins), drei Potentiometer (3 ADC Leitungen) und einen Drehgeber (3 > leitungen) zum Frontpanel. Macht in Summe 14 Leitungen. Auffällig ist der Drehschalter mit 8 Pins, kann der wirklich 256 Positionen unterscheiden ? Oder schaltet er 7 nicht-digitale-Signale an einen Pin durch ? Eigentlich reicht für einen Drehschalter 1 Analogeingang und der Drehschalter bildet einen Spannungsteiler der 1 von 8 Spannnungen liefert. Dann hast du 7 Leitungen frei. Problemlos noch 2 Drehencoder mit Taster ohne weiteren IC, oder zusammen mit den 3 Leitungen des schon vorhandenen Drehencoders problemlos 8 Leitungen für 4 Drehencoder A+B plus 2 Leitungen für die 4 Taster, bei denen es mehrere Nöglichkeiten gibt sie ohne IC zusammenzufassen, vielleicht auch analog. Also ich sehe (bei deiner unzureichend knappen Information die du bringst) viele Möglichkeiten ganz ohne IC auszukommen und trotzdem viel mehr Bedienelemente unterzubringen.
Ich hatte genug Pins übrig, also habe ich 8 zum Frontpanel geführt - welches noch nicht realisiert ist. Natürlich kann ich auch mit einem Widerstandsgrab den Drehschalter in Spannungen wandeln und benötige dann nur noch ein Pin. Auch das weiß ich. Auch, dass ich dann wieder 7 Leitungen übrig habe. All diese kombinationen kenne ich und ich weiß auch, dass ein Drehgeber nicht flankenorientiert ist. Auch weiß ich, dass ich das in Software mit einen Eingangsschieberegister etc. machen kann. Aber scheinbar gibt es keinen gängigen SPI Chip, an den man mehrere Encoder anschließen kann, welche man dann über SPI auslesen kann. Vielen dank schonmal!
Hallo, Nils H. schrieb: > Aber scheinbar gibt es keinen gängigen SPI Chip, an den man mehrere > Encoder anschließen kann, welche man dann über SPI auslesen kann. und was genau gefällt Dir am MCP23S17 nicht? Hatte ich am 29.01.2017 10:15 vorgeschalgen. Gruß aus Berlin Michael
Michael U. schrieb: > Hallo, > > Nils H. schrieb: >> Aber scheinbar gibt es keinen gängigen SPI Chip, an den man mehrere >> Encoder anschließen kann, welche man dann über SPI auslesen kann. > > und was genau gefällt Dir am MCP23S17 nicht? > Hatte ich am 29.01.2017 10:15 vorgeschalgen. > > Gruß aus Berlin > Michael So wie ich das sehe, ist das kein Hardware-Deocoder, sondern nur ein weiteres IO/Schieberegister - ich hab halt ein Hardwaredecoder gesucht. Wenn ich Schieberegister nehmen möchte, würde ich ein normales 74HC595 nehmen. Und ein LS7366R ist mir zu exotisch.
Nils H. schrieb: > Aber scheinbar gibt es keinen gängigen SPI Chip, an den man mehrere > Encoder anschließen kann, welche man dann über SPI auslesen kann. Was genau willst du denn nun auslesen? Irgendwelche Zählerstände mit unbekanntem Bezugspunkt (ggf. mit Überläufen)?
Ich möchte alle Potentiometer meines Frontpanels durch Drehgeber (händische Einstellungen) ersetzen. Eine relative Positionsänderung ist absolut ausreichend. Ich könnte diese natürlich alle zu meinem Xmega führen durch die bereits bestehenden Leitungen, dann reicht die Hardwaredekodierung aber nur für 4 Encoder. Ich könnte es auch komplett per Software machen, das ist richtig. Würde es sowas geben - was es scheinbar nicht gibt, weil es den Anschein nach auch nicht gefragt ist (z.B. hier im Forum) - dann hätte ich diese 5 Drehgeber an eines bzw. mehrere kaskadierbare SPI Bausteine geschaltet, welche eine Hardwaredekodierung machen und ich diese nur über SPI auslesen muss. Dann bräuchte ich zum Frontpanel nur diese eine zusätzliche Steuerleitung. Wundert mich erlich gesagt, dass es sowas nicht gibt, da jeder weiß dass (Software)-Ingenieure faul sind. ;)
Nils H. schrieb: > Ich möchte alle Potentiometer meines Frontpanels durch Drehgeber > (händische Einstellungen) ersetzen. Nils H. schrieb: > Würde es sowas geben - was es scheinbar nicht gibt, weil es den Anschein > nach auch nicht gefragt ist (z.B. hier im Forum) - dann hätte ich diese > 5 Drehgeber an eines bzw. mehrere kaskadierbare SPI Bausteine Naja, wenn du die ersetzen willst(und die Kosten zweitrangig sind), kannst du ja auch Rotary Encoder mit SPI Interface benutzen. zB. die ENS22B Serie von MEGATRON. Da gibt es sicher noch mehr. Und zur Not bekommt man das auch selber mit nem AS5040 hin https://www.youtube.com/watch?v=gXewDdlUT_Q als Beispiel Reiner
:
Bearbeitet durch User
Nils H. schrieb: >> Trumpelstielzchen schrieb: >>> Für sowas habe ich Schieberegister 74x165 in kaskadierter Form genommen. >>> Jede Millisekunde wird per SPI ausgelesen (Polling). >> >> das ist doch die Lösung, verstehe nicht warum du die Antworten nicht >> liest. > > Diese Antwort kannte ich schon, bevor ich die Frage hier stellte. Ich > frage mich aber, ob es eine SPI Lösung mit Hardware-Decoder gibt, kein > zusätzlicher µC oder Eingangsschieberegister Nein, das gibts nicht. Weil das keiner braucht. Und vor allem, weil es keiner haben will. Zu spezialisiert. Zu unflexibel. Port-Expander oder separater µC wurden dir nicht ohne Grund vorgeschlagen. Das ist das, was alle anderen machen. Diejenigen, die etwas älter sind, wissen sogar noch warum es µP/µC überhaupt gibt: weil es nicht mehr tragfähig war, für jede denkbare Funktion ein Spezial-IC zu haben. Andererseits kannst du dir ja ein solches IC auch selber machen. Für einen Drehencoder brauchst du 2..3 Pins. 1..3 weitere für die Kommunikation. Ein 8-pinniger µC a'la ATtiny25 wäre also geeignet. Kleiner oder billiger kriegst du das auch als Fertigbauteil nicht.
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.