조도 센서 2007390012 김한수
제작목표 및 목적 목적 목표 CdS 센서를 이용한 조도 측정 조도계와 제작한 센서를 이용하여 빛의 밝기를 측정한 후 두 센서간의 오차 값 최소화
조도센서의 측정 원리 ADC AVR LCD
동작원리 해설 5볼트 0볼트 커브피팅 ADC AVR LCD 0~5V의 값을 받아 ADC로 출력 ADC 값을 LUX값으로 변환
커브피팅 데이터 값에 따라 그래프의 식을 구하는 것
재료 AVR CdS 광원 조도계 LCD
제작 H/W 내부 외부 광원 조도계
제작 회로도
측정데이터
측정데이터
AVR 프로그램(1) LCD를사용 ADC 설정 #include <mega128.h> #include <delay.h> #include <stdio.h> #include <math.h> #asm .equ __lcd_port=0x1B ;PORTA #endasm #include <lcd.h> #define ADC_VREF_TYPE 0x40 int i; unsigned char string[20] = {0,}; unsigned int lux = 0; float adc = 0; float sum = 0; unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10); ADCSRA|=0x40; while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } LCD를사용 ADC 설정
AVR 프로그램(2) 각 포트와 INT부분을 설정하는 구문 LCD로 화면에 출력하는 구문 void main(void) { PORTF=0x00; DDRF=0x00; ACSR=0x80; SFIOR=0x00; ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x86; lcd_init(16); lcd_clear(); sprintf(string,"ACD = %d",read_adc(0)); lcd_gotoxy(0,1); lcd_puts(string); while (1) { // Place your code here sum = 0; for(i=0;i<10;i++) sum += read_adc(0); } adc = sum/10; lux = 8 * 0.000000001 * exp(0.0261 * adc); lcd_gotoxy(0,0); sprintf(string, "LUX = %d", lux); lcd_puts(string); lcd_gotoxy(0,1); sprintf(adcstring, "ACD = %.f", adc); delay_ms(1000); lcd_clear(); }; 각 포트와 INT부분을 설정하는 구문 LCD로 화면에 출력하는 구문
후기 아쉬운 점 느 낀 점 Op-amp 사용하지 못한 점 실험과 실제테스트간의 데이터차이가 많아 결과가 좋지 않게 나온 것 나만의 H/W를 제작하지 못한 점 느 낀 점 Op-amp를 사용하지는 않았지만 실험과정에서 사용하면서 사용법을 익힌 점 H/W를 제작 함에 있어서 환경의 중요성