내 친구와 나는 같은 보편적 인 학습 원격 컨트롤러를 설계하려는 이 하나의 목적을 학습. 우리가 기본적으로하고 싶은 것은 적외선 펄스를 저장하고 재생하는 것입니다.
36kHz, 38kHz 및 40kHz 신호를 감지하려고합니다. 40kHz 신호의주기는 입니다.
8 비트 PIC 마이크로 컨트롤러를 사용하려고합니다. 지금은 20MHz 고속 수정 발진기에서 실행되는 PIC16F616을 선택했습니다. 사용 가능한 두 가지 옵션이 있습니다.
Interrupt On Change
모듈을 사용하십시오 .- CCP 모듈의 캡처 모드를 사용하십시오.
첫 번째 옵션은 다음과 같습니다.
레지스터가 다음과 같이 설정되었다고 가정합니다 unsigned char _10_us = 0;
. 이 레지스터는 시간을 유지합니다. 주기 레지스터와 TMR2 모듈은 매 10 인터럽트 만드는 설정 초. 인터럽트가 발생하면 레지스터 가 증가 하고 종료됩니다. 최대 시간은 2.55msec입니다. 더 많은 시간 측정이 필요한 경우 필요에 따라 추가 레지스터를 정의하고 증분 할 수 있습니다._10_us
_1_ms
이제, 어떤 종류의 변경 (고 / 저 또는 저 / 고)으로 인터럽트가 생성 될 때마다 프로그램은 현재 시간, 즉 _10_us
레지스터 값을 기록합니다. 잠시 후, 다음 인터럽트가 생성되면 프로그램은 _10_us
레지스터 에서 저장된 값을 빼고 , 그 동안 10 초 단위로 그 동안 걸린 시간을 갖게됩니다 .
이 옵션을 사용하면 머리가 긁 힙니다. TMR2 인터럽트는 약 50 개의 명령마다 발생합니다. 인터럽트 처리에는 약 20 개의 지침이 필요합니다. 기간을 계산하여 배열에 저장하는 30 가지 지침이 남았습니다. 이 방법이 효과가 있습니까?
두 번째 옵션은 다음과 같습니다.
CCP1 핀에서 이벤트 (하이-로우)가 발생할 때 인터럽트를 생성하도록 CCP 모듈의 캡처 모드를 설정하십시오. 인터럽트 루틴에서는 프로그램의 태스크가 CCPR1H (아마도 필요하지 않을 것임)와 CCPR1L의 값을 계산하고 (필요한 경우) 저장할 수 있도록 플래그를 설정합니다. 그런 다음 캡처 모드 구성을 변경하여 로우에서 하이 에지가 발생할 때 인터럽트를 트리거합니다. 그리고 다음 이벤트를 기다립니다. 이 방법을 사용한 적이 없기 때문에이 방법의 성능을 추정 할 수 없습니다.
다른 옵션?
TSOP17xx 시리즈 와 같은 적외선 복조기 IC를 사용할 수 있습니다 . 그것은 우리의 문제를 완전히 해결할 것입니다. 그러나 몇 가지 질문이 떠 오릅니다.
우리의 독서 거리 요구 사항은 그리 많지 않습니다. 1 미터 (~ 3 피트). 38kHz에서 작동하도록 TSOP1738을 선택하면 36kHz 및 40kHz 신호 에서 얼마나 잘 작동합니까?
TSOP17xx 시리즈 데이터 시트의 4 페이지에 "책임의 주파수 의존성"그래프가 표시됩니다. 우리가 이해하는 한;
- 38kHz의 ~ 1.053 인 40kHz는 ~ 0.6의 상대 응답 성을 제공합니다.
- 38kHz의 ~ 0.95 인 36kHz는 ~ 0.65의 상대 응답 성을 제공합니다.
이 값들은 무엇을 의미합니까? TSOP1738을 사용해도 괜찮습니까?