Created Friday 27 June 2014
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing (DS18B20 có bán ở tme.com.vn hay machtudong.vn với giá 27k; nếu đổi thành LM35, nối với IC convert analog-digital MCP3008 - http://monirulpathan.com/afterhours/raspberry-pi-temperature-sensors/, hoặc dùng MCP3201 hoặc ADC0832 có bán ở banlinhkien.vn) - https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi
Trong file này có bài về việc kết nối RPi với MCP3001, tuy là code thì không dùng thư viện spidev:
http://troydenton.ca/rpi/labmanual.pdf
Đây là cách đọc SPI với thư viện spidev (tốc độ cao):
http://www.100randomtasks.com/simple-spi-on-raspberry-pi
(có hướng dẫn mắc mạch đọc ADC qua giao tiếp SPI)
IC LM35 xuất tín hiệu analog với mức thay đổi là 10mV/độ C.
http://www.ti.com/lit/ds/symlink/lm35.pdf
Đã thử nghiệm LM35 mua từ Hshop.vn, chạy với mức điện áp 3.3V cũng được, vẫn ra 10mV/độ C. Tuy nhiên datasheet thì nói là nó chạy với Vcc từ 4V trở lên.
Chương trình đọc
http://scruss.com/blog/2013/02/02/simple-adc-with-the-raspberry-pi/
Mua:
- ADC0832
- LM35
- MCP3201 (đã xin tài trợ từ Microchip, cả MCP3001)
Linh kiện
- LM35
- MCP3201
- MCP3001
Nội dung
Dẫn nhập (1 trang)
- các linh kiện cần thiết
- ý nghĩa của bài học này, có thể phát triển ra những ứng dụng nào
Ta thông qua ví dụ minh họa sau đây để rõ hơn: máy đo cần đo được nhiệt độ trong khoảng 25 - 75 độ C, người ta dùng một cảm biến hoạt động theo nguyên lý giãn nở nhiệt của kim loại, ở một đầu của thanh kim loại có tiếp xúc với một thanh điện trở; khi nhiệt độ càng cao thì thanh kim loại càng dài, đầu tiếp xúc trượt đi làm thay đổi độ dài của khoảng điện trở, như vậy nhiệt độ được chuyển đổi tương ứng thành một biến trở, sau đó có mạch điện tử để biến trở đó được chuyển đổi thành một điện áp trong khoảng 0-3.3V, đây là điện áp analog ở đầu ra của cảm biến; ta cần dùng một module biến đổi analog-digital (analog to digital converter - ADC) để chuyển thành tín hiệu số theo nguyên lý chia nhỏ khoảng 0-3.3V này, ví dụ 1024 lần, và vi xử lý sẽ nhận được con số theo tỉ lệ, trong khoảng từ 0 đến 1023. Điều đó có nghĩa là không thể dùng được tín hiệu liên tục mà phải chia thành rất nhiều bậc thang, nếu chia càng nhiều bậc thì độ dài mỗi nấc thang càng nhỏ, kết quả càng ít sai số. Trên thị trường có rất nhiều module ADC như vậy, khác nhau về số khoảng chia (1024 khoảng thì gọi là ADC 10-bit, hoặc 256 khoảng là ADC 8-bit, 4048 khoảng là ADC 12-bit...), chúng cũng khác nhau về cách giao tiếp, số ngõ hoạt động đồng thời, chất lượng phép đo...
Khi nắm vững được cách làm việc với bộ biến đổi ADC, ta có thể dùng nó làm module giao tiếp với nhiều loại cảm biến analog khác nhau để triển khai được các hệ thống đo lường. Đi sâu vào lĩnh vực này, bạn đọc có thể kết hợp thêm mạch cầu Wheatstone, là phần mạch điện tử thường dùng trong kỹ thuật đo lường các biến trở, ví dụ như sử dụng để đo ứng suất lực trong các loại cân điện tử. Tuy nhiên trong phạm vi giới thiệu các kiến thức cơ bản cho bạn đọc đỡ thấy phức tạp, chúng tôi không trình bày về mạch cầu Wheatstone ở đây, ai quan tâm có thể tìm trên internet hoặc đọc các sách về kỹ thuật điện tử. Để minh họa cách sử dụng các module ADC, phần thực hành trong chương này giới thiệu một cảm biến nhiệt độ analog thông dụng là LM35, và IC (to do: tên IC) là loại module ADC 10-bit, sử dụng giao tiếp SPI (to do: hay I2C?).
Kết nối mạch điện tử (1 trang - hình ảnh)
- hình chụp mạch & breadboard đã kết nối
- coi như khi có sơ đồ nối dây là người ta làm theo được, không cần hướng dẫn từng bước
Chuẩn bị phần mềm (1 trang)
- liệt kê các bước bằng text
- chụp hình màn hình khi chọn menu để vào môi trường nhập lệnh (console)
Code mẫu (1 trang)
- nhập code và xem kết quả:
- nhập các lệnh điều khiển
Giải thích các lệnh (3 trang )
- thêm một phần giải thích việc nhập code kiểu interactive (nhập, gõ enter, thấy kết quả ngay, không có biên dịch hay phải nạp vào chip)
- (dự kiến khối lệnh ở mỗi bài trong vòng 20 - 40 dòng)
Bài thực hành thêm (1 trang)