İçindekiler:
- 1. Adım: Genel Bakış
- Adım 2: İhtiyacınız Olan Şeyler / Bağlantılar
- Adım 3: Devre Şeması
- Adım 4: Programlama - I
- Adım 5: Programlama - II
- 6. Adım: Video
Video: MCP-23008'in Röle Arayüzü (I2C) Kullanılarak Uygulanması:: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Merhaba
Selamlar..!!
Dcube teknoloji girişimleri adına ben (Somanshu Choudhary), Arduino nano ve MCP23008 kullanarak I2C protokolü aracılığıyla Röleleri kontrol edeceğim.
1. Adım: Genel Bakış
- MCP23X08 cihazı, I2C veri yolu veya SPI uygulamaları için 8 bit, genel amaçlı, paralel G/Ç genişletmesi sağlar.
- MCP23X08, giriş, çıkış ve polarite seçimi için çoklu 8 bitlik konfigürasyon kayıtlarından oluşur. Sistem yöneticisi, G/Ç yapılandırma bitlerini yazarak G/Ç'leri giriş veya çıkış olarak etkinleştirebilir. Her giriş veya çıkış için veriler, karşılık gelen Giriş veya Çıkış kaydında tutulur. Giriş Port kaydının polaritesi, Polarite Ters Çevirme kaydı ile tersine çevrilebilir. Tüm kayıtlar sistem yöneticisi tarafından okunabilir.
- VERİ SAYFASI BAĞLANTISI:
Adım 2: İhtiyacınız Olan Şeyler / Bağlantılar
1. Arduino Nano BAĞLANTISI:
2. Arduino Nano BAĞLANTISI için Kalkan:
3. USB Kablo Tip A'dan Mikro Tip B'ye 6 Feet Uzunluk
4. I²C Kablo BAĞLANTISI:
5. Sekiz SPDT I²C Kontrollü Röle
6. Adaptör BAĞLANTISI:
Adım 3: Devre Şeması
Adım 4: Programlama - I
- Bu kodda Fonksiyon Programlama Paradigmasını kullanıyorum
- İşlev tanımı ve işlev çağrısı için farklı sekmeler kullandım
SEKME ALTINDAKİ KOD q:
// Basit fonksiyon çağırma kodu
#include void kurulumu()
{
// MCP23008'in I2C adresi
#define MCP_ADDR 0x20
// I2C Bus'a master olarak katıl
Wire.begin();
// Seri iletişimi başlat ve baud hızını ayarla
Seri.başla(9600);
// I2C veriyolunda verilen cihazla iletimi başlat
Wire.beginTransmission(MCP_ADDR);
// IODIR – G/Ç YÖNÜ KAYIT kaydını seçin
Wire.write(0x00);
// Gerekli işlemi seçin (çıktı)
Wire.write(0x00);
// YAPILANDIRMA kaydını seçin
Wire.write(0x05);
// Gerekli işlemi seçin
Wire.write(0x0E);
// iletimi sonlandır
Wire.endTransmission();
}
boşluk döngüsü()
{
a1_on();
gecikme(1000);
a1_off();
gecikme(1000);
a2_on();
gecikme(1000);
a2_off();
gecikme(1000);
a3_on();
gecikme(1000);
a3_off();
gecikme(1000);
a4_on();
gecikme(1000);
a4_off();
gecikme(1000);
a5_on();
gecikme(1000);
a5_off();
gecikme(1000);
a6_on();
gecikme(1000);
a6_off();
gecikme(1000);
a7_on();
gecikme(1000);
a7_off();
gecikme(1000);
a8_on();
gecikme(1000);
a8_off();
}
SEKME ALTINDAKİ KOD q1:
// Bu kod, gemide röle 1'i açıp kapatmak içindir.
geçersiz a1_on() {
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x01);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a1_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
SEKME ALTINDAKİ KOD q2:
// Bu kod, gemide röle 2'yi açıp kapatmak içindir.
geçersiz a2_on() {
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x02);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a2_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
SEKMESİ ALTINDAKİ KOD q3:// Bu kod, gemideki röle 3'ü açıp kapatmak içindir.
geçersiz a3_on()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x04);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a3_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
Adım 5: Programlama - II
SEKME ALTINDAKİ KOD q4:
// Bu kod, gemide röle 4'ü açıp kapatmak içindir
geçersiz a4_on()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x08);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a4_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
SEKME q5 ALTINDAKİ KOD:
// Bu kod, gemide röle 5'i açıp kapatmak içindir
geçersiz a5_on()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x10);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a5_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
SEKME ALTINDAKİ KOD q6:// Bu kod, gemideki röle 6'yı açıp kapatmak içindir
geçersiz a6_on()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x20);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a6_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
SEKME ALTINDAKİ KOD q7:// Bu kod, gemide 7 numaralı röleyi açıp kapatmak içindir
geçersiz a7_on() {
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x40);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a7_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
SEKMESİ ALTINDAKİ KOD q8:// Bu kod, gemide röle 8'i açıp kapatmak içindir
void a8_on() {
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x80);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
geçersiz a8_off()
{
// İletimi başlat
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
gecikme(1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Ekrana çıktı
Serial.print("GPIO değeri:");
Seri.println(GPIO, BIN);
}
6. Adım: Video
Daha fazla bilgi için sitemizi ziyaret etmekten çekinmeyin:
www.dcubetechnologies.com
Önerilen:
I2C Röle Arduino IDE ile Buluştu: 5 Adım
I2C Relay Met Arduino IDE: Güzel bir röle kartı sipariş ettim ama ArduinoIDE talimatı yoktu, sadece Raspberry Pi e.o. Arduino ile nasıl kullanılacağını öğreniyorum ve o zamandan tasarruf edebilmeniz için paylaşmak istiyorum. Orijinal RaspberryPi örneği: wiki.52pi.com/index.php/DockerPi_4_Channel_R
I2C Ekranlı RFID Arduino Uno Röle Anahtarı: 4 Adım
I2C Ekranlı RFID Arduino Uno Röle Anahtarı: Merhaba, bu benim ilk projem, adım Oskar ve 13 yaşındayım. Bu proje normal bir I2C ekranı ile çalışmıyor
I2C Sensör Arayüzü ile Başlarken? - MMA8451'inizi ESP32 Kullanarak Arayüz: 8 Adım
I2C Sensör Arayüzü ile Başlarken? - MMA8451'inizi ESP32'leri Kullanarak Arayüz: Bu eğitimde, denetleyici (Arduino, ESP32, ESP8266, ESP12 NodeMCU) ile çalışan I2C cihazının (İvmeölçer) nasıl başlatılacağı, bağlanacağı ve elde edileceği hakkında her şeyi öğreneceksiniz
Arduino UNO ve Tek Kanallı 5V Katı Hal Röle Modülü Kullanılarak Ampul Nasıl Kontrol Edilir: 3 Adım
Arduino UNO ve Tek Kanallı 5V Katı Hal Röle Modülü Kullanılarak Ampul Nasıl Kontrol Edilir: Açıklama:Geleneksel mekanik röle ile karşılaştırıldığında, Katı Hal Rölesinin (SSR) birçok avantajı vardır: çok daha yüksek açma/kapama ile daha uzun bir ömre sahiptir. kapalı hız ve gürültü yok. Ayrıca titreşime ve mekanik dayanıma da daha iyi
ESP 32 Dört Röle Kartı ile Nextion Ekran Arayüzü: 7 Adım
ESP 32 Four Relay Board ile Nextion Ekran Arayüzü: Bu talimatta 5” nextion ekranını Esp 32 four röle kartına arayüzleyeceğiz. Kart MQTT protokolü ile kontrol edilir. Board ayrıca iki yönlü kontrol özelliğine sahiptir. Hem mqtt hem de dokunmatik ekran ile kontrol edilebilir. Dokunmatik ekran