Çizim Yapan Mini Cnc Yapımı

98 13.457

Merhaba arkadaşlar, bu projemizde bozuk dvd ve cd-rom sürücüleri geri dönüşüme kazandırmak ve düşük maliyette cnc yapımını anlatacağım. Çizim yapan mini cnc projesinin yapımına başlayalım.

Malzemeler:

  1. Arduino ( nano , uno, mega olabilir)
  2. Bozuk dvd veya cd-rom (içindeki step motor çalışan olacak)
  3. 2 Adet l293d veya l293b motor sürücü ya da 1 adet Adafruit Motor Sürücü
  4. Servo motor ( Mg90 yeterli)
  5. 5v  2 amper batarya veya adaptör
  6. X eksenini sabitlemek için 20 x 16 cm ve kalınlığı 5 mm olan pleksi levha.
  7. Y eksenini sabitlemek için 15x 16 cm ve kalınlığı 5 mm olan pleksi levha
  8. Çizim tablası için 75×75 mm ve kalınlığı 5 mm olan pleksi levha kullanabilirsiniz.
  9. 1 Adet M5 cıvata somun ( Kalemi sabitlemek için)
  10. 14 Adet M4 cıvata somun

Mini cnc ‘nin ön ve arka genel görünüşü ve parçalarının açıklamaları:

Parçaların İsimleri

  1. X düzlemi Pleksi Plaka (200x150x3 mm)
  2. Y düzlemi Pleksi Plaka ( 200x150x3 mm)
  3. X ekseni hareket mekanizması ( dvd sürücü kızak mekanizması)
  4. Y ekseni hareket mekanizması ( dvd sürücü kızak mekanizması)
  5. Z düzlemi şase kısmı
  6. Servo motor
  7. Kalem tutamacı
  8. Kalem sabitleyici somun – vida düzeneği ( 1 Adet M5 cıvata somun)
  9. Kalem
  10. Çizim tablası ( 75x75x5 mm pleksi levha)
  11. Eksen destekleri ve vida yuvaları
  12. X ekseni hareketini sağlayan step motor
  13. Y ekseni hareketini sağlayan step motor
  14. Kağıdı sabitlemek için ataç
  15. 14 Adet M4 cıvata somun
  16. Kalem tutucu destek
  17. Z ekseni mili
  18. Kablolar
  19. 4 Adet Köşebent
  20. Kontrol ünitesi ( Arduino uno , 2 adet l239d, pertinaks( delikli plaket), enerji giriş jak)
  21. Bilgisayar bağlantısı için usb kablo

Mekanik Kısım:

Dvd veya Cd -R0m sürücünün içindeki raylı sistem olan kısmı kullanacağız. Bu kısımda step motor sonsuz vida miline bağlı ve mil döndükçe mile bağlı olan lazer okuyucu kısmı hareket eder. Bu kısma zarar vermeden çıkarıyoruz. Aynı şekilde diğer sürücüyü de söküp toplamda iki tane step motorlu raylı sistem çıkıyor. Dvd -Rom kullandıysanız onun lazer diyotları ile kendinize lazer kesici de yapabilirsiniz. Eksenlerin hareketini sağlayacak mekanik kısım bunlar .Diğer mekanik parçaları 3d yazıcıdan çıkaracağız.

Z ekseni şase parçası:

Kalem Tutucu Parça:

X ve Y Ekseni Plakalarını Birbirine Sabitleyecek Destek Parçası:

Kalemin Üst Kısmını Tutan Parça:

X ve Y Eksenlerinin yükselteç ve vida yatağı parçaları : 

Parçaların stl dosyalarını buradan indirebilirsiniz >> mini cnc stl dosyaları

 

Elektronik Kısım:

Elektronik sistemimizde x ve y eksenini hareket ettirecek olan iki adet step motoru ve kalemi kaldırıp indirecek olan bir adet servo motorun bağlantılarını yapacağız.

Aşağıdaki devreden bağlantıları yapınız.

Adafruit Motor Shield için devre bağlantısı:

Yazılım Kısmı:

L293d-L293b Motor Sürücüleri için Arduino Yazılımı:

#include <Servo.h>
#include <Stepper.h>
 
#define LINE_BUFFER_LENGTH 512
 
const int kalem_kaldir = 130; 
const int kalem_indir = 40; 
const int kalem_servo_pin = 12; 
const int adim_sayisi = 20; 
const int hareket_hizi = 250; 
 
Servo kalem_servo; 
 
Stepper y_ekseni(adim_sayisi, 2,3,4,5); 
Stepper x_ekseni(adim_sayisi, 6,7,8,9); 
 
float x_adim_mm = 6.0;
float y_adim_mm = 6.0;
 
struct point { 
 float x; 
 float y; 
 float z; 
};
 
struct point actuatorPos;
 
float StepInc = 1;
int StepDelay = 0;
int LineDelay = 50;
int penDelay = 50;
float Xmin = 0;
float Xmax = 40;
float Ymin = 0;
float Ymax = 40;
float Zmin = 0;
float Zmax = 1;
 
float Xpos = Xmin;
float Ypos = Ymin;
float Zpos = Zmax; 
boolean verbose = false;
 
 
void setup() {
 // Setup
 Serial.begin( 9600 );
 kalem_servo.attach(kalem_servo_pin);
 kalem_servo.write(kalem_kaldir);
 delay(200);
 x_ekseni.setSpeed(hareket_hizi);
 y_ekseni.setSpeed(hareket_hizi); 
 Serial.println("Çizim Yapan Mini CNC!");
 Serial.print("X min "); 
 Serial.print(Xmin); 
 Serial.print(" den "); 
 Serial.print(Xmax); 
 Serial.println(" mm."); 
 Serial.print("Y min "); 
 Serial.print(Ymin); 
 Serial.print(" den "); 
 Serial.print(Ymax); 
 Serial.println(" mm."); 
}
 
void loop() 
{
 delay(200);
 char line[ LINE_BUFFER_LENGTH ];
 char c;
 int lineIndex;
 bool lineIsComment, lineSemiColon;
 
 lineIndex = 0;
 lineSemiColon = false;
 lineIsComment = false;
 
 while (1) {
 
 while ( Serial.available()>0 ) {
 c = Serial.read();
 if (( c == '\n') || (c == '\r') ) { 
 if ( lineIndex > 0 ) { 
 line[ lineIndex ] = '\0'; 
 if (verbose) { 
 Serial.print( "Alıcı : "); 
 Serial.println( line ); 
 }
 processIncomingLine( line, lineIndex );
 lineIndex = 0;
 } 
 else { 
 // Empty or comment line. Skip block.
 }
 lineIsComment = false;
 lineSemiColon = false;
 Serial.println("ok"); 
 } 
 else {
 if ( (lineIsComment) || (lineSemiColon) ) { 
 if ( c == ')' ) lineIsComment = false; 
 } 
 else {
 if ( c <= ' ' ) { } else if ( c == '/' ) { }
 else if ( c == '(' ) { lineIsComment = true; } 
 else if ( c == ';' ) { lineSemiColon = true; }
 else if ( lineIndex >= LINE_BUFFER_LENGTH-1 ) {
 Serial.println( "Yazma Hatası" );
 lineIsComment = false;
 lineSemiColon = false;
 } 
 else if ( c >= 'a' && c <= 'z' ) { 
 line[ lineIndex++ ] = c-'a'+'A';
 } 
 else {
 line[ lineIndex++ ] = c;
 }
 }
 }
 }
 }
}
 
void processIncomingLine( char* line, int charNB ) {
 int currentIndex = 0;
 char buffer[ 64 ]; 
 struct point newPos;
 
 newPos.x = 0.0;
 newPos.y = 0.0;
 
 while( currentIndex < charNB ) {
 switch ( line[ currentIndex++ ] ) { 
 case 'U':
 penUp(); 
 break;
 case 'D':
 penDown(); 
 break;
 case 'G':
 buffer[0] = line[ currentIndex++ ]; 
 buffer[1] = '\0';
 
 switch ( atoi( buffer ) ){ 
 case 0: 
 case 1:
 char* indexX = strchr( line+currentIndex, 'X' ); 
 char* indexY = strchr( line+currentIndex, 'Y' );
 if ( indexY <= 0 ) {
 newPos.x = atof( indexX + 1); 
 newPos.y = actuatorPos.y;
 } 
 else if ( indexX <= 0 ) { newPos.y = atof( indexY + 1); newPos.x = actuatorPos.x; } else { newPos.y = atof( indexY + 1); indexY = '\0'; newPos.x = atof( indexX + 1); } drawLine(newPos.x, newPos.y ); // Serial.println("ok"); actuatorPos.x = newPos.x; actuatorPos.y = newPos.y; break; } break; case 'M': buffer[0] = line[ currentIndex++ ]; buffer[1] = line[ currentIndex++ ]; buffer[2] = line[ currentIndex++ ]; buffer[3] = '\0'; switch ( atoi( buffer ) ){ case 300: { char* indexS = strchr( line+currentIndex, 'S' ); float Spos = atof( indexS + 1); if (Spos == 30) { penDown(); } if (Spos == 50) { penUp(); } break; } case 114: Serial.print( "Tam Pozisyon : X = " ); Serial.print( actuatorPos.x ); Serial.print( " - Y = " ); Serial.println( actuatorPos.y ); break; default: Serial.print( "Komut Tanınmadı : M"); Serial.println( buffer ); } } } } void drawLine(float x1, float y1) { if (verbose) { Serial.print("fx1, fy1: "); Serial.print(x1); Serial.print(","); Serial.print(y1); Serial.println(""); } if (x1 >= Xmax) { 
 x1 = Xmax; 
 }
 if (x1 <= Xmin) { x1 = Xmin; } if (y1 >= Ymax) { 
 y1 = Ymax; 
 }
 if (y1 <= Ymin) { 
 y1 = Ymin; 
 }
 
 if (verbose)
 {
 Serial.print("Xpos, Ypos: ");
 Serial.print(Xpos);
 Serial.print(",");
 Serial.print(Ypos);
 Serial.println("");
 }
 
 if (verbose)
 {
 Serial.print("x1, y1: ");
 Serial.print(x1);
 Serial.print(",");
 Serial.print(y1);
 Serial.println("");
 }
 
 x1 = (int)(x1*x_adim_mm);
 y1 = (int)(y1*y_adim_mm);
 float x0 = Xpos;
 float y0 = Ypos;
 long dx = abs(x1-x0);
 long dy = abs(y1-y0);
 int sx = x0<x1 ? StepInc : -StepInc;
 int sy = y0<y1 ? StepInc : -StepInc; long i; long over = 0; if (dx > dy) {
 for (i=0; i<dx; ++i) { x_ekseni.step(sx); over+=dy; if (over>=dx) {
 over-=dx;
 y_ekseni.step(sy);
 }
 delay(StepDelay);
 }
 }
 else {
 for (i=0; i<dy; ++i) { y_ekseni.step(sy); over+=dx; if (over>=dy) {
 over-=dy;
 x_ekseni.step(sx);
 }
 delay(StepDelay);
 } 
 }
 
 if (verbose)
 {
 Serial.print("dx, dy:");
 Serial.print(dx);
 Serial.print(",");
 Serial.print(dy);
 Serial.println("");
 }
 
 if (verbose)
 {
 Serial.print("Going to (");
 Serial.print(x0);
 Serial.print(",");
 Serial.print(y0);
 Serial.println(")");
 }
 
 delay(LineDelay);
 
 Xpos = x1;
 Ypos = y1;
}
 
 
void penUp() { 
 kalem_servo.write(kalem_kaldir); 
 delay(LineDelay); 
 Zpos=Zmax; 
 if (verbose) { 
 Serial.println("Pen up!"); 
 } 
}
void penDown() { 
 kalem_servo.write(kalem_indir); 
 delay(LineDelay); 
 Zpos=Zmin; 
 if (verbose) { 
 Serial.println("Pen down."); 
 } 
}

 

Adafruit Motor Shield İçin Arduino Yazılımı :

#include <Servo.h>
#include <AFMotor.h>
 
#define LINE_BUFFER_LENGTH 512
 
char STEP = MICROSTEP ;
 
const int penZUp = 95;
const int penZDown = 60;
const int penServoPin =10 ;
const int stepsPerRevolution = 48; 
Servo penServo; 
AF_Stepper myStepperY(stepsPerRevolution,1); 
AF_Stepper myStepperX(stepsPerRevolution,2); 
struct point { 
 float x; 
 float y; 
 float z; 
};
 
struct point actuatorPos;
 
float StepInc = 1;
int StepDelay = 0;
int LineDelay =0;
int penDelay = 50;
 
 
float StepsPerMillimeterX = 100.0;
float StepsPerMillimeterY = 100.0;
 
float Xmin = 0;
float Xmax = 40;
float Ymin = 0;
float Ymax = 40;
float Zmin = 0;
float Zmax = 1;
 
float Xpos = Xmin;
float Ypos = Ymin;
float Zpos = Zmax; 
 
 
boolean verbose = false;
 
void setup() {
 // Setup
 
 Serial.begin( 9600 );
 
 penServo.attach(penServoPin);
 penServo.write(penZUp);
 delay(100);
 
 
 myStepperX.setSpeed(600);
 
 myStepperY.setSpeed(600); 
 
 Serial.println("Mini CNC Plotter alive and kicking!");
 Serial.print("X range is from "); 
 Serial.print(Xmin); 
 Serial.print(" to "); 
 Serial.print(Xmax); 
 Serial.println(" mm."); 
 Serial.print("Y range is from "); 
 Serial.print(Ymin); 
 Serial.print(" to "); 
 Serial.print(Ymax); 
 Serial.println(" mm."); 
}
 
void loop() 
{
 
 delay(100);
 char line[ LINE_BUFFER_LENGTH ];
 char c;
 int lineIndex;
 bool lineIsComment, lineSemiColon;
 
 lineIndex = 0;
 lineSemiColon = false;
 lineIsComment = false;
 
 while (1) {
 
 
 while ( Serial.available()>0 ) {
 c = Serial.read();
 if (( c == '\n') || (c == '\r') ) { 
 if ( lineIndex > 0 ) { 
 line[ lineIndex ] = '\0'; 
 if (verbose) { 
 Serial.print( "Received : "); 
 Serial.println( line ); 
 }
 processIncomingLine( line, lineIndex );
 lineIndex = 0;
 } 
 else { 
 }
 lineIsComment = false;
 lineSemiColon = false;
 Serial.println("ok"); 
 } 
 else {
 if ( (lineIsComment) || (lineSemiColon) ) { 
 if ( c == ')' ) lineIsComment = false; 
 } 
 else {
 if ( c <= ' ' ) { 
 } 
 else if ( c == '/' ) { 
 } 
 else if ( c == '(' ) { 
 lineIsComment = true;
 } 
 else if ( c == ';' ) {
 lineSemiColon = true;
 } 
 else if ( lineIndex >= LINE_BUFFER_LENGTH-1 ) {
 Serial.println( "ERROR - lineBuffer overflow" );
 lineIsComment = false;
 lineSemiColon = false;
 } 
 else if ( c >= 'a' && c <= 'z' ) { // Upcase lowercase
 line[ lineIndex++ ] = c-'a'+'A';
 } 
 else {
 line[ lineIndex++ ] = c;
 }
 }
 }
 }
 }
}
 
void processIncomingLine( char* line, int charNB ) {
 int currentIndex = 0;
 char buffer[ 64 ]; // Hope that 64 is enough for 1 parameter
 struct point newPos;
 
 newPos.x = 0.0;
 newPos.y = 0.0;
 
 
 while( currentIndex < charNB ) {
 switch ( line[ currentIndex++ ] ) { 
 case 'U':
 penUp(); 
 break;
 case 'D':
 penDown(); 
 break;
 case 'G':
 buffer[0] = line[ currentIndex++ ]; 
 
 buffer[1] = '\0';
 
 switch ( atoi( buffer ) ){ 
 case 0: 
 case 1:
 // /!\ Dirty - Suppose that X is before Y
 char* indexX = strchr( line+currentIndex, 'X' ); 
 char* indexY = strchr( line+currentIndex, 'Y' );
 if ( indexY <= 0 ) {
 newPos.x = atof( indexX + 1); 
 newPos.y = actuatorPos.y;
 } 
 else if ( indexX <= 0 ) {
 newPos.y = atof( indexY + 1);
 newPos.x = actuatorPos.x;
 } 
 else {
 newPos.y = atof( indexY + 1);
 indexY = '\0';
 newPos.x = atof( indexX + 1);
 }
 drawLine(newPos.x, newPos.y );
 // Serial.println("ok");
 actuatorPos.x = newPos.x;
 actuatorPos.y = newPos.y;
 break;
 }
 break;
 case 'M':
 buffer[0] = line[ currentIndex++ ]; 
 buffer[1] = line[ currentIndex++ ];
 buffer[2] = line[ currentIndex++ ];
 buffer[3] = '\0';
 switch ( atoi( buffer ) ){
 case 300:
 {
 char* indexS = strchr( line+currentIndex, 'S' );
 float Spos = atof( indexS + 1);
 // Serial.println("ok");
 if (Spos == 30) { 
 penDown(); 
 }
 if (Spos == 50) { 
 penUp(); 
 }
 break;
 }
 case 114: 
 Serial.print( "Absolute position : X = " );
 Serial.print( actuatorPos.x );
 Serial.print( " - Y = " );
 Serial.println( actuatorPos.y );
 break;
 default:
 Serial.print( "Command not recognized : M");
 Serial.println( buffer );
 }
 }
 }
 
 
 
}
 
void drawLine(float x1, float y1) {
 
 if (verbose)
 {
 Serial.print("fx1, fy1: ");
 Serial.print(x1);
 Serial.print(",");
 Serial.print(y1);
 Serial.println("");
 } 
 
 if (x1 >= Xmax) { 
 x1 = Xmax; 
 }
 if (x1 <= Xmin) { 
 x1 = Xmin; 
 }
 if (y1 >= Ymax) { 
 y1 = Ymax; 
 }
 if (y1 <= Ymin) { 
 y1 = Ymin; 
 }
 
 if (verbose)
 {
 Serial.print("Xpos, Ypos: ");
 Serial.print(Xpos);
 Serial.print(",");
 Serial.print(Ypos);
 Serial.println("");
 }
 
 if (verbose)
 {
 Serial.print("x1, y1: ");
 Serial.print(x1);
 Serial.print(",");
 Serial.print(y1);
 Serial.println("");
 }
 
 x1 = (int)(x1*StepsPerMillimeterX);
 y1 = (int)(y1*StepsPerMillimeterY);
 float x0 = Xpos;
 float y0 = Ypos;
 
 long dx = abs(x1-x0);
 long dy = abs(y1-y0);
 int sx = x0<x1 ? StepInc : -StepInc;
 int sy = y0<y1 ? StepInc : -StepInc;
 
 long i;
 long over = 0;
 
 if (dx > dy) {
 for (i=0; i<dx; ++i) {
 myStepperX.onestep(sx,STEP);
 over+=dy;
 if (over>=dx) {
 over-=dx;
 myStepperY.onestep(sy,STEP);
 }
 delay(StepDelay);
 }
 }
 else {
 for (i=0; i<dy; ++i) {
 myStepperY.onestep(sy,STEP);
 over+=dx;
 if (over>=dy) {
 over-=dy;
 myStepperX.onestep(sx,STEP);
 }
 delay(StepDelay);
 } 
 }
 
 if (verbose)
 {
 Serial.print("dx, dy:");
 Serial.print(dx);
 Serial.print(",");
 Serial.print(dy);
 Serial.println("");
 }
 
 if (verbose)
 {
 Serial.print("Going to (");
 Serial.print(x0);
 Serial.print(",");
 Serial.print(y0);
 Serial.println(")");
 }
 
 delay(LineDelay);
 Xpos = x1;
 Ypos = y1;
}
 
void penUp() { 
 penServo.write(penZUp); 
 delay(penDelay); 
 Zpos=Zmax; 
 digitalWrite(15, LOW);
 digitalWrite(16, HIGH);
 if (verbose) { 
 Serial.println("Pen up!"); 
 
 } 
}
void penDown() { 
 penServo.write(penZDown); 
 delay(penDelay); 
 Zpos=Zmin; 
 digitalWrite(15, HIGH);
 digitalWrite(16, LOW);
 if (verbose) { 
 Serial.println("Pen down."); 
 
 
 } 
}

 

Processing Yazılımı:

import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;
import processing.serial.*;
 
Serial port = null;
 
// select and modify the appropriate line for your operating system
// leave as null to use interactive port (press 'p' in the program)
String portname = null;
//String portname = Serial.list()[0]; // Mac OS X
//String portname = "/dev/ttyUSB0"; // Linux
//String portname = "COM6"; // Windows
 
boolean streaming = false;
float speed = 0.001;
String[] gcode;
int i = 0;
 
void openSerialPort()
{
 if (portname == null) return;
 if (port != null) port.stop();
 
 port = new Serial(this, portname, 9600);
 
 port.bufferUntil('\n');
}
 
void selectSerialPort()
{
 String result = (String) JOptionPane.showInputDialog(frame,
 "Select the serial port that corresponds to your Arduino board.",
 "serial port seç",
 JOptionPane.QUESTION_MESSAGE,
 null,
 Serial.list(),
 0);
 
 if (result != null) {
 portname = result;
 openSerialPort();
 }
}
 
void setup()
{
 size(500, 250);
 openSerialPort();
}
 
void draw()
{
 background(0); 
 fill(255);
 int y = 24, dy = 12;
 text("Menuler", 12, y); y += dy;
 text("p: serial port seç", 12, y); y += dy;
 text("1: hız 0.001 inch", 12, y); y += dy;
 text("2: hız 0.010 inch", 12, y); y += dy;
 text("3: hız 0.100 inch", 12, y); y += dy;
 text("Yön Tuşları: x-y Düzlemi", 12, y); y += dy;
 text("Sayfa aşağı-yukarı: z eksen ", 12, y); y += dy;
 text("$: grbl ayarlar", 12, y); y+= dy;
 text("h: Başlangıç Konumu", 12, y); y += dy;
 text("0: Güncel Konum", 12, y); y += dy;
 text("g: g-code dosya seç ", 12, y); y += dy;
 text("x: Çizimi Durdur", 12, y); y += dy;
 y = height - dy;
 text("güncel hız: " + speed + " adım", 12, y); y -= dy;
 text("güncel serial port: " + portname, 12, y); y -= dy;
}
 
void keyPressed()
{
 if (key == '1') speed = 0.001;
 if (key == '2') speed = 0.01;
 if (key == '3') speed = 0.1;
 
 if (!streaming) {
 if (keyCode == LEFT) port.write("G91\nG20\nG00 X-" + speed + " Y0.000 Z0.000\n");
 if (keyCode == RIGHT) port.write("G91\nG20\nG00 X" + speed + " Y0.000 Z0.000\n");
 if (keyCode == UP) port.write("G91\nG20\nG00 X0.000 Y" + speed + " Z0.000\n");
 if (keyCode == DOWN) port.write("G91\nG20\nG00 X0.000 Y-" + speed + " Z0.000\n");
 if (keyCode == KeyEvent.VK_PAGE_UP) port.write("G91\nG20\nG00 X0.000 Y0.000 Z" + speed + "\n");
 if (keyCode == KeyEvent.VK_PAGE_DOWN) port.write("G91\nG20\nG00 X0.000 Y0.000 Z-" + speed + "\n");
 if (key == 'h') port.write("G90\nG20\nG00 X0.000 Y0.000 Z0.000\n");
 if (key == 'v') port.write("$0=75\n$1=74\n$2=75\n");
 //if (key == 'v') port.write("$0=100\n$1=74\n$2=75\n");
 if (key == 's') port.write("$3=10\n");
 if (key == 'e') port.write("$16=1\n");
 if (key == 'd') port.write("$16=0\n");
 if (key == '0') openSerialPort();
 if (key == 'p') selectSerialPort();
 if (key == '$') port.write("$$\n");
 }
 
 if (!streaming && key == 'g') {
 gcode = null; i = 0;
 File file = null; 
 println("Loading file...");
 selectInput("Select a file to process:", "fileSelected", file);
 }
 
 if (key == 'x') streaming = false;
}
 
void fileSelected(File selection) {
 if (selection == null) {
 println("Window was closed or the user hit cancel.");
 } else {
 println("User selected " + selection.getAbsolutePath());
 gcode = loadStrings(selection.getAbsolutePath());
 if (gcode == null) return;
 streaming = true;
 stream();
 }
}
 
void stream()
{
 if (!streaming) return;
 
 while (true) {
 if (i == gcode.length) {
 streaming = false;
 return;
 }
 
 if (gcode[i].trim().length() == 0) i++;
 else break;
 }
 
 println(gcode[i]);
 port.write(gcode[i]+ '\n');
 i++;
}
 
void serialEvent(Serial p)
{
 String s = p.readStringUntil('\n');
 println(s.trim());
 
 if (s.trim().startsWith("ok")) stream();
 if (s.trim().startsWith("error")) stream(); // XXX: really?
}

Projenin Bütün Dosyalarını Buradan İndirebilirsiniz. Arduino Mini Cnc

INKSCAPE  AYARLARI

INKSCAPE ile gcode çıktısı almamız için öncelikle makerbot unicon G-code eklentisini buradan indirin >> İnkscape gcode eklentisi

Eklentiyi zipten çıkartın ve işletim sisteminize göre aşağıda gösterildiği klasöre kopyalayın.

OS X  kullanıcıları – /Applications/Inkscape.app/Contents/Resources/extensions

Linux  kullanıcıları – /usr/share/inkscape/extensions

Windows kullanıcıları – C:\Program Files\Inkscape\share\extensions

 

İnkscape ile Yazıyı Gcode Çıktısını Alma : 

1.adım: İnkscape programını açın. Aşağıdaki resimde gösterildiği gibi sayfa ayarlarına girin  sayfa boyutunu 80x80mm  ve metrik sistemi mm seçerek  ayarlayın.

2.adım: Sayfa boyutunu 80×80 mm yaptık . Fakat yazı alanı olarak sadece sayfanın dörtte biri olan sağ üst alanı kullanacağız. Yani kullanacağımız alan 40×40 mm boyutlarında olacak. Aşağıda çizim alanı gösterilmiştir. Bu alanı taşmayacak şekilde yazınızı yazınız.

3.adım: Yazıları seçin ve path menüsünden object to path ‘ tıklayın. Aşağıda gösterilmiştir.

4.adım: Aşağıdaki gibi farklı kaydet diyerek gcode uzantısını seçin.

5.adım: Kaydet e tıkladığınız karşınıza aşağıdaki gibi bir ekran çıkacaktır. Buradaki ayarları değiştirmeyin ve ok butonuna tıklayın.

Yazımızın gcode olarak çıktısını bu şekilde aldık. Şimdi bir resmin gcode olarak çıktısının alınmasın bakalım.

İnkscape ile Resmin Gcode Çıktısını Alma : 

Yukarıda anlattığım gibi sayfa boyutlarını ve metrik sistemi ayarlayın. Çizim alanı da yine sayfanın dörtte biri olan sağ üst alanı olacak. Bu kısımları ayarladıktan sonra aşağıdaki adımları takip ediniz.

1.adım: File menüsünden import a tıklayın ve çizdirmek istediğiniz resmi seçin.

2.adım: Resmi çizim alanına sığacak şekilde boyutunu ayarlayın ve çizim alanına konumlandırın. Daha sonra resmi seçin ve aşağıdaki gibi path menüsünden Trace Bitmap e tıklayın.

3.adım: Karşımıza bir pencere çıkıyor. Aşağıdaki gibi Colors seçeneğini seçin ve Update butonuna tıklayın. Ardından ok butonuna tıklayın işlem bitene kadar bekleyin. İşlem bittiğinde pencereyi kapatın.

4.adım:  Resmi farenin sol tuşuna basılı tutarak yana kaydırın.Aşağıdaki gibi iki tane resim oluştuğunu göreceksiniz. Bunlardan yana kaydırdığınız resim vektörel forma dönüşmüş olan resimdir. Diğer resmi silin ve yana kaydırmış olduğunuz resmi çizim alanına yerleştirin.

5.adım: Resmi seçin ve aşağıdaki gibi path menüsünden opject to path a tıklayın.

6.adım: Resmi vektörel yaptık fakat dış çerçeve kısmındaki kalıntıları silmemiz gerekiyor. Bunun için sol taraftaki araçlardan fare okunun altında olan Edit Paths by nodes aracını seçin ve aşağıdaki gibi resim üzerine tıklayın. Kesikli çizgi üzerine gelin ve farenin sağ tuşuna basarak delete yi seçin.

7.adım: File menüsünden farklı kaydet e tıklayın ve gcode u seçerek kaydedin.

Gcode’ u Cnc’ ye Göndererek Çizim Yaptırma İşlemleri:

Gcode çıktısını aldığımız çizimi cnc ye nasıl göndereceğimize bakalım. Öncelikle bütün bağlantıları tekrar kontrol ediniz ve doğru olduğundan emin olunuz. Daha sonra arduinoyu bilgisayara bağlayın. Processing programını açın ve processing kodunu ekrana aktararak programı çalıştırın. Karşımıza menülerin olduğu aşağıdaki şekildeki gibi bir ekran gelecektir.

İlk önce p tuşuna basın ve arduinonun bağlı olduğu serial portu seçin. Ardından G tuşuna basarak çizdirmek istediğiniz gcode dosyasını seçin. Dosyayı seçtiğinizde çizim başlayacaktır. Ayrıca cnc çizim yaparken X tuşuna basarsanız çizimi durdurabiliriz. ve H tuşuna basarak da kalemi başlangıç noktasına alırsınız. Diğer bir özellik ise çizim hızını 1, 2 veya 3 tuşlarına basarak hangi hızda olmasını istiyorsunuz ayarlayabilirsiniz.

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

98 Yorum

  1. hüseyin özen

    aliexpress.com/item/10PCS-LOT-Original-L293D-DIP16-IC-MOTOR-DRIVER-PAR-Free-Shipping/32652302731.html?spm=2114.search0204.3.159.vU03DV&ws_ab_test=searchweb0_0,searchweb201602_2_10152_10065_10151_10068_10344_10342_10343_10340_10341_10307_10137_10060_10155_10154_10056_10055_10054_5470020_10059_100031_10099_5460020_10338_10339_10103_10102_440_10052_10053_10142_10107_10050_10051_10172_5380020_10326_10084_10083_10080_10082_10081_10110_10111_10112_10113_10114_143_10312_10313_10314_10078_10079_10073,searchweb201603_6,ppcSwitch_4_ppcChannel&btsid=e01bff3c-692e-4c6c-953d-c96321c9ccdd&algo_expid=e0d2fb2d-616d-40b4-b4e9-2a4ff229148e-20&algo_pvid=e0d2fb2d-616d-40b4-b4e9-2a4ff229148e uygunmu sizce bi bakarmısınız

  2. ALİ

    Bİ KOD ALDIK BAŞTAN SONA HATA VERİYOR BUNU YÜKLEYEN ARKADAŞLAR NASIL YÜKLEDİ

  3. Ahmet KAFA

    Merhabalar kolay gelsin ben bu proje için ugrasıyorum fakat mekanik acıdan hiç bir sıkıntım olmadı cd rom dan cıkardıgım step motorlarda da bir sıkıntı yok ama gel gelelim ki yazılım konusuna bir türlü geçemedim o konuyu baglantı damı sıkıntım var diye 4 kere tekrar bagladım ama ardüino ile bir türlü eksenleri kontrol edemedim bana yardımcı olurmusunuz l293d ye 12v 1a enerji vercem sizce sıkıntı olurmu

  4. fatih

    processing kısmını video çekip youtube linkini paylaşabilirmisin kardeş … yapamadım bi türlü ….. processing kodları derle deyince hata veriyor ….

  5. Mustafa

    Processing yazılımı derken ne oluyor

  6. Faik can Aktaş

    Merhabalar Sezgin bey
    Oncelikle proje çok güzel anlatmisiniz en ince ayrıntısına kadar çok sagollun.
    Ben de bu projeyi sizin anlattığınız gibi yaptık fakat inkscape programında yaptığım cizimlerde sadece x eksenindeki motor çalışıyor. Y eksenindeki motorda tepki yok ama internetten örnek gcode dosyası indirdigimde sistem düzgün bir şekilde çalışıyor . Benim yaptığım cizimlerde sıkıntı oluyor .Programlarin hiç birinden de hata mesajı yok bu konuda bana yardımcı olurmusunuz şimdiden teşekkür ler

    1. Emin

      aynı sorunu bende yaşıyorum çözüm buldunuz mu

  7. Mehmet

    MERHABALAR HOCAM ben 28byj-48 tipi step motor kllandım bir sıkıntı olurmu acaba???

  8. fatih altıntaş

    processIncomingLine’ was not declared in this scope hatası nedir acil yardım edebilecek varmı

  9. Emin

    processIncomingLine was not declared in this scope hatası alıyorum sorun nedir acaba

    1. emin

      derlemeden direk yüklendiğinde sıkıntı olmuyor ama tekrar yüklerken sıkıntı oluyor

  10. Ökkeş

    Kardeş ellerine sağlık çok güzel bir anlatım olmuş bu projeyi 3 step motor kullanarak nasıl yaparız bana yardımcı olursanız sevinirim

  11. enver

    sezgin bey verdiğini stk dosyalarını hangi programda çizip koydunuz.

    1. enver

      stl dosyası demek istedim

  12. Mesut

    Mrb sezgin bey ilk önce bilgiletiniz için teşekür ederim benim elimde arduino uno r3 ve adafruit shield sürücü kartı var arduino ya adafruit shielt programıni yüklüycez sürücümden dolayı doğrumudur peki mini cnc pro.su ne işe yarıyor birde pc ye procesing prosunun versiyonu birde inkspace versiyonunu verirseniz sevinirim bunlar arası yükleme ve arduino gecisleri bilgilerini not düşer iseniz sevinirim teşekürler

  13. ömer

    abi processing de gcode yi seiyorum servo motor hareket ediyo hemen duruyo stepmotorlarda hiç hareket yok komut tanınamadı diyor

  14. MEHMET

    (Scribbled version of C:\Users\mustafa\AppData\Local\Temp\ink_ext_XXXXXX.svg9L0AXY @ 3500.00)

    abi processing de bu hatayi aliyorum yardimci olurmusun ne step motorlarin kabloların ne oldugunu bilmiyorum yani step motorunun kablolarinin hangisinin ne olduğunu bilmiyorum

  15. smhcn

    hazır yapılmışı varmı

  16. murat

    step motorları bağlantısını yapamadım. Ne ysptıysam calısmadı? bi yardım lütfen..

    1. Sezgin GÜL

      step motorların uçlarını bulmalısınız. Birbirine bağlı ikili uçlar vardır. Bunu multimetre ile kısa devre pozisyonuna alıp bulabilirsiniz. Aynı uçları bulduktan sonra yapmanız gereken şu: Bir ucu motor sürücünün bir tarafına bağlayın. Bağladığınız taraftaki diğer motor girişine farklı ucu takın. Ardından sürücünün diğer tarafına ilk taktığınız ucun diğerini takın Son olarak da kalan uca diğerini takın. Yani kısaca mantığı şu: motor sürücüye takarken birinci taktığınız uçtan sonra farklı olan diğer ucu takmalısınız ve bunu sırayla tekrar ediniz. Motor sürücüye takarken datasheete göre sırası şu şekilde olmalı : OUTPUT 1 , OUTPUT 2 , OUTPUT 3, OUTPUT 4. . Burada OUTPUT 1 ile OUTPUT 3 aynı uç, kalan ikisi ise diğer aynı uçlardır.

      1. doğukan

        ben bağlantıları yaptım nema17 kullanıyorum ancak çok az hareket ediyor ne yapmam gerek

  17. hüseyin

    g-code kısmını göremeyen arkadaşlar github.com/martymcguire/inkscape-unicorn zip. i indirip src klasörünün içindeki dosyaları istenilen uzantıya gönderip programı tekrar açarlarsa sıkıntıları hallolacaktır.

  18. Batuhan

    Merhaba sezgin bey tekrar rahatsız ediyorum kusuruma bakmayın , mekanik & programlar hepsi tamam yalnız çizimi & yazıyı gcode şekilde kaydetmek isteğimde g cod şekilde kaydet tamam dedikten sonra kaydetme işlemini gerçekleştirmiyor hiç bir şekilde bunu nasıl çözebiliriz ?

    1. ramoo

      80 mm ayarını yptıktan sonra ölçü birimini px yap düzeliyo mm olarak kaydetmiyo px de kydeder

  19. muhammet ali

    Inkscapete anlattıklarının hepsini birebir yaptım. Ama hala g code elde edemedim. G code uzantısı halinde kayıt ettikten sonra klasör boş gözüküyor nerde hata var yardımcı olur musun?

  20. muhammet ali

    Inkscapete gösterdiklerinin hepsini birebir yaptım ama g code uzantılı kaydettikten sonra klasör boş çıkıyor. Hala sorunu bulamadım. Yardımcı olur musun?

  21. Bilal Yıldırım

    Kalemin daha yavaş hareket etmesi için yazılımda ne yapmam gerekiyor? yardımcı olabilir misiniz

  22. batuhan

    sezgin bey öncelikle çok teşekkür ediyorum proje için ;
    Arduino ya kodu derlediğimde şöyle bir sorun ile karşılaşıyorum

    Arduino:1.8.1 (Windows 10), Kart:”Arduino/Genuino Uno”

    C:UsersbatuhanDocumentsArduinosketch_feb25bsketch_feb25b.ino:2:21: fatal error: AFMotor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

      1. batuhan

        ilginiz için çok teşekkür ediyorum 🙂

  23. mustafa

    abi bütün yazilimi 1 sekmeyemi ekliyoruz

    1. Sezgin GÜL

      İndirdiğin eklentiyi aç.Klasör içine gir. 3 dosya bir klasör olacak. Onların hepsini yukarıda belirtiğim konuma ekle. Önceki eklediğini sil. Programı yeninden çalıştırınca uzantı görünecektir. Yine olmaz ise facebook tan iletişime geçerek teamviewer üzerinden bağlanıp bakayım.

      1. mustafa

        abi yukarida paylaştıgın videodaki arduino çeşidini yazarmisin aynısından alacağimda

        1. Sezgin GÜL

          Arduino Uno

  24. enver

    iyi günler ben inkspace 0.48,5 kurdum anacak içine linkini verdiğiniz gcode dosyasını belirrttiğiniz adrese atmama rağmen gcode dosyası olarak kaydedemiyorum.
    farklı kaydet diyorum ancak gelmiyor gcode türünde kayıt.

    1. Sezgin GÜL

      Eklentiyi yanlış yere kurmuş olduğunuz için görünmüyor.Attığınız konumu tekrar kontrol edin.

  25. Fqtih

    Benim bi sorum olacaktı cevaplarsanız şimdiden teşekkürler.
    Processing dediğiniz kısmı hangi program ile yazacağız exe oluşturacağız.Ben bunu proje olarak düşünüyorum yazılımını kendim yapmadığım süre kabul etmez hocam şimdiden teşekkürler

  26. muhammed

    shieldı 5 volt 1 amper ile beslesek olurmu

    1. Sezgin GÜL

      Besleyebilirsiniz

  27. mert

    Bu fritzing devresinde hata yok mu?Sağ alt köşedeki kırmızı ve siyah kablolar aynı yerden çıkış almış biri artı biri eksi olması gerekmiyor mu?

  28. cemal

    merhaba kullandigim inscape programinda “Maker bot unicom g code” eklentisi yok nasil ekleyebilirim.
    te$ekkurler

    1. Sezgin GÜL

      İnkscape Ayarları başlığında eklentinin linki var. Yalnız inkscape 0.48.5 sürümünde çalışmaktadır.

  29. yusuf

    inkscape de yaptığım çizimi veya yazıyı kaydederken şöyle bir sorun çıkıyor. Bu sorunu nasıl çözebilirim

    Traceback (most recent call last):

    File “unicorn.py”, line 108, in

    e.affect()

    File “C:\Program Files\Inkscape\share\extensions\inkex.py”, line 268, in affect

    self.effect()

    File “unicorn.py”, line 102, in effect

    parser.parse()

    File “C:\Program Files\Inkscape\share\extensions\unicorn\svg_parser.py”, line 230, in parse

    self.svgWidth = self.getLength(‘width’, 354) * 0.28222

    TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘float’

  30. Mustafa

    Merhaba Sezgin Bey, adafruit motor shield için Arduino da servo ve step bağlantı uçları hangileri.

    1. Mustafa

      Step motorlar için kullandığımız l293 motor sürücü ile arduino’nun bağlantıları hangi pinler

      1. Sezgin GÜL

        Kod kısmında step motor tanımında pinler belirtildi.
        Stepper y_ekseni(adim_sayisi, 2,3,4,5);
        Stepper x_ekseni(adim_sayisi, 6,7,8,9);

    2. Sezgin GÜL

      Motor shield arduino üzerine takıldığı için direk otomatik bağlantı sağlanıyor. Kod kısmında pin numaralarının belirtilmemesinin nedeni, pinlerin kütüphane dosyasında önceden tanıtılmış olmasıdır ve step motor tanımı yaparken bu pinler arka planda otomatik aktif edilir. Eğer hangi pinlerin atandığını öğrenmek istersen de motor shield kütüphanesine bakabilirsin. Servo motor pini kodda tanımlanmış ve dijital 10 pinidir.

  31. FenciFd

    Süpermiş oldu. Paylaşım için çok teşekkürler. Elektroniğin endüstriyel kısmında kalan bizim gibi insanlar için mikro denetleyicileri kullanmak yazılım yazmak zor. Ben bu sistemi çok yapmak istiyordum ama yazılımları doğru bir şekilde bulup kullanmak nasip olmamıştı. Sizin paylaşımınız ile olayı çözdüm çok Teşekkürler.

  32. Orhan

    Güzel bir açıklama olmuş teşekkür ederim ben herşeyi yaptım ve çalıştırdım ama anlamadığım olay şu.o çıkarılacak olan parçayı çıkarmadım ama yinede çalıştı cikarmamizin sebebi nedir cikarmazsak bi zararı varmı tekrar teşekkür ediyorum

  33. okan köroğlu

    hocam kolay gelsin
    prosessing programını yüklerken
    “İMPORT DOES NOT NAME A TYPE” diye hata veriyor
    yardımcı olursanız sevinirim
    başarılarınızın devamını dilerim. İyi çalışmalar…

      1. okan köroğlu

        hocam çok teşekkür ederim. Emeğine sağlık

      2. Bilal

        Hocam ben processing programı kurulumu ve processing arayüzüne processing kodunu atmayı anlamadın lütfen yardımcı olun

  34. okan köroğlu

    hocam kolay gelsin
    prossessing programını yüklerken arduino ya böyle bir mesaj geliyor
    “import does not name a type”
    kod la ilgili bir problem mi var

  35. ömer faruk

    3 step motor ile yapmak isitıyorum bu projeyı.elınızde herhangı bı döküman var mı

    1. Sezgin GÜL

      Grbl olarak araştırın açık kaynak kodlarını bulursunuz.

      1. ömer faruk

        herhangi bir kod bulamadım.baska bı sekılde aramam mı gerekıyor.3steple yapan herhangı bırıne rastlamadım henuz bı bılgınız var mı

  36. faruk

    inkspace de dosyayı kaydederken g gode uzantısı gözükmüyor neden olabilir

    1. Sezgin GÜL

      Eklentiyi yüklememiş veya yanlış yere yüklemiş olduğunuzdan kaynaklıdır.

      1. faruk

        dediğiniz her şeyi yaptım ama ginede g code uzantısı gözükmüyor başka bişe yapmam mı lazım tüm sistem hazır çalışıyor tek eksik g code kaldı yardımcı olsanız size zahmet bu gece halletmem lazım internette birşey bulamadım bununla alakalı

        1. Sezgin GÜL

          inkscape 0.48.5 sürümününde çalışıyor. Sizdeki son sürüm ise onda başka eklenti çalışıyor.

          1. ahmet

            usta başka eklentiyi nereden bulacağız

          2. Sezgin GÜL

            inkscape 0.48.5 sürümünü yükleyin

  37. Ahmet Olmuştur

    Ustam öncelikle eline saglık güzel calışma olmuş. Benim sormak istedigim sey acaba 3 tane step motor kullansak olmaz mı?. Bildigimden degil bilakis bilgilenmek amaclı soruyorum, sevo motor cok karmasık diye söylendi acaba step motorlarla yapmak daha mı kolay oluyor?. İyi calışmalar..

  38. Hakan

    L293 kullanarak yapmak istiyorum. Anlamadığım kısın Arduinonun için hem l293 kodlarını hemde processing kodlarını mı atacağız peşpeşe. G kodlarını işleyen kısım sanırım Processign programı??

  39. Berkay

    Hocam, dosyayı program filestaki ınkspace dosyasına attım fakat farklı kaydette .gcode eklentisini göremiyorum?

  40. can arslan

    Hocam ellerine sağlık cidden tek sıkıntım çizdiğim yada yazdığımı farklı kaydederken g code sekmesi yok onu nasıl halledebilrim yada sizin program sürümümü farklı bende 0.91 var . tek sıkıntım şuan bu sadece teşekkürler.

  41. enver tilbe

    sezgin bey iyi akşamlar.
    inkspace programında ara işlemleri hallettikten sonra kayıt işlemi yaparken böyle bir hata veriyor.
    yardımcı olabilir misiniz.

    Traceback (most recent call last):
    File “unicorn.py”, line 108, in
    e.affect()
    File “C:\Program Files\Inkscape\share\extensions\inkex.py”, line 268, in affect
    self.effect()
    File “unicorn.py”, line 102, in effect
    parser.parse()
    File “C:\Program Files\Inkscape\share\extensions\unicorn\svg_parser.py”, line 230, in parse
    self.svgWidth = self.getLength(‘width’, 354) * 0.28222
    TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘float’

    1. yusuf

      merhaba aynı sorun bende de oldu siz nasıl çözdünüz acaba

  42. Orhun

    inkscape de yaptığım çizimi veya yazıyı kaydederken şöyle bir sorun çıkıyor. Bu sorunu nasıl çözebilirim

    Traceback (most recent call last):

    File “unicorn.py”, line 108, in

    e.affect()

    File “C:\Program Files\Inkscape\share\extensions\inkex.py”, line 268, in affect

    self.effect()

    File “unicorn.py”, line 102, in effect

    parser.parse()

    File “C:\Program Files\Inkscape\share\extensions\unicorn\svg_parser.py”, line 230, in parse

    self.svgWidth = self.getLength(‘width’, 354) * 0.28222

    TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘float’

    1. yusuf

      merhaba aynı sorun bende de oldu siz nasıl çözdünüz acaba

  43. ahmet kandilli

    selamlar sezgin bey çalışmanız çok güzel bende son aşamalara geldim fakat şu yazılım olayını aşamadım
    Arduino:1.6.10 (Windows 10), Kart:”Arduino/Genuino Uno”

    C:\Users\KANDÄ°LLÄ°\Desktop\cnc\Arduino Mini Cnc\Mini_Cnc\Mini_Cnc.ino: In function ‘void loop()’:

    Mini_Cnc:90: error: ‘process’ was not declared in this scope

    C:\Users\KANDÄ°LLÄ°\Desktop\cnc\Arduino Mini Cnc\Mini_Cnc\Mini_Cnc.ino: In function ‘void processIncomingLine(char*, int)’:

    Mini_Cnc:143: error: ‘penUp’ was not declared in this scope

    Mini_Cnc:146: error: ‘penDown’ was not declared in this scope

    Mini_Cnc:170: error: ‘drawLine’ was not declared in this scope

    exit status 1
    ‘process’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    hata mesajını alıyorum yardımcı olabilirmisiniz

  44. yunus

    Açıklama süper olmuş. Ben bu devreyi A4 boyutunda hazırlayabilir miyim ? Bunun için parçalarda ve kodlarda nasıl değişiklikler yapmam lazım. Cevabınız için de şimdiden teşekkürler.

  45. rıza barış çakı

    Merhabalar hocam ilk başta emeğinize sağlık cok güzel proje olmuş . bir çok sitede mini cnc üzerine yazılar var fakat sizinki kadar açıklayıcı değil hiç birisi. arduino programına kodu yüklerken ” ‘penUp’ was not declared in this scope ” hatası veriyor nerden kaynaklı olabilir yardımcı oluranız cok severim projelreinizin devamı bekleriz . :))

      1. ömür

        abicim elektriği nerden vricez bulamadım da

        1. Sezgin GÜL

          l293d veya l293b kullandıysan sürücünün 8. bacağı harici enerji girişidir. oradan motorlara enerji vereceksin. Eğer motor shield kullandıysan üzerinde enerji pinleri yazar oradan enerji verirsin. Motorların stabil hareket etmesi için yaklaşık 1500 – 2000 mah akımda 5v luk bir gerilim vermen gerekiyor.

  46. abdulsamed öztoprak

    hayrlı gnler bn proğramı arduinoya yüklerken ”( exit status 1
    ‘processIncomingLine’ was not declared in this scope )” böyle bir hata aldım çözümü için ne yapabilirim.

  47. Osman ERDOĞAN

    Sezgin bey çalışmanız için teşekkürler ”Adafruit Motor Shield İçin Arduino Yazılımı” derleme
    esnasında aşağıdaki hatayı veriyor..
    mini_cnc_af_motor:7: error: ‘MICROSTEP’ was not declared in this scope
    mini_cnc_af_motor:14: error: ‘AF_Stepper’ does not name a type
    mini_cnc_af_motor:15: error: ‘AF_Stepper’ does not name a type
    mini_cnc_af_motor.ino: In function ‘void setup()’:
    mini_cnc_af_motor:57: error: ‘myStepperX’ was not declared in this scope
    mini_cnc_af_motor:59: error: ‘myStepperY’ was not declared in this scope
    mini_cnc_af_motor.ino: In function ‘void drawLine(float, float)’:
    mini_cnc_af_motor:281: error: ‘myStepperX’ was not declared in this scope
    mini_cnc_af_motor:285: error: ‘myStepperY’ was not declared in this scope
    mini_cnc_af_motor:292: error: ‘myStepperY’ was not declared in this scope
    mini_cnc_af_motor:296: error: ‘myStepperX’ was not declared in this scope
    Bu konuda yardımcı olursanız sevinirim,teşekkürler.

    1. Sezgin GÜL

      Afmotor kütüphanesini yüklemediğin için hata almışsınız.

  48. Mert

    Selamlar,Eski yazici parcalari ile bu projeyi Encoderli DC motor ile yapmamiz mumkun mu?
    Eger mekanizma hakkinda farkli bir fikriniz var ise paylasirsaniz seviniriz.

  49. Baha

    Abi su rayları iki farklı markalardan soksek yani step motorlar standartmi hizlarind sıkınti cikarmi ben iki farklı marka pc cd rom dan soktum de

  50. Kadir

    Hocam resimi nasıl çizdireceğimizi anlamadım açıklarsanız çok sevinirim.

    1. Sezgin GÜL

      Merhaba Kadir. Yukarıda anlattım ancak yine de açıkça anlatayım. Öncelikle inkscape programında 80x80mm boyutlarında bir sayfa aç. Sayfanın dörtte biri olan sağ üst kısmı kullanacaksın. Yani 40×40 mm lik bir alanda resim veya çizimini yapabilirsin. Resim ve çizim ekleme adımlarını yukarıda anlattığım gibi yap ve g code olarak çıktı al. Daha sonra arduinoyu bilgisayara bağla. Processing programını aç ve vermiş olduğum processing kodunu program penceresine aktar. Sonra processing programını çalıştır. Karşına menüler çıkacak. Öncelikle arduinonun bağlı olduğu portu seçmek için p tuşuna bas ve portu seç. daha sonra g tuşuna basıp g code dosyasını seçtiğin an cnc çizime başlayacaktır. Hepsi bu kadar.

      1. Kadir

        Çok teşekkürler elleriniz dert görmesin 🙂

  51. Kemal Ozkan

    Merhaba, arduinoya yeni başladım merak ettiğimden soruyorum ;
    çizdirmek istediğimiz deseni veya herhangi bir şekli arduinoya kod olarak mı yükleyeceğiz ?

  52. hasan

    hocam çok özür dilerim ama bize vahi mi gelcek te öğrencez hiçbi açıklama yok kodların yanında

    1. raimen

      Hasan bi zahmet kodların açıklamasını bulamıyorsan, arduino ile uğraşma

      1. hasan

        hocam istediğim şey kopyala yapıştır deil sen bulduyssan yukardakilerin “her bir satırının” açıklasmasını helal olsun

  53. ceesur

    Selam Sezgin bey.. bir çok kısmı anlatmamışsınız…mesela adafruit shield kartının alt kısmında ne takılı olması gerekiyor arduino uno mu?..takılacaksa da klon olanlar takılabilirmi…resimi yapmak yazdırmak için program gerekmiyormu hex dosyası grbl controller gibi..yeni başlayanlar için alınacak malzemeleri tek tek sıralayabilirmisiniz… bilgisayara yüklenecek programları yazabilirmisiniz…bu verdiğiniz kodları nereye atacağız.. kafam iyice karıştı. adafruit shield yerine cnc shield olurmu bu yazıcı için…neyse teşekkürler fena değildi..

    1. Sezgin GÜL

      2 tane arduino kodu verdim. motor sürücü olarak adafruit shield kullanacaksan adafruit yazan arduino kodunu arduinoya yüklemen gerekiyor. Diğer motor sürücüler örneğin l23b l293d l298n gibi sürücüler kullanacaksan diğer arduino kodunu yükle. adafruit shield kütüphane ile stabil çalıştığı için ona özel kod ekledim. Yani projedeki 2 arduino kodu da aynı aslında. sadece motor sürücüye özel ayrı kod verdim. arduino modeli farketmez ister klon ister orjinal o açıdan da sorun yok kullanabilirsin. arduino kodunu yükleyip bağlantıları da yaptıktan sonra processing programını aç . projede verdiğim processing kodunu al ve çalıştır. diğer yapman gereken adımları yukarıda anlatmıştım.

      1. Murat

        Hocam ben 5v 2 amper adaptör kullanıyorum yanlış yazma işlemine geçiyor karma karışık yazı yazıyor birtane bile harf düzgün yazmıyor yardımcı olursanız sevinirim step motor bağlantılarını sizin şema ile aynı bağladım

  54. abdullah

    ben bu programları anlamadım 3 ayrı program var nasıl yukleyecegim

    1. Sezgin GÜL

      2 tane arduino kodu verdim. Eğer adafruit motor shield kullanacaksınız kütüphanesi ile çalıştığından dolayı adafruit shield olan kodu kullanmanız gerekir. Diğer arduino kodu ise l293 gibi diğer motor sürücüler için geçerlidir. Yani iki arduino kodundan elinizdeki sürücüye uygun olanını seçip kullanın.

  55. Sertan nokay

    S.a ben projeyi tamamladim bi tek kalemi servoya yukari assagi yapacak sekilde yerlestirmeyi beceremedim bunun icin yardimci olurmusunu

    1. Sezgin GÜL

      processingdeki programı çalıştırın p tuşuna basın ve arduinonun takılı olduğu serial portu seçin.portu seçtiğinizde servonun açısı kalemi kaldırma pozisyonuna gelir. Ardından g tuşuna basın ve g code dosyası seçip onaylayın. Şimdi çizime başlayacaktır. Çizim yaparken servo motor kalemi indirmiş olacağından bu pozisyonda çizimi durdurun veya enerjiyi kesin. Servo motorun açısını oynatmadan kalemin ucu kağıda değecek şekilde takın ve kalem vidasını sıkın. Daha sonra programı tekrar başlatın. Çizime hazırdır.

      1. Ahmet

        Merhabalar ben butun aşamaları geçtim ama processing uzerinden g ile p komutu calisiyor ama digerleri işlev görmüyor. Bu neden kaynaklanıyor ?
        Tesekkurler