Drehinkrementalregler am IO Warrior?

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Guido Körber
Site Admin
Posts: 2762
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Da sind wir dann genau an dem Punkt warum es so schwierig ist solche Funktionen allgemeingültig zu implementieren: Jeder versteht was anderes darunter was die Funktion tun sollte.

Also das mit dem Report senden bei Richtungsumkehr halte ich für sehr notwendig. Das grundsätzliche Design des IO-Warrior lässt es nicht zu jede Situation abzufangen, aber einen Best-Effort Ansatz sollten wir schon machen.

Abtastrate: Die Drehgeberfunktion wäre in der Lage deutlich schneller als jede Millisekunde den Status abzufragen. Generell aber mit der Einschränkung, dass das nur dann klappt wennder User weiss was er tut.

Jede höhere Funktion mit nennenswertem Zeitbedarf die nicht unterbrochen werden kann (IIC zum Beispiel), reduziert die mögliche Auflösung, kann also zu Impulsverlusten bei höherer Geschwindigkeit führen.

Aber das ist nun mal generell im Leben so: Wenn man nicht weiss was man tut kann es halt schief gehen.

Was die Aufteilung der Bandbreite angeht so ist das völlig unnötig. Nur wenn aktiv andere Funktionen angesprochen werden brauchen die auch Bandbreite. Sonst kann der Drehgeber die gesamte Bandbreite selber beanspruchen.

ggf. sollten wir vielleicht ein Flagbyte hinzufügen was für jeden Drehgeber angibt ob Impulsverluste auftraten (in 2 von 4 möglichen Kombinationen merkt man das ja) und ob ein Overflow des Zählers auftrat.

wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Guido Körber wrote:Da sind wir dann genau an dem Punkt warum es so schwierig ist solche Funktionen allgemeingültig zu implementieren: Jeder versteht was anderes darunter was die Funktion tun sollte.
Mir fallen da spontan 3 Anforderungsprofile ein:
1. Drehgeber als Eingabeinstrument für einen User
Ich schätze mal in 99% aller Fälle wird hier der Drehgeber als digitaler Wahlschalter, bzw Poti benutzt. Das sieht dann üblicherweise so aus, dass der User auf dem Bildschirm einen Istwert angezeigt bekommt (einen Zahlenwert oder auch den aktuellen Menüpunkt). Dann dreht der User so lange am Drehgeber bis der angezeigte Istwert dem Sollwert in seinem Kopf entspricht. Impulsverluste sind hier vernachlässigbar, da der BioComputer User hier selber nachsteuert bis Soll- und Istwert übereinstimmen.

2. Bestimmung eines absoluten Istwertes
Wäre z.B. für eine Drehzahlmessung machbar. Programm mißt die Zeit zwischen dem Eintreffen von zwei Reports und bestimmt dann aus der Anzahl der Impulse im aktuellen Report die Drehzahl. Ein (angekündigter) Impulsverlust wäre hier wahrscheinlich tolerierbar, da die Hoffnung besteht im nächsten Zyklus wieder zuverlässige Daten bestimmen zu können.

3. Bestimmung eines relativen Istwertes
Hier hätten wir dann z.B. die angesprochene relative Positionsbestimmung.

Code: Select all

Zum Zeitpunkt T1 befinde ich mich an Position X1;
Zeitpunkt T2=eintreffen eines neuen Reports;
if(Daten im Report == OK) {
     Zum Zeitpunkt T2 befinde ich mich an Position (X1+Änderung im Report)
}
else {
    /*Impulsverlust */
    Ich weiss nicht mehr wo ich mich befinde!
}
In diesem Fall sind also alle bisher gesammelten Daten als Bezugspunkt ungültig. Es müssen also im Programm und u.U. auch an der zu messenden Größe erst wieder definierte Anfangsbedingungen geschaffen werden.

Ich persönlich möchte keinen Impuls missen ;-)
Aber andererseits wäre auch die Funktion mit evtl. Impulsverlust eine tolle Sache. Und eine teure Maschine mit irgendeinem USB-Gerät zu steuern, käme mir eh nicht in den Sinn. Da greift man wohl doch besser zu einer SPS.
Guido Körber wrote:Also das mit dem Report senden bei Richtungsumkehr halte ich für sehr notwendig.
Was macht man wenn sich die Richtung innerhalb von 8 Millisekunden 5 mal ändert. Bekomme ich dann 5 Reports? Aber ich frage dies ehrlicherweise nur, weil mir persönlich noch keine Anwendung einfällt für die ich diese Information brauche (gibt es aber weiss ich).

Und zum Schluß noch eine etwas freche Anfrage, bitte nicht böse sein...
Guido Körber wrote:Abtastrate: Die Drehgeberfunktion wäre in der Lage deutlich schneller als jede Millisekunde den Status abzufragen.
Wenn die Firmware des IOWarrior sowieso gerade geändert wird, wie wärs dann damit, gleich noch einen Eingang als normalen Zähler mit der angesprochenen hohen Abtastfrequenze zu implementieren?.

...und als nächstes soll der IOWarrior auch noch Kaffe kochen...???

Ja ich weiß, frech. Aber war zu verlockend...

Danke fürs Lesen und Antworten
Eberhard

Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Ich bestehe darauf das "Kaffee" gekocht wird ;-)
Das sollte mit ein bischen Peripherie durchaus machbar sein.
Mal sehen was in den neuen Firmenraeumen moeglich ist.

Guido Körber
Site Admin
Posts: 2762
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Also generell ist jede Elektronik irgendwann überfordert, Drehgeber haben auch eine maximale Drehzahl, darüber kocht entweder das Lager, oder die Lichtschranken kommen nicht mehr mit. Und so wird dann auch der IO-Warrior eine Obergrenze haben über die man nicht hinaus kommt ohne Impulse zu verlieren, ist halt so.

Was die häufigen Richtungswechsel betrifft: Ich sagte ja schon "Best-Effort". Wenn also zu viele Impulse oder Richtungswechsel anfallen geht es halt nicht mehr.

Und was ist das mit dem "normalen Zähler"? Also wenn ich ein Datenbuch über Logik aufschlage und mir Zähler angucke ist es mal wieder schwer mit dem "one size fits all"...

Für Kaffee verlassen wir uns im neuen Büro auf Saeco...

wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Guido Körber wrote: Und was ist das mit dem "normalen Zähler"? Also wenn ich ein Datenbuch über Logik aufschlage und mir Zähler angucke ist es mal wieder schwer mit dem "one size fits all"...
Nun ich meinte so eine Art von Zähler wie ihn....
sagen wir mal.... Die Konkurrenz? ... zu Preisen einer kleinen Saeco anbietet?
16 oder 32 Bit breit, Schmitt-Trigger Eingang, Steigende oder fallende Flanke wäre mir egal.

Aber von meiner Seite aus können wir die Diskussion hier sicher beenden. Falls die Drehgeber-Funktion kommt, werde ich im bewährt guten Datenblatt einfach nachlesen wieviele Impulse der IOWarrior maximal verarbeiten kann und so auch keine verlieren.

Danke für die bisherige Mühe, ich hoffe das kam nicht als Nörgelei rüber.

Zum Schluß möchte ich aber noch sagen, das die Entscheidung für eine Saeco auf jeden Fall richtig ist, schon wegen dem Saubermachen.

Auf jeden Fall viel besser als das was die Leute beim beliebten Nachrichtenmagazin Der Spiegel machen :
http://www.spiegel.de/static/popup/coffeecam/cam2.html
Warum dieser Schrott in einen 19''-Serverschrank eingebaut ist, der wahrscheinlich doppelt so teuer ist wie eine richtige Kaffemaschine, ist ein Geheimnis, dass auch der IOWarrior nicht lösen kann!

Eberhard

Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Bitte! Das ist die originale Web-Kaffeemaschine. Die erste Anwendung einer Webcam.
Banause! ;-)

wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Robert Marquardt wrote:Bitte! Das ist die originale Web-Kaffeemaschine. Die erste Anwendung einer Webcam.
Banause! ;-)
Nein tut mir leid, da muß ich doch noch mal was zu sagen:
The Trojan Room Coffe Machine is switched off forever
Schade, das ausgerechnet ich die traurige Nachricht überbringen muß, aber die grauslige traurige Wahrheit findet man hier:
http://www.cl.cam.ac.uk/cgi-bin/xvcoffee

Und außerdem lässts "Der Spiegel" auch richtig krachen, denn
The Trojan Room Coffe Machine war immer nur in "Schwarz-Weiss".

Eberhard

D-Lite
Posts: 22
Joined: Thu Mar 25, 2004 12:54 am
Location: Saarbrücken

Post by D-Lite »

supachris wrote:Geht das nicht ganz normal mit der Read-Funktion
auszulesen?
Doch, das geht. Ich hab sowas mit einem I/O-Warrior24 und einen Drehgeber von Conrad Electronic schonmal probiert. Den Code hatte ich auch mal hier im Forum gepostet, aber die alten Artikel hat ja leider der Hacker gefressen. :-(
supachris wrote: Diese Encoder haben doch nen Gray-Code, bei jedem Schritt ändert sich genau immer nur eines der beiden Bits. Darauf springt doch die normale Read-Funktion an. In der Software muss man dann doch nur noch gucken, ob jetzt hoch oder runter gezählt wurde (nach Maskieren der Bits natürlich). Dafür sollten doch die 125 Reports/s locker reichen, selbst wenns nur die Hälfte wäre noch OK, oder lieg ich jetzt völlig falsch?
Ne, ich denke da liegst Du ziemlich richtig. Wenn man so einen Drehgeber nur als Eingabegerät für den User benutzt, funktioniert es relativ gut. Bei sehr schnellen Drehbewegungen gehen allerdings Impulse verloren und das "fühlt" sich dann etwas komisch an, wenn der Wert sich so schnell hochzählt, wie man erwarten würde. Ob das an der Auslesegeschwindigkeit
oder am Prellen liegt, hab ich nicht nachvollzogen. Ich hab auch keine Ahnung, wie schlimm diese Dinger prellen, dazu bräuchte man das Datenblatt oder ein Speicheroszilloskop :)

supachris
Posts: 124
Joined: Tue Mar 16, 2004 12:30 am
Location: Dresden

Post by supachris »

Ich muss mich mal (teilweise) selbst korrigieren. Ich programmiere jetzt eben was mit einem MPS430 Prozessor und da frage ich so einen Conrad-Drehegeber ab. Das ist ja vielleicht ein Mist, der hat zwar auch einen Gray-Code, aber die Rastung ist so blöd gemacht, dass immer ein Schritt mechanisch "verschluckt" wird. Die Rastungen ergeben immer 11 oder 00, die 01 oder 10 werden zwar durchlaufen aber bringen einem nix, weil da keine Raststufe ist. Super. Naja, muss man halt nachher durch 2 Teilen. Aber bissl sinnlos is das schon irgendwie.

Wollt´s nur mal schreiben, nich dass sich einer wundert. :)
Gruß SupaChris

calli
Posts: 37
Joined: Sat Sep 17, 2005 6:35 pm

Post by calli »

Hallo,

ich häng mich hier mal ran...

Für eine Mixed-Reality Anwendung würden wir gerne eine Positionsbestimmung machen, erst mal 2 Achsen, später eventuell mehr.

Als ich diesen Thread gelesen habe (bin noch in der Brainstorming und Ideensammelphase) dachte ich das wäre ne nette Möglichkeit den IOW zu benutzen.

Gibts in der Richtung schon neues?

Gruß,
Carsten Wartmann

Guido Körber
Site Admin
Posts: 2762
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Ja, es gibt was neues. Sobald unsere Webdesignerin mit den neuen Seiten fertig ist wird der SpinWarrior offiziell zur Verfügung stehen. Das Datenblatt liegt schon mal hier:
http://www.codemercs.com/Downloads/Spin ... asheet.pdf

Dabei handelt es sich um eine Chipfamilie mit vorerst 2 Mitgliedern, die 4 Drehgeber plus 7 Taster, oder 6 Drehgeber plus 3 Taster bedienen können. Signalfrequenzen bis 1,25kHz werden ohne Fehler ausgewertet.

Wir haben uns dagegen entschieden diese Funktion in den IO-Warrior zu integrieren, da der parallele Betrieb mit anderen Funktionen verhindert eine garantierte Mindestfrequenz angeben zu können. So würde z.B. die IIC Funktion den Drehgeber völlig ausbremsen und für verlorene Impulse bereits bei niedrigen Drehzahlen sorgen.

Die Preise der Chips werden so wie beim IOW24 liegen. Ein Starterkit ist nicht geplant.

calli
Posts: 37
Joined: Sat Sep 17, 2005 6:35 pm

Post by calli »

Wow!

Das würde ja wie die Faust aufs Auge passend sein ;-)

Kann man für die Encoder alte Mäuse ausschlachten?

Wie heissen die Dinger auf Deutsch, ich habe bei Reichelt keine gefunden.

Ich bin gespannt!

Gruß aus Rudow nach Großziethen,
Carsten

Guido Körber
Site Admin
Posts: 2762
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Inkremental-Drehgeber

calli
Posts: 37
Joined: Sat Sep 17, 2005 6:35 pm

Post by calli »

Das Thema ist jetzt wieder aktuell, aber ich bin so garnicht sicher welche Drehgeber geeignet sind. Für erste Versuche kann es auch erst mal "Schrott" sein, eventuell bei Ebay gekauft. Es geht prinzipiell um eine Positionsbestimmung und Winkelmessung eines durch einen Menschen positionierten Geräts.

Sind absolut-Geber auch mit SpinWarrior auszulesen?

Hinweise auf "billige" Teile für erste Experimente wären mir sehr willkommen!

Sind die Teile aus "mechanischen" Mäusen im Prinzip auch anschließbar?

Gruß&Dank,
Carsten

Guido Körber
Site Admin
Posts: 2762
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

calli wrote:Sind absolut-Geber auch mit SpinWarrior auszulesen?
Nein.

Absolutgeber haben diverse unterschiedliche Methoden um die Position zu ermitteln. Da gibt es beispielsweise potentiometrische, also widerstandsbasierte, die kann man z.B. mit den JoyWarrior lesen. Oder es gibt welche die diverse Bits von sich geben um die absolute Position zu kodieren, die kann man mit einem IO-Warrior einlesen.
calli wrote:Sind die Teile aus "mechanischen" Mäusen im Prinzip auch anschließbar?
Prinzipiell ja. Nur sind das selten Teile die man einfach so entnehmen kann, sondern oft konstruktiv mit Teilen des Gehäuses oder der Platine verbunden.

Post Reply