Forum: Mikrocontroller und Digitale Elektronik Sensor zum ermitteln von Positionen in einem 2D Raum (Mini-Hochreagllager)


von Sebastian (Gast)


Lesenswert?

Hallo zusammen,

ich versuche aktuell ein Mini-Hochregallager für mehre kleine Schubladen 
zu bauen. An sich funktioniert das Anfahren der einzelnen Schubladen 
ganz gut.

Ich verwende "virtuelle" Punkte die Regal-Zeilen/Spalten repräsentieren. 
Die Schlitten werden durch Riemen gezogen (1:1 das gleiche Konzept von 
einem 3D-Drucker) und mit einem Schrittmotor angesteuert. Durch 
Rotary-Encoder erfasse ich die Schritte die gemacht wurden, und durch 
die Anzahl der Schritte ermittle ich die Position des Schlittens und die 
"virtuelle" Position zum Anfahren. Das hat ganz gut funktioniert, bis 
ich das Regal vergrößert habe und ein wenig Spiel ins System gekommen 
ist. Weshalb ich jetzt denke es wäre besser zu wissen, ob sich der 
Schlitten vor einer Schublade befindet oder nicht anstelle es nur zu 
berechnen und hoffen, dass der Schlitten in einer Position ist, an der 
dieser eine Schublade herausziehen kann.

Da ich mir nicht sicher bin, wie man sowas am besten umsetzten könnte, 
wollte ich euch Fragen, ob Ihr in dieser Richtung vielleicht schon ein 
paar Erfahrungen gesammelt habt.

Hier wären ein paar von meinen Ideen:
- Magnet an Schubladenposition / Hall-Sensor am Schlitten
- Farbe an Schubladenposition / Farbsensor am Schlitten
- Taster an Schubladenposition / "Noppe" am Schlitten

von Jens M. (schuchkleisser)


Lesenswert?

Schrittmotor und Encoder ist ja an sich schon doppelt gemoppelt, jetzt 
fehlt nur noch hier und da eine Referenzposition und los geht's.
Auf's Typenschild gehört dann aber "Redundant Department of Redundancy 
Department Inc".

Ich hätte gesagt man baut die Mechanik so das es relativ egal ist.
Z.B. einen Reihenschalter, der jede Reihe in etwa anzeigt, das muss dann 
gar nicht so genau sein.
Dazu ein relativ breiter Griff an der Lade, aber ein schmaler am Auszug, 
schon ist auch die seitliche Position relativ schnurz.
Zuletzt ein Schalter, der das Einrasten des Griffs anzeigt.
Dann reichen Endschalter unten links und die Schritte.
1
driveToLowBoundOfRow(row);
2
driveToDrawer(drawer);
3
liftUntilLocked();
4
pullDrawer();
Abr dazu müsste man die Mechanik kennen, die kann Software beliebig 
kompliziert oder einfach machen...

Magnete an der Lade haben einen relativ großen Erfassungsbereich, Taster 
sind mechanisch anfällig.
Eine Marke, die man evtl. auch noch vermisst (und dann für jede Lade 
womöglich noch ein XY-Korrekturwert) wären meine Wahl, wenn die Mechanik 
es nicht hergibt. Könnte aber evtl. optisch mit Schmutz ein Problem 
geben.
Hat also alles Vor- und Nachteile...

Darf man fragen wozu das ist?

: Bearbeitet durch User
von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Jens M. schrieb:
> Schrittmotor und Encoder ist ja an sich schon doppelt gemoppelt, jetzt
> fehlt nur noch hier und da eine Referenzposition und los geht's.

Ich verstehe das Argument, ich wusste nur nicht wie man Sicherstellen 
kann, dass der Motor sich auch gedreht hat ohne Encoder. Es gibt wohl 
die Möglichkeit über den Strom zu gehen um das herauszufinden. Dachte 
mir aber, dass Encoder einfacher sind, vielleicht im Nachhinein keine 
gute Entscheidung.

Jens M. schrieb:
> driveToLowBoundOfRow(row);
> driveToDrawer(drawer);
> liftUntilLocked();
> pullDrawer();
> Abr dazu müsste man die Mechanik kennen, die kann Software beliebig
> kompliziert oder einfach machen...

Genauso funktioniert es in etwa. Ich hab dir ein Bild mit hochgeladen 
mit den Achsenbeschriftungen. Also Schlitten A wird durch einen Riemen 
in die X Achse bewegt und Schlitten B wird von einer Spindel hochgehoben 
(Auch hier wieder viel von einem 3D-Drucker abgeguckt). Achse X ist in 
echt 1,2 m lang und die Y Achse 1 m.

Jens M. schrieb:
> Eine Marke, die man evtl. auch noch vermisst (und dann für jede Lade
> womöglich noch ein XY-Korrekturwert) wären meine Wahl,

Du sprichst nur von einer 'Marke' welcher Art wäre die Marke die du 
wählst?

Jens M. schrieb:
> Darf man fragen wozu das ist?

Klar, dass Basisprojekt war eine Arbeit für die Uni. Da ich das Modul 
jetzt abgeschlossen habe, fand ich es zu schade um es wegzustellen oder 
es gar wegzuschmeißen. Weshalb ich auf die Idee gekommen bin die 
Schubladen zu verkleinern und als Regel für meine Hardware-Teile zu 
verwenden. Also Tranistoren, Mosfets, Relais, IC's usw. Allerdings 
benötige ich bei kleineren Schubladen kleinere Toleranzen und dann sind 
wir auch schon im jetzt angekommen und ich frage wie ich diese am 
besten, ohne die Mechanik groß umzubauen, verbessern kann.

von Xerxes (Gast)


Lesenswert?

Hi.
Ohne es jetzt selbst ausprobiert zu haben würde ich, als erste Idee, die 
Grob- und die Feinpositionierung getrennt machen.
Also, per "Schnellvorschub" in die ungefähre Position fahren und dann 
optisch (Barcode, Label etc. ) eine Feinpositionierung machen.

Das wäre dann zwei getrennte Themen die man einzeln gut abarbeiten kann.

von User32 (Gast)


Lesenswert?

Sebastian schrieb:
> Jens M. schrieb:
>> Schrittmotor und Encoder ist ja an sich schon doppelt gemoppelt, jetzt
>> fehlt nur noch hier und da eine Referenzposition und los geht's.
>
> Ich verstehe das Argument, ich wusste nur nicht wie man Sicherstellen
> kann, dass der Motor sich auch gedreht hat ohne Encoder. Es gibt wohl
> die Möglichkeit über den Strom zu gehen um das herauszufinden. Dachte
> mir aber, dass Encoder einfacher sind, vielleicht im Nachhinein keine
> gute Entscheidung.


Nö, Stepper mit Encoder ist durchaus üblich und keine schlechte Idee. 
Man will schon sicherstellen, dass der Motor genau so dreht wie gedacht 
und keine Schritte verliert. Kann man auch mit Referenzposition lösen, 
dann muss man da aber auch regelmäßig hin fahren.

von Jens M. (schuchkleisser)


Lesenswert?

Sebastian schrieb:
> Du sprichst nur von einer 'Marke' welcher Art wäre die Marke die du
> wählst?

Eine Reflexlichtschranke, dazu ein schwarzer runder Fleck auf weiß (oder 
andersrum).
Im Grunde die Hardware, die ein Linienverfolger nutzt.
Mit 2-4 Bewegungen kann man das Zentrum der Marke eigentlich finden, 
wenn man grundsätzlich ne Idee hat wo sie ist:
Zuerst in X-Richtung von der einen zur anderen Kante, dann weiß man 
CenterX.
Dort hinfahren.
Dann in Y-Richtung von Kante zu Kante, dann hat man CenterY. Hierbei 
sollte sich eigentlich schon der größte Durchmesser gefunden haben, d.h. 
maximale Genauigkeit.
Sollte Fleckgröße und Schrittgröße ungünstig sein, sollte man den X-Teil 
nochmal wiederholen, denn möglicherweise hat man bei X nur so gerade 
eben den Rand des Flecks vermessen und damit ein wenig Ungenauigkeit.
Wer es dann ganz exakt haben will macht Y auch nochmal.

So funktioniert das zumindest bei Maschinen, die einen Reflexlaser zur 
Markenfindung nutzen. Geht simpel und schnell.

Sebastian schrieb:
> Dachte
> mir aber, dass Encoder einfacher sind, vielleicht im Nachhinein keine
> gute Entscheidung.

Ich hätte bei "Encoder auf der Motorwelle" eher an einen Servoantrieb 
gedacht, keinen Stepper.

von Sebastian (Gast)


Lesenswert?

Xerxes schrieb:
> Also, per "Schnellvorschub" in die ungefähre Position fahren und dann
> optisch (Barcode, Label etc. ) eine Feinpositionierung machen.

Jens M. schrieb:
> Eine Reflexlichtschranke, dazu ein schwarzer runder Fleck auf weiß (oder
> andersrum).

Denke, der Trend ist klar zu erkennen. Dann werde ich mich in die 
Richtung mal umschauen. Ich danke für eure Hilfe.

von Günni (Gast)


Lesenswert?

User32 schrieb:
> Nö, Stepper mit Encoder ist durchaus üblich und keine schlechte Idee.
> Man will schon sicherstellen, dass der Motor genau so dreht wie gedacht
> und keine Schritte verliert.

Vor vielen Jahren habe ich mal die Schlittenposition für einen Drucker 
programmiert, dessen Druckkopf mit einem Schrittmotor angesteuert wurde. 
Der Schrittmotor macht keinen Schrittfehler, wenn die Minimalzeiten 
genau eingehalten wurden und der Motor so dimensioniert ist, dass er das 
erforderliche Drehmoment auch unter ungünstigen Bedingungen (Führung des 
Kopfes verschmutzt, Kopf stößt bei Bewegung an falsch eingezogenes 
Papier o.ä.) aufbringen kann. Wenn das nicht sicher gegeben ist, ist ein 
Encoder zur Kontrolle der Bewegung durchaus sinnvoll.

Dass bei größeren Riemenlängen deren Elastizität und auch ein 
"Durchhängen" infolge des Eigengewichts sich bemerkbar macht, ist 
logisch. Hier benötigt man die beschriebenen Methoden zur Kontrolle der 
Position in Bezug auf das Ziel. Aber wichtig ist, die notwendigen 
Korrekturschritte in der Berechnung für das nächste Ziel mit zu 
berücksichtigen (beispielsweise wenn man zurückfährt), da dann diese 
Fehlereinflüsse wieder "verschwinden".

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.