220 likes | 443 Views
Function Generator. Ubiquitous Application Design. 11 조 2003731053 최근영 2003731049 임우창 2003731059 계승현 2003731063 김주현. 목 차. 설계 목표 블록 흐름도 프로그램 소스 관련 사진 Trouble Shooting 설계 일정 및 역할 분담. 설계 목표. DSP 2811 KIT 를 이용하여 함수 발생기 설계. 정현파 , 삼각파 , 펄스파 3 가지의 파형 발생 출력 전압 , Offset, 주파수 범위 가변 가능
E N D
Function Generator Ubiquitous Application Design 11조 2003731053 최근영 2003731049 임우창 2003731059 계승현 2003731063 김주현
목 차 설계 목표블록 흐름도프로그램 소스관련 사진Trouble Shooting설계 일정및 역할 분담
설계 목표 DSP 2811 KIT를 이용하여 함수 발생기 설계 정현파, 삼각파, 펄스파 3가지의 파형 발생 출력 전압, Offset, 주파수 범위 가변 가능 파형, 출력 전압, 주파수 범위 LCD로 표시 키보드를 사용하여 제어
블록 흐름도 키보드 입력 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 눌렀을 때 전압 up else 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 up else 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 눌렀을 때 범위 × 10 else 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
Trouble Shooting Problem) 삼각파, 펄스파 생성 함수의 설정 sam = tcnt0 * amp / 500 + offs; sa = up_down * amp + offs; Sol) tcnt0과 up_down 변수를 지정하여 문제를 해결
Trouble Shooting Problem) 수치 변경 시 숫자를 한번 눌렀는데 지정한 값이 계속 올라감. if(rd=='1'){ freq = freq+range; rd='0'; Sol) ‘rd’ 값을 0으로 초기화 함으로써 무한으로 반복하는 현상을 해결
Trouble Shooting 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’ 변수를 지정하여 파형 변환 시 생기는 문제를 해결
설계 일정 • 결과 발표 4주차 • 포트폴리오 작성 3주차 • 검토 및 외형제작 2주차 • 재료구입 및 회로제작 1주차 • 제안서 작성 및 회로구상