산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY Arduino SCARA 로봇으로 레이저 조각

<메인 클래스="사이트 메인" id="메인">

이 튜토리얼에서는 이전 비디오 중 하나에서 제작한 DIY 3D Printed SCARA 로봇 팔을 레이저 조각기로 변환하는 방법을 보여 드리겠습니다. 동영상 다음 동영상을 보거나 아래 기사를 읽을 수 있습니다.

프로젝트 개요

SCARA 로봇은 4개의 NEMA 17 스테퍼 모터로 구동되고 Arduino 보드를 사용하여 제어되는 4개의 자유도를 가지고 있습니다. 원본 비디오에서는 Arduino UNO 보드를 CNC Shield와 조합하여 사용했지만 이제는 Arduino MEGA 보드와 RAMP 보드를 함께 사용합니다. 로봇을 제어하기 위해 Marlin 3D 프린터 펌웨어를 사용할 것이기 때문에 이 조합이 필요합니다.

기계 부품의 경우 그리퍼 메커니즘을 레이저 모듈로 변경하기만 하면 되었습니다. 이 경우에는 조각하기에 충분한 5.5W 레이저 모듈을 사용하고 있습니다.

이 SCARA 로봇 설정으로 얻을 수 있는 멋진 기능은 Z축 이동 범위가 더 넓어서 더 큰 물체를 레이저로 조각할 수 있다는 것입니다.

또한 로봇의 작은 설치 공간을 고려하면 작업 영역이 상당히 인상적입니다. 앞은 물론 양 옆으로도 활용이 가능합니다. 실제로 로봇 주변의 거의 전체 360도를 작업 영역으로 사용하도록 설정할 수 있습니다. 레이저 조각 및 SCARA 로봇 설정 옵션이 있는 오픈 소스 Marling 3D 프린터 펌웨어 덕분에 그렇게 할 수 있습니다.

G 코드를 생성하기 위해 저는 또 다른 오픈 소스 소프트웨어인 Inkscape와 Inkscape-Lasertools라는 플러그인을 사용하고 있습니다. 동일한 벡터 이미지에서 윤곽선만 있는 G 코드 또는 윤곽선 및 채우기를 생성할 수 있으며 레이저 빔 조정, 이동 속도, 채우기 속도, 주변 속도, 레이저 켜기 및 끄기 명령과 같은 다양한 옵션이 있습니다. 레이저 등.

그럼에도 불구하고 이제 레이저 조각기로 작동하도록 SCARA 로봇을 설정하는 전체 프로세스를 안내하겠습니다. 이 SCARA 로봇의 디자인, 기계에 따라 Marlin 펌웨어를 설치 및 구성하는 방법, 조각을 위해 도면 및 G 코드를 준비하는 방법을 살펴보겠습니다. 자, 시작하겠습니다.

디자인 및 3D 모델

다음은 이 SCARA 로봇의 3D 모델을 간략히 살펴보고 내가 어떻게 제작했는지 자세히 설명하는 원본 튜토리얼을 보지 않은 경우 작동 방식을 확인할 수 있습니다.

로봇은 대부분의 부품을 쉽게 3D 프린팅할 수 있도록 설계되었습니다. 조인트는 NEMA 17 스테퍼 모터에 의해 구동되며 GT2 벨트와 적절한 3D 인쇄 GT2 풀리의 도움으로 속도가 감소됩니다. 로봇의 자유도는 4도이지만 이 경우 작업 영역의 임의 지점에 도달하기 위해 2번 회전하고 레이저 높이를 조정하기 위해 1번 직선 운동만 있으면 3자유도만 있으면 됩니다.

엔드 이펙터를 회전시키는 네 번째 조인트는 사용되지 않지만 레이저 모듈이 부착됩니다. 레이저 빔이 4번째 축의 회전 중심에 오도록 레이저 홀더를 만들어 축이 회전해도 최종 위치에 영향을 미치지 않도록 했습니다.

이 3D 모델을 찾아 다운로드할 수 있을 뿐만 아니라 Thangs의 브라우저에서 탐색할 수 있습니다.

Thangs에서 어셈블리 3D 모델을 다운로드합니다.

이 튜토리얼을 지원해 주셔서 감사합니다.

3D 인쇄용 STL 파일:

후원


이 비디오의 후원자이기도 한 Makers용 3DEXPERIENCE SOLIDWORKS를 사용하여 이 SCARA 로봇을 설계했습니다. 네, 잘 들었습니다. 3DEXPERIENCE SOLIDWORKS for Makers를 통해 SOLIDWORKS는 마침내 업계 최고의 설계 도구를 모든 종류의 제조업체에게 매우 저렴한 가격으로 제공합니다.

이제 제작자는 연간 $99에 최고의 SOLIDWORKS 설계 도구에 액세스할 수 있지만 MY 뷰어를 위해 SOLIDWORKS는 이러한 도구를 훨씬 더 저렴하게 사용할 수 있는 기간 한정 제안을 제공합니다!

좋아요. 이 비디오를 시청하는 분들은 지금 바로 이 번들을 구할 수 있습니다. 여기에는 클라우드 연결 버전의 SOLIDWORKS와 3D Creator 및 3D Sculptor와 같은 브라우저 기반 설계 도구가 포함되어 있으며 재고 소진 시까지 특별 20% 할인된 가격으로 제공됩니다!

다음 링크를 클릭하고 무료 3DEXPERIENCE ID를 생성하기만 하면 이 특별한 20% 할인 혜택에 액세스할 수 있으므로 오늘 최고의 제품을 만들 수 있습니다. 이와 같은 교육 콘텐츠를 후원하고 지원한 SOLIDWORKS에 큰 감사를 드립니다.

제조업체용 SOLIDWORKS 확인

제조업체용 SOLIDWORKS 20% 할인


레이저 모듈 설치

먼저 4개의 볼트로 고정되어 있는 로봇에서 그리퍼 메커니즘을 제거했습니다.

그리퍼 서보를 제어하는 ​​데 사용되는 와이어는 이제 레이저 모듈을 제어하는 ​​데 사용됩니다.

내가 가지고 있는 특정 레이저 모듈은 12V에서 작동하며 접지와 VCC라는 두 개의 와이어로 PWM 신호를 사용하여 제어할 수 있습니다. 레이저를 연결하기 위해 3핀이 있는 모듈과 함께 제공되는 커넥터를 사용했습니다. 왼쪽 검은색 선은 접지이고 가운데는 제 경우 흰색 선이 VCC입니다. 엔드 이펙터용 와이어에 쉽게 연결할 수 있도록 두 개의 수 점퍼 와이어 커넥터를 이 와이어에 납땜했습니다.

그런 다음 커넥터를 제자리에 놓고 홀더의 구멍 중 하나를 통해 와이어를 통과시킨 다음 두 개의 M3 볼트로 레이저 모듈을 고정했습니다. 4개의 M4 볼트를 사용하여 레이저 모듈을 로봇에 고정했습니다.

다음으로 앞서 말씀드린 것처럼 원본 영상에서 로봇을 제어하기 위해 사용했던 아두이노 UNO 보드 대신 이제 아두이노 MEGA 보드와 RAMPS 보드와의 조합이 필요합니다.

여기서 먼저 드라이버의 단계 해상도를 선택해야 합니다. 물론 더 부드러운 동작을 위해 각 스테퍼 드라이버에 대해 3개의 점퍼를 추가하여 가능한 가장 높은 해상도를 선택해야 합니다. 저는 16단계 해상도의 A4988 스테퍼 드라이버를 사용하고 있지만 1/32 단계 해상도의 DRV8825 스테퍼 드라이버도 사용할 수 있습니다.

그런 다음 모든 전선을 제자리에 연결할 수 있습니다. 전선을 엉망으로 만들지 않도록 모든 전선에 표시를 해 두었습니다.

SCARA 로봇 레이저 조각기 회로도

다음은 모든 것이 어떻게 연결되어야 하는지에 대한 회로도입니다.

스테퍼 모터는 드라이버 바로 위에 있으며 일반적으로 두 개의 와이어로 닫혀 있는 리미트 스위치는 각 축의 엔드 스톱 S 및 – 핀에 있습니다.

레이저 모듈을 제어하기 위해 3D 프린터 설정에서 팬을 제어하는 ​​데 사용되는 핀 D9를 사용합니다. 이 핀은 PWM이 가능하므로 레이저의 강도를 제어할 수 있습니다. 모든 것에 전원을 공급하려면 최소 3A의 전류 속도를 갖는 12V 전원 공급 장치가 필요합니다.

아래 링크에서 이 프로젝트에 필요한 구성 요소를 얻을 수 있습니다.

기계 부품은 원문을 확인하실 수 있습니다.

설명대로 모든 것을 연결한 후에는 전선을 약간 짜내고 전자 제품을 덮어 모든 것이 멋지고 깨끗해 보이도록 했습니다.

조립 완료

SCARA 로봇이 제대로 작동하도록 변경해야 하는 것이 한 가지 더 있습니다. 두 번째 암 제한 스위치가 트리거되는 시점을 변경하는 것입니다. SCARA 로봇은 오른손잡이로 작동하도록 설정되므로 두 번째 팔의 원점 복귀는 왼쪽으로 회전할 수 있는 동안 0도 또는 첫 번째 팔과 일직선이 되어야 합니다. 이를 위해 설명된 위치에서 리미트 스위치를 트리거하도록 암 조인트에 작은 조각을 간단히 붙였습니다.

사실, 변경해야 할 작은 세부 사항이 하나 더 있습니다. 원래 리미트 스위치 트리거가 암 바닥에 있는 너트 중 하나를 방해하여 암이 전체 동작에 도달할 수 없었습니다.

간단히 너트를 제거하고 나사산 인서트로 교체하여 부품을 제자리에 고정할 때 튀어나오지 않도록 했습니다.

그리고 그게 다야. SCARA 로봇은 이제 레이저 조각기로 작동할 준비가 되었지만 물론 먼저 Arduino 보드에 펌웨어를 설치해야 합니다.

참조:스마트폰 제어 기능이 있는 DIY Arduino 로봇 암

SCARA 로봇을 사용한 레이저 조각용 말린 펌웨어

내가 말했듯이, 나는 레이저 조각 및 SCARA 로봇 설정에 대한 옵션도 있는 3D 프린터용으로 가장 널리 사용되는 오픈 소스 펌웨어 중 하나인 Marlin 펌웨어를 사용할 것입니다. Marlin 펌웨어는 공식 웹사이트나 Github.com에서 다운로드할 수 있습니다.

Arduino MEGA 보드에 Marlin 펌웨어를 설치하기 위해 Arduino IDE 대신 PlatformIO IDE를 사용합니다. Marlin 펌웨어는 크고 복잡하기 때문에 Arduino IDE에서 때때로 오류가 발생하여 컴파일하지 못할 수 있습니다.

PlarformIO는 Visual Studio Code 편집기를 기반으로 하며 확장으로 설치할 수 있습니다. 즉, 먼저 Visual Studio Code를 설치한 다음 확장 관리자에서 PlatformIO를 검색하여 설치해야 합니다.

설치가 완료되면 프로젝트 열기 버튼을 클릭하고 다운로드하여 압축을 푼 Marlin 폴더로 이동한 다음 "Open Marlin"을 클릭합니다.

이렇게 하면 모든 말린 파일이 편집기에 로드되어 파일을 열고 편집할 수 있습니다. 기계 설정에 따라 모든 조정을 수행하는 두 개의 주요 파일은 Configuration.h 및 Configuration_adv.h 파일입니다.

사실, Marlin 폴더를 열기 전에 먼저 Github.com의 Configuration 리포지토리로 이동해야 합니다. 여기에서 우리에게 적합한 사전 테스트된 구성 파일을 다운로드할 수 있습니다. "Examples" 폴더에서 "SCERA" 폴더로 이동하여 이 두 구성 파일을 복사하여 Marlin 폴더에 붙여넣어야 합니다.

참조: GRBL 설정 방법 & Arduino로 CNC 기계 제어

Marlin 펌웨어 구성

따라서 "SCARA" 구성 파일이 있는 Marlin 폴더를 다시 열면 Configuration.h 파일을 열고 시스템에 따라 일부 매개변수를 편집할 수 있습니다. 여기서 가장 먼저 할 일은 보유하고 있는 SCARA 로봇의 유형을 선택하는 것입니다.

/**
 * MORGAN_SCARA was developed by QHARLEY in South Africa in 2012-2013.
 * Implemented and slightly reworked by JCERNY in June, 2014.
 */
//#define MORGAN_SCARA

/**
 * Mostly Printed SCARA is an open source design by Tyler Williams. See:
 *   https://www.thingiverse.com/thing:2487048
 *   https://www.thingiverse.com/thing:1241491
 */
#define MP_SCARA

#if EITHER(MORGAN_SCARA, MP_SCARA)
  // If movement is choppy try lowering this value
  #define SCARA_SEGMENTS_PER_SECOND 100

  // Length of inner and outer support arms. Measure arm lengths precisely.
  #define SCARA_LINKAGE_1  228.15  // Arm 1 lenght - 228(mm)
  #define SCARA_LINKAGE_2 136.2    // Arm 2 lenght - 136.5(mm)

  // SCARA tower offset (position of Tower relative to bed zero position)
  // This needs to be reasonably accurate as it defines the printbed position in the SCARA space.
  #define SCARA_OFFSET_X    300       // (mm)
  #define SCARA_OFFSET_Y    150       // (mm)Code language: Arduino (arduino)

"MORGAN_SCARA"는 병렬 SCARA 로봇용이고 "MP_SCARA"는 직렬 SCARA 로봇용입니다. 이것은 일반 데카르트 시스템에 대해 생성된 G 코드에 역기구학을 구현하는 Tyler Williams의 오픈 소스 설계를 기반으로 합니다.

이전 튜토리얼에서 역운동학이란 무엇이며 이 SCARA 로봇과 ​​어떻게 작동하는지 이미 설명했으므로 자세한 내용은 해당 튜토리얼을 확인하십시오. 간단히 말해서, 역운동학을 사용하여 주어진 X, Y 좌표에 도달하기 위해 두 팔이 어떤 각도로 위치해야 하는지 계산합니다. 역기구학 이면의 수학은 삼각법을 기반으로 하며 결과는 두 팔의 길이에만 의존합니다.

즉, 여기에 로봇 팔의 길이를 입력해야 합니다. 이 경우 첫 번째 팔의 경우 228mm, 두 번째 팔의 경우 136.5mm입니다. 우리가 설정해야 하는 다음 매개변수는 작업대의 영점 위치입니다. 이 값은 SCERA_OFFSET_X, Y 값으로 입력되며, 타워 또는 첫 번째 조인트에서 베드 제로 위치까지의 상대적인 거리입니다.

기계에 따라 조정해야 하는 매개변수 세트가 하나 더 있습니다. X와 Y 모두에 대한 MANUAL_X_HOME_POS입니다. 이 값은 로봇팔 엔드 이펙터 또는 레이저가 홈 위치에 있을 때의 X 및 Y 거리입니다. 이전에 설정한 베드 제로 위치로 이동합니다. 이 값을 얻기 위해 SCARA 로봇의 두 팔을 나타내는 두 개의 선을 사용하여 SOLIDWORKS에서 간단한 스케치를 만들었습니다.

여기에서 원하는 베드 제로 위치를 설정하고 MANUAL_X_HOME_POS 변수에 대한 값을 얻을 수 있습니다.

다음으로 엔드스톱 커넥터를 정의해야 합니다. 우리의 경우 최소 위치에 있는 각 축에 대해 하나의 엔드스톱이 있습니다.

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUGCode language: Arduino (arduino)

그 외에도 X_HOME_DIR을 원점 복귀 시 엔드스톱의 방향을 나타내는 -1로 정의해야 합니다.

// Direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1]
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1Code language: Arduino (arduino)

여기에서 모든 __MIN_ENDSTOP_INVERTING 변수가 "FALSE"로 설정되어 있는지 확인해야 합니다.

그런 다음 DEFAULT_AXIS_STEPS_PER_UNIT 값을 시스템과 일치하도록 조정해야 합니다.

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 177.7777777, 142.2222222, 400, 93 }Code language: Arduino (arduino)

이 값은 모터가 한 단위 이동하기 위해 프로그램이 스테퍼 드라이버에 몇 단계를 보내야 하는지를 나타내며, 이 경우에는 조인트가 1도 회전합니다. 내 SCARA 로봇에 대해 이 값을 계산한 방법은 다음과 같습니다.

NEMA 17 스테퍼 모터는 전체 회전을 위해 200단계를 수행하지만 16단계 분해능을 사용하고 있으므로 모터가 완전히 360도 회전하려면 3200단계를 드라이버에 보내야 합니다. 그 외에도 첫 번째 관절의 경우 20:1 속도 감소가 있으므로 전체 회전을 위해서는 64000단계가 필요합니다. 이 값을 360으로 나누면 177.777이라는 숫자를 얻게 됩니다. 이는 실제로 프로그램이 관절을 1단위 또는 1도 회전시키기 위해 운전자에게 전송해야 하는 단계 수입니다.

두 번째 암에는 16:1 속도 감소가 있으므로 값은 142.222입니다. Z축의 경우 8mm 피치의 리드 나사가 있습니다. 즉, 모터를 한 번 완전히 회전하면 8mm 선형 모니터링이 발생합니다. 여기서 1단위는 1mm이므로 3200개의 단계를 8로 나누어야 하므로 Z축이 1단위 또는 1mm 이동하는 데 필요한 단계 수인 400이라는 값을 얻습니다. 여기서 네 번째 값은 압출기 스테퍼용이지만 여기에는 압출기가 없기 때문에 변경할 필요가 없습니다.

스테퍼 모터 방향은 와이어를 연결한 방식에 따라 다릅니다. 잘못된 경우 INVERT_X_DIR 변수를 TRUE로 설정하여 여기에서 와이어를 반대로 하거나 소프트웨어에서 변경할 수 있습니다.

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR falseCode language: Arduino (arduino)

이 말린 펌웨어가 작동하도록 하려면 몇 가지 더 변경해야 합니다. Marlin은 주로 고전 데카르트 스타일 프린터용 펌웨어이기 때문에 SCARA 모드는 이 프로젝트를 만들 당시 아직 해결되지 않은 몇 가지 작은 버그가 있습니다. 다음은 작동하도록 하기 위해 수행한 변경 사항입니다.

scara.cpp의 75행에서 MORGAN_SCARA를 MP_SCARA로 대체했습니다. motion.cpp에서 1716과 1717 행에 주석을 달고 cofiguration.h에서 VALIDATE_HOMING_ENDSTOPS를 주석 처리하고 configuration_adv.h에서 QUICK_HOME 주석을 제거해야 했습니다.

사실, 이러한 변경에도 불구하고 원점 복귀는 여전히 100% 제대로 작동하지 않았지만 작동하게 하는 데 사용한 해결 방법을 설명하겠습니다.

그럼에도 불구하고 이제 편집기의 왼쪽 하단에 있는 업로드 버튼을 클릭할 수 있으며 Marlin 펌웨어가 Arduino 보드에 설치됩니다. 아래에서 이 SCARA 로봇과 ​​함께 작동하도록 만든 모든 변경 사항이 포함된 이 특정 Marlin 펌웨어를 다운로드하거나 Github.com에서 원본 Marlin 펌웨어를 다운로드하고 제가 설명한 대로 직접 모든 변경을 수행할 수 있습니다.

제어 소프트웨어 – Rapetier-host

좋습니다. Marlin 펌웨어가 설치되면 이제 로봇을 제어하고 로봇에 G 코드를 보내기 위한 컴퓨터 프로그램이 필요합니다. 많은 옵션이 있지만 인기 있는 3D 인쇄 소프트웨어인 Rapetier-host를 사용하기로 결정했습니다. 이 소프트웨어를 무료로 다운로드하여 사용할 수 있습니다. 설치가 완료되면 구성> 프린터 설정으로 이동하여 여기에서 여러 가지를 조정할 수 있습니다.

Arduino가 연결된 COM 포트를 선택하고 Marlin 펌웨어에서 설정한 Baud Rate를 선택해야 합니다. 프린터 모양 탭에서 X 및 Y 최대 값과 프린터 영역을 설정해야 합니다.

이러한 설정을 적용한 후 연결 버튼을 클릭하면 소프트웨어가 SCARA 로봇에 연결되어야 합니다. 그런 다음 수동 제어 탭으로 이동하여 여기에서 프린터를 이동해 봅니다.

X 또는 Y 화살표를 누르면 로봇이 바로 역기구학을 구현하므로 이상하게 동작할 수 있으며 화살표 하나만 눌러도 두 팔을 모두 움직일 것입니다.

그럼에도 불구하고 로봇을 작동시키려면 먼저 로봇을 집으로 돌려놓아야 합니다. 홈 버튼을 클릭하기 전에 관절을 수동으로 리미트 스위치에 더 가깝게 가져와야 합니다.

홈 버튼을 클릭하면 로봇이 리미트 스위치를 향해 움직이기 시작해야 합니다. 실제로 두 번째 암은 리미트 스위치 쪽으로 움직이기 시작하고 첫 번째 암은 반대 방향으로 움직여야 합니다. 두 번째 암 또는 Y축이 리미트 스위치에 도달하면 첫 번째 암 또는 X축도 리미트 스위치를 향해 움직이기 시작합니다. X 리미트 스위치에 도달하면 로봇은 Z 리미트 스위치로 이동합니다.

따라서 원점 복귀가 완료된 후 조각을 시작하거나 로봇을 작업 영역 주위로 수동으로 이동할 수 있어야 합니다. 그러나 우리가 즉시 무언가를 하려고 하면 어떤 이유로 로봇이 오작동을 하고 이상한 움직임을 할 것입니다. 이 이상한 동작을 피하려면 원점 복귀 후에 로봇을 소프트웨어에서 분리했다가 다시 연결하기만 하면 됩니다. .

이제 수동으로 이동하거나 조각할 수 있으며 로봇이 제대로 작동합니다. 이것은 아마도 Marlin 펌웨어의 버그일 것입니다. 이 펌웨어의 SCARA 모드는 별로 관심이 없어 잘 지원되지 않기 때문에 있는 것입니다.

그럼에도 불구하고 G 코드 명령 G00 X0 Y0을 보내면 로봇은 Marlin Configuration.h 파일에서 설정한 0 위치로 이동해야 합니다.

그런 다음 M106 S10 명령을 보내 레이저를 활성화할 수 있습니다. S 뒤에 있는 값은 0에서 255 사이일 수 있으며 실제로는 0에서 100% 사이의 레이저 전력의 PWM 제어입니다. 그래서 여기에서 S10 값을 사용하여 아무 것도 태우지 않지만 볼 수 있으므로 0 위치를 보고 레이저의 초점도 조정할 수 있습니다.

초점은 하단에 있는 레이저 렌즈를 회전시켜 수동으로 조정할 수 있으며 동시에 렌즈와 작업물 사이의 거리에 따라 달라집니다. 약 5cm의 거리를 설정하고 가능한 한 작은 점이 나올 때까지 초점을 조정하는 것이 좋습니다.

SCARA 로봇을 사용한 레이저 조각 

기계를 캘리브레이션하려면 먼저 제대로 작동하는지 확인할 수 있도록 간단한 사각형 모양을 조각하는 것부터 시작하는 것이 좋습니다.

첫 번째 시도에서 정사각형 모양이 올바른 위치와 방향이 아니었고 MANUAL_X_HOME_POS 변수에 잘못된 값을 설정했기 때문입니다. 수정하고 나니 정사각형 모양이 거의 비슷하게 나왔네요.

그래서 저는 로고의 G 코드를 로드하고 로봇이 새기도록 설정합니다.

솔직히 말해서, 레이저 조각사로 일하는 이 SCARA 로봇을 보는 것은 너무 멋지지만 우리는 레이저 안전 고글을 사용해야 합니다는 점에 유의하세요. 그것은 매우 위험하기 때문에 레이저의 자외선으로부터 우리의 눈을 보호합니다. 또한 안전 마스크를 사용해야 합니다. 레이저 조각 중에 생성되는 연기도 건강에 위험하므로 열린 공간이나 환기가 잘되는 방에서 작업하십시오.

그래도 로고 각인은 잘 나왔는데 완전 정사각형은 아닌 걸 알았습니다.

그래서 문제의 원인을 찾기 위해 간단한 정사각형 모양을 조각하는 방법으로 돌아갔습니다. 나는 문제가 팔의 길이에 대한 치수에 있다는 것을 깨달았습니다. 로봇은 그렇게 단단하지 않기 때문에 팔을 뻗을 때 팔 자체의 무게로 인해 로봇이 약간 앞으로 기울게 됩니다. 이로 인해 팔의 실제 치수 또는 위치가 약간 벗어납니다.

수십 번의 테스트를 거친 끝에 첫 번째 팔의 길이 값을 228에서 228.15mm로, 두 번째 팔의 길이 값을 136.5에서 136.2mm로 조정했습니다. 이것은 나에게 가장 정확한 결과를 주었고 이제 정사각형 모양이 맞았습니다. 그러나 인쇄 위치에 따라 암이 완전히 확장되었는지 여부는 여전히 정확도가 다를 수 있습니다.

레이저 조각을 위한 G 코드 생성

마지막으로 도면을 준비하고 레이저 조각을 위해 G 코드를 생성한 방법을 보여 드리겠습니다. 오픈 소스 벡터 그래픽 소프트웨어인 Inkscape를 사용했습니다.

여기에서 먼저 페이지 크기를 작업 영역의 크기로 설정해야 합니다. 예를 들어 레이저 조각을 위해 Arduino 로고를 준비한 방법을 보여 드리겠습니다.

Arduino 로고 이미지를 다운로드하여 Inkscape로 가져왔습니다. Trace Bitmap 기능을 사용하여 먼저 이미지를 벡터 형식으로 변환해야 합니다. 벡터 모양에서만 G 코드를 생성할 수 있으며 이를 위해 Inkscape-Lasertools라는 플러그인을 사용했습니다. Github.com에서 이 플러그인을 다운로드할 수 있으며 zip 파일에서 파일을 복사하고 Inkscape 확장 디렉토리에 붙여넣어 설치할 수 있습니다.

따라서 플러그인을 설치했으면 Extensions>Lasertools로 이동하여 플러그인을 열고 G 코드를 생성하는 데 사용할 수 있습니다. 이 플러그인으로 설정하고 조정할 수 있는 몇 가지 옵션이 있습니다. 팬을 제어하는 ​​데 사용되는 D9 핀에 레이저를 연결했으므로 M106 명령을 보내 레이저를 활성화할 수 있습니다.

G 코드에 모양의 윤곽만 포함할지 아니면 닫힌 루프의 채우기도 포함할지 여부를 선택할 수 있습니다. 레이저 이동 속도, 레이저 주입 속도 및 주변 속도를 설정할 수 있습니다.

인필을 선택할 때 인필 영역의 레이저 강도를 낮추려면 M106 명령에 PWM 값을 추가하여 레이저 강도를 설정할 수 있습니다(예:50% 레이저 출력의 경우 M106 S128). 레이저 출력을 100%로 유지하지만 충전 영역에서 이동 속도를 증가시키면 유사한 효과를 얻을 수 있습니다. 따라서 이러한 설정은 실제로 우리에게 가장 적합한 설정을 확인하기 위해 사용하는 설정입니다.

기본 설정 탭에서 "작은 채우기 경로 제거"를 선택하고 경계 상자 탭에서 "경계 상자 미리보기를 위한 G 코드 생성"을 선택할 수 있습니다. 이 기능은 드로잉이 수행될 영역의 미리보기 G 코드를 생성하고 작업 조각을 정확하게 배치할 수 있기 때문에 매우 유용합니다.

자, 일단 G 코드를 생성하면 Repetier-Host 프로그램에서 로드할 수 있습니다. 이것은 3D 프린팅이 아니라 여행 동작일 뿐이므로 G 코드를 미리 보려면 "여행 동작 표시" 확인란을 선택해야 합니다.

마지막으로 "인쇄" 버튼을 클릭하면 SCARA 로봇이 작업물을 레이저로 조각합니다. 이미 말했듯이 이 SCARA 로봇 레이저 조각을 보는 것은 매우 만족스럽고 우리는 그것으로 많은 것을 레이저 조각할 수 있습니다.

좋은 기능은 조정 가능한 Z축이 있다는 것입니다. 이는 예를 들어 Forstner 비트용 나무 상자와 같이 더 큰 물체를 레이저로 조각할 수 있음을 의미합니다. 앞면에는 제 로고를, 뒷면에는 "Forstner bits"라는 문구를 새겼습니다.

다음은 동일한 벡터 모양(이 경우에는 배트맨 실루엣)을 조각한 예입니다. 윤곽만 있고 닫힌 루프에 채우기가 있습니다.

물론 Infill로 조각하면 작업을 완료하는 데 필요한 시간이 훨씬 길어지지만 최종 모양도 훨씬 좋습니다.

마지막으로 이 SCARA 로봇으로 600x450mm 면적의 이 거대한 그림을 어떻게 새겼는지 보여드리겠습니다.

로봇을 작업물 위에 올려놓고 전면과 측면에 닿을 수 있도록 했습니다. 작업물과 로봇이 중간에 평행이 되도록 수동으로 조정했습니다.

Marlin 펌웨어에서 제로 위치를 로봇에서 X 방향으로 300mm, Y 방향으로 150mm 떨어진 공작물의 왼쪽 하단 모서리로 설정했습니다. 이러한 값을 정의할 때 기호에 유의해야 합니다. 이에 따라 MANUAL_X 및 Y_HOME_POS 변수도 변경했습니다.

이 새 값으로 펌웨어를 업로드한 후 앞에서 설명한 대로 로봇을 홈으로 이동하고 레이저를 0 위치로 보냅니다. 그런 다음 필요한 작업 가격 방향을 추가로 조정할 수 있도록 레이저를 활성화했습니다.

직선을 그리는 G01 명령을 보내면 작업물을 확인하고 위치를 적절하게 조정할 수 있습니다.

이제 이 조각을 위한 G 코드를 준비하기 위해 Inscape에서 이 작업 조각과 로봇의 구성으로 템플릿을 만들었습니다. 여기에서 로봇이 레이저로 도달할 수 있는 위치를 확인하고 그에 따라 도면을 수정할 수 있습니다.

그림은 Trace Bitmap 도구를 사용하여 이미지를 다운로드하고 벡터 이미지로 변환했습니다.

그런 다음 원하는 대로 이미지의 크기를 조정하고 위치를 지정하고 Erase 도구를 사용하여 로봇이 있는 영역과 로봇이 도달할 수 없는 영역을 삭제했습니다.

Then I generated the G-code let the machine do its job. It took 4 hours to laser engrave this drawing.

Once it finished, I wanted to fill the empty area where the robot was. For that purpose, I reposition the robot and the work piece, as well as changed the Marlin parameters so that the new work area of the robot is this empty space on the work piece.

Overall, this method requires some work for setting it up, but still it works great. I really like how this engraving turned out.

Wrap up

To wrap up, although there were some problems with the firmware, I managed to find workarounds to them get this SCARA robot working as laser engraver. If we take a closer look to the engraving, we can see that it’s far from perfect.

The robot is not that rigid and has some backlash, and therefore we cannot get precise and smooth movements. However, the things we learned in this tutorial can be implemented in any SCARA robot so you can definitely get better results.

이 튜토리얼을 즐기고 새로운 것을 배웠기를 바랍니다. 아래 댓글 섹션에서 언제든지 질문하고 내 Arduino 프로젝트 컬렉션을 확인하세요.


제조공정

  1. Arduino로 DIY 가장 간단한 IV9 Numitron 시계
  2. 서보 모터로 로봇을 피하는 장애물
  3. Arduino 및 Android 기기로 Roomba 로봇 제어
  4. Arduino 및 Nokia 5110 디스플레이가 있는 DIY 전압계
  5. MobBob:Android 스마트폰으로 제어되는 DIY Arduino 로봇
  6. 로터리 인코더가 있는 DIY 간단한 측정 휠
  7. 샤프 GP2Y1010AU0F 센서가 있는 DIY 공기질 모니터
  8. WS2812 LED 스트립이 있는 DIY Arduino 1D 탁구 게임
  9. DIY Arduino 로봇 팔 – 손 제스처로 제어
  10. Android 앱으로 Arduino 로봇 팔 제어