Site icon TAPIT

Hướng dẫn thiết kế mạch vi điều khiển đơn giản

Thiết kế mạch cho vi điều khiển là một việc làm không hề đơn giản đối với những người mới bắt đầu. Có thể bạn phải đọc hàng trăm trang datasheet và tài liệu thiết kế tham khảo, các sơ đồ mạch thiết kế mẫu, các chỉ dẫn layout để có thể hoàn thiện được thiết kế của mình một cách tốt nhất. Hướng dẫn này sẽ chỉ ra những điểm chung mà các bạn cần lưu ý khi thiết kế mạch vi điều khiển. 

[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]

Trước khi bắt đầu thiết kế sơ đồ mạch, bạn nên vẽ sơ đồ khối hiển thị các phần chính của dự án, bao gồm phần nguồn và tất cả các ngoại vi sẽ giao tiếp với vi điều khiển, các bạn có thể sử dụng công cụ PowerPoint hoặc Draw.io để làm việc này. 
Ví dụ về vẽ sơ đồ khối trước khi thực hiện vẽ nguyên lý mạch

I/ Thiết kế nguồn 
Thiết kế nguồn được xem là một trong những phần quan trọng nhất trong thiết kế phần cứng vì nó góp phần quyết định đến độ ổn định và tuổi thọ của sản phẩm. Tham khảo các gợi ý sau sẽ giúp bạn thiết kế tốt hơn phần này:
– Nguồn tuyến tính (linear) hay nguồn xung(switching): Đặc điểm của nguồn tuyến tính là ít nhiễu, điện áp đầu ra phẳng hơn, thiết kế mạch gọn và đơn giản hơn vì gần như chỉ cần tụ điện ở đầu vào và đầu ra, tuy nhiên về mặt hiệu suất thì nguồn tuyến tính có tổn hao lớn khi điện áp đầu vào cao hơn nhiều so với điện áp đầu ra. Ngược lại, nguồn switching có hiệu suất chuyển đổi cao hơn và bạn cũng có thể sử dụng để tăng áp nếu điện áp đầu vào bé hơn điện áp đầu ra, thường cho các ứng dụng dùng battery. (mạch buck: hạ áp, mạch boost: tăng áp), nhưng nguồn switching cũng có nhược điểm của nó, đó là gợn nhiễu nhiều hơn, mạch yêu cầu nhiều linh kiện đi kèm hơn và thiết kế mạch cũng tốn nhiều diện tích và phức tạp hơn. 
 – Ước lượng dòng tiêu thụ của mạch: Bạn có thể tính toán, ước lượng gần chính xác dòng tiêu thụ của toàn mạch hay nói cách khác là dòng tối thiểu mà mạch nguồn có thể cung cấp được bằng cách ước lượng dòng tiêu thụ của các linh kiện ngoại vi thông qua datasheet. Đối với vi điều khiển, bạn có thể ước lượng bằng tần số hoạt động và tải trên các chân I/O. 
 – Tại chân VDD của vi điều khiển nên có tụ gốm 1uF và 100nF đặt gần chân vi điều khiển nhất có thể để loại bỏ nhiễu từ nguồn cung cấp 
 –  Dự án của bạn có sử dụng tính năng ADC và vi điều khiển bạn chọn có chân nguồn cung cấp riêng cho bộ ADC (VDDA) thì bạn nên chọn IC nguồn tuyến tính cho toàn mạch hoặc thiết kế riêng phần nguồn với IC nguồn tuyến tính cho bộ ADC, đồng thời bạn nên đặt tụ gốm 1uF và 10nF càng sát chân VDDA càng tốt. 
Vi điều khiển stm32f103c8t6 có chân cung cấp nguồn riêng cho bộ ADC
 – Bạn nên lưu ý thêm về drop voltage ( Vdrop  = Vin_min – Vout : là điện áp đầu vào tối thiểu để có đầu ra đúng và ổn định) trong các ứng dụng có điện áp đầu vào thay đổi như sử dụng ác-quy, battery…
– Bạn có thể xem xét dùng tụ có điện dung lớn để bù dòng tức thời trong 1 số trường hợp. 

II/ Thiết kế mạch dao động 

Vi điều khiển có thể sử dụng bộ dao động nội RC hoặc có thể sử dụng thạch anh ngoại. Việc lựa chọn thạch anh làm bộ dao động chính cho vi điều khiển là phổ biến, vì thạch anh là một linh kiện có độ ổn định cao, sai số rất bé. Việc lựa chọn thạch anh và các tụ đi kèm nhất thiết phải tuân thủ theo các khuyến nghị của hãng sản xuất, các bạn có thể tìm thấy thông tin trong datasheet. Khi layout phần này, các bạn nên đặt thạch anh càng gần vi điều khiển càng tốt, tổng chiều dài dây dẫn từ 2 chân vi điều khiển đến 2 chân thạch nên bằng nhau, chỉ đi dây trên 1 lớp, bố trí thạch anh xa những linh kiện hoặc những bộ phận có khả năng gây nhiễu. 

III/ Thiết kế mạch reset
Trên các kit phát triển vi điều khiển thường có nút reset để khởi động lại chương trình, tuy nhiên nút reset mà bạn thấy chỉ thực hiện tính năng reset bằng tay. Còn chức năng reset tự động vi điều khiển mỗi khi cấp nguồn được thực hiện bởi mạch R – C đi kèm với nút bấm đó. Giá trị của điện trở và tụ điện trên mạch reset tự động cần tuân theo thông số của nhà sản xuất, các bạn có thể tìm thấy trong datasheet của vi điều khiển đang thiết kế hoặc các bạn có thể tham khảo từ các kit phát triển, mạch thực hành của vi điều khiển đó (nút bấm reset bằng tay có thể là không cần thiết trong một số dự án). 
Ví dụ giá trị R – C trên mạch reset của một số vi điều khiển phổ biến

IV/ Thiết kế GPIO
Các chân GPIO của vi điều khiển có thể lập trình được, bạn có thể cấu hình nó là Input để đọc các giá trị điện áp bên ngoài hoặc Output để ghi ra các mức điện áp cao/thấp.
– Đối với chân Input các bạn có thể lưu ý đến việc bổ sung trở Pull-up hoặc Pull-down nếu vi điều khiển không hỗ trợ. Các bạn cũng nên lưu ý về việc điện áp input có vượt quá ngưỡng cho phép của vi điều khiển hay không, các mức logic của ngoại vi và vi điều khiển có khớp nhau hay không (ví dụ: 3.3v – 3.3v, 5v-5v.., các bạn có thể tham khảo thêm về dải điện áp High và Low trong datasheet của vi điều khiển và ngoại vi.
– Đối với chân Output, các bạn cần lưu ý đến dòng ra tải trên 1 chân hoặc tổng dòng trên 1Port là bao nhiêu, khuyến khích sử dụng các biện pháp đệm dòng như sử dụng BJT, FET, IC đệm, cách ly quang..
Ví dụ đơn giản về việc sử dụng ic đệm ULN2803A để điều khiển relay

V/ Thiết kế các chuẩn giao tiếp ngoại vi 
Việc thiết kế các chuẩn giao tiếp như UART, I2C, SPI cần tuân thủ theo đúng điện áp giao tiếp giữa các thiết bị giao tiếp với nhau, và theo hướng dẫn thiết kế đối với mỗi thiết bị, các bạn có thể xem xét thêm trở bảo vệ, trở kéo, mạch chuyển đổi logic.

VI/ Thiết kế cổng nạp chương trình và debug
SWD và JTAG là 2 chuẩn nạp chương trình phổ biến hiện nay trên các vi điều khiển, ngoài ra còn hỗ trợ tính năng debug. Khi thiết kế các connector để nạp chương trình và debug cho vi điều khiển, các bạn nên lưu ý thứ tự chân cho đúng và vị trí đặt cổng kết nối đủ trống trải để các bạn có thể cắm thẳng mạch nạp/debugger vào.

VII/ Thiết kế các test-point
Test-point là những điểm mà bạn muốn đo đạt, kiểm tra trong mạch của mình, có thể là nguồn, các chân I/O, các chân giao tiếp… Nên đặt test-point dễ kiểm tra, đo đạt và tránh các sự cố đáng tiếc khi bạn đo trực tiếp tại vị chân linh kiện, chân vi điều khiển quá sát nhau.

 

Trên là một số hướng dẫn, gợi ý nhỏ để các bạn có thể thiết kế được một mạch vi điều khiển đơn giản phục vụ cho việc học tập, làm đồ án, đề tài nghiên cứu, mẫu thử…
Nếu có bất kì thắc mắc, góp ý gì các bạn cứ bình luận tại bài viết này để cùng thảo luận. Chúc các bạn thành công!
Nhóm TAPIT – HW