달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'작품/쿼드콥터'에 해당되는 글 15

  1. 2016.02.08 하드웨어 조립
  2. 2016.02.08 부품 테스트 - 배터리
  3. 2016.02.08 부품테스트 ESC 및 BEC
  4. 2016.02.08 부품 테스트 - 센서
  5. 2016.02.08 부품 주문
2016. 2. 8. 01:32

하드웨어 조립 작품/쿼드콥터2016. 2. 8. 01:32


멀티콥터 조립 자료.pdf


하드웨어에서 프레임은 설명서를 보고 조립을 하였습니다.


   


   


   

프레임을 다 조립한 후에 컨트롤러인 아두이노를 포함하여 센서와 블루투스가 장착되어 있는 보드를 만들었습니다.


 

'작품 > 쿼드콥터' 카테고리의 다른 글

호버링 제어  (0) 2016.02.08
조립 후 테스트  (0) 2016.02.08
부품 테스트 - 배터리  (0) 2016.02.08
부품테스트 ESC 및 BEC  (0) 2016.02.08
부품 테스트 - 센서  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 01:29

부품 테스트 - 배터리 작품/쿼드콥터2016. 2. 8. 01:29

배터리는 11.1V, 4500mAh, 30~60C 리튬 폴리머 배터리를 씁니다.

 


전원 부분에 커넥터를 납땜하려고 하다가 실수로 아주 잠깐 쇼트가 났는 데..

그 후로는 계속 0V가 떴습니다. 

10만원 짜리라 어떻게든 살리기 위해서 내부를 살펴보았습니다.


 


살펴보니 쇼트 때문에 내부에 퓨즈가 끊켜 있더군요.

그 부분을 연결해주니 배터리가 잘 작동하였습니다.

'작품 > 쿼드콥터' 카테고리의 다른 글

조립 후 테스트  (0) 2016.02.08
하드웨어 조립  (0) 2016.02.08
부품테스트 ESC 및 BEC  (0) 2016.02.08
부품 테스트 - 센서  (0) 2016.02.08
부품 주문  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 01:25

부품테스트 ESC 및 BEC 작품/쿼드콥터2016. 2. 8. 01:25

변속기 모델은 iPeaka 22A ESC 입니다.


변속기는 아래와 같이 모터에 전력을 공급해주기 위해서 쓰는 부품입니다.

아두이노의 신호로는 모터를 돌릴 에너지가 없기 때문에 변속기(ESC)에 배터리를 연결하여 아두이노는 오직 신호로만 사용하고 

외부 배터리의 에너지로 모터를 돌리는 겁니다. 



위 그림처럼 아두이노, ESC, 배터리, 모터를 연결하고 조종을 위해서 블루투스를 연결하여 ESC 테스트를 해 보았습니다.


 


위 동영상의 코드는 아래와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <SoftwareSerial.h>
 
#define T 20000
 
SoftwareSerial mySerial(13,11);//Rx, Tx 
 
int sig = 1100, count = 0;
int ESC = 5;
char c;
int emergency=0;
 
 
void setup()  
{
  pinMode(ESC, OUTPUT);
  mySerial.begin(115200);//115200 not work
  Serial.begin(115200);
   mySerial.println(sig);
}
 
void loop() 
{
  if (mySerial.available()){
    
    //read
    c = mySerial.read();
    Serial.println(c);
 
    //case
    if(c == 'u'){
      emergency = 0;
      sig +=50;
      if(sig>1700)
         sig = 1700;
      mySerial.println(sig);
    }
    else if(c == 'd'){
      emergency = 0;
      sig -=50;
      if(sig<1100)
        sig = 1100;
      mySerial.println(sig);
    }
    else if(c == 'e'){
      emergency = 1;
    }
  
  }
 
  //emergency
  if(emergency == 1){
    count++;
    if(count == 20){
    sig-=50;
    if(sig<1100){
        sig = 1100;
        emergency=0;
    }
    mySerial.println(sig);
    count=0;
    }
  }
 
  //output
  digitalWrite(ESC, HIGH);
  delayMicroseconds(sig);
  digitalWrite(ESC, LOW);
  delayMicroseconds(T); 
}
 

cs

 



BEC는 아두이노에 안정적으로 전원을 공급하기 위하여 사용하는 장치입니다.


 


아래 그림에서 RECEIVER를 아두이노라고 생각하고 연결하면 됩니다.

그러면 11.1V의 리튬 폴리머 배터리를 연결하면 BEC를 통해 아두이노에 5V가 공급됩니다.  



BEC에 11.1V를 공급했을 때 5V가 나오는지 테스트 해 보았습니다.


 








참고 사이트

ESC 사용 방법 코드

http://wjs890204.tistory.com/670

 


'작품 > 쿼드콥터' 카테고리의 다른 글

조립 후 테스트  (0) 2016.02.08
하드웨어 조립  (0) 2016.02.08
부품 테스트 - 배터리  (0) 2016.02.08
부품 테스트 - 센서  (0) 2016.02.08
부품 주문  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 01:20

부품 테스트 - 센서 작품/쿼드콥터2016. 2. 8. 01:20


센서는 다음 모델을 썼습니다. 

EBIMU-9DOFV2


간단하게 출력 테스트를 해봤는데요. EBIMU-9DOFV2는 roll, pitch, yaw 데이터를 문자열로 줍니다.

센서를 아두이노와 연결하여 데이터가 나오는지 확인해 보았습니다.


    


위 영상의 코드는 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "SoftwareSerial.h"
 
#define SIZEOFSIGN 4
#define DATANUMBER 22
#define ROLL 0
#define PITCH 1
#define YAW 2
#define STARTBITNUM 2
 
SoftwareSerial mySerial(2,3);//Rx Tx
 
int s = 0, d = 0, data_ok = 0;
int start_bits[STARTBITNUM], data_bits[DATANUMBER*2];
char data;
int i = 0;
 
void setup() {
  Serial.begin(115200);
  mySerial.begin(57600);
}
 
void loop() {
  if(mySerial.available()){
    data= mySerial.read();
    Serial.print(data);
  }
 
}
cs

 



다음으로 제대로된 값이 나오는 지 확인하기 위해서 

센서의 출력을 "SerialChart"라는 프로그램을 이용하여 그래프로 나타내어 보았습니다.

그러기 위해서는 문자열로 된 데이터를 roll, pitch, yaw 별로 숫자로 변환해 주어야 했습니다.

    


위 코드의 영상은 아래와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "SoftwareSerial.h"
 
SoftwareSerial mySerial(2,4);//Rx Tx
 
char data[40];
int i = 0;
double  roll, pitch, yaw;
 
void printAll(char* ch)
{
  int n;
  
  for(n=0; n<i; n++){
    Serial.print(ch[n]);
  }
    Serial.println("");
}
 
void trans_ascii_to_num(char * SBuf, double * DegRoll, double * DegPitch, double * DegYaw)
{  
  int value, value2;
  
  value=FindComma(SBuf);
  //Serial.print(value);
  SBuf[value]='\0';
  *DegRoll=atof(SBuf);
        
  value++;
  value2=FindComma(&SBuf[value]);
  SBuf[value+value2]='\0';
  *DegPitch=atof(&SBuf[value]);
    
  value=value+value2+1;
  value2=FindComma(&SBuf[value]);
  SBuf[value+value2]='\0';
  *DegYaw=atof(&SBuf[value]);
 
 Serial.print(*DegRoll); Serial.print(", ");Serial.print(*DegPitch); Serial.print(", ");Serial.println(*DegYaw); 
}
 
int FindComma(char * buf)
{
   int n;
   for(n=0;n<40;n++)
    {
     if(buf[n]==','break;
    }
 
   return n;
}
 
void setup() {
  Serial.begin(115200);
  mySerial.begin(57600);
}
 
void loop() {
  
  if(mySerial.available()){
    data[i]= mySerial.read();
    i++;
   
    if(data[i-1== 0x0A)
      data[i-1= ',';
    
    if(data[i-1== '*'){
     // printAll(data);
      trans_ascii_to_num(data, &roll, &pitch, &yaw);
      i=0;
    }
  }
 
}
cs

'작품 > 쿼드콥터' 카테고리의 다른 글

조립 후 테스트  (0) 2016.02.08
하드웨어 조립  (0) 2016.02.08
부품 테스트 - 배터리  (0) 2016.02.08
부품테스트 ESC 및 BEC  (0) 2016.02.08
부품 주문  (0) 2016.02.08
:
Posted by youjin.A
2016. 2. 8. 01:13

부품 주문 작품/쿼드콥터2016. 2. 8. 01:13


'작품 > 쿼드콥터' 카테고리의 다른 글

조립 후 테스트  (0) 2016.02.08
하드웨어 조립  (0) 2016.02.08
부품 테스트 - 배터리  (0) 2016.02.08
부품테스트 ESC 및 BEC  (0) 2016.02.08
부품 테스트 - 센서  (0) 2016.02.08
:
Posted by youjin.A