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ụ:
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ụ:
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).