Đồ án này trình bày về thiết kế mạch đo nồng độ cồn khí thở sử dụng vi điều khiển ARM. Mạch sử dụng vi điều khiển STM32F103C8T6 là bộ xử lý chính. Sử dụng cảm biến đo nồng độ cồn MQ-3 để đo nồng độ cồn trong khí thở. Cảm biến trả về tín hiệu analog nên sử dụng cổng ADC 12bit của vi điều khiển. Vì chân ADC của vi điều khiển chỉ chịu được điện áp tối đa 3.3V nên sử dụng hai điện trở làm bộ chia đôi áp. Độ chính xác của cảm biến MQ-3 chưa được tốt, tuy nhiên về mặt định tính thì kết quả cũng tương đối tin cạy. Tốc độ còn thấp chỉ 1- 2 lần/phút. Chưa thể hiệu chỉnh lại kết quả phụ thuộc vào nhiệt độ, độ ẩm. Sử dụng buzzer làm để thông báo. Sử dụng chống rung nút nhấn bằng cách xóa cờ chờ interrupt tránh trường hợp bấm một lần mà đo nhiều lần do cơ chế xử lý chờ ngắt của vi điều khiển. Cuối cùng để hiển thị kết quả đo nồng độ cồn và mức vi phạm từ 0-3 sử dụng màn hình LCD 1602 theo chuẩn I2C.
GIỚI THIỆU
Tổng quan
Hiện nay, tỉ lệ người tham gia giao thông sử dụng rượu bia vẫn còn cao, gây nguy hiểm cho những người khác và dẫn đến mức phạt nặng hơn cho các vi phạm Do đó, nhu cầu kiểm tra nồng độ cồn trước khi lái xe ngày càng tăng, từ đó thúc đẩy việc thiết kế mạch đo nồng độ cồn trong khí thở.
Nhiệm vụ đề tài
Nhiệm vụ của đề tài là sử dụng vi điều khiển ARM để đo nồng độ cồn trong khí thở Để hoàn thành nhiệm vụ này, tôi đã xác định các nhiệm vụ nhỏ cần thực hiện.
Nội dung 1: Tìm hiểu về đề tài.
Nội dung 2: Tìm hiểu về cảm biến đo nồng độ cồn, nhiệt độ.
Nội dung 3: Tìm hiểu về bộ hiển thị kết quả.
Nội dung 4: Tìm hiểu về dòng vi điều khiển ARM.
Nội dung 5: Tìm hiểu về giao tiếp giữa vi điểu khiển với thiết bị ngoại vi.
Nội dung 6: Thiết kế và thực hiện phần cứng.
Nội dung 7: Hiệu chỉnh, chuẩn độ kết quả dựa trên đánh giá kết quả.
Nội dung 8: Viết báo cáo tổng hợp.
LÝ THUYẾT
Cảm biến nồng độ cồn MQ-3
Cảm biến MQ3 hoạt động dựa trên nguyên tắc thay đổi điện trở do sự bay hơi của C2H5OH tác động lên lớp SnO2 Thiết bị này được ứng dụng để đo nồng độ cồn trong không khí và hơi thở, với thời gian đáp ứng nhanh, độ nhạy cao và khả năng hoạt động ổn định trong thời gian dài.
Figure 1 Thông số kỹ thuật cảm biến MQ3
Figure 2 Sơ đồ nguyên lý module cảm biến MQ3
- Nhiệm vụ yêu cầu cần đo được giá trị nồng độ cồn nên cần xác định được giá trị của
Rs/R0 từ đó suy ra giá trị nồng độ cồn dựa vào Figure 3.
- Vì giá trị R0 không đổi nên cần tính giá trị R0 còn Rs có thể tính được thông qua giá trị analog đo được.
Figure 3 Đặc tuyến độ nhạy của MQ3 [1]
- Cũng dựa vào đồ thị, ở không khí Rs/R0=1 Vậy nên chỉ cần tính được Rs trong không khí ta tính được R0 với công thức:
- Rs được tính bằng theo công thức chia áp:
- Để xác định được giá trị nồng độ cồn cần phải tuyến tính hóa đường đặc tuyến
Rs/Ro – C Đế chính xác hơn, sẽ tuyến tính hóa trên từng hai điểm của đồ thị.
- Một cách khác, nhà sản xuất đã tiến hành thực nghiệm với RL=R2=4.7k Đo VRL từ đồ thị tìm được giá trị của nồng độ cồn.
Figure 4 Đặc tuyến VRL - C tại RL=4.7k
- Tuyến tính hóa Figure 4 thành ba đoạn thẳng:
- Kết quả đo được còn phụ thuộc vào nhiệt độ và độ ẩm của môi trường đo Figure 3 là đặc tuyến ở điều kiện nhiệt độ 20 o C và độ ẩm
65% là tỷ lệ thể hiện sự phụ thuộc của cảm biến MQ3 vào độ ẩm và nhiệt độ Do đó, cần thực hiện các thí nghiệm để hiệu chỉnh chính xác.
Cảm biến nhiệt độ LM35
Cảm biến nhiệt độ LM35 là loại cảm biến tương tự, hoạt động chính xác hơn so với điện trở nhiệt Nó tạo ra điện áp đầu ra cao hơn so với các cặp nhiệt và thường không cần khuếch đại điện áp đầu ra LM35 có điện áp đầu ra tuyến tính, giúp dễ dàng trong việc đo lường nhiệt độ.
- Nhiệt độ hoạt động: -55 o C đến +150 o C.
Bộ hiển thị LCD 16x2
a Thông số kỹ thu tậ
Figure 7 Đặc tuyến nhiệt độ - điện áp [2]
Màn hình LCD được ứng dụng rộng rãi trong các vi điều khiển nhờ vào nhiều ưu điểm vượt trội so với các loại hiển thị khác Nó không chỉ cho phép hiển thị ký tự đa dạng và trực quan mà còn có giá thành phải chăng, làm cho nó trở thành lựa chọn phổ biến trong các thiết bị điện tử.
- Hiển thị tối đa 16 ký tự trên 2 dòng. b Nguyên lý ho tạ đ ngộ
- Khi sản xuất LCD nhà sản xuất đã tích hợp HD44780 trong lớp và và chỉ đưa những chân cần thiết ra bên ngoài.
- VSS: Chân nối đất cho LCD.
- VDD: Chân cấp nguồn dương Vcc=5V.
- VEE: Điều chỉnh độ tương phản.
+ Rs=0: Bus D0-D7 sẽ nối với thanh ghi lệnh IR (ở chế độ ghi) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ đọc).
+ Rs=1: Bus D0-D7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
- R/W: Chọn chế độ đọc hay ghi R/W=0, write và ngược lại.
- E: Chân cho phép Sau khi tín hiệu đặt lên bus D0-D7, các lệnh chỉ được chấp nhận khi có một xung cho phép ở chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi khi phát hiện một xuống lên ở chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra D0-D7 khi phát hiện một cạnh lên ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp.
- D0-D7: Bus dữ liệu dùng trao đổi thông tin với MPU Có 2 chế độ sử dụng đường bus này:
+ Chế độ 8 bit: Dữ liệu truyền trên cả 8 đường , D7 là MSB.
+ Chế độ 4 bit: Dữ liệu được truyền trên 4 đường D4-D7, D7 là MSB.
- LEDA và LEDK: A và C của LED nền.
Figure 9 Sơ đồ khối HD44780 [3]
Các thanh ghi: hai thanh ghi 8 bits quan trọng là IR và DR.
- Thanh ghi IR: Nạp địa chỉ lệnh vào thanh ghi để điều khiển LCD.
Khi MPU ghi dữ liệu vào thanh ghi DR, mạch nội bộ của chip tự động chuyển thông tin này vào DDRAM hoặc CGRAM Trong chế độ đọc, dữ liệu từ RAM nội của HDD44780 sẽ được truyền từ DR đến MPU.
Figure 10 Chức năng chân RS và R/W theo mục đích sử dụng
Cờ báo bận BF (Busy Flag)
Trong quá trình thực hiện các hoạt động bên trong chip, LCD sẽ ngừng mọi giao tiếp với bên ngoài và kích hoạt cờ BF thông qua chân D7 khi thiết lập RS=0 và R/W=1 để thông báo cho MPU Sau khi hoàn tất, cờ BF sẽ được đặt lại về mức 0.
Bộ đếm địa chỉ AC (Address Counter)
- Thanh ghi IR không trực tiếp kết nối với vùng RAM mà thông qua bộ đếm địa chỉ
Bộ đếm AC kết nối với hai vùng RAM theo kiểu rẽ nhánh, cho phép nạp địa chỉ lệnh vào thanh ghi IR Thông tin được truyền trực tiếp đến cả hai vùng RAM, trong khi việc lựa chọn vùng RAM tương tác đã được tích hợp trong mã lệnh.
Sau khi dữ liệu được ghi vào RAM, bộ đếm AC sẽ tự động tăng (hoặc giảm) 1 đơn vị Nội dung của bộ đếm AC sẽ được xuất ra cho MPU thông qua các chân DB0-DB6 khi thiết lập RS=0 và R/W=1.
- Thời gian cập nhật AC bị delay tADD sau khi BF tắt.
Vùng RAM hiển thị DDRAM (Display Data RAM)
Vùng RAM này được sử dụng để hiển thị, với dung lượng 80 ký tự (80 x 8 bits) Mỗi địa chỉ trong vùng RAM tương ứng với một ô ký tự trên màn hình Khi ghi một mã 8 bits vào vùng RAM này, LCD sẽ hiển thị ký tự tương ứng tại vị trí đó trên màn hình.
- Địa chỉ DDRAM được đặt trong AC với mã hex.
Vùng ROM chứa kí tự CGROM (Character Generator ROM)
Bài viết này đề cập đến các mẫu ký tự với kích thước 5x8 và 5x10 điểm ảnh, sử dụng định địa chỉ 8 bit Tổng cộng có 240 mẫu ký tự, bao gồm 208 mẫu ký tự 5x8 và 32 mẫu ký tự 5x10, thay vì 256 mẫu ký tự như thông thường.
Vùng RAM chứa kí tự đồ họa CGRAM (Character Generator RAM)
Nhà sản xuất đã dành vùng địa chỉ byte cao 0000 cho phép người dùng tạo mẫu ký tự đồ họa riêng Người dùng có thể tạo tối đa 8 ký tự loại 5x8 hoặc 4 ký tự loại 5x10.
Vi điều khiển và KIT STM32F103C8T6
a Thông số kỹ thu tậ
- Sử dụng core ARM 32-bit Cortex M3 với clock max là 72Mhz.
- Bộ nhớ: 64kb Flash và 20kb SRAM.
- Thạch anh ngoài 32,768 kHz sử dụng cho RTC.
- 2 bộ ADC 12-bit với tối đa 16 kênh và có cảm biến nhiệt độ nội.
- Có 7 timer: 3 timer 16-bit cho IC/OC/PWM, 1 timer 16-bit điều khiển động cơ, 2 watdog timer, 1 sysTick timer 24-bit.
- 9 kênh giao tiếp: 2-I2C, 3-USART, 2-SPI, 1 CAN interface, USB 2.0 full-speed.
Figure 12 KIT STM32F103C8T6 Blue-Pill [4] b Nguyên lý
Figure 13 Sơ đồ khối STM32F103xx [5]
- Clock hệ thống có thể cung cấp bởi ba nguồn: HSI (8MHz), HSE (4-16MHz), PLL.
- Ngoài ra con có hai nguồn phụ: LSI (40KHz) để cung cấp cho Independent
Watchdog, LSE (32.768KHz) cung cấp cho RTC – Real Time Clock.
- Tần số Clock hoạt động của 3 Bus:
+ AHB (Advanced High-Speed Buses): Bus kết nối hệ thống, FMaxrMHz.
+ APB1: FMax6MHz, APB2: FMaxrMHz.
Figure 15 Clock control Register (RCC_CR)
Figure 16 Clock configuration register (RCC_CFGR)
GPIO Figure 17 Clock interrupt register (RCC_CIR)
Each GPIO port features two 32-bit configuration registers (GPIOx_CRL and GPIOx_CRH), two 32-bit data registers (GPIOx_IDR and GPIOx_ODR), a 32-bit set/reset register (GPIOx_BSRR), a 16-bit reset register (GPIOx_BRR), and a 32-bit locking register (GPIOx_LCKR).
Figure 18 Basic structure of a standard I/O port bit
+ Input floating: ngõ vào và để nổi.
+ Input pull-up: ngõ vào và có trở kéo lên nguồn.
+ Input pull-down: ngõ vào và có trở kéo xuống GND.
+ Analog: Analog sử dụng cho ADC hoặc DAC.
+ Ouput open-drain: ngõ ra, khi Ouput control=0 thì N-MOS dẫn, chân I/O sẽ nối VSS, ngược lại P-MOS và N-MOS đều không dẫn, I/O để nổi.
+ Ouput push-pull: ngõ ra, khi Ouput control=0 N-MOS dẫn, chân I/O sẽ nối VSS, ngược lại P-MOS dẫn, I/O nối VDD.
+ Alternate function push-pull: vừa là ngõ ra vừa là ngõ vào, không có trở kéo lên và kéo xuống ở input, chức năng ouput giống Output push-pull.
+ Alternate function open-drain: vừa là ngõ ra vừa là ngõ vào, không có trở kéo lên và kéo xuống ở input, chức năng ouput giống Output open-drain.
Figure 19 Port bit configuration table
Figure 21 NVIC of Cortex-M processor [6]
- Nested vectored interrupt controller (NVIC):
+ 16 mức ưu tiên có thể lập trình được.
+ Độ trễ thấp (xảy ra ngắt cực kì nhanh).
+ Có quản lí năng lượng cho vector ngắt.
+ Có các thanh ghi điều khiển quá trình ngắt.
Tất cả các ngắt, bao gồm cả ngoại lệ lõi, đều được quản lý bởi NVIC Mỗi EXTI có khả năng lập trình để chọn loại sự kiện/ngắt, lựa chọn cạnh lên, cạnh xuống hoặc cả hai, cùng với mức ưu tiên cho ngắt.
- Các tính năng của ngắt ngoài:
+Kích hoạt độc lập và mặt nạ cho mỗi line sự kiện/ngắt.
+ Có bit trạng thái riêng cho mỗi line ngắt.
+ Có thể có tối đa 20 sự kiện/ ngắt.
+ Kiểm tra tín hiệu ngoài có độ rộng xung nhỏ hơn clock trên APB2.
- Px[0:4] có line ngắt riêng biệt là EXTI[0:4].
- Px[5:9] và Px[10:15] chỉ có một line ngắt chung là EXTI9_5 và EXTI15_10.
+ EXTI_IMR: cho phép ngắt trên line tương ứng.
Figure 22 Interrupt mask register (EXTI_IMR) + EXTI_RTSR: chọn sườn cạnh lên làm tín hiệu ngắt.
Figure 23 Rising trigger selection register (EXTI_RTSR) + EXTI_FTSR: chọn sườn cạnh xuống làm tín hiệu ngắt
Figure 24 Falling trigger selection register (EXTI_FTSR) + EXTI_SWIER: cho phép mô phỏng ngắt ngoài mềm.
The EXTI_SWIER (Software Interrupt Event Register) is crucial for managing interrupt requests in a system It contains the EXTI_PR register, which indicates pending interrupts When an interrupt request is generated on a specific line, the corresponding bit in the register is set until the interrupt is addressed and processed.
Figure 26 Mức độ ngắt ưu tiên của NVIC [7]
+ Các ngắt hỗ trợ như End conversion, End of Injected Conversion và Analog Watchdog Event.
+ Single mode hoặc Continuous mode.
+ Tự động calib và có thẻ điều khiển hoạt động ADC bằng xung Trigger.
+ Chế độ không liên tục, chế độ kép.
+ Thời gian chuyển đổi ADC: 1us ở 56 MHz (1.17us ở 72MHz).
+ Điện áp cung cáp ADC: 2.4 – 3.6V
- ADC clock: ADCCLK được cung cấp bởi PCLK2 nên ADCCLK < 14MHz.
ADC cần thời gian ổn định tSTAB trước khi bắt đầu chuyển đổi chính xác Sau khi quá trình chuyển đổi ADC được khởi động, sau 14 chu kỳ đồng hồ, cờ EOC sẽ được thiết lập và Data Register sẽ chứa kết quả dữ liệu chuyển đổi.
- Analog watchdog: bit trạng thái giám sát analog AWD được đặt nếu giá trị chuyển đổi thấp hơn ngưỡng dưới hoặc cao hơn ngưỡng trên.
Hiệu chuẩn ADC là một chế độ tích hợp giúp giảm sai số Để thực hiện hiệu chuẩn, bạn cần thiết lập bit CAL trong ADC_CR2 Sau khi hoàn tất quá trình hiệu chuẩn, bit CAL sẽ được đặt lại bằng phần cứng, cho phép ADC hoạt động bình thường Mã hiệu chuẩn sẽ được lưu trữ trong ADC_DR.
DMA là cần thiết để tránh mất dữ liệu khi dữ liệu ADC được lưu vào thanh ghi ADC_DR duy nhất Yêu cầu DMA chỉ được tạo ra khi quá trình chuyển đổi hoàn tất, cho phép chuyển dữ liệu từ ADC_DR đến vị trí đích đã chọn.
ADC_SR chứa các cờ trạng thái quan trọng trong quá trình chuyển đổi ADC Cờ STRT cho biết kênh đã bắt đầu chuyển đổi, trong khi JSTRT xác nhận kênh đã bắt ADC khi nhận tín hiệu bên ngoài Cờ JOEC đánh dấu việc kết thúc quá trình ADC khi có tín hiệu bên ngoài, và EOC cho biết kết thúc chuyển đổi ADC Cuối cùng, cờ AWD chỉ ra rằng đã xảy ra sự kiện Analog Watchdog.
Figure 28 ADC Status register (ADC_SR) + ADC_CR1: cho phép analog watchdog, interrupt, dual mode, scan mode.
Figure 29 ADC Control Register 1 (ADC_CR1) +ADC_CR2: Điều khiển các quá trình chuyển đổi ADC
Figure 30 ADC Control Register 2 (ADC_CR2)
+ADC_SMPR2: thời gian lấy mẫu SMPX[2:0]0-100 tương ứng với 1.5, 7.5, 13.5, 28.5, 41.5, 55.5, 71.5, 239.5 cyles.
VD: ADCCLK = 14MHz và thời gian lấy mẫu 1.5 cycles Vậy Tconv = 1.5 + 12.5 14 cycles = 1us.
Figure 31 ADC sample time register 2 (ADC_SMPR2)
+ 7 channel của kênh DMA1 có thể được cấu hình riêng biệt.
+ Môi channel được kết nối để dành riêng cho tín hiệu DMA từ các thiết bị ngoại vi, hay tín hiệu nội bên trong MCU.
+ Có 4 mức ưu tiên có thể lập trình cho mỗi channel
+ Hỗ trợ kích thước data được sử dụng là 1 byte, 2-byte (half word) và 4-byte (word). + Hỗ trợ việc lặp lại liên tục data.
+ 3 ngắt sự kiện (DMA Half Transfer, DMA Transfer complete và DMA Transfer Error).
+ Peripheral-to-memory and memory-to-peripheral, and peripheral-to-peripheral transfers.
+ Có quyền truy cập tới Flash, SRAM, APB1, APB2, AHB.
Figure 32 DMA block diagram in connectivity line devices
- Channel của DMA1 phụ thuộc vào chức năng được sử dụng.
Figure 33 Summary of DMA1 requests for each channel
- Một số thanh ghi quan trọng:
+ DMA_ISR: trạng thái ngắt: transfer error, half transfer và transfer complete.
Figure 34 DMA interrupt status register (DMA_ISR) + DMA_CCRx: cấu hình DMA.
Figure 35 DMA channel x configuration register (DMA_CCRx)
+ DMA_CNDTRx: chứa số lượng data truyền.
Figure 36 DMA channel x number of data register (DMA_CNDTRx) + DMA_CPARx: chứa địa chỉ ngoại vi.
Figure 37 DMA channel x peripheral address register (DMA_CPARx) + DMA_CMARx: chứa địa chỉ bộ nhớ.
Figure 38 DMA channel x memory address register (DMA_CMARx)
- Các chế độ hoạt động của Timer:
+ PWM generation (Edge- or Center-aligned modes).
Khi giá trị đếm của bộ đếm timer vượt quá giá trị Auto Reload Value, cờ báo tràn sẽ được kích hoạt, dẫn đến việc kích hoạt trình phục vụ ngắt tràn nếu đã được cấu hình cho phép trước đó.
- Chu kỳ ngắt có thể tính theo công thức sau: t_timer = (PSC+1)(ARR+1)/sysclk_timer (5)
Với: t_timer: thời gian ngắt.
PSC: giá trị nạp vào cho bộ chia tần số của timer (16b-bit).
ARR: giá trị bộ đếm nạp vào cho timer.
Sysclk_timer: tần số clock của hệ thống chia cho timer sử dụng.
+ TIMx_CR1: CKD: chia clock; DIR: up/down counter; CEN: cho phép đếm.
Figure 39 TIMx control register 1 (TMx_CR1) + TIMx_SR: cờ biểu thị các trạng thái của timer.
Figure 40 TIMx status register (TIMx_SR) + TIMx_CNT: chứa giá trị bộ đếm timer.
Figure 41 TIMx counter (TIMx_CNT) + TIMx_PSC: chứa giá trị bộ chia tần số.
Figure 42 TIMx prescaler (TIMx_PSC)
+ TIMx_ARR: chứa giá trị đích của bộ đếm được so sánh với giá trị của TIMx_CNT
Figure 43 TIMx auto-reload register (TIMx_ARR)
- Có thể hoạt động ở 1 trong 4 chế độ: slave transmitter, slave receiver; master transmitter; master receiver.
- Standard speed lên tới 100kHz, Fast Speed lên tới 400kHz.
- Có hai chế độ 7-bit địa chỉ hay 10-bit địa chỉ.
+ I2C_CR1: ACK: cho phép nhận tín hiệu ACK return; STOP; START.
Figure 45 I2C control register 1 (I2C_CR1) + I2C_CR2: ITBUFEN: cho phép xảy ra ngắt khi có data trong truyền nhận;
ITEVTEN cho phép ngắt khi xảy ra các sự kiện trên các bit như SB, ADDR, ADD10, STOPF, BTF, TxE và RxE Ngoài ra, ITERREN cho phép ngắt khi có lỗi xảy ra FREQ[5:0] là bộ chia tần số được tính từ nhánh clock hệ thống chia cho bộ I2C.
Đăng ký điều khiển I2C (I2C_CR2) bao gồm I2C_OAR1, cho phép cấu hình số bit địa chỉ là 7 hoặc 10 Cụ thể, tham số ADDMODE xác định chế độ địa chỉ, trong khi ADD[9:8] được sử dụng cho chế độ 10-bit, và ADD[7:1] đại diện cho bit địa chỉ của thiết bị slave Bit ADD0 cũng được sử dụng trong chế độ 10-bit.
Figure 47 I2C own address register 1 (I2C_OAR1) + I2C_DR: Chứa data truyền nhận.
Figure 48 I2C data register (I2C_DR) +I2C_SR1: Các cờ trạng thái trong quá trình truyền nhận
Figure 49 I2C status register 1 (I2C_SR1) + I2C_CCR: F/s: mode speed; CCR[11:0]: clock control cho Fm/Sm mode (Master mode).
Figure 50 I2C Clock control register (I2C_CCR)
THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG
Yêu cầu thiết kế
- Thiết kế mạch đo nồng độ cồn khí thở sử dụng vi điều khiển ARM.
- Đo và hiển thị được kết quả đo, có nút nhấn để đo, có báo hiệu khi bắt đầu đo và đo xong.
Phân tích thiết kế
Khi sử dụng vi điều khiển ARM, kit STM32F103C8T6 Blue Pill là lựa chọn tối ưu với giá chỉ 50k, dễ mua hơn so với kit MSP430 LaunchPad có giá 350k STM32 được ứng dụng rộng rãi trong thực tế và còn có các dòng thay thế giá rẻ như GD và CKS từ Trung Quốc Đặc biệt, dòng CKS có thể thay thế trực tiếp vào STM mà không cần chỉnh sửa phần cứng hay mã code.
- Điều khiển: sử dụng Button làm nút nhấn, còn phần báo hiệu sử dụng Buzzer.
Sử dụng màn hình LCD 1602 (40k) là lựa chọn phù hợp cho việc hiển thị thông tin với chi phí thấp hơn so với OLED 0.91 (47k) Tuy nhiên, nếu cần thiết kế nhỏ gọn, OLED có thể là giải pháp tốt Màn hình LED 7 đoạn cũng là một lựa chọn kinh tế khoảng 8k, nhưng chỉ hiển thị được số, do đó thông tin hiển thị sẽ bị hạn chế.
Khi chọn cảm biến đo nồng độ cồn, MQ3 là lựa chọn tốt nhất Trên thị trường hiện có hai loại cảm biến phổ biến là MQ135 và MQ3, với mức giá tương đương Tuy nhiên, MQ3 chuyên đo nồng độ cồn và khí gas, trong khi MQ135 có khả năng đo nhiều khí khác như CO và CO2, dẫn đến độ chính xác thấp hơn so với MQ3.
- Nguồn: sử dụng Pin 9V làm nguồn cấp và cần qua bộ ổn áp 5V để cấp nguồn cho vi điều khiển và các ngoại vi.
Sơ đồ khối chi tiết
Figure 51 Sơ đồ khối chi tiết
Display SC L VCC LCD1 VDD
Vi điều khiển STM32F103C8T6 nhận nguồn cấp cho các thiết bị ngoại vi và thực hiện việc đọc giá trị từ cảm biến MQ Sau đó, nó xử lý thông tin và hiển thị kết quả trên màn hình LCD 1602 khi nhận lệnh đo từ nút bấm và phát tín hiệu qua Buzzer để thông báo cho người dùng.
Sơ đồ mạch chi tiết
Figure 52 Sơ đồ mạch chi tiết
- Phần nguồn: sử dụng pin 9V và sử dụng IC ổn áp LM7805 để cấp nguồn.
3 4 3 7 A 1 3 A 1 4 w w w y o u tu b e c o m /s a ty a m k r8 0 V C C V01 V C C w w w T h e E n g in e e ri n g P ro je c ts c o m V0 g a s V C C G N D 2 G N D
+ MQ3: sử dụng bộ chia áp 2 điện trở 3.1k mắc song song với R2 k (phần lý thuyết) do điện áp ADC tối đa vi điều khiển đọc được là 3.3V ta được:
R2’ được tính bằng công thức R2’ = R2//(R3+R4) = 20//6.2 = 4.7k Ω Do đó, để tính toán, ta chỉ cần lấy V01 nhân 2 và tra cứu trên hình 4 Bên cạnh đó, việc sử dụng cảm biến nhiệt độ sẽ giúp tăng độ chính xác cho cảm biến MQ3.
- Phần hiển thị: dùng lcd 1602 giao tiếp theo I2C.
- Buzzer: để thông báo có sử dụng 1 transistor BC547 để kéo dòng.
Bài viết mô tả một thiết bị đo có hai nút: một nút 4 chân cho phép người dùng bắt đầu quá trình đo, và một nút cơ khí áp suất Khi người dùng thổi vào nút áp suất, lực thổi sẽ làm cho hai đầu nút chạm vào nhau, từ đó kích hoạt mạch đo Điều này giúp tránh tình trạng đo sai khi người dùng chưa thực hiện hành động thổi.
Sơ đồ giải thuật
Figure 53 Lưu đồ giải thuật cho vi điều khiển
While t