제조공정
이 튜토리얼에서는 깔끔한 올블랙 디자인, 멋진 LED 조명 및 이중 속도 기어박스를 특징으로 하는 3D 프린팅 RC 탱크 또는 무선 조종 추적 차량을 어떻게 제작했는지 보여 드리겠습니다. 맞습니다. 저는 지형이나 사용 용도에 따라 더 낮거나 높은 기어를 선택하여 더 높은 토크나 더 빠른 속도를 얻을 수 있도록 이 탱크용 기어박스를 특별히 설계했습니다.
다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽어보실 수 있습니다.
저를 따라오셨다면 제가 얼마 전에 이미 3D 프린팅 RC 탱크를 제작했다는 사실을 아실 것입니다. 멋지긴 했지만 성능이 약간 부족했습니다. 그래서 이제 이 빌드에서는 각 트랙에 200W DC 모터를 사용하고 있으며 이 기어박스와 결합하여 탱크는 어떤 지형도 정복하거나 번아웃이나 도넛을 즐길 수 있는 충분한 힘을 가지고 있습니다.
즐거운 시간을 보내기 위해 주소 지정이 가능한 LED 스트립을 조명용으로 설치했는데, 이는 놀라운 조명 효과를 만들어내는 무한한 가능성을 제공합니다. 이 비디오에서는 경찰 조명 스트로보 효과를 만들었는데, 특히 밤에 운전할 때 매우 멋집니다.
서스펜션의 경우 탱크는 각 측면에 3개의 코일 스프링과 충격 흡수 장치로 지지되며 각 측면에는 2개의 로드휠이 있습니다. 이를 통해 차량은 트랙과 지형 사이의 양호한 접촉 표면을 유지하면서 고르지 않은 지형에서도 원활하게 주행하고 장애물을 오를 수 있습니다.
물론 모든 것이 3D 프린팅되어 있으며 3D 파일을 다운로드할 수 있으므로 직접 만들 수도 있습니다.
탱크를 제어하기 위해 명령을 보내는 값싼 상용 RC 송신기를 사용하고 있습니다.
탱크에는 명령을 수신하여 마이크로컨트롤러로 보내는 적합한 RC 수신기가 있습니다. 이 플랫폼의 핵심은 Atmega2560 마이크로 컨트롤러 기반 보드이며 모든 것을 쉽게 연결하기 위해 보드 상단에 간단히 부착할 수 있는 맞춤형 PCB를 만들었습니다.
그럼에도 불구하고, 이제 디자인, 3D 프린팅, 전자 부품 조립 및 연결, 마이크로컨트롤러 프로그래밍에 이르기까지 이 RC 탱크를 만드는 전체 과정을 안내해 드리겠습니다.
저는 Onshape를 사용하여 이 탱크를 디자인했습니다.
Onshape는 제가 프로젝트에 사용하는 전문가급 클라우드 네이티브 3D CAD 및 PDM 시스템입니다.
기계 엔지니어와 제품 디자이너는 Onshape를 확인해 보시기 바랍니다. 귀하와 귀하의 회사는 https://Onshape.pro/HowtoMechatronics에서 최대 6개월 동안 무료로 Onshape Professional을 사용할 수 있습니다.
설계를 위한 초기 입력 매개변수는 DC 모터 또는 모터의 크기와 RPM이었습니다. 이 모터는 꽤 부피가 크고 3000RPM을 가지고 있습니다. 이 탱크의 RPM은 너무 높기 때문에 속도를 두 가지 다른 값으로 줄이는 기어박스를 설계했습니다.
이 기어박스는 자동차의 수동 변속기처럼 작동합니다. 손으로 움직이는 대신 서보 모터의 도움으로 움직이는 기어 시프터가 있으며, 두 개의 출력 기어 세트 중 어느 것이 최종 출력으로 사용될지 선택할 수 있습니다.
기어박스 초기 감속비는 1.88:1로 고정되어 있으며, 추가 감속비가 2.76:1인 저단 기어와 1:1 비율로 적용되는 고단 기어를 선택할 수 있습니다. 따라서 저단 기어에서는 총 감속이 5.2, 즉 약 570RPM이고, 고단 기어에서는 1.88, 즉 약 1600RPM입니다.
기어박스가 어떻게 작동하는지 자세한 내용은 나중에 조립할 영상에서 살펴보겠습니다.
탱크 설계를 위한 다음 입력 매개변수는 제가 얻은 RC 충격 흡수 장치였습니다. 확장 시 길이는 70mm이고 이동 거리는 15mm입니다. 저는 로드휠의 수직 이동 거리를 좀 더 늘리고 싶었기 때문에 로드휠을 이 구성으로 배치했고 수직 이동 거리는 22mm가 되었습니다.
게다가 이는 이동 축에 한 쌍의 바퀴가 부착된 보기 시스템이므로 바퀴가 해당 축을 중심으로 회전할 수 있어 추가적인 수직 이동이 가능합니다. 분명히, 그러면 승차감이 더 부드러워지고 트랙과 그 아래 표면 사이의 접촉이 더 좋아질 것입니다.
앞쪽 로드휠을 자세히 살펴보면 앞쪽의 아이들러 휠과 연결되어 트랙의 동적 장력을 제공하는 것을 알 수 있습니다. 앞바퀴가 올라가면 선로 둘레가 작아지면서 장력이 느슨해집니다.
이 설정을 사용하면 그런 일이 발생하면 아이들러 휠이 앞으로 밀려 트랙에 장력이 가해집니다. 이 연결을 사용하면 이 볼트와 거리 너트를 조정하여 트랙을 정적으로 장력을 가할 수도 있습니다.
뒷면에는 세 부분으로 구성된 스프라켓이 있습니다. 샤프트 커플러와 스프라켓 좌우측이 M3 볼트 3개로 모두 연결되어 있습니다.
여기 스프로킷의 주요 치수는 트랙의 피치와 일치해야 하기 때문에 피치입니다. 여기서 피치는 11mm이고 나는 20개의 톱니를 갖는 스프라켓을 선택하여 스프라켓의 피치 직경이 약 69mm가 되도록 했습니다. 스프로킷의 크기에 대한 아이디어는 트랙이 탱크 본체에서 벗어날 수 있을 만큼 충분히 커지는 것이었습니다.
11mm 피치는 실제로 트랙 링크의 디자인에 의해 정의되었습니다. 트랙 링크에 대한 나의 목표는 최대한 컴팩트하고 추가 부품이나 핀 하나만으로 다음 링크에 연결할 수 있으면서도 3D 프린터로 제작할 수 있을 만큼 튼튼하게 만드는 것이었습니다.
게다가 3D 프린팅을 할 때 부품에 서포트 재료를 전혀 사용하지 않으려고 했고, 실제로 이 디자인을 통해 이를 달성할 수 있었습니다.
트랙 링크를 서로 연결하기 위해 직경 2mm의 핀을 사용할 계획이어서 트랙 링크가 자유롭게 회전할 수 있도록 한쪽의 치수를 2.1mm로 꽉 끼워 맞추고 다른 쪽의 치수를 2.4mm로 느슨하게 끼워 맞췄습니다.
스프로킷 톱니는 외부 원통형 모양의 트랙 링크와 맞물립니다. 트랙 링크 실린더의 반경은 4.4mm이고 스프라켓의 반경은 4.9mm로 느슨하게 맞아 제대로 작동합니다.
모든 것이 연결되는 본체는 두 개의 기어박스를 수용할 수 있을 만큼 커야 했고, 물론 전자 장치와 배터리를 위한 공간도 있어야 했습니다. 이 모든 결과로 탱크 전체 크기는 547x397mm가 되었습니다. 일반적인 3D 프린터의 베드보다 상당히 크므로 큰 부분을 두 부분으로 나누어 300mm 베드 3D 프린터에서 프린팅할 수 있도록 했습니다. 220mm 크기의 더 작은 3D 프린터로 인쇄하려면 모델을 4개의 섹션으로 나누어야 합니다. 해당 버전을 3D 파일로도 제공하겠습니다.
탱크를 조립하려면 다양한 M3 및 M4 볼트와 너트는 물론 나사산 인서트와 베어링도 필요합니다. 아래에서 이 프로젝트에 필요한 모든 구성 요소의 전체 목록을 찾을 수 있습니다. 물론 3D 프린팅에 필요한 3D 모델과 STL 파일도 찾을 수 있습니다.
Onshape를 사용하면 웹브라우저에서 직접 이 RC 탱크의 3D 모델을 볼 수 있습니다.
Cults3D에서 이 RC 탱크/로봇 플랫폼의 3D 모델과 3D 프린팅용 STL 파일을 얻을 수 있습니다.
저는 이 탱크의 부품 대부분을 프린팅하는 데 Creality Ender-3 V3 Plus 3D 프린터를 사용했습니다.
3D 프린팅 시 수평 확장 기능을 사용하는 것이 중요합니다. 이제 제가 사용한 새로운 Creality Print 슬라이서에서는 이를 X-Y 윤곽 보정이라고 합니다. 이러한 설정을 기본으로 두면 일반적으로 인쇄된 외부 치수와 구멍이 원본 모델보다 작아서 조립하는 데 문제가 발생할 수 있습니다.
Creality Print 슬라이서에서는 X-Y 윤곽 보정에 –0.07 값을 사용하고 X-Y 구멍 보정 기능에 0.07을 더했습니다. 물론, 어떤 값이 3D 프린터에서 최상의 결과를 얻을 수 있는지 확인하려면 몇 가지 테스트 프린트를 수행해야 합니다.
트랙 링크를 3D 프린팅하는 경우 빌드 플레이트 접착으로 래프트를 사용했습니다. 베드 플레이트와의 베이스 접촉 표면이 약간 작고 프린터의 베드 접착력이 좋지 않으면 잘 붙지 않을 수 있기 때문입니다.
Creality Ender-3 V3 Plus의 빌드 플레이트는 300x300mm이므로 탱크 본체를 두 부분으로 나누어 프린트할 수 있었습니다. 두 섹션으로 나누어도 부품이 여전히 상당히 커서 3D 프린터를 한계까지 밀어붙입니다. 그러나 Creality Ender-3 V3 Plus는 이를 처리했으며 이러한 큰 부품을 프린팅하는 데 훌륭한 성과를 거두었습니다.
대용량, 빠른 3D 프린터를 찾는 분들에게 이 3D 프린터를 추천해 드립니다. 최대 600mm/s의 속도에 도달할 수 있는 CoreXZ 3D 프린터이며 견고한 프레임으로 매우 우수한 인쇄 품질을 제공합니다. 나에게 이 3D 프린터를 제공해준 Creality에 감사 인사를 전합니다.
Creality Ender-3 V3 Plus를 확인하세요 – 미국 매장:https://shrsl.com/4rtkk; EU 매장:http://shrsl.com/4rtkm; 아마존:https://amzn.to/3VjEoRH
여기에 3D 프린팅된 모든 부품이 있으므로 탱크 조립을 시작할 수 있습니다. 솔직히 3D 프린팅이 너무 많아요. 모든 것을 인쇄하는 데는 며칠이 걸리며 시간뿐만 아니라 여러 개의 필라멘트 스풀도 필요합니다.
트랙 링크만 해도 총 214개의 트랙 링크가 있기 때문에 약 500g과 30시간의 3D 프린팅이 필요합니다. 탱크 본체에는 약 1kg의 필라멘트가 필요하며, 여기처럼 두 부분으로 나누면 500g이 필요하며 각 부분마다 약 12~18시간이 소요됩니다. 또한 많은 부품을 지지대와 함께 3D 프린팅해야 하므로 청소에 시간을 좀 투자해야 합니다.
이 RC 탱크 프로젝트를 조립하는 데 필요한 구성 요소 목록은 다음과 같습니다. 전자 부품 목록은 아래 기사의 회로도 섹션에서 확인할 수 있습니다.
공개:제휴 링크입니다. Amazon Associate로서 저는 적격 구매를 통해 수입을 얻습니다.
RC 탱크의 전자 장치를 살펴보고 작동 방식을 설명하겠습니다. 이 RC 탱크의 두뇌는 ATmega2560 마이크로컨트롤러 기반 보드입니다.
아래 링크에서 이 프로젝트에 필요한 구성요소를 얻을 수 있습니다:
공개:제휴 링크입니다. Amazon Associate로서 저는 적격 구매를 통해 수입을 얻습니다.
전자 부품을 체계적으로 정리하기 위해 RC 탱크용 맞춤형 PCB를 설계했습니다. PCB는 ATmega2560 마이크로컨트롤러 기반 보드와 호환되어 그 위에 직접 장착됩니다.
PCBWay에서 PCB를 주문했습니다. 여기에서는 간단히 Gerber 파일을 업로드하고 PCB의 속성을 선택한 후 합리적인 가격으로 주문할 수 있습니다.
파란색으로 선택한 PCB 색상을 제외하고는 기본 속성을 변경하지 않았습니다. PCBWay 프로젝트 공유 커뮤니티에서 Gerber를 찾아 다운로드할 수도 있으며, 이를 통해 PCB를 직접 주문할 수도 있습니다.
이 섹션에서는 모든 것을 연결하고 RC 탱크를 완성하는 방법을 설명하겠습니다.
이 섹션은 아직 준비 중입니다.
이 섹션에서는 RC 탱크 뒤의 Arduino 코드가 어떻게 작동하는지 설명하겠습니다. 여기에서 코드를 다운로드할 수 있습니다:
따라서 IBusBM 라이브러리를 사용하여 RC 송신기에서 들어오는 데이터를 읽습니다.
// Reading the data comming from the RC Transmitter
IBus.loop();
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Gear shifter
ch7 = IBus.readChannel(7); // ch7 - Police light strobe effect
ch8 = IBus.readChannel(8); // ch8 - All white LEDs
ch9 = IBus.readChannel(9); // ch9 - Left and Right white LEDsCode language: JavaScript (javascript) 오른쪽 조이스틱인 채널 0과 1은 탱크의 동작을 제어하는 데 사용되고, 왼쪽 로커 스위치 또는 채널 6은 기어 변속을 위한 서보 제어에 사용되고, 나머지 세 개의 로커 스위치는 LED 제어에 사용됩니다.
들어오는 데이터를 DC 모터의 PWM 제어에 적합한 값(0~255)으로 변환합니다.
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -205, 205); // 0 to 205 range because then I add +50 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -205, 205);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 50 + motorSpeed + steeringValue; // 50 + (0-205) + (0 - 205 ) = 50 - 255 so this range from 50 to 255 is used as PWM value
rightMotorSpeed = 50 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
// if PWM is lower than 52, set PWM value to 0
if (leftMotorSpeed < 52) {
leftMotorSpeed = 0;
}
if (rightMotorSpeed < 52) {
rightMotorSpeed = 0;
}
Code language: JavaScript (javascript) AnalogWrite() 함수를 적절하게 사용하여 드라이버와 모터에 PWM 값을 보냅니다.
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
digitalWrite(M1_RPWM, 0);
analogWrite(M1_LPWM, leftMotorSpeed);
digitalWrite(M2_RPWM, 0);
analogWrite(M2_LPWM, rightMotorSpeed);
}
// if right joystick goes down > move backward
if (ch1 > 1000 && ch1 < 1490) {
analogWrite(M1_RPWM, leftMotorSpeed);
digitalWrite(M1_LPWM, 0);
analogWrite(M2_RPWM, rightMotorSpeed);
digitalWrite(M2_LPWM, 0);
}
// if right joystick is in the middle, don't move
if (ch1 > 1490 && ch1 < 1510) {
if (leftMotorSpeed < 50 && rightMotorSpeed < 50) {
digitalWrite(M1_LPWM, 0);
digitalWrite(M1_RPWM, 0);
digitalWrite(M2_LPWM, 0);
digitalWrite(M2_RPWM, 0);
}
// if right joystick move just left or right, without going up or down, move the tank left or right (in place)
else if (ch0 < 1490 || ch0 > 1510) {
analogWrite(M1_RPWM, rightMotorSpeed);
analogWrite(M1_LPWM, leftMotorSpeed);
analogWrite(M2_RPWM, leftMotorSpeed);
analogWrite(M2_LPWM, rightMotorSpeed);
}
}Code language: JavaScript (javascript) 서보 모터 및 기어 변속의 경우 사용하는 서보에 따라 값을 조정해야 합니다.
//======= Gear shift ====
if (ch6 == 2000) {
myservo.write(140);
}
if (ch6 == 1000) {
myservo.write(40);
}Code language: JavaScript (javascript) 조명 제어는 어떤 로커가 전환되었는지 확인하고 이에 따라 필요에 따라 각 LED를 개별적으로 켜도록 지시합니다.
//===== LIGHTS Control ===
// Front and back lights LEDs control
if (ch9 == 2000) {
frontLeds[0] = CRGB (255, 255, 255);
frontLeds[1] = CRGB (255, 255, 255);
frontLeds[2] = CRGB (255, 255, 255);
frontLeds[3] = CRGB (255, 255, 255);
frontLeds[4] = CRGB (255, 255, 255);
frontLeds[5] = CRGB (0, 0, 0);
frontLeds[6] = CRGB (0, 0, 0);
frontLeds[7] = CRGB (0, 0, 0);
frontLeds[8] = CRGB (0, 0, 0);
frontLeds[9] = CRGB (0, 0, 0);
frontLeds[10] = CRGB (0, 0, 0);
frontLeds[11] = CRGB (255, 255, 255);
frontLeds[12] = CRGB (255, 255, 255);
frontLeds[13] = CRGB (255, 255, 255);
frontLeds[14] = CRGB (255, 255, 255);
frontLeds[15] = CRGB (255, 255, 255);
backLeftLeds[0] = CRGB ( 255, 0, 0);
backLeftLeds[1] = CRGB ( 255, 0, 0);
backLeftLeds[2] = CRGB ( 255, 0, 0);
backRightLeds[0] = CRGB ( 255, 0, 0);
backRightLeds[1] = CRGB ( 255, 0, 0);
backRightLeds[2] = CRGB ( 255, 0, 0);
}
if (ch9 != ch9State) {
if (ch9 == 1000) {
FastLED.clear();
}
ch9State = ch9;
FastLED.show();
}
// Front and back lights LEDs control
if (ch8 == 1500) {
frontLeds[0] = CRGB (255, 255, 255);
frontLeds[1] = CRGB (255, 255, 255);
frontLeds[2] = CRGB (255, 255, 255);
frontLeds[3] = CRGB (255, 255, 255);
frontLeds[4] = CRGB (255, 255, 255);
frontLeds[5] = CRGB (255, 255, 255);
frontLeds[6] = CRGB (255, 255, 255);
frontLeds[7] = CRGB (255, 255, 255);
frontLeds[8] = CRGB (255, 255, 255);
frontLeds[9] = CRGB (255, 255, 255);
frontLeds[10] = CRGB (255, 255, 255);
frontLeds[11] = CRGB (255, 255, 255);
frontLeds[12] = CRGB (255, 255, 255);
frontLeds[13] = CRGB (255, 255, 255);
frontLeds[14] = CRGB (255, 255, 255);
frontLeds[15] = CRGB (255, 255, 255);
backLeftLeds[0] = CRGB ( 255, 0, 0);
backLeftLeds[1] = CRGB ( 255, 0, 0);
backLeftLeds[2] = CRGB ( 255, 0, 0);
backRightLeds[0] = CRGB ( 255, 0, 0);
backRightLeds[1] = CRGB ( 255, 0, 0);
backRightLeds[2] = CRGB ( 255, 0, 0);
}
....and so on...Code language: JavaScript (javascript) 경찰 조명 스트로보 효과를 코딩하는 데 시간이 좀 걸렸지만 정말 멋지게 나왔습니다.
코드를 업로드하면 테스트를 위해 로봇 플랫폼과 RC 송신기의 전원을 켤 수 있습니다. 송신기 디스플레이에서 LiPo 배터리 전압과 수신기 및 송신기 전압을 확인할 수 있습니다.
여기에서 기어 변속이 어떻게 작동하는지 확인할 수도 있습니다. 왼쪽 로커 스위치를 사용하면 모터가 작동하는 동안 기어를 전환할 수 있습니다. 정말 그렇죠.
나머지 3개의 로커 스위치를 사용하여 탱크 조명을 제어합니다. 4가지 모드가 있습니다. 각 측면에 흰색 LED 5개, 두 번째 모드는 모두 흰색 LED가 켜져 있고, 세 번째 모드는 모두 흰색 LED가 깜박이며 물론 가장 멋진 모드인 경찰 조명 스트로브 효과입니다. 탱크는 이러한 조명 모드를 켠 상태에서 이동할 수 있습니다.
하지만 여기에 간단히 메모해 두세요. LED는 LM350 전압 조정기에서 나오는 5V를 통해 전원이 공급되므로 특히 모든 백색 LED 모드를 사용하는 경우 상당히 뜨거워질 수 있습니다. 각 LED는 흰색의 경우 약 50-60mA의 전류를 소비하므로 이는 거의 1A 정도의 전류입니다.
LM350은 최대 3A의 전류를 처리할 수 있지만 이를 위해서는 적절한 냉각 장치가 필요합니다. 적절한 방열판을 추가할 수 없도록 맞춤형 PCB의 잘못된 위치에 배치했습니다. 그래도 스테퍼 드라이버에서 작은 방열판을 추가해 보았습니다.
약간의 도움이 되지만 모든 흰색 LED가 오랫동안 켜져 있으면 전압 조정기가 과열될 수 있습니다. 하지만 다른 모드에서는 모두 괜찮기 때문에 그대로 두었습니다. 이 문제를 해결하려면 정격 전류가 8A인 별도의 벅 컨버터를 추가할 수 있습니다. 이 벅 컨버터는 12V 출력 터미널에서 전원을 공급받을 수 있으며, 우리가 설정한 5V 또는 6V 출력은 PCB의 6V 터미널로 갈 수 있으며 6V 레일을 사용하여 LED에 전원을 공급할 수 있습니다.
그럼에도 불구하고, 이 영상을 즐기고 새로운 것을 배웠기를 바랍니다. RC 탱크를 조립하고 운전하며 즐거운 시간을 보내세요. 앞서 언급했듯이 향후 비디오에서는 이 탱크를 일부 업그레이드할 계획입니다. 그 위에 로봇 팔을 추가할 수도 있고, 제설기 같은 것을 만들 수도 있습니다. 그러니 계속 지켜봐 주시기 바랍니다.
제조공정
보철 증강의 과학은 수년에 걸쳐 발전하여 절단 환자에게 계속해서 필요한 힘과 희망을 주었습니다. 시간이 지남에 따라 우리는 단순한 플라스틱 팔다리에서 로봇 공학 구현에 가까워졌습니다. 이제 탄소 섬유 의수가 팔다리를 잃은 사람들의 삶을 훨씬 더 쉽게 만들어 줄 것입니다. 수년에 걸쳐 연구는 보철물을 더 쉽게 접근할 수 있고 더 가볍게 만들기 위해 노력했으며 해가 갈수록 더 좋아지고 있습니다. 이것이 탄소 섬유가 의수를 만들기 위한 최고의 의수 재료인 이유입니다. 탄소 섬유를 좋은 재료로 만드는 것은 무엇입니까? 음, 여기에서 더
창고 로봇은 창고 관리의 중추이자 미래입니다. 이 가이드는 창고 자동화 단계를 안내합니다. 2025년까지 400만 개 이상의 상업용 로봇이 50,000개 이상의 창고에 설치될 것이며, 이는 2018년의 4,000개 미만의 로봇 창고에서 증가한 것입니다. - ABI 리서치 창고 로봇은 창고 주변의 재고 이동을 자동화할 수 있는 스마트 기계입니다. 최소한의 인적 지원을 사용하여 더 나은 워크플로를 만들고 있습니다. 창고의 초기 자동화는 제한된 환경에서 무거운 물건을 옮기는 데 중점을 두었습니다. 그러나 지난 수십 년 동안 로