[1] Thông thường thì chuyển đổi DAC thực hiện bằng mảng điện trở, với số ngõ vào tương ứng với số bit của số liệu, và một ngõ ra.. Giá trị điện trở được chọn tương ứng với bậc của bit s
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ 1
- -
Thiết kế ngoại vi và kỹ thuật ghép nối
Đề tài: Tìm hiểu về bộ chuyển đổi DAC
Hà Nội, 2023
Trang 2MỤC LỤC
DANH MỤC HÌNH VẼ 3
CÁC CHỮ VIẾT TẮT 4
Pulse-width modulation 4
CHƯƠNG 1 GIỚI THIỆU VỀ DAC 5
1 Tổng quan về DAC 5
2 Ứng dụng của DAC 5
3 Các phương pháp chuyển đổi số tương tự 5
3.1 Chuyển đổi D/A với đầu ra dòng 5
3.2 Chuyển đổi D/A bằng phương pháp thang điện trở 6
3.3 Chuyển đổi D/A bằng phương pháp mạng điện trở 7
CHƯƠNG 2: GIỚI THIỆU MỘT SỐ MODULE DAC 9
1 Module DAC PCF8591 9
2 ESP32, Arduino Nano, Arduino Uno 12
2.1 ESP-32 12
2.2 Arduino Nano, Arduino Uno 17
TÀI LIỆU THAM KHẢO 27
Trang 3DANH MỤC HÌNH VẼ
Hình 1: DAC có đầu ra cơ bản 6
Hình 2: Sơ đồ mạch điện chuyển đổi DAC bằng phương pháp thang điển trở 7
Hình 3: : Sơ đồ mạch điện chuyển đổi DAC bằng phương pháp mạng điện trở 8
Hình 4: Module chuyển đổi AD-DA PCF8591 9
Hình 5: Sơ đồ chân Module chuyển đổi AD-DA PCF8591 10
Hình 6: Sơ đồ khối hoạt động cho Module PCF8591 10
Hình 7: Sơ đồ chân cho Arduino R3 11
Hình 8: Chương trình cho Module PCF8591 12
Hình 9: Sơ đồ chân ESP-32 13
Hình 10: DAC trên ESP32 16
Hình 11: Sơ đồ khối cho bộ DAC cảu ESP32 17
Hình 12: Arduno Uno R3 Full pinout[6] 17
Hình 13: Arduino Nano Full pinout[7] 18
Hình 14: Chu kỳ của 1 dao động( Xung) 19
Hình 15: Sơ đồ khối của hệ thống PWM 20
Hình 16: Xung khi sử dụng với hàm analogWrite trong Arduino 20
Hình 17: Sơ đồ chân cho Arduino UNO R3 21
Hình 18: Chương cho UNO R3 21
Hình 19: Sơ đồ chân cho Arduino Nano 22
Hình 20: Chương trình cho Arduino Nano 22
Hình 21: Module MJKDZ DRV8833 23
Hình 22: Sơ đồ điều khiển module DRV8833 24
Hình 23: Sơ đồ nguyên lý cho module DRV8833 24
Hình 24: Giao diện tùy chỉnh của Audacity 25
Hình 25: Giao diện của HxD 25
Hình 26: Sơ đồ kết nối mô phỏng âm thanh 26
Trang 4CÁC CHỮ VIẾT TẮT
Trang 5CHƯƠNG 1 GIỚI THIỆU VỀ DAC
1 Tổng quan về DAC
Bộ chuyển đổi kỹ thuật số sang analog thường được gọi là DAC viết tắt của Digital to Analog Converter, D / A hoặc D2A là một thiết bị chuyển đổi các giá trị nhị phân (0 và 1) thành một tập hợp các điện áp analog liên tục Có nhiều kỹ thuật được thực hiện, mỗi kỹ thuật đều có ưu và nhược điểm riêng Trong bài viết này, chúng ta sẽ tìm hiểu cách thức hoạt động của DAC và cách nó có thể được sử dụng trong các thiết kế [1]
Thông thường thì chuyển đổi DAC thực hiện bằng mảng điện trở, với số ngõ vào tương ứng với số bit của số liệu, và một ngõ ra Giá trị điện trở được chọn tương ứng với bậc của bit số, để tạo ra trọng số biến đổi, sao cho khi điện áp vào ở mức logic quy định thì phần của bit đó góp vào điện áp tổng đúng như bậc của bit đó Kết quả là ở ngõ ra có mức điện
áp tương ứng với giá trị số của ngõ vào
Do có sơ đồ đơn giản, chuyển đổi DAC bằng mảng điện trở có thể làm việc ở tần số tương đối cao
Dẫu vậy trong thực tế thì chế tạo được mảng điện trở chính xác và ổn định cao là khó khăn
về công nghệ Nó dẫn đến giá thành mảng cao Vì thế chip DAC thường bố trí ghép kênh,
3 Các phương pháp chuyển đổi số tương tự
3.1 Chuyển đổi D/A với đầu ra dòng
Trong các thiết bị kỹ thuật số đôi lúc cũng đòi hỏi quá trình điều khiển bằng dòng điện Do
đó người ta đã tạo ra các DAC với ngõ ra dòng để đáp ứng yêu cầu đó Hình 5.5 là một DAC với ngõ ra dòng tương tự tỷ lệ với đầu vào nhị phân Mạch DAC này 4 bit, có 4 đường dẫn dòng song song mỗi đường có một chuyển mạch điều khiển Trạng thái của mỗi chuyển mạch bị chi phối bởi mức logic đầu vào nhị phân
Trang 6Dòng chảy qua mỗi đường là do mức điện thế quy chiếu V REF và giá trị điện trở trong đường dẫn quyết định Giá trị điện trở có trọng số theo cơ số 2, nên cường độ dòng điện cũng có trọng số theo hệ số 2 và tổng cường độ dòng điện ra I OUT sẽ là tổng các dòng của các nhánh
DAC với đầu dòng ra có thể chuyển thành DAC có đầu ra điện thế bằng cách dùng bộ khuếch đại thuật toán (Op Amp) [2]
Hình 1: DAC có đầu ra cơ bản
3.2 Chuyển đổi D/A bằng phương pháp thang điện trở
Đầu vào bộ khuyếch đại thuật toán là một thang điện trở Mà trị số của chúng phân
bố theo mã nhị phân, các điện trở lân cận nhau hơn kém nhau 2 lần Tín hiệu điều khiển là tín hiệu số cần chuyển đổi Bít có nghĩa nhỏ nhất (LSB) được đưa đến điều khiển khóa nối với điện trở lớn nhất R, bit có nghĩa lớn hơn tiếp đó được đưa đến điều khiển khóa nối với điện trở trở nhỏ hơn R/2 và MSB điều khiển khóa nối với điện trở nhỏ nhất ( R
2 N−1 ) Nếu một bít có giá trị "0" thì khóa tương ứng nối đất và nếu một bít có giá trị "1" thì khóa K tương ứng nối với nguồn điện áp chuẩn U ch để tạo nên một dòng điện tỷ
lệ nghịch với trị số điện trở của nhánh đó, nghĩa là I o có giá trị bé nhất, có giá trị lớn nhất
I N-1 có giá trị lớn nhất Dòng sinh ra trong các nhánh điện trở được đưa đến đầu vào bộ khuyếch đại, đầu ra bộ khuyếch đại thuật toán có điện áp: [3]
UM = −𝑅ℎ𝑡 ∑ 𝐼𝑛
𝑁−1
𝑛=0
Trang 7Hình 2: Sơ đồ mạch điện chuyển đổi DAC bằng phương pháp thang điển trở
3.3 Chuyển đổi D/A bằng phương pháp mạng điện trở
Sơ đồ nguyên lý bộ chuyển đổi D/A theo phương pháp này như ở hình ở đây các nguồn dòng được tạo ra bởi nguồn điện áp chuẩn Uch Dòng điện của chúng bằng nhau và bằng Io Tín hiệu cần chuyển đổi được đưa đến chuyển mạch K Khi một bít nào đó của tín hiệu điều khiển là "0" thì Io tương ứngvới bít đó bị ngắn mạch qua khóa xuống đất Ngược lại, nếu tín hiệu điều khiển là "1" thì Io ứng với bít đó được dẫn tới đầu vào bộ khuyếch đại qua mạng điện trở.Trong sơ đồ này mạng điện trở làm nhiệm vụ phân dòng Vì điện trở nhánh ngang bằng một nửa điện trở nhánh dọc, nên dòng đi qua mỗi khâu điện trở thì giảm đi một nửa Dòng điện ứng với LSB đi qua N-1 khâu điện trở, dòngđiện ứng với bit có nghĩa lớn hơn đi qua N-2 khâu và dòng ứng với MSB được đưa trực tiếp đến đầu bộ khuyếch đại Kết quả là các dòng điện ở cửa vào bộ khuyếch đại có trị số tương ứng với bit mà nó đại diện Chúng có trị số giảm dần từ MSB đến LSB theo mã nhị phân Điện trở ở nhánh ngang cuối cùng có giá trị số là 2R bằng điện trở nhánh dọc để đảm bảo sự phân dòng cho
in−2 = I0
2 ở khâu cuối cùngcũng giống như các khâu trước [3]
Trang 8Hình 3: : Sơ đồ mạch điện chuyển đổi DAC bằng phương pháp mạng điện trở
Trang 9CHƯƠNG 2: GIỚI THIỆU MỘT SỐ MODULE DAC
1 Module DAC PCF8591
Module chuyển đổi AD-DA PCF8591 là board tích hợp bộ chuyển đổi tiện lợi cho người
dùng vi điều khiển, một nguồn cung cấp điện riêng biệt, công suất thấp, 8-bit CMOS thiết
bị thu thập sữ liệu Các PCF8591 ba địa chỉ các chân A0, A1 và A2 có thể sử dụng trong
các địa chỉ phần cứng lập trình 8 thiết bị PCF8591 cho phép truy cập vào các bus I2C, mà
không cần thêm phần cứng Trên thiết bị đầu vào đầu ra PCF8591 của địa chỉ, điều khiển
và tín hiệu dữ liệu được truyền đi trong thời gian nối tiếp thông qua hai dây bus I2C hai
• Chuyển đổi qua chuẩn I2C bus serial in/out 1 analog output DAC gain
• module chuyển đổi AD/DA PCF 8591 tích hợp cảm biến quang trở, xuất giá trị
analog chính xác của cường độ ánh sáng môi trường xung quanh
Trang 10• Tích hợp cảm biến nhiệt độ ntc, xuất giá trị analog chính xác của nhiệt độ môi trường xung quanh
• Tích hợp bộ lọc cảm biến analog với dải hoạt động 0-5V [4]
Sơ đồ chân
VCC Nối với dương nguồn
GND Nối với đất cảu nguồn
AIN0, AIN1, AIN2, Ain3 Các ngõ vào Analog
SCL, SDA Chân tín hiệu giao thức I2C
Hình 5: Sơ đồ chân Module chuyển đổi AD-DA PCF8591
Sơ đồ khối hoạt động cho Module PCF8591:
Hình 6: Sơ đồ khối hoạt động cho Module PCF8591
Trang 11Hình 7: Sơ đồ chân cho Arduino R3
Trang 12Hình 8: Chương trình cho Module PCF8591
2 ESP32, Arduino Nano, Arduino Uno
Trang 13Hình 9: Sơ đồ chân ESP-32
Mô tả các chân ESP-32:
• Chân Input Only: GPIO từ 34 đến 39 là GPI – chân chỉ đầu vào Các chân này không có điện trở kéo lên hoặc kéo xuống bên trong Chúng không thể được sử dụng làm đầu ra, vì vậy chỉ sử dụng các chân này làm đầu vào
• Chân tích hợp Flash trên ESP-32: GPIO 6 đến GPIO 11 dùng để kết nối Flash SPI, không khuyến khích sử dụng trong các ứng dụng khác
• Chân cảm biến điện dung: Các chân ESP-32 này có chức năng như
1 nút nhấn cảm ứng, có thể phát hiện sự thay đổi về điện áp cảm ứng trên chân:
Trang 144095 đến 3,3V Bạn cũng có thể lập trình độ phân giải của các kênh của mình trên code
o ADC2_CH9 (GPIO 26)a
• Digital to Analog Converter, Có các kênh DAC 2 x 8 bit trên ESP-32
để chuyển đổi tín hiệu kỹ thuật số thành đầu ra tín hiệu điện áp tương tự
Trang 15Các kênh này chỉ có độ phân giải 8 bit, nghĩa là có giá trị từ 0 – 255 tương ứng với 0 – 3.3V
o DAC1 (GPIO25)
o DAC2 (GPIO26)
• Các chân thời gian thực RTC, Các chân này có tác dụng đánh thức ESP-32 khi trong chế độ Low Power Mode Sử dụng như 1 chân ngắt ngoài
• Chân I2C, ESP-32 có hai kênh I2C và bất kỳ chân nào cũng có thể được đặt làm SDA hoặc SCL Khi sử dụng ESP-32 với Arduino IDE, các chân I2C mặc định là:
o GPIO 21 (SDA)
Trang 16o GPIO 22 (SCL)
• Thông số kĩ thuật của ESP-32:
o Single or Dual-Core 32-bit LX6 Microprocessor with clock frequency up to 240 MHz
o Tùy chọn ½ nhân vi xử lý 32-bit LX6 với xung nhịp tối đa 240MHz
o 520 KB of SRAM, 448 KB of ROM and 16 KB of RTC SRAM
o 520KB SRAM, bộ nhớ trong 448KB và 16KB RTC SRAM
o Hỗ trợ kết nối Wi-Fi các chuẩn 802.11 b/g/n với tốc độ tối đa 150Mbps
o Hỗ trợ cả 2 chuẩn Bluetooth 4.2 và BLE( Bluetooth-Low_Energy)
o 34 Chân GIPO lập trình được
o Hỗ trợ lên tới 18 kênh SAR ADC 12 bit và 2 kênh DAC 8 bit
o Kết nối Serial bao gồm 4 SPI, 2 x I2C, 2 x I2S, 3 x UART
o Hỗ trợ MAC Ethernet cho kết nối LAN( yêu cầu cần thêm module PHY)
o 1 vi điều khiển CHỦ cho SD/SDIO/MMC và 1 vi điều khiển Slave cho SDIO/SPI
o Hỗ trợ motor PWM và tối đa 16 kênh led PWM
o Hỗ trợ Secure Boot và mã hóa file flash
o Mã hóa bằng phần cứng với AES, HASH(SHA-2),RSA,ECC và RNG [5]
Với khả năng tích hợp sẵn 2 chân DAC là 25 và 26, hoàn toàn có thể sửu dụng hai chân này như một bộ DAC thông thường
Hình 10: DAC trên ESP32
Trang 17Hình 11: Sơ đồ khối cho bộ DAC cảu ESP32
2.2 Arduino Nano, Arduino Uno
Khác với ESP32, Arduino Nano, Arduino Uno không co DAC pin nên còn một cách khác là sử dụng xung
Hình 12: Arduno Uno R3 Full pinout[6]
Trang 18Hình 13: Arduino Nano Full pinout[7]
2.2.1 PWM
Xung là các trạng thái cao / thấp (HIGH/LOW) về mức điện áp được lặp đi lặp lại
Đại lượng đặc trưng cho 1 xung PWM (Pulse Width Modulation) bao gồm tần
số (frequency) và chu kì xung (duty cycle)
Tần số là số lần lặp lại trong 1 đơn vị thời gian Đơn vị tần số là Hz, tức là số lần lặp lại dao động trong 1 giây
Lấy ví dụ, 1Hz = 1 dao động trong 1 giây 2Hz = 2 dao động trong 1 giây 16MHz
= 16 triệu dao động trong 1 giây
Như vậy theo quy tắc tam suất: 16 triệu dao động - 1 giây > 1 dao động tốn 1/16.000.000 (giây) = 0,0625 (micro giây)
Cách xác định 1 dao động như thế nào? Đa phần các bạn mới nghiên cứu điện tử thường mắc sai lầm ở việc xác định 1 dao động Dao động được xác định từ trạng thái bắt đầu và kết thúc ngay trước khi trạng thái bắt đầu được lặp lại
Trang 19Hình 14: Chu kỳ của 1 dao động( Xung)
Như vậy thông thường, 1 dao động sẽ bao gồm 2 trạng thái điện: mức cao (x giây)
và mức thấp (y giây) Tỉ lệ phần trăm thời gian giữa 2 trạng thái điện này chính là chu kì xung
Với x/y = 0% ta có xung chứa toàn bộ điện áp thấp (khái niệm xung nên hiểu mở rộng)
Với x/y = 50% thì 50% thời gian đầu, xung có điện áp cao, 50% sau xung có điện
áp thấp
Với x/y=100% ta có xung chứa toàn bộ điện áp cao
Tóm lại, với 1 xung ta có:
• Tần số: để tính toán ra được thời gian của 1 xung
• Chu kì xung: bao nhiêu thời gian xung có mức áp cao, bao nhiêu thời gian xung có mức áp thấp.[8]
Trang 20Hình 15: Sơ đồ khối của hệ thống PWM
2.2.2 Hàm AnalogWrite()
Hình vẽ sau thể hiện cơ sở và cách hoạt động của hàm:
Hình 16: Xung khi sử dụng với hàm analogWrite trong Arduino
Trang 22Arduino Nano
Hình 19: Sơ đồ chân cho Arduino Nano Hình 20: Chương trình cho Arduino Nano
Điểm khác biệt lớn nhất giữa analogWrite() và dacWrite là:
• analogWrite() sử dụng tín hiệu PWM bao gồm tần số và chu kỳ xung, trong
đó chu kỳ xung quyết định thời gian tín hiệu ở mức cao hoặc thấp trong một chu kỳ Thay đổi chu kỳ xung sẽ thay dổi tín hiệu ở đầu ra
• dacWrite() sử dụng bộ chuyển đổi DAC, tín hiệu đi ra từ chân DAC sẽ là tín hiệu analog thực sự
Tóm lại, analogWrite() mô phỏng lại tín hiệu analog nhờ vào PWM, trong khi đó dacWrite thì sử dụng bộ biến đổi DAC
Trang 23CHƯƠNG 3: MỘT SỐ ỨNG DỤNG DAC
1 Sử dụng DAC để điều khiển động cơ
1.1 Module điều khiển động cơ MJKDZ DRV8833
Mạch điều khiển động cơ DC Mini DRV8833 có thể điều khiển hai motor DC hoặc một động cơ bước với dòng điện liên tục ở 1.5A, điện áp 3 ~ 10VDC, thích hợp cho các mô hình robot, điều kiển động cơ cỡ nhỏ
Thông số kỹ thuật:
Sơ đồ chân:
Hình 21: Module MJKDZ DRV8833
1.2 Sử dụng Module MJKDZ DRV8833 để điều khiển thông qua DAC
Sử dụng hai hàm DacWrite() và analogWrite() cho hai chân DAC và chân output thường của ESP32
Trang 24Hình 22: Sơ đồ điều khiển module DRV8833
Hình 23: Sơ đồ nguyên lý cho module DRV8833
Sử dụng hai hàm DacWrite và Analog Write cho hai kết quả khác nhau
2 Sử dụng DAC để mô phỏng lại âm thanh
Trang 25Sử dụng phần mềm Audacity để đưa đoạn âm thanh đó về tần số quét 16kHz
(16000Hz) sau đó xuất ra dưới định dạng wav mã hóa dưới dạng 8-bit
Hình 24: Giao diện tùy chỉnh của Audacity
Tiếp đó sử dụng phần mềm HxD để mở tệp âm thanh trên để đọc dưới dạng các số Hex và lưu lại dưới tên “sound.h”
Hình 25: Giao diện của HxD
2.2 Mô phỏng lại âm thanh trên ESP32
Sau các thao tác trên, thu được tệp h và sử dụng như một thư viện mở rộng cho ESP32 Bằng cách truy cập vào thư viện này, ESP32 có thể đọc được tệp âm thanh
và tiến hành mô phỏng lại âm thanh với DAC với sự trợ giúp của thư viện
“XT_DAC_Audio” [10]
Trang 26Hình 26: Sơ đồ kết nối mô phỏng âm thanh
Tuy nhiên vì mục đích của DAC của ESP32 ban đầu không phải là để xuất vào âm thanh nên âm thanh xuất ra có chất lượng không tốt Thay vào đó có thể sử dụng
I2S (Inter-IC Sound)
3 Kết luận
DAC có rất nhiều ứng dụng khác nhau Cụ thể trên các vi điều khiển được trang bị DAC như ESP32 đem lại rất nhiều lợi ích so với các chân digital khác, giúp cho việc điều khiển trở nên dễ dàng hơn, phạm vi ứng dụng rộng hơn, không cần thiết đến các module DAC đính kèm để thực hiện chức năng tương tự khi nhu cầu về DAC nhỏ hơn 2 từ đó đem đến sự thuận tiện và tiết kiệm cho người dụng DAC so với phương pháp sử dụng PWM tỏ ra nổi trội hơn hẳn trong việc mô phỏng lại âm thanh, điều khiển cơ cấu chấp hành… Nhưng trong một vài trường hợp, phương pháp PWM vẫn có thể sử dụng điều khiển một số cơ cấu chấp hành như động cơ, PWM lại tỏ ra lợi thế hơn hẳn so với bộ DAC truyền thống của ESP32
Trang 27TÀI LIỆU THAM KHẢO
[1] Wikipedia: DAC ”https://vi.wikipedia.org/wiki/DAC”
[2] Tài liệu vi mạch số: Các dạng mạch DAC
“https://www.huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_6/01_dac_02.html”
[3] Học viện Công nghệ Bưu chính Viễn Thông: Điện tử tương tự
[4] IC đây rồi: https://icdayroi.com/module-chuyen-doi-ad-da-pcf8591
[5] Điện tử Việt Giới thiệu module ESP-32- ESP-32/ ”
“https://dientuviet.com/gioi-thieu-[6] Arduino: UNO R3
pinout.pdf”
“https://docs.arduino.cc/static/c57a658e0f7afad334f6f73e82dfd83d/A000066-full-[7] Arduino: Nano
pinout.pdf”
“https://docs.arduino.cc/static/11f0c2880b9a2f2add7890e0de0ff192/A000005-full-[8] Arduinovn: Xung PWM ”http://arduino.vn/reference/xung-pwm”
[9] HSHOP: Mạch điều khiển động cơ DC Mini DRV8833
[10] Xtronical Playing WAV files: for-sound/playing-wav-files/”