Einstieg in Arduino mit einem Projekt

Hallo Community,

ich möchte in das Microcontrollergeschäft einsteigen und habe mir dazu die Arduinoplatform ausgesucht.
Da ich glaube, dass ich am besten an einem konkreten Projekt lerne, möchte ich dies auf diese Weise machen und diesen Tread einerseits nutzen um meinen Projektfortschritt zu dokumentieren und zu präsentieren, andererseits auch um hier Fragen zu stellen und Antworten zu bekommen.

Was möchte ich machen?
In den Kopf habe ich mir gesetzt am Ende mit einem Lasercutter dazustehen. (Ja ich weiß, Laser sind kein Spielzeug. Ich habe durchaus meine Erfahrungen mit (Hochleistungs) Lasern.)

Grob skizziert soll folgendes verwirklicht werden.

  • Ansteuerung von zwei Motoren (x, y). Die Motoren sollen gleichzeitig laufen um auch saubere Kurven zu fahren.
  • Ansteuerung der LD um sie an-/abzuschalten. Ggf. soll eine Leistungsregelung realisiert werden.
  • Einspeisen von Daten aus einer Datei (z.B. PDF, JPEG), aus der heraus Konturen ausgeschnitten werden können (Keine Zeilen wie bei einem konventionellen Drucker, wegen der saubereren Schnittkanten)

Das Projekt habe ich mir in unterschiedliche Blöcke eingeteilt die nacheinander bzw, parallel abgearbeitet werden können.
Die Aufteilung der Blöcke möchte ich kurz darstellen, in denen ich bereits ein paar grundlegende Fragen stellen möchte.

Block I
Einkaufen :stuck_out_tongue:
Auf der Microcontrollerseite, was für ein Board/welche Boards sind für mich interessant?
Ist das Arduino Uno alleine geeignet für mein Vorhaben, oder werde ich dazu dieses Motor Shield benötigen?
Gibt es andere Boards die vllt. besser geeignet sind?

Ich liebäugle mit z.B. diesem Motortyp: Nanotec - Intelligente Antriebslösungen
Werde ich diesen einfach an das Bord anhängen können oder gilt zusätzlich etwas zu beachten?

Irgendwelche empfehlenswerten Addons die man sich zulegen sollte (Bücher ausgenommen) wenn man mit einem Microcontroller arbeitet?

Block II
Motoren bewegen lassen
Am Anfang möchte ich ersteinmal versuchen, dass ich einen Motor ansteuere und wenn das geklappt hat, dass ich den zweiten in Bewegung bekomme.

Block III
Aufbau meines Lasercuttergehäuses mit Motoren

Block IV
Mein Microcontroller lernt malen (Zuerst soll er mit einem Filzstift die Konturen malen)
Nun möchte ich gerne eine Datei erstellen mit z.B. einem Kreis und darin einem Viereck.
Es gibt nun zwei Möglichkeiten:

  1. Programm auf dem Computer wertet die Konturen aus und sieht, dass das Viereck im Kreis ist. Da zuerst immer die inneren Konturen ausgeschnitten werden sollen, soll diese zuerst gemacht werden. Es werden die Konturdaten an den MC gesendet und dieser beginnt die Motoren zu bewegen.
  2. Datei wird vom MC anstelle von einem extra Programm ausgewertet. Der Rest ist identisch.

Ist es überhaupt möglich, dass ich die Auswertung einer Datei über den MC vornehme, oder sollte ich dies lieber über ein seperates Programm (C/C++/Java/oder sonst was) vornehmen und von dort die Steuerbefehle senden?

Block V
Die Ansteuerung der Laserdiode (bzw. erstmal einer normalen LED)

Block VI
Montage der LD in den Lasercutter

Block VII
Die LED/LD soll angeschaltet sein, wenn sich die Motoren an der Position einer Linie befinden

Block VIII
Champagner köpfen

Auf diese Weise habe ich Meilensteine die ich in Ruhe abarbeiten kann. Ich muss das ganze auch nicht in einer Woche umsetzen.
Ich freue mich über Anregungen, Hilfe und Kommentare.

TheEnclave:
Auf der Microcontrollerseite, was für ein Board/welche Boards sind für mich interessant?
Ist das Arduino Uno alleine geeignet für mein Vorhaben, oder werde ich dazu dieses Motor Shield benötigen?

Ein Arduino stellt digitale Steuersignale zur Verfügung, mit logischen Pegeln von 0 und 5 Volt, oder Pulsweitenmodulation.

Maximale Stromentnahme ca. 20 mA, d.h. "direkt" kannst Du gerade so eben eine Low-Power LED direkt betreiben.

Für alles andere benötigst Du "Treiber", die mehr Leistung für die gesteuerten Geräte zur Verfügung stellen.

Für die Schrittmotortreiber zur Steuerung von Schrittmotoren gilt eine einfachen Faustformel: Ein vernünftiger Treiber für einen Schrittmotor kostet ungefähr genau so viel wie der zu steuernde Schrittmotor. D.h. wenn Du einen 5-Euro Schrittmotor steuern möchtest, reicht ein 5-Euro Treiberboard. Und wenn Du einen 200-Euro Schrittmotor steuern möchtest, kosten vernünftige Treiber dafür auch 200 Euro.

TheEnclave:
Ist es überhaupt möglich, dass ich die Auswertung einer Datei über den MC vornehme, oder sollte ich dies lieber über ein seperates Programm (C/C++/Java/oder sonst was) vornehmen und von dort die Steuerbefehle senden?

Das kommt auf die Größe der zu verarbeitenden Datei an: Mikrocontroller haben nur wenig RAM-Speicher, ein Atmega328 z.B. nur 2 KB, und darin müssen alle Variablen des Programms Platz finden. D.h. bereits eine kleine Datei mit nur 2 KB (= 0,002 MB) Dateigröße kann in einen Arduino Uno schon nicht mehr am Stück eingelesen und gleichzeitig im Arbeitsspeicher gehalten werden. Größere Dateien kannst Du nur sequentiell einlesen und nach und nach abarbeiten.

Also dem Arduino einfach ein Bild rüberladen und er macht Bildverarbeitung, Muster- und Kantenerkennung und erzeugt aus einer Bitmapdatei seine Vektor-Schneidebefehle, das wird wohl nicht funktionieren. Allenfalls sehr einfache geometrisch vorgegebene Figuren kannst Du den Controller selbst verarbeiten lassen, ansonsten wirst Du ihm nur eine vorverarbeitete Schneidedatei mit den Plotterdaten übergeben können, die er dann Schritt für Schritt abarbeitet.

Zu Block III:
In der C´T Hardware Hacks(Ausgabe 2/2012) gibt es eine Vorstellung
von einem Selbstgebauten Lasercuter.
Das könntest du gut als Nachschlagewerk benutzen, wie
andere dies gemacht haben.

Addi

hi,

eins mal vorweg, weil da ein denkfehler drin ist: bitmapdateien wie jpg sind komplett ungeeignet, weil punkt- und nicht linien(vektor)-basiert. pdfs sind zwar vektorbasiert (ähnlich wie svg), aber Du kannst nicht festlegen, in welcher reihenfolge die teilstrukturen geschnitten werden.
es gibt fertige, normierte beschreibungssprachen wie zb hpgl(plt-dateien), die man zb mit corel draw erstellen kann. wahrscheinlich kann man in corel auch durch die reihenfolge der objekte im objektmanager die schnittabfolge steuern.
ganz sicher (weils bei nachfrage immer lösungen gibt) sind fertige programme genau zu diesem zweck vorhanden, und weil es ein bastlerthema ist, bestimmt auch als freeware. such mal bei google nach: laserbeschriftung, lasercutter, platinenfräser, plotter, CNC.

ein sehr interessantes projekt, weil Du erfahrung mit diesen lasern hast, aber Du wirst einen langen atem brauchen.

wenn man fragen darf: was willst Du schneiden? metall wird's wohl nicht sein, ich vermute eher plastik für modellbau...

ansonsten bin ich fachmann für punkt VIII, falls Du da unterstützung brauchst.

gruß stefan

Danke schoneinmal für das Feedback.

@jurs
Das ich die Motoren nicht über das Board betreiben kann ist mir klar. Mir ging es mehr über die Steuerbefehle, hätte ich vielleicht deutlicher sagen sollen. Aber danke trotzdem für den Hinweis und vor allem für die Zahlen zur Orientierung.
Dann über ein externes Programm :stuck_out_tongue:

@Addi
Guter Tipp, ich werd schauen diese Ausgabe zu bekommen.

@Eisbaer
Stimmt, da war was mit den Bildchen.
Dann werde ich mal Google fragen.
Den langen Atem habe ich, denke ich. Wie gesagt. Ich brauche es nicht von heute auf Morgen realisieren.
Natürlich darf man fragen.
Ja, Metall wird es eher nicht werden, es ist eher gedacht für festeren Karton und Plastik.

TheEnclave:
Guter Tipp, ich werd schauen diese Ausgabe zu bekommen.

Nur zum Hinweis: Der Lasercuter wurde nicht mit einem Arduino gebaut.
Allerdings zum Nachsehen der Angehweise ist dies gut geeignet.

Addi

Ein Lasercutter braucht keine Kraft auf das Werkstück auzuüben (im Gegensatz zu einer Fräse). Deshalb wird der Tisch meist nicht mit Spindeln sondern mit Zahnriemen betrieben, was die Sache billiger und die Bewegungen schneller macht.
TheEnclave Dein Entusiasmus in Ehren, aber lies Dich mal in den verschiednen CNC-Projekten ein. Da wirst Du viel bereits viele fertige Projekte und Lösungen finden.

Grüße Uwe