- RC 자동차 용 코어리스 DC 모터
- 필요한 재료
- Arduino를 사용하는 RC 카용 RF Joystick
- Arduino RC Car 회로도
- Arduino RC Car 용 PCB 제작
- PCB 조립
- 3D 프린팅 휠 및 모터 마운트
- Arduino 프로그래밍
- Arduino RC Car 작동
RC 자동차는 항상 가지고 놀기 재미 있습니다. 저는 개인적으로이 원격 제어 자동차 의 열렬한 팬이며 광범위하게 플레이했습니다 (여전히 그렇습니다). 오늘날 대부분의 자동차는 거친 지형을 처리 할 수있는 엄청난 토크를 제공하지만 항상 뒤처진 것이 있습니다. Speed !!.. 그래서 이번 프로젝트 에서는 메인 인 Arduino를 사용하여 완전히 다른 유형의 RC 자동차를 만들 것입니다. 이 차의 목표는 최대 속도를 달성하는 것이므로 RC 카용 코어리스 DC 모터 를 사용해 보기로했습니다. 이 모터는 일반적으로 드론에 사용되며 39000RPM 등급입니다. 속도 갈증을 해소하기에 충분합니다. 자동차는 소형 리튬 배터리로 구동되며 nRF24L01 RF 모듈을 사용하여 원격으로 제어 할 수 있습니다. 또는 간단한 것을 찾고 있다면이 Simple RF Robot 및 Raspberry Pi Bluetooth Car 프로젝트를 확인할 수도 있습니다.
RC 자동차 용 코어리스 DC 모터
코어리스 DC 모터 프로젝트에 사용되는 아래 그림에 도시되어있다. 미니 드론 에서 널리 사용되고 있기 때문에 쉽게 찾을 수 있습니다. 8520 마그네틱 마이크로 코어리스 모터를 찾으면 찾을 수 있습니다.
이제 RC 자동차에 DC 모터를 사용하는 데는 몇 가지 단점이 있습니다. 첫 번째는 매우 낮은 시동 토크를 제공하므로 RC 자동차는 가능한 한 가벼워 야합니다. 이것이 내가 SMD 부품을 사용하여 PCB 위에 전체 자동차를 구축하고 가능한 한 보드 크기를 줄이기로 결정한 이유입니다. 두 번째 문제는 고속 39000RPM (샤프트의 RPM)이 다루기 어렵 기 때문에 MOSFET을 사용하여 구축 한 Arduino 측에 속도 제어 회로가 필요합니다. 세 번째는 이러한 모터가 3.6V에서 4.2V 사이의 작동 전압을 가진 단일 리튬 폴리머 배터리로 구동되므로 3.3V에서 작동하도록 회로를 설계해야한다는 것입니다. 이것이 우리가 3.3V Arduino Pro mini를 사용한 이유입니다.우리 RC 자동차의 두뇌로서. 이러한 문제를 해결 한 후이 프로젝트를 구축하는 데 필요한 재료를 살펴 보겠습니다.
필요한 재료
- 3.3V Arduino Pro Mini
- Arduino Nano
- NRF24L01 – 2 개
- 조이스틱 모듈
- SI2302 MOSFET
- 1N5819 다이오드
- 코어리스 BLDC 모터
- AMS1117-3.3V
- 리튬 폴리머 배터리
- 저항기, 커패시터,
- 전선 연결
Arduino를 사용하는 RC 카용 RF Joystick
앞서 언급했듯이 RC 자동차는 RF 조이스틱을 사용하여 원격으로 제어됩니다. 이 조이스틱은 또한 nRF24L01 RF 모듈과 함께 Arduino를 사용하여 구축 될 예정이며, 조이스틱 모듈을 사용하여 RC를 필요한 방향으로 제어했습니다. 이 두 모듈을 완전히 처음 사용하는 경우 nRF24L01과 Arduino 인터페이스 및 Arduino와 조이스틱 인터페이스 기사를 읽고 작동 방식과 사용 방법을 배울 수 있습니다. Arduino RF 원격 조이스틱 을 구축하려면 아래 회로도를 따를 수 있습니다.
RF 조이스틱 회로는 나노 보드의 USB 포트를 사용하여 전원을 공급할 수 있습니다. nRF24L01 모듈은 3.3V에서만 작동하므로 Arduino에서 3.3V 핀을 사용했습니다. 브레드 보드에 회로를 구성했는데 아래와 같이 보이지만 필요한 경우이를 위해 PCB를 만들 수도 있습니다.
RF 조이스틱 회로 아두 이노 코드는 아주 간단합니다, 우리는 우리의 조이스틱에서 X 값과 Y 값을 읽고 해 nRF24L01을 통해 RC 자동차로 전송해야합니다. 이 회로에 대한 전체 프로그램은이 페이지 하단에서 찾을 수 있습니다. 위에서 공유 한 인터페이스 프로젝트 링크에서 이미 논의 했으므로 이에 대한 설명은 다루지 않겠습니다.
Arduino RC Car 회로도
원격 제어 Arduino Car 의 전체 회로도 가 아래에 나와 있습니다. 회로도에는 2 개의 TCRT5000 IR 모듈을 차량에 추가하는 옵션도 포함되어 있습니다. 이는 우리 RC 카가 외부 제어없이 스스로 작업 할 수 있도록 라인 추종 로봇으로 작동 할 수 있도록 계획되었습니다. 그러나이 프로젝트를 위해 우리는 그것에 집중하지 않을 것입니다. "가장 빠른 라인 추종자 로봇"을 구축 할 또 다른 프로젝트 튜토리얼을 기대해주세요. 쉽게 구축 할 수 있도록 단일 PCB에 두 회로를 결합했습니다.이 프로젝트에서는 IR 센서와 연산 증폭기 섹션을 무시할 수 있습니다.
RC 자동차는 터미널 P1에 연결된 Lipo 배터리로 전원이 공급됩니다. AMS117-3.3V는 우리의 해 nRF24L01 우리의 프로 미니 보드 3.3V를 조절하는 데 사용됩니다. 또한 원시 핀에서 Arduino 보드에 직접 전원을 공급할 수 있지만 pro mini의 온보드 3.3V 전압 조정기는 RF 모듈에 충분한 전류를 공급할 수 없으므로 외부 전압 조정기를 사용했습니다.
두 개의 BLDC 모터를 구동하기 위해 두 개의 SI2302 MOSFET을 사용했습니다. 이러한 MOSFET을 3.3V로 구동 할 수 있는지 확인하는 것이 중요합니다. 정확히 동일한 부품 번호를 찾을 수없는 경우 아래 전송 특성을 가진 동등한 MOSFET을 찾을 수 있습니다.
모터는 최대 7A의 피크 전류를 소비 할 수 있으므로 (연속적으로 부하시 3A로 테스트 됨) MOSFET 드레인 전류는 7A 이상이어야하며 3.3V에서 완전히 켜야합니다. 여기에서 볼 수 있듯이 우리가 선택한 MOSFET은 2.25V에서도 10A를 제공 할 수 있으므로 이상적인 선택입니다.
Arduino RC Car 용 PCB 제작
이 프로젝트에서 재미있는 부분은 PCB 개발이었습니다. 여기에 PCB는 회로를 형성 할뿐만 아니라 자동차의 섀시 역할도하므로 모터를 쉽게 장착 할 수있는 옵션을 사용하여 모양을 찾는 자동차를 계획했습니다. 위의 회로를 사용하여 자신의 PCB를 디자인 해 보거나 완료되면 아래와 같은 내 PCB 디자인을 사용할 수도 있습니다.
보시다시피 배터리, 모터 및 기타 구성 요소를 쉽게 장착 할 수 있도록 PCB를 설계했습니다. 링크에서이 PCB에 대한 Gerber 파일을 다운로드 할 수 있습니다. Gerber 파일을 사용할 준비가되면이를 조작 할 차례입니다. PCBGOGO로 PCB를 쉽게 수행하려면 아래 단계를 따르십시오.
1 단계: www.pcbgogo.com에 접속하여 처음이라면 가입하십시오. 그런 다음 PCB 프로토 타입 탭에서 PCB 치수, 레이어 수 및 필요한 PCB 수를 입력합니다. 내 PCB는 80cm × 80cm이므로 탭은 아래와 같습니다.
2 단계: 지금 견적 버튼 을 클릭하여 진행 합니다. 트랙 간격 등을 사용하는 재료와 같이 필요한 경우 몇 가지 추가 매개 변수를 설정할 수있는 페이지로 이동합니다. 그러나 대부분의 경우 기본값이 정상적으로 작동합니다. 여기서 고려해야 할 유일한 것은 가격과 시간입니다. 보시다시피 빌드 시간은 2 ~ 3 일이며 PSB 비용은 5 달러입니다. 그런 다음 요구 사항에 따라 선호하는 배송 방법을 선택할 수 있습니다.
3 단계: 마지막 단계는 Gerber 파일을 업로드하고 결제를 진행하는 것입니다. 프로세스가 원활하게 진행되도록 PCBGOGO는 결제를 진행하기 전에 Gerber 파일이 유효한지 확인합니다. 이렇게하면 PCB가 제작에 친숙하고 약속 된대로 도달 할 수 있음을 확인할 수 있습니다.
PCB 조립
보드를 주문한 후, 잘 포장 된 상자에 깔끔하게 라벨이 부착 된 택배를 통해 며칠 후 내게 도착했으며 언제나처럼 PCB의 품질은 굉장했습니다. 여러분이 판단 할 수 있도록 아래 보드 사진 몇 장을 공유하고 있습니다.
납땜 봉을 켜고 보드 조립을 시작했습니다. Footprints, pads, vias 및 silkscreen이 올바른 모양과 크기에 완벽하기 때문에 보드를 조립하는 데 문제가 없었습니다. 상자 포장을 풀고 10 분만에 보드가 준비되었습니다.
납땜 후 보드의 몇 가지 사진이 아래에 나와 있습니다.
3D 프린팅 휠 및 모터 마운트
위의 그림에서 알 수 있듯이 로봇 용 모터 마운트와 바퀴를 3D로 만들어야합니다. 위에서 공유 한 PCB Gerber 파일을 사용했다면이 thingiverse 링크에서 다운로드하여 3D 모델을 사용하는 것이 좋습니다.
저는 Cura를 사용하여 모델을 슬라이스하고 무게를 줄이기 위해 지지대가없는 Tevo Terantuala 및 0 % 충전물을 사용하여 인쇄했습니다. 프린터에 맞게 설정을 변경할 수 있습니다. 모터가 매우 빠르게 회전하기 때문에 모터 샤프트에 꼭 맞는 휠을 설계하기가 어려웠습니다. 그래서 아래에서 볼 수 있듯이 휠 내부의 드론 블레이드를 사용하기로 결정했습니다.
나는 이것이 더 안정적이고 튼튼하다는 것을 알았지 만, 다른 바퀴 디자인으로 실험을 해보고 당신에게 무엇이 효과가 있는지 코멘트 섹션에서 알려주십시오.
Arduino 프로그래밍
이 프로젝트의 전체 프로그램 (Arduino nano 및 pro mini 모두)은이 페이지 하단에서 찾을 수 있습니다. RC 프로그램에 대한 설명은 다음과 같습니다.
필요한 헤더 파일을 포함하여 프로그램을 시작합니다. nRF24l01 모듈을 사용하려면 Arduino IDE에 라이브러리를 추가해야합니다.이 링크를 사용하여 Github에서 RF24 라이브러리를 다운로드 할 수 있습니다. 그 외에도 로봇의 최소 속도와 최대 속도를 이미 정의했습니다. 최소 및 최대 범위는 각각 0 ~ 1024입니다.
#define min_speed 200 #define max_speed 800 #include
그런 다음 설정 기능 내에서 nRF24L01 모듈을 초기화합니다. 혼잡하지 않고 모듈을 저전력으로 작동하도록 설정했기 때문에 115 개의 대역을 사용했으며 이러한 설정으로도 놀 수 있습니다.
void setup () {Serial.begin (9600); myRadio.begin (); myRadio.setChannel (115); // WIFI 신호보다 높은 115 대역 myRadio.setPALevel (RF24_PA_MIN); // 최소 전력 낮은 분노 myRadio.setDataRate (RF24_250KBPS); // 최소 속도}
다음으로 메인 루프 기능에서 우리는 송신기 조이스틱 모듈에서 보낸 값을 지속적으로 읽는 ReadData 기능 만 실행할 것입니다. 프로그램에 언급 된 파이프 주소는 송신기 프로그램에 언급 된 주소와 동일해야합니다. 또한 디버깅 목적으로받은 값을 인쇄했습니다. 값이 성공적으로 읽
히면 Rf 모듈 에서받은 값을 기반으로 RC 자동차를 제어하는 Control Car 기능을 실행합니다.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // 읽을 파이프, 40 비트 주소 myRadio.startListening (); // 전송 중지 및 Reveicing 시작 if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.print ("\ n 수신 됨:"); Serial.println (data.msg); 수신 됨 = data.msg; Control_Car (); }}
Control Car 기능 내에서 아날로그 쓰기 기능을 사용하여 PWM 핀에 연결된 모터를 제어합니다. 우리의 송신기 프로그램에서 우리는 아날로그 값을 Nano의 A0 및 A1 핀에서 1에서 10, 11에서 20, 21에서 30 및 31에서 40으로 변환하여 차량을 순방향, 역방향, 왼쪽 및 오른쪽으로 각각 제어했습니다. 아래 프로그램은 로봇을 정방향으로 제어하는 데 사용됩니다.
if (received> = 1 && received <= 10) // 앞으로 이동 {int PWM_Value = map (received, 1, 10, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, PWM_Value); }
마찬가지로, 아래와 같이 반전, 왼쪽 및 오른쪽 제어에 대한 세 가지 추가 함수를 작성할 수도 있습니다.
if (received> = 11 && received <= 20) // Break {int PWM_Value = map (received, 11, 20, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, 0); } if (received> = 21 && received <= 30) // 좌회전 {int PWM_Value = map (received, 21, 30, min_speed, max_speed); analogWrite (R_MR, PWM_Value); analogWrite (L_MR, 0); } if (received> = 31 && received <= 40) // 우회전 {int PWM_Value = map (received, 31, 40, min_speed, max_speed); analogWrite (R_MR, 0); analogWrite (L_MR, PWM_Value); }
Arduino RC Car 작동
코드 작성이 끝나면 프로 미니 보드에 업로드하세요. 테스트를 위해 FTDI 모듈을 통해 배터리와 보드를 제거합니다. 코드를 실행하고 직렬 배터리를 열면 송신기 조이스틱 모듈에서 값을 받아야합니다. 배터리를 연결하면 모터도 회전하기 시작합니다.
프로젝트의 전체 작업은이 페이지 하단에 링크 된 비디오에서 찾을 수 있습니다. 질문이 있으시면 댓글 섹션에 남겨주세요. 포럼을 사용하여 다른 기술 질문에 대한 빠른 답변을 얻을 수도 있습니다.