Raspberry pi GPIO giriş pimleri rastgele değerler verir


12

Son zamanlarda Raspberry Pi ile çok oynuyorum. Ama benim bir problemim var.

Elektriğin kendisine gönderilip gönderilmediğini kontrol etmek için bir giriş pimi ayarladığımda, bana oldukça kararsız cevaplar veriyor.

Sorunumu açıklığa kavuşturmak için yaptığım birkaç gözlem:

  1. Devreyi bağladığımda ve elektrik giriş pimine aktığımda, bana verdiği değer sürekli olarak DOĞRU veya 1.

  2. Bir parçası olan bir LED'i kaldırarak devreyi kestiğimde (giriş değeri 0 olması gerektiğinde) bana 0 ile 1 arasında değişen rastgele değerler verir.

  3. Pi'imdeki tüm kabloları çıkardığımda bana 0'ın tutarlı değerini veriyor

  4. Tüm GPIO kabloları çıkarılmışsa, bana 0 değerini verir, ancak giriş pimine bir parça elektrikle önde gelen metalle dokunursam, (diğer uçta hiçbir şeye yol açmaz) tekrar rastgele değerlerle başlar. Ben de çıkış pinine bağlı bir şey yoksa bana rastgele değerler vermez. Hiçbir yere götürmek zorunda değil, sadece çıkış pimine dokunmak zorunda. Ve başka bir metal parçası giriş pimine dokunmalıdır. Aralarında hiç bağlantı yok.

Giriş GPIO pimi herhangi bir metale temas ettiğinde neden rastgele değerler vermeye başladığını merak ediyorum.

Ve daha da ilginç olan, aslında ona elektrik gönderdiğimde neden bana 1 sn veya TRUE'lar veriyor?


4 numaralı ifadeye düzenleyin: Ben de çıktı pinine bağlı bir şey yoksa bana rastgele değerler vermez. Hiçbir yere götürmek zorunda değil, sadece çıkış pimine dokunmak zorunda. Ve başka bir metal parçası giriş pimine dokunmalıdır. Aralarında hiçbir bağlantı yok
Gustaf

Raspberry Pi Yığın Değişimi'ne hoş geldiniz! Bu bilgiyi yorumlamak yerine değiştirmek için sorunuzu düzenleyebileceğinizi biliyor musunuz? Ayrıca, zaman zaman sohbete girin. Her zaman yeni şirketi seviyoruz ve bu sitenin yararlı, büyüyen ve ilgili bir kullanıcı tabanına sahip olduğunu göstermeye yardımcı olacaktır. Teşekkürler!
RPiAwesomeness

1
Çünkü pimler yüzer. More info at electronics.stackexchange.com/a/35705
Gerben

Yanıtlar:


14

Sorun

Devreyi bağladığımda ve elektrik giriş pimine aktığımda, bana verdiği değer sürekli olarak DOĞRU veya 1.

Doğru, ancak GPIO giriş pimine toprak bağlandığında ne olur ? Vereceği değer her zaman yanlış olur .

  • Giriş pimine güç bağlandığında: Giriş pimi 1 (doğru) algılar.
  • Giriş pimine toprak bağlandığında: Giriş pimi 0 (yanlış) algılar.
  • Ne zaman bir şey giriş iğnesine bağlanır: girdi pimi karışır.

Hiçbir şey bağlanmadığında, pim "yüzer" durumdadır ve çıkış öngörülebilir değildir. tanımlanmamış bir durumda, ne 0 ne de 1'dir ve tespit edilen değer garip bir şekilde değişebilir, bu nedenle rastgele sonuçlarınız. Elektronikte bu üçüncü durum olarak bilinir .

Wikipedia makalesinden biraz daha ayrıntı :

Dijital devrelerde, yüksek empedans (hi-Z, tri-belirtilen veya değişken olarak da bilinir) çıkış, çıkış devresi tarafından tanımlanan herhangi bir mantık seviyesine yönlendirilmez. Sinyal ne mantıksal yüksek ne de düşük seviyeye yönlendirilmez; bu üçüncü koşul "üç-belirtilen" açıklamasına yol açar. Böyle bir sinyal bir açık devre (veya "yüzen" tel) olarak görülebilir.

Genel çözüm

Çözelti bir aşağı çekme direncidir . Bunu, hat 0 veya 1 olduğunda hiçbir şey yapmayan ekstra bir bileşen olarak düşünün. Ancak hat boşta olduğunda, aniden harekete geçer ve 0 verir.

Raspberry Pi çözümü

Neyse ki sizin için, Rpi'nin dahili bir açılır menüsü vardır, programlı olarak etkinleştirmeniz gerekir. İşte bunun için bir python betiği:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
//Now your input is stable.

Kenar notu

Tehlikeli olacağı için gücü doğrudan pime bağlamayın! Devrede yeterli direnç olduğundan emin olun. Ayrıca, yalnızca 3.3V kabul ettiği için 5V gücünü asla doğrudan GPIO'ya bağlamayın.


Windows 10 IoT çekirdek platformunda çalışırken eşdeğer C # kodunu biliyor musunuz?
Vijay Chavda

Bu cevap altın! Thx
domih
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.