질문게시판 > ad9850 sin파 2

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

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


BASIC4MCU | 질문게시판 | ad9850 sin파 2

페이지 정보

작성자 opqr 작성일2022-07-21 14:03 조회249회 댓글6건

첨부파일

본문

	

#include

 

const int W_CLK_PIN = 7;

const int FQ_UD_PIN = 8;

const int DATA_PIN = 9;

const int RESET_PIN = 10;

 

double freq = 1000000;

double freq_2 = 2000000;

double freq_3 = 3000000;

double trimFreq = 124999500;

 

int phase = 0;

 

void setup(){

  DDSRe.begin(W_CLK_PIN, FQ_UD_PIN, DATA_PIN, RESET_PIN);

  DDSRe.calibrate(trimFreq);

}

 

void loop(){

  //DDSRe.setfreq(freq, phase);

  //delay(10000);

  //DDSRe.setfreq_2(freq, freq_2, phase, phase);

  //delay(10000);

  DDSRe.setfreq_3(freq, freq_2, freq_3, phase, phase, phase);

  delay(10000);

  while(1);

}

 

수정한 라이브러리 파일과

이 코드를 구동했을 때 나오는 파형 사진입니다. 

f13c98eff4109382cb03ce1e397c41cc_1658379411_7164.jpg
f13c98eff4109382cb03ce1e397c41cc_1658379419_5395.jpg
 

 

**float pi =3.1415629543;

float freqLow = 2.0;//Hz

float freqHigh = 4.0;//Hz

float freqHigh1 = 6.0;//Hz

float freqHigh2 = 8.0;//Hz

float sensorV[200];

float X[200];

float alpha =0.90;

 

void setup() {

Serial.begin(9600);

X[0] = 0.0;

for ( int i=1; i<201; i++ ) {

sensorV[i] = 1.0*sin(2.0*pi*freqLow*i/100.0)+1.0*sin(2.0*pi*freqHigh*i/100.0);//+1.0*sin(2.0*pi*freqHigh1*i/100.0)+1.0*sin(2.0*pi*freqHigh2*i/100.0);

Serial.println(sensorV[i]);

}

/*

for ( int i=201; i<401; i++ ) {

X[i-200] =alpha*X[i-201]+(1.0-alpha);sensorV[i-200];

Serial.println(X[i-200]);

}

*/

}

 

void loop() {}

 

f13c98eff4109382cb03ce1e397c41cc_1658381677_2024.png

헤르츠가 더해지는 것이 아니라 위 그래프처럼 파형이 합쳐지게 만들고 싶습니다. 
 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 6

조회수 249

master님의 댓글

master 작성일

우선, AD9850으로는 한 개의 사인파만 만들 수 있습니다.
여러개의 주파수가 다른 사인파를 각각의 시간마다 잘라서 이어 붙이면 복잡한 파형을 만들 수도 있겠지만
게인 설정이 안되므로 결국 FM 주파수 밖에 못 만듭니다.
이 또한 주파수가 달라져야 하는 시점에서 위상과 주파수를 일일이 재 설정 해줘야 하므로 보통 일이 아닙니다.
결론은 AD9850으로는 불가능합니다.

opqr님의 댓글

opqr 댓글의 댓글 작성일

ad9850으론 불가능한 거였군요..
그럼 다른 가능한 모듈이나 보드가 있을까요? 주파수가 낮아도 일단 복합파형을 만들 수 있는 모듈이 있으면 알고싶습니다.

master님의 댓글

master 댓글의 댓글 작성일

소프트웨어적으로 한다는 얘기는 코드로 계산해서 출력을 하면 됩니다만
실시간으로 계산하면 연산 시간 때문에 출력주파수가 현저하게 느려질 수 밖에 없으므로
빠른 출력을 하려면 미리 계산을 해서 결과를 만들고 이 것을 테이블로 만들어두고서 그 값을 출력하기만 하면 됩니다.
이런 용도의 모듈은 DAC 모듈을 사용하면 됩니다.
많은 코드 메모리가 소요되며
저가의 아두이노에서는 메가가 비교적 메모리가 크지만 이조차도 짧은 시간 출력밖에 하지 못합니다.
코드메모리가 큰 아두이노를 찾아보시기 바랍니다.

opqr님의 댓글

opqr 댓글의 댓글 작성일

알려주셔서 감사합니다! 조언 받은대로 한번 시도해보겠습니다.

master님의 댓글

master 댓글의 댓글 작성일

간단하게 계산하는 방법을 설명 해드리면
출력의 정밀도를 높이기 위해서는
데이터의 정밀도를 8비트(1바이트)가 아닌 12비트(2바이트)를 사용하는 방법이 있고
샘플링 주파수를 높이는 방법이 있습니다.
두 가지 모두 메모리가 더 커야 가능하며, 두 가지를 모두 사용한다면 더욱 많은 메모리가 필요하게 됩니다.
10KHz 파형도 출력해야 한다고 했는데요 (주기는 100us)
1개의 파형을 10개의 출력으로 구현한다고 하면 샘플링 주파수는 100KHz(주기는 10us)
12비트(2바이트)로 출력한다면
100KHz 샘플링 주파수는 초당 100000개, 2바이트로 출력한다면 초당 200000 바이트가 필요하며
100초 출력한다고 하면 20000000바이트(20M바이트)가 필요하게 됩니다.

참고로 우노는 32K바이트, 메가는 256K 바이트의 코드메모리 사이즈입니다.
SD메모리 인터페이스를 사용하면 수십M바이트 크기를 가질 수 있지만 SD에서 메모리를 읽어서 10us 주기로 출력 할 수 있는지도 체크 하셔야 합니다.

opqr님의 댓글

opqr 댓글의 댓글 작성일

감사합니다 참조하겠습니다!

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 11911
공지 사이트 이용 안내댓글[25] master 17-10-29 31175
질문 해석좀 해주세요 새글 bubu 22-08-14 17
질문 lcd 1602에 특수문자를 출력하는 방법을 알고싶습니다.댓글[3] dndktn 22-08-12 30
질문 stm32 wifi 파일전송댓글[3] 하리 22-08-11 33
질문 회로 구성 수정댓글[2] 첨부파일 픽공부 22-08-11 34
질문 아두이노 와이파이통신 질문 있습니다댓글[1] 학생 22-08-11 31
질문 포토다이오드와의 연결 질문합니다.댓글[7] 이미지첨부파일 박윤모 22-08-10 52
질문 회로 구성댓글[4] 픽공부 22-08-10 42
질문 아두이노 센서, 와이파이, 블루투스 연결댓글[1] pattern 22-08-10 53
질문 PIC 블루투스 연결댓글[19] 픽공부 22-08-09 61
질문 PIC18F452 블루투스 연결댓글[4] 마이컴 22-08-08 67
질문 아두이노 코드 해석을 못하겠습니다...댓글[2] 김가헌 22-08-08 72
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ댓글[3] 옹냥냥 22-08-08 62
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ댓글[2] 방귀뿡뿡 22-08-08 46
질문 Serial EEPROM 실수값 저장..댓글[2] 이미지첨부파일 광이 22-08-07 40
질문 STM32 Live Expression 값들이 깜빡이는 현상댓글[3] 둠둠 22-08-05 115
질문 아두이노 ESP32 wifi module댓글[1] Yoon 22-08-03 180
질문 atmega128과 dht11, lcd를 연결했는데 0도라고 뜹니다.댓글[1] 고양이33 22-08-02 428
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요댓글[2] 고양이33 22-08-02 234
질문 서보모터 제어에 대해 질문있습니다.댓글[2] 첨부파일 뉴비에오 22-07-30 158
질문 적외선 통신 알려주실분있나요 ㅠㅠ댓글[1] hkjsj10 22-07-30 149
질문 아두이노 관련 궁금합니다.댓글[1] 뱝뱝 22-07-28 139
질문 아두이노 우노 MCP4725댓글[3] 이미지 opqr 22-07-27 294
질문 레오나르도 인체감지센서 알림 안옴 면지지 22-07-24 227
답변 답변글 답변 : 레오나르도 인체감지센서 알림 안옴 master 22-07-25 161
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요...댓글[3] MAKTUB 22-07-24 166
질문 아두이노 압력센서 연동 질문댓글[4] dbice 22-07-23 273
질문 아두이노 버튼 누르기 문의댓글[1] 김형근 22-07-23 198
질문 HM10 다중페어링댓글[1] ㅎㅋㅎㅋㅎ 22-07-22 210
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
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 ⓒ 2020
모바일버전으로보기