Forum: Mikrocontroller und Digitale Elektronik Arduino & Schrittmotor


von Gundelputz (Gast)


Lesenswert?

Hallo zusammen,
hab mir heute einen Arduino UNO gekauft und bin doch recht begeistert 
was der alles kann. Meine Idee war mein selbst gebautes LPT1-Interface 
zu ersetzen. Bei diesen konnte ich über die out und in Befehle acht 
Ausgebeports und 5 Eingabeport ansteuern. So zB. bei meiner ersten 
CNC-Fräse.
Einen Schrittmotor anzusteuern ist auch beim UNO kein Problem. Leider 
sehe ich noch keine möglichkeit externe Daten aus einer Datei (mit den 
Schrittlängen) in das sketch zu importieren.
Gibt es hierfür schon einen Ansazt?

von Cyblord -. (cyblord)


Lesenswert?

Gundelputz schrieb:
> Hallo zusammen,
> hab mir heute einen Arduino UNO gekauft und bin doch recht begeistert
> was der alles kann. Meine Idee war mein selbst gebautes LPT1-Interface
> zu ersetzen. Bei diesen konnte ich über die out und in Befehle acht
> Ausgebeports und 5 Eingabeport ansteuern. So zB. bei meiner ersten
> CNC-Fräse.
> Einen Schrittmotor anzusteuern ist auch beim UNO kein Problem. Leider
> sehe ich noch keine möglichkeit externe Daten aus einer Datei (mit den
> Schrittlängen) in das sketch zu importieren.
> Gibt es hierfür schon einen Ansazt?

Nein, SD Karte wurden ja noch gar nicht erfunden. Oder halt....

von Gundelputz (Gast)


Lesenswert?

Ich entnehme deine antwort das ich irgendwie eine SD Karte hier ins 
spiel bringen sollte.
erzähle mehr!

von Cyblord -. (cyblord)


Lesenswert?

Gundelputz schrieb:
> Ich entnehme deine antwort das ich irgendwie eine SD Karte hier ins
> spiel bringen sollte.
> erzähle mehr!

Nein, kombiniere einfach mal deine Anfrage

> sehe ich noch keine möglichkeit externe Daten aus einer Datei (mit den
> Schrittlängen) in das sketch zu importieren.

mit dem Stichwort "SD-Karte".

Und erzähle uns was dir dazu einfallen könnte. Vielleicht wird ja sogar 
eine konkrete Frage daraus. oder aber du googelst gleich "Arduino Uno 
SD-karte".

von Michael U. (amiga)


Lesenswert?

Hallo,

da Du von LPT-Interface sprichst, hängt das letztlich also an einem 
Rechner.

Die serielle Schnittstelle und ihre Anbindung per USB-Wandler hat der 
UNO ja von Hause aus, kannst Du also Deine Daten darüber schicken.

Gruß aus Berlin
Michael

von MaWin (Gast)


Lesenswert?


von Bastler (Gast)


Lesenswert?

MaWin schrieb:
> http://www.contraptor.org/grbl-gcode-interpreter

Das ist nix, weil Zitat aus obigem Link:
"but not tested on real CNC-rig. Still waiting for my micRo kit from 
Lumenlab.com"

Ausserdem fehlt wichtige Funktionalität.
Dann doch eher:

https://github.com/grbl/grbl/wiki

von Gundelputz (Gast)


Lesenswert?

Michael U. schrieb:
> da Du von LPT-Interface sprichst, hängt das letztlich also an einem
> Rechner.

Ja.
habe eigentlich nur den LPT galvannisch getrennt und dann an ein 
Netzteil gehängt

Michael U. schrieb:
> Die serielle Schnittstelle und ihre Anbindung per USB-Wandler hat der
> UNO ja von Hause aus, kannst Du also Deine Daten darüber schicken

Ich steuere die Aus- und Eingänge momentan in Lite-C über 
port_out(888,0) bzw. über port_in an.

wen dies für USB auch funktioniert wüsste ich gerne mehr hierzu.

Cyblord -. schrieb:
> mit dem Stichwort "SD-Karte".

ein wenig herrablassend die Antwort aber ich bin da sehr tollerand. 
Vieleicht kannst du ja nicht in Rätseln sondern in zusammenhängenden 
Sätzen antworten.

MaWin schrieb:
> http://www.contraptor.org/grbl-gcode-interpreter

leider ist mein Englisch noch schlechter als mein Benehmen

Ich fasse mal zusammen:
offensichtlich gibt es wohl einen CF-Adapter für den UNO denn ich aber 
leider beim Conrad nicht finden kann.
Mit diesem währe es dann möglich eine Datei auszulesen und diese in den 
Programmcode einzubinden.

von bianchifan (Gast)


Lesenswert?

Zum Thema Arduino, Schrittmotor und CNC werfe ich einfach mal zwei 
Begriffe in den Raum:
Shapeopko und GRBL-Shield
Mach was draus.

von Noch einer (Gast)


Lesenswert?

> eine Datei auszulesen und diese in den Programmcode einzubinden

Nahezu alle wollen eine andere Lösung: Der PC schickt über USB Kommandos 
an die Steuerung. Kein großer Unterschied gegenüber der LPT Lösung. Halt 
nur, dass ein zusätzlicher Mikrocontroller die Motoren gleichmäßiger 
ansteuern kann. Du kommst näher an die maximale Geschwindigkeit.

P.S. Es gibt ein ausgereiftes Projekt, was aber nur auf der Arduino 
Hardware läuft, nicht die Arduino Entwicklungsumgebung benutzt.

http://dank.bengler.no/-/page/show/5470_grbl

von MaWin (Gast)


Lesenswert?

Bastler schrieb:
> https://github.com/grbl/grbl/wiki

Oh, ich hatte nur grbl gesucht, und den Link genommen weil ich dachte 
der zeigt wie man grbl auf Arduino schiebt.

Damit Gundelputz weg kommt von deinem Sackgassen die ihm so einfach 
erscheinen aber nichts taugen.

von Gundelputz (Gast)


Lesenswert?

habe jetzt bei EBay mehrere CF Module gefunden
wo müssen die dann aufgesteckt werden und wie kann mann die dann 
auslesen?

von Bastler (Gast)


Lesenswert?

MaWin schrieb:
> weg kommt von deinem Sackgassen

?? klär mich mal auf, welche Sackgassen ich genannt hätte.

von Karl H. (kbuchegg)


Lesenswert?

Bastler schrieb:
> MaWin schrieb:
>> weg kommt von deinem Sackgassen
>
> ?? klär mich mal auf, welche Sackgassen ich genannt hätte.

Das du deinen Sketch jedesmal neu übersetzen und übertragen müsstest, 
wenn sich die Daten ändern.

Oder wie sonst hast du dir ....
>  Leider sehe ich noch keine möglichkeit externe Daten aus einer
> Datei (mit den Schrittlängen) in das sketch zu importieren.

.... vorgestellt?

Entweder die Daten werden zur Compilezeit in das Programm eingebunden 
(dann braucht es zur Laufzeit keine externe Datei mehr) oder aber das 
Programm liest zur Laufzeit die Daten aus einer Datei aus. In diesem 
Fall folgt aber unausweichlich, dass es irgendwo ein Dateisystem geben 
muss (und damit auch eine physikalische Repräsentierung davon) von dem 
der Arduino die Datei auslesen könnte.

Oder eben Variante 3:
Der PC liest die auf seiner Festplatte gespeicherte Datei aus und 
schickt die darin enthaltenen Daten zb per USB-Serieller Verbindung zum 
Ardunio, der sie dann ausführt. D.h. der Arduino hat mit der Datei an 
sich überhaupt nichts mehr zu tun, weder in Form von in den Sketch 
eingebettete Daten noch in Form eines Dateisystems das in irgendeiner 
Form auf irgendeinem Medium existiert, muss dafür aber einen 
Kommunikationskanal anbieten, auf dem er die Daten (=Befehle) entgegen 
nimmt. Wer dann mit welchen Daten aus welchem Grund ihm die Befehle 
zusteckt und woher die kommen, interessiert den Arduino nicht mehr die 
Bohne. Deinen Drucker interessiert ja auch nicht, ob da jetzt ein Word 
oder ein Excel die auszudruckende Seite zusammen gebaut hat.

: Bearbeitet durch User
von Gundelputz (Gast)


Lesenswert?

Habe jetzt noch ein paar nachforschungen angestellt und stelle mir das 
jetzt so vor.
Ich fahre jetzt los und hole mir vom pollin eine SC card Adapter.
Den verbinde ich wie auch immer (hier werde ich noch eure Hilfe 
benötigen) mit dem UNO.
Dann erstelle ich ein Programm was die Daten aus einer Text- oder 
anderen Datei ausliest und interpretiert.
Zum testen verbinde ich noch ein LCD Display welches mir die 
ausgelesenen Zeichen wiedergibt.
Ich bin mir Sicher das ich euch auch weiterhin um Hilfe bitten werde und 
Bedanke mich schon mal im Vorraus.

von Karl H. (kbuchegg)


Lesenswert?

Gundelputz schrieb:
> Habe jetzt noch ein paar nachforschungen angestellt und stelle mir das
> jetzt so vor.
> Ich fahre jetzt los und hole mir vom pollin eine SC card Adapter.

Ich hoffe du meinst damit einen Shield, auf dem ein SD Adapter verbaut 
ist.
Mit dem reinen Steckverbinder, in den die Karte eingeschoben wird, hast 
du nämlich erst mal wieder nichts abgefangen.
Wenn schon Arduino (und da spricht nichts dagegen), dann sollte man 
schon auch den ganzen Weg gehen. Dazu gibt es die Shields.
Der Vorteil: Für Dateisysteme auf SD-Karte gibt es im Arduino Bereich 
fertige Klassen. Die funktionieren aber nur dann, wenn der 
Karteneinschub genau so angeschlossen ist, wie das in der Programmierung 
vorgesehen wurde.

> Dann erstelle ich ein Programm was die Daten aus einer Text- oder
> anderen Datei ausliest und interpretiert.

hört sich gut an

> Zum testen verbinde ich noch ein LCD Display welches mir die
> ausgelesenen Zeichen wiedergibt.

Auch das hört sich gut an.
Meiner Meinung nach ist das sowieso einer der Hauptfehler, den gerade 
Neulinge immer wieder machen: keine Möglichkeit vorzusehen, wo der 
geneigte Programmierer Ausgaben machen kann um zu sehen, ob im Programm 
alles so läuft wie er sich das vorgestellt hat.
Obwohl: beim Arduino bleibt dann immer noch der Weg, derartige Ausgaben 
per Serieller SChnittstelle auf ein Terminal zu machen.

von Wolfgang (Gast)


Lesenswert?

Gundelputz schrieb:
> offensichtlich gibt es wohl einen CF-Adapter für den UNO

Wie kommst du da drauf?

> ... denn ich aber leider beim Conrad nicht finden kann.

Kein Wunder.

von Gundelputz (Gast)


Lesenswert?

Guten Morgen,
habe gestern noch beim Pollin  folgenden SD-Adapter geholt:
http://www.pollin.de/shop/dt/MDQ2OTgxOTk-/Bausaetze_Module/Entwicklerboards/SD_Speicherkartenmodul.html
dieser ist lt Beschreibung für Mikrokontoller geeignet siehe:
http://www.pollin.de/shop/downloads/D810359B.PDF
wie schliesse ich den jetzt an?
ausserdem habe ich noch ein LCD Display gekauft. Leider bricht mir beim 
Anschliessen lt Tutorial  die Spannung zusammmen. Werde alse eine 
externe Spannungsversorgung anschliessen müssen. habe noch ein Netzteil 
mit passendem Stecker mit 9V. Laut Beschreibung können 7-12V 
angeschlossen werden. Um eine verpolung zu vermeiden hier noch meine 
Frage zur belegung der Anschlussbuchse (+/-).

von Walter S. (avatar)


Lesenswert?

Gundelputz schrieb:
> habe gestern noch beim Pollin  folgenden SD-Adapter geholt:

warum ignorierst du den einzigen Vorteil von arduino:
kauf die passenden Shields dazu und nicht irgendwas.
Es gibt z.B. jede Menge Shields die eine Anzeige UND einen SD-Adapter 
drauf haben

von xXx (Gast)


Lesenswert?

Erinnert mich an meinen Sohn. Der hoert auch nie zu und wundert sich 
dann, wenn es weh tut. Allerdings ist der drei...

von nixundnul (Gast)


Lesenswert?

Vielleicht habe ich auch nur den Hintergrund der Frage nicht verstanden, 
darum verzeiht bitte meine Antwort etwas neben dem Thema.
Ich habe keine Erfahrung mit Fräse, aber mit 3D-Druck. Da gibt es 
folgendes System am Laufen:
4 Schrittmotoren: X,Y,Z,E. E ist identisch mit den Achsen, kann für was 
anderes verwendet werden (Extruder im 3D-Druck, aber man kann auch 
andere Mechanik dranhängen).
G-Codes über die serielle Schnittstelle, damit können alle Bewegungen 
kontrolliert werden.
G-Codes auf SD-Karte: Über ein PC-Programm werden die Bahnen berechnet 
und abgelegt, der Arduino läßt dann ohne PC alles nach diesen Daten 
abfahren.
LCD-Bedienfeld
Arduino Mega 2560 (mit der Anzahl Pins dürfte es am Uno sowieso schwer 
werden obwohl es auch eine Spar-Variante mit Uno (ohne LCD+SD) gibt.
Seit Jahren praxiserprobt.
Firmware open-source, da kannst Du also basteln und ändern, wie Du 
willst
Stichworte: Firmware Marlin, Arduino mega 2560, RAMPS shield (<20€ beim 
Chinese), "reprap LCD", <10€ beim Chinese, reprap.org (zusammenfassende 
Website, allerdings sehr unübersichtlich)
Du brauchst nur noch die erwähnten shields zusammenstecken, 
Schrittmotoren anschließen (zB die NEMA-Typen mit 2 seperaten Spulen). 
Temperatursensor mit Festwiderstand brücken, Endschalter sollten auch 
kein Problem sein und schon kannst Du (zunächst ohne weitere Mechanik) 
loslegen. Das ist dann ein erster SChritt zum Erfahrungen sammeln. 
Prinzipiell geht das mit einem beliebigen Terminal-Programm 
(Hyperterminal, oder dem aus der Arduino-IDE). Was nicht geht, ist Deine 
Parallel-SChnittstelle. /* Es gibt eine Anzahl uralter Fräs-Steuerungen, 
die den PC sehr hardwarenah über Parallel-Ports verwenden. Fehlende 
Echtzeit-Fähigkeiten des PC und neuere Betriebssysteme machen diesen 
Vorschlag aber extrem schwer und nicht zukunftsfähig, d.h. bei jedem 
PC-Tausch ist die komplette Software Schrott */

von Gundelputz (Gast)


Lesenswert?

Hallo noch mal da draussen,
Mir geht es nicht um die unbedingte Notwendigkeit eine CNC-Fräse oder 
einen einen 3D Drucker zu bauen(die hab ich schon) vielmehr möchte ich 
die Möglichkeiten des Arduino's ausreitsen und kennenlernen. 
selbstverständlich ist es möglich alles zu bestellen was mann braucht 
nur ist der lerneffekt dann nicht der selbe. Ich möchte nicht nur wissen 
das es funktioniert sondern auch verstehen wie das alles zusammenhängt. 
Offtmals entstehen hierbei die besten Ideen.
So habe ich bereit die Komponenten zusammmen um das Druckbett meines 
3D-Druckers halbautomatisch zu justieren und werde diese Projekt auch 
als erstes realisieren.
Da diese Forum bereits im Namen Mikrokontroller trägt bin ich davon 
überzeugt des ich hier eher antwortenauf meine auf meine Fragen bekomme 
wie auf Seiten mit pauschalaussagen und gefählichem halbwissen.
Die gängigen tutorials habe ich bereits durch.

nixundnul schrieb:
> Ich habe keine Erfahrung mit Fräse, aber mit 3D-Druck

Eine einfache CNC Fräse ist nicht weiter als ein 3D Drucker ohne 
Extruder
nim zB. den K8200 spiel die richtige FW drauf und wechsle den Extruder 
gengen den Halter mit Proxon und du hast eine CNC bzw. 
Leiterplattenfräse.

einen schönen Betreig der im ansatz mein bestreben nahekommt ist dieser:
https://www.youtube.com/watch?v=s_W0cPu5Gqs

aber noch mal zurück zu meiner Frage: wie muss ich den Adapter 
anschliessen und wie kann ich die Daten auslesen?

von Cyblord -. (cyblord)


Lesenswert?

Gundelputz schrieb:

> nur ist der lerneffekt dann nicht der selbe. Ich möchte nicht nur wissen
> das es funktioniert sondern auch verstehen wie das alles zusammenhängt.

Dann biste bei Arduino an der falschen Adresse.


> aber noch mal zurück zu meiner Frage: wie muss ich den Adapter
> anschliessen und wie kann ich die Daten auslesen?

Da du ja die Zusammenhänge wissen möchtest, schaust du dir jetzt mal an 
welche Anschlüsse ein SD Karte hat, welche Funktion die Pins haben, wie 
man mit der Karte Kommuniziert.
Das steht hier: 
http://cdn.sparkfun.com/datasheets/Components/General/SDSpec.pdf

Und dann wird die Antwort auf diese Frage klar.
Du musst die Karte dann nur noch gemäß deinem neuen Wissen anschließen 
und den Arduino so programmieren dass er korrekt mit der Karte redet.
Dazu musst du C Programmierung können. Mehr eigentlich nicht.

von chris_ (Gast)


Lesenswert?


von Ulrich F. (Gast)


Lesenswert?

Ich verstehe nicht, warum der Kartenhalter einen 3,3V Regler hat, aber 
keinen Levelschifter?
Habe ich den übersehen?

von Cyblord -. (cyblord)


Lesenswert?

chris_ schrieb:
> Vielleicht hilft das:
> http://garagelab.com/profiles/blogs/tutorial-how-to-use-sd-card-with-arduino

Da kann man so richtig schön die Zusammenhänge verstehen....
1
#include <SdFat.h>
2
 SdFat sd;
3
 SdFile myFile;
4
5
void setup() {
6
 Serial.begin(9600);
7
8
// Initialize SdFat or print a detailed error message and halt
9
 // Use half speed like the native library.
10
 // change to SPI_FULL_SPEED for more performance.
11
 if (!sd.init(SPI_HALF_SPEED, chipSelect)) sd.initErrorHalt();
12
13
// open the file for write at end like the Native SD library
14
 if (!myFile.open("test.txt", O_RDWR | O_CREAT | O_AT_END)) {
15
 sd.errorHalt("opening test.txt for write failed");
16
 }
17
 // if the file opened okay, write to it:
18
 Serial.print("Writing to test.txt...");
19
 myFile.println("testing 1, 2, 3.");
20
21
// close the file:
22
 myFile.close();
23
 Serial.println("done.");
24
25
// re-open the file for reading:
26
 if (!myFile.open("test.txt", O_READ)) {
27
 sd.errorHalt("opening test.txt for read failed");
28
 }
29
 Serial.println("test.txt:");
30
31
// read from the file until there's nothing else in it:
32
 int data;
33
 while ((data = myFile.read()) > 0) Serial.write(data);
34
 // close the file:
35
 myFile.close();

von chris_ (Gast)


Lesenswert?

>Ich verstehe nicht, warum der Kartenhalter einen 3,3V Regler hat, aber
>keinen Levelschifter?
>Habe ich den übersehen?

Oha, da erwähnst Du einen wahren Punkt. Vielleicht setzt Pollin darauf, 
dass die SD-Kartenpins 5V tolerant ...

von Rudolph (Gast)


Lesenswert?

Suchst Du vielleicht doch eher sowas?
http://reprap.org/wiki/Megatronics_2.0

Es zwingt Dich ja niemand, auch die Software dafür zu benutzen.

von Gundelputz (Gast)


Lesenswert?

chris_ schrieb:
> Vielleicht hilft das:
> http://garagelab.com/profiles/blogs/tutorial-how-to-use-sd-card-with-arduino

genau das habe ich gesucht. DANKE

Rudolph schrieb:
> Suchst Du vielleicht doch eher sowas?
> http://reprap.org/wiki/Megatronics_2.0

nein. genau davon wollte ich weg

Mir steht ein schier unerschöpflicher reichtum an elktronischen und 
mechanischen Komponenten aus Drucker und PC zur verfügung.
Je mehr ich mich in die Materie einlese um so mehr anwendungen fallen 
mir ein. Und das nach gerade mal 24h.
dank an euch alle für die Hilfe.

von Gundelputz (Gast)


Lesenswert?

habe gerade noch was hilfreiches gefunden:
http://www.reseau.org/arduinorc/index.php?n=Projects.SDCard

von Ulrich F. (Gast)


Lesenswert?

chris_ schrieb:
> Vielleicht setzt Pollin darauf,
> dass die SD-Kartenpins 5V tolerant ...
Rauch wird austreten.....

Gundelputz schrieb:
> habe gerade noch was hilfreiches gefunden:
> http://www.reseau.org/arduinorc/index.php?n=Projects.SDCard
Wenigstens ein Levelshifter.
(ob der taugt?)

Und CS auf GND?
Ob das sinnvoll ist?


> connect the CS input to the hardware SS pin
> of the Arduino instead: pin 10 (on most Arduino boards)
> or pin 53 (on the Mega).
Oder auf Pin 4 das ist üblicher.
Wobei dann aber SS ebenfalls auf Output gesetzt werden sollte.
Auch hier den Levelshifter nicht vergessen.

von Gundelputz (Gast)


Lesenswert?

wenn ich das richtig verstehe ist der 6Pinblock mit der Beschriftung 
ICSP lediglich die durchgeschleifften D12, D13, D11, +5V, GND und Reset.
Demzufolge auch so ansprechbar und nicht noch mal zu 
verwenden(doppelbelegung)?

von Ulrich F. (Gast)


Lesenswert?

Doch!
Da wird der SPI Bus verwendet.
Also: Mehrere Geräte möglich.

von Walter S. (avatar)


Lesenswert?

chris_ schrieb:
>>Ich verstehe nicht, warum der Kartenhalter einen 3,3V Regler hat, aber
>>keinen Levelschifter?
>>Habe ich den übersehen?
>
> Oha, da erwähnst Du einen wahren Punkt. Vielleicht setzt Pollin darauf,
> dass die SD-Kartenpins 5V tolerant ...

oder noch einfacher:
man verwendet den shield auf einem 3,3V arduino

von Gundelputz (Gast)


Lesenswert?

da ich die SdFat.h nirgends finden bzw. herrunterladen konnte habe ich 
es mal mit der libraries\SD\examples\Files probiert und siehe da es 
funktioniert. Die Anschlüsse werden hier wie folgt vorgegeben:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
tausche ich die Anschlüsse mit den ICSP Anschlüssen so wird mir ein 
Fehler angezeigt.
Wo liegt hier mein Fehler???

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.