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

DIY Arduino 기반 RC 호버크라프트

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

이 튜토리얼에서는 Arduino 기반 RC Hovercraft를 구축하는 방법을 배웁니다. 프로펠러를 포함한 호버크라프트 부품의 설계 및 3D 프린팅부터 전자 부품 연결 및 Arduino 프로그래밍까지 전체 제작 과정을 보여드리겠습니다.

다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.

개요

호버크라프트를 제어하기 위해 이전 비디오 중 하나에서 만든 DIY Arduino 기반 RC 송신기를 사용했습니다. 오른쪽 조이스틱은 스러스트 모터 후면에 러더를 위치시키기 위한 서보 모터를 제어하기 위해 설정하고, 전위차계 중 하나는 실제로 브러시리스 DC 모터에 부착된 리프트 프로펠러를 제어하기 위해 설정하고, 왼쪽 조이스틱을 제어하기 위해 설정합니다. 추진력. 이제 이 RC 호버크라프트를 만드는 데 무엇이 필요한지 살펴보겠습니다.

호버크라프트 3D 모델

우선 3D 모델링 소프트웨어를 사용하여 호버크라프트를 설계했습니다.

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

Thangs에서 어셈블리 3D 모델을 다운로드하십시오.

3D 인쇄용 STL 파일:

호버크라프트 작동 원리

호버크라프트의 기본 작동 원리는 항공기가 공기 쿠션에 의해 들어 올려지는 것입니다. 중앙 프로펠러가 공예품 아래로 공기를 불어넣어 부드러운 소재로 만든 스커트를 부풀립니다.

스커트의 기압이 충분히 높으면 크래프트가 들어 올려집니다. 지속적으로 공급되는 공기는 크래프트 중앙, 스커트와 지면 사이에서 빠져나가 추가 양력을 생성하고 호버크라프트와 지면 사이의 마찰을 줄입니다.

들어 올려지면 두 번째 프로펠러를 사용하여 호버크라프트를 앞으로 움직이는 추력이 생성됩니다.

추력 프로펠러의 뒷면에는 호버크라프트를 조종하는 데 사용되는 단순한 방향타 세트가 있습니다.

3D 프린팅

그래도 디자인이 끝나면 부품을 3D 프린팅하기 시작했습니다.

호버크래프트의 선체는 인쇄할 가장 큰 부분이며 30x30cm의 인쇄 베드가 있는 Creality CR-10 3D 프린터에 맞도록 특별히 설계했습니다.

이 3D 프린터를 확인하고 싶은 경우를 위해 여기 링크가 있습니다.

인쇄가 끝나면 청소를 할 차례입니다. 호버크라프트 본체 또는 조종석은 인쇄하는 데 약 18시간이 소요되는 가장 긴 인쇄물이었습니다. 곡선형 디자인이라 하나의 인화를 하고 싶었기 때문에 이번 판화에는 지지재가 많이 사용되었습니다.

그러나 그것을 제거하는 것은 정말 쉬웠고 최종 조각은 완벽하게 밝혀졌습니다. 호버크라프트의 선체는 거꾸로 인쇄되었으며 제거해야 할 지지 재료가 아주 적었습니다. 사실, 이 인쇄물을 약간 조정하고 중앙 송풍기 하우징에서 일부 재료를 잘라서 스커트 홀더가 제대로 들어갈 수 있도록 해야 했습니다.

이미 3D 모델을 업데이트했으므로 이 문제가 발생하지 않습니다.

동그란 부분이 좀 거칠어서 간단한 종이를 사용하여 매끄럽게 다듬었습니다.

프로펠러는 청소할 필요가 없었고 3D 프린터에서 바로 나오는 대로 아주 잘 작동했습니다.

호버크라프트 페인팅

좋아, 다음 단계는 3D 인쇄된 부품을 페인팅하는 것입니다. 저는 프라이머를 사용하지 않고 아크릴 물감을 스프레이 형태로 직접 발랐습니다.

첫 코트는 초코 브로우 컬러를 사용했어요. 실제로는 장식 부품에 불과한 작은 부품의 경우 밝은 갈색을 사용했습니다.

호버크라프트를 좀 더 시원하게 보이게 하기 위해 첫 번째 코트가 마르면 부품에 두 가지 색상을 계속 추가했습니다. 이를 위해 간단한 종이에 임의의 패턴을 몇 개 만들고 이를 사용하여 다양한 색상의 줄무늬와 반점을 만들었습니다. 이를 위해 밝은 갈색과 검은색을 사용했습니다.

Arduino RC 호버크라프트 조립

부품이 어떻게 나오는지 너무 좋아서 부품이 마르면 계속 조립했습니다.

방향타를 제어하는 ​​서보 모터를 스러스트 블로어 하우징에 설치하는 것으로 시작했습니다. 두 개의 M2 볼트와 너트를 사용하여 서보를 고정했습니다.

다음은 브러시리스 모터입니다. 제가 가지고 있는 특정 모델은 직경 28mm, 길이 30mm인 D2830이며, 물론 하우징은 이 모터에 맞게 특별히 설계되었습니다.

여기에 모터를 삽입할 때 먼저 개구부를 통해 전선을 통과시켜야 했습니다. 조금 빡빡하지만 여전히 통과 할 수 있습니다. 그런 다음 뒷면에서 M3 볼트를 사용하여 모터를 하우징에 고정했습니다.

다음으로 스러스트 하우징을 호버크라프트 본체와 합칠 수 있습니다. 이 부분에는 서보와 BLDC 모터 배선이 통과할 수 있도록 구멍이 뚫려 있습니다.

4개의 M3볼트를 이용하여 단단히 고정시켰습니다.

작업이 끝나면 두 번째 브러시리스 모터를 호버크라프트의 선체에 계속 설치했습니다. 여기서도 같은 방법을 사용했습니다. 먼저 구멍에 전선을 통과시킨 다음 뒷면에 M3 볼트 4개를 사용하여 모터를 고정했습니다.

회로도

다음은 전자 제품입니다. 전자 부품은 선체와 호버크라프트 본체 사이에 배치됩니다. 하지만 그 전에 회로도를 살펴보고 모든 것이 어떻게 연결되어야 하는지 알아보겠습니다.

그래서 이 호버크라프트의 두뇌는 아두이노 보드입니다. Arduino를 사용하면 두 개의 전자 속도 컨트롤러 또는 ESC를 사용하여 두 개의 브러시리스 모터와 서보를 쉽게 제어할 수 있습니다. BLDC 모터에 전원을 공급하기 위해 약 11V를 제공하는 3S Li-Po 배터리를 사용하고 Arduino에 전원을 공급하기 위해 ESC가 배터리 제거기 회로 기능을 통해 제공하는 조절된 5V를 사용할 수 있습니다.

무선 통신을 위해 증폭 안테나와 함께 사용하면 열린 공간에서 최대 700미터의 안정적인 범위를 가질 수 있는 NRF24L01 트랜시버 모듈을 사용할 것입니다. 호버크라프트를 제어하는 ​​데 사용할 RC 송신기는 이전 자습서 중 하나에서 맞춤 제작한 것이므로 자세한 내용이 필요한 경우 확인할 수 있습니다. NRF24l01 모듈에 대한 자세한 자습서와 Arduino를 사용하여 브러시리스 모터를 사용하는 방법도 있습니다. 그럼에도 불구하고 기본 작동 원리는 송신기가 조이스틱 또는 전위차계 데이터를 브러시리스 모터의 속도와 서보의 위치를 ​​제어하는 ​​수신기로 보내는 것입니다.

이 회로도에는 배터리 모니터가 하나 더 있습니다. 나는 배터리에 직접 연결된 두 개의 저항으로 만든 간단한 전압 분배기를 추가했으며 그 출력은 Arduino의 아날로그 입력으로 이동합니다. 전압 분배기는 11볼트를 약 4볼트로 떨어뜨리면 5V Arduino 핀에서 허용됩니다. 이를 통해 배터리 전압을 모니터링하고, 예를 들어 배터리 전압이 11볼트 아래로 떨어질 때 LED가 켜지도록 설정할 수 있습니다.

아래 링크에서 이 Arduino 튜토리얼에 필요한 구성요소를 얻을 수 있습니다.

그래서 설명대로 구성 요소를 연결하기 시작했습니다. 두 개의 ESC를 단일 배터리에 연결하기 위해 병렬 배터리 커넥터 스플리터인 XT60을 사용했습니다.

프로젝트에 전원 스위치를 추가하기 위해 다른 XT60 커넥터를 사용했습니다. 이 커넥터에서 하나의 와이어를 자르고 거기에 토글 스위치를 납땜했습니다. 따라서 한쪽은 Y 스플리터 케이블에 연결되고 다른 한쪽은 배터리에 연결됩니다.

다음으로 ESC를 본체에 배치하고 본체와 호버크라프트 선체 사이에 가두었습니다. 그런 다음 4개의 M3 볼트를 사용하여 두 부품을 함께 고정했습니다. 그런 다음 본체의 상단 개구부에서 배터리를 조종석 영역에 삽입했습니다.

다음으로 구성 요소를 Arduino에 연결해야 하며 이를 위해 GND 및 5V 핀 역할을 할 두 개의 핀 헤더를 Arduino에 추가했습니다.

그래서 아두이노에 모든 것을 연결하고 NRF24L01 안테나, 표시등 LED, 전원 스위치를 조종석 상단 커버를 통해 통과시켰습니다.

그런 다음 조종석에 모든 것을 짜넣기만 하면 됩니다. 아두이노 UNO를 사용해서 여기가 좀 빡빡했는데 아마 아두이노와 아두이노 나노를 사용했어야 했을 것 같아요.

그러나 나는 모든 것을 맞출 수 있었고 덮개에 작은 장식 부품을 붙인 다음 조종석 본체에 클리핑했습니다.

스티어링 시스템을 계속 설치했습니다. 먼저 M2 볼트와 너트를 사용하여 서보 혼에 작은 링크를 연결했습니다. 그런 다음 첫 번째 방향타를 제자리에 삽입하고 방향타가 주위에서 회전할 수 있도록 몸체를 통과하는 2mm 금속 와이어를 사용하여 스러스트 하우징에 고정했습니다. 같은 방법으로 두 번째 방향타를 부착했습니다.

이 방향타에는 추가 슬롯이 있어 이전에 삽입한 서보 링크에 연결할 수 있습니다. 다시, 나는 그들을 고정하기 위해 M2 볼트와 너트를 사용했습니다. 그리고 마지막으로 다른 링크를 사용하여 두 개의 러더를 서로 연결하여 조향 시스템이 완성되었습니다.

다음으로 호버크라프트 측면에 이 작은 장식 부품을 부착합니다. 드릴을 사용하여 구멍을 만든 다음 단일 나사를 사용하여 부품을 선체에 고정했습니다. 이 부품들을 양쪽에 배치했는데 호버크라프트의 전체적인 모습에 상당히 잘 맞는 것 같아요.

자, 다음으로 이 호버크라프트용 스커트를 계속 만들었습니다. 여기에서 스커트 홀더 주위에 구멍이 있다는 것을 알 수 있습니다. 이것은 선체에 부착하기 위한 것입니다.

너트를 끼울 수 있는 슬롯도 있으며, 그렇게 하면 M3 볼트를 사용하여 스커트 홀더를 선체에 쉽게 고정할 수 있습니다. 너트를 모두 제자리에 고정한 후에는 간단한 쓰레기통 비닐 봉지를 사용하여 스커트를 계속 만들었습니다.

그래서 먼저 홀더 중간 부분에 AC 풀을 바르고 비닐 봉지에 붙였습니다. 그런 다음 홀더의 둘레를 약 6cm로 오프셋합니다. 여러 지점에 표시한 다음 연결했습니다.

만능 칼을 사용하여 비닐 봉지를 적당한 크기로 자릅니다. 그런 다음 스커트를 뒤집고 이전에 AC 접착제를 사용하여 접착했던 가방에 홀더를 추가했습니다.

다음으로 가방 외부를 홀더 상단에 접착해야 합니다. 다시 말하지만, 나는 그 목적을 위해 AC 접착제를 사용하고 그것에 비닐 봉지를 조심스럽게 고정했습니다.

이 작업이 끝나면 스커트가 어떻게 생겼는지 보여줍니다.

<그림 클래스="aligncenter">

다음으로, 나는 볼트가 통과해야 할 비닐 봉지에 구멍을 만들었습니다. 스커트 홀더는 호버크라프트 선체보다 1mm 작기 때문에 비닐 봉지와 함께 사용하면 선체에 완벽하게 맞습니다. 스커트를 선체에 고정하기 위해 전체 둘레에 M3 볼트를 고정하기만 하면 됩니다.

치마에 할 일이 한 가지 더 있는데, 바로 비닐 봉지의 중앙 부분을 잘라내는 것입니다.

따라서 이 절반의 공기가 치마를 직접 부풀린 다음 이 구멍을 통해 밖으로 빠져나가 중간에 추가 기포를 만듭니다.

마지막으로 브러시리스 모터에 프로펠러를 부착하는 일만 남았습니다. 이를 위해 브러시리스 모터와 함께 제공되는 콜릿을 사용하고 있습니다. 프로펠러를 모터 샤프트에 고정하는 정말 간단하고 효과적인 방법입니다.

그러나 다른 모터의 콜릿을 잃어버렸기 때문에 모터 샤프트(3.15mm)에 직접 맞도록 다른 버전의 프로펠러를 인쇄해야 했습니다. 실제로 인쇄가 꽤 잘 나왔고 접착제를 사용하지 않고도 모터에 완벽하게 고정되고 고정되었습니다.

그게 다야, 우리의 무선 조종 호버크라프트가 마침내 완성되었습니다.

하지만 이 비디오에 남은 것은 Arduino 코드와 프로그램이 어떻게 작동하는지 살펴보는 것입니다.

Arduino RC 호버크라프트 코드

이 DIY Arduino 기반 RC Hovercraft 프로젝트의 코드는 다음과 같습니다.

/*
         Arduino based RC Hovercraft
   == Receiver Code - ESC and Servo Control =
  by Dejan, www.HowToMechatronics.com
  Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

#define led 10

RF24 radio(8, 9);   // nRF24L01 (CE, CSN)
const byte address[6] = "00001";
unsigned long lastReceiveTime = 0;
unsigned long currentTime = 0;

Servo esc1;  // create servo object to control the ESC
Servo esc2;
Servo servo1;

int esc1Value, esc2Value, servo1Value;
// Max size of this struct is 32 bytes - NRF24L01 buffer limit
struct Data_Package {
  byte j1PotX;
  byte j1PotY;
  byte j1Button;
  byte j2PotX;
  byte j2PotY;
  byte j2Button;
  byte pot1;
  byte pot2;
  byte tSwitch1;
  byte tSwitch2;
  byte button1;
  byte button2;
  byte button3;
  byte button4;
};
Data_Package data; //Create a variable with the above structure
void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_LOW);
  radio.startListening(); //  Set the module as receiver
  resetData();
  esc1.attach(7);
  esc2.attach(6);
  servo1.attach(5);
  pinMode(led, OUTPUT);
}
void loop() {
  // Check whether we keep receving data, or we have a connection between the two modules
  currentTime = millis();
  if ( currentTime - lastReceiveTime > 1000 ) { // If current time is more then 1 second since we have recived the last data, that means we have lost connection
    resetData(); // If connection is lost, reset the data. It prevents unwanted behavior, for example if a drone jas a throttle up, if we lose connection it can keep flying away if we dont reset the function
  }
  // Check whether there is data to be received
  if (radio.available()) {
    radio.read(&data, sizeof(Data_Package)); // Read the whole data and store it into the 'data' structure
    lastReceiveTime = millis(); // At this moment we have received the data
  }
  // Controlling servos
  servo1Value = map(data.j2PotX, 0, 255, 0, 50);
  servo1.write(servo1Value);

  // Controlling brushless motor with ESC
  // Lift propeller
  esc1Value = map(data.pot1, 0, 255, 1000, 2000); // Map the receiving value form 0 to 255 to 0 1000 to 2000, values used for controlling ESCs
  esc1.writeMicroseconds(esc1Value); // Send the PWM control singal to the ESC
  
  // Thrust propeller
  esc2Value = constrain(data.j1PotY, 130, 255); // Joysticks stays in middle. So we only need values the upper values from 130 to 255
  esc2Value = map(esc2Value, 130, 255, 1000, 2000);
  esc2.writeMicroseconds(esc2Value);

  // Monitor the battery voltage
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.00 / 1023.00) * 3; // Convert the reading values from 5v to suitable 12V i
  Serial.println(voltage);
  // If voltage is below 11V turn on the LED
  if (voltage < 11) {
    digitalWrite(led, HIGH);
  }
  else {
    digitalWrite(led, LOW);
  }
}
void resetData() {
  // Reset the values when there is no radio connection - Set initial default values
  data.j1PotX = 127;
  data.j1PotY = 127;
  data.j2PotX = 127;
  data.j2PotY = 127;
  data.j1Button = 1;
  data.j2Button = 1;
  data.pot1 = 1;
  data.pot2 = 1;
  data.tSwitch1 = 1;
  data.tSwitch2 = 1;
  data.button1 = 1;
  data.button2 = 1;
  data.button3 = 1;
  data.button4 = 1;
}Code language: Arduino (arduino)

설명: 따라서 먼저 무선 통신을 위한 RF24 라이브러리와 서보 및 브러시리스 모터를 제어하기 위한 서보 라이브러리를 포함해야 합니다. 그런 다음 라디오 및 서보 개체, 아래 프로그램에 필요한 일부 변수 및 DIY RC 송신기에서 들어오는 데이터를 저장하는 데 사용되는 변수 구조를 정의해야 합니다. 이 커뮤니케이션이 어떻게 작동하는지 자세히 알아보려면 내 특정 튜토리얼을 확인하는 것이 좋습니다.

설정 섹션에서 무선 통신을 초기화하고 서보와 ESC가 연결된 핀을 정의해야 합니다.

루프 섹션에서 우리는 트랜스미터로부터 들어오는 데이터를 읽고 서보와 브러시리스 모터를 제어하기 위해 그 값을 사용합니다. 따라서 0에서 255까지 변화하는 조이스틱 수신 데이터는 0에서 50까지의 값으로 변환되고 우리는 이 값을 사용하여 서보의 위치를 ​​제어합니다.

같은 방법으로 ESC를 사용하여 브러시리스 모터를 제어합니다. 0에서 255 사이의 들어오는 데이터는 1000에서 2000 사이의 값으로 변환되고 wirteMicroseconds() 함수를 사용하여 이 데이터를 ESC에 제어 신호로 보냅니다.

배터리 전압을 모니터링하기 위해 전압 분배기에서 오는 아날로그 입력을 읽고 몇 가지 간단한 수학으로 입력 값을 배터리 전압의 실제 값으로 변환합니다. 배터리 전압이 11V 아래로 떨어지면 표시기 LED를 켜면 됩니다.

그리고 그게 다야. 더 자세한 내용이 필요한 경우 다른 제안된 자습서를 확인하면 모든 것이 어떻게 작동하는지 완전히 이해할 수 있습니다.

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


제조공정

  1. DIY LUMAZOID Arduino 뮤직 비주얼라이저
  2. Arduino와 스마트폰을 사용한 DIY 전압계
  3. Pixie:Arduino 기반 NeoPixel 손목시계
  4. DIY 가상 현실 스케이트보드
  5. Arduino 및 OLED 기반 Cellular Automata
  6. DIY Arduino RADIONICS 치료 기계
  7. Arduino 및 Google 스프레드시트 기반 출석 시스템
  8. DIY 2D 모션 레이싱 시뮬레이터
  9. Arduino 기반 스마트 에너지 모니터
  10. Arduino 기반 보안 시스템