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 1Chuyể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 21 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 3Cá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 4Tạ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 5Cá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 6Sử 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 73 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 8khô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 9Tạ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 11Bâ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 12ADCON0 &= 0x11000101; // Clear The Channel Selection Bits
ADCON0 |= ANC<<3; // Select The Required Channel (ANC)
// Wait The Aquisition Time
Trang 13while(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 17Mụ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 21Tì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 26Mụ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 271 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 31Tả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 32nhiề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 333
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.