세그웨이를 자작해 보았다 ~전자 회로 조립편~

시리즈 목차


  • 세그웨이를 자작해 보았다 ~재료편~
  • 세그웨이를 자작해 보았다 ~전자회로 조립편~
  • 세그웨이를 자작해 보았다 ~프로그램편~
  • 세그웨이를 자작해 보았다 ~완성편~


  • 이 분야에서는 문외한의 내가 '전자제어'를 전혀 공부하지 않고
    세그웨이를 만들어 보려고합니다.

    배선도





    기본적으로 모터 실드와 arduino는 모두 연결됩니다 (모르기 때문에)
    그러나 아래 표의 핀은 자이로 센서에 연결됩니다.


    arduino
    자이로 센서
    위 그림


    3.3v
    VCC
    빨간 선

    GND
    GND
    녹색선

    A5
    SCL
    푸른 선

    A4
    SDA
    검은 선


  • 모터의 동력은, 12V의 배터리×2
  • arduino의 동력은 모바일 배터리에서 공급하기 위해

  • 시작하려면
    1. 배터리와 모터 실드 사이의 "코타츠 스위치"
    2. 모바일 배터리 스위치

    ON으로 시동합니다.

    테스트



    위 그림의 상태에서 arduino 에 다음 프로그램을 넣어
    자이로 센서의 로그를 찍어보십시오.

    자이로 센서 제어를 위해 다음 모듈을 사용합니다.
    이것은 arduino에 표준으로 포함되어 있지 않으므로,
    아래 URL을 참조하여 각 환경에 모듈을 추가하십시오.

    MPU-6050 Accelerometer + Gyro


    test.ino
    #include "Wire.h"
    #include "I2Cdev.h"
    #include "MPU6050.h"
    
    /*  MPU-6050 Accelerometer + Gyro */
    MPU6050 accelgyro;
    
    void setup() {
    
        Wire.begin();
        Serial.begin(9600);
    
        // initialize device
        accelgyro.initialize();
        Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
    
    }
    
    void loop() {
    
      int16_t ax, ay, az;
      int16_t gx, gy, gz;
      accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
      float acc_x = ax / 16384.0;
      float acc_y = ay / 16384.0; 
      float acc_z = az / 16384.0; 
      float rate_X = atan2(acc_x, acc_z) * 360 / 2.0 / PI; 
      float rate_Y = atan2(acc_y, acc_z) * 360 / 2.0 / PI;
      float rate_Z = atan2(acc_x, acc_y) * 180 / 2.0 / PI;
    
      Serial.print(rate_X);
      Serial.print("\t"); 
      Serial.print(rate_Y);
      Serial.print("\t"); 
      Serial.print(rate_Z);
      Serial.print("\t"); 
      Serial.println("");
     }
    
    

    로그입니다.
    MPU6050 connection successful
    Initializing Mortor Driver digital pins...
    3.80    -2.61   62.21   
    4.21    -2.29   59.24   
    3.96    -2.11   59.01   
    4.10    -2.42   60.26   
    3.86    -2.58   61.87   
    3.46    -2.83   64.63   
    4.27    -2.49   60.12   
    3.84    -2.40   60.95   
    4.26    -2.19   58.56   
    4.01    -2.33   60.09   
    3.95    -2.30   60.09       
    4.12    -2.50   60.62       
    3.65    -2.47   62.04       
    3.86    -2.14   59.49       
    3.87    -2.55   61.66       
    4.10    -2.40   60.14       
    3.74    -2.94   64.09       
    3.89    -2.22   59.84       
    3.85    -2.22   59.97       
    3.81    -3.00   64.11       
    3.96    -2.01   58.46       
    

    자이로 센서를 기울여보십시오.
    로그 아래 표의 값이 예상대로 변경되면 성공입니다.


    rate_X
    rate_Y
    rate_Z


    3.80
    -2.61
    62.21

    4.21
    -2.29
    59.24

    3.96
    -2.11
    59.01

    4.10
    -2.42
    60.26

    3.86
    -2.58
    61.87






    자이로 센서 정보



    위 표의 로그에서는 짧기 때문에 이해하기 어렵습니다.
    아무것도 하지 않아도 자이로 센서의 값은 움직이고 있습니다.

    정지 상태의 rate_X 로그


    이것을 일일이 모터에 출력 명령으로서 송출하고 있으면
    모터 정지할 수 없음
    (((((゚Д゚)))))

    그래서 프로그램 측에서 부드럽게하는 처리가 필요하다는 것을 알았습니다.

    다음에 프로그램편 에 대한 정보를 제공합니다.

    좋은 웹페이지 즐겨찾기