saschaho Geschrieben June 27, 2012 at 12:36 Geschrieben June 27, 2012 at 12:36 Moin, ich habe den Laserplotter aus der ct "Mach Flott den Schrott" mal nachgebaut. Die Plotterfläche beträgt ca 40 x 40mm. Die Auflösung beträgt bei mir 53 Steps/mm. Verwendet habe ich : Step Down Power Supply Master-Brick 2 Stepper-Bricks Dual-Relais Bricklet 20x4 LCD Python CorelDraw malings speichere ich als .plt ab. Anschl muss ich nur den "Vorspann" bis zum 1. SP1 entfernen. Nach Einlesen des Files und Umwandlung der Zeilen in PU, PD ,x und y Koordinaten werden die Fahrzeiten, Laser-On Zeiten und Pausenzeiten berechnet. Ist einiges an Tüftelei, da ja von den Schrittmotoren keine Rückmeldung kommt. Die Stepper stehen auf 350mA, der 300mW Laser (Vorsicht Klasse 3b) wird über eine regelbare Konstantstromquelle versorgt und über eins der Relais geschaltet. Das 2. Relais schaltet den Lüfter am Beginn ein. Sonst hat man den Rauch im Strahl. Da ich nicht die "Leuchte" in Python bin, möchte ich den Code hier nicht veröffentlichen. Auf Nachfrage gibt´s aber selbstverständlich Teile davon und zus. Infos. Anbei noch 2 Bilder. Grüße Sascha [[Category:Projekte]] Zitieren
FabianB Geschrieben June 27, 2012 at 14:10 Geschrieben June 27, 2012 at 14:10 Wow, wie krass ist das denn? Tolles Projekt. Was ist das für ein Metallrahmen mit den beiden Schienen in dem der Laser fährt? Wie genau treibst du diesen Schlitten an? Stell es mir gar nicht einfach vor, das alle so genau ineinander greifend hinzubekommen. Das Ergebnis sieht ja recht genau aus. Respekt. Willst du (die Frage kommt von mir ja immer :-D) es vielleicht in die Wiki stellen? Mit ein paar Bildern und mehr Details? So der Phyton-noob kannst du ja nicht sein, wenn dein Laserplotter offensichtlich so gut damit läuft. Zitieren
AuronX Geschrieben June 27, 2012 at 14:41 Geschrieben June 27, 2012 at 14:41 Es sieht so aus (geschätzt) als wäre dein Name breiter als 4cm, hast du das Teil in zwei Schritten geplottet? Ansonsten sieht das sehr cool aus. Übrigens brauchst du beim Veröffentlichen von Code keine Scheu haben ^^ Es funktioniert und bei aller Kritik kann man höchstens selbst lernen (Meine Hoffnung wäre auch, dass ich beim Lesen auch noch was lerne ^^) Ist aber natürlich deine Sache ^^ Zitieren
saschaho Geschrieben June 27, 2012 at 15:16 Autor Geschrieben June 27, 2012 at 15:16 Die Hardware ist nicht so schwer nachzubauen. Es sind 2 Schlitten aus 2 samsung DVD-Rom Laufwerken. Die Schlitten bewegen die Laser in den Laufwerken. Statt des schwachen Originallasers habe ich auf eine Einheit eine Platte geschraubt (y-Richtung) und an den anderen den roten 300mW Laser gestrapst. Unter http://www.heise.de/hardware-hacks/projekte/Laserplotter-1351340.html gibt es mehr Infos zur Hardware. Hier also mein Programm: #!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import division HOST = "localhost" PORT = 4223 UID = "a4JriVK3qZ8" UID_step1 ="9p3kGiXvHS3" UID_step2 ="a4LCLTU6G8m" UID_rel = "7Fq" UID_lcd = "8vA" from tinkerforge.ip_connection import IPConnection from tinkerforge.brick_stepper import Stepper from tinkerforge.brick_master import Master from tinkerforge.bricklet_dual_relay import DualRelay from tinkerforge.bricklet_lcd_20x4 import LCD20x4 import time import string import math lsr= " " xur = 0 yur = 0 x = 0 y = 0 al = 0.00 xsp = 0 ysp = 0 xysleep = 0.00 i = 1 fakt = 1.000 sl = 0 xdif = 1090.0 ydif = 1090.0 ms = 70 if __name__ == "__main__": ipcon = IPConnection(HOST, PORT) # Create IP connection to brickd master = Master(UID) # Create device object ipcon.add_device(master) # Add device to IP connection stepperx = Stepper(UID_step1) # Create device object ipcon.add_device(stepperx) # Add device to IP connection steppery = Stepper(UID_step2) # Create device object ipcon.add_device(steppery) # Add device to IP connection dr = DualRelay(UID_rel) # Create device object ipcon.add_device(dr) # Add device to IP connection lcd = LCD20x4(UID_lcd) # Create device object ipcon.add_device(lcd) # Add device to IP connection lcd.backlight_on() fobj = open("C:\\Dokumente\\Plots\\test1.plt", "r") content = fobj.read() fobj.close() dataset = content.split("\n") lcd.write_line(0, 0, "Achtung Laser Kl. 3b") dr.set_state(True, False) stepperx.enable() stepperx.set_speed_ramping(600,600) stepperx.set_motor_current(350) stepperx.set_step_mode( stepperx.set_max_velocity(400) # Velocity 400 steps/s steppery.enable() steppery.set_speed_ramping(600,600) steppery.set_motor_current(350) steppery.set_step_mode( steppery.set_max_velocity(400) # Velocity 400 steps/s stepperx.set_current_position(0) steppery.set_current_position(0) stepperx.set_target_position(1090) steppery.set_target_position(1090) time.sleep(4) stepperx.set_current_position(0) steppery.set_current_position(0) xur = 0.0 yur = 0.0 for data in dataset: arr = data.split(" ") if arr[0] <> "SP1;" and arr[0] <> "SP0;": lsrx = arr[0] lsr = lsrx[0]+lsrx[1] if len(lsrx) == 3: x = int(lsrx[2]) elif len(lsrx) == 4: x = int(lsrx[2]+lsrx[3]) elif len(lsrx) == 5: x = int(lsrx[2]+lsrx[3]+lsrx[4]) elif len(lsrx) == 6: x = int(lsrx[2]+lsrx[3]+lsrx[4]+lsrx[5]) elif len(lsrx) == 7: x = int(lsrx[2]+lsrx[3]+lsrx[4]+lsrx[5]+lsrx[6]) lsry = arr[1] if len(lsry) == 2: y = int(lsry[0]) elif len(lsry) == 3: y = int(lsry[0]+lsry[1]) elif len(lsry) == 4: y = int(lsry[0]+lsry[1]+lsry[2]) elif len(lsry) == 5: y = int(lsry[0]+lsry[1]+lsry[2]+lsry[3]) elif len(lsry) == 6: y = int(lsry[0]+lsry[1]+lsry[2]+lsry[3]+lsry[4]) xdif = abs(xur-x) ydif = abs(yur-y) if xdif == 0: xdif = 1 if ydif == 0: ydif = 1 if xdif > ydif: fakt = xdif/ydif ysp = int(ms / fakt)+1 xsp = ms xysleep = (xdif/ms)+0.4 if xdif <= ydif: fakt = ydif/xdif ysp = ms xsp = int(ms / fakt)+1 xysleep = (ydif/ms)+0.4 power = stepperx.get_stack_input_voltage() if lsr == "PD": dr.set_state(True, True) time.sleep(0.1) lcd.write_line(1, 0, "Laser An ") lcd.write_line(2, 0, "brennt " + str(x) +" "+ str(y) + " ") lcd.write_line(3, 0, "Spannung " + str(power) + " mV ") if lsr == "PU": lcd.write_line(1, 0, "Laser Aus ") lcd.write_line(2, 0, "faehrt " + str(x) +" "+ str(y) + " ") lcd.write_line(3, 0, "Spannung " + str(power) + " mV ") dr.set_state(True, False) xsp = ms * 8 ysp = ms * 8 xysleep = xysleep / 4 print xdif, ydif, x, y, xsp, ysp, xysleep, fakt stepperx.set_max_velocity(xsp) # Velocity steps/s steppery.set_max_velocity(ysp) # Velocity steps/s stepperx.set_target_position(x) steppery.set_target_position(y) xur = x yur = y time.sleep(xysleep) dr.set_state(True, False) time.sleep(0.2) dr.set_state(False, False) time.sleep(1) stepperx.set_max_velocity(400) # Velocity 400 steps/s steppery.set_max_velocity(400) # Velocity 400 steps/s stepperx.set_target_position(-1090) steppery.set_target_position(-1090) lcd.write_line(2, 0, "Ich habe fertig ") time.sleep(10) stepperx.disable() steppery.disable() lcd.clear_display() lcd.backlight_off() raw_input('Press key to exit\n') # Use input() in Python 3 ipcon.destroy() Vor allem an der Umwandlung des Plotfiles in die Einschaltsignale und in die xy Koordinaten habe ich lange getüftelt. Vielleicht hat da jemand eine elegantere Lösung Sascha Zitieren
saschaho Geschrieben June 27, 2012 at 15:23 Autor Geschrieben June 27, 2012 at 15:23 @AuronX Der Rahmen um meinen Namen ist genau 38mm. Die Linien des Rahmens haben 1mm Abstand zueinander. Die Positionierung ist wirklich sehr exakt. Sascha Zitieren
borg Geschrieben June 27, 2012 at 16:50 Geschrieben June 27, 2012 at 16:50 Also von der Genauigkeit her ist das wirklich gut. Wir haben hier einen (60W) Laser Cutter stehen, der ist auch nicht viel genauer! Der Laser ist natürlich ein ganzes Stück besser fokussiert, das würde jetzt hier im Ergebnis den Unterschied machen. Zitieren
luxor Geschrieben June 27, 2012 at 17:17 Geschrieben June 27, 2012 at 17:17 Sehr cool gemacht! Zitieren
saschaho Geschrieben June 27, 2012 at 17:40 Autor Geschrieben June 27, 2012 at 17:40 Also von der Genauigkeit her ist das wirklich gut. Wir haben hier einen (60W) Laser Cutter stehen, der ist auch nicht viel genauer! Der Laser ist natürlich ein ganzes Stück besser fokussiert, das würde jetzt hier im Ergebnis den Unterschied machen. Die Kollimatorlinse kostet auch wahrscheinlich das Hundertfache Ich will aber noch an der "Verweildauer" bei kleinen Steps arbeiten. Sascha Zitieren
jan Geschrieben June 27, 2012 at 18:30 Geschrieben June 27, 2012 at 18:30 Cooles Projekt. Wo bekommt man eigentlich den Laser mit Linse "günstig" her?? Und endlich mal einer, der auch 'nen Bleiakku als Stromquelle nimmt. Ich dachte schon ich bin der einzige... Zitieren
M4ST3R Geschrieben June 27, 2012 at 19:17 Geschrieben June 27, 2012 at 19:17 @OT benutze eine Autobatterie ist zwar kein Blei Akku aber ähnlich groß So nun aber mal zu dem Projekt. Erzähl doch mal ein paar preisliche Details. Die würden sicherlich nicht nur mich erzählen. Was hast du für die Hardware (ohne TF) denn hingelegt! Ich kann nur wiederholen, was die anderen gesagt haben. Code kann man immer posten, wenns nur darum geht das man glaubt er sei nicht gut genug. Schließlich kann so noch jemand drüber gucken und vielleicht Sachen verbessern. Also wirklich super! Gratulation! Zitieren
saschaho Geschrieben June 27, 2012 at 22:32 Autor Geschrieben June 27, 2012 at 22:32 Die Laufwerke (wenn man selbst keinen Schrott mehr hat) gibt´s für 13€. Der Laser kostet so um 25€ + Gehäuse und Linse alles bei http://www.insaneware.de/epages/61714203.sf/de_DE/?ObjectPath=/Shops/61714203/Products/oc300mw. Holz müsst ihr selber besorgen. Der Akku ist ein Alter aus meiner USV. Also, die Kosten halten sich im Rahmen. Sascha Zitieren
AuronX Geschrieben June 28, 2012 at 08:42 Geschrieben June 28, 2012 at 08:42 Du schreibst ja, dass du auch ein DC-Brick nutzt. Ich sehe auf dem Foto auch 4 Bricks im Stack, aber welche Aufgabe erfüllt das DCBrick? Im Code konnte ich es nicht entdecken LG Jan Zitieren
saschaho Geschrieben June 28, 2012 at 09:27 Autor Geschrieben June 28, 2012 at 09:27 Sorry, meinte das Step Down Power Supply Sascha Zitieren
saschaho Geschrieben June 28, 2012 at 09:58 Autor Geschrieben June 28, 2012 at 09:58 Wow, wie krass ist das denn? Tolles Projekt. Willst du (die Frage kommt von mir ja immer :-D) es vielleicht in die Wiki stellen? Mit ein paar Bildern und mehr Details? Wie geht denn das? Wie kann man den die Sektion "L" unter Projekte erstellen? Sascha Zitieren
AuronX Geschrieben June 28, 2012 at 10:27 Geschrieben June 28, 2012 at 10:27 Ich glaube das ging irgendwie automagisch. Du musst glaube ich deinem Projekt nur eine Kategorie zuweisen und dann taucht es dort von alleine auf. Ich hab aber auch nciht viel Ahnung von Wiki-Magie ^^ Grad mal bei der Wetterstation abgeguckt, ich denke du musst in deinen Artikel nur ganz unten das hier einfügen: [[Category:Projekte]] Zitieren
M4ST3R Geschrieben July 16, 2012 at 18:46 Geschrieben July 16, 2012 at 18:46 Kannst du mal testen, welche Dicke Styrodur oder Styropor dein Laser durchtrennt? Wäre für den Modellbau evtl. interessant, wenn das präzise schneidbar ist. Allerdings müsste man die Konstruktion dann vergrößern Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.