Selektiermaschine bauen

Hi

Die Micro-Steps stellst Du am Treiber ein - für den Arduino ändert sich nur die Anzahl Schritte pro Umdrehung - der Rest ist Dem egal.
Ob Du nach 200 Vollschritten, 400 Halbschritten, 800 Viertelschritten ein Mal rum bist, ist dem Sketch egal - oder auch, wenn's 32tel Micro-Schritte sind.

Der Initiator macht ja quasi nichts Anderes, also irgendwo zu sagen 'hier bin ich' - spätestens dann ist Dir (dem Arduino) die Position bekannt - eine Referenzierung macht nichts Anderes.

Vll., daß die Referenzierung vorher durchgeführt wird, damit man nicht auch Block fährt (gegen das Ende der Achse ... bei einem Rundtisch wohl schwieriger :wink: )

Mach Du Mal - wir sind ja hier und freuen uns, wenn sich bei Dir die ersten Funktionen zeigen!

MfG

Ich mach ja :wink:

Der Zylinder Zuführer ist gerade im entstehen, die Ali Teile sind bestellt werden aber lange auf sich warten lassen.
Inzwischen werde ich meine Ardu Testdinger quälen :slight_smile:

4711:
Ich mach ja :wink:

Das hier ist kein Chat.

Zudem wäre schön, wenn Du zitierst, worauf Du Dich beziehst. Leider ist das hierzuforum eher selten, was viele Threads quasi unlesbar macht.

Gruß

Gregor

Mein erstes Testsketch ist gemacht, ich vermute! dass es funktioniert.

Per Taster soll der Stepper einen gewissen Weg drehen.
Ich induziere anscheinend eine Spannung in den Pin 8 indem ich nur mit Hand über das Steckboard gleite und der Motor dreht dann. Also eine berührungslose Schaltung ohne Schalter sozusagen.
Der Schalter ist gar nicht eingesteckt, d.h. sobald das Kabel in den Pin 8 eingesteckt ist, dreht der Motor sobald ich mit der Hand in die Nähe komme und das ist das selbe Verhalten auch wenn der Schalter am Board eingesteckt ist.
D.h. ich induziere eine Spannung von ein paar Millivolt? ist der Eingang für den Ardu true?
Steh da grad auf der Leitung? Fehlt mir wo eine Masse, ein Bezug? Wüsste nicht wo.

Dann nochmal ran an die Grundlagen: Digitale Eingänge niemals ohne Pull-Up-/Pull-Down-Widerstand verwenden. Einfachste Variante wäre die Nutzung des internen Pull-Up-Widerstandes per pinMode(pinschalter, INPUT_PULLUP);
Das bedingt jedoch eine Umkehr der Logik, du musst demnach den Schalterzustand nach LOW abfragen.

4711:
... dreht der Motor sobald ich mit der Hand in die Nähe komme ...

Das Verhalten Deiner Schaltung wird sich schlagartig ändern, wenn Du mit einem Pullup-/down-Widerstand dafür sorgst, dass bei offenem Kontakt ein definierter Level am fraglichen Pin anliegt.

Entweder aktivierst Du in setup() den Arduino-internen Pullup-Widerstand mit

pinMode(pinschalter,INPUT_PULLUP);

und änderst die Logik in loop() -- oder Du setzt einen Pulldown-Widerstand ein.

Gruß

Gregor

Danke Jungs!

Ich hätte es jetzt mal mit dem internen Pullup probiert, nun erfolgt keine Reaktion auf mein Eingangssignal am Pin 8? :o
Ich denke ich muss das Signal dann auch umdrehen, also Masse schalten?

Ich habe es nun mit dem Pulldown Widerstand gemacht und siehe es klappt !!! FREU FREU !!!

Wie kann ich mir denn den Inhalt/Funktionsumfang der stepper.h Bibliothek ansehen am Mac?

Für mich sieht es auf deinem Foto der Schaltung so aus, als steckt der Schalter aus Plus, der Muss nach Masse...

Ohne Pullup am Ardu, mit Pulldown Widerstand.
Plus zum Schalter, nach Schalter dann Pulldown und zum Ardu.

Was ich nicht schaffe ist zBsp. die Drehrichtung umkehren?

Wie fügt man hier am Besten den Code ein?

</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *.

Gruß Tommy

Danke Tommy56

Also mein "einfacher" Stepper fkt., da bin ich gespannt auf das Ali Zeugs wie das funktioniert.

Nun die nächste Frage an die Runde, Höhenmessung, elektrisch nicht mechanisch, welche Sensorik würdet ihr mir da empfehlen?
Ev. Lasermodule (wie genau sind diese), übereinander in einer 3D Druck Platte montiert?
Messung per Camera wurde angesprochen, würde mir bitte jemand das näher erklären, danke!

Hi

Über was für Gegenstände reden wir hier?
Bierdeckelstapel oder doch eher kleine gefräste Eifeltürme?

LIDAR könnte Was für Dich sein - oder, wenn nur eine grobe Unterscheidung gefordert ist, mehrere Lichtschranken, Die vom Objekt durchfahren werden.

MfG

Wenn der Stepper eine Bewegung fährt, scheint mir ist der Arduino damit beschäftigt und blockiert. Ist das richtig?
Wenn als der Stepper dreht, können dann LS Signale erkannt werden?

19mm Zylinder, bei einer Abweichung von über +/-1,5mm soll der Zylinder ausgeschmissen werden.

Hi

Die AcellStepper blockiert nicht, dafür muß aber sichergestellt sein, daß loop() schnell durchlaufen wird.
In jedem loop()-Durchgang wird geprüft, ob 'dieser Stepper JETZT einen Schritt machen soll' - und dann halt gemacht, oder eben nicht.
Das geht auch mit mehreren Steppern - wenn hier aber auch nicht benötigt.

Drei Lichtschranken

  • unterhalb des unteren GUT-Maß, damit wir das Objekt erkennen, auch, wenn's zu kurz ist
  • Untere GUT-Maß - Lichtschranke MUSS unterbrochen werden
  • Obere GUT-Maß - Lichtschranke darf NICHT unterbrochen werden.

Wenn Erkennung + Untere GUT-Maß 'Licht' -> Ausschuss
Wenn Erkennung + Obere GUT-Maß 'kein Licht' -> Ausschuss

Die Positionserkennung kann auch über den Stepper erfolgen - im Normalfall wissen wir ja, wo Der gerade steht, könnten also die unterste Lichtschranke 'Da ist was' einsparen.

MfG

  • untere GUT-Maß

Guten Morgen und wieder vielen Dank für eure Hilfe!

Dann muss ich mir die AcellStepper.h Lib ? gleich ansehen!

Mom. ist ja noch die Frage, ob es eine Positionierung sein muss, oder einfach ein endlos Drehteller. Aus Mangel an Erfahrung gehe ich aktuell den aufwendigeren Weg mit dem Stepper und Positionierung. Sollte es möglich sein alle Überprüfungen in der Drehbewegung zu machen, dann wäre der endlos Drehtteller wieder im Gespräch. Der Kanckpunkt scheint mir ist die Überprüfung des Bohrloches im Zylinder (vertikal), glaube noch nicht dass dies in Bewegung klappt, daher die Positionierung auf Auswurfpositionen.

3 LS für:

  • Erkennung des Objekts und Start der Maschine (unter Gut-Maß), Position beim Einwurf in die Maschine
  • Erkennung des Gut-Maß (Zylinder hat Mindestmaß), Position in Bewegung des Drehtellers
  • Erkennung über Gut-Maß (Zylinder zu hoch), Position in Bewegung des Drehtellers

Ablauf:

  1. Station x erkennt/hat Zylinder, Drehteller dreht.
  2. Station x hat Zylinder, dieser wird geprüft.
  3. Station x: Zylinder ist gut, nichts passiert. Zylinder ist schlecht, die Klappe öffnet.
  4. Station y: abrutschen des guten Zylinders, keine weitere Kontrolle

Station 0 und Bewegung zu Station 1:

    1. LS erkennt Zylinder
    1. u 3. LS erkennen ob der Zylinder gut/schlecht ist

Station 2

  • 1 LS? erkennt das Loch im Zylinder

Station 3

  • abrutschen des Zylinders, Zähler inkrementieren

So ist mein Gedanke der Maschine, es fehlt mir aktuell die Auswahl der Lichtschranke aus Mangel an Erfahrung.

postmaster-ino:
Die AcellStepper blockiert nicht, ...

Die AccelStepper kann nicht blockierend verwendet werden.

4711:
Dann muss ich mir die AcellStepper.h Lib ? gleich ansehen!

Die Bibliothek AccelStepper unterscheidet zwischen absoluter und relativer Positionierung und blockierender und nicht blockierender Bewegung. Das Beispiel Random mit den Methoden distanceToGo() und run() sollte für Dich ein guter Einstieg sein.

Bilder kann man auch zeigen, gedreht gefiele es mir allerdings besser:

OK, die AcelStepper LIB werde ich testen.

Hätte Ihr Tips zu der Sensorik, Lichtschranken IR oder Laser oder Näherungssensor (der Zylinder ist metallisch) und vorallem dem Sensor für das Bohrloch? Ich tappe da im Dunkel, ein paar Tips würden mir da wirklich helfen.

Wenn berührungslose Abtastung verlangt wird, dann würde ich mit einer Kamera (oder mehreren) und einem PC zur Bildverarbeitung anfangen. Eventuell noch Lichtschranken, am besten mit Laser zur Erkennung von Kanten.

Oder Taster...

DrDiettrich:
Wenn berührungslose Abtastung verlangt wird, dann würde ich mit einer Kamera (oder mehreren) und einem PC zur Bildverarbeitung anfangen. Eventuell noch Lichtschranken, am besten mit Laser zur Erkennung von Kanten.

Oder Taster...

Davon habe ich keine Ahnung. Der Ansatz mit den LS ist ja nicht schlecht denke ich mal. Bildverarbeitung ist ein komplettes Neuland, das ich so wohl nicht betreten werde, mach mal wenig Sinn.
Daher bin ich hier um es mit einfachen Mitteln zu lösen.

Was ich mich gerade frage ist, wie ich das Funduino Board (Treiber) das auf Pin 0-6 aufgesteckt ist mit der AccelStepper verbinde, hoffe die Dokumentation bringt mich da weiter, allerdings steht als einleitendes Wort gleich dass es für das Adafruit Motor Shield V1 entwickelt wurde. Tja.

Ist das richtig? Einfügen der Lib, Instanz Motor:

#include <AccelStepper.h> // Hinzufügen der Programmbibliothek.
 AccelStepper Motor(1, 6,5,4,3, 1); // 1..Teiber Board, Pins 2,3,4,5,6, 1..Enable

Parameters
[in] interface Number of pins to interface to. Integer values are supported, but it is preferred to use the MotorInterfaceType symbolic names. AccelStepper::DRIVER (1) means a stepper driver (with Step and Direction pins). If an enable line is also needed, call setEnablePin() after construction. You may also invert the pins using setPinsInverted(). AccelStepper::FULL2WIRE (2) means a 2 wire stepper (2 pins required). AccelStepper::FULL3WIRE (3) means a 3 wire stepper, such as HDD spindle (3 pins required). AccelStepper::FULL4WIRE (4) means a 4 wire stepper (4 pins required). AccelStepper::HALF3WIRE (6) means a 3 wire half stepper, such as HDD spindle (3 pins required) AccelStepper::HALF4WIRE (8) means a 4 wire half stepper (4 pins required) Defaults to AccelStepper::FULL4WIRE (4) pins.
[in] pin1 Arduino digital pin number for motor pin 1. Defaults to pin 2. For a AccelStepper::DRIVER (interface==1), this is the Step input to the driver. Low to high transition means to step)
[in] pin2 Arduino digital pin number for motor pin 2. Defaults to pin 3. For a AccelStepper::DRIVER (interface==1), this is the Direction input the driver. High means forward.
[in] pin3 Arduino digital pin number for motor pin 3. Defaults to pin 4.
[in] pin4 Arduino digital pin number for motor pin 4. Defaults to pin 5.
[in] enable If this is true (the default), enableOutputs() will be called to enable the output pins at construction time.


das mit dem Foto hier anzeigen klappt irgendwie nicht?