- ADC0804 và Raspberry Pi:
- Các thành phần bắt buộc:
- Giải thích mạch:
- Giải thích lập trình:
- Đang làm việc:
Raspberry Pi là một bo mạch dựa trên bộ xử lý kiến trúc ARM được thiết kế cho các kỹ sư điện tử và những người yêu thích. PI là một trong những nền tảng phát triển dự án đáng tin cậy nhất hiện nay. Với tốc độ xử lý cao hơn và RAM 1 GB, PI có thể được sử dụng cho nhiều dự án cấu hình cao như Xử lý hình ảnh và Internet of Things.
Để thực hiện bất kỳ dự án cao cấp nào, người ta cần hiểu các chức năng cơ bản của PI. Chúng tôi sẽ trình bày tất cả các chức năng cơ bản của Raspberry Pi trong các hướng dẫn này. Trong mỗi hướng dẫn, chúng tôi sẽ thảo luận về một trong các chức năng của PI. Đến cuối Series Hướng dẫn Raspberry Pi này, bạn sẽ có thể tự mình thực hiện các dự án cấu hình cao. Xem qua các hướng dẫn dưới đây:
- Bắt đầu với Raspberry Pi
- Cấu hình Raspberry Pi
- LED nhấp nháy
- Giao diện nút Raspberry Pi
- Raspberry Pi thế hệ PWM
- Điều khiển Động cơ DC bằng Raspberry Pi
- Điều khiển động cơ bước với Raspberry Pi
- Đăng ký Shift giữa các giao diện với Raspberry Pi
Trong hướng dẫn này, chúng tôi sẽ Giao diện chip ADC (Chuyển đổi tương tự sang kỹ thuật số) sang Raspberry Pi. Chúng tôi biết tất cả các thông số của tương tự, có nghĩa là chúng thay đổi liên tục theo thời gian. Ví dụ về nhiệt độ của phòng, nhiệt độ phòng thay đổi liên tục theo thời gian. Nhiệt độ này được cung cấp bằng số thập phân. Nhưng trong thế giới kỹ thuật số, không có số thập phân, vì vậy chúng ta cần chuyển đổi giá trị Analog sang giá trị Digital. Quá trình chuyển đổi này được thực hiện bằng kỹ thuật ADC. Tìm hiểu thêm về ADC tại đây: Giới thiệu về ADC0804
ADC0804 và Raspberry Pi:
Bộ điều khiển bình thường có kênh ADC nhưng đối với PI không có kênh ADC nào được cung cấp bên trong. Vì vậy, nếu chúng ta muốn giao tiếp bất kỳ cảm biến tương tự nào, chúng ta cần một bộ chuyển đổi ADC. Vì vậy, vì mục đích đó, chúng tôi sẽ chuyển đến Giao diện ADC0804 với Raspberry Pi.
ADC0804 là chip được thiết kế để chuyển đổi tín hiệu tương tự thành dữ liệu số 8 bit. Chip này là một trong những dòng ADC phổ biến. Đó là một đơn vị chuyển đổi 8 bit, vì vậy chúng tôi có các giá trị hoặc từ 0 đến 255 giá trị. Với điện áp đo tối đa là 5V, chúng ta sẽ có một sự thay đổi cho mỗi 19,5mV. Dưới đây là sơ đồ của ADC0804:
Bây giờ một điều quan trọng khác ở đây là, ADC0804 hoạt động ở 5V và do đó nó cung cấp đầu ra ở tín hiệu logic 5V. Trong đầu ra 8 chân (đại diện cho 8bits), mỗi chân cung cấp đầu ra + 5V để biểu diễn logic'1 '. Vì vậy, vấn đề là logic PI là + 3.3v, vì vậy bạn không thể cung cấp logic + 5V cho chân GPIO + 3.3V của PI. Nếu bạn cung cấp + 5V cho bất kỳ chân GPIO nào của PI, bo mạch sẽ bị hỏng.
Vì vậy, để mức logic bước xuống từ + 5V, chúng ta sẽ sử dụng mạch phân áp. Chúng tôi đã thảo luận về Mạch phân chia điện áp trước đây, hãy xem xét nó để làm rõ thêm. Những gì chúng ta sẽ làm là, chúng ta sử dụng hai điện trở để chia logic + 5V thành logic 2 * 2.5V. Vì vậy, sau khi phân chia chúng tôi sẽ cung cấp cho + 2,5v logic cho PI. Vì vậy, bất cứ khi nào logic '1' được trình bày bởi ADC0804, chúng ta sẽ thấy + 2,5V tại Chân GPIO PI, thay vì + 5V.
Tìm hiểu thêm về Ghim GPIO của Raspberry Pi tại đây và xem qua các hướng dẫn trước đây của chúng tôi.
Các thành phần bắt buộc:
Ở đây chúng tôi đang sử dụng Raspberry Pi 2 Model B với Hệ điều hành Raspbian Jessie. Tất cả các yêu cầu cơ bản về Phần cứng và Phần mềm đã được thảo luận trước đó, bạn có thể tra cứu trong phần Giới thiệu Raspberry Pi, ngoài những yêu cầu mà chúng tôi cần:
- Kết nối chân
- Điện trở 220Ω hoặc 1KΩ (17 miếng)
- 10K nồi
- Tụ điện 0,1µF (2 cái)
- IC ADC0804
- Bảng bánh mì
Giải thích mạch:
Nó hoạt động trên điện áp cung cấp + 5v và có thể đo dải điện áp thay đổi trong phạm vi 0-5V.
Các kết nối để giao tiếp ADC0804 với Raspberry PI, được hiển thị trong sơ đồ mạch ở trên.
Bộ ADC luôn có nhiều nhiễu, nhiễu này có thể ảnh hưởng lớn đến hiệu suất, vì vậy chúng tôi sử dụng tụ 0,1uF để lọc nhiễu. Nếu không có điều này sẽ có rất nhiều biến động ở sản lượng.
Chip hoạt động trên xung nhịp dao động RC (Resistor-Capacitor). Như được hiển thị trong sơ đồ mạch, C2 và R20 tạo thành Đồng hồ. Điều quan trọng cần nhớ ở đây là tụ điện C2 có thể được thay đổi thành giá trị thấp hơn để tỷ lệ chuyển đổi ADC cao hơn. Tuy nhiên với tốc độ cao hơn sẽ có độ chính xác giảm. Vì vậy, nếu ứng dụng yêu cầu độ chính xác cao hơn, hãy chọn tụ điện có giá trị cao hơn và để tốc độ cao hơn hãy chọn tụ điện có giá trị thấp hơn.
Giải thích lập trình:
Sau khi mọi thứ được kết nối theo sơ đồ mạch, chúng ta có thể BẬT PI để viết chương trình trong PYHTON.
Chúng ta sẽ nói về một số lệnh mà chúng ta sẽ sử dụng trong chương trình PYHTON, Chúng tôi sẽ nhập tệp GPIO từ thư viện, chức năng bên dưới cho phép chúng tôi lập trình các chân GPIO của PI. Chúng tôi cũng đang đổi tên “GPIO” thành “IO”, vì vậy trong chương trình bất cứ khi nào chúng tôi muốn đề cập đến các chân GPIO, chúng tôi sẽ sử dụng từ 'IO'.
nhập RPi.GPIO dưới dạng IO
Đôi khi, khi các chân GPIO, mà chúng tôi đang cố gắng sử dụng, có thể đang thực hiện một số chức năng khác. Trong trường hợp đó, chúng tôi sẽ nhận được cảnh báo trong khi thực hiện chương trình. Lệnh dưới đây yêu cầu PI bỏ qua các cảnh báo và tiếp tục với chương trình.
IO.setwarnings (Sai)
Chúng ta có thể tham khảo các chân GPIO của PI, theo số chân trên bo mạch hoặc theo số chức năng của chúng. Giống như 'PIN 29' trên bảng là 'GPIO5'. Vì vậy, chúng tôi nói ở đây hoặc chúng tôi sẽ đại diện cho chốt ở đây bằng '29' hoặc '5'.
IO.setmode (IO.BCM)
Chúng tôi đang đặt 8 chân làm chân đầu vào. Chúng tôi sẽ phát hiện 8 bit dữ liệu ADC bằng các chân này.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Trong trường hợp điều kiện trong dấu ngoặc nhọn là true, các câu lệnh bên trong vòng lặp sẽ được thực hiện một lần. Vì vậy, nếu chân GPIO 19 tăng cao, thì các câu lệnh bên trong vòng lặp IF sẽ được thực hiện một lần. Nếu chân GPIO 19 không tăng cao, thì các câu lệnh bên trong vòng lặp IF sẽ không được thực thi.
if (IO.input (19) == True):
Lệnh dưới đây được dùng làm vòng lặp vĩnh viễn, với lệnh này các câu lệnh bên trong vòng lặp này sẽ được thực hiện liên tục.
Trong khi 1:
Giải thích thêm về Chương trình được đưa ra trong Phần Mã Dưới đây.
Đang làm việc:
Sau khi viết chương trình và thực hiện nó, bạn sẽ thấy '0' trên màn hình. '0' có nghĩa là 0 vôn ở đầu vào.
Nếu chúng ta điều chỉnh nồi 10K kết nối với chip, chúng ta sẽ thấy sự thay đổi các giá trị trên màn hình. Các giá trị trên màn hình cứ cuộn liên tục, đây là các giá trị số được PI đọc.
Giả sử nếu chúng ta nhận được cái nồi ở điểm giữa, chúng ta có + 2,5V ở đầu vào ADC0804. Vì vậy, chúng tôi thấy 128 trên màn hình như hình dưới đây.
Đối với giá trị tương tự + 5V, chúng ta sẽ có 255.
Vì vậy, bằng cách thay đổi nồi, chúng tôi thay đổi điện áp từ 0 đến + 5V ở đầu vào ADC0804. Với PI này đọc các giá trị từ 0-255. Các giá trị được in trên màn hình.
Vì vậy, chúng tôi đã Interfaced ADC0804 thành Raspberry Pi.