Mündəricat:

Arduino Due 3.3V I2C ilə 5V LCD Ekran: 5 addım
Arduino Due 3.3V I2C ilə 5V LCD Ekran: 5 addım

Video: Arduino Due 3.3V I2C ilə 5V LCD Ekran: 5 addım

Video: Arduino Due 3.3V I2C ilə 5V LCD Ekran: 5 addım
Video: Using LCD1602 or LCD2004 with ESP32 2024, Iyul
Anonim
Arduino Due 3.3V I2C ilə 5V LCD Ekran
Arduino Due 3.3V I2C ilə 5V LCD Ekran

Bu yazı, Arduino Due (və ya digər 3.3V lövhəsi) I2C adapter modulu olan məşhur LCD 16x2 Ekran ilə istifadə etməyin daha asan bir yolunu izah etməyi hədəfləyir.

İlkin problem, arxa işığın düzgün işləməsi üçün LCD -nin 5V -ə ehtiyacı olmasıdır, lakin SCL və SDA pinləri zərər vermədən Arduino Due ilə əlaqə qurmaq üçün 3.3V -də işləməlidir. Bunu həll etmək üçün iki variant tapdım:

Ən çox bəhs edilən həll, həqiqətən də problemi həll edən Bi-Directional Logic Level Converter istifadə etməkdir. Ancaq siyahınıza başqa bir komponent və dövrənizdəki əlavə kabel əlaqələri əlavə edir

Tapdığım başqa bir yol, LCD -dən "I2C adapter sırt çantasında" 2 çəkmə rezistorunu sadəcə sökməkdir. Daha asan olmasının yanında, sonda müqayisədə izah edilən digər üstünlükləri də var. Bu üsul bu yazının əsas diqqət mərkəzidir

Təchizat

Arduino səbəbiylə

I2C adapter modulu olan 16x2 LCD ekran

Lehimleme dəmir

Lehim nasosu və ya lehimləmə fitili

Cımbız

Addım 1: Çözümün mənşəyi

Çözüm mənim tərəfindən icad edilməmişdir, Arduino Forumunda bu linkdə çoxalacağım olduqca yaxşı bir təklif və izahat gördüm.

forum.arduino.cc/index.php?topic=553725.0

Cavab: david_prentice

İnternetdə tam bir təlimat tapa bilmədim və çox yayılmış bir problem olduğundan, həllini burada ətraflı şəkildə təqdim etməyə, əslində işlədiyinə şahid olmağa və nəticələrinə dair bəzi şübhələri azalda biləcək məlumatlar əlavə etməyə çalışıram.

Addım 2: İzahat

Cihazlar

I2C ünsiyyətinin işləməsi üçün SDA və SCL sancaqlarına bağlanan çəkmə rezistorları tələb olunur. Bunun səbəbi, cihazların ünsiyyət qurarkən yalnız bu pinləri LOW aşağı çevirməsidir. Bir YÜKSÜ təmsil etmək üçün yalnız DÜŞÜK göndərməməlidir və çəkilmələr sayəsində YÜKSƏ keçir. (bu anlayış sonradan olduqca əhəmiyyətli olacaq)

LCD "I2C sırt çantası" I2C tələbinə cavab verən iki 4K7 çəkmə dirənçinə malikdir. Ancaq Vcc -ə qoşulduqları üçün 5 V istifadə etsəniz, SDA və SCL -ni 5 V -a çəkəcəklər.

Məlumat cədvəlinə baxsanız, görə bilərik ki, digər lövhələrdən fərqli olaraq, Due öz əsas SDA SCL sancaqlarında onsuz da 3,3 V-ə qədər çəkən 1K5 çəkmə rezistorlarına malikdir.

Testlər

  • LCD ekran -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

LCD -ni yalnız Due -ə bağlasanız (yuxarıdakı kabelləri izləyərək), 3.3V -ə qoşulan 1k5 (və ya 1k0) Due çekmələr və 5 V -ə qoşulan 4K7 LCD çəkmələr 3.7 V -da (3.6 V) boş I2C xətləri ilə nəticələnəcək. 1k0 ilə). Bu yaxşı deyil, çünki Due məlumat cədvəli, I/O xətləri üçün maksimum 3.6 V gərginlik tələb edir.

Bu ssenarini sınayaraq, yalnız LCD ilə, 3, 56 V aldım, eyni SDA və SCL -ə EEPROM Modulu əlavə edərək, 3.606 V -ə qədər yüksəldi. nəzərdə tutulan maksimum 3.6 V nəzərə alınmaqla.

Bəli, heç bir dəyişiklik etmədən mənimki kimi işləyəcəyi bir şans var. Ancaq gərginlik səviyyəsi hələ də idealdan uzaqdır və Due və ya LCD çəkilməsindəki bəzi uyğunsuzluqlar 3.6 V həddini aşmasına səbəb ola bilər. (Çözümün qalan hissəsi daha təhlükəsiz və yəqin ki, daha asan olsa da, ən az 5K və SCL/SDA pinləri arasındakı ən aşağı müqavimət 20K və ya 100K potansiyometrlə yoxlanılmalı idi.)

Həll

Təqdim olunan həll yolu, sırt çantasından 5 V-ə qədər çəkməyə çalışan çəkmə rezistorlarını çıxarmaqdır. Daha sonra SCL və SDA xətlərini 3.3V-ə çəkən yalnız əlaqədar təyyarədə çəkmə rezistorları qalacaq.. Boş boşluqları 3.262 V ətrafında saxlayaraq mükəmməl işləyirdi!

Bağlantılar eyni qalır:

  • LCD Ekran -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

LCD -nin ünsiyyət qurarkən YÜKSƏLİK göstərmək üçün xətti 5 V -a çəkməyəcəyini düşünürsünüzsə, unutmayın ki, I2C -də cihazlar yalnız LOW xətlərini çəkir, müdaxilə etmədikdə isə Yuxarı siqnaldır. Due-nin göyərtəsində çəkmələr.

Ayrıca, 3.3 V, I2C sırt çantasının YÜKSƏK siqnal hesab etməsi üçün kifayətdir.

Addım 3: Rezistorları müəyyənləşdirin və çıxarın

Rezistorları müəyyənləşdirin və çıxarın
Rezistorları müəyyənləşdirin və çıxarın
Rezistorları müəyyənləşdirin və çıxarın
Rezistorları müəyyənləşdirin və çıxarın

Yuxarıdakı şəkil modulda tapdığım çəkmə rezistorlarını qırmızı rəngdə göstərir.

Müəyyən edin

LCD I2C adapter sırt çantası fərqli ola biləcəyi üçün rezistorlar eyni konfiqurasiyada olmaya bilər. Çəkmə rezistorlarını müəyyən etmək üçün davamlılıq testi olan bir multimetrdən istifadə edə bilərsiniz. Hər bir çəkmə rezistorunun bir ucu SCL və ya SDA pininə, digər ucu isə Vcc-ə bağlanmalıdır.

Mənim vəziyyətimdə, lövhədə 4K7 (SMD kodunda 472) rezistordan üçü var idi. Onlardan yalnız ikisi yuxarıda göstərilən tələbləri yerinə yetirdi, bu da axtardığımız çəkilmələrdir!

Əlavə ehtiyat üçün (nədənsə 4K7 olmasaydı) digər rezistorları da sınadım və heç birinin çəkmə tələblərinə cavab vermədiyini təsdiq etdim.

Sil

İndi etməniz lazım olan şey onları silməkdir! Bir lehimləmə nasosu və ya lehimləmə fitili və cımbız varsa kömək etmək daha asandır.

Addım 4: Çözümlər arasında müqayisə

İki istiqamətli məntiq səviyyəsi çeviricisi (LLC)

Üstünlükləri:

Heç bir lehimləmə avadanlığı və ya qabiliyyəti tələb etmir

Eksiler:

Daha çox kabel və MMC -ni siyahı komponentlər siyahısına əlavə edin

Əlavə komponentlərlə Messier əlaqələri

Bir az daha bahalı

LCD çəkmə rezistorlarını təmizləyin

Üstünlükləri:

Təmiz son nəticə

Yəqin ki, MMC -ni gözləmədən dərhal edə bilərsiniz

Mürəkkəb bir layihədə komponentlərin müxtəlifliyini və montajın mürəkkəbliyini azaltmaq və ya təkrarlamaq istəsəniz xüsusilə yaxşıdır

Eksiler:

LCD sxemini dəyişdirir (Uno ilə "istifadəyə hazır" olmasını istəyirsinizsə, artıq 4K7 çəkmələri varsa, onları yenidən satan dəyişiklikləri geri qaytara bilərsiniz)

Addım 5: Son mülahizələr

Ümid edirəm ki, bu dərslik bu uyğunluq məsələsinə və bəzi mümkün həll yollarına aydınlıq gətirəcəkdir.

Təkmilləşdirmə fikirləriniz, daha yaxşı izahlarınız, yeni həlləriniz və ya yazıda hər hansı bir səhv tapmısınızsa, şərhlərdə mənə bildirin!:)

Tövsiyə: