8051/PIC > DT516-160.c CDS 조도센서 읽기

TODAY954 TOTAL678,621
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-160.c CDS 조도센서 읽기

페이지 정보

작성자 키트 작성일2017-08-24 11:01 조회650회 댓글0건

첨부파일

본문

3660040644_DiFBS643_25C625F225B025A125BA25B825B525E5_cds_25BF25B925C125A6_ekit.gif3Ftype3Dw740

 

 

DT516-063.c ADC 인터럽트사용 입력값 평균

 

이 소스를 가지고 체크를 하겠습니다.

저항은 1%를 사용 하였고(위 사진과는 다르지만)

CDS는 GL5516으로 10 LUX에서 5~10K옴 입니다. ( 비교적 저항 값이 낮은 센서입니다. )

 

 

 

3660040644_8jLz1SK7_dsc01609-1_ekit.jpg3Ftype3Dw740

밝을 때의 ADC 값입니다.

밝을 때에는 CDS 저항값이 줄어들어서 ADC 변환 값이 작습니다.

 

3660040644_RMGXC7zx_dsc01610-1_ekit.jpg3Ftype3Dw740

절연 테이프를 붙이고 측정 했습니다.

519 이므로 2.5V 정도...즉 CDS 저항 값이 10K 정도입니다.

완전히 암흑을 못 만들어서 발생 하는 문제입니다.

절연테이프가 약간 빛이 새기도 하고

더큰 문제는 CDS 아래서도 기판을 투과 하는 빛의 영향을 많이 받습니다.

 

3660040644_ml2IK5Zu_dsc01611-1_ekit.jpg3Ftype3Dw740

아랫쪽 주변까지 대충 막고나서야 비로서 많이 어두워졌고 912까지 값이 올라갔습니다.

(밤에는 더욱 어둡겠지만..)

 

3660040644_ERhvlDe1_dsc01612-1_ekit.jpg3Ftype3Dw740

저항과 CDS 연결 모양입니다.

납땜도 점점 귀찮아지는..ㅡ.ㅡ;;;

 

값이 어느정도 잘 나오는 것 같아서 특별히 소스코드는 손댈 것이 없습니다.

 

3660040644_9C14p2OW_dsc01615-1_ekit.jpg3Ftype3Dw740

 

밝기에 따라서 적당히 값을 처리 해주거나 ADC 값을 직접 체크 하면 되지만

위 상태에서 백분율로 만든다면

최고 밝기~최저밝기는 123~912 이므로

 

//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-160.c
// CDS 조도센서 읽기

//-------------------------------------------------------------
#include
//
#include "DT516-main.h"
//
U_C pwm[16]={100};
U_I count=0;
//
U_C adc_cnt=0;
U_I adc_sum=0;
//
void ADC_Interrupt(void) interrupt 9{ // ADC_Interrupt:
    adc_sum+=((ADCH<<8) + ADCL);
    if(++adc_cnt>=64){

        adc_cnt=0; count=adc_sum/64; adc_sum=0;

        if(count<123)count=123;

        if(count>912)count=912;

        count-=123; // 결과는 0~789가 됩니다.

        count=(int)((float)count/7.89); // 결과는 0~100이 됩니다.

                                         

    }


    ADCTL=0xE8;
}
//
void Timer_0_Interrupt(void) interrupt 1{ // 7200Hz주기
    P4=0xFF; // FND OFF
    switch(FND_CNT){
        case 0: P0=Seg_Data[count/1000];     FND_COM1=0; break;
        case 1: P0=Seg_Data[(count/100)%10]; FND_COM2=0; break;
        case 2: P0=Seg_Data[(count/ 10)%10]; FND_COM3=0; break;
        case 3: P0=Seg_Data[count%10];       FND_COM4=0; break;
    }
    if(++FND_CNT>3)FND_CNT=0;
    //
    if(delay_buf){ if(--delay_buf==0)delay_flg=1; }
}
//
//
void main(){
    AUXR=(AUXR|0x40); P1=0xFF; P1M0=0xFF; P1M1=0; //P1.ch Hi-impedance input//ADCH=상위(BIT9,8) ADCL=하위
    ADCTL=0xE8; AUXIE=2; // ADC0 인터럽트 이네이블
    TMOD=2; ET0=1; TR0=1;
    EA=1;
    while(1){}
}
//-------------------------------------------------------------

 

count=(int)((float)count/7.89); // 결과는 0~100이 됩니다.
연산 결과가 밝을때 0이고 어두울때 100입니다.
밝기에 비례 하도록 바꾸려면
coun=100-coun; // 밝을때 100, 어두울때 0이 됩니다. 
                                         부분에 넣어주세요

댓글 0

조회수 650

등록된 댓글이 없습니다.

8051/PICHOME > 8051/PIC > 전체 목록

게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기