Thể loại: Mạch vi điều khiển
Số lượt xem: 18998
Bình luận về bài viết: 0

Kết nối cảm biến analog với Arduino, đọc cảm biến

 

Các cảm biến được sử dụng để đo lường số lượng, điều kiện môi trường và phản ứng với những thay đổi ở trạng thái và vị trí. Ở đầu ra của chúng, có thể có cả tín hiệu số bao gồm tín hiệu và số 0 và tín hiệu tương tự bao gồm một số điện áp vô hạn trong một khoảng nhất định.


Về cảm biến

Theo đó, các cảm biến được chia thành hai nhóm:

1. Kỹ thuật số.

2. Tương tự.

Để đọc các giá trị số, cả hai đầu vào số và tương tự của vi điều khiển đều có thể được sử dụng, trong trường hợp của chúng tôi Avr trên bảng Arduino. Các cảm biến tương tự phải được kết nối thông qua bộ chuyển đổi tương tự sang số (ADC). ATMEGA328, nó được cài đặt trong hầu hết các bảng ARDUINO (thêm về điều này có một bài viết trên trang web), chứa trong mạch tích hợp ADC của nó. Có đến 6 đầu vào tương tự có sẵn để lựa chọn.

Nếu điều này là không đủ cho bạn, bạn có thể sử dụng một ADC bên ngoài bổ sung để kết nối với các đầu vào kỹ thuật số, nhưng điều này sẽ làm phức tạp mã và tăng âm lượng của nó, do có thêm thuật toán xử lý và điều khiển ADC. Chủ đề của bộ chuyển đổi tương tự sang số đủ rộng để bạn có thể tạo một bài viết hoặc chu trình riêng về chúng. Nó dễ dàng hơn để sử dụng một bảng với một số lượng lớn trong số họ hoặc bộ ghép kênh. Chúng ta hãy xem làm thế nào để kết nối các cảm biến tương tự với Arduino.

Kết nối cảm biến analog với Arduino, đọc cảm biến đọc

Sơ đồ tổng quát của cảm biến analog và kết nối của chúng

Cảm biến thậm chí có thể là một chiết áp thông thường. Trên thực tế, đây là một cảm biến vị trí điện trở, theo nguyên tắc này, họ thực hiện kiểm soát mức độ chất lỏng, góc nghiêng, độ mở của một cái gì đó. Nó có thể được kết nối với arduino theo hai cách.

Sơ đồ tổng quát của cảm biến analog và kết nối của chúng

Mạch ở trên cho phép bạn đọc các giá trị từ 0 đến 1023, do thực tế là tất cả các điện áp giảm trên chiết áp. Nguyên lý của một bộ chia điện áp hoạt động ở đây, ở bất kỳ vị trí nào của động cơ, điện áp được phân phối tuyến tính trên bề mặt của lớp điện trở hoặc trên thang đo logarit (tùy thuộc vào chiết áp) mà một phần của điện áp vẫn nằm giữa đầu ra của thanh trượt (tiếp xúc trượt) với mặt đất. Trên bảng điều khiển, kết nối này trông như thế này:

Sơ đồ nối dây cho cảm biến analog

Tùy chọn thứ hai được kết nối theo sơ đồ của bộ chia điện trở cổ điển, ở đây điện áp tại điểm điện trở cực đại của chiết áp phụ thuộc vào điện trở của điện trở trên (trong hình R2).

Bộ chia điện trở cổ điển

Nhìn chung, bộ chia điện trở rất quan trọng không chỉ trong lĩnh vực làm việc với vi điều khiển, mà còn trong điện tử nói chung. Dưới đây bạn thấy sơ đồ tổng quát, cũng như các tỷ lệ được tính toán để xác định giá trị điện áp ở nhánh dưới.

Sơ đồ và thiết kế mối quan hệ để xác định giá trị điện áp ở nhánh dưới

Một kết nối như vậy là đặc trưng không chỉ cho một chiết áp, mà cho tất cả các cảm biến tương tự, bởi vì hầu hết chúng hoạt động theo nguyên tắc thay đổi điện trở (độ dẫn) dưới tác động của các nguồn bên ngoài - nhiệt độ, ánh sáng, bức xạ các loại, v.v.

Sau đây là sơ đồ kết nối đơn giản nhất nhiệt điện trở, về nguyên tắc, một nhiệt kế có thể được thực hiện trên cơ sở của nó. Nhưng độ chính xác của bài đọc của nó sẽ phụ thuộc vào độ chính xác của bảng chuyển đổi điện trở theo nhiệt độ, độ ổn định của nguồn điện và hệ số thay đổi điện trở (bao gồm cả điện trở của cánh tay trên) dưới tác động của cùng nhiệt độ. Điều này có thể được giảm thiểu bằng cách chọn các điện trở tối ưu, công suất và dòng điện hoạt động của chúng.

Sơ đồ kết nối đơn giản nhất cho nhiệt điện trở

Theo cách tương tự, bạn có thể kết nối photodiod, phototransistors như một cảm biến ánh sáng. Quang điện tử đã tìm thấy ứng dụng trong các cảm biến xác định khoảng cách và sự hiện diện của một vật thể, một trong số đó chúng ta sẽ xem xét sau.

Máy quang điện

Hình vẽ cho thấy sự kết nối của quang điện trở với arduino.

Sơ đồ kết nối của quang điện trở với arduino

Phần mềm

Trước khi nói về việc kết nối các cảm biến cụ thể, tôi quyết định xem xét phần mềm để xử lý chúng. Tất cả các tín hiệu tương tự được đọc từ cùng một cổng bằng lệnh analogRead ().Điều đáng chú ý là Arduino UNO và các mô hình khác với 168 và 328 atmega có ADC 10 bit. Điều này có nghĩa là vi điều khiển xem tín hiệu đầu vào là một số từ 0 đến 1023 - tổng cộng 1024 giá trị. Nếu bạn cho rằng điện áp cung cấp là 5 volt, thì độ nhạy đầu vào:

5/1024 = 0,0048 V hoặc 4,8 mV

Nghĩa là, với giá trị 0 ở đầu vào, điện áp là 0 và với giá trị 10 ở đầu vào - 48 mV.

Trong một số trường hợp, để chuyển đổi các giá trị thành mức mong muốn (ví dụ: để truyền đến đầu ra PWM), 1024 được chia cho một số và do kết quả của phép chia, cần đạt được mức tối đa cần thiết. Chức năng bản đồ (nguồn, thấp, cao, cao, cao, thấp) hoạt động rõ ràng hơn, trong đó:

  • số thấp - số thấp hơn trước khi chuyển đổi theo chức năng;

  • vch - thượng;

  • VCh - số thấp hơn sau khi xử lý bởi hàm (ở đầu ra);

  • VHV - hàng đầu.

Một ứng dụng thực tế để chuyển đổi một chức năng thành một giá trị đầu vào để truyền đến một PWM (giá trị tối đa là 255, để chuyển đổi dữ liệu từ ADC sang đầu ra của PWM, 1024 được chia cho 4):

Lựa chọn 1 - phân chia.

int x;

x = analogRead (nồi) / 4;

// một số từ 0 đến 1023 sẽ được nhận

// chia nó cho 4, chúng ta nhận được một số nguyên từ 0 đến 255 analogWrite (led, x);

Tùy chọn 2 - chức năng MAP - mở ra nhiều cơ hội hơn, nhưng nhiều hơn về điều đó sau.

vòng lặp void ()

{int val = analogRead (0);

val = bản đồ (val, 0, 1023, 0, 255);

analogWrite (led, val); }

Hoặc thậm chí ngắn hơn:

analogWrite (đã dẫn, bản đồ (val, 0, 1023, 0, 255))

Không phải tất cả các cảm biến đều có 5 volt ở đầu ra, tức là số 1024 không phải lúc nào cũng thuận tiện để phân chia để có cùng 256 cho PWM (hoặc bất kỳ loại nào khác). Giá trị này có thể là 2 và 2,5 volt và các giá trị khác, ví dụ khi tín hiệu tối đa sẽ là 500.


Cảm biến analog phổ biến

Một cái nhìn tổng quát về cảm biến cho arduino và kết nối của nó được hiển thị dưới đây:

Cách kết nối cảm biến analog

Thông thường có ba đầu ra, có thể có thứ tư - kỹ thuật số, nhưng đây là những tính năng.

Giải thích về chỉ định đầu ra của cảm biến analog:

  • G - trừ điện, xe buýt chung, mặt đất. Có thể được chỉ định là GND, trên mạng - ";

  • V - cộng sức mạnh. Có thể được ký hiệu là Vcc, Vtg, "+";

  • S - tín hiệu đầu ra, ký hiệu có thể - Ra, SGN, Vout, ký.

Người mới bắt đầu học cách đọc các giá trị của cảm biến, chọn các dự án thuộc mọi loại nhiệt kế. Các cảm biến như vậy có trong thiết kế kỹ thuật số, ví dụ DS18B20 và tương tự - đây là tất cả các loại vi mạch như LM35, TMP35, TMP36 và các loại khác. Dưới đây là một ví dụ về thiết kế mô-đun của một cảm biến như vậy trên bảng.

Cảm biến tương tự trên TMP36

Độ chính xác của cảm biến là từ 0,5 đến 2 độ. Được xây dựng trên chip TMP36, giống như nhiều chất tương tự của nó, giá trị đầu ra của nó là 10 mV / ° C. Ở 0 °, tín hiệu đầu ra là 0 V, và sau đó thêm 10 mV trên 1 độ. Nghĩa là, ở 25,5 độ, điện áp là 0,255 V, có thể xảy ra sai lệch trong phạm vi lỗi và tự làm nóng của tinh thể IC (lên đến 0,1 ° C).


Tùy thuộc vào vi mạch được sử dụng, phạm vi đo và điện áp đầu ra có thể khác nhau, xem bảng.

Phạm vi nhiệt độ và điện áp đầu ra cảm biến

Tuy nhiên, đối với nhiệt kế chất lượng cao, bạn có thể chỉ cần đọc các giá trị và hiển thị chúng trên chỉ báo LCD hoặc cổng nối tiếp để liên lạc với PC, để ổn định tín hiệu đầu ra của toàn bộ hệ thống, bạn cần trung bình các giá trị từ cảm biến, cả tương tự và kỹ thuật số, trong một số giới hạn nhất định mà không làm giảm tốc độ và độ chính xác của chúng (có giới hạn cho tất cả mọi thứ). Điều này là do sự hiện diện của tiếng ồn, nhiễu, tiếp xúc không ổn định (đối với cảm biến điện trở dựa trên chiết áp, xem sự cố của cảm biến mức nước hoặc nhiên liệu trong thùng xe).

Các mã để làm việc với hầu hết các cảm biến đều khá đồ sộ, vì vậy tôi đã giành được tất cả, chúng có thể dễ dàng tìm thấy trên mạng bằng yêu cầu cảm biến cảm biến + tên Arduino.

Cảm biến tiếp theo mà các kỹ sư robot arduino thường sử dụng là cảm biến dòng. Nó dựa trên các thiết bị quang điện tử, loại phototransistors.

Cảm biến đường

Với sự giúp đỡ của họ, một robot di chuyển dọc theo dây chuyền (được sử dụng trong sản xuất tự động để phân phối các bộ phận) xác định sự hiện diện của dải màu trắng hoặc đen. Ở bên phải của hình, có thể nhìn thấy hai thiết bị tương tự như đèn LED. Một trong số đó là đèn LED, nó có thể phát ra trong quang phổ vô hình, và thứ hai là một phototransistor.

Ánh sáng được phản xạ từ bề mặt nếu trời tối - phototransistor không nhận được luồng phản xạ, nhưng nếu ánh sáng nhận và nó mở ra. Các thuật toán mà bạn đặt trong vi điều khiển xử lý tín hiệu và xác định độ chính xác và hướng di chuyển và sửa chúng. Chuột quang, mà bạn rất có thể cầm trên tay trong khi đọc những dòng này, cũng được sắp xếp tương tự.

Tôi sẽ bổ sung với một cảm biến liền kề - một cảm biến khoảng cách từ Sharp, cũng được sử dụng trong chế tạo robot, cũng như trong các điều kiện giám sát vị trí của các vật thể trong không gian (với lỗi TX tương ứng).

Cảm biến khoảng cách sắc nét

Nó hoạt động trên cùng một nguyên tắc. Các thư viện và ví dụ về bản phác thảo và dự án với chúng có sẵn với số lượng lớn trên các trang web dành riêng cho Arduino.


Kết luận

Việc sử dụng các cảm biến analog rất đơn giản và với ngôn ngữ lập trình Arduino dễ học, bạn nhanh chóng học được các thiết bị đơn giản. Cách tiếp cận này có những hạn chế đáng kể so với các đối tác kỹ thuật số. Điều này là do sự thay đổi lớn trong các tham số, điều này gây ra vấn đề khi thay thế cảm biến. Bạn có thể phải chỉnh sửa mã nguồn của chương trình.

Đúng, các thiết bị tương tự riêng lẻ kết hợp các nguồn điện áp tham chiếu và các bộ ổn định hiện tại, có tác động tích cực đến độ lặp lại của sản phẩm và thiết bị cuối cùng trong sản xuất hàng loạt. Tất cả các vấn đề có thể tránh được bằng cách sử dụng các thiết bị kỹ thuật số.

Mạch kỹ thuật số như vậy làm giảm nhu cầu điều chỉnh và điều chỉnh mạch sau khi lắp ráp. Điều này cho bạn cơ hội lắp ráp một số thiết bị giống hệt nhau trên cùng một mã nguồn, các chi tiết sẽ cho cùng một tín hiệu, với cảm biến điện trở là điều hiếm gặp.

Xem thêm trên trang web của chúng tôi:Kết nối các thiết bị bên ngoài với Arduino

Xem thêm tại electro-vi.tomathouse.com:

  • Sự khác biệt giữa cảm biến analog và kỹ thuật số là gì
  • Đo nhiệt độ và độ ẩm trên Arduino - một lựa chọn các phương pháp
  • Làm thế nào để chuyển đổi tín hiệu tương tự sang kỹ thuật số
  • Các cảm biến phổ biến nhất cho Arduino
  • Cách sắp xếp và cảm biến dòng

  •