프린터의 인코더가 포함된 Arduino 회전 속도계. 유속계. Arduino에서 포토레지스터와 HD44780 LCD 디스플레이를 사용한 작업의 예


타코미터는 주어진 시간 간격 동안 물체의 회전 수를 측정하는 데 사용되는 장치입니다. 일반적으로 값은 분당 회전수 또는 rpm으로 표시됩니다. 이전에 타코미터는 기계적 연결(케이블 또는 샤프트)을 통해 회전이 타코미터에 전달되는 순전히 기계 장치였으며 분당 회전 수는 다음을 사용하여 결정되었습니다. 기어 변속기원형 규모로 표시되었습니다. 현대 전자공학의 출현 이후 회전 속도계는 많은 변화를 겪었습니다. 이 기사에서는 비접촉식 디지털 타코미터에 대해 설명합니다. Arduino 기반. 유사한 회로를 사용하여 모터의 속도를 제어할 수도 있습니다. RPM 및 기타 정보는 16×2 LCD 디스플레이에 표시됩니다. 전기 다이어그램 Arduino 기반 디지털 타코미터는 다음과 같습니다.

전기 다이어그램


RPM 센서
적외선 광트랜지스터와 적외선 LED가 센서를 구성합니다. 적외선 포토트랜지스터는 적외선에만 반응하는 포토트랜지스터의 일종입니다. 적외선 포토트랜지스터를 사용하면 다른 빛 간섭의 영향을 피할 수 있습니다. 환경. 포토 트랜지스터와 적외선 LED는 병렬로 배열됩니다. 저항 R2는 적외선 다이오드를 통한 전류를 제한합니다. 반사 가이드 테이프는 센서에 맞춰 회전하는 물체(샤프트, 디스크 또는 팬)에 접착됩니다. 저는 공급전압이 9V/100mA인 냉각팬을 사용했습니다. 센서와 반사 가이드 스트립 사이의 간격은 1cm를 초과해서는 안 됩니다. 반사 가이드 스트립이 센서 앞을 통과하면 적외선이 포토트랜지스터로 다시 반사됩니다. 포토트랜지스터는 특정 순간에 더 많은 전류를 전도하므로 결과적으로 R3(68K 저항)의 전압이 빠르게 상승합니다. 그 결과는 포토트랜지스터의 이미터에서 아래에 표시된 모양의 신호가 됩니다. 분당 회전수는 주어진 시간 간격 동안 상승 펄스 수를 계산하여 결정할 수 있습니다.


분당 회전수 계산
Arduino는 RPM 값을 계산하고 이 값을 LCD에 표시하는 데 사용됩니다. 포토트랜지스터의 이미터는 Arduino의 인터럽트 0 핀(디지털 핀 2)에 연결됩니다. Arduino 인터럽트는 상승 에지에 의해 트리거되도록 구성됩니다. 결과적으로 이미터 파형의 상승 펄스마다 인터럽트가 처리됩니다. 주어진 시간에 수신된 인터럽트 수는 인터럽트 서비스 프로그램을 사용하여 변수를 증가시켜 계산됩니다. 계산 주기 동안 경과된 시간은 millis() 함수를 사용하여 결정됩니다. millis() 함수는 Arduino 보드가 켜진 후 경과한 밀리초 수를 반환합니다. 계산주기 전후에 millis() 함수를 호출하여 그 차이를 계산하면 계산주기 동안 경과된 시간을 알 수 있습니다. 값(인터럽트 수/밀리초당 횟수) * 60000에 따라 분당 회전 수(RPM)가 결정됩니다.

모터 속도 제어
전위차계를 사용하여 모터 속도를 제어하는 ​​장치도 회로에 포함되어 있습니다. 트랜지스터 Q1은 모터를 제어하는 ​​데 사용됩니다. 베이스는 전류 제한 저항 R1을 통해 Arduino의 PWM 핀 9에 연결됩니다. R4 속도 제어 전위차계 모터는 Arduino의 아날로그 핀 A0에 연결됩니다. 이 핀의 전압은 anlogRead 기능을 사용하여 0에서 1023 사이의 값으로 변환됩니다. 그런 다음 이 값을 4로 나누어 0~255 범위를 얻습니다. 주어진 값 anlogWrite 함수를 사용하여 PWM 핀 9에 기록됩니다. 결과는 핀 9의 구형파이며, 그 듀티 사이클은 AnalogWrite 함수를 사용하여 쓴 값에 비례합니다. 예를 들어, 값이 255이면 듀티 사이클은 100%가 되고, 값이 127이면 듀티 사이클은 약 50%가 됩니다. D1은 환류 다이오드이고 C1은 잡음 억제 커패시터(디커플러)입니다. RPM과 듀티 사이클은 표준 LiquidCrystal 라이브러리를 사용하여 LCD 화면에 표시됩니다. 이 문서를 읽어보세요: Arduino용 인터페이스 LCD 디스플레이. Arduino 기반 디지털 타코미터의 전체 코드는 다음과 같습니다.

프로그램 코드
#포함하다 LiquidCrystal LCD(12,11,6,5,4,3); int pwm=9; int 냄비=A0; 부동 소수점 값=0; 정수 퍼센트; 플로트 회전수=0; int rpm; int 옛날=0; 시간; void isr() //서비스 루틴 중단 ( rev++; ) void setup() ( lcd.begin(16,2); //LCD 초기화attachInterrupt(0,isr,RISING); //인터럽트 연결 ) void loop() ( Delay(1000); detachInterrupt(0); //인터럽트를 분리합니다 time=millis()-oldtime; //시간을 찾습니다 rpm=(rev/time)*60000; //rpm을 계산합니다 oldtime=millis(); / /현재 시간 저장 rev=0; value=analogRead(pot); //속도 제어 POT 값을 읽음 =value/4; //원하는 속도 백분율 설정=(value/255)* 100; //사용률 %를 찾습니다. lcd.print("___TACHOMETER___"); lcd.print(" ");
메모
Arduino 보드는 외부 전원 소켓을 통해 9V 전원 공급 장치를 공급받을 수 있습니다.
일부 회로 구성요소에 필요한 5V 전압은 Arduino 보드의 5V 소스에서 공급될 수 있습니다.
사용되는 팬은 9V/100mA 전압을 사용합니다. 2N2222 트랜지스터는 최대 800mA의 전류만 견딜 수 있습니다. 로드를 선택할 때 이 점을 명심하십시오.
사용된 LCD는 JHD162A입니다.
전위차계 R5를 사용하여 LCD 디스플레이의 대비를 조정할 수 있습니다. 연결되면 디스플레이에 아무것도 표시되지 않습니다. 디스플레이에 이미지가 나타날 때까지 R5를 조정합니다. 전위차계 R5 슬라이더의 최적 전압 범위는 0.4~1V입니다.
LTH-1550 포토 인터럽트 모듈에서는 적외선 포토트랜지스터와 적외선 다이오드가 제거되었습니다.
포토트랜지스터의 측면은 전기 테이프로 덮어야 합니다.
센서 위치는 아래 그림과 같습니다.

이는 차량 속도와 엔진의 크랭크샤프트 속도를 측정하는 디지털 장치를 설명합니다. 표시기는 1602A 유형 LCD 디스플레이이며 HD44780 컨트롤러를 기반으로 하는 표준입니다.

1602A라는 명칭은 실제로 한 줄에 16자씩 두 줄로 되어 있다는 의미입니다. 이 표시기는 Aliexpress에서 "HD44780"(81 루블 가격)을 검색하여 구입했습니다. 이미 언급했듯이 이 표시에는 두 개의 선이 있습니다. 따라서 장치의 맨 윗줄에는 자동차의 속도가 표시되고 맨 아래 줄에는 엔진 속도가 표시됩니다.

"Orion-BK" 등과 같은 많은 온보드 컴퓨터와 LED 7세그먼트 표시기가 있는 장치와 달리 이 LCD 디스플레이는 백라이트가 켜져 있을 때 매우 선명한 이미지, 빛이 있는 곳과 밤의 어둠 속에서 모두 완벽하게 눈에 띄며, 이는 자동차 사용에 특히 중요합니다.

장치 회로는 ATMEGA328 마이크로 컨트롤러가 있는 기성품 ARDUINO UNO 보드와 USB 프로그래머 및 전원 공급 장치를 포함하여 작동에 필요한 모든 "배관"을 기반으로 합니다.

Aliexpress의 ARDUINO UNO 비용은 200 루블부터 시작됩니다. ARDUINO UNO 보드에 대한 설명 및 소프트웨어이를 위해 개인용 컴퓨터에 연결하는 방법은 저자가 L.1에서 제공하므로 ARDUINO가 무엇인지, "무엇과 함께 먹는지"를 모르는 사람이 있다면 먼저 L.1의 기사를 읽어보세요.

이 장치는 전원을 통해 자동차의 점화 스위치 출력에 연결되며 홀 센서(그 중 하나는 점화 센서이고 두 번째는 속도 센서)로부터 신호를 수신합니다.

개략도

이 장치는 분사 엔진이 장착된 차량에서만 작동할 수 있습니다(기화기 차량에는 속도 센서가 없으며 모든 차량에 점화 센서가 있는 것은 아닙니다). 장치 다이어그램은 그림 1에 나와 있습니다. 이 그림에서 ARDUINO UNO 보드는 "평면도"로 개략적으로 표시됩니다.

쌀. 1. 개략도 Arduino를 기반으로 한 속도계 및 타코미터.

포트를 센서와 일치시키기 위해 트랜지스터 VT1 및 VT2의 캐스케이드가 사용됩니다. 점화 스위치 출력을 통해 장치에 전원이 공급되므로 점화가 켜진 상태에서만 작동합니다. 속도 센서와 자동차 점화 센서는 펄스 소스이며, 그 주파수는 자동차 기계 부품의 회전에 따라 달라집니다.

4기통 가솔린 엔진이 장착된 자동차의 점화 센서는 크랭크샤프트가 회전할 때마다 2개의 펄스를 생성합니다. 엔진에 4개의 실린더가 없으면 펄스 반복률이 달라집니다.

속도 센서는 다르지만 대부분, 특히 국산차의 경우 킬로미터당 6000개의 자극을 제공합니다. 킬로미터당 2500번의 펄스를 제공하는 것들도 있지만 아마도 다른 것들도 있을 것입니다.

프로그램

자세한 설명이 포함된 C++ 프로그램은 표 1에 나와 있습니다. 프로그램의 작동은 센서에서 나오는 펄스 주기 측정과 크랭크샤프트의 속도 및 회전 속도 계산을 기반으로 합니다.

표 1. 소스 코드프로그램.


작동하려면 입력 펄스의 양수 또는 음수 에지의 지속 시간을 마이크로초 단위로 측정하는 pulseln 함수를 사용하십시오. 따라서 주기를 알아내려면 양의 반주기와 음의 반주기의 지속 시간을 더해야 합니다.

여기서 T는 초 단위의 기간이고 F는 km/h 단위의 속도입니다. 주기는 마이크로초 단위로 측정되므로 실제 공식은 다음과 같습니다.

센서가 km당 2500펄스(일본어)인 경우 공식은 다음과 같습니다.

따라서 주기는 마이크로초 단위로 측정됩니다.

크랭크 샤프트 속도를 측정하려면 다음 공식이 사용됩니다.

여기서 T는 초 단위의 주기이고, F는 분당 회전수 단위의 크랭크샤프트 회전 속도입니다. 주기는 마이크로초 단위로 측정되므로 실제 공식은 다음과 같습니다.

그런 다음 결과는 LCD 디스플레이의 해당 라인에 표시됩니다. 측정 단위는 "km/h"와 "ob/tip"으로 표시됩니다(원하지 않으면 변경할 수 있습니다).

예를 들어, 입력 신호가 없으면 점화 장치가 켜져 있지만 엔진이 시동되거나 구동되지 않는 경우 신호가 없는 라인에 "inf"라는 문구가 표시됩니다.

원칙적으로는 설정이 필요하지 않습니다. 그러나 특정 자동차의 속도 센서가 킬로미터당 몇 개의 펄스를 제공하는지 알 수 없는 경우 먼저 이를 명확히 해야 합니다.

기간으로 나누어진 숫자를 다이얼 속도계로 확인하여 실험적으로 조정할 수도 있고, 표준 속도계에 결함이 있는 경우(이것이 이 장치를 제작한 이유일 수도 있음) 불가능할 수도 있습니다.

하지만 속도 센서의 매개변수를 알아내는 것이 더 좋습니다. 그런 다음 프로그램에서 기간으로 나눈 숫자를 계산합니다. 이 숫자를 X와 킬로미터당 펄스 수 N으로 표시하겠습니다. 그런 다음 X는 다음 공식을 사용하여 계산할 수 있습니다.

엑스 = 3600000000 / N

예를 들어, 센서가 킬로미터당 2,500개의 펄스를 제공하는 경우:

X= 3600000000 / 2500 = 1440000

또는 센서가 킬로미터당 6000개의 펄스를 제공하는 경우:

X= 3600000000 / 6000 = 600000

결론적으로

장치가 오작동하는 경우 저항 R3 및 R6의 저항과 커패시터 C2 및 S3의 커패시턴스를 선택하여 각각 트랜지스터 VT1 및 VT2의 입력 단계의 작동 모드를 최적화해야 할 수 있습니다.

Karavkin V. RK-12-16.

문학:

1. Karavkin V. 마이크로컨트롤러에 대한 두려움을 해결하기 위한 ARDUINO의 크리스마스 트리 플래셔.” RK-11-2016.

타코미터는 바퀴나 회전하는 모든 것의 RPM(분당 회전 수)을 계산하는 데 유용한 도구입니다. 타코미터를 만드는 가장 쉬운 방법은 IR 송신기와 수신기를 사용하는 것입니다. 그들 사이의 연결이 중단되면 무언가 회전하고 있음을 알 수 있으며 코드를 사용하여 통신 중단 빈도에 따라 RPM을 계산할 수 있습니다.

이 기사에서는 IR 송신기와 수신기를 사용하여 Arduino를 사용하여 회전 속도계를 만드는 방법을 살펴보겠습니다. 결과는 16x2 LCD 디스플레이에 표시됩니다.

이 프로젝트의 목표는 하나의 입력과 하나의 출력이 있는 시스템을 만드는 것입니다. 장치의 입력에는 통신이 중단될 때 높은(+5V) 레벨에서 낮은(+0V) 레벨로 변경되는 신호가 있습니다. 이 신호에 따라 Arduino는 내부 카운터 값을 증가시킵니다. 그런 다음 수행 추가 처리및 계산을 수행하고 트리거가 중단되면 계산된 RPM이 LCD 디스플레이에 표시됩니다.

통신을 위해 낮은 저항 저항을 통해 연결된 IR LED의 IR 빔을 사용하여 밝게 빛납니다. IR LED의 빛이 없을 때 "닫히는" 광트랜지스터를 수신기로 사용하겠습니다. IR 송신기와 수신기 사이에 컴퓨터 팬이 배치되어 켜집니다. 트랜지스터 회로를 통해 연결된 IR 수신기는 인터럽트를 생성합니다. 결과를 출력하려면 사용됩니다. 아두이노 LCD인터페이스를 통해 최종 RPM 값을 LCD에 표시할 수 있습니다.

강요:

개발 보드

트리머 저항기 5kΩ

점퍼

SIP 커넥터

2x 2N2222 NPN 트랜지스터

적외선 LED

포토트랜지스터

10옴 저항

저항기 100kΩ

저항기 15kΩ 또는 16kΩ

컴퓨터 팬

품목 상세 목록

프로젝트에 사용되는 모든 요소는 위에 나열되어 있지만 주요 요소의 기능을 더 자세히 설명하겠습니다.

아두이노 우노

이것 아두이노 보드, 수신기와 센서 사이에 컴퓨터 팬 블레이드가 있음을 보고하는 IR 빔 중단으로 인한 펄스를 처리하는 데 사용할 것입니다. Arduino는 타이머와 함께 이러한 펄스를 사용하여 팬의 RPM을 계산합니다.

LCD 16×2

Arduino가 RPM을 계산하면 이 값이 사용자 친화적인 방식으로 디스플레이에 표시됩니다.

트리머 저항기 5kΩ

이 트리머는 16x2 LCD의 대비를 조정하는 데 사용됩니다. 0~+5V 범위의 아날로그 전압을 제공하여 LCD 디스플레이의 밝기를 조정할 수 있습니다.

적외선 LED 및 광트랜지스터

강력한 IR 빛이 닿으면 포토트랜지스터가 켜집니다. 따라서 IR LED가 켜지면 포토트랜지스터가 열린 상태로 유지되지만, 예를 들어 IR LED가 팬 블레이드로 덮여 있으면 포토트랜지스터가 닫힙니다.

2N3904 및 2N3906

이 트랜지스터는 +0 및 +5V 이외의 전압이 없는 광트랜지스터의 출력 펄스를 Arduino에 제공하기 위해 신호 레벨을 변환하는 데 사용됩니다.

개략도


회로에서 LCD 디스플레이와의 통신 인터페이스는 단순화되었으며 제어 라인 2개와 데이터 라인 4개만 있습니다.

계획의 특징

16×2 LCD 인터페이스

2개의 제어 핀과 4개의 데이터 전송용 핀이 Arduino에서 LCD 디스플레이로 연결됩니다. 이는 LCD에 무엇을 해야 할지, 언제 해야 할지 알려 주는 것입니다.

IR 빔 차단 회로

IR 빔 차단 신호는 두 번째 디지털로 이동합니다. 아두이노 핀. 이로 인해 Arduino가 중단되어 펄스를 계산하고 회전 속도계가 데이터를 수신할 수 있습니다.

아두이노 LCD 라이브러리

이 프로젝트에서는 Arduino LCD 라이브러리를 사용합니다. 기본적으로 두 번째 줄의 RPM 값을 새 값으로 업데이트하겠습니다.

준비하려면 이 라이브러리를 사용하여 LCD에 "Hello, World!"를 표시하는 아래 코드를 살펴보세요. 타코미터에서는 유사한 코드, 특히 "lcd.print(millis()/1000);"를 사용합니다.


계속 진행하기 전에 이 LCD 라이브러리의 기능을 최대한 자세히 이해하십시오. 너무 복잡하지 않으며 Arduino 웹사이트에 잘 문서화되어 있습니다.

Arduino를 사용하여 RPM 계산

컴퓨터 팬의 RPM을 계산할 예정이므로 계산에 IR 빔 차단을 사용한다는 점을 이해해야 합니다. 이것은 매우 편리하지만 컴퓨터 팬의 블레이드가 7개라는 점을 고려해야 합니다. 이는 7번의 중단이 1회전임을 의미합니다.

인터럽트를 추적하는 경우 7번째 인터럽트마다 1회의 전체 회전이 방금 발생했음을 의미한다는 것을 알아야 합니다. 회전을 완료하는 데 걸리는 시간을 추적하면 RPM을 쉽게 계산할 수 있습니다.

1차 회전시간 = P * (μS/revolution)

RPM = rpm = 60,000,000 * (μS/min) * (1/P) = (60,000,000 / P) * (rpm)

RPM을 계산하려면 위에 주어진 공식을 사용합니다. 공식은 정확하며 정확도는 Arduino가 인터럽트 사이의 시간을 얼마나 잘 추적하고 전체 회전 수를 계산할 수 있는지에 따라 달라집니다.

회로 조립

아래 사진 보면 다 나와요 필요한 세부 사항그리고 다이어그램과 같은 점퍼.


먼저 +5V와 LCD 디스플레이의 데이터/제어선을 연결합니다. 그런 다음 LCD 디스플레이, 대비 전위차계 및 전원 LED.


IR 빔의 회로 차단기가 조립되었습니다. IR LED와 포토트랜지스터 사이에 어느 정도 거리를 유지하십시오. 이 사진은 IR LED와 컴퓨터 팬을 배치할 포토트랜지스터 사이의 거리를 보여줍니다.


하드웨어 이야기는 이제 그만! 장치가 어떻게 작동하는지 확인하기 위해 펌웨어/프로그램을 시작해 보겠습니다!

소프트웨어 부분

코드에는 두 가지 주요 부분이 있으며 아래에 자세히 설명되어 있습니다.

기본 LCD 새로고침 주기

인터럽트 시간 업데이트

메인 사이클은 LCD 디스플레이의 회전과 업데이트를 계산합니다. 메인 루프는 거대한 while(1) 루프이므로 항상 실행되고 RPM이 계산되며 LCD는 초당 여러 번 업데이트됩니다. 인터럽트의 기능은 IR 인터럽트 사이의 시간을 계산하므로 메인 루프에서 RPM을 계산할 수 있습니다.

컴퓨터 팬에는 7개의 블레이드가 있으므로 이 회전 속도계는 해당 팬에만 작동하도록 설계되었습니다. 팬이나 기타 장치가 회전당 4개의 펄스만 생성하는 경우 코드를 "(time*4)"로 변경합니다.

다음은 타코미터 작동 방식에 대한 데모 비디오입니다.

두 팬은 약 3000RPM과 2600RPM으로 작동하며 오류는 약 +/-100RPM입니다.

Arduino의 타코미터 검토

팬은 인터럽트 펄스를 생성하고 출력에는 RPM이 표시됩니다. 정확도는 100%는 아니지만 약 95%이고 부품 비용은 10달러이므로 Arduino에서 이 회전 속도계를 구축하는 것이 합리적입니다.

이제 무엇을 해야 할까요?

빔 브레이크 기반 시스템은 RPM 측정뿐만 아니라 다른 센서로도 유용합니다. 예를 들어, 문이 열려 있는지 닫혀 있는지 알고 싶습니다. 아마도 로봇 아래로 무언가가 지나가고 있는지 알고 싶을 것입니다. 빔 컷에는 다양한 용도가 있으며 여기에 사용된 회로는 매우 간단하여 다른 놀라운 장치를 개선하고 구축할 수 있는 방법이 많습니다.

결론

전반적으로 이 프로젝트는 성공했다고 생각합니다... 하지만 시간과 경험의 문제입니다.. 어쨌든 시스템은 의도한 대로 상당히 안정적으로 작동하여 예상한 결과를 얻었습니다. 이 기사를 읽고 Arduino를 사용하여 회전 속도계를 만드는 방법을 배우는 것이 즐거웠기를 바랍니다!

원본 기사 영어(번역: 알렉산더 카샤노프 cxem.net 사이트의 경우)

엔진 속도 센서 모듈은 주로 전기 모터 샤프트의 회전 속도를 감지하도록 설계되었습니다. 이 모듈은 마이크로컨트롤러와 함께 속도 외에도 펄스 수와 샤프트 위치를 결정할 수 있습니다.



일반적으로 센서는 특정 이벤트를 기록하여 수량을 측정하며, 이벤트 수는 이벤트가 발생한 기간과 관련됩니다.


따라서 이 경우 속도가 측정됩니다. 여기서 이벤트는 슬롯이 있는 디스크가 회전하는 동안 광학 센서의 작동 결과로 수신된 임펄스를 의미합니다. 센서는 LED와 포토트랜지스터로 구성되어 있으며, LED에서 나오는 빛의 유무를 감지합니다.


계획


제시된 회로는 기록된 펄스를 마이크로컨트롤러로 보내는 데 사용될 수 있습니다. 계획의 기초는 다음과 같습니다. 광학 센서 LED 및 포토트랜지스터 출력이 있는 OS25B10(OC1).


다음은 간단한 슈미트 트리거로 구성된 LM393 듀얼 비교기 IC(IC1)입니다. 녹색 LED(LED1)은 회로에 전압이 인가되어 있음을 나타내며, 빨간색 LED(LED2)는 엔진 속도 센서 모듈의 출력을 모니터링합니다. 추천 작동 전압모듈은 4.5~5.5V입니다.




여기서 저항 R1(180ohm)은 OS25B10 광학 센서(OC1) 내부 LED의 작동 전류를 제한하는 데 사용됩니다. 필요한 경우 프로토타입의 값을 변경할 수 있습니다. 또한 저항 R2(10kOhm)의 값을 조정하여 회로에 필요한 전압을 얻을 수도 있습니다. 저항 R7(10KΩ)은 옵션 풀업 저항입니다.


인코더 디스크


센서 슬롯에 배치된 인코더 디스크는 광학 센서를 분할하여 디스크 한쪽에는 LED가 있고 다른 쪽에는 포토트랜지스터가 있습니다. LED에서 나오는 광선의 경로가 디스크에 의해 차단되지 않으면 포토트랜지스터는 전류를 통과하고, 그렇지 않으면 닫힙니다.

회전 속도 센서FC -03

회전 속도 센서 모듈 또는 선형 운동. 모듈 유형 FC-03. 가정용 및 교육용으로 다양한 메커니즘의 움직이는 부품의 기계적 매개변수를 제어하도록 설계되었습니다. 소형 로봇의 기본 플랫폼에 설치하면 모터 제어 시스템을 조립하고 물체의 움직임을 제어할 수 있습니다.

바퀴 달린 로봇의 섀시에 FC-03 회전 속도 센서 설치.

형질

전원 공급 장치 3.3~5V
슬롯형 디스크의 여유 폭 5mm
모듈 크기 38 x 14 x 7mm
3mm 나사 장착 구멍

콘택트 렌즈FC-03



연락처는 보드에 표시되어 있습니다.

VCC - 전원 공급 장치.
GND- 공통선, 부정적인 전원 공급 장치.
DO - 펄스 신호 출력.
AO - 광커플러 ITR9608의 직접 출력.

작동 원리


모듈의 감지 요소는 ITR9608 광학 쌍입니다. 하우징의 한 돌출부에는 다른 돌출부에 있는 포토트랜지스터를 향하는 적외선 LED가 있습니다. 돌출부 사이에 불투명한 판을 삽입하면 LED에서 나오는 IR 복사가 차단되고 포토트랜지스터가 닫힙니다. 이러한 구성요소는 포토인터럽터(photointerrupter)라고도 불리지만 방해만 감지합니다. 광속. 다이어그램에 표시된 것처럼 트랜지스터 이미 터에서 신호가 장치 회로로 들어갑니다.

빛은 제어되는 메커니즘의 움직이는 부분에 부착된 플레이트에 의해 차단됩니다. 센서를 사용하면 움직이는 평면의 끝 위치로의 이동은 이와 관련된 구조적 요소가 센서에 들어갈 때 결정됩니다. 다양한 기계 부품의 회전 매개변수를 측정합니다. 이것이 기계적 매개변수가 다음으로 변환되는 방식입니다. 전기량그리고 더 나아가 프로그램 가치에 대해 알아봅니다.

회전 속도 센서 FC-03은 회전 속도를 측정하는 데 사용됩니다. 회전 방향을 결정하는 데 사용할 수 없습니다. 구멍이 있는 디스크가 모터 샤프트나 기어박스에 설치됩니다. 모듈 광커플러에는 5mm 너비의 슬롯이 있습니다. 애니메이션에 표시된 것처럼 디스크가 회전하면 슬롯에서 플레이트의 구멍과 섹션이 끊임없이 번갈아 나타납니다. 센서는 디스크 요소의 교대를 전기 충격으로 변환합니다. 모듈의 전자 장치는 센서 신호를 디지털 인식에 적합하게 만듭니다. 로직 칩또는 마이크로컨트롤러.

계획FC-03




ITR9608의 신호는 비교기 LM393의 입력으로, 출력에서 ​​핀 D0으로 이동하고 표시기 LED는 디지털 신호높은 논리 레벨과 낮은 논리 레벨로 구성됩니다. 출력 A0에 대한 신호는 변환 없이 ITR9608에서 직접 제공됩니다. 논리적 수준. LM393 비교기를 사용하면 부드러운 펄스 에지를 얻고 센서 출력의 전류 부하를 약간 증가시킬 수 있으며 출력 상태를 나타내는 회로에 LED를 설치할 수 있습니다.

표시

보드에는 2개의 LED가 있습니다. 하나는 FC-03 회전 속도 센서의 활성화를 보여주고, 다른 하나는 센서에 장애물이 없음을 보여줍니다. 처음으로 장치를 켜면 두 LED가 모두 켜져야 합니다. 차단기의 여유공간에 금속판을 넣으면 LED 1개가 꺼져야 합니다.

애플리케이션

센서를 이용하면 회전속도, 가속도뿐만 아니라 바퀴 달린 로봇이 이동한 거리도 측정할 수 있으며, 엔진의 소모 수명도 기록할 수 있습니다. 각 바퀴가 자체 엔진으로 구동되는 경우 바퀴의 회전 속도를 제어하는 ​​것이 특히 중요합니다. 직선 이동의 경우 모든 바퀴의 회전 속도가 동일해야 하며 회전할 때는 제어 시스템의 알고리즘을 따릅니다.


디스크가 회전함에 따라 한 번 회전할 때 알려진 수의 구멍이 센서 슬롯을 가로지릅니다. 구멍 수를 세어 휠의 1회전, 예를 들어 15.5회전을 결정할 수 있습니다. 단위 시간당 회전수를 측정하여 바퀴의 회전 주파수와 물체의 속도를 얻습니다. 센서의 신호와 정확한 시간 간격 값을 기반으로 장치는 동작 매개변수를 계산합니다. 여기서는 마이크로컨트롤러의 사용이 관련됩니다.
다음 Arduino 프로그램을 사용하면 분당 회전 수를 확인하고 결과를 직렬 터미널 창에 표시할 수 있습니다.

#define PIN_DO 2 // Arduino에서 사용되는 핀을 설정합니다.
휘발성의 부호 없는 int 펄스;
플로트 rpm;
서명되지 않은 오랜 시간이전;
#define HOLES_DISC 15

무효 카운터()
{
펄스++;
}

보이드 설정()
{
Serial.begin(9600);
pinMode(PIN_DO, INPUT);
펄스 = 0;
시간이전 = 0;

}

무효 루프()
{
if (밀리스() - timeOld >= 1000)
{
detachInterrupt(digitalPinToInterrupt(PIN_DO));
rpm = (펄스 * 60) / (HOLES_DISC);
Serial.println(rpm);

TimeOld = 밀리();
펄스 = 0;
attachmentInterrupt(digitalPinToInterrupt(PIN_DO), 카운터, FALLING);