1. Trang chủ
  2. » Giáo án - Bài giảng

HD 24 dự án DAC tạo 3 dạng sóng

33 29 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 2,54 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chuyển đổi kỹ thuật số sang tương tự DAC và tạo dạng sóngTrong hướng dẫn này, bạn sẽ tìm hiểu những điều cơ bản về bộ chuyển đổi tín hiệu sốsang bộ chuyển đổi tương tự.. Như đã nêu trong

Trang 1

Chuyển đổi kỹ thuật số sang tương tự (DAC) và tạo dạng sóng

Trong hướng dẫn này, bạn sẽ tìm hiểu những điều cơ bản về bộ chuyển đổi tín hiệu sốsang bộ chuyển đổi tương tự Một DAC là gì? Bộ xử lý tín hiệu như thế nào? Và cácloại phổ biến của DAC là gì? Và sử dụng cho các dự án của chúng tôi

Hướng dẫn này bao gồm 4 LAB / Dự án thực tế về việc tạo ra điện áp tương tự bằngcách sử dụng một bộ xử lý Cũng như tạo các dạng sóng tương tự @ bất kỳ tần sốmong muốn nào (ví dụ Sawtooth, Tam giác và Sin Wave) Đây cũng là cách chúng tôitạo ra các âm thanh cơ bản bằng cách sử dụng vi điều khiển

Tuy nhiên, đây sẽ là một hướng dẫn thú vị, kết hợp lý thuyết trọng lượng nhẹ, nhiềumẹo, ghi chú và LAB thực hành thú vị Vậy hãy bắt đầu!

Các thành phần cần thiết cho hướng

dẫn này

Số

lượng Tên thành phần Mua trên Amazon.com

1 DSO (Máy hiện sóng lưu trữ kỹ thuật số) Thêm Thêm

Trang 2

1 Dây nhảy Thêm Thêm

1 Bộ dao động tinh thể 4 MHz Thêm vào

Thiết lập bảng tạo mẫu

Bộ chuyển đổi kỹ thuật số sang tương

tự là gì | Bộ xử lý tín hiệu?

Trong Điện tử, bộ chuyển đổi tín hiệu số sang tương tự (DAC hoặc D / A) là một mạchđiện tử chuyển đổi dữ liệu kỹ thuật số (0 & 1) thành tín hiệu tương tự Về mặt chứcnăng, nó là nghịch đảo của ADC (bộ chuyển đổi tương tự sang số) Và một bộ DAC rẻhơn đáng kể so với ADC theo đơn đặt hàng lớn

Trang 3

Các bộ xử lý tín hiệu thường được sử dụng cho các ứng dụng tạo dạng sóng tương tựnhư máy nghe nhạc / âm nhạc, máy phát video, TV và các hệ thống điện tử khácnhau Trên thực tế, nhiều ADC bao gồm một bộ DAC như một khối xây dựng của cáccấu trúc của chúng.

Như trong ADC , có nhiễu nhiễu lượng tử hóa trong tín hiệu do thực tế là một bộchuyển đổi dữ liệu kỹ thuật số rời rạc thành các mức điện áp tương tự Vì vậy, có tiếng

ồn lượng tử hóa vốn có với tốc độ bằng tốc độ lấy mẫu của DAC

Như đã nêu trong định lý lấy mẫu Nyquist-Shannon, một bộ xử lý tín hiệu có thể được

sử dụng để tái tạo tín hiệu tương tự từ các mẫu dữ liệu số (được ghi bởi ADC) Miễn làbăng thông nhỏ hơn tần số Nyquist (Không vi phạm định lý lấy mẫu Nyquist) Một bộ lọctái cấu trúc có thể được sử dụng để giảm nhiễu lượng tử hóa xuất hiện ở đầu raanalog

<< Đừng quên kiểm tra Hướng dẫn ADC >>

Trang 4

Tại sao chúng ta cần DAC?

Chúng ta cần bộ chuyển đổi kỹ thuật số sang tương tự (DAC) trong các ứng dụng khácnhau của máy tính kỹ thuật số Máy tính kỹ thuật số lưu trữ, thao tác, đọc và gửi Dữ liệu số (0 & 1) Vì vậy, cần có một cách để chuyển đổi biểu diễn kỹ thuật số trở lại tín

hiệu tương tự

Các tệp âm thanh được lưu trữ dưới dạng dữ liệu kỹ thuật số trong bộ nhớ của máytính và để phát lại, nó phải được chuyển đổi thành tín hiệu tương tự Một tình huốngkhác trong đó chúng ta cần các bộ xử lý tín hiệu là các hệ thống điều khiển tương

tự Một máy tính kỹ thuật số có thể theo dõi một quá trình và chạy các hướng dẫn củathuật toán điều khiển Nhưng để gửi đầu ra của thuật toán điều khiển tới các bộ truyềnđộng, nó nên được chuyển đổi thành một điện áp tương tự và ở đây các bộ xử lý tínhiệu sẽ xuất hiện

Ứng dụng của DAC

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) đang được sử dụng trong rất nhiềuứng dụng cho dù cần phải có chuyển đổi D / A cơ bản hay chuyển đổi D / A chính xáchơn nhiều Một số ứng dụng yêu cầu tốc độ lấy mẫu tần số cao cho DAC trong khi cácứng dụng khác yêu cầu các bộ xử lý có độ phân giải cao Và nhiều ứng dụng khác cầncân bằng giữa sự đánh đổi tần số cao và độ phân giải

Các ứng dụng điển hình của DAC bao gồm, nhưng không giới hạn ở những điều sau:

 Máy nghe nhạc / âm nhạc

 DDS (Hệ thống phân phối dữ liệu)

 Và nhiều hơn nữa…

Trang 5

Các loại DAC

1 DAC có trọng số nhị phân

Bộ xử lý có trọng số nhị phân chứa các thành phần điện riêng lẻ cho mỗi bit của bộDAC được kết nối với điểm tổng Mỗi đầu vào trong phép tính tổng có hai giá trị lũythừa với hầu hết dòng điện hoặc điện áp ở mức đáng kể nhất Những điện áp hoặcdòng điện chính xác này tổng hợp với giá trị đầu ra chính xác Đây là một trong nhữngphương pháp chuyển đổi nhanh nhất nhưng chịu độ chính xác kém vì độ chính xác caocần thiết cho từng điện áp hoặc dòng điện riêng lẻ Các bộ xử lý phổ biến nhất của loạinày là như sau:

R-2R Ladder DAC , là một bộ xử lý có trọng số nhị phân, sử dụng cấu trúc xếp tầng

lặp lại của các giá trị điện trở R và 2R Điều này cải thiện độ chính xác do sự dễ dàngtương đối của việc sản xuất điện trở phù hợp có giá trị tương đương Đây là bộ DAC rẻnhất, nhưng dễ nhất, bạn có thể tự xây dựng

Bộ khuếch đại tổng hợp nhị phân DAC về cơ bản là một op-amp trong cấu hình

tổng hợp Với nhiều điện trở được kết nối với một đầu vào Ngã ba nơi các điện trở gặpnhau được gọi là ngã ba hoặc mặt đất ảo Đầu vào nhị phân đi vào các điện trở và đầu

ra tương tự thu được trên đầu ra của op-amp Các giá trị của các điện trở này đượcchọn cẩn thận để tạo ra tổng cộng có trọng số nhị phân cho các đầu vào kỹ thuật số

2 PWM DAC

Bộ điều biến độ rộng xung thường là một máy phát PWM chạy dải tần khá

cao Có thể dễ dàng đạt được mức điện áp tương tự ở đầu ra bằng cách lấy trung bìnhtín hiệu PWM Về mặt kỹ thuật, chúng tôi sẽ lọc thành phần tần số cao của tín hiệuPWM để chỉ còn lại thành phần DC trung bình Một bộ lọc thông thấp đơn giản có thểthực hiện công việc Nói chung, đó là một cách hiệu quả để tạo ra một bộ DAC nhưngđòi hỏi nhiều nỗ lực hơn để có được đầu ra sạch

Chúng ta sẽ thảo luận về phương pháp tạo ra các bộ vi xử lý này chi tiết hơn nhiều trong tương lai Vì vậy, hãy theo dõi cho điều đó!

3 Xấp xỉ liên tiếp (tuần hoàn)

DAC tuần hoàn xây dựng liên tục đầu ra trong mỗi chu kỳ Các bit riêng lẻ của đầu

vào kỹ thuật số được xử lý mỗi chu kỳ cho đến khi toàn bộ đầu vào được tính

Trang 6

Sử dụng một bộ vi xử lý với bộ vi điều khiển

Trong phần này, chúng ta sẽ xem làm thế nào bạn có thể sử dụng một bộ vi xử lý với

bộ vi điều khiển của bạn Có nhiều cách khác nhau để bạn có thể nhận được một bộDAC tùy theo nhu cầu của ứng dụng Các tùy chọn khả dụng để thêm đầu ra DAC vào

hệ thống dựa trên vi điều khiển của bạn bao gồm:

2 Bộ định mức tổng hợp nhị phân

Bạn cũng có thể tạo một bộ xử lý đơn giản với cấu hình Op-Amp có cấu hình tổng trọng

số và có độ phân giải lên tới 8 bit Dưới đây là sơ đồ nguyên lý cho bộ xử lý op-amp bit op-amp 4-bit có trọng số nhị phân

Trang 7

3 IC DAC nối tiếp / song song

Một tùy chọn khác là lấy chip ic ic độ phân giải (độ phân giải) có độ chính xác cao vàgiao tiếp với vi điều khiển của bạn Có các bộ xử lý nối tiếp (thường là SPI bus) đểgiảm số lượng pin yêu cầu của MCU Và cũng có các IC DAC song song mà bạn có thể

sử dụng nếu nó phù hợp với thông số thiết kế của ứng dụng của bạn

Thay đổi chu kỳ nhiệm vụ của PWM theo bảng hình sin kỹ thuật số sẽ dẫn đến dạngsóng hình sin tương tự như trong hình dưới đây Xin lưu ý rằng phương pháp này sẽ

Trang 8

không được thảo luận hoàn toàn trong hướng dẫn này Thay vào đó, chúng tôi sẽ tạomột thang R2R đơn giản và bộ xử lý tín hiệu PWM sẽ được thảo luận riêng trong tươnglai!

5 Mô-đun tích hợp DAC

Thực tế, ngày nay có rất nhiều bộ vi điều khiển đang được sản xuất với một mô-đunDAC được tích hợp bên trong! đó là một tính năng thú vị cung cấp cho bạn sự linh hoạt

để định cấu hình bên trong mà không cần kết nối bất cứ thứ gì bên ngoài vi điều khiển

và giảm chi phí miễn là bạn cần một đầu ra DAC vừa phải Trừ khi bạn cần một số yêucầu cụ thể cho đầu ra DAC, thì bạn có thể xem xét tìm kiếm một IC DAC riêng biệtthuận tiện

Dưới đây là sơ đồ khối của Mô-đun DAC trong bộ vi điều khiển PIC tương đối mới

Trang 9

Tạo điện áp tương tự có thể điều chỉnh

Trang 10

Đây là Mô tả chức năng của hệ thống Chúng tôi sẽ xây

dựng

1 Mã hóa

Mở IDE MPLAB và tạo một tên dự án mới, đó là Analog Analog_Out_DAC ' Nếu bạn

có một số vấn đề làm như vậy, bạn luôn có thể tham khảo hướng dẫn trước bằng cách

sử dụng liên kết dưới đây

Đặt các bit cấu hình khớp với cài đặt chung mà chúng tôi đã nêu trước đó Và nếu bạn

cũng gặp rắc rối khi tạo tệp này, bạn luôn có thể tham khảo hướng dẫn trước bằng liênkết dưới đây

Trang 11

Bây giờ, hãy mở tệp main.c và bắt đầu phát triển phần sụn cho dự án của chúng tôi Dưới đây là danh sách mã đầy đủ cho LAB này

* Author: Khaled Magdy

* Visit My Website @ https://www.DeepBlueMbedded.com

Trang 12

ADCON0 &= 0x11000101; // Clear The Channel Selection Bits

ADCON0 |= ANC<<3; // Select The Required Channel (ANC)

// Wait The Aquisition Time

Trang 13

while(ADCON0bits.GO_DONE); // Polling GO_DONE Bit

// Provides Delay Until Conversion Is Complete

return ((ADRESH << 8) + ADRESL); // Return The Right-Justified 10-Bit Result }

Trang 14

Đây là một hình ảnh động cho các bài kiểm tra mô phỏng đang chạy.

Vâng, nó có vẻ giống như một loại troll xung quanh để cung cấp điện áp đầu vào tương

tự cho ADC và tái tạo lại nó một lần nữa bằng cách sử dụng một bộ xử lý Chúng tôikhông làm điều gì đó hữu ích và đó không phải là cách tốt nhất để có Vout điềuchỉnh Nhưng đó mới chỉ là khởi đầu để bạn làm quen với hoạt động của Bộ chuyển đổi

kỹ thuật số sang tương tự (DAC)! Các LAB tiếp theo thú vị hơn, tuy nhiên

3 Tạo mẫu

Nối sơ đồ này trên một chiếc bánh mì là một nhiệm vụ dễ dàng Chỉ cần tải tập tin hexfirmware của bạn lên chip vi điều khiển Và nối các đường ray điện đầu vào và bắt đầu

thử nghiệm nó!

Trang 15

Đây là một đoạn video ngắn cho kết quả của LAB & xác minh này với AVOmeter.

Tải dự án

Đặt thời gian lấy mẫu cho tần suất

mong muốn

Trong khi tạo các dạng sóng tương tự bằng cách sử dụng một vi điều khiển & một bộ vi

xử lý, mong muốn có tần số đầu ra có thể kiểm soát được đối với dạng sóng tương

tự Tần số của tín hiệu đầu ra được xác định theo công thức sau

Trong đó Ns là số điểm mẫu trong một chu kỳ của dạng sóng Và Ts là khoảng thời

gian mẫu cho DAC Trên thực tế, chúng tôi kiểm soát cả hai tham số đó để đạt đượctần số đầu ra mong muốn với số lượng tiếng ồn lượng tử hóa có thể chấp nhận được

Đối với Fout mong muốn = 10Hz, khoảng thời gian của mỗi chu kỳ là T = 100ms

Điều duy nhất chưa biết bây giờ là giai đoạn lấy mẫu Ts Và sử dụng công thức hiển thị

ở trên, nó kết thúc

Ts = 100ms / 256 = 390μ giây

Bây giờ, chúng ta gần xong rồi! Mã C sẽ tạo ra dạng sóng mong muốn sẽ giống nhưthế này

Trang 17

Mục tiêu

phòng thí

nghiệm

Tìm hiểu cách tạo dạng sóng tương tự (sawtooth) với vi điều khiển và bộ xử

lý Và làm thế nào để kiểm soát tần số của dạng sóng đầu ra.

1 Mã hóa

Mở IDE MPLAB và tạo một tên dự án mới, đó là Saw Sawtooth_Out_DAC Nếu bạn có

một số vấn đề làm như vậy, bạn luôn có thể tham khảo hướng dẫn trước bằng cách sửdụng liên kết dưới đây

Đặt các bit cấu hình khớp với cài đặt chung mà chúng tôi đã nêu trước đó Và nếu bạn

cũng gặp rắc rối khi tạo tệp này, bạn luôn có thể tham khảo hướng dẫn trước bằng liênkết dưới đây

Bây giờ, hãy mở tệp main.c và bắt đầu phát triển phần sụn cho dự án của chúng tôi Dưới đây là danh sách mã đầy đủ cho LAB này

Trang 21

Tìm hiểu cách tạo dạng sóng tương tự (hình tam giác) bằng vi điều khiển và

bộ xử lý Và làm thế nào để kiểm soát tần số của dạng sóng đầu ra.

Trong ví dụ này, Ns = 256 (tăng tốc) + 255 (xuống dốc) = 511 điểm mẫu Vậy, Ts =

100ms / 511 = 196 ec giây

1 Mã hóa

Mở IDE MPLAB và tạo một tên dự án mới, đó là Tra Traular_Out_DAC Nếu bạn có

một số vấn đề làm như vậy, bạn luôn có thể tham khảo hướng dẫn trước bằng cách sửdụng liên kết dưới đây

Đặt các bit cấu hình khớp với cài đặt chung mà chúng tôi đã nêu trước đó Và nếu bạn

cũng gặp rắc rối khi tạo tệp này, bạn luôn có thể tham khảo hướng dẫn trước bằng liênkết dưới đây

Bây giờ, hãy mở tệp main.c và bắt đầu phát triển phần sụn cho dự án của chúng tôi Dưới đây là danh sách mã đầy đủ cho LAB này

1 /*

Trang 26

Mục tiêu

phòng thí

nghiệm

Tìm hiểu cách tạo dạng sóng tương tự (Sine) bằng vi điều khiển và bộ xử

lý Và làm thế nào để kiểm soát tần số của dạng sóng đầu ra.

Đối với một vài phòng thí nghiệm cuối cùng, chỉ cần có một biến số đối lập trực tiếp đểtạo ra dạng sóng RAMP đếm ngược và dạng sóng TRIANGULAR đếm ngượclên Nhưng đối với phòng thí nghiệm này, chúng ta sẽ cần lưu trữ một bảng tra cứu nhỏcho một sóng SINE chu kỳ duy nhất

Bạn có thể tính toán thủ công bằng máy tính của riêng mình hoặc bạn cũng có thể tạotập lệnh MATLAB để tạo bảng cho bạn Nhưng để đơn giản, trong hướng dẫn này, tôi

sẽ chỉ cho bạn cách sử dụng máy tính trực tuyến sau để lấy bảng sin Trình tạo bảngsin trực tuyến

Đối với hướng dẫn này, tôi sẽ chỉ cần 32 điểm mẫu Biên độ tối đa cho sóng hình sin là5v tương ứng với 255 làm đầu vào kỹ thuật số cho bộ định tuyến Bộ xử lý của tôi là 8bit Nếu bạn đang sử dụng bộ giải mã 10 bit, giá trị này sẽ là 1023, v.v Cuối cùng, đốivới tùy chọn cuối cùng, tôi đã sử dụng để thuận tiện và bạn có thể nhận được tất cảcác giá trị trong một dòng mã nếu đó là điều bạn muốn! Nhấp vào gửi và một bảng nhưthế này sẽ bật lên trong khuôn mặt của bạn!

Sao chép các giá trị này vào một mảng trong mã của bạn và bạn thật tuyệt!

Để có được thời gian lấy mẫu, chúng tôi sẽ tính toán theo cách tương tự như các LAB trước đó F = 50Hz nên T = 20ms

Do đó, Ts = 625μ giây

Trang 27

1 Mã hóa

Mở IDE MPLAB và tạo một tên dự án mới, đó là Sine_Out_DAC Nếu bạn có một số

vấn đề làm như vậy, bạn luôn có thể tham khảo hướng dẫn trước bằng cách sử dụngliên kết dưới đây

Đặt các bit cấu hình khớp với cài đặt chung mà chúng tôi đã nêu trước đó Và nếu bạn

cũng gặp rắc rối khi tạo tệp này, bạn luôn có thể tham khảo hướng dẫn trước bằng liênkết dưới đây

Bây giờ, hãy mở tệp main.c và bắt đầu phát triển phần sụn cho dự án của chúng tôi Dưới đây là danh sách mã đầy đủ cho LAB này

* Author: Khaled Magdy

* LAB Name: Sine Generator With DAC @ 50Hz

Trang 31

Tải dự án

Tôi biết kết quả của tất cả các LAB trong hướng dẫn này không phải là những gì bạn có thể hy vọng, về độ chính xác tần số đầu ra Đây chỉ là những ví dụ về đồ chơi để cho bạn thấy cách thức hoạt động của một bộ vi xử lý và làm thế nào

dữ liệu số trong các thanh ghi của vi điều khiển của bạn có thể biến thành dạng sóng tương tự!

Chủ đề này sẽ được xem lại một lần nữa và chi tiết hơn

Trang 32

nhiều Chúng tôi sẽ tạo các dạng sóng tương tự với độ chính xác tần số lên đến 0,000001 và thậm chí hơn thế nữa! Hãy theo dõi hướng dẫn của Tổng hợp kỹ thuật số trực tiếp

số Nhưng, đối với các ứng dụng trong thế giới thực, bạn sẽ phải xem xét điểm này vàthực hiện nghiêm túc

Tất cả các ví dụ được hiển thị trước đây giúp sử dụng CPU 100% Bạn thậm chí không

thể xử lý các ngắt mà không làm gián đoạn việc tạo dạng sóng CPU không thể làm gìkhác hơn là chuyển dữ liệu sang DAC mọi lúc để có được dạng sóng tương tự mongmuốn trên đầu ra

Và rõ ràng, đó không phải là cách để làm một việc như vậy Nhưng bây giờ, nó ổn thôi!

Trang 33

3

Về mặt lý thuyết, đầu ra của DAC sẽ dao động trong khoảng 0v và Vref (thường là 5vhoặc 3,3v) Tuy nhiên, các DAC thực tế thì không Sẽ luôn có một sự trôi dạt nhỏ trên

số 0 thực và một giọt nhỏ từ Vref Các chip DAC tiên tiến hơn đang được quảng cáo là

có đầu ra Rail-To-Rail , hy vọng đủ gần với DAC lý tưởng.

Ngày đăng: 16/12/2019, 17:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w