Dijital Seri Okuma öğreticisi - direnç değerini hesaplama


9

Arduino Digital Read Serial eğitimi, basit bir düğmenin kablolaması konusunda size yol gösterir. Sorularım direncin etrafında duruyor.

Direnç neden gereklidir?

Sanırım bunu anlıyorum ama yanılıyorsam beni düzeltin. Giriş piminin düşük bir sinyal okuduğundan ve yüzmediğinden emin olmak için, düğmeye basılmadığında pimi toprağa bağlamalıyız. Düğmeye basıldığında, hem pime hem de toprağa akan 5V'luk bir sinyale sahip olacağız. Kirchhoff'un voltaj yasası, kapalı döngüdeki toplam voltajın sıfıra eşit olması gerektiğini belirtir, bu nedenle doğrudan toprağa akan bu 5V ile uğraşmak zorundayız. Bu yüzden düğme ile toprak arasına bir direnç koyduk.

Direnç değeri nasıl seçildi?

Belirsiz olduğum şey bu. Ohm yasası şunu belirtiyor:

resistance = voltage / current

Bu 5V'luk bir besleme ve Arduino Uno spec, pimin 40 mA DC akımı sağladığını söylüyor. Yani..

resistance = 5V / 0.04A = 125 Ohms

In Dijital oku Seri öğretici, neden bir 10K Ohm direnç var? Bu aşırıya kaçma, değil mi? Hangi başka bir soruya yol açar: Tek hedefiniz voltajı silmekse, çok fazla direnç koyabilir misiniz?

Tüm geri dönüşümler için teşekkürler!

Yanıtlar:


6

Çok yakınsın. Direnç aşağı çekme direnci olarak hareket etmek için oradadır; Giriş pimi yüzüyorsa, sadece rastgele statik alan bir antendir. Anahtar, pozitif sağlandığında (düğmeye basarak) pozitif kaynağın, giriş piminin pozitif okuması için aşağı çekme direncini "boğması" gerektiğidir.

Direnç olmasaydı, giriş pimi pozitif veya negatif lehine olmayan doğrudan bir yolun ortasında okurdu. Ortaya çıkacak doğrudan kısatan emin olun, Arduino'nun hangi durumu okuyacağından şüpheliyim ya güç kaynağının rastgele ya da bazı özellikleri; Muhtemelen hala okumaya devam edecekti.

Direnç ile sinyal, yük direncinden önce doğrudan pozitif değere bağlanır. Bu şekilde YÜKSEK bir sinyal alacağınızdan emin olabilirsiniz.

Direncin tam büyüklüğü çok az sonuç verir. Çok küçük ve akımı boşa harcıyorsunuz, ancak çok fazla direnç etkili bir şekilde toprağın tekrar bağlantısını kesmek. Bunlar arasında iyi çalışacak çok geniş bir değer aralığı vardır.

Bir arduino pininin giriş moduna ayarlandığında, etkili bir şekilde akım sağlayamayacağını belirtmek isterim. 100 megaOhm direnç ile seri olarak moddeled edilebilir. ayrıntılar için bkz. http://arduino.cc/en/Tutorial/DigitalPins .


2
Buradaki anahtar şey, bir direnç kullanmazsanız, anahtar kapalıyken +5 voltunu şasiye kısa devre yapmış olmanızdır. Doğrudan bir kısa devre, güç kaynağını aşırı yükler ve güç kaynağındaki koruma devresini açar ve tüm Arduino'nun kapanmasına neden olur. Akım akışını düşük tutacak kadar yüksek empedanslı bir direnç istiyorsunuz. Genellikle 100k'lık bir direnç kullanıyorum, bu da anahtar açıkken giriş sinyalini 0 volta çekmek için yeterli ve sadece .00005 pasın akmasına izin veriyor, önemsiz miktarda akım. Bir 10k direnç de çalışır, ancak bu, 10 kat daha fazla akımın akmasına izin verir.
Duncan C

2

Direnç neden gereklidir?

Arduino girişleri çok yüksek dirence sahiptir. Atmega328'in verileri, ADC için 100 MOhm diyor, Bu yüksek değerler iyi, ancak parazitik etkilerle (direnç, endüktans, kapasitans) başa çıkma dezavantajına sahip. Bu etkiler Kapasitans Sensörleri olarak da kullanılabilir .

Direnç değeri nasıl seçildi?

Direnç, giriş direncinden daha küçük keyfi bir değere sahip olmalıdır. 10k ve üstü giriş sızıntısını devre dışı bırakmak için iyidir.

Bununla birlikte, dahili yukarı çekme dirençlerini kullandığınızda direnci de bırakabilirsiniz. Bu durumda negatif mantıkla uğraşırsınız:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

Pim 3'te ölçersiniz HIGHve düğmenin pime ve toprağa bağlanması gerekir. Dahili I / 0 yukarı çekme direnci 50k değerine sahiptir.


1

Neden aşağı çekme direncinin gerekli olduğuna dair birkaç iyi cevap aldınız.

Özetlemek gerekirse, girdiyi yüksek ve alçak arasında yarı rasgele yüzer halde tutmak için girişi toprağa bağlamanız gerekir. Anahtarı kapattığınızda, + 5V besleme ile toprak arasında kısa devre oluşturmamanız için bir direnç kullanırsınız.

Yine de başka bir nokta. Arduino'nun girişlerinde isteğe bağlı dahili, yazılım kontrollü bir çekme direnci bulunur. Pimi ilk olarak giriş olarak ayarlarsanız, o bağlantı noktasına YÜKSEK bir değer yazarsanız, çekme direncini etkinleştirir. Bu, hiçbir şey bağlı olmadığında pimin YÜKSEK olarak okunmasına neden olur.

Ardından anahtarınızı + 5V yerine toprağa bağlayabilirsiniz. Daha sonra, YÜKSEK bir değere basılmamış olarak ve DÜŞÜK değere basıldığında davranmak için kod mantığınızı değiştirmeniz gerekir. Bu, harici bir dirence ihtiyacınız olmadığından kablolarınızı biraz basitleştirmenizi sağlar.

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.