İçindekiler:
- Gereçler
- Adım 1: Çözümün Kökeni
- 2. Adım: Açıklama
- Adım 3: Dirençleri Tanımlayın ve Çıkarın
- Adım 4: Çözümler Arası Karşılaştırma
- Adım 5: Son Hususlar
Video: Arduino Due 3.3V I2C ile 5V LCD Ekran: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Bu gönderi, I2C adaptör modülü ile popüler LCD 16x2 Ekran ile Arduino Due (veya diğer 3.3V kartı) kullanmanın daha kolay bir yolunu açıklamayı amaçlamaktadır.
İlk problem, LCD'nin arka ışığının düzgün çalışması için 5V'a ihtiyaç duymasıdır, ancak Arduino Due ile zarar vermeden iletişim kurmak için SCL ve SDA pinlerinin 3.3V'da çalışması gerekir. Bunu çözmek için iki seçenek buldum:
En çok bahsedilen çözüm, sorunu gerçekten çözen bir Çift Yönlü Mantık Seviyesi Dönüştürücü kullanmaktır. Ancak listenize başka bir bileşen ve devrenizdeki ek kablo bağlantılarını da ekler
Bulduğum diğer yol, LCD'den "I2C adaptör sırt çantasındaki" 2 çekme direncini basitçe sökmek. Çok daha kolay olmasının yanı sıra, sondaki karşılaştırmada açıklanan başka avantajları da var. Bu yöntem, bu yazının ana odak noktasıdır
Gereçler
Arduino Ödenmesi
I2C adaptör modülü ile LCD 16x2 Ekran
Havya
Lehim pompası veya lehim fitili
Cımbız
Adım 1: Çözümün Kökeni
Çözüm benim tarafımdan icat edilmedi, aşağıdaki linkte Arduino Forum hakkında oldukça güzel bir öneri ve açıklama gördüm, bu yazıda çoğaltacağım.
forum.arduino.cc/index.php?topic=553725.0
Cevap: david_prentic
İnternette tam bir öğretici bulamadım ve bu çok yaygın bir sorun olduğu için çözümü burada ayrıntılı olarak sunmaya, gerçekten işe yaradığına tanık olmaya ve sonuçları hakkında bazı şüpheleri azaltabilecek bilgiler eklemeye çalışıyorum.
2. Adım: Açıklama
Cihazlar
I2C iletişiminin çalışması için SDA ve SCL pinlerine bağlı pullup dirençleri gerekir. Bunun nedeni, cihazların iletişim sırasında sadece bu pinleri LOW (DÜŞÜK) konuma getirmesidir. YÜKSEK'i temsil etmek için, yalnızca DÜŞÜK göndermemesi gerekir ve çekmeler sayesinde YÜKSEK'e gider. (bu anlayış daha sonra oldukça önemli olacaktır)
LCD "I2C sırt çantası", I2C gereksinimini karşılayan iki adet 4K7 çekme direncine sahiptir. Fakat Vcc'ye bağlı oldukları için 5 V kullanırsanız SDA ve SCL'yi 5 V'a çekerler.
Veri sayfasına bakarsanız, diğer kartların aksine, Due'nin ana SDA'sı, SCL pinleri üzerinde onları 3,3 V'a çeken yerleşik 1K5 çekme dirençlerine sahip olduğunu görebilirsiniz.
testler
- Ekran LCD -> Arduino
- Gnd -> Gnd
- Vcc -> 5V
- SDA -> SDA
- SCL -> SCL
LCD'yi Due'a bağlarsanız (yukarıdaki kablolamayı izleyerek), 3,3V'ye bağlı 1k5 (veya 1k0) Due çekmeleri ve 5 V'a bağlı 4K7 LCD çekmeleri 3,7 V'ta (3,6 V) boşta I2C hatlarına neden olur 1k0) ile). Bu iyi değil, çünkü Due veri sayfası G/Ç hatları için maksimum 3,6 V voltajı şart koşuyor.
Bu senaryoyu sadece LCD ile test ederek 3,56 V elde ettim. Aynı SDA ve SCL'ye bir EEPROM Modülü ekleyerek 3.606 V'a çıktı. Her iki durumda da her şey normal çalıştı ama bunlar ideal voltajdan uzak. 3,6 V öngörülen maksimumu dikkate alan seviyeler.
Yani evet, herhangi bir değişiklik yapmadan benimki gibi çalışma şansı var. Ancak voltaj seviyesi hala ideal olmaktan uzaktır ve Due veya LCD pullup'taki bazı tutarsızlıklar, 3,6 V sınırının üzerine çıkmasına neden olabilir. (Çözümün geri kalanı çok daha güvenli ve muhtemelen daha kolay olsa da, 5 V ve SCL/SDA pinleri arasındaki en düşük direncin 3,6 V'a ulaşmadan önce en azından 20K veya 100K potansiyometre ile dikkatlice test edilmesi tavsiye edilir)
Çözüm
Sunulan çözüm, hattı 5 V'a kadar çekmeye çalışan LCD sırt çantasından çekme dirençlerini basitçe çıkarmaktır. Ardından, SCL ve SDA hatlarını 3,3 V'a çekerek yalnızca Due onboard çekme dirençleri kalacaktır.. Boşta kalan pimleri yaklaşık 3.262 V'de tutarak mükemmel çalıştı!
Bağlantılar aynı kalır:
- LCD Ekran -> Arduino
- Gnd -> Gnd
- Vcc -> 5V
- SDA -> SDA
- SCL -> SCL
LCD'nin iletişim sırasında YÜKSEK'i temsil etmek için hattı 5 V'a çekip çekmediğini merak ediyorsanız, I2C'de cihazların yalnızca DÜŞÜK çizgileri çektiğini unutmayın; bu, karışmadığında temsil edilen YÜKSEK sinyaldir; bu, 3.3 V olacaktır. Due'nin yerleşik pull-up'ları.
Ayrıca 3,3 V, I2C sırt çantasının YÜKSEK sinyal olarak kabul etmesi için yeterlidir.
Adım 3: Dirençleri Tanımlayın ve Çıkarın
Yukarıdaki resim, modülümde bulduğum çekme dirençlerini kırmızı olarak gösteriyor.
Tanımlamak
LCD I2C adaptör sırt çantası değişebileceğinden dirençler aynı konfigürasyonda olmayabilir. Çekme dirençlerini tanımlamak için süreklilik testi olan bir multimetre kullanabilirsiniz. Her pull-up direncinin bir ucu SCL veya SDA pinine ve diğer ucu Vcc'ye bağlı olmalıdır.
Benim durumumda, kartta 4K7 (SMD kodunda 472) dirençlerinden üçü vardı. Yalnızca ikisi yukarıdaki gereksinimleri karşıladı ve bunların aradığımız pullup'lar olduğuna dikkat çekti!
Ekstra önlem olarak (eğer herhangi bir nedenle 4K7 değillerse), diğer dirençleri de test ettim ve hiçbirinin pull-up olma gereksinimlerini karşılamadığını doğruladım.
Kaldırmak
Şimdi tek yapman gereken onları sökmek! Lehimleme pompanız veya lehim fitiliniz ve yardımcı olacak cımbızınız varsa daha kolaydır.
Adım 4: Çözümler Arası Karşılaştırma
Çift Yönlü Mantık Seviyesi Dönüştürücüsü (LLC)
Artıları:
Herhangi bir lehimleme ekipmanı veya yeteneği gerektirmez
Eksileri:
Liste bileşenleri listenize daha fazla kablo ve LLC reklamı yapar
Ekstra bileşenlerle daha karmaşık bağlantılar
biraz daha pahalı
LCD pull-up Dirençlerini sökün
Artıları:
Daha temiz nihai sonuç
LLC'yi beklemek zorunda kalmadan muhtemelen hemen yapabilirsiniz
Karmaşık bir projede bileşen çeşitliliğini ve montaj karmaşıklığını azaltmak veya çoğaltmak istiyorsanız özellikle iyi
Eksileri:
LCD devresini değiştirir (Halihazırda 4K7 pullup'larına sahip olan Uno ile "kullanıma hazır" olmasını istiyorsanız, bunları yeniden lehimleyerek değişiklikleri geri alabilirsiniz)
Adım 5: Son Hususlar
Umarım bu eğitim, bu uyumluluk sorununa ve olası çözümlerinden bazılarına ışık tutar.
Herhangi bir iyileştirme fikriniz, daha iyi açıklamalarınız, yeni çözümleriniz varsa veya gönderide herhangi bir hata bulduysanız, lütfen yorumlarda bana bildirin!:)
Önerilen:
Arduino İle 20x4 I2C Karakterli LCD Ekran Nasıl Kullanılır: 6 Adım
Arduino ile 20x4 I2C Karakterli LCD Ekran Nasıl Kullanılır: Bu basit eğitimde, Arduino Uno ile basit bir "Merhaba Dünya" metni görüntülemek için 20x4 I2C Karakterli LCD ekranın nasıl kullanılacağını öğreneceğiz. Videoyu izleyin
I2C ile 20x4 LCD Ekran Kullanan Elde Taşınabilir Arduino Kağıt Taş Makas Oyunu: 7 Adım
I2C ile 20x4 LCD Ekran Kullanan Elde Taşınabilir Arduino Kağıt Taş Makas Oyunu: Herkese merhaba ya da belki "Merhaba Dünya!" demeliyim, Arduino'ya birçok şeye giriş yaptığım bir projeyi sizlerle paylaşmak büyük bir zevk olurdu. Bu, I2C 20x4 LCD ekran kullanan elde taşınabilir bir Arduino Kağıt Taş Makas oyunudur. BEN
Utsource İle Arduino I2C 16*2 Lcd Ekran Bağlantısı: 10 Adım
Utsource ile Arduino I2C 16*2 Lcd Ekran Bağlantısı: I²C (Inter-Integrated Circuit), I-squared-C olarak telaffuz edilir, Philips Semiconductor tarafından icat edilen çok ana, çok bağımlı, paket anahtarlamalı, tek uçlu, seri bir bilgisayar veriyoludur. (şimdi NXP Yarı İletkenler)
I2C / IIC LCD Ekran - Arduino ile SPI - IIC Modülü Kullanarak I2C LCD Ekranına SPI LCD Kullanın: 5 Adım
I2C / IIC LCD Ekran | I2C LCD Ekranına SPI LCD'yi Arduino ile IIC Modülüne Kullanma: Merhaba arkadaşlar, normal bir SPI LCD 1602'nin bağlanması için çok fazla kablo olduğundan, arduino ile arayüz oluşturmak çok zor ama piyasada mevcut olan bir modül var. SPI ekranını IIC ekranına dönüştürün, böylece sadece 4 kablo bağlamanız gerekir
I2C / IIC LCD Ekran - Bir SPI LCD'yi I2C LCD Ekrana Dönüştürün: 5 Adım
I2C / IIC LCD Ekran | Bir SPI LCD'yi I2C LCD Ekranına Dönüştürün: spi lcd ekran kullanmak için çok fazla bağlantı gerekiyor, bu gerçekten zor, bu yüzden i2c lcd'yi spi lcd'ye dönüştürebilen bir modül buldum, hadi başlayalım