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

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

부품 및 소모품

부품 수량 비고
스테퍼 모터 28BYJ-48 + 드라이버 모듈 ULN2003 1
아두이노 우노(UNO) 1
서보 모터 타워프로 MG955 1
I2C 시리얼 LCD 1602 모듈 1
스텝다운 모듈 (벅 컨버터) 1
오픈빌드 NEMA 17 스테퍼 모터 1

필요 도구 및 장비

앱 및 온라인 서비스

프로젝트 소개

도입

로봇팔의 다양한 능력을 찾아보다 우연히 이 프로젝트 아이디어가 떠올랐습니다. 자동 용접 및 납땜 로봇팔 분야를 다루는 프로젝트가 드물다는 걸 알았습니다.

이전에도 비슷한 프로젝트 제작 경험이 있지만, 이번에는 매우 유용하고 효과적인 결과물이 나왔습니다.

형태를 정하기 전 산업 분야 애플리케이션과 다른 프로젝트들, 특히 오픈소스 프로젝트들을 많이 참고했습니다. 이는 우리 뇌의 시각적 피드백 처리 방식 때문입니다.

1단계: 설계

처음엔 전문적인 프로젝트들을 많이 봤지만 구현하기엔 너무 복잡했습니다.

그래서 다른 프로젝트들에서 영감받아 나만의 제품을 설계하기로 하고 구글 스케치업 2017 프로(Google SketchUp 2017 Pro)를 사용했습니다. 각 부품은 다음 사진과 같이 특정 순서로 조립되도록 설계했습니다.

조립 전 부품들을 테스트하고 적합한 납땜 인두를 고르기 위해 실물 크기 가상 완성도를 그려 가이드로 삼았습니다.

이 도면들은 실제 완성품의 실물 크기 형상과 각 부품의 정확한 치수를 보여주며 납땜 인두 선택에 도움을 줍니다.

2단계: 작동 및 설치

작업 중 마주한 장애물들을 공유합니다.

1. 팔이 너무 무거워 소형 스테퍼 모터로 지탱 못 함. 다음 버전/레이저 커팅 출력에서 수정.

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

2. 플라스틱 재질이라 회전 베이스 마찰이 커서 움직임이 매끄럽지 않음.

첫 해결책: 더 큰 스테퍼 모터 구입해 무게와 마찰 견디게 하고 베이스를 재설계해 큰 모터 장착.

문제 여전. 더 큰 모터도 해결 못 함. 플라스틱 간 마찰 때문이고, 포트(포트? pot=포텐셔미터?)를 퍼센트로 조절 못 함. 최대 회전 위치가 드라이버 최대 전류와 일치하지 않음. 제조사 권장 방식(전압 측정하며 포트 조절) 써야 함.

결국 베이스 설계를 완전히 바꿔 기어 메커니즘 대신 금속 기어 서보 모터 장착.

3. 전압 문제

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

아두이노 보드는 DC 파워 잭(7~12V), USB 커넥터(5V), 보드 VIN 핀(7~12V)으로 전원 공급 가능. 5V나 3.3V 핀으로 공급하면 레귤레이터 우회돼 위험. PC나 파워 서플라이에서 5V 지원하는 특수 USB 케이블 구매 결정.

스테퍼 모터 등 부품이 5V로만 잘 동작해 부품 보호를 위해 스텝다운 모듈(벅 컨버터) 장착. 입력 전압을 낮춰 출력(부하) 측에 안정적으로 공급하며 전압 안정성도 유지.

3단계: 수정

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드
자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

수정 후 팔 길이 줄이고 서보 모터 기어용 적절한 구멍 뚫어 설계 변경.

서보 모터가 높은 토크로 무게 180도 회전 성공. 토크가 높으면 무거운 부하 처리 가능. 서보메커니즘 출력 토크는 공급 전압, 축 속도 등 설계 요인에 달림.

I2C 사용하니 핀 2개만 써서 좋음. 같은 두 핀에 여러 I2C 장치 연결 가능. 예: LCD 백팩+LCD 8개까지 두 핀으로 제어 가능. 단점: '하드웨어' I2C 핀 써야 함.

4단계: 납땜 인두 홀더/그리퍼

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

금속 기어 서보 모터로 납땜 인두 무게 지탱하는 그리퍼 고정.


servo.attach(9, 1000, 2000);
servo.write(constrain(angle, 10, 160));

처음엔 모터 떨림/진동 문제 있었는데 제약 각도 주는 트릭 코드로 해결.

모든 서보가 풀 180도 회전하는 건 아님.

기계적 한계 확인용 테스트 작성. servo.writeMicroseconds 써서 1000~2000 베이스 레인지로 제어 (많은 서보가 600~2400까지 지원). 여러 값 시험해 버징(윙윙거림) 발생 지점 = 한계 찾음. 그 한계 안에서만 제어. servo.attach(pin, min, max)로 한계 설정 가능. 실제 동작 범위 찾아 코드가 엔드스톱 넘게 밀지 않게 constrain() 함수 활용.

5단계: 코딩

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드
자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

아두이노 라이브러리 환경으로 스케치 기능 확장 가능. 라이브러리는 하드웨어 제어, 데이터 조작 등 추가 기능 제공. 스케치에서 라이브러리 사용하려면:


#include 
#include 
#include 
#include 
#include 

코드

X Y Z 스테퍼 코드 (Arduino)
#include "AccelStepper.h"
// AccelStepper 설정
AccelStepper stepperX(1, 2, 3); // 1 = Easy Driver 인터페이스
// 우노 핀 2 → Easy Driver STEP 핀
// 우노 핀 3 → Easy Driver DIR 핀
AccelStepper stepperZ(1, 5, 6); // 1 = Easy Driver 인터페이스
// 우노 핀 5 → Easy Driver STEP 핀
// 우노 핀 6 → Easy Driver DIR 핀
AccelStepper stepperY(7, 8, 9); // 1 = Easy Driver 인터페이스
// 우노 핀 5 → Easy Driver STEP 핀 (주석 오타: 실제 7,8,9 핀)
// 우노 핀 6 → Easy Driver DIR 핀

// 스테퍼 이동 변수
long TravelX; // 시리얼 모니터 입력 X값 저장
long TravelZ; // 시리얼 모니터 입력 Z값 저장
long TravelY; // 시리얼 모니터 입력 Y값 저장
int move_finished = 1; // 이동 완료 체크용

void setup() {
  Serial.begin(9600);
  // 시작 시 시리얼 모니터 안내 출력
  Serial.println("Enter Travel distance seperated by a comma: X,Z ");
  Serial.print("Enter Move Values Now: ");
  // 각 스테퍼 최대 속도/가속도 설정
  stepperX.setMaxSpeed(500.0);  // X축 최대 속도
  stepperX.setAcceleration(500.0); // X축 가속도
  stepperZ.setMaxSpeed(250.0);  // Z축 최대 속도 (회전용이라 느리게)
  stepperZ.setAcceleration(250.0); // Z축 가속도
  stepperY.setMaxSpeed(250.0);  // Y축 최대 속도 (회전용이라 느리게)
  stepperY.setAcceleration(250.0); // Y축 가속도
}

void loop() {
  while (Serial.available() > 0) { // 시리얼 버퍼에 값 있으면
    move_finished = 0; // 이동 체크 변수 리셋
    TravelX = Serial.parseInt(); // 버퍼 첫 숫자 → TravelX
    Serial.print(TravelX);
    Serial.print(" X Travel , ");
    TravelZ = Serial.parseInt(); // 두 번째 숫자 → TravelZ
    Serial.print(TravelZ);
    Serial.print(" Z Travel , ");
    TravelY = Serial.parseInt(); // 세 번째 숫자 → TravelY
    Serial.print(TravelY);
    Serial.println(" Y Travel ");
    stepperX.moveTo(TravelX); // X 스테퍼 목표 위치 설정
    stepperZ.moveTo(TravelZ); // Z 스테퍼 목표 위치 설정
    stepperY.moveTo(TravelY); // Y 스테퍼 목표 위치 설정
    delay(1000); // 1초 대기 후 이동 시작
    Serial.print("Moving Steppers into position...");
  }
  // 스테퍼들이 목표 위치 도달했는지 체크
  if ((stepperX.distanceToGo() != 0) || (stepperZ.distanceToGo() != 0) || (stepperY.distanceToGo() != 0)) {
    stepperX.run(); // X 스테퍼 이동
    stepperZ.run(); // Z 스테퍼 이동
    stepperY.run(); // Y 스테퍼 이동
  }
  // 이동 완료 시 시리얼 모니터에 메시지 출력
  if ((move_finished == 0) && (stepperX.distanceToGo() == 0) && (stepperZ.distanceToGo() == 0) && (stepperY.distanceToGo() == 0)) {
    Serial.println("COMPLETED!");
    Serial.println("");
    Serial.println("Enter Next Move Values (0,0,0 for reset): ");
    move_finished = 1; // 이동 변수 리셋
  }
}

회로도

자동 납땜 로봇팔: 정밀도, 속도, DIY 제작 가이드

제조공정

  1. Makerarm: 메이커를 위한 올인원 데스크톱 로봇 팔
  2. 첨단 로봇 시스템을 위한 정밀 모터 제어 엔지니어링
  3. Infineon, 통합 Arm Cortex-M0 탑재 IMC300 모터 컨트롤러로 유연성 강화
  4. Trinamic과 Maxim Integrated, 산업용 로봇 엔드이펙터 개발 가속화 레퍼런스 디자인 공개
  5. 로봇 암(Robot Arm) 구조와 작동 원리 – 설계부터 조립까지
  6. 산업용 로봇 암이 제조업을 혁신하는 9가지 핵심 이점
  7. 로봇 팔용 서보 모터: 작동 원리, 장점 및 미래 전망
  8. ABB FlexLoader 셀로 머신 텐딩 자동화, 효율성 증대와 비용 절감
  9. SCARA 로봇 시장, 2026년까지 147.8억 달러로 성장해 자동화 성장 견인
  10. 산업용 로봇 팔: 제조 혁신을 이끄는 핵심 기술