산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DAC와 맞춤형 PCB를 사용하여 고정밀 파형을 생성하는 방법

이 기사에서는' 고정밀, 고속 신호 생성의 기반이 될 펌웨어를 개발할 것입니다.

저는 최근에 Analog Devices의 C8051F360마이크로컨트롤러와 TxDAC를 기반으로 구축된 임의 파형 발생기(AWG) PCB를 설계했습니다.

이 두 IC는 병렬 인터페이스를 통해 통신하므로 마이크로컨트롤러가 데이터를 DAC로 이동할 수 있는 최대 속도를 찾아 고주파 아날로그 신호를 생성할 수 있습니다.

이 기사에서는 일련의 예비 기술 기사에서 회로도와 레이아웃에 대해 광범위하게 논의했기 때문에 하드웨어 설계의 측면을 설명하기 위해 나가지 않을 것입니다. 이 기사 중 3개는 회로도의 특정 부분(즉, 마이크로컨트롤러, DAC, DAC의 출력 회로)에 초점을 맞추고 있으며, 네 번째 기사는 레이아웃을 다룹니다.

목표

이 프로젝트의 목표는 디지털 데이터를 마이크로컨트롤러에서 DAC로 편리하게 이동한 다음 이 데이터를 아날로그 신호로 변환할 수 있는 펌웨어 프레임워크를 만드는 것입니다. 이 AWG 보드에는 몇 가지 흥미로운 기능이 있을 수 있지만 가장 중요한 단계는 MCU와 DAC 간에 안정적이고 확장 가능한 고정밀 인터페이스를 설정하는 것입니다. 램프 파형을 생성하고 일부 오실로스코프 분석을 수행하여 이 인터페이스를 확인합니다.

요구사항

고정밀 타이밍

많은 마이크로컨트롤러 애플리케이션은 고도로 정확한 타이밍이 필요하지 않더라도 거의 필요하지 않습니다. 이것이 유일한 클록 소스가 MCU의 저정밀 내부 발진기인 성공적인 장치를 자주 만들 수 있는 이유입니다. 하지만 AWG는 다릅니다. 우리는 소스 자료 역할을 하는 이상적인 수학적 파형과 가능한 한 일관된 신호를 생성하기를 원하며, 이는 예측 가능한 신호 주파수와 일관된 DAC 샘플링 속도가 필요함을 의미합니다.

프로세서의 효율적인 사용

이 특정 PCB는 파형 생성에 거의 전적으로 전념하지만 이 펌웨어 및 하드웨어 프레임워크가 다른 애플리케이션에 쉽게 통합될 수 있도록 해야 합니다. 결과적으로 우리는 펌웨어가 안정적이고 고정밀한 파형을 생성할 수 있기를 원하지만 프로세서를 다른 작업에 완전히 사용할 수 없도록 만들었습니다.

최대 속도

우리는 고주파수 세계에 살고 있으며 이 AWG가 최대 1kHz이면 거의 사용되지 않을 것입니다. 공정하게 말하면 이것은 간단하고 저렴한 설계이며 ISM 대역 전송을 위해 준비된 915MHz DQPSK 파형을 생성할 것으로 기대할 수 없습니다. 그러나 우리는 이 장치에서 가능한 한 많은 대역폭을 얻으려고 하며 샘플링 주파수가 실제 신호 주파수보다 훨씬 높다는 것을 기억할 때 이것은 훨씬 더 어렵습니다. Nyquist-Shannon 정리에도 불구하고 사이클당 최소 5개의 샘플이 필요하며 10개가 선호됩니다. 따라서 샘플링 속도를 최대 10MHz로 높인다고 해도 파형은 1–2MHz 범위에서 낮아집니다.

하드웨어 설계에는 속도 최적화의 중요성이 이미 반영되어 있습니다. 저는 최대 100MHz의 코어 주파수에서 작동하는 마이크로컨트롤러를 선택하고 MCU의 메모리에서 DAC 입력 핀으로 데이터를 이동하는 데 필요한 오버헤드를 최소화하는 병렬 버스를 구현했습니다.

샘플링 속도

AWG 보드에는 고성능 클록 소스(전체 주파수 안정성이 ±50ppm인 MEMS 발진기)가 있습니다. 펌웨어는 DAC의 업데이트 회로를 구동하는 안정적인 클록 신호를 생성하기 위해 이 타임 베이스를 사용해야 합니다. 고품질 타이밍 신호를 원할 때 저는 항상 하드웨어를 사용합니다. 이 경우 PCA(Programmable Counter Array)를 사용하여 10MHz 외부 발진기에서 500kHz 클록을 생성합니다.

C8051F360은 Simplicity Studio에 통합된 구성 도구에서 지원되지 않기 때문에 하드웨어 구성에 Silicon Labs Config2 프로그램을 사용했습니다. 다음은 PCA 모듈의 일반 구성입니다.

PCA가 활성화되고 시간 기준이 시스템 시계입니다. 이 시점에서 시스템 클록 주파수는 외부 발진기 주파수(10MHz)와 동일하지만 나중에 마이크로컨트롤러의 위상 고정 루프를 사용하여 더 높은 코어 주파수를 얻을 것입니다. DAC의 클록 신호는 "주파수 출력" 모드로 구성된 PCA 모듈 0에 의해 생성됩니다.

샘플 레이트 클럭을 살펴보겠습니다. Tektronix의 MDO3104 스코프에는 품질 평가에 도움이 되는 상당히 고급 측정 기능이 있습니다.

스코프 캡처 하단에 표시된 측정값에서 확인할 수 있듯이 주파수는 정확히 예상한 대로(500kHz), 완벽한 50% 듀티 사이클도 있습니다. 또한 "최소" 및 "최대" 통계는 주파수와 듀티 사이클이 시간이 지남에 따라 안정적임을 나타냅니다.

이 측정 기능에 특히 유용한 추가 기능은 표준 편차("Std Dev")입니다. 표준 편차는 값이 평균에서 얼마나 벗어나는 경향이 있는지를 나타내며, 이 상황에서 클록 신호의 주파수 및 듀티 사이클의 불완전성을 빠르고 쉽게 평가할 수 있는 방법입니다. 표준 편차는 모두 매우 낮습니다. 13.54Hz는 공칭 주파수의 0.0027%이고 2.117×10 –3 입니다. 일반적인 듀티 사이클의 0.0042%에 불과합니다.

클록 에지 중 하나의 히스토그램을 살펴봄으로써 이 분석을 한 단계 더 발전시킬 수 있습니다. 스코프를 하강 에지에서 트리거하도록 설정한 다음 상승 에지를 확대하면 상승 에지의 위치가 신호의 지터에 따라 이동합니다. 그런 다음 수평 파형 히스토그램을 추가하여 이 지터를 추적하고 분포를 표시할 수 있습니다. 하지만 이 경우에는 지터가 너무 낮아서 볼 것이 별로 없습니다.

외부 인터럽트

이제 DAC의 출력 회로를 제어하는 ​​구형파가 있습니다. 다음 작업은 MCU의 데이터 업데이트를 이 구형파와 동기화하는 것입니다. 클럭 신호를 출력하는 PCA 핀에 외부 인터럽트를 연결하여 이를 수행합니다. DAC는 상승에서 입력 데이터를 래치합니다. 시계의 가장자리에 있으므로 떨어지는 가장자리. 이 반대 에지 기술은 입력 장치가 활성 클록 에지를 수신하기 전에 디지털 데이터가 업데이트되고 안정화되도록 하는 기본적인 방법입니다.

그래서 외부 인터럽트 0(/INT0으로 표시)을 활성화하고 클록 신호 출력 핀(P0.7)에 연결하고 하강 에지에 민감하게 만들었습니다.

입력을 모니터링하기 위해 외부 인터럽트를 사용하는 데 익숙할 것입니다. 그러나 이 경우 펌웨어 이벤트를 마이크로컨트롤러 자체에서 생성된 신호와 효과적으로 동기화할 수 있습니다. 이것은 외부 인터럽트 0이 가장 높은 우선순위 인터럽트이고 인터럽트 보류 플래그가 하드웨어에 의해 자동으로 지워지기 때문에 타이밍이 중요한 작업을 처리할 때 특히 편리한 전략입니다. 펌웨어 문을 사용하여 플래그를 지우려면).

ISR

주요 작업은 /INT0 인터럽트 서비스 루틴에서 발생합니다. 다음 DAC 데이터 바이트는 메모리에서 검색(또는 마이크로컨트롤러에서 직접 생성)한 다음 P2로 구동됩니다. #define 문을 사용하여 "DAC_WORD"를 "P2"의 대안으로 만들었습니다.

SI_INTERRUPT(INT0_ISR, INT0_IRQn)
{
DAC_WORD–;
}

DAC 업데이트 속도를 최대화하기 위한 노력에서 중요한 변수는 ISR에서 명령을 실행하는 데 필요한 시간입니다. (이 예에서는 명령어가 하나만 있지만 항상 그런 것은 아닙니다.) ISR은 DAC 클록의 모든 활성 에지에 대해 한 번 호출되어야 하며 실행이 완료되기 전에 ISR을 호출할 수 없습니다. 따라서 대역폭을 최대로 높이려고 할 때 ISR의 실행 시간을 최소화하기 위해 할 수 있는 모든 것을 해야 하며 그에 따라 DAC 클록 주파수를 설정해야 합니다.

위에 표시된 단일 명령문(DAC_WORD–)은 DAC 값이 선형적으로 0으로 감소한 다음 255로 롤오버되고 다시 감소하기 시작하기 때문에 램프 파형을 생성합니다. 다음은 DAC의 출력입니다.

아날로그 램프 섹션이 증가한 것을 보셨을 것입니다. DAC 값은 감소하는 반면 제로를 향해. 이것은 DAC의 출력 증폭기가 반전 구성을 사용하기 때문에 발생합니다.

마치기 전에 마지막으로 스코프 캡처를 살펴보겠습니다.

더 많은 정보를 읽어보세요….

DAC와 맞춤형 PCB를 사용하여 고정밀 파형을 생성하는 방법


제조공정

  1. Python 및 Raspberry Pi 온도 센서
  2. 습도 센서를 확인하고 보정하는 방법
  3. DAC와 맞춤형 PCB를 사용하여 고정밀 파형을 생성하는 방법
  4. Arduino와 스마트폰을 사용한 DIY 전압계
  5. Arduino 및 RDA8057M을 사용하는 FM 라디오
  6. Arduino 및 Processing IDE를 사용하여 나침반을 만드는 방법
  7. PCB 프로토타입 제작 회사를 선택하는 방법
  8. PCB 제조가 얼마나 정밀합니까?
  9. 일반적인 PCB 제작 실수 및 해결 방법
  10. 인쇄 회로 기판 및 작동 원리