Post

c 공부 2024.04.15

G-NSDMG-023 경사계 센서

핵심 특징 및 사용 방법 요약:

특징:

  • 고정밀도: 매우 정밀한 기울기 측정이 가능.
  • 다양한 출력 옵션: 디지털 (RS232), 아날로그 (전압, 전류), PWM, 스위치 및 CANopen 출력 옵션을 제공.
  • 환경 보호: 견고한 알루미늄 하우징과 IP 67/68 등급으로 먼지와 물로부터 보호.
  • 온도 보상: 광범위한 온도 범위에서도 정확도를 유지할 수 있게 도와주는 온도 보상 기능이 탑재되어 있다.

사용 방법:

  1. 설치: 센서는 측정하려는 축에 맞추어 설치해야 하며, 견고한 연결을 위해 M12 male 커넥터를 사용.
  2. 전원 연결: 센서는 10V에서 30VDC 사이의 전원이 필요하다. 해당 전원을 연결하여 센서를 작동.
  3. 데이터 읽기 및 설정 조정:
    • 디지털 데이터 (RS232): 컴퓨터나 다른 디지털 장치로 직접 연결하여 데이터를 읽을 수 있다.
    • 아날로그 데이터: 기울기에 따라 변하는 전압 또는 전류 신호를 출력하여, 간단한 측정 장비로도 읽을 수 있다.
    • CANopen: 산업 네트워크를 통해 여러 장치와의 통신이 가능하여 복잡한 시스템에서도 효율적으로 활용할 수 있다.

D-시리즈 경사계는 색상 구성표를 사용하여 커넥터의 배선을 나타내며 이는 특히 올바른 설치 및 연결을 보장하는 데 유용. 색상 코딩이 사용되는 방법은 다음과 같다.

RS 232 인터페이스 및 아날로그 출력:

  1. +Ub(양극 전원 공급 장치)

    : 흰색

  2. RxD(Rx 직렬 신호 RS 232 입력)

    : 갈색

  3. TxD(Tx 직렬 신호 RS232 출력)

    : 녹색

  4. GND(접지 공급)

    : 노란색

  5. XOut(X축 출력)

    : 회색

  6. SGND(신호 접지 공급 장치)

    : 분홍색

  7. YOut(Y축 출력)

    : 파란색

  8. NC(연결 없음)

    : 연결되지 않음

CANopen 인터페이스:

  1. +Ub(양극 전원 공급 장치)

    : 흰색

  2. NC(접속 없음)

    : 갈색

  3. NC(연결 없음)

    : 녹색

  4. GND(접지 공급)

    : 노란색

  5. CANout(CAN 저출력)

    : 회색

  6. CANgnd(CAN 접지 공급)

    : 분홍색

  7. CANout(CAN 고출력)

    : 파란색

  8. NC(연결 없음)

    : 연결되지 않음

D-시리즈 경사계 데이터시트의 “주문 정보” 섹션에서는 특정 기능 및 구성을 포함하여 주문할 수 있는 다양한 경사계 모델에 대한 세부 정보를 제공한다. 이 섹션은 잠재 구매자가 필요에 따라 적절한 모델을 선택하는 데 필수적.

제공된 주문 정보는 다음과 같다.

부품 번호 및 설명

D-시리즈 경사계의 각 모델에는 범위, 인터페이스 및 출력 유형을 나타내는 특정 부품 번호가 있다.

예를 들어:

  • G-NSDMG-015

    : ±5° 범위의 경사계, 10 ~ 30 VDC 전원 공급 장치, 전압 출력이 있는 RS232 인터페이스.

  • G-NSDMG-017

    : 위와 비슷하지만 전류 출력이 있다.

  • G-NSDMG-030

    : 이 모델은 최대 ±5°까지 측정하지만 RS232 대신 CANopen 출력 인터페이스를 사용.

부품 번호는 지원하는 출력 범위와 유형에 따라 늘어남. ±15° 및 ±30°와 같은 더 넓은 범위의 경우 유사한 출력 옵션을 갖춘 해당 모델이 있다.

  • 전압 출력(RS232)
  • 전류 출력
  • PWM 출력
  • 스위치 출력
  • CANopen 인터페이스

부속품

또한 다른 장치나 시스템에 대한 설치 및 연결을 용이하게 하기 위해 다양한 유형과 길이의 커넥터 및 케이블과 같은 경사계에 사용할 수 있는 액세서리가 있다.

G-NSDMG-023 경사계 센서 아두이노와 통합

필요한 재료

  1. D-Series 경사계 센서
  2. 아두이노 보드 (예: 아두이노 우노)
  3. 적절한 인터페이스 케이블 및 연결 부품
  4. 컴퓨터 (아두이노 IDE 설치 필요)

준비 단계

  1. 센서 및 아두이노 연결:
    • 아날로그 출력의 경우: 센서의 전압 출력을 아두이노의 아날로그 입력 핀에 연결.
    • 디지털 출력의 경우 (RS232): RS232를 TTL 신호로 변환하는 컨버터가 필요할 수 있다. 이 컨버터를 통해 센서를 아두이노의 디지털 핀에 연결.
  2. 전원 공급: 센서와 아두이노에 적절한 전원을 공급. 센서는 일반적으로 10V에서 30VDC를 요구하므로 별도의 전원 공급 장치가 필요할 수 있다.

프로그래밍

아날로그 출력 사용 시

1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
  Serial.begin(9600); // 시리얼 통신 시작
  pinMode(A0, INPUT); // 아날로그 핀을 입력으로 설정
}

void loop() {
  int sensorValue = analogRead(A0); // 센서에서 읽은 아날로그 값을 저장
  float angle = map(sensorValue, 0, 1023, -30, 30); // 센서 값의 범위를 각도 범위로 매핑
  Serial.print("Angle: ");
  Serial.println(angle);
  delay(1000); // 1초 대기
}

이 코드는 센서로부터 아날로그 값을 읽어 각도로 변환한 후 시리얼 모니터에 출력.

디지털 출력 사용 시 (RS232)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <SoftwareSerial.h>SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  mySerial.begin(9600); // 센서의 baud rate에 맞춰 시작
  Serial.begin(9600); // 디버그를 위한 시리얼 통신 시작
}

void loop() {
  if (mySerial.available()) {
    String data = mySerial.readString(); // 센서로부터 데이터 읽기
    Serial.print("Received data: ");
    Serial.println(data);
  }
  delay(1000); // 1초 대기
}

이 코드는 센서로부터 디지털 데이터를 받아서 시리얼 모니터에 출력.

센서의 아날로그 출력에서 사용하는 map 함수의 값 0, 1023, -30, 30은 아두이노에서 아날로그 입력을 처리하는 방식과 관련이 있다. 아두이노는 10비트 아날로그-디지털 변환기(ADC)를 사용하여 아날로그 신호를 디지털 값으로 변환. 이는 아날로그 신호를 0에서 1023 범위의 디지털 값으로 매핑한다는 것을 의미.

  • 01023은 아날로그 입력 핀에서 읽을 수 있는 최소값과 최대값을 나타냄. 즉, 0V는 0으로, 최대 입력 전압 (일반적으로 5V)는 1023으로 변환된다.
  • 3030은 센서의 측정 범위를 나타낸다. 이 경우, 경사계 센서는 -30도에서 +30도의 범위를 측정할 수 있다.

map 함수는 이러한 두 범위를 서로 연결함. 함수는 첫 번째 범위에서의 값을 읽고, 그 값을 두 번째 범위의 해당 값으로 변환. 예를 들어, 센서의 출력이 중간값인 512라면, 이는 0도에 해당될 것. 왜냐하면 512는 0과 1023의 중간값이고, 이것을 -30도에서 +30도로 매핑할 때 0도가 중간값이 되기 때문이다.

이렇게 map 함수를 사용하면 센서의 아날로그 출력을 실제 각도로 변환하여 쉽게 이해하고 사용할 수 있다.

테스트 및 디버깅

  • 아두이노 IDE의 시리얼 모니터를 사용하여 센서로부터 받은 데이터를 확인.
  • 코드 및 연결을 점검하여 모든 구성 요소가 정확히 작동하는지 확인.

이 단계들을 통해 아두이노와 D-Series 경사계 센서를 성공적으로 통합하고 원하는 프로젝트에 활용할 수 있습니다. 실험을 통해 최적의 설정을 찾아가야함.


이 센서의 각도를 찾는 알고리즘

  • x가 4일때 y는 0

  • x가 20일때 y는 100

방정식

두 점 (4, 0)(20, 100)을 통해 직선의 방정식을 구하고, 이를 사용하여 계산하는 과정은 아래에 있다.

1
2
3
4
5
6
7
8
9
10
11
12
기울기(m) = (y2 - y1) / (x2 - x1)
= (100 - 0) / (20 - 4)
= 100 / 16
= 6.25

이제 한 점을 대입하여 y 절편(b)을 구할 수 있다. 점 (4, 0)을 대입.

0 = 6.25 * 4 + b
b = 0 - 25
b = -25

따라서 직선의 방정식은 y = 6.25x - 25이다.

알고리즘 c언어

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
/******************************************************************************
made by Park ji woon
04- 15 -2024
Ver. v12.123
*******************************************************************************/

#include <stdio.h>

/******************* Funcition List ******************/
// 각도를 계산하는 함수
double calculate_angle(int x) {
    int x1 = 20, y1 = -30; // 첫 번째 점의 좌표를 설정
    int x2 = 4, y2 = 30; // 두 번째 점의 좌표를 설정
    
    // 기울기 계산
    double a = (double)(y2 - y1) / (x2 - x1); // (y2 - y1)를 (x2 - x1)로 나누어 기울기를 계산
    
    // y절편 계산
    double b = y1 - a * x1; // y = ax + b에서 b를 계산
    
    // 주어진 x 값에 대한 각도 y 계산
    double y = a * x + b; // 주어진 x 값에 대한 y 값을 계산하여 각도를 구함
    
    return y; // 각도 반환
}


/******************************************
           Main program 
*******************************************/   
int main() {
    int x; // x 값을 입력 받을 변수 선언
    printf("Enter x value: "); // 사용자에게 x 값 입력 요청
    scanf("%d", &x); // 사용자로부터 x 값 입력 받음

    double angle = calculate_angle(x); // calculate_angle 함수를 호출하여 각도 계산
    printf("The angle at x = %d is %.2f degrees\n", x, angle); // 계산된 각도 출력
    
    return 0; // 프로그램 종료
}

협업 GUI 기반 도구

  • git lens
  • source tree

cli를 쓰던 gui를 쓰던 깃컨벤션을 지키면서 commit을 해야한다.

일단 git을 알아야하고 github로 협업하는 방법이 우선이 되어야 저러한 도구도 사용이 가능할듯하다.

git과 github를 활용한 팀 협업 방법

협업방법링크

This post is licensed under CC BY 4.0 by the author.