정확한 판독을위한 Arduino 타코미터 회로

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





회전 속도계는 회전하는 물체의 RPM 또는 각속도를 측정하는 장치입니다. 속도계 및 주행 거리계와는 다릅니다. 이러한 장치는 신체의 선형 또는 접선 속도를 처리하는 반면 타코미터 일명 'tach'는보다 기본적인 RPM을 처리합니다.

작성자 : Ankit Negi



타코미터는 카운터와 타이머로 구성되며이 두 가지가 함께 작동하여 RPM을 제공합니다. 프로젝트에서는 Arduino와 일부 센서를 사용하여 카운터와 타이머를 모두 설정하고 편리하고 쉬운 타치를 개발할 것입니다. .

전제 조건

카운터는 회전하는 동안 디스크의 점이 지나가는 것과 같이 정기적으로 발생하는 특정 이벤트를 계산할 수있는 장치 또는 설정에 불과합니다. 처음에 카운터는 기어, 래칫, 스프링 등과 같은 기계적 배열과 연결 장치를 사용하여 제작되었습니다.



하지만 이제 우리는 더 정교하고 고정밀 한 센서와 전자 장치를 갖춘 카운터를 사용하고 있는데, 타이머는 이벤트 사이의 시간 간격을 측정하거나 시간을 측정 할 수있는 전자 요소입니다.

Arduino Uno에는 시간을 추적 할뿐만 아니라 Arduino의 중요한 기능 중 일부를 유지하는 타이머가 있습니다. Uno에는 Timer0, Timer1 및 Timer2라는 3 개의 타이머가 있습니다. 이러한 타이머에는 다음과 같은 기능이 있습니다. • Timer0- delay (), millis (), micros () 또는 delaymicros ()와 같은 Uno 함수의 경우.

• Timer1- 서보 라이브러리 작업용.

• Timer2- tone (), notone ()과 같은 함수의 경우.

이러한 기능과 함께이 3 개의 타이머는 PMW 지정 핀에서 analogWrite () 명령이 사용될 때 PWM 출력을 생성하는 역할도합니다.

인터럽트의 개념

Arduino Uno에는 Timer Interrupts로 알려진 모든 기능에 액세스 할 수있는 숨겨진 도구가 있습니다. Interrupt는 호출 될 때 실행되는 이벤트 또는 명령 집합으로 장치의 현재 기능을 중단합니다. Uno가 이전에 실행했던 코드이지만 인터럽트가 Arduino라고 부르면 인터럽트에 언급 된 명령을 실행합니다.

모터 샤프트의 자석

이제 Interrupt는 내장 된 Arduino Syntax를 사용하여 사용자가 정의한 특정 조건에서 호출 할 수 있습니다. 우리는 웹에 존재하는 다른 Tachometer 프로젝트보다 우리의 회전 속도계를 더 확실하고 정확하게 만드는 프로젝트에서이 Interrupt를 사용할 것입니다.

Arduino를 사용하는이 타코미터 프로젝트에 필요한 구성 요소

• 홀 효과 센서 (그림 1)

홀 효과 센서 모듈

• Arduino Uno

Arduino UNO 보드

• 작은 자석

작은 자석

• 점퍼 와이어

• 회전 물체 (모터 샤프트)

DC 모터

회로 설정

• 생성 설정은 다음과 같습니다.

• 회전 속도를 측정 할 샤프트에는 글루건이나 전기 테이프를 사용하여 작은 자석이 장착되어 있습니다.

• 홀 효과 센서는 전면에 감지기가 있고 연결을위한 3 개의 핀이 있습니다.

• Vcc와 Gnd 핀은 Arduino의 5V와 Gnd 핀에 각각 연결됩니다. 센서의 출력 핀은 입력 신호를 제공하기 위해 Uno의 디지털 핀 2에 연결됩니다.

• 모든 구성 요소는 마운트 보드에 고정되고 홀 감지기는 보드에서 지적됩니다.

프로그램 작성

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

코드를 업로드하십시오.

코드를 알고

우리의 회전 속도계는 홀 효과 센서를 사용합니다. 홀 효과 센서는 발견자인 Edwin Hall의 이름을 딴 홀 효과를 기반으로합니다.

홀 효과는 전류 흐름에 수직으로 자기장이 도입 될 때 전류 전달 도체에 전압이 발생하는 현상입니다. 이 현상에 의해 발생되는 전압은 입력 신호 생성에 도움이되며, 앞서 언급 한 바와 같이 Interrupt를 호출하기 위해서는 몇 가지 조건을 설정해야합니다. Arduino Uno에는 인터럽트를 호출하는 두 가지 조건이 있습니다.

RISING- 이것을 사용하면 입력 신호가 LOW에서 HIGH로 갈 때마다 Interrupt가 호출됩니다.

FALING- 사용하면 신호가 HIGH에서 LOW로 갈 때 Interrupt가 호출됩니다.

RISING을 사용했는데 샤프트 나 회 전체에 위치한 자석이 홀 감지기에 가까워지면 입력 신호가 생성되고 인터럽트가 호출되면 인터럽트가 증가를 포함하는 인터럽트 서비스 루틴 (ISR) 기능을 시작합니다. 카운트 값과 카운트가 발생합니다.

타이머 설정을 위해 Arduino의 millis () 함수와 previoustime (변수)을 사용했습니다.

RPM은 최종적으로 수학적 관계를 사용하여 계산됩니다.

RPM = 카운트 / 걸린 시간 밀리 초를 분으로 변환하고 재 배열하면 공식 = 60 * 1000 / (millis ()-previoustime) * counts가됩니다.

지연 (1000)은 RPM 값이 화면에 업데이트되는 시간 간격을 결정하며 필요에 따라이 지연을 조정할 수 있습니다.

획득 한이 RPM 값은 v = (3.14 * D * N) / 60 m / s 관계식을 사용하여 회전하는 물체의 접선 속도를 계산하는 데 사용할 수 있습니다.

RPM 값은 회전하는 바퀴 나 디스크가 이동 한 거리를 계산하는 데에도 사용할 수 있습니다.

직렬 모니터에 값을 인쇄하는 대신 LCD 디스플레이 (16 * 2)와 배터리를 연결하여 더 유용하게 사용할 수 있습니다.




이전 : IC 555를 사용하는 스테퍼 모터 드라이버 회로 다음 : Arduino를 사용하는 디지털 커패시턴스 미터 회로