Tuyên bố miễn trừ trách nhiệm: Tôi mới tham gia EE. Tất cả mọi thứ tôi đã học được cho đến nay tôi đã tự dạy mình từ việc đọc trực tuyến và đăng các câu hỏi như thế này trong khi thực hiện dự án này. Tôi xin lỗi nếu tôi làm một công việc kém để giải thích vấn đề của tôi vì tôi có thể thiếu kiến thức kỹ thuật để làm điều đó đúng.
Tôi đang cố đọc hai đồng hồ đo lưu lượng qua cổng mic của điện thoại / máy tính bảng. Các chân xung của đồng hồ đo lưu lượng chuyển đổi giữa + 0V và + 5V khi các chân của chúng xoay.
Tôi đang sử dụng sơ đồ sau đây để trộn các tín hiệu từ hai đồng hồ đo lưu lượng và gửi chúng qua cổng mic:
Tôi trộn hai chân xung với nhau bằng R-2R. Điều này cho phép tôi theo dõi sự thay đổi điện áp và biết một trong hai đồng hồ đo lưu lượng thay đổi trạng thái dựa trên cường độ thay đổi điện áp. Ví dụ, nếu tôi thấy điện áp thay đổi 2,5V, tôi biết rằng đồng hồ đo lưu lượng 1 đã bật. Nếu tôi thấy điện áp thay đổi -1,25V, tôi biết rằng lưu lượng kế 2 đã tắt. Sau đó tôi sử dụng một bộ chia điện áp để giảm điện áp trong phạm vi điện áp của card âm thanh.
Card âm thanh được ghép nối AC và chuyển đổi các thay đổi điện áp thành thay đổi biên độ với công thức tương tự amplitude change = (voltage change)/(voltage range)
. Khớp nối AC cũng từ từ kéo biên độ xuống 0. Vì vậy, nếu card âm thanh PC của tôi có dải điện áp là 2V và đồng hồ đo lưu lượng gây ra thay đổi điện áp -1,5V, tôi đọc qua cổng mic thay đổi biên độ -1.5V/2V = -0.75
. Thuật toán của tôi thấy sự thay đổi biên độ này và, dựa trên một số ngưỡng, xác định xem nó có phải do lưu lượng kế 1 hoặc 2. Điều này có thể được nhìn thấy trong các ảnh chụp màn hình chương trình Java này đang chạy trên PC của tôi không:
Tín hiệu thô được đọc từ cổng mic PC:
(nguồn: awesomebox.net )
Chương trình nêu bật các thay đổi trạng thái lưu lượng kế được phát hiện:
Như bạn có thể thấy, chương trình đang xác định thành công các thay đổi trạng thái của lưu lượng kế; thay đổi biên độ nhỏ hơn được gây ra bởi lưu lượng kế 1 và thay đổi biên độ lớn hơn được gây ra bởi lưu lượng kế 2.
Các vấn đề bắt đầu khi gửi tín hiệu tương tự đến máy tính bảng Android Galaxy Note 8 của tôi. Đây là tín hiệu trông như thế nào khi đọc qua cổng mic của máy tính bảng:
(nguồn: awesomebox.net )
Lưu ý rằng tất cả các thay đổi biên độ nhìn thấy ở trên là do cùng một thay đổi điện áp (tất cả các thay đổi trạng thái là từ cùng một lưu lượng kế). Thay đổi điện áp đơn hoặc không thường xuyên xuất hiện khi thay đổi biên độ rất nhỏ trong khi thay đổi điện áp được nhóm chặt chẽ (có cùng độ lớn) xuất hiện khi thay đổi biên độ lớn hơn và gần hơn với những gì tôi mong đợi. Có vẻ như sự thay đổi điện áp càng gần với sự thay đổi điện áp khác, sự thay đổi biên độ mà nó tạo ra càng lớn.
Đây là những gì tôi đọc được từ cổng mic của PC và những gì tôi mong đợi. Lưu ý rằng tất cả các thay đổi biên độ đều có cùng độ lớn:
(nguồn: awesomebox.net )
Hy vọng: Thay đổi điện áp 1,5V hoặc -1,5V sẽ luôn gây ra thay đổi biên độ 0,75 hoặc -0,75.
Thực tế: Thay đổi điện áp đơn 1,5V hoặc -1,5V gây ra thay đổi biên độ 0,1 hoặc -0,1. Một loạt 10 thay đổi điện áp 1,5V và -1,5V trong sự tách biệt ngắn gây ra sự thay đổi biên độ 0,75 và -0,75.
Sự không nhất quán này làm cho thuật toán của tôi không thể xác định được sự thay đổi biên độ dòng chảy nào gây ra. Tại sao những thay đổi điện áp đơn này gây ra thay đổi biên độ nhỏ như vậy? Có cách nào để làm cho sự thay đổi biên độ luôn phù hợp với sự thay đổi điện áp không?
Ngoài ra, thay vì tín hiệu giảm dần về 0 như tôi mong đợi từ khớp nối AC (và được thấy trong tín hiệu đọc qua cổng âm thanh của PC), nó dường như giảm về 0 ngay lập tức và dao động vài lần trước khi cuối cùng quay trở lại 0. Dao động làm tăng thêm nhiễu cho tín hiệu và gây khó khăn cho việc xác định xem sự thay đổi biên độ có phải do thay đổi điện áp hay chỉ đơn giản là một dao động từ lắng xuống 0. Có cách nào để loại bỏ các dao động này không?
Xin lỗi vì cuốn tiểu thuyết ngắn và cảm ơn vì lời khuyên nào,
- Mike