Kod Ara

Ders 98-9: Arduino ile LED Voltaj Seviye Ölçer veya potansiyometreli kayan ışık

Ders 98-9: Arduino ile LED Voltaj Seviye Ölçer veya potansiyometreli kayan ışık

Bu proje, tamamen bir Arduino ve tek bir potansiyometre tarafından sürülen, çubuk grafik gösterge olarak beş LED kullanan bir voltaj seviye ölçer yapmayı gösterir. Düğmeyi çevirdikçe, Arduino analog bir pindeki değişen voltajı okur ve her volt için bir LED yakar, böylece ışık sırası düğmeyle birlikte kelimenin tam anlamıyla yukarı ve aşağı "yürür". Analog girişi anlamanın en net yollarından biridir, çünkü analogdan dijitale dönüşümün fiziksel bir ışık çubuğu olarak gerçek zamanlı gerçekleştiğini görebilirsiniz.

5 leds on breadboard with sliding veriable resistor shown connected to Arduino UNO
5 leds on breadboard with sliding veriable resistor shown connected to Arduino UNO

Buradaki pratik değer bir ışık gösterisinin çok ötesine geçer. Ölçülen bir voltajı bir çıkış kümesine nasıl eşleyeceğinizi anladığınızda, tam olarak aynı kalıbı gerçek enstrümantasyon için yeniden kullanabilirsiniz. Örneğin, şunları yapabilirsiniz:

  • 12 V veya USB power bank'in kalan kapasitesini bir LED sırası olarak gösteren bir pil şarj göstergesi.
  • Bir şamandıra sensörünün derinlikle orantılı bir voltaj çıkışı verdiği bir su deposu seviye göstergesi.
  • LM35 gibi bir analog sıcaklık sensörü kullanan bir sıcaklık çubuğu göstergesi.
  • Bir radyo alıcısı veya amplifikatör için bir sinyal gücü veya ses seviyesi ölçer.
  • Herhangi bir 0–5 V analog dönüştürücü (basınç, ışık, konum) için basit bir sensör okuması.
  • Multimetre ekranı olmadan güç raylarını kontrol etmek için bir tezgah testi voltaj probu.

Eşikler kart voltajının yüzdeleri olarak hesaplandığından, aynı kod Uno ve Mega gibi 5 V kartlarda ve yalnızca tek satırlık bir değişiklikle 3,3 V kartlarda çalışır.

Donanım ve Bileşenler

Parça listesi kasıtlı olarak minimaldir ve her şey videonun erken bölümünde açıklanmıştır (videoda 01:54'te). İhtiyacınız olanlar:

  • Bir Arduino kartı (Uno, Nano veya Mega).
  • Beş LED, ideal olarak çubuğun net okunması için tek renk, ancak karışık renkler de sorun olmaz.
  • Beş akım sınırlama direnci. Eğitimde 1 kΩ dirençler kullanılır, ancak kabaca 300 Ω ile 1 kΩ arasındaki herhangi bir değer işe yarar; daha yüksek değerler LED'leri yalnızca daha sönük yapar (videoda 05:33'te).
  • Bir potansiyometre. Hem döner düğme tipi hem de kaydırmalı tip gösterilmiştir (videoda 02:19'da).
  • Bir breadboard ve jumper kabloları.

LED'in kendisi hakkında kısa bir not, çünkü kablolama için önemlidir: bir LED bir diyottur, bu nedenle yalnızca tek yönde iletir. Plastik gövdenin düz tarafı ve daha kısa bacak katottur (negatif). Daha uzun bacak anottur (pozitif). Eğitim bu sembolü ve fiziksel şekli ayrıntılı olarak ele alır (videoda 02:39'da).

Direnç değeri keyfi değildir. Bir LED yaklaşık 2 V düşürür ve küçük 3 mm ve 5 mm tipleri yaklaşık 10 mA çeker. 5 V besleme ile kalan 3 V direnç üzerinden düşürülmelidir, bu nedenle Ohm yasası R = 3 V / 0,01 A = 300 Ω verir. Bu maksimum parlaklık için değerdir; 1 kΩ kullanmak güvenli, biraz daha sönük bir seçimdir (videoda 04:41'de).

Kablolama Kılavuzu

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs
wiring for Arduino walking light LEDs

Kablolamanın LED bölümü önceki yürüyen ışık projesiyle aynıdır: her LED anodu kendi dijital pinine bağlanır ve her katot bir direnç üzerinden ortak bir toprak rayına gider. Eğitimde LED'ler 7, 6, 5, 4 ve 3 numaralı pinlere bağlanmıştır (videoda 43:04'te).

Potansiyometre tek yeni parçadır. İki dış pini iki güç rayına gider — bir dış pin toprağa ve diğeri 5 V'a (veya 3,3 V'luk bir sistemi ölçüyorsanız 3,3 V'a). Wiper adı verilen orta pin çıkıştır ve analog pin A0'a bağlanmalıdır (videoda 43:30'da). Değişken voltajı üreten şey wiper'dır: düğmeyi çevirdikçe, wiper dirençli bir ray boyunca kayar ve sunduğu voltaj iki ray arasında düzgün bir şekilde değişir.

Önemli bir ayrıntı: devre çalışırken potansiyometreyi çıkarırsanız, analog pin boşta kalır ve LED'ler rastgele titrer. Bu davranış videoda gösterilmiştir (videoda 48:52'de) ve analog bir girişin her zaman tanımlı bir voltaj kaynağına ihtiyaç duyduğunun iyi bir hatırlatıcısıdır.

Kod Açıklaması

Kod kısadır ve çoğu basittir, bu nedenle bu bölüm yalnızca değiştirmek isteyeceğiniz kısımlara odaklanır. Bu ayarların tümü taslağın en üstünde yer alır.

Pin tanımları. Bunlar Arduino'ya LED'lerin ve potansiyometrenin hangi pinlere bağlı olduğunu söyler. LED'lerinizi farklı şekilde bağladıysanız, bu numaraları eşleşecek şekilde değiştirin — sıra önemlidir, çünkü LED1 en düşük eşik ve LED5 en yüksek eşiktir.

const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;

Kart voltajı. Doğru ayarlanması gereken en önemli değerdir. Her eşiğin hesaplandığı referanstır. Uno veya Mega için 5.0, 3.3 V Nano veya benzeri bir kart için 3.3 olarak ayarlayın. Yanlış bırakırsanız, her LED yanlış voltajda açılır (videoda 44:19'da).

float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V

Seri voltaj gösterimi. Ölçülen voltajı 9600 baud hızında Seri Monitör'e yazdırmak için bunu true olarak ayarlayın; bu, kalibrasyon sırasında son derece kullanışlıdır. Her şey çalıştıktan sonra çıktıyı susturmak için false olarak ayarlayın.

boolean showVoltage = true;//true or false to read voltage in serial monitor

Dönüşüm nasıl çalışır. Arduino'nun analogdan dijitale dönüştürücüsü 0 ile 1023 arasında bir sayı döndürür, çünkü 10 bitlik bir dönüştürücüdür (210 = 1024 adım). Kod, bu ham sayıyı kart voltajını referans alarak gerçek bir voltaja ölçekler. Due gibi 12 bitlik bir karta geçerseniz, 4095'e bölmeniz gerekeceğini hatırlamanız gereken satır budur.

int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);

Eşik mantığı. Voltajları sabit kodlamak yerine, her adım kart voltajının yüzdesi olarak ifade edilir. %95 veya üzerinde beş LED'in tümü yanar; %80'in üzerinde yalnızca dört tanesi; ve bu şekilde %20'ye kadar devam eder, burada tek bir LED yanar. Bu yüzde yaklaşımı, karşılaştırmaları yeniden yazmadan taslağı 5 V ve 3.3 V kartlar arasında taşınabilir kılan şeydir.

if (voltage >= boardVoltage*0.95)
{
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
}

Kod else if kullandığından, döngüden her geçişte tam olarak bir dal çalışır, böylece aynı anda yalnızca doğru sayıda LED yanar. Her döngünün sonundaki 50 ms gecikme, ekranın titremesini önler.

Canlı Proje ve Gösterim

Taslak yüklendikten sonra, Seri Monitör'ü 9600 baud hızında açın ve düğmeyi yavaşça çevirin. Yazdırılan voltaj ve LED çubuğu birbirini yakından takip eder: yaklaşık 1 V'ta bir LED yanar, 2 V'ta iki tanesi yanar ve bu şekilde yaklaşık 4.8 V'a kadar devam eder, burada beşinin tümü açıktır (videoda 47:37'de). Okumalar beklenen değerin birkaç yüzde biri içinde kalır, bu 10 bitlik bir dönüştürücü için mükemmeldir.

Adımlar biraz düzensiz görünüyorsa, bu genellikle koddan ziyade dirençlerdir. Eğitim, standart karbon film dirençlerin %10 toleransa sahip olduğunu, mavi metal film tiplerinin ise tipik olarak %1 olduğunu ve belirgin şekilde daha sıkı, daha doğru adımlar verdiğini belirtir (videoda 48:18'de).

Ayrıca döner potansiyometreyi bir kayar potansiyometre ile değiştirebilir ve doğrusal bir hisle aynı davranışı elde edebilirsiniz; bu, ölçeri bir panele monte etmeyi planlıyorsanız güzel bir seçenektir (videoda 49:07'de).

Işığı bir düğme yerine manuel olarak hareket ettirmek istiyorsanız, bu Ders 98-8: Arduino ile Buton ve LED'lerle Kayan Işık bölümünde ele alınmıştır. Ve eğer LED'lerin kendi zamanlayıcılarında yürümesini istiyorsanız, Ders 98-7: Arduino ve 5 LED Kullanarak Kayan Işık bölümüne bakın.

Bu videodan ilgili projeler

Bölümler

  • [00:00] 10 LED projesine genel bakış
  • [02:29] LED temelleri, semboller ve direnç hesaplaması
  • [42:25] LED voltaj seviye ölçerine giriş
  • [43:04] LED'leri ve potansiyometreyi kablolama
  • [43:54] Voltaj çubuğu kodunu açıklama
  • [44:19] Kart voltaj referansını ayarlama
  • [46:00] Eşik mantığı ve yüzde adımları
  • [47:14] Gösterim: LED çubuğuyla voltaj okuma
  • [48:18] Direnç toleransı ve doğruluk
  • [49:07] Kayar potansiyometre kullanma

Görseller

wiring for Arduino walking light LEDs
wiring for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Arduino UNO'ya bağlı breadboard üzerinde kaydırmalı değişken direnç ile 5 led
Arduino UNO'ya bağlı breadboard üzerinde kaydırmalı değişken direnç ile 5 led
941-Lessson 98-LED-9: Arduino code walking LED light controlled by potentiometer
Dil: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Dosyalar📁

Arduino Kütüphaneleri (zip)

Kullanım Kılavuzu