
Arduino CNC yapımı malzemeleri ve Örnek Kodları
Arduino ile CNC router yapmak için aşağıdaki adımları izleyebilirsiniz:
Malzemeler:
Adım 1: CNC Router'ın Çerçevesini Oluşturma CNC router çerçevesini, ahşap veya metal gibi uygun malzemelerden oluşturun. Bu çerçeve, tüm parçaların sabitlendiği ve istikrarlı bir temel sağladığı yapıdır.
Adım 2: Arduino ve CNC Shield Bağlantısı Arduino'nuzu CNC Shield ile bağlayın. CNC Shield, Arduino üzerindeki pinlere bağlanır ve step motor sürücülerini kontrol etmek için gerekli bağlantıları sağlar. CNC Shield'in uygun şekilde Arduino'ya takılı olduğundan emin olun.
Adım 3: Step Motor Sürücüleri ve Step Motorları Bağlantısı Step motor sürücülerini CNC Shield'e bağlayın. Her step motor sürücüsünün, sürücü üzerindeki uygun pinlere bağlanması gereken bir adım motoru vardır. Step motorları sürücülere bağlayın ve doğru polariteye dikkat edin.
Adım 4: Mil (Spindle) Motoru Bağlantısı Mil motorunu CNC Shield veya Arduino üzerindeki uygun pinlere bağlayın. Mil motorunun güç kaynağına da bağlantı yapmayı unutmayın.
Adım 5: İş Masağı ve Kesici Takımların Hazırlanması İş masasını CNC router çerçevesine sabitleyin. İş parçalarını güvenli bir şekilde tutmak için uygun kelepçeler veya tutucular kullanın. Kesici takımlarınızı doğru bir şekilde takın ve gerekirse hız ve derinlik ayarlarını yapın.
Adım 6: Arduino Programlaması Arduino'yu, CNC işleme programını çalıştırmak ve motorları kontrol etmek için programlayın. Arduino IDE (Integrated Development Environment) kullanarak bir CNC işleme kodu yazın veya mevcut bir CNC kütüphanesini kullanın. Bu program, motorların doğru hareket etmesini, işleme hızını ve adımlarını kontrol etmesini ve diğer işleme parametrelerini ayarlamasını sağlar.
Adım 7: Güç Kaynağı ve Test Etme CNC router sisteminiz için uygun bir güç kaynağı kullanın. Ardından, tüm bağlantıları kontrol edin ve işleme sürecini başlatmadan önce her şeyin doğru çalıştığından emin olun. Arduino kodunu yükleyin ve motorların doğru bir şekilde çalışıp çalışmadığını test edin.
Bu adımlar, Arduino ile bir CNC router yapmanızı sağlayacak temel bir rehberdir. Ancak, CNC router yapımı karmaşık bir süreç olabilir ve daha fazla ayrıntı ve ince ayar gerektirebilir. Ayrıca, güvenlik önlemlerini ve iş güvenliğini unutmamak önemlidir.
Bu kod, hareket kontrolünü, işleme parametrelerini, limit anahtarlarını ve iş parçası değişimini içerecek şekilde tasarlanmıştır. Bu kodu ihtiyaçlarınıza göre uyarlayabilirsiniz.
#include <AccelStepper.h>
// Adım motorlarının bağlantı pinleri
const int stepPinX = 2;
const int dirPinX = 3;
const int stepPinY = 4;
const int dirPinY = 5;
const int stepPinZ = 6;
const int dirPinZ = 7;
// Adım motorlarının adımlarını ve hızını ayarlayın
const int stepsPerRevolution = 200;
const int motorSpeed = 1000; // Adımlar arası gecikme süresi (microseconds)
// İşleme alanının boyutları
const int xLimit = 100; // X ekseninin maksimum hareketi
const int yLimit = 100; // Y ekseninin maksimum hareketi
const int zLimit = 50; // Z ekseninin maksimum hareketi
AccelStepper stepperX(AccelStepper::DRIVER, stepPinX, dirPinX);
AccelStepper stepperY(AccelStepper::DRIVER, stepPinY, dirPinY);
AccelStepper stepperZ(AccelStepper::DRIVER, stepPinZ, dirPinZ);
void setup() {
// Adım motorlarının hızını ve hız artışını ayarlayın
stepperX.setMaxSpeed(200);
stepperX.setAcceleration(100);
stepperY.setMaxSpeed(200);
stepperY.setAcceleration(100);
stepperZ.setMaxSpeed(100);
stepperZ.setAcceleration(50);
// Seri iletişim hızını ayarlayın (G-kodunu almak için kullanılır)
Serial.begin(9600);
// Limit anahtarlarını girilen limit değerlerine ayarlayın
pinMode(xLimitPin, INPUT_PULLUP);
pinMode(yLimitPin, INPUT_PULLUP);
pinMode(zLimitPin, INPUT_PULLUP);
}
void loop() {
// Seri iletişimden G-kodunu okuyun
if (Serial.available()) {
String gcode = Serial.readStringUntil('\n');
processGCode(gcode);
}
}
void processGCode(String gcode) {
// G-kodu parçalama işlemi
char command = gcode[0];
gcode.remove(0, 1);
float value = gcode.toFloat();
// G-kodu işleme
switch (command) {
case 'X':
moveXAxis(value);
break;
case 'Y':
moveYAxis(value);
break;
case 'Z':
moveZAxis(value);
break;
// Diğer G-kodlarına göre işlemleri burada ekleyin
}
}
void moveXAxis(float position) {
// İşleme alanı sınırlarını kontrol edin
if (position < 0)
position = 0;
else if (position > xLimit)
position = xLimit;
// Adım sayısını hesaplayın
int steps = position * (stepsPerRevolution / xLimit);
// Adım motorunu hareket ettirin
stepperX.moveTo(steps);
stepperX.runToPosition();
}
void moveYAxis(float position) {
// İşleme alanı sınırlarını kontrol edin
if (position < 0)
position = 0;
else if (position > yLimit)
position = yLimit;
// Adım sayısını hesaplayın
int steps = position * (stepsPerRevolution / yLimit);
// Adım motorunu hareket ettirin
stepperY.moveTo(steps);
stepperY.runToPosition();
}
void moveZAxis(float position) {
// İşleme alanı sınırlarını kontrol edin
if (position < 0)
position = 0;
else if (position > zLimit)
position = zLimit;
// Adım sayısını hesaplayın
int steps = position * (stepsPerRevolution / zLimit);
// Adım motorunu hareket ettirin
stepperZ.moveTo(steps);
stepperZ.runToPosition();
}
// Diğer fonksiyonları buraya ekleyin: hız ve besleme hızı ayarlama, iş parçası değişimi, limit anahtarlarının kontrolü vb.