Mục lục:

Máy dò cảm ứng xung dựa trên Arduino - LC-Trap: 3 bước
Máy dò cảm ứng xung dựa trên Arduino - LC-Trap: 3 bước

Video: Máy dò cảm ứng xung dựa trên Arduino - LC-Trap: 3 bước

Video: Máy dò cảm ứng xung dựa trên Arduino - LC-Trap: 3 bước
Video: Tạo Xung PWM Với Arduino UNO R3 | Điện tử DAT 2024, Tháng bảy
Anonim
Máy dò cảm ứng xung dựa trên Arduino - LC-Trap
Máy dò cảm ứng xung dựa trên Arduino - LC-Trap

Trong khi tìm kiếm thêm ý tưởng cho một máy dò kim loại cảm ứng xung Ardino đơn giản với chỉ một điện áp cung cấp, tôi đã xem trang chủ của Teemo:

www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit

Ông đã tạo ra một máy dò Cảm ứng Xung đơn giản bằng cách sử dụng nguyên tắc LC-Trap. Các mạch tương tự đã được đăng ở đây trên Có thể hướng dẫn bởi TechKiwiGadgets. Chứng tỏ rằng mạch Teemo sử dụng các bộ so sánh bên trong của bộ vi điều khiển PIC, do đó cần ít thành phần bên ngoài hơn

Vì vậy, tôi đã được thách thức sử dụng Arduino thay vì Bộ điều khiển PIC cho sơ đồ này và xem tôi có thể đi được bao xa.

Bước 1: Sơ đồ

Sơ đồ
Sơ đồ
Sơ đồ
Sơ đồ
Sơ đồ
Sơ đồ

Sơ đồ Arduino phức tạp hơn một chút vì Arduino không cho phép định tuyến tín hiệu tương tự bên trong đến đầu vào của bộ so sánh. Điều này bổ sung thêm hai thành phần cho một bộ chia điện áp đơn giản. Điều này dẫn đến một thiết kế với 12 thành phần bên ngoài (bỏ loa ngoài và màn hình LCD 16x2), so với 9 của thiết kế Flip Coil.

Nguyên lý hoạt động của sơ đồ đã được giải thích rất kỹ trên trang web của Teemo. Về cơ bản, cuộn dây được cấp nguồn và sau đó tắt. Sau khi tắt, cuộn dây và tụ điện song song sẽ tạo ra dao động giảm chấn. Tần số và sự phân rã của dao động chịu ảnh hưởng của kim loại ở gần cuộn dây. Để biết thêm chi tiết về mạch, hãy xem trang của Teemo hoặc của TechKiwi tại đây trên Vật phẩm hướng dẫn.

Như trong bộ dò cảm ứng xung lật cuộn, tôi sử dụng bộ so sánh bên trong và khả năng kích hoạt ngắt để thu tín hiệu từ cuộn dây.

Trong trường hợp này, tôi sẽ nhận được nhiều lần ngắt do điện áp dao động xung quanh điện áp tham chiếu được đặt tại bộ so sánh. Khi kết thúc dao động, điện áp ở cuộn dây sẽ ổn định xung quanh 5V, nhưng không chính xác. Tôi đã chọn một bộ chia điện áp 200 Ohm và 10k Ohm để có được điện áp khoảng 4,9 volt

Để giảm độ phức tạp của các sơ đồ, tôi đã sử dụng D4 và D5 để cung cấp GND (cho Điện trở 10k) và 5V (cho Điện trở 220 Ohm). Các chân được đặt khi khởi động máy dò.

Trong phiên bản này, tôi đã thêm kết nối loa bằng cách sử dụng tính năng thẩm định đa âm sắc được điều khiển bằng âm lượng như được mô tả trong Cách lập trình máy dò kim loại dựa trên Arduino. Điều này cho phép phân biệt các thuộc tính của mục tiêu cũng như có được cảm giác về cường độ tín hiệu. Loa có thể được kết nối với đầu cắm 5 chân của addiononal. 3 chân còn lại của tiêu đề sẽ được sử dụng cho các nút bấm (sẽ được thực hiện).

Bước 2: Lập trình

Lập trình
Lập trình
Lập trình
Lập trình
Lập trình
Lập trình

Giờ đây, mạch điện đã được thiết kế và chế tạo nguyên mẫu, đã đến lúc tìm ra cách tiếp cận thích hợp để phát hiện kim loại.

1. Đếm xung

Đếm xung của dao động cho đến khi nó phân rã hoàn toàn là một ý tưởng.

Nếu có kim loại ở gần cuộn cảm thì dao động của vật giảm dần. Trong trường hợp này, điện áp chuẩn của bộ so sánh phải được đặt ở mức mà xung cuối cùng hầu như vẫn chưa được đo. Vì vậy, trong trường hợp một cái gì đó được phát hiện, xung này ngay lập tức biến mất. Điều này có một chút vấn đề.

Mỗi sóng của dao động tạo ra hai lần ngắt. Một trong khi đi xuống và một đi lên. Để đặt điện áp tham chiếu chính xác với đỉnh của sóng dao động, thời gian từ lúc đi xuống đến lúc đi lên phải càng ngắn càng tốt (xem hình). Thật không may ở đây, chi phí của môi trường Arduino tạo ra vấn đề.

Mỗi kích hoạt của các lệnh gọi ngắt cho mã này:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // lưu giá trị cuối cùng Toggle0 = TCNT1; // lấy giá trị mới}

Mã này mất một thời gian (nếu tôi nhớ đúng, khoảng 78 chu kỳ lệnh phù thủy là khoảng 5 micro giây @ 16MHz). Do đó, khoảng cách tối thiểu có thể phát hiện được giữa hai xung là chính xác thời gian mã này thực hiện, Nếu thời gian giữa hai lần kích hoạt ngắn hơn (xem hình), nó sẽ không bị phát hiện, vì mã được thực thi đầy đủ trước khi phát hiện ngắt thứ hai

Điều này dẫn đến mất độ nhạy. Đồng thời, tôi nhận thấy rằng sự tắt dần của dao động rất nhạy cảm với bất kỳ tác động bên ngoài nào, do đó làm cho cách tiếp cận này tổng thể hơi khó khăn.

2. Đo tần số

Một cách khác để phát hiện kim loại là đo tần số của dao động. Điều này có một lợi thế lớn so với việc đo độ tắt dần của dao động vì sự thay đổi tần số cho phép phân biệt kim loại. Trong trường hợp có vật liệu màu gần cuộn dây, tần số sẽ chậm lại, trong trường hợp có kim loại quý ở gần cuộn dây, tần số sẽ tăng lên.

Cách dễ nhất để đo tần số là đo lượng xung sau khi cuộn dây bắt đầu dao động. Khoảng thời gian giữa xung bắt đầu và xung cuối cùng chia cho tổng lượng xung đo được là tần số. Thật không may, một số dao động cuối cùng là khá không đối xứng. Vì sự hiện diện của kim loại cũng ảnh hưởng đến sự phân rã của dao động nên các dao động cuối cùng thậm chí còn không đối xứng hơn, các số đọc rất khó giải thích. Trong hình, đây là hiển thị với giao cắt 1 đến 1 'và 2 đến 2'.

Do đó, một cách tốt hơn là sử dụng một số xung sớm hơn để đo tần số. Trong khi thử nghiệm, thú vị là tôi phát hiện ra rằng một số xung xung nhạy hơn những xung khác. Một nơi nào đó ở 2/3 số dao động là một điểm tốt để thu thập dữ liệu.

Xử lý dữ liệu

Mã ban đầu dựa trên loop () gọi hàm xung () để định thời gian của cuộn dây. Mặc dù kết quả không tệ, nhưng tôi muốn cải thiện thời gian. Để làm như vậy, tôi đã tạo một mã hoàn toàn dựa trên bộ đếm thời gian, dẫn đến Cách lập trình máy dò kim loại dựa trên Arduino riêng biệt. Tài liệu hướng dẫn này giải thích chi tiết về thời gian, đầu ra LCD xử lý dữ liệu, v.v.

1. Màn hình LCD

Cách tiếp cận đầu tiên là đo 10 xung và sau đó hiển thị các giá trị trên màn hình LCD. Khi tôi phát hiện ra việc truyền dữ liệu I2C quá chậm, tôi đã đổi sang mã để chỉ cập nhật một ký tự cho mỗi xung.

2. Phương pháp tiếp cận giá trị tối thiểu

Để cải thiện độ ổn định của các bài đọc hơn nữa, tôi đã viết một quy trình đầu ra nối tiếp để có được cảm giác tốt hơn đối với dữ liệu được đo. Rõ ràng là mặc dù hầu hết các bài đọc đều ổn định, nhưng một số thì không! Một số giá trị đọc của xung dao động “giống nhau” cách xa nhau đến mức nó sẽ phá hỏng mọi cách tiếp cận để phân tích sự thay đổi tần số.

Để bù đắp cho điều này, tôi đã tạo ra một "biên giới" trong đó giá trị là đáng tin cậy. NS. khi các giá trị cách giá trị dự kiến hơn 35 chu kỳ của timer1, các giá trị này sẽ bị bỏ qua (được giải thích chi tiết trong "Cách lập trình máy dò kim loại dựa trên Arduino" có thể hướng dẫn)

Cách tiếp cận này được chứng minh là rất ổn định.

3. Điện áp

Thiết kế ban đầu của Teemo được cấp nguồn dưới 5 volt. Vì giả định của tôi là "nhiều vôn hơn = nhiều điện hơn = nhạy hơn", tôi đã cấp nguồn cho thiết bị ngay từ đầu với 12V. Điều này dẫn đến việc MOSFET nóng lên. Sự nóng lên này sau đó dẫn đến sự chênh lệch chung của các giá trị đo được, dẫn đến việc cân bằng lại máy dò thường xuyên. Bằng cách giảm điện áp xuống 5V, sự sinh nhiệt của MOSFET có thể được giảm thiểu đến mức mà hầu như không quan sát thấy sự trôi dạt của các kết quả đọc. Điều này làm cho mạch đơn giản hơn, vì bộ điều chỉnh điện áp trên bo mạch của Arduino không cần thiết nữa.

Đối với MOSFET, ban đầu tôi chọn IRL540. MOSFET này tương thích mức logic, nhưng có định mức điện áp tối đa là 100V. Tôi đã hy vọng hiệu suất tốt hơn khi chuyển sang IRL640 với xếp hạng 200V. Thật không may, kết quả là như nhau. Vì vậy, IRL540 hoặc IRL640 sẽ thực hiện công việc.

Bước 3: Kết quả cuối cùng

Kết quả cuối cùng
Kết quả cuối cùng
Kết quả cuối cùng
Kết quả cuối cùng
Kết quả cuối cùng
Kết quả cuối cùng

Ưu điểm của máy dò là nó phân biệt giữa vật liệu quý và kim loại. Điểm bất lợi là độ nhạy với giản đồ đơn giản này không tốt lắm. Để so sánh hiệu suất, tôi đã sử dụng các tham chiếu tương tự như đối với máy dò Flip-Coil. Có thể tốt cho một số xác định, nhưng rất có thể gây thất vọng cho việc tìm kiếm thực sự.

Ở đây, thiết kế ban đầu với bộ điều khiển PIC có thể nhạy hơn vì nó đang chạy trên 32MHz thay vì 16MHz của nhiệt độ cung cấp độ phân giải cao hơn để phát hiện sự thay đổi tần số.

Kết quả đạt được bằng cách sử dụng cuộn dây có 48 vòng @ 100mm.

Như mọi khi, hãy mở để nhận phản hồi

Đề xuất: