Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

3 Mayıs 2021 Pazartesi

ULN2003 Sürücü ve Arduino ile 28BYJ-48 Step Motor Kontrolü

 

ULN2003 Sürücü ve Arduino ile 28BYJ-48 Step Motor Kontrolü

Step motorlar, konum kontrolü için harika motorlardır. Bunlar, tam bir dönüşü birkaç eşit "adıma" bölen özel bir fırçasız motor türüdür. Genellikle masaüstü yazıcılarda, 3B yazıcılarda, CNC freze makinelerinde ve hassas konumlandırma kontrolü gerektiren diğer her şeyde bulunurlar.

Adım motorları hakkında bilgi edinmenin ucuz yollarından biri, 28BYJ-48 adımlı motorları kullanmaktır. Genellikle ULN2003 tabanlı bir sürücü kartı ile birlikte gelirler, bu da onların kullanımını çok kolaylaştırır.

Bu step motorların nasıl çalıştığını biliyor musunuz?

Bu kademeli motorlar, tekerleği bir seferde bir 'adım' döndürmek için bir dişli çark (32 dişli) ve dört elektromıknatıs kullanır.

Gönderilen her YÜKSEK darbe, bobine enerji verir, dişli çarkın en yakın dişini çeker ve motoru bir adım çalıştırır.

step motor çalışma animasyonu

Bu bobinleri vurma şekliniz, motorun davranışını büyük ölçüde etkiler.

  • Darbe sırası, motorun dönüş yönünü belirler.
  • Darbelerin frekansı motorun hızını belirler.
  • Darbe sayısı, motorun ne kadar uzağa döneceğini belirler.

28BYJ-48 Step Motor

28BYJ-48, 5 voltta çalışan 5 telli tek kutuplu bir step motordur.

Bu motorla ilgili ilginç olan şey, insanların onu son birkaç on yıldır sayısız uygulamada kullanıyor olmasıdır. Klima, otomat ve diğer birçok uygulamada kullanılmaktadır.



Bu motorlarla ilgili en iyi şeylerden biri, her seferinde bir 'adım' olarak doğru şekilde konumlandırılabilmeleridir.

Diğer bir avantajı ise, hareketlerinde nispeten hassas olmaları ve motorun kontak fırçaları kullanmaması nedeniyle oldukça güvenilir olmalarıdır.

Motora güç verildiği sürece muhafaza edilen hareketsiz durumda bile genellikle iyi tork verirler.

Tek dezavantajı, güç için biraz aç olmaları ve hareket etmedikleri zaman bile güç tüketmeleri.


28BYJ-48 Dişli Redüksiyon Oranı

Veri sayfasına göre, 28BYJ-48 motoru tam adım modunda çalıştığında, her adım 11,25 ° 'lik bir dönüşe karşılık gelir. Bu, devir başına 32 adım olduğu anlamına gelir (360 ° / 11.25 ° = 32).

28byj48 step motor dişli oranı açıklaması

Ek olarak, motorda 1/64 redüksiyon dişlisi seti vardır. (Aslında 1 / 63.68395'idir, ancak çoğu amaç için 1/64, yeterince iyi bir yaklaşımdır)

Bunun anlamı, devir başına aslında 32 * 63.68395 adım = 2037.8864 ~ 2038 adımdır!

28BYJ-48 Güç Tüketimi

Motorun güç tüketimi 240mA civarındadır.

Motor çok fazla güç çektiği için, bu gücü Arduino'dan çekmek yerine doğrudan harici bir 5V güç kaynağından çalıştırmak en iyisidir.

Motor, konumunu korumak için hareketsiz durumda bile güç tüketir.

ULN2003 Sürücü Kartı

Motor genellikle ULN2003 tabanlı bir sürücü kartıyla birlikte gelir.

ULN2003, 7 Darlington transistör çiftinden oluşan en yaygın motor sürücü IC'lerinden biridir ve her bir çift 500mA ve 50V'ye kadar yükleri çalıştırabilir. Bu kartta yedi çiftten dördü kullanılıyor.

uln2003 step motor sürücüsüne genel bakış

Kart, motor kablolarını mükemmel şekilde eşleştiren bir konektöre sahiptir, bu da motoru panele bağlamayı çok kolaylaştırır. Dört kontrol girişi için bağlantıların yanı sıra güç kaynağı bağlantıları da vardır.

Anakartta, dört kontrol giriş hattındaki etkinliği gösteren (adımlama durumunu göstermek için) dört LED bulunur. Adım atarken güzel bir görsel sağlarlar.

Kart ayrıca, step Motoruna giden gücü izole etmek için bir AÇIK / KAPALI atlama teli ile birlikte gelir.

ULN2003 Step Sürücü Kartı Pin Çıkışı

ULN2003 step sürücü kartının pinleri aşağıdaki gibidir:

uln2003 step motor sürücüsü pin çıkışı

IN1 - IN4motoru sürmek için pimler kullanılır. Bunları Arduino'daki dijital çıkış pinlerine bağlayın.

GND ortak bir zemin pimidir.

VDDpin, motora güç sağlar. Harici bir 5V güç kaynağına bağlayın. Motor çok fazla güç çektiğinden, bu step motora güç sağlamak için ASLA Arduino'nuzun 5V gücünü kullanmamalısınız.

Motor KonektörüMotorun takıldığı yer burasıdır. Konektör anahtarlıdır, bu nedenle yalnızca tek yöne gider.

28BYJ-48 Step Motor ve ULN2003 Sürücüsünü Arduino'ya Kablolama

Artık motor hakkında her şeyi bildiğimize göre, onu Arduino'muza bağlamaya başlayabiliriz!

Güç kaynağını ULN2003 sürücüsüne bağlayarak başlayın.

Step motora doğrudan Arduino'dan güç vermenin mümkün olduğunu unutmayın. Ancak bu tavsiye edilmez; Motor güç kaynağı hatlarına elektriksel gürültüye neden olabilir ve bu Arduino'ya zarar verebilir.

Bu nedenle, step motorlarınıza güç sağlamak için ayrı bir 5V güç kaynağı kullanın.

Sonra o güç kaynağından gelen toprağı arduino'nun topraklamasına bağlayın. Bu, ikisi arasında aynı voltaj referansını oluşturmamız için çok önemlidir.

Şimdi sürücü kartının IN1, IN2, IN3, IN4'ü Arduino dijital pinleri 8, 9, 10 ve 11'e bağlayın.

Son olarak, motor kablosunu step motordan sürücü kartına asın.

İşiniz bittiğinde, aşağıda gösterilen resme benzer bir şeye sahip olmalısınız.

uln2003 sürücü ve arduino ile kablolama 28byj48 step motor

Arduino Kodu - Dahili Step Kitaplığını Kullanma

İlk deneyimiz için Arduino IDE'niz ile birlikte gelen Arduino Step Kitaplığını kullanacağız.

Kademeli kitaplık, kademe dizisini halleder ve hem tek kutuplu hem de çift kutuplu çok çeşitli kademeli motorları kontrol etmeyi kolaylaştırır.

İşte step motoru saat yönünde yavaşça ve ardından saat yönünün tersine hızlıca hareket ettiren basit taslak.

//Includes the Arduino Stepper Library
#include <Stepper.h>

// Defines the number of steps per rotation
const int stepsPerRevolution = 2038;

// Creates an instance of stepper class
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);

void setup() {
	// Nothing to do (Stepper Library sets pins as outputs)
}

void loop() {
	// Rotate CW slowly
	myStepper.setSpeed(100);
	myStepper.step(stepsPerRevolution);
	delay(1000);
	
	// Rotate CCW quickly
	myStepper.setSpeed(700);
	myStepper.step(-stepsPerRevolution);
	delay(1000);
}

Kod Açıklaması:

Taslak, Arduino Step Kitaplığı dahil edilerek başlar.

#include <Stepper.h>

Daha sonra, stepsPerRevolutionmotorun bir devri tamamlamak için atacağı 'adımların' sayısını tutan bir sabit tanımlıyoruz Bizim durumumuzda, 2038.

const int stepsPerRevolution = 2038;

28BYJ-48 Unipolar step motor, IN1-IN3-IN2-IN4 adım dizisine sahiptir. Bu bilgiyi myStepper, 8, 10, 9, 11 pin dizisi ile adlandırılan bir step kitaplığı örneği oluşturarak motoru sürmek için kullanacağız .

Bunu doğru yaptığınızdan emin olun, aksi takdirde motor düzgün çalışmayacaktır.

Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);

Step kitaplığı dahili olarak dört I / O pinini çıkış olarak ayarladığından kurulum işlevinde ayarlanacak hiçbir şey yoktur.

void setup() {
}

Döngü işlevinde, setSpeed()kademeli motorun hareket etmesini istediğimiz hızı ayarlamak için step()işlevi kullanırız ve daha sonra işlevi, kaç adım döneceğini söylemek için kullanırız İşleve negatif bir sayı geçirmek step(), motorun dönüş yönünü tersine çevirir.

İlk kod parçacığı motoru saat yönünde çok yavaş çevirecektir. İkincisi, motoru saat yönünün tersine çok daha hızlı bir hızda döndürecektir.

void loop() {
	// Rotate CW slowly
	myStepper.setSpeed(100);
	myStepper.step(stepsPerRevolution);
	delay(1000);
	
	// Rotate CCW quickly
	myStepper.setSpeed(700);
	myStepper.step(-stepsPerRevolution);
	delay(1000);
}

Arduino Kodu - AccelStepper kitaplığını kullanma

Arduino Step Kitaplığı, basit, tek motorlu uygulamalar için mükemmel bir şekilde yeterlidir. Ancak birden fazla adımı kontrol etmek istediğinizde, daha iyi bir kitaplığa ihtiyacınız olacak.

Bu nedenle, bir sonraki deneyimiz için AccelStepper kitaplığı adı verilen gelişmiş bir step motor kitaplığından yararlanacağız . Standart Arduino Step kitaplığını çeşitli şekillerde önemli ölçüde geliştirir:

  • Hızlanma ve yavaşlamayı destekler.
  • Yarım adım sürüşü destekler.
  • Her adımda bağımsız eşzamanlı adımlarla birden fazla eşzamanlı adımı destekler.

Bu kütüphane Arduino IDE'ye dahil değildir, bu yüzden önce onu kurmanız gerekecektir.

Kütüphane Kurulumu

Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin… Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.

kitaplıkları yönet

Aramanızı ' accelstepper ' yazarak filtreleyin İlk girişe tıklayın ve ardından Yükle'yi seçin.

accelstepper kitaplığı yükleniyor

Arduino Kodu

İşte step motorunu bir yönde hızlandıran ve sonra durmak için yavaşlayan basit taslak. Motor bir devir yaptığında, dönüş yönünü değiştirir. Ve bunu tekrar tekrar yapmaya devam ediyor.

// Include the AccelStepper Library
#include <AccelStepper.h>

// Define step constant
#define FULLSTEP 4

// Creates an instance
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
AccelStepper myStepper(FULLSTEP, 8, 10, 9, 11);

void setup() {
	// set the maximum speed, acceleration factor,
	// initial speed and the target position
	myStepper.setMaxSpeed(1000.0);
	myStepper.setAcceleration(50.0);
	myStepper.setSpeed(200);
	myStepper.moveTo(2038);
}

void loop() {
	// Change direction once the motor reaches target position
	if (myStepper.distanceToGo() == 0) 
		myStepper.moveTo(-myStepper.currentPosition());

	// Move the motor one step
	myStepper.run();
}

Kod Açıklaması:

Yeni kurulan AccelStepper kitaplığını dahil ederek başlıyoruz.

#include <AccelStepper.h>

Şimdi motorumuzu tam adımlarla sürecekken, bunun için bir sabit tanımlayacağız. Motoru yarım adımlarla sürmek istiyorsanız, sabiti 8'e ayarlayın.

#define FULLSTEP 4

Daha sonra, myStepper8, 10, 9, 11 pin dizisi ile adlandırılan bir step kitaplığı örneği oluşturuyoruz (Bu motorlar için adım sırasının IN1-IN3-IN2-IN4 olduğunu unutmayın).

Yine, bunu doğru yaptığınızdan emin olun, aksi takdirde motor düzgün çalışmayacaktır.

AccelStepper myStepper(FULLSTEP, 8, 10, 9, 11);

Kurulum işlevinde ilk olarak motorun maksimum hızını bu motorların gidebildiği kadar hızlı olan bin olarak ayarladık. Ardından, step motorun hareketlerine hızlanma ve yavaşlama eklemek için motora bir hızlanma faktörü belirledik.

Daha sonra, 200'lük normal hızı ve onu 2038'e taşıyacağımız adım sayısını belirledik (28BYJ-48'in dişli tertibatıyla birlikte devir başına 2038 adım hareket ettiğini hatırladığınız gibi).

void setup() {
	myStepper.setMaxSpeed(1000.0);
	myStepper.setAcceleration(50.0);
	myStepper.setSpeed(200);
	myStepper.moveTo(2038);
}

Döngü işlevinde, motorun distanceToGohedef konuma (tarafından ayarlanan moveToulaşana kadar özelliği okuyarak ne kadar ilerlemesi gerektiğini kontrol etmek için bir If ifadesi kullanırız Bir kez distanceToGoulaştığında, biz değiştirerek ters yönde motora hareket edecek sıfır moveTomevcut pozisyonun negatif pozisyon.

Şimdi döngünün en altında bir run()fonksiyon dediğimizi fark edeceksiniz Bu en önemli işlevdir, çünkü bu işlev çalıştırılıncaya kadar adımlayıcı çalışmayacaktır.

void loop() {
	// Change direction once the motor reaches target position
	if (myStepper.distanceToGo() == 0) 
		myStepper.moveTo(-myStepper.currentPosition());

	// Move the motor one step
	myStepper.run();
}

İki 28BYJ-48 Step Motoru Aynı Anda Kontrol Edin

Bir sonraki deneyimiz için, aynı anda iki motoru sürmek için Arduino'muza ikinci bir 28BYJ-48 step ve ULN2003 sürücü seti ekleyeceğiz.

Kablolama

Daha önce yaptığınız bağlantıları olduğu gibi bırakın ve yeni cihazları şu şekilde bağlayın:

Bir kez daha ULN2003 sürücü kartına güç sağlamak için ayrı 5V güç kaynağını kullanacağız.

Şimdi ikinci sürücü kartının IN1, IN2, IN3, IN4'ü sırasıyla Arduino dijital pinleri 4, 5, 6 ve 7'ye bağlayın.

Aşağıdaki çizim kablolamayı göstermektedir.

arduino ile iki 28byj48 step motorun kablolanması

Arduino Kodu

İşte bir motoru tam adımlarla ve ikincisini yarım adımlarla çalıştıran taslak. Motorlar bir devir yaptığında dönüş yönleri değişecektir. Bazı hızlanma ve yavaşlama da var.

// Include the AccelStepper Library
#include <AccelStepper.h>

// Define step constants
#define FULLSTEP 4
#define HALFSTEP 8

// Creates two instances
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
AccelStepper stepper1(HALFSTEP, 8, 10, 9, 11);
AccelStepper stepper2(FULLSTEP, 4, 6, 5, 7);

void setup() {
	// set the maximum speed, acceleration factor,
	// initial speed and the target position for motor 1
	stepper1.setMaxSpeed(1000.0);
	stepper1.setAcceleration(50.0);
	stepper1.setSpeed(200);
	stepper1.moveTo(2038);

	// set the same for motor 2
	stepper2.setMaxSpeed(1000.0);
	stepper2.setAcceleration(50.0);
	stepper2.setSpeed(200);
	stepper2.moveTo(-2038);
}

void loop() {
	// Change direction once the motor reaches target position
	if (stepper1.distanceToGo() == 0) 
		stepper1.moveTo(-stepper1.currentPosition());
	if (stepper2.distanceToGo() == 0) 
		stepper2.moveTo(-stepper2.currentPosition());

	// Move the motor one step
	stepper1.run();
	stepper2.run();
}

Kod Açıklaması:

AccelStepper Kitaplığını dahil ederek başlıyoruz.

#include <AccelStepper.h>

Şimdi bir motoru tam adımda ve ikincisini yarım adımda süreceğiz. Bunun için iki sabit tanımlayacağız.

#define FULLSTEP 4
#define HALFSTEP 8

Ardından, her motor için bir tane olmak üzere iki motor nesnesi oluşturuyoruz. Bunları oluşturmak için pin tanımlarımızı ve adım tanımlarımızı kullanıyoruz.

AccelStepper stepper1(HALFSTEP, 8, 10, 9, 11);
AccelStepper stepper2(FULLSTEP, 4, 6, 5, 7);

Kurulum fonksiyonunda ilk olarak maksimum hızı stepper1bin olarak ayarladık Ardından, step motorun hareketlerine hızlanma ve yavaşlama eklemek için motora bir hızlanma faktörü belirledik.

Daha sonra, 200'lük normal hızı ve onu 2038'e taşıyacağımız adım sayısını belirledik (28BYJ-48'in dişli tertibatıyla birlikte devir başına 2038 adım hareket ettiğini hatırladığınız gibi).

Tam olarak aynı şeyi stepper2yapacağız ancak ona -2038'e gitmesi talimatını vereceğiz çünkü saat yönünün tersine hareket etmesini istiyoruz.

void setup() {
	// settings for motor 1
    stepper1.setMaxSpeed(1000.0);
    stepper1.setAcceleration(50.0);
    stepper1.setSpeed(200);
    stepper1.moveTo(2038);

	// settings for motor 2
    stepper2.setMaxSpeed(1000.0);
    stepper2.setAcceleration(50.0);
    stepper2.setSpeed(200);
    stepper2.moveTo(-2038);
}

Döngü işlevinde, If statementsmotorların distanceToGohedef konumlarına (tarafından ayarlanan) ulaşana kadar özelliği okuyarak ne kadar uzağa gitmeleri gerektiğini kontrol etmek için her motor için iki tane kullanırız moveToBir kez distanceToGoulaşır sıfır, onların değişecek moveToonlar ters yönde hareket etmeye başlar, böylece, mevcut pozisyonun negatife konumunu.

Son olarak run()işlevi çağırarak onları harekete geçiriyoruz .

void loop() {
	// Change direction once the motor reaches target position
	if (stepper1.distanceToGo() == 0) 
		stepper1.moveTo(-stepper1.currentPosition());
	if (stepper2.distanceToGo() == 0) 
		stepper2.moveTo(-stepper2.currentPosition());

	// Move the motor one step
	stepper1.run();
	stepper2.run();
}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Arduino 2 x 16 LCD Display - SIVI KRISTAL EKRANLAR

 

Arduino 2 x 16 LCD Display - SIVI KRISTAL EKRANLAR


16 × 2 LCD, her türlü CMOS / TTL cihazı için 32 basamaklı bir görüntü ekranıdır. Bu kelime likit kristalden gelir ve 16X2 ekran boyutunu temsil eder. Sıvı kristal ekranda 16 × 2, 2 sıra ve 16 sütun vardır. Ayrıca 5 × 8 piksel tek rakam yapar. ASCII kodundaki herhangi bir rakam modül üzerinde görülebilir. Özel işaretleri ve tasarımları destekler, ancak bunlar bazı özel yöntemler gerektirir ve bazı sınırlamaları vardır. Bu gösterim modülünün çoğu ticari projede çok fazla kullanımı vardır ve bununla ilgili her programlama dilinde neredeyse bir kütüphane bulunmaktadır. Önceden hazırlanmış kitaplıklar, diğer cihazlarla uyum ve bağlantı oluşturmayı kolaylaştırdı.

Pin Bağlantısı 2 x 16 LCD

16 × 2 LCD modülün tamamında iki bölüm pimi vardır. Bazıları veri pinleridir ve bazıları komut pinidir. Her nasılsa, her pinin ekrandaki tek bir pikseli kontrol etmede bir rolü vardır. Ek olarak, bu modülün tüm giriş / çıkış pinleri pinout şemasında gösterilmiştir:








2 × 16 LCD Pin Konfigürasyonu ve Her Pinin Açıklaması

PinDETAYLAR
1VSSOrtak gerekçeler için bir toprak pimi.
2VDDGüç pini, 16X2 LCD'ye voltaj girişi için kullanacaktır.

Kontrol Pinleri

3VEPin 3, 3 pin potansiyometre ile güç ve toprağa bağlanacaktır. 16X2 LCD ışığına göre PİKSELLERİN kontrastını kontrol etmeye yardımcı olacaktır.
4RSBu pin, kayıt seçme pini olarak bilinir. Komut / veri kaydının değiştirilmesine yardımcı olur.
5R / WPin5'teki sinyal, LCD'den okuyup okumayacağına veya üzerine yazacağına karar verecektir.
6TREtkinleştirme pini, talimatın veri pinlerinden ve başka bir komut pininden LCD'ye aktarılmasına yardımcı olacaktır. İç kayıtlara izin görevi görür.

Veri Pinleri

PinDETAYLAR
7D0D0-D1, LCD'ye 8 bitlik giriş verilerinin ilk 4 bitlik giriş pinidir.
8D1
9D2
10D3
11D4D4-D7 pinleri, verilerin en az 4 bitlik girişini vermek için kullanılır. Bazı durumlarda, en az 4 pinin tek başına kullanılması cihazı işlevsel hale getirebilir.
12D5
13D6
14D7

Led Ekran Aydınlatma Pinleri

PinDETAYLAR
15+ veLCD birden fazla renkte gelir ve her seferinde farklı LCD'de renk dahili LED'e bağlı olacaktır. Pin15, LED'in güç girişi içindir.
16-vePin16, LED'in topraklama pimidir.

2 x 16 Likit Kristal Ekran 

LCD'de kayıtlar veri ve komutları saklamak için kullanılır. Komut kayıtları, ekranda gerçekleştirilebilecek farklı işlevlerin verilerini depolar. Veri kayıtları, verilerin saklanmasına ve ardından kontrol cihazına aktarılmasına yardımcı olur. 


LCD'de temel prensip, modüller kullanılarak ışığın bir katmandan (tabakadan) diğerine geçmesidir. Modüller titreşir ve konumlarını 90 derece hizalar, bu da polarize tabakanın ışığı içinden geçirmesine izin verir. Moleküller, her bir pikseldeki verileri göstermekten sorumludur. Her piksel, rakamı göstermek için ışık soğurma yöntemini kullanır. Değeri göstermek için moleküllerin ışık açısını değiştirecek şekilde konumlarını değiştirmeleri gerekir. Yani bu ışık sapması, insan gözünün kalan kısmın ışığını görmesini sağlayacak, bu da karanlık kısmı bir değer ve ızgara piksellerindeki rakamlar yapacaktır. Görebildiğimiz veriler, ışığın emildiği kısım olacaktır. Veriler moleküllere geçecek ve değiştirilene kadar orada kalacak.

LCD, Veri, Komut ve kontrol kayıtlarından oluşur. Tüm kayıt, LCD üzerindeki farklı işlev türlerini kontrol etmeye yardımcı olur. Veri ve komut kayıtları, girişi D0-D7 dijital pinlerinden alır. Ardından kontrol pimleri, komut / veri kayıtları arasında ayrım yapmaya yardımcı olur. LCD, sıvı kristallerden oluşur ve aşağıdaki görüntü, LCD'yi harici cihazlarla kontrol etmesini sağlayan iki IC'yi temsil eder.



LCD'yi kontrol etmek için iki tür yöntem vardır. İlk yöntem, dahili kayıtların çalışma yöntemini anlamak ve ardından kullanmaktır. Bu nedenle ikinci yöntem kolay ve basittir. bu yöntemde, tek Kitaplığın kullanılması gerekir. Hemen hemen her alanda geniş LCD kullanımından dolayı tüm kartlar ve mikrodenetleyicilerde LCD kitaplık bulunmaktadır. Her iki durumda da, kontrol yöntemi ve devreler farklı olacaktır.

2 x 16 LCD Doğrudan Programlama Yöntemi

LCD'yi kitaplık olmadan kontrol etmek için tüm 8 dijital pinin kullanılması gerekir. Bu nedenle, önce kontrol pimlerinin nasıl çalışması gerektiğini anlayın. İlk pinler, komut / veri kaydı arasında ayrım yapmaya yardımcı olan RS pinidir. Verileri dijital girişe bağladıktan sonra, veri veya komut kaydına gidecektir. RS pininde DÜŞÜK giriş varsa veri komut yazmaçlarına aktarılır ve bu pin üzerinde YÜKSEK bir giriş durumu varsa veri veri yazmaçlarında aktarılır. Dijital pinlerdeki farklı veri türleri, LCD'deki farklı işlevlerden sorumlu olacaktır. Fonksiyonlarıyla birlikte LCD'nin tüm komutları şunlardır:

Komut Listesi

HEX KODUFONKSİYONLAR
0FEkranı ve İmleci Açın
01Ekranı temizleyecek
02İmleç (0,0) konumuna geri dönecektir
04İmleci sola kaydırır
06İmleci sağa kaydırır
05Ekran sağa kayacak
07Ekran sola kayacak
0EEkran açılacak ve imleç yanıp sönmeye başlayacaktır
80Aşağıdaki komut, imleci başlangıçtan başlamaya zorlayacaktır.
C0İmlecin ikinci satırdan başlamasını sağlayacaktır.
382 satırlı 5 × 7 Matrix için
83İmleç ilk satırda, ancak üçüncü konumda
3Cİkinci satırı etkinleştirecek
08Aşağıdaki komut ekranı ve imleci kapatacaktır.
C1İkinci çizgiye atlamayı yapacak, ancak birinci pozisyonda
0CEkran açılacak, ancak artık ekranda herhangi bir imleç olmayacak.
C2Aşağıdaki komut, ikinci satıra ve 2. konuma atlamayı sağlayacaktır.

Yukarıdaki komut modül tarafından sadece komut pininde düşük giriş olduğunda okunacaktır, ancak R / W pininde düşük giriş olmalıdır. R / W pinindeki düşük giriş, LCD'nin harici pinlerden okuduğunu gösterecektir. Bundan sonra üçüncü bir pim vardır, pimi etkinleştirin. Etkinleştirme pimlerinin, komutu kayıtlardan LCD'ye aktarmak için düşük ila YÜKSEK bir darbe alması gerekecektir. Komut gönderildikten sonra, verilenin karşısındaki yeni komutlar yerine geçene kadar herhangi bir değişiklik olmayacaktır. Tüm bu işlevler tüm dijital pinlerden gönderilecektir.

Veri görüntüleme

Veri ekranı ayrıca dijital pinlerden geçecektir. Veri pinleri, RS pininde YÜKSEK giriş sinyali olduğunda, verileri dijital pinlerden veri yazmacına gönderecektir. Alfabe veya başka bir deyişle ASCII kodundaki tüm veriler LCD'de gösterilebilir. Verileri aktardıktan sonra, etkinleştirme piminin ayrıca DÜŞÜK - YÜKSEK darbeyi alması gerekir. DÜŞÜK'ten yüksek darbeye, yalnızca birkaç milisaniye gerekir. Bu nedenle, verileri piksel ızgaralarında göstermek için, komutların modül içinde saklanması gerekir. Komut gerekli her işleve göre ayarlanmadıysa, LCD, verileri önceden gönderilen komutlara göre görüntüleyecektir. Bu nedenle, herhangi bir veriyi göstermeden önce daima komutları gönderin.

Özel Karakter Gösterimi

Özelliği görüntülemek için, karakter zor değildir, ancak bazı belirli protokolleri takip etmek gerekir. Karakteri görüntülemek için LCD'nin CG RAM'inin özel piksel verilerini depolaması gerekir.


Veri gönderme ve saklama komutları

Aşağıdaki komutlar, özel piksel verilerinin gönderilmesine ve saklanmasına yardımcı olacaktır.

KarakterlerRAM ADRESİ (HEX)Komutlar
1400
2481
3562
4643
5724
6805
7886
8967

Karakter kaydedildikten sonra, karakterin gösterilmesi için komutların LCD'ye gönderilmesi gerekir. Karakter, komutu alana kadar gösterilmez.

Kitaplık Yöntemi ile Programlama

Kütüphane yöntemi, verileri çoğunlukla dört pin kullanarak gönderecektir. Kütüphane yönteminde burada Arduino'yu referans olarak kullanacağız. Kütüphane yöntemi, verileri çoğunlukla dört pin kullanarak gönderecektir. Kütüphane yönteminde, veriler ve diğer pinler bir kez ayarlanacak ve kalanlar programlama yoluyla değişecektir. İşte devre şeması:



Aşağıdaki kod, verilerin görüntülenmesine yardımcı olacaktır.
#include <LiquidCrystal.h> //Library
LiquidCrystal LCD(rs, en, d4, d5, d6, d7); //the varable will replace with each of the pins.
void setup() {
lcd.begin(16, 2);
}
void loop() {
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("hello, world!");
delay(500);
}

Kitaplık boyutunun lcd.begin komutuyla başlatılması gerekir. Lcd.clear, LCD ekranını temizleyecektir. Set.cursor, imlecin başlangıç ​​konumunu ayarlamaya yardımcı olur ve print, verilerin LCD'ye gönderilmesine yardımcı olur.

2 x 16 LCD Özellikleri

  • Bu modül herhangi bir CMOS / TTL cihazı ile kullanılabilir.
  • ASCII kodunda bulunan her türlü Alfabe ve rakam LCD üzerinde çizilebilir.
  • 4,7 ila 5,3V'de çalışır
  • Özel bir sembol boyutu her 5 × 8 pikseldir.
  • Hem 4 bit hem de 8 bit veri girişi ile kullanılabilir.

2 x 16 LCD Uygulamaları

  • Gösterilecek yalnızca küçük değerlere sahip uygulamaların çoğunda LCD'yi kullanır.
  • Ticari sayaçların çoğu, veri çıkışını temsil etmek için bu modülü kullanır.
  • Oyuncaklarda ve gelişen projelerde, hala büyük ölçüde kullanılıyor.
  • Siyah beyaz yazıcılarda, yazıcı ayarlarının ve durumunun gösterilmesine yardımcı olur.
Alternatif Ekranlar:
  • Tek renkli 0,96 ”OLED Ekran
  • Nokia5110 LCD Modülü
  • 2.4 ″ TFT LCD Ekran Modülüne genel bakış
  • TFT Ekran
  • TM1637- Grove 4 Haneli Ekran Modülü
  • 7 Segment Gösterimi

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.