[Project] Mạch đo nhiệt độ – điều khiển động cơ với MSP430G2553

MSP430 Measure Temperature DS18B2 LCD 16x2

Trễ hẹn đã lâu, tôi chia sẻ với các bạn toàn bộ một mạch mà tôi làm cách đây 1 năm, đó là mạch đo – hiển thị nhiệt độ và điều khiển tốc độ động cơ sử dụng MCU MSP430G2553.

Trong mạch này, tôi sử dụng những thành phần chính sau:

icon-check MCU: Microcontroller MSP430G2553

icon-check Sensor: DS18B20

icon-check Display device: LCD 16×2

icon-check Motor: Bushless 12V DC

Nói sơ qua về cách hoạt động của mạch:

Ở đây tôi dùng MCU MSP430 để xử lý tín hiệu, lấy giá trị nhiệt độ đo được từ cảm biến DS18B20, hiển thị trực tiếp lên màn hình LCD 16×2, sau đó so sánh với các mốc định sẵn trong bộ nhớ để điều khiển động cơ. Mạch có hỗ trợ nút chuyển đổi chức năng, tăng, giảm và reset để có thể điều chỉnh trực tiếp giá trị của các thông số so sánh.

Cụ thể mạch này hoạt động dựa trên các thông số được cài sẵn:

icon-check Mốc A(oC) là mốc để động cơ chạy ở công suất AA%

icon-check Mốc B(oC) là mốc để động cơ chạy ở công suất BB%

icon-check Mốc C(oC) là mốc nhiệt độ nguy hiểm (ngắt nguồn vào động cơ) và chờ đến khi nhiệt độ trở về dưới mốc A(oC) thì kích hoạt lại động cơ.

Vậy là có 5 thông số cài đặt tương ứng với 5 mode của nút chức năng.

Dưới đây là mạch nguyên lý:

Schematic

Code được viết trên IAR:

main.c

Download Full Source

 icon-arrow-circle-up Cập nhật:

Để sửa lỗi nhấn reset để mạch chạy, các bạn chỉ cần mắc thêm 1 tụ 102 (tụ gốm) vào giữa chân Reset của MSP430G2553 và GND, thay thế trở treo giữa chân Reset và VCC_3.3V thành trở 47k là OK!

Mạch đã cập nhật đầy đủ.

 icon-book Bonus:

Mình bonus thêm cho các bạn đoạn code giúp các bạn có thể hiệu chỉnh độ phân giải của DS18B20 (Độ chính xác của cảm biến)

Như chúng ta đã biết, DS18B20 có thể cho ra kết quả 9bit, 10bit, 11bit, 12bit tương ứng với độ chính xác 0.5°C, 0,25°C, 0.125°C, 0.0625°C.

Mặc định DS18B20 sẽ cho ra kết quả dạng 12bit – sau thời gian tối thiểu 750ms. Khá lâu, vì thế nếu bạn không cần độ chính xác quá cao, có thể cấu hình lại theo đoạn code sau:

(Ghi chú: Đoạn code này mình đã cập nhật lại trong bộ mã nguồn tải về phía trên – đoạn này để tham khảo nếu bạn không muốn tải về)

 

Leave a Reply

17 Comments on "[Project] Mạch đo nhiệt độ – điều khiển động cơ với MSP430G2553"

Notify of
avatar
Sort by:   newest | oldest | most voted
Hải dớ
Guest

1. cái sơ đồ nguyên lý a vẽ = soft nào mà có khung đẹp thế?
2. đầu 12v lấy từ đâu thế a?

Nguyễn Vủ Linh
Guest

chào anh, mình có thể so sánh giá trị đọc từ DS18B20 và giá trị mốc cho nhiệt độ để động cơ tự điều chỉnh tăng giảm nhiệt độ được k anh? cám ơn anh

Trung Thành
Guest

Cách này của mình cũng được nhưng khả năng tự calib tệ lắm.
Bạn có thể nghiên cứu thêm về thuật toán điều khiển PID.
Các bạn bên PayItForward cũng đã có bài về vụ này:
http://www.payitforward.edu.vn/forum/threads/1551/

Trên mạng hiện cũng chia sẻ nhiều nội dung liên quan đến dạng điều khiển có phản hồi như này. VD: lò ấp trứng, điều chỉnh nhiệt tự động, tự cân bằng cho robot…

Đức Tun
Guest

bạn cho mình xin thư viện altium của con MSP430G2553 với

Trung Thành
Guest

Đây bạn nhé, đa số chip của TI:
http://media.thanhnt.com/public_file/TI%20Altium.rar

Trần Đại Ca
Guest

Bác ơi cho em hỏi tác dụng của con trở R11 10k là gì thế ? ah còn con diode nối 2 đầu con fet để làm gì nữa :) thank bác

Trung Thành
Guest

Con diod nối 2 chân S và D của FET để chống dòng ngược, bảo vệ FET. Còn R11 nối với R9 như vậy để phân áp chân điều khiển FET thôi.

Trần Đại Ca
Guest

Thank bác nhiều a :)

Sakura48
Guest

Bác ơi bác up lại mấy cái hình được không, máy em chẳng thấy gì cả :( thanks bác nhiều

T_O
Guest

Dạo này 1 số mạng vn có tốc độ truy cập đến host nước ngoài hơi kém nên đôi khi ảnh không hiện kịp. F5 1 cái, chờ 1 tí là ảnh hiện liền. :D không phải là hình bị hỏng đâu bạn.

le duc nhan
Guest

chào bạn, sao lỗi reset ở trên mình đã sửa giống như vậy rồi mà mạch vẫn ko chạy nhỉ, phải nhấn nút reset thì mới chạy

Trung Thành
Guest

Chào bạn, lát mình sẽ cập nhật lại cái SCH cho dễ hiểu. riêng chân reset cần đúng tụ 102 gốm (loại ko phân cực nhé bạn). và 1 trở treo là đc.

le duc nhan
Guest

có phải là do code không bạn nhỉ, mình đã làm y như vậy nhưng vẫn không được

Trung Thành
Guest

Bạn thử code trên LaunchPad chưa?

le duc nhan
Guest

mình thử trên launhpad vẫn phải bấm reset bạn

Vào 07:52 Ngày 30 tháng 10 năm 2015, Disqus đã viết:

Hoàng
Guest

rất có ích anh ơi, cảm ơn anh

wpDiscuz