Raspberry Pi, çeşitli elektronik projeler için mükemmel bir cihazdır, ancak bir ADC dönüştürücü kullanarak analog sinyalleri ölçme ve daha geniş bir cihaz yelpazesiyle etkileşim kurma yeteneklerini genişletebilirsiniz.
Raspberry Pi standart olarak analog girişlerden yoksundur. Bu, Arduino gibi mikrodenetleyici tabanlı kartlara kıyasla onu dezavantajlı hale getiriyor.
Ancak umutsuzluğa kapılmayın: dikkate alınması gereken pek çok seçenek var. Raspberry Pi ve harici bir ADC ile başlayabilirsiniz. Bu kılavuzda, bir ADC dönüştürücünün Raspberry Pi ile nasıl kullanılacağına dair önemli adımlara ve potansiyel faydalara odaklanarak kapsamlı bir genel bakış sunacağız. Cihazınızdan en iyi şekilde nasıl yararlanabileceğinizi ve onu elektronik projelerinize etkili bir şekilde nasıl entegre edebileceğinizi keşfetmek için okumaya devam edin. Doğrulamak Analogdan dijitale dönüştürücü (ADC) nedir? Çalışmalarını ve dijital teknoloji çağındaki önemini anlayın.

Hızlı Linkler
Neden giriş eklemek istiyorsunuz?
Gerçek dünya, eğer doğru devreye sahipseniz, voltaj kullanılarak kolayca tanımlanabilecek olaylarla doludur. Bu elektrik voltajlarını dijital forma dönüştürün; bunları kaydedebilir, işleyebilir ve parametreleri ve diğer cihazları kontrol etmek için kullanabilirsiniz.
Belki toprağınızın nemini, seranızın sıcaklığını veya hamsterinizin ağırlığını izlemek istiyorsunuz. Pi'nize bir ses kontrolü eklemeyi, bir ekolayzır oluşturmayı veya sıfırdan bir joystick tasarlamayı düşünüyor olabilirsiniz. Olasılıklar az ya da çok sınırsızdır.
ADC seçenekleri
Peki yeni başlayanlar için hangi ADC en iyisidir?
En popüler ve basit seçenekler arasında yonga setleri yer alıyor MCP3004 (Ve MCP3008) Microchip'ten. 10k SPS'ye kadar okuyabilen dört (veya sekiz) 200 bitlik kanala sahip olacaksınız. Öte yandan Texas Instruments'ın 111 SPS'de 16 bit okuyan ADS860x cihazları da var. Bu nedenle hız ve doğruluk (ve tabii ki fiyat) arasında bir denge vardır.
Birçok mikrodenetleyici yerleşik ADC dönüştürücülerle birlikte gelir. Ortalama bir Arduino'da bulduğunuz ATMega, birkaç 10 bitlik kanalın yanı sıra diğer her şeyi sağlayacaktır. Bu, Raspberry Pi'nin sağlayamadığı durumlarda Arduino'nun analog girişler sağlamasına olanak tanıyan şeydir. Kurulumunuzda zaten bir Arduino varsa ve 10 bit yeterli hassasiyetteyse, bu aslında en kolay yöntem olabilir.
Burada Adafruit'in ADS1115'i ile işi basit tutacağız. Doğrulamak Projelerinizde Arduino klonu kullanmanın artıları ve eksileri.

Programlanabilir kazanç yükselticisi nedir?
Bu çip, Programlanabilir Kazanç Amplifikatörü (PGA) dahil olmak üzere bazı ilginç özelliklerle birlikte gelir. Bu, istenen değer aralığını voltajın çok küçük bir kısmına kadar dijital olarak ayarlamanıza olanak tanır. 16 bitin temsil edebileceği değer sayısı ile bu, birkaç mikrovolt kadar küçük farklılıkları tespit etmenize olanak sağlayacaktır.
Buradaki avantaj ortadaki kazancı değiştirebilmenizdir. MCP3004 gibi diğer çipler farklı bir yaklaşım benimsiyor; Referans voltajı sağlayabileceğiniz ek bir pin ile birlikte gelir.
Çoğullamaya ne dersiniz?
Çoklayıcı (veya çoklayıcı), tek bir ADC ile birden fazla girişi okumanıza olanak tanıyan bir anahtardır. ADC çipinizde birden fazla giriş bağlantı noktası varsa, bu durumda bir miktar dahili çoğullama meydana geliyor demektir. ADS1115'in çoklayıcısı, dahili kayıtlar yoluyla seçebileceğiniz dört girişe izin verir.
Kayıtları işleme
ADS1115 bu seçeneklerin yanı sıra birkaç seçenek daha sunar. Birkaç tuşa dokunarak çoklayıcıyı yönetebilir, kazancı ayarlayabilir, yerleşik karşılaştırıcıyı etkinleştirebilir, örnekleme hızını değiştirebilir ve cihazı düşük güçte uyku moduna geçirebilirsiniz.
Peki bu anahtarlar nerede? Paketin içinde kayıt adı verilen çok küçük bellek parçaları şeklinde bulunurlar. Belirli bir özelliği etkinleştirmek için ilgili biti 1 yerine 0'e ayarlamanız yeterlidir.
Bir veri sayfasına bakmak ADS111xBu modellerin, cihazın davranışını yöneten konfigürasyon kayıtları da dahil olmak üzere dört kayıtla geldiğini göreceksiniz.

Örneğin, 14'ten 12'ye kadar olan bitler çoklayıcıyı kontrol eder. Bu üç biti kullanarak sekiz konfigürasyon arasından seçim yapabilirsiniz. Burada istediğiniz sayı sıfır girişi ile minimum arasındaki farkı verecek olan “100”dür. Öte yandan, 7'den 5'e kadar olan bitler örnekleme hızını kontrol eder. Saniyede maksimum 860 örnek istiyorsanız “111” olarak ayarlayabilirsiniz.
Hangi seçenekleri ayarlamak istediğinizi öğrendikten sonra ADC'ye gönderebileceğiniz iki baytınız olacaktır. Daha sonra burada veya orada tek bir bit ayarlamak isterseniz, bit operatörlerini kullanarak bunları ayrı ayrı işleyebilirsiniz.
İşte burası kafa karıştırıcı olabilir. Bu durumda, ikili bir değeri değil, bireysel transformatörlerin değerlerini temsil eder. Bu değişkenleri büyük bir sayı olarak, ondalık veya onaltılık sistemde ifade edebilirsiniz. Ancak stresten kaçınmak istiyorsanız okunması daha kolay olan ikili versiyona sadık kalmalısınız.
Kabloların bağlanması
Bu adaptörü doğrudan tek panele bağlayabilirsiniz. 2 ila 5.5 volt arasındaki pozitif voltaj girişlerini kabul edecektir; bu, Raspberry Pi'deki 3.3 volt rayın gayet iyi çalışacağı anlamına gelir.
SDA ve SCL girişlerini RPi'deki karşılıklarına bağlayın ve aynı şeyleri toprak ve 3.3V ile yapın. Toprak ile voltaj hatları arasına bir voltmetre alın, ardından orta kabloyu ADC'nin ilk girişine yerleştirin. Başlamak için ihtiyacınız olan tek şey bu!
I2C ile uğraşmak
Farklı ADC'ler farklı protokoller üzerinden çalışır. ADS1115 durumunda I2C kullanacağız.
Aşağıdaki örnek Python kullanarak ADC ile etkileşime girecektir. Ancak bunu yapmadan önce ayarlamanız gerekir. Raspberry Pi OS'nin son sürümleri bunu çok basit hale getirdi. Git Tercihler > Raspberry Pi Yapılandırması. Ardından Arayüzler sekmesinden I2C'yi açın.

Her şeyin çalıştığını doğrulamak için Terminal'i açın ve çalıştırın:
sudo i2cdetect -y 1Bu komut bir mesh çıktısı verecektir. Her şeyin çalıştığını ve doğru şekilde bağladığınızı varsayarsak, ızgarada yeni bir değerin göründüğünü göreceksiniz. Bu ADC'nizin adresidir. Burada bunun onaltılık bir değer olduğunu unutmayın, bu nedenle aşağıdaki kodda kullanırken önüne “0x” koymanız gerekir. Ve işte 0x48:

Adresi aldıktan sonra I2C komutlarını göndermek için SMBus kütüphanesini kullanabilirsiniz. Burada iki yöntemle ilgileneceksiniz. İlk olarak write_word_data()Üç bağımsız değişkeni kabul eden: aygıt adresi, yazdığınız kayıt defteri ve yazmak istediğiniz değer.
İkincisi ise read_word_data(), Bu yalnızca cihaz adresini ve geçmişini kabul eder. ADC, gerilimleri sürekli olarak okuyacak ve sonucu anahtarlama yazmacına kaydedecektir. Bu yöntemi kullanarak bu kaydın içeriğini alabilirsiniz.
Sonucu biraz güzelleştirebilir ve ardından yazdırabilirsiniz. Döngünün başlangıcına dönmeden önce kısa bir duraklama yapın. Bu, verilerle boğulmamanızı sağlayacaktır.
itibaren SMBus ithalat SMBus
ithalat zaman adresi = 0x48
otobüs = SMBus(1)
# okuma için kayıtları ayarla
YAPILANDIRMA = 1
DÖNÜŞÜMREG = 0# adres kaydını yapılandırma kaydına işaret edecek şekilde ayarla# yapılandırma kayıtlarına yaz
bus.write_word_data(addr, YAPILANDIRMA, (0b00000100 << 8 | 0b10000010))
# aralığın en üstünü tanımla
ÜST = 26300süreGerçek:
# kaydı oku
b = bus.read_word_data(addr, DÖNÜŞTÜRMEKAYDI)
# iki baytı değiştir
b = ((b & 0xFF) < 8) | ((b >> 8) Ve 0xFF)
# zemini sıfıra ayarlamak için aralığın yarısını çıkarın
b -= 0x8000# Sonucu aralığa bölerek sıfır ile bir arasında bir değer elde ederiz
b /= ÜST
# birde kapak
b = dk(B, 1)
# alt sıfırdır
b = maksimum(B, 0)
# iki ondalık basamak
b = yuvarlak(B, 2)
baskı(b) zaman.uyku(.01)Neredeyse bitiriyorsun. Aldığınız değer aralığını tercih ettiğiniz değere ayarlayın ve ardından istediğiniz sayıda ondalık basamağa kadar kısaltın. Yazdırma işlevini, yalnızca son değerden farklı olduğunda yeni bir değer yazdıracak şekilde özelleştirebilirsiniz.
Gürültüyle başa çıkmak
Şimdi, kurulumunuz gerçekten güzel, derli toplu ve düzenli olmadığı sürece, bir miktar gürültü fark edeceksiniz. Bu, yalnızca on yerine 16 bit kullanmanın doğal dezavantajıdır: Bu kadar küçük miktardaki gürültü daha belirgin olacaktır.
Bitişik girişi (Giriş 1) toprağa bağlayıp, birinci ve ikinci girişleri karşılaştıracak şekilde modu değiştirerek daha kararlı sonuçlar elde edebilirsiniz. Ayrıca uzun gürültü toplayıcı kabloları daha küçük kablolarla değiştirebilir ve bu ayarı yaparken birkaç kapasitör ekleyebilirsiniz. Potansiyometrenizin değeri de fark yaratabilir.
Yazılım seçenekleri de var. Dönen bir ortalama oluşturabilir veya küçük değişiklikleri göz ardı edebilirsiniz. Dezavantajı ise ek kodun hesaplama maliyeti gerektirmesidir. Python gibi üst düzey bir dilde, her saniye binlerce örnek alarak koşullu ifadeler yazıyorsanız, bu maliyetler hızla artacaktır. Doğrulamak Raspberry Pi ve Sense HAT Sıcaklık İzleme Kılavuzu: En İyi Adımlar ve İpuçları.
Sık sorulan sorular
S1. ADC dönüştürücü nedir ve Raspberry Pi ile nasıl çalışır?
ADC (Analog-Dijital Dönüştürücü), analog sinyalleri dijital sinyallere dönüştüren bir cihazdır. Raspberry Pi'ye, sensörler ve çevresel değişkenler gibi kaynaklardan gelen analog sinyalleri okuyabilmesini sağlamak için bir ADC bağlanabilir.
Q2. Raspberry Pi ile ADC dönüştürücü kullanmanın temel faydaları nelerdir?
- Ölçüm yeteneklerini genişletin: Işık, sıcaklık, ses ve daha fazlası gibi analog sinyalleri kullanmanızı sağlar.
- Daha yüksek doğruluk: Analog sinyallerin dijitale dönüştürülmesi, okumalarda daha fazla doğruluk sağlar.
- Çeşitli cihazları destekleyin: Çok çeşitli elektronik cihazlar ve Raspberry Pi projeleriyle kullanılabilir.
S3. ADC dönüştürücüyü Raspberry Pi'ye nasıl bağlarım?
ADC dönüştürücü, uygun kablolar ve konektörler kullanılarak GPIO arayüzü üzerinden Raspberry Pi'ye bağlanabilir. Dikkatli olmalı ve ADC dönüştürücüyle birlikte verilen iletişim kılavuzunu takip etmelisiniz.
S4. ADC dönüştürücüyü Raspberry Pi'nin tüm sürümleriyle kullanabilir miyim?
Evet, ADC, Raspberry Pi'nin çoğu sürümüyle kullanılabilir. Ancak bağdaştırıcıyı donanım sürümünüze uygun GPIO bağlantı noktasına bağlamayı düşünmeniz gerekebilir.
S5. ADC dönüştürücü kullanmak programlama deneyimi gerektirir mi?
Projenin kapsamına bağlıdır. Basit durumlarda hazır kütüphaneler kullanılabilir. Ancak bazı projelerde verilerin etkili bir şekilde kullanılması için programlama becerileri gerekebilir.
Birkaç potansiyel sonraki adımla ilerlemek
I2C aracılığıyla ölçüm almak çok basittir ve aynı durum SPI gibi diğer yöntemler için de geçerlidir. Mevcut ADC seçenekleri arasında önemli farklılıklar var gibi görünse de gerçek şu ki, bir tanesini çalıştırdığınızda bilgiyi diğerlerine uygulamak kolaydır.
O halde neden işleri daha ileri götürmüyoruz? Birkaç potansiyometreyi birbirine bağlayın veya ışığı, sesi veya sıcaklığı okumayı deneyin. Yeni oluşturduğunuz denetleyiciyi genişletin ve gerçekten işlevsel bir Raspberry Pi kurulumu oluşturun! Artık görüntüleyebilirsiniz Raspberry Pi'de projelerinizi kendi kendine barındırmanın olası zorlukları.










