BASIC4MCU | 질문게시판 | 센서 질문입니다.
페이지 정보
작성자 오기 작성일2019-12-20 11:41 조회14,022회 댓글4건본문
코드비젼avr
atmega128
61번 adc1번핀 lm35 연결
62, 64 avcc,aref 두개 5V 연결
63GND는 미연결
lm35 예제처럼 vcc data gnd 제대로 연결
op앰프는 미연결
부저 17번핀 연결
#include <mega128.h>
#include <stdio.h>
#include <delay.h>
//
unsigned int adc_value, temp=0;
//
void main(void){
DDRB=0xFF;
ADMUX=0x41; ADCSRA=0xE7;
while(1){
adc_value=ADCW;
temp=(int)( (float)adc_value * 500.0 / 1023.0 );
if(temp>30){ PORTB=0xFF; _delay_ms(200); }
else { PORTB=0x00; _delay_ms(200); }
}
}
위와 같이 돌렸을 때
예를 들어 30도로 설정했을 때 부저가 울리지 않았다면
lm35쪽 온도를 데워주면 부저가 울려야하나 울리지 않습니다.
어떤 문제일까요.. 혹시나 하는 마음에 지금 일단 op앰프 사와서 달아보겠습니다.
댓글 4
조회수 14,022master님의 댓글
master 작성일
1도당 10mV이므로
30도인 경우에는 300mV(0.3V)입니다.
ADC변환값은 0.3V/5V=ADC/1023 이므로 ADC=1023*(0.3/5)=61.38=61
temp=(int)( (float)adc_value * 500.0 / 1023.0 );
이 식에 61을 대입하면
temp=61*500/1023=29.81427174975562=29
실수형인 것을 감안하면 1차이가 발생 할 수도 있지만 거의 같은 값이며
계산식에는 문제가 없음을 알 수 있습니다.
오기님의 댓글
오기
부저 테스트는 이미 해봤었습니다. 부저는 이상이 없습니다.
문제1. 온도센서를 뽑아도 부저가 계속 울립니다. 안그랬는데 갑자기 그러네요.
문제2. 부저가 울리지 않는 최저값에서 센서에 열을 가해도 부저가 울리지 않습니다.
제가 예제 회로도를 제대로 따라하지 못한걸까요?
master님의 댓글
master
오실로스코프가 있다고 하지 않았나요?
온도를 올렸을 때 0.3V 이상까지 증가하는지 체크하세요
master님의 댓글
master 작성일
#include <mega128.h>
#include <delay.h>
//
void main(void){
DDRB=0xFF;
while(1){ PORTB^=0xFF; _delay_ms(1000); }
}
부저는 간단한 코드로 테스트하면 됩니다.