function generator
Post on 03-Jan-2016
45 Views
Preview:
DESCRIPTION
TRANSCRIPT
설계 목표블록 흐름도
프로그램 소스관련 사진
Trouble Shooting설계 일정 및 역할 분담
1. 정현파 , 삼각파 , 펄스파 3 가지의 파형 발생2. 출력 전압 , Offset, 주파수 범위 가변 가능3. 파형 , 출력 전압 , 주파수 범위 LCD 로 표시4. 키보드를 사용하여 제어
DSP 2811 KIT 를 이용하여 함수 발생기 설계
키보드 입력 RS232 통신 DSP
기본 파형 출력파형 조절LCD 로 표시
long up_down=0; // 펄스파 변수 //int amp=1000; // 전압 //int freq=1; // 주파수 //int offs=50; //offset//int peak=0; // 전압 피크치 //int range=1; // 변수 바뀌는 범위 //int sam=0; // 삼각파 //int sa=0; // 펄스파 //
if(rd=='1'){freq = freq + range;rd = '0';} //1 눌렀을 때 주파수 up
else if(rd=='2'){ freq = freq - range; rd = '0'; } //2 눌렀을 때 주파수
down if(freq >=1000){freq=1000;} if(freq <=1){freq=1;}
if(rd=='3'){ amp = amp + range; rd = '0'; } //3 눌렀을 때 전압 upelse if(rd=='4'){ amp = amp - range; rd = '0'; } //4 눌렀을 때 전압 down
if(amp >=4000){amp=4000;}if(amp <=0){amp=0;}
if(rd=='5'){ offs=offs+range; rd='0'; } //5 눌렀을 때 offset upelse if(rd=='6'){ offs=offs-range; rd='0'; } //6 눌렀을 때 offset down
if(offs >=4000){offs=4000;}if(offs <=0){offs=0;}
if(rd=='7'){ range=range*10; rd='0'; } //7 눌렀을 때 범위 × 10else if (rd=='8'){ range=range/10; rd='0'; } //8 눌렀을 때 범위 ÷ 10
if(range >=1000){range=1000;}if(range <=1){range=1;}
if(tcnt0 >= ARRAY_LEN){up_down= 1;
}else if(tcnt0<=0){
up_down=0;} // 삼각파 생성 조건 if(up_down == 1){
tcnt0=tcnt0-freq;}else if(up_down==0){
tcnt0=tcnt0+freq;} // 펄스파 생성 조건
peak= amp+offs;if (peak >=4000) {peak= 4000;} // 피크 값 범위
if(++idx >= ARRAY_LEN) idx = 0;sv[idx] = sin(freq * 2 * PI * idx/(ARRAY_LEN-1)) * amp + offs + 2048;// 정현파 생성 함수
sam = tcnt0 * amp / 500 + offs; // 삼각파sa = up_down * amp + offs; // 펄스파
if(rd=='w') r2='w';else if(rd=='e') r2='e';else if(rd=='q') r2='q';
// 키 입력이 되면 변수 r2 로 지정
if (r2=='w') out_dac(1,sam);else if (r2=='e') out_dac(1,sa);else if (r2=='q') out_dac(1,sv[idx]);
// 변수 값 발생시 각각의 파형 출력
파형 ( 정현파 )파형 ( 삼각파 )
파형 ( 사각파 )
출력Offset
주파수
Range
Problem) 삼각파 , 펄스파 생성 함수의 설정
sam = tcnt0 * amp / 500 + offs; sa = up_down * amp + offs;
Sol) tcnt0 과 up_down 변수를 지정하여 문제를 해결
Problem) 수치 변경 시 숫자를 한번 눌렀는데 지정한 값이 계속 올라감 .
if(rd=='1'){freq = freq+range;rd='0';
Sol) ‘rd’ 값을 0 으로 초기화 함으로써 무한으로 반복하는 현상을 해결
Problem) 파형 변경 시 전압 , 오프셋 등 변수 값은 초기화 되는데 LCD 에 표시된 값은 변화 없음
if(rd=='w') r2='w';else if(rd=='e') r2='e';else if(rd=='q') r2='q';
if (r2=='w') out_dac(1,sam);else if (r2=='e') out_dac(1,sa);else if (r2=='q') out_dac(1,sv[idx]);
Sol) ‘r2’ 변수를 지정하여 파형 변환 시 생기는 문제를 해결
• 결과 발표
• 포트폴리오 작성
• 검토 및 외형제작
• 재료구입 및 회로제작
• 제안서 작성 및 회로구상1주차
2주차
3주차
4주차
관련 이론 수집
보고서 작성 부품 구입 외형 제작 회로 구성 작품 검토
최근영
임우창
계승현
김주현
top related