Làm thế nào tôi có thể phát hiện một pin bị ngắt kết nối?


7

Tôi đang cố gắng xây dựng một hệ thống trong đó nếu cáp bị ngắt khỏi chân (bất kỳ chân nào), một hành động sẽ được thực thi.

Tôi đang tự hỏi làm thế nào để thiết lập này. Tôi có thể chỉ cần nối dây 5V vào pin và đọc trạng thái của nó hay điều này sẽ làm rối Arduino? Tôi có nên sử dụng bất kỳ điện trở? Làm thế nào tôi nên kết nối này với GND?

Xin lưu ý rằng tôi khá mới đối với tất cả những điều này.


Vui lòng cho biết các chân này sẽ được sử dụng cho đầu vào hoặc đầu ra. Nếu đầu ra, họ đang lái xe gì? ví dụ. Đèn LED. Nếu đầu vào, thiết bị bạn đang đọc là gì?
Nick Gammon

Tôi không thực sự chắc chắn nếu tôi nên sử dụng chúng như một đầu vào hoặc đầu ra. Ý tưởng là nó kích hoạt một sự kiện phần mềm chứ không phải sự kiện vật lý (phần cứng). Tất cả những gì tôi thực sự cần là một tín hiệu cho máy tính (mặc dù bây giờ là USB) nói rằng cáp bị ngắt kết nối.
Karim Stekelenburg

Câu trả lời:


8

Cách để làm điều này, vì không có giá trị kỹ thuật số ở giữa CAO và THẤP, là chủ động tạo tín hiệu trên chân mà bạn có thể nhận ra. Lưu ý rằng nếu tín hiệu đi vào pin là luồng dữ liệu (chuỗi CAO và THẤP) chạy mọi lúc thì điều này có thể không hoạt động đáng tin cậy, nhưng nó tốt cho những thứ như nút và cảm biến đơn giản khác.

Bất kỳ tín hiệu trên dây có cường độ ổ đĩa . Về cơ bản, tín hiệu này mạnh đến mức nào và nó tốt như thế nào khi ghi đè lên những thứ khác xảy ra trên cùng một dây. Nó liên quan chặt chẽ đến trở kháng đầu ra của nguồn (những gì đang gửi tín hiệu). Đối với những thứ như nút và công tắc về cơ bản là giá trị của điện trở pullup được sử dụng.

Để chủ động cảm nhận nếu pin bị ngắt kết nối hay không, bạn cần tạm thời kết nối nó với mức tín hiệu đã biết cùng lúc với kết nối với dây (hoặc không được kết nối nếu nó không được kết nối). Mức tín hiệu đã biết này phải là một ổ đĩa yếu hơn tín hiệu nguồn theo một số bậc độ lớn. Điều này đảm bảo rằng nếu bạn thử đặt tín hiệu thử nghiệm của mình lên tín hiệu đến thì tín hiệu đến sẽ tắt tín hiệu kiểm tra và bạn hoàn toàn không thấy tín hiệu đó. Chẳng hạn, nếu nguồn của bạn có trở kháng 10KΩ (giả sử một nút có điện trở pullup 10KΩ) thì tín hiệu kiểm tra có trở kháng nguồn là 1MΩ sẽ phù hợp.

Mỗi chân được kiểm tra có thể được kết nối với điện trở 1MΩ (trong ví dụ này) của chính nó và tất cả các điện trở đó đều được kết nối với cùng một chân IO phụ:

nhập mô tả hình ảnh ở đây

Trong ví dụ này, chân D2 là chân thử nghiệm và chân D4-D7 là đầu vào của bạn.

Vì vậy, trong trường hợp bình thường, pin D2 được đặt làm đầu vào và hoàn toàn bị bỏ qua. Tuy nhiên, khi bạn đến để kiểm tra các chân, bạn đặt nó làm đầu ra.

Sau đó, bạn đặt D2 ở mức CAO và đọc từng D4 đến D7. Bất kỳ ai đọc là CAO đều là ứng cử viên không được kết nối.

Sau đó, bạn đặt D2 ở mức THẤP và đọc các chân đọc CAO trước đó. Bất kỳ bây giờ đọc là THẤP đều bị ngắt kết nối.

Sau đó, bạn đặt lại D2 thành đầu vào một lần nữa để nó không can thiệp vào các hoạt động bình thường.


Nếu bạn chỉ muốn biết nếu dòng điện chạy trong một dây, bạn có thể sử dụng cái được gọi là điện trở shunt . Đây là một điện trở nhỏ (có thể 1Ω) được đặt thẳng hàng với dây và bạn đo điện áp (sử dụng đầu vào tương tự Arduino) ở cả hai phía của điện trở. Điện áp rơi trên điện trở tỷ lệ thuận với dòng điện chạy qua nó nhờ vào định luật Ohm:

I = V / R

Ví dụ:

nhập mô tả hình ảnh ở đây

Nếu điện áp đọc bởi A1 phải là 5V (điện áp mà dây được nối với) và điện áp đọc bởi A0 phải là 4,93V, thì điện áp rơi bởi điện trở sẽ là 5-4,93 = 0,07v. Với điện trở 1Ω, dòng điện sẽ là 0,07 / 1 = 0,07A hoặc 70mA.

Với dây ở OUT bị ngắt kết nối, sẽ có dòng điện bằng 0 do không có mạch. Vì vậy, sắp xếp lại công thức ở trên, chúng tôi có thể chứng minh rằng chúng tôi có thể nói rằng nó bị ngắt kết nối.

Nếu I = V / R thì V = RI. Do đó V = 1Ω × 0A = 0V. Vì vậy, điện áp rơi trên điện trở sẽ là 0V, do đó A0 và A1 sẽ bằng nhau (giảm bất kỳ nhiễu nào). Cả A0 và A1 đều đọc 5V. Tương tự, nếu dây IN bị ngắt kết nối thay vào đó thì cả A0 và A1 sẽ đọc 0V.

Để cảm nhận dòng điện cao hơn, bạn sử dụng điện trở nhỏ hơn và để cảm nhận dòng điện nhỏ hơn bạn sử dụng điện trở lớn hơn - điều này cho phép tạo ra sự sụt giảm điện áp trong phạm vi phù hợp với độ nhạy của ADC khi đọc. Đối với Arduino đó là ADC 10 bit, do đó, nó có thể cảm nhận được (với 5V V REF ) 5/1024 = 4.882813mV mỗi LSB.

Lưu ý rằng nếu bạn đang làm việc với các điện áp ở trên mà Arduino hoạt động, bạn sẽ cần phải tách hoặc chia tỷ lệ các điện áp đó. Có những thiết bị đặc biệt được thiết kế đặc biệt cho nhiệm vụ này được gọi là bộ khuếch đại shunt dòng cao . Chúng cũng cho phép bạn sử dụng điện trở nhỏ hơn mức bạn cần, điều này ít xâm phạm vào mạch của bạn (giảm điện áp ít hơn).


1

Bạn có thể kết nối tất cả các chân thông qua điện trở 1M với đường ray. Thỉnh thoảng bạn đặt tất cả các đầu ra của mình thành đầu vào và chuyển đổi đường ray CAO và THẤP, nếu đầu vào CAO và THẤP trong chuỗi bạn đã bật đường ray, không có dây. Câu hỏi tương tự đã được hỏi tại Diễn đàn Arduino vì vậy hãy đọc chủ đề này .

Câu trả lời của câu hỏi này được cung cấp bởi johnwasser@forum.arduino.cc.


1
Cảm ơn bạn, nhưng điều này có vẻ nhiều hơn so với mục đích của tôi. Tôi không sử dụng bất kỳ thiết bị bên ngoài và / hoặc cảm biến. Những gì tôi đang tìm kiếm là một cách để phát hiện nếu dòng điện đang chảy từ 5V đến GND (cáp được kết nối) hay không (cáp bị ngắt kết nối). Bạn có thể nghĩ về nó như một chiếc vòng cổ điện tử kỳ lạ sẽ tạo ra âm thanh một khi nó bị ngắt kết nối. Bây giờ làm thế nào để tôi xác định khi nào làm cho tiếng ồn?
Karim Stekelenburg

1

Ngoài ra, nếu đây là đầu vào kỹ thuật số, bạn chỉ có thể sử dụng điện trở kéo lên hoặc kéo xuống để cung cấp cho chân đầu vào một giá trị mặc định. Giả sử bạn sử dụng điện trở kéo lên để làm cao mặc định. Sau đó, bạn kết nối cáp thấp với đầu vào này để đầu vào đọc thấp. Bây giờ, nếu cáp lên cao hoặc nếu nó bị ngắt kết nối, bạn sẽ nhận được giá trị cao trong chân đầu vào.

Tôi biết đây không hoàn toàn là những gì bạn đang hỏi nhưng có lẽ một giải pháp như vậy có thể giúp giải quyết vấn đề ban đầu của bạn. Trong trường hợp của tôi, tôi có một mô-đun phát hiện ngọn lửa cho đầu ra thấp theo mặc định và bật cao khi có ngọn lửa. Tôi không muốn bỏ lỡ ngọn lửa vì ngắt kết nối cáp, vì vậy tôi sử dụng điện trở kéo lên sẽ làm cho đầu vào cao không chỉ khi có ngọn lửa, mà cả khi có ngắt kết nối. Bằng cách này, tôi đảm bảo rằng mình không bỏ lỡ đám cháy do ngắt kết nối cáp cảm biến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.