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

자동 납땜 로봇 팔

구성품 및 소모품

스테퍼 모터 28BYJ-48(드라이버 모듈 ULN2003 포함)
× 1
Arduino UNO
× 1
서보 모터 TowerPro MG955
× 1
I2C 직렬 LCD 1602 모듈
× 1
스텝다운 모듈
× 1
OpenBuilds NEMA 17 스테퍼 모터
× 1

필요한 도구 및 기계

레이저 커터(일반)
Dremel용 회전식 공구 커팅 비트 키트 세트

앱 및 온라인 서비스

Arduino IDE
Microsoft Visual Studio 2015

이 프로젝트 정보

소개

이 프로젝트의 아이디어는 로봇 팔의 다양한 기능을 검색하던 중에 우연히 떠올랐고, 이 사용 영역(자동 용접 및 납땜 로봇 팔)을 다루는 몇 사람이 있다는 것을 알게 되었습니다.

사실 예전에 비슷한 프로젝트를 만든 경험이 있었는데 이번에는 매우 유용하고 효과적이었습니다.

모양을 결정하기 전에 특히 산업 분야에서 많은 응용 프로그램 및 기타 프로젝트를 보았고 오픈 소스 프로젝트는 적절하고 적합한 모양을 찾는 데 많은 도움이 되었습니다.

그 이유는 우리 두뇌에 시각적 영양을 공급하는 과학이 뒷받침되기 때문입니다.

1단계:디자인

처음에는 복잡해서 구현할 수 없는 전문적인 프로젝트를 많이 보았습니다.

그런 다음 다른 프로젝트에서 영감을 받아 나만의 제품을 만들어 보기로 결정하여 Google Sketch up 2017 pro를 사용했습니다. 각 부품은 다음 그림과 같이 특정 순서로 서로 나란히 조립되도록 설계되었습니다.

그리고 조립하기 전에 부품을 테스트하고 적절한 납땜 인두를 선택해야 했습니다. 이 작업은 가이드로 가상 마무리 프로젝트를 그려서 이루어집니다.

이 그림은 실제 마감 실물 크기 모양과 올바른 납땜 인두를 선택하기 위한 각 부품의 정확한 치수를 보여줍니다.

2단계:운영 및 설치

작업하는 동안 나는 그것에 대해 발표해야 하는 몇 가지 장애물에 직면했습니다.

1. 팔이 너무 무거워서 작은 스테퍼 모터로 잡을 수 없었고 다음 버전이나 레이저 컷 프린트에서 수정했습니다.

2. 모델이 플라스틱 재질로 되어 있어서 회전하는 베이스의 마찰이 크고 움직임이 매끄럽지 못했어요.

첫 번째 해결책은 무게와 마찰을 견딜 수 있는 더 큰 스테퍼 모터를 구입하는 것이었고 우리는 더 큰 스테퍼 모터에 맞도록 베이스를 재설계했습니다.

사실 문제의 스틸과 더 큰 모터는 그것을 고칠 수 없었고, 그것은 우리 옆에 있는 두 개의 플라스틱 표면 사이의 마찰로 냄비를 퍼센트로 조정할 수 없었기 때문입니다. 최대 회전 위치는 드라이버가 제공할 수 있는 최대 전류가 아닙니다. 냄비를 돌리면서 전압을 측정하는 제조업체에서 표시한 기술을 사용해야 합니다.

그런 다음 기본 디자인을 완전히 변경하고 기어 메커니즘에 금속 기어가 있는 서보 모터를 배치했습니다.

3. 전압

Arduino 보드는 DC 전원 잭(7~12V), USB 커넥터(5V) 또는 보드의 VIN 핀(7~12V)에서 전원을 공급받을 수 있습니다. 5V 또는 3.3V 핀을 통해 전압을 공급하면 레귤레이터를 우회하므로 PC 또는 모든 전원 공급 장치에서 5V를 지원하는 특수 USB 케이블을 구입하기로 결정했습니다.

그래서 스테퍼 모터 및 기타 구성 요소는 5볼트로만 제대로 작동하고 부품을 모든 문제로부터 보호하기 위해 스텝 다운 모듈을 수정합니다.

스텝다운 모듈은 벅 컨버터(step-down converter)로 입력(공급)에서 출력(부하)으로 전압(전류를 높이는 동안)을 낮추고 안정성을 유지하는 DC-DC 전력 변환기입니다. 또는 전압.

3단계:수정

약간의 수정 후에 우리는 암 크기를 줄이고 그림과 같이 서보 모터 기어에 적합한 구멍을 만들어 모델의 디자인을 변경했습니다.

그리고 서보 모터를 테스트하는 동안 높은 토크는 메커니즘이 더 무거운 하중을 처리할 수 있음을 의미하기 때문에 추를 올바르게 180도 회전하는 데 성공했습니다. 서보 메커니즘이 출력할 수 있는 회전력은 공급 전압, 샤프트 속도 등의 설계 요소에 따라 다릅니다.

또한 I2c를 사용하는 것은 두 개의 핀만 사용하기 때문에 좋았고 동일한 두 개의 핀에 여러 개의 i2c 장치를 넣을 수 있습니다. 예를 들어 최대 8개의 LCD 백팩+LCD를 2개의 핀에 모두 가질 수 있습니다! 나쁜 소식은 '하드웨어' i2c 핀을 사용해야 한다는 것입니다.

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

그리퍼는 납땜 인두의 무게를 지탱하기 위해 금속 기어 서보 모터를 사용하여 고정되었습니다.

servo.attach(9, 1000, 2000);servo.write (제약(각도, 10, 160)); 

처음에 우리는 천사를 구속하는 까다로운 코드를 찾을 때까지 모터가 흔들리고 진동하는 장애물이 있었습니다.

모든 서보가 완전히 180도 회전하는 것은 아니기 때문입니다. 그렇지 않은 경우가 많습니다.

그래서 우리는 기계적 한계가 어디인지 결정하기 위한 테스트를 작성했습니다. 1000-2000을 기본 범위로 사용할 수 있기 때문에 이 방식이 더 좋습니다. 그리고 많은 서보가 600에서 2400 사이의 범위를 벗어나서 지원할 것입니다.

그래서 우리는 다른 값을 시도했고 한계에 도달했다는 버즈를 어디서 얻었는지 확인했습니다. 그런 다음 글을 쓸 때만 그 범위 내에서 유지하십시오. Servo.attach(pin, min, max)

를 사용할 때 이러한 제한을 설정할 수 있습니다.

실제 이동 범위를 찾고 코드가 끝점을 지나도록 밀어 넣지 않도록 하십시오. 제약 조건() Arduino 기능이 이에 유용합니다.

5단계:코딩

Arduino를 사용하는 라이브러리 환경은 대부분의 프로그래밍 플랫폼과 마찬가지로 라이브러리를 사용하여 확장할 수 있습니다. 라이브러리는 스케치에 사용할 수 있는 추가 기능을 제공합니다. 하드웨어 작업 또는 데이터 조작. 스케치에서 라이브러리를 사용하려면.

#include AccelStepper.h#include MultiStepper.h#include Servo.h#include Wire.h #include LiquidCrystal_I2C.h 

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 스테퍼 X Y Z 코드
  • 스테퍼 X Y Z 코드Arduino
    #include "AccelStepper.h" // AccelStepper SetupAccelStepper stepperX(1, 2, 3); // 1 =Easy Driver 인터페이스 // Easy Driver의 STEP 핀에 연결된 UNO 핀 2 // Easy Driver AccelStepper의 DIR 핀에 연결된 UNO 핀 3 stepperZ(1, 5, 6); // 1 =Easy Driver 인터페이스 // Easy Driver의 STEP 핀에 연결된 UNO 핀 5 // Easy DriverAccelStepper의 DIR 핀에 연결된 UNO 핀 6 stepperY(7, 8, 9); // 1 =Easy Driver 인터페이스 // Easy Driver의 STEP 핀에 연결된 UNO 핀 5 // Easy Driver의 DIR 핀에 연결된 UNO 핀 6 // 스테퍼 트래블 Variableslong TravelX; // Serial Monitorlong TravelZ에 입력된 X 값을 저장하는 데 사용됨; // Serial Monitorlong TravelY에 입력된 Z 값을 저장하는 데 사용됨; // Serial Monitor에 입력된 Y값을 저장하기 위해 사용됨 move_finished=1; // 이동이 완료되었는지 확인하기 위해 사용void setup() { Serial.begin(9600); // 9600 Bauds의 속도로 직렬 모니터를 시작합니다. // 시작 시 직렬 모니터에 지침을 출력합니다. Serial.println("Enter Travel distance를 쉼표로 구분하여 입력:X,Z "); Serial.print("지금 이동 값 입력:");// 각 스테퍼의 최대 속도 및 가속도 설정 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) { // Serial Buffer에 값이 있는지 확인 move_finished=0; // 스테퍼 이동 확인을 위한 변수 설정 TravelX=Serial.parseInt(); // 버퍼의 첫 번째 숫자 값을 TravelX 변수에 넣습니다. Serial.print(TravelX); Serial.print(" X 여행 , "); TravelZ=Serial.parseInt(); // 버퍼의 두 번째 숫자 값을 TravelZ 변수에 넣습니다. Serial.print(TravelZ); Serial.print(" Z 여행 , "); TravelY=Serial.parseInt(); // 버퍼의 두 번째 숫자 값을 TravelY 변수에 넣습니다. Serial.print(TravelY); Serial.println(" Y 여행 "); stepperX.moveTo(TravelX); // X Stepper의 새로운 이동 위치 설정 stepperZ.moveTo(TravelZ); // Z Stepper의 새로운 이동 위치 설정 stepperY.moveTo(TravelY); // Z Stepper의 새로운 이동 위치 설정 delay(1000); // 스테퍼를 이동하기 전에 1초를 기다립니다. Serial.print("Moving Steppers into position..."); }// 스테퍼가 원하는 위치에 도달했는지 확인 if ((stepperX.distanceToGo() !=0) || (stepperZ.distanceToGo() !=0) || (stepperY.distanceToGo() !=0)) { stepperX .운영(); // Stepper X를 위치로 이동합니다. stepperZ.run(); // 스테퍼 Z를 위치로 이동합니다. stepperY.run(); // Stepper y를 위치로 이동 }// 이동이 완료되면 직렬 모니터에 메시지 표시 if ((move_finished ==0) &&(stepperX.distanceToGo() ==0) &&(stepperZ.distanceToGo() ==0) &&(stepperY.distanceToGo() ==0)) { Serial.println("완료!"); Serial.println(""); Serial.println("다음 이동 값을 입력하십시오(재설정의 경우 0,0,0):"); // 새로운 시리얼 모니터 값 준비 move_finished=1; // 이동 ​​변수 재설정 }}

    회로도


    제조공정

    1. Makerarm:제작자를 위한 초대형 로봇 팔
    2. 로봇 시스템용 모터 제어 설계
    3. 모터 컨트롤러는 Arm Cortex-M0 코어를 통합합니다.
    4. 산업용 로봇 모터 제어를 단순화하는 레퍼런스 디자인
    5. 로봇 팔:어떻게 만들어지나요?
    6. 제조 분야의 로봇 팔과 그 이점
    7. 로봇 암용 서보 모터:어떻게 될까요?
    8. 자동화된 부품 관리를 가능하게 하는 로봇 셀
    9. 로봇 팔 시장은 2026년까지 147억 8000만 달러로 성장할 것입니다.
    10. 산업용 로봇 팔 - 제조 붐