아날로그를 디지털로 변환 (아날로그 읽기 직렬) – Arduino 기본 사항

문제를 제거하기 위해 도구를 사용해보십시오





이 Arduino 기본 사항에서는 외부 아날로그 신호가 Arduino 아날로그 입력에 공급되고 이에 상응하는 비례 디지털 판독 값으로 변환되거나 변환되는 코드 구현 절차를 이해하려고합니다. 여기에서는 아날로그 신호 소스로 포트 형태의 가변 저항을 사용합니다.

아날로그 읽기 직렬

이 예에서는 수동 작동을 통해 회로에서 다양한 저항을 구현하도록 설계된 전기 기계 장치 인 전위차계와 같은 외부 장치에서 아날로그 입력을 읽는 방법을 배웁니다.



Arduino는 가변 저항을 읽고 식별하기 위해 전위차계에서 나오는 전압의 크기를 측정하는 데 사용할 수 있습니다. 이는 Arduino 아날로그 입력 포트에 전압을 아날로그 값으로 공급하여 수행 할 수 있습니다.

여기서는 Arduino와 연결된 컴퓨터에서 직렬 통신을 설정 한 후 위의 내용이 어떻게 적용되는지 살펴 보겠습니다.



필요한 하드웨어

Arduino 보드

10 킬로 옴 전위차계

회로 작동

위의 다이어그램에 표시된대로 냄비에서 나오는 3 개의 전선을 Arduino 포트에 연결합니다.

냄비의 외부 리드 중 하나에서 나오는 와이어는 보드의 접지 또는 음극선으로 지정됩니다.

다른 자유 극한 외부 끝 리드는 보드의 + 5V에 연결됩니다.

남은 것은 아두 이노 보드의 아날로그 입력으로 끝나는 냄비의 중앙 리드입니다.

포트 샤프트가 회전하면 슬라이더 암이 어느쪽에 가까워 지는지에 따라 중앙 리드와 외부 단자의 저항이 더 높은 곳에서 더 낮은 곳으로 또는 그 반대로 이동합니다.

예를 들어 슬라이더 암이 + 5V 리드 방향으로 회전하면 중앙 리드가 5V에 가까워지고 5V 할당 리드에 닿을 때 전체 값을 획득하는 경향이 있습니다. 마찬가지로 슬라이더 샤프트가 그라운드 포트 리드쪽으로 이동하면 중앙 리드가 0 전위에 도달하는 경향이 있습니다.

포트의 중앙 리드를 통해 위의 선형 적으로 변화하는 공급 전압은 arduino 아날로그 입력에 의해 판독되어 포트의 상응하는 가변 저항으로 해석됩니다.

Arduino는 위의 포트 이동을 효과적으로 해석하고 0에서 1023 사이의 숫자로 변환하는 내부 아날로그-디지털 변환기 회로를 포함합니다.

포트 샤프트 위의 특정 위치는 Arduino에 의해 0에서 1023 사이의 비례 숫자가 변환되고 5V 및 0V의 최종 값의 경우 해석은 분명히 0과 1023입니다.

참조 된 프로그램에서 설정 기능은 Arduino 보드와 컴퓨터에서 직렬 통신을 시작하기 위해 트리거되어야합니다. 속도는 초당 9600 비트의 데이터입니다.

예상되는 명령은 다음과 같은 형식입니다.

Serial.begin (9600)

그 후, 코드의 메인 루프에서 팟 리드에서 수신 한 저항 값 (0에서 1023 사이에 설명 된대로 int 데이터 유형에 적합 함)을 수정하기 위해 변수를 적용합니다.

int sensorValue = analogRead (A0)

결론적으로,이 정보를 10 진수 (DEC) 값으로 직렬 창에 인쇄하십시오. 코드의 마지막 줄에서이를 구현하기 위해 Serial.println () 명령을 사용할 수 있습니다.

Serial.println (sensorValue, DEC)

그 후 Arduino 개발 도메인에서 직렬 모니터가 시작될 때마다 (프로그램 헤더의 '업로드'버튼 바로 오른쪽에있는 버튼을 클릭하면됩니다).

포트 샤프트의 다양한 회전 위치에 따라 0-1023에서 연속되는 숫자 체인을 볼 수 있습니다.

냄비 샤프트의 회전을 잠시 멈 추면 해당 순간 번호가 Arduino 화면에 표시되며 냄비 샤프트 위치를 계속 변경함에 따라 다시 비례하여 변경됩니다.

코드

/ *
AnalogReadSerial
핀 0에서 아날로그 입력을 읽고 결과를 직렬 모니터에 인쇄합니다.
전위차계의 중앙 핀을 핀 A0에 연결하고 외부 핀을 + 5V 및 접지에 연결합니다.

이 예제 코드는 공개 도메인에 있습니다.
* /

// 재설정을 누르면 설정 루틴이 한 번 실행됩니다.
void setup () {
// 초당 9600 비트로 직렬 통신을 초기화합니다.
Serial.begin (9600)
}

// 루프 루틴은 영원히 계속해서 실행됩니다.
void loop () {
// 아날로그 핀 0의 입력을 읽습니다.
int sensorValue = analogRead (A0)
// 읽은 값을 출력합니다.
Serial.println (sensorValue)
delay (1) // 안정성을 위해 읽기 사이의 지연
}




Previous : 스위치 상태 모니터링 (디지털 읽기 직렬) – Arduino 기본 사항 다음 : 1.25V ~ 120V 주전원 가변 전압 조정기 회로