로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2016/01/24
첨부#1 ad9850_nr8o.ino (2KB) (Down:80)
첨부#2 arduino-400KHz-DDS.ino (32KB) (Down:77)
Link#1 (Down:18)
ㆍ추천: 0  ㆍ조회: 482   
  Arduino DUE Pezo-SPeaker LCQ Meter 소스
Arduino DUE's DAC based DDS Synthesizer fot the LCQ Meter source
참조 사이트 : Due based Piezo LCQ Meter (저자 Anatoly Kuzmenko 2014-12-27)

만일 LCQ Meter - Piezo Tester를 만들고 싶은데, AD9850 기판이 없다면, 이것이 해결방법이다.
아듀이노 DUE (84MHz 32bit CPU)는 DAC가 있다. 이 DAC를 이용하여 정현파를 출력할 수 있다.

0~10KHz, 10KHz~100KHz, 100KHz~200KHz, 200KHz~400KHz를 table로 만들고 DAC로 출력한다.
그리고 LPF를 연결한 다음 Audio Amplifier로 증폭해서 DDS 합성기(synthesizer)를 구현할 수 있다.

이유는 물론 RF가 아니기 때문이다. 현재의 DUE로는 250 kHz 까지가 한계다.
DAC 출은 LPF를 통과하면 신호가 낮아진다.  buffer는 저주파 전력증폭기 TDA7052 (8핀 DIP)를 사용한다.
출력은 Piezo Speaker 4 ohm을 구동한다. 장치는 3V 부터 작동한다. 3.3V 호환성이 중요하기 때문이다.
저주파 증폭기는 빠른 주파수 반응(response)특성 보다는 넓은 주파수 범위에서 직진성(liniearity)이 필요하다.

측정신호는 DUE 기판에 내장된 12 bit ADC를 2.1 MHz colok으로 구동하고 측정 핀은 A6 과 A7을 사용한다.
측정결과는 Touch Screen + TFT-LCD에  FFT (주파수-임피던스)를 그래픽으로 표시한다. 
 
 Arduino DUE
DUE는 32bit 84MHz의 clock의 32비트 ARM 코어 프로세서를 사용한다.
DUE에 장착된 MPU는 Atmel사의 SAM3X8E ARM Cortex-M3이다.
 
또한 펌웨어 소스의 개발은 Arduino IDE를 지원한다. Arduino 호환 기판이다.
즉 기존 아두이노의 모든 기능을 유지하면서 몇 가지 추가기능을 탑재한 기판이다.
 
Arduino 호환(compatible)이면 IO port와 complier 환경이 Arduino IDE를 쓸 수 있는 뜻이다.
Arduino IDE로 개발하던 경험을 살릴 수 있으므로 code의 이식(porting) 쉽다.
 
 다음은 이 소스에 사용된 Arduino library 이다
LCD는 ILI9341를 사용한 정식 Arduino shield인 2.2 인치 240*320 SPI TFT LCD이다.

#include <UTFT.h>
#include <UTouch.h>
#include <SplitRadixReal.h>
 
 2,4 인치 TFT LCD 모듈 (가격 USD 4.5): Arduino-Shield Color Graphic LCD
규격 : ILI9341 based color TFT LCD with Touch Screen, (2.4 인치 240*320 SPI interface.)
 
모든 Arduino 기판에 장착하는 shield다. 연결배선이 필요없다, micro SD 메모리 카드도 달려 있다.
품번은 SPFD5408 이라고 하는데, ID는 IL9341로 나온다.(연결은 8 비트 버스방식)  
 
 
주의 : 구동 IC는 IL9341 이지만, SPI를 사용하지 않고 GPIO 핀을 많이 소모하는 구형이다.
 micro SD 만 SPI를 사용한다, (소스도 이 LCD는 사용하지 않고 SPI 방식을 사용한다)
 
SPI를 사용하는 신형(가격 USD 11.00) 배선없이 Mega나 DUE의 커넥터에 바로 꼽아서 사용한다.
 
 
2.4 inch USART HMI serial font with picture TFT LCD (가격 USD 14) 
 

 LCQ Meter의 impedance 측정회로    

Arduio Due의  DAC로 250KHz 정현파를 구동하는 LPF와  저주파 증폭기 (TDA7051)
Piezo에서 측정된 신호(V-sig과 I-sig)는 MCP 6022를 사용하여 DUE의 A6과 A7으로 들어간다 .
전원은 3.3V, 일반 LCR 메터와 같이 A6는 정현파 전압을 측정하고, A7은 Piezo 전류를 측정하여 계산한다. 

 AD9850 모듈과 핀이 호환되게 빵판에 만든다.
 
 
 AD9850 기판이 없는 주 기판
 
 
 AD9850을 대치한 사진 (좌측은 제거된 DDS AD9850 모듈)
 
 
 100pF 부터 10mH 까지 측정을 확인
  
 
 아듀이노 기판은 32 비트 ARM 코어인 Arduino DUE를 사용한다.(가격 USD 12~14)
  

 
DUE 기판은 84 MHz로 작동한다. 한번에 4 바이트의 폭으로 동작한다. (빠르다)
CPU clock 84Mhz
96K Bytes SRAM
512K Bytes Falsh ROM
DMA controller (CPU에서 하드웨어로 메모리에 직접 전송한다)

54개의 GPIO (디지털 I/O) 다음 특수기능 핀을 포함한다)
12개는 PWM 출력이 가능
12개의 12비트 ADC
4개의 UART,
2개의 DAC 출력
2개의 USB
1개의 파워잭,
1개의 ICSP 헤더
1개의 리셋버튼

 소스 : 아듀이노 소스코드 arduino-400KHz-DDS.ino를 보라.
DDS 400KHz sine table은 16 비트 80 개씩의  20Hz-10KHz, 10-100KHz, 100-200KHz, 200-400KHz다.
0~180도의 정현파를 80 개의 위상으로 나누어 각 위상 point에서 정현파 진폭을 DAC로 출력한다. 
테이블의 구조는 #define NWAVE 80과 uint16_t Sinewave[4][2][NWAVE] 이다.

이전의 코드는 연속으로 작동한다, 그러나 알맞는 주파수를 발생하지 못한다.
이전의 코드는 항상 편차(offset)가 있다. 높은 주파수일 수록 크다.
 
나는 압전소자(piezo) 시험용 L+C+Q Tester 코드의 알고리듬을 변경했다.
이제는 위상(phase)도 맞는 정밀한 주파수를 burst로 발생한다.
DDS 400KHz Arduino 소스 코드 : arduino-400KHz-DDS.ino.c(32KB)는 첨부파일 #2.

측정의 시작은 serial port에서 Frequency: 가 표시되면, 20~400 KHz의 설정을 ascii 문자를 보낸다.
주파수 설정 : Frequency: 20f ~400000f <--- 마지막 소문자 f는 id이다.
fast_mode =0 ~ 3으로 DAC 구동 clock의 주파수를 4단계로 분리하여 작동시킨다.
  
fast_mode =0  20Hz~ 9.999 KHz TC_TNTR =42 KHz
fast_mode =1  10KHz~ 99.999KHz TC_TNTR =420 KHz
ast_mode =2   100KHZ~ 199.999KHZ TC_TNTR =820 KHz
fast_mode =3  200KHz~ 399.999KHz TC_TNTR =1680 KHz
 
또한 TOUCH SCREEN을 감지하여 LCD 화면의 FFT SWEEP 주파수 를 바꿀 수 있다.
12 BIT ADC는 42MHz를 TCLK1에서 1/2로 나누어 21MHz로 구동한다.
 
측정된 A6과 A7의 ADC 변환값은 내장 DMA에서 SRMA으로 전송한다.

ADC 값인 0~180도의 DATA 1800 개를 검사하여 정현파의 PEAK가 어느지점에 있는지 검사한다. 
다음 A6과 A7의 PEAK 위치를 파악하여 구동전압과 검출된 전류의 위상차를 계산한다.
int peak_search( int *inTemp, int16_t inSize)
{
  int maxim = 0;
  int index = 1;
  
  for( uint16_t i = 1; i < inSize; i++ )

  { 
      int temp = inTemp[i];
      if( temp > maxim )

     {
        maxim = temp;
        index = i;
      }

  }
  return index;

}
 
이제 구동전압과 측정전류의 위상차와 측정전류의 PEAK 값으로  IMPEDANCE를 계산한다.
// scale =x10,  t .e. +-180 = +- 1800,
//  resolution 0.1 degree
float get_Phase(int *fr, int n_bin)

     int real = fr[n_bin];
     int imag = fr[FFT_SIZE -n_bin];
     int Phase = 10  * RAD_CONV * atan2((float) imag, (float) real);
     return Phase;

}

그리고 UTFT library를 사용하여 FFT를 LCD 화면에 그래픽으로 표시한다.
시작주파수, 종료 주파수, 임피던스 그리고 L, C, Q를 표시한다.


Arduino DUE(USD 12)를 사용하여 저렴한 주변장치(system interface)로 LCQ Meter 구성했다.
비교적 높은 주파수인 0~250KHz 까지의 정현파를 MPU에서 직접 발생시키고 Piezo를 구동한다.
신호의 측정도 역시 내장된 12 bit ADC를 사용하고였고, DMA 전송기능을 활용하여 빠르게 측정하고 있다.
측정결과의 표시도 Arduino TFT-LCD (USD 3.5)를 사용하여 FFT(주파수-교류저항)로 표시하고 있다.

소스를 보면 ARM Coretex-M3의 code 작성 style이 Arduino style이 아니다.
 
 
port와 variable을 처리하는 code는 32비트 MPU를 많이 다루었던 경험이 곳곳에 들어 있다.
이 DDS 방식은 소프트웨어로 하드웨어를 emulation하는 진정한 고급 system source 이다.
최근 사이트를 링크해 보면 연결이 안된다. 아쉽다 좋은 사이트 였는데,,,(이제는 site가 없는 것 같다.)

 DDS를 만드는 방법으로 AD9850 모듈을 쓰고 Arduino-Uno를 사용한 방법도 있다.
참조 :  http://nr8o.dhlpilotcentral.com/?p=83

ADI사의 DDS 칩 AD9850 조각기판(break board)의 사진
 

AD9850과 UNO를 사용한 고주파(RF) generator 
 

DDS AD9850의 정현파 출력파형을 검사하는 중
 
 
그러나 그래픽 LCD에 측정결과를 빠르게 표시하려면 Arduino Uno는 속도가 느릴 수 있다.
Collarduino의  방식으로 Burst DDS를 구현하고, 측정결과의 표시가 느려도 된다면 문제는 없다.

또한 DDS 주파수를 낮추고 측정속도를 낮춘다면? AD9850 없는 Uno 만으로도 가능할 수 있다.
참고 : 아듀이노 소스 : Arduino Uno와 AD9850 모듈의 DDS 소스: ad9850_nr8o.ino(1.7KB)는 첨부파일 #1.

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.

 AVRTOOLS™
   
윗글 Arduino 교류 역율계(power factor)의 제작
아래글 QTouch ADC 근접검출 스위치
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 517 0
41 STM32F103C 12비트 정현파 DDS V2 avrtools™ 2018/03/08 (목) 201 0
40 STM32F103C ILI9341 TFTLCD Scope V2 avrtools™ 2018/03/05 (월) 257 0
39 STM32F103C 32비트 ARM-CPU 2채널 Scope avrtools™ 2018/02/25 (일) 232 0
38 STM32F103C의 ILI9341 ILI9163 TFT-LCD 연결방법 avrtools™ 2018/02/19 (월) 231 0
37 STM32F103C+MCP4725 DDS 1KHz 정현파 발생기 avrtools™ 2018/02/18 (일) 258 0
36 STM32F103C 기판의 1~8CH ADC DMA 전송 avrtools™ 2018/02/17 (토) 279 0
35 STM32F103C 기판의 SSD1306 OLED 구동 avrtools™ 2018/02/16 (금) 277 0
34 STM32F103C ARM32 기판의 독립 IDE 소개 avrtools™ 2018/02/14 (수) 311 0
33 STM32F103C ARM32 기판의 Bootloader 개조 avrtools™ 2018/02/14 (수) 313 0
32 ESP32+OLED 기판과 PWM generator avrtools™ 2018/02/11 (일) 226 0
31 Wemos-Lolin32 Audio FFT Analyzer 제작 avrtools™ 2018/02/07 (수) 236 0
30 DUE SAM3X8E Audio FFT Analyzer 제작 avrtools™ 2018/01/30 (화) 247 0
29 AD5933 LCR-Impedance Analyzer 제작 avrtools™ 2012/03/17 (토) 781 0
28 ESP-01 펌웨어 업그레이드와 WiFi 2 Relay Control avrtools™ 2017/12/24 (일) 217 0
27 ESP12E-devKit로 만드는 WiFi 4 Relay 제어장치 avrtools™ 2017/12/23 (토) 243 0
26 M328-mini로 만드는 Touch 용량검출센서 avrtools™ 2017/12/19 (화) 230 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 751 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 975 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 806 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 763 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 769 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 841 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 632 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 1056 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 1025 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 576 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 720 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 1187 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 710 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 620 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 1259 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 767 0
9 Arduino DUE Pezo-SPeaker LCQ Meter 소스 avrtools™ 2016/01/24 (일) 482 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 784 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1948 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2920 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2424 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 811 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 760 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 4069 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2955 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0