Druckversuche mit Lineareinheit - Anfänger

Hey Leute!

Ich habe diesen Post schon vor ein paar tagen im Arduinoforum eingestellt, jedoch keine Antwort erhalten. Daher hoffe ich, dass ihr mir helfen könnt.

Schon einmal vorab: Ich bin absolut neu hier und habe mich zuvor leider noch nicht mit Arduino beschäftigt :-[
Ich würde nun aber gern ein Projekt verwirklichen, wobei ich denke, dass eine Arduinosteuerung Sinn machen könnte.

Projekt:
Ein Schrittmotor soll eine senkrechte Lineareinheit betreiben (Spindelbetrieben, M5 Gewinde.) Die Lineareinheit soll dazu dienen, relativ weiche Proben auf einer Laborwaage (welche als Kraftmesszelle dient) zu belasten und somit die Druckfestigkeit zu bestimmen.
Die Probe soll hierzu relativ langsam eingedrückt (ca. 3,3mm/s) und für einige Sekunden gehalten werden. Danach soll die Probe wieder entlasetet werden.
Es wäre hierbei wichtig, dass die Proben (Probenhöhe ist konstant) immer im gleichen Maß eingedrückt werden. D.h., die Lineareinheit soll immer exakt die gleiche Stecke fahren.-> Eine erste Frage hierzu: Braucht man dazu einen Motor mit Encoder?

Motor
Der zu verwendene Schrittmotor hat folgende Daten:

2 Phasen Hybridmotoren (bipolar) NEMA 11
Maximalspannung: 60V
Nennspannung: 24-48V
Nennstrom: 1A
Haltemoment: 0,13Nm
Schrittwinkel: 1,8°

Die Vorschubgeschwindigkeit soll 200mm/min betragen, als eine Drehzahl von 250 U/min

Was ich bisher rausgefunden habe :wink:
Also ich denke ich benötige einen Arduino :wink: (Welchen empfehlt ihr?)
und ein Shield, aber welches? Ich hatte was von Adafruit Shield gelesen,
Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit - v2.3
provides 1.2A per bridge (3A peak)
Can run motors on 4.5VDC to 13.5VDC)
Kann ich damit meinen Motor betreiben?
Für die Steuerung kann ich ja denke ich mal auf eine Library zugreifen.

Ist mein Vorhaben für einen Laien wie mich (ja ich bin gewillt mich weiter in die Materie einzulesen, es geht mir grade nur um die grundsätzlichen Dinge) mit der Library umzusetzen? Oder benötige ich hierfür größere Programmierkentnisse?

Vielen Dank für Eure Hilfe!

Machbar ist es.

Aber für einen Anfänger ein ambitioniertes Projekt.

Das Shield kann nicht die Spannungen, die dein Motor braucht.

Für mich ist aber mehr die Frage: Muß die Waage auch mit dem Arduino kommunizieren?

Du kannst mit dem Steppermotor schon reproduzierbar immer die gleiche Wegstrecke fahren.
Aber man muß zuerst den Anfangspunkt anlernen oder definieren.
Da kann man per Tastendruck machen, oder automatisch. (Mehr Aufwand)

Wieviel Zeit hast du?
Wenn du keinen Zeitdruck hast, dich langsam anhand von kleinen Sub-Projekten rantasten kannst, ist das machbar.
Libraries sind gut, aber programmieren mußt du trotzdem selbst. Aber das ist lernbar.

Vielen Dank schonmal für die Antwort!
Das ganze soll im Rahmen eines Praktikums stattfinden. Zeit habe ich (kann mich quasi immer ganztags damit beschäftigen), wobei das Hauptaugenmerk natürlich auf den Versuchen liegt.
Die Lineareinheit mit Motor ist allerdings schon vorhanden. Mit der Waage muss nicht kommuniziert werden.
Kennst du ein Shield, welches die benötigten Spannungen liefern kann?
z.B. dieses hier? http://www.conrad.ch/ce/de/product/678473/Velleman-Motor-und-Power-Shield-fuer-Arduino-KA03-Bausatz?ref=searchDetail
Lässt dieses sich mit einem Arduino Uno betreiben?
Grüße

Was ist das Arduinoforum?? :wink: :wink: :wink:

Die Angaben zum Motor sind nicht ganz vollständig und darum ist es schwierig Dir einen Treiber vorzuschlagen. Hast Du die Modelbezeichnung des Motors?

Maximalspannung: 60V
Nennspannung: 24-48V
Nennstrom: 1A

Diese Angaben sind etwas "ungenau". Die Nennspannung ist ein Wert und nicht ein Bereich oder 2 Werte.

Ansonsten die Anwendung die Du machen willst ist machbar.
Viele Waagen haben eine serielle Schnittstelle RS232, auf der sie die Daten ausgeben. Zm auslesen brauchst du einen RS232 Pegelwandler und die Informationen über das Protkoll.

Viele Grüße Uwe

Hey, vielen Dank für die Antwort!

Zu dem Motor habe ich lediglich folgendes Datenblatt:
Datenblatt
Es ist der kleinste Motor (Nema11)
Maximalspannung [VDC] 60
Nennspannung [VDC] 24-48
Nennstrom [A] 1,0
Mehr kann ich dazu leider auch nicht sagen.
Grüsse

zerozero89:
z.B. dieses hier? http://www.conrad.ch/ce/de/product/678473/Velleman-Motor-und-Power-Shield-fuer-Arduino-KA03-Bausatz?ref=searchDetail
Lässt dieses sich mit einem Arduino Uno betreiben?

Dieses Shield sollte passen.
Und laut Conrad ist es ein Arduino-Shield incl. Beispielprogramm. Sollte als auch mit Arduino laufen.
Ein Arduino Uno R3 müsse reichen.

Der könnte sogar auch noch ein Display ansteuern.

Viele Waagen haben eine serielle Schnittstelle RS232

Ah ja hat sie wirklich, danke für den Hinweis! Ich werde mich aber erstmal auf den Aufbau der Lineareinheit konzentrieren, um erstmal Erfahrungen zu sammlen.

Und laut Conrad ist es ein Arduino-Shield incl. Beispielprogramm

Kann ich mit diesem Shield dann auch jede beliebige Library nutzen?
zB diese?
oder könnt ihr eine empfehlen? Einfach damit ich mich schon ein wenig einlesen kann, bis alle Teile angekommen sind :wink:
Nocheinmals vielen Dank und sorry für die wahrscheinlich doofen Fragen :wink:
Grüsse

Entschuldige Gunther, Du hast unrecht, aber dennoch liebe Grüße :wink:

Aus dem Datenblatt:
Nennstrom = 1,0A; Widerstand/Phase = 2,3 Ohm
Die Kennlinie sind für 24 oder 48V mit Viertelschritte angegeben.

Das bedeutet, daß der Motor mit einer Stromsteuerung betrieben wird.

Das vorgeschlagene Modell des Treibers funktioniert nicht. Es ist zwar nicht ersichtllich welches TreiberIC es verwendet (L298 kann es wegen des max Stromes von 2,5A nicht sein) aber es ist sicher kein Microschritt-Stromtreiber. Ein bißchen gesucht: http://www.velleman.eu/downloads/0/modules/usermanual_vma03.pdf Es ist ein L298 und max 2A!!

Ein geeigneter Treiber ist der A4988 oder DRV8825. Der kann Microschritte machen. Du mußt den Strom auf dem Treiber auf 1A stellen. Nimm einen von denen und 24V Netzteil/2A für den Motor.
zB Pololu - A4988 Stepper Motor Driver Carrier oder Pololu - DRV8825 Stepper Motor Driver Carrier, High Current beide gibt es aber auch von vielen anderen Herstellern.

Die Ansteuerung erfolgt über 2 PIN: Richtung und Rechteckspannung für die Schritte. Eigentlich brauchst Du dann keine Bibliothek.

Grüße Uwe

Hm okay dh ich könnte auch dieses Shield verwenden? Link

Du mußt den Strom auf dem Treiber auf 1A stellen

Wie genau lässt sich die Stromstärke auf 1A begrenzen?

Die Ansteuerung erfolgt über 2 PIN: Richtung und Rechteckspannung für die Schritte. Eigentlich brauchst Du dann keine Bibliothek.

Könntest du das evtl noch einmal genauer erläutern? Mein Vorhaben war halt, eine Bibliothek einzubetten und den Motor dann über "einfache Befehle" zu steuern.
Sorry nochmals für die Fragen...aller Anfang ist schwer :wink:
Grüsse aus der Schweiz

Ja das Shield müßte funktionieren (auch wenn es nur einen Ausgang braucht)

Zur Einstellung:
http://www.dfrobot.com/wiki/index.php/Stepper_Motor_Shield_For_Arduino_(SKU:DRI0023)

Adjustable current control lets you set the maximum current output with a potentiometer, which lets you use voltages above your stepper motor’s rated voltage to achieve higher step rates. The A4988 supports such active current limiting, and the trimmer potentiometer on the board can be used to set the current limit. One way to set the current limit is to put the driver into full-step mode and to measure the current running through a single motor coil without clocking the STEP input. The measured current will be 0.7 times the current limit (since both coils are always on and limited to 70% of the current limit setting in full-step mode).

Man kann auch die Spannung am Referenzeingang messen. Um genaueres zu sagen müßte ich etwas herumsuchen, wozu ich im Moment keine Zeit habe. Am Abend gerne. Die Firma gibt keine infos über die montierten A4988 Module, was nicht so gut ist.

Grüße Uwe

Super nett, vielen Dank!
Könntest du mir noch kurz mitteilen, ob ich bei der Verwendung des Shields auf eine Library zurückgreifen kann, oder die Steuerung "per Hand" programmiert werden muss?
Viele Grüsse

Du brauchst überhaupt kein Shield.

Du benötigst nur einen Motortreiber wie den A4988 und einen Arduino Uno.
Den Arduino versorgst du über USB, den Motor über ein externes Netzteil.

Programmieren kannst du das ganze über eine Library, aber auch per Hand. In beiden Fällen musst du selber programmieren.
Einen Schrittmotor zu programmieren der eine bestimmt Strecke fahren soll ist nicht schwierig.

Bezüglich des Motors solltest du erstmal wissen wieviel Drehmoment der haben muss um an der Spindel eine entsprechende Axialkraft (=Druckkraft) zu erhalten. Die Axialkraft drückt ja schließlich deine Proben zusammen.

Die Axialkraft kannst du näherungsweise über folgende Formel berechen:
Fa = M 2pi*n/P
M = Motordrehmoment
n = Wirkungsgrad Gewinde ( 0,1 angenommen)
P = Gewindesteigung

Für deinen jetzigen Motor ergibt sich mit M5 Gewindestange:
Fa = 0,13 Nm * 23,14 0,1 /0,0008m
Fa = 102 N enstpricht ~ 10,2 Kg

Mit Sicherheitsfaktor würde ich sagen dass du maximal 50N Druckkraft erzeugen kannst.

uwefed:
Entschuldige Gunther, Du hast unrecht, aber dennoch liebe Grüße :wink:

Uuups. :-*

Ja, da hast du recht. Manchmal sollte man Datenblätter doch genauer lesen!
(Oder einfach mal Schnauze halten, wenn man keine Ahnung hat!)

Grüße

Gunther

SDHC1:
Du brauchst überhaupt kein Shield.

Du benötigst nur einen Motortreiber wie den A4988 und einen Arduino Uno.
Den Arduino versorgst du über USB, den Motor über ein externes Netzteil.

Programmieren kannst du das ganze über eine Library, aber auch per Hand. In beiden Fällen musst du selber programmieren.
Einen Schrittmotor zu programmieren der eine bestimmt Strecke fahren soll ist nicht schwierig.

Bezüglich des Motors solltest du erstmal wissen wieviel Drehmoment der haben muss um an der Spindel eine entsprechende Axialkraft (=Druckkraft) zu erhalten. Die Axialkraft drückt ja schließlich deine Proben zusammen.

Die Axialkraft kannst du näherungsweise über folgende Formel berechen:
Fa = M 2pi*n/P
M = Motordrehmoment
n = Wirkungsgrad Gewinde ( 0,1 angenommen)
P = Gewindesteigung

Für deinen jetzigen Motor ergibt sich mit M5 Gewindestange:
Fa = 0,13 Nm * 23,14 0,1 /0,0008m
Fa = 102 N enstpricht ~ 10,2 Kg

Mit Sicherheitsfaktor würde ich sagen dass du maximal 50N Druckkraft erzeugen kannst.

Hey, ja das habe ich alles schon berechnet ,trotzdem danke! (Als Maschinenbaustudent fiel mir das auch deutlich leichter als die Steuerung ;)),
Meine Proben haben eh nur eine max. Prüfkraft von ca. 5N.
Also was ich bisher weiss ist, dass ich den Treiber zuvor auf eine bestimmte Stromstärke konfigurieren muss (über ein Potentiometer)? Ist es dennoch nicht simpler, einfach ein Shield zu nutzen?
Gibt es einen Beispielcode, dass ich mich ein wenig in die Logik eindenken kann? (Ich habe nur etwas MatLab Erfahrung, jedoch nicht in C)

Vielen Dank für Eure Hilfe :slight_smile:

Als Maschinenbaustudent solltest du etwas mehr Eigeniniative an den Tag legen ;). Was du vorhast wird in ähnlicher Form in x-beliebigen Tutorials beschrieben :slight_smile:
Denn es ist ja nix anderes als eine Achse einer CNC Maschine mit Schalter für die Referenzfahrt.

Hänge dich bitte nicht zu sehr an der Stromstärke auf. Das ist ein Detail was erst später zum Tragen kommt und jetzt überhaupt noch keine Rolle spielt. Es ist egal ob du ein Shield oder kein Shield hast-die Stromstärke musst du immer einstellen. (Der Treiber wo der Strom eingestellt wird, wird schließlich auf das Shield aufgesetzt. Das Shield nimmt dir nur die Verkabelung ab)

Du brauchst nur Part1 lesen:

Prinzipiell wird alles beschrieben was du brauchst. Den Button nutzt du dann nicht zur Richtungsumkehr sondern um den Motor zu "nullen" (Referenzfahrt)

Du könntest das ganze auch per grbl umsetzen. Home · grbl/grbl Wiki · GitHub
Dann brauchst du überhaupt nix programmieren. Du müsstest dich nur ein wenig mit G-Code auseinandersetzen.
Das ist quasi ein Sketch was du auf den Arduino lädst. Über Befehle (G-code) kannst du deine Achse dann steuern. Du tippst dann einfach "G01 X20" in ein Bedienpanel ein und dein Motor fährt dann 20mm runter. Dann tippst du "G01 X-20" und dein Motor fährt wieder 20 mm hoch.

Du kannst auch Vorschubgeschwindigkeit etc. einstellen. Der ganze G-code musst du auch nicht immer eintippen, sondern kann in einem txt File gespeichert werden, den du dann immer wieder aufrufst. Ich würde sagen das ist die Lösung für dich.

Ok danke vielmals :), ich werde mich nun etwas mehr einlesen. Ging mir erstmal nur darum ob die Ansätze richtig sind.

guntherb:
Uuups. :-*

Ja, da hast du recht. Manchmal sollte man Datenblätter doch genauer lesen!
(Oder einfach mal Schnauze halten, wenn man keine Ahnung hat!)

Grüße

Gunther

So wollte ich das nicht hinstellen; Brainstorming halt. :wink: :wink:

Grüße Uwe

Noch eine kurze Zwischenfrage:
Reicht ein solches Netzteil aus? LINK Oder muss ich noch iwas zusätzlich beachten?
Ich weiss doofe Frage aber ich Frage lieber vorher nocheinmal, beovor ich etwas verkehrt mache.
Danke!

zerozero89:
Noch eine kurze Zwischenfrage:
Reicht ein solches Netzteil aus? LINK Oder muss ich noch iwas zusätzlich beachten?
Ich weiss doofe Frage aber ich Frage lieber vorher nocheinmal, beovor ich etwas verkehrt mache.
Danke!

Ja, das Netzteil müßte richtig sein.
Grüße Uwe

Sorry ich muss noch einmal ganz schnell fragen :frowning:
Ist es auch möglich ein 24V 1,5A Klick Netzteil zu nehmen?
Oder wird dieses im Betrieb dann evtl. zu heiss?
Danke und viele Grüsse