İçindekiler:

8 Kanal Programlanabilir Zamanlayıcı: 13 Adım
8 Kanal Programlanabilir Zamanlayıcı: 13 Adım

Video: 8 Kanal Programlanabilir Zamanlayıcı: 13 Adım

Video: 8 Kanal Programlanabilir Zamanlayıcı: 13 Adım
Video: Sayıcı ( Counter) ve Zamanlayıcı (Timer ) Kavramları 2024, Temmuz
Anonim
8 Kanal Programlanabilir Zamanlayıcı
8 Kanal Programlanabilir Zamanlayıcı
8 Kanal Programlanabilir Zamanlayıcı
8 Kanal Programlanabilir Zamanlayıcı
8 Kanal Programlanabilir Zamanlayıcı
8 Kanal Programlanabilir Zamanlayıcı

Tanıtım

1993'ten beri projelerim için Microchip'in PIC mikro denetleyici serisini kullanıyorum ve tüm programlamamı Microchip MPLab IDE kullanarak assembler dilinde yaptım. Projelerim, basit trafik ışıklarından ve yanıp sönen LED'lerden, R/C modelleri için USB joystick arayüzlerine ve endüstride kullanılan anahtarlama cihazı analizörlerine kadar uzanıyordu. Geliştirme, günlerce ve bazen binlerce satırlık montajcı kodu aldı.

Matrix Multimedia Flowcode 4 Professional'ı aldıktan sonra yazılım konusunda oldukça şüpheci davrandım. İnanması çok kolay görünüyordu. Denemeye karar verdim ve tüm farklı Bileşen Makrolarını büyük bir başarıyla test ettim. Flowcode kullanmanın en iyi yanı, basit projelerin tek bir gecede kodlanabilmesiydi. I²C ve bir DS1307 gerçek zamanlı saatle oynadıktan sonra Flowcode kullanarak 8 Kanallı Zamanlayıcı tasarlamaya karar verdim. Küçük ve kolay bir proje olmadığı için kendime Flowcode öğretmek için harika bir proje olacağına inandım.

Mikroişlemci ve diğer bileşenleri seçme

Gereken I/O pinlerinin sayısı nedeniyle, 40 pinli bir cihaza ihtiyaç duyulacağı açıktı. PIC 18F4520, esas olarak 32K program belleği ve 1536 bayt veri belleği için seçildi. Kullanılan tüm bileşenler standart delikli cihazlardır ve gerektiğinde devrenin Vero kartı üzerinde kurulmasını mümkün kılar. Bu aynı zamanda bir breadboard üzerinde geliştirmeye yardımcı oldu.

Adım 1: Proje Hedefleri

Proje Hedefleri
Proje Hedefleri

Hedefler

- Pil yedekleme ile doğru zaman tutma.

- Tüm programlar ve veriler, güç kaybından sonra bile saklanacak.

- Basit kullanıcı arayüzü.

- Programlama esnekliği.

zaman tutma

Elektrik kesintilerine meyilli bir bölgede yaşarken, elektrik hatlarından gelen standart 50/60Hz doğru zaman tutma için yeterli olmayacaktır. Gerçek zamanlı bir saat gerekliydi ve birkaç RTC yongasını test ettikten sonra, basit osilatör ve pil yedekleme yapılandırması nedeniyle DS1307'ye karar verdim. DS1307'ye bağlı yalnızca 32.768 kHz'lik bir kristal kullanılarak oldukça doğru zaman tutma elde edildi. Doğruluk, 4 farklı kristal markası kullanılarak 2 aylık bir deneme süresi boyunca 2 saniye içindeydi.

Veri saklama

Tüm zamanlayıcı program verileri, elektrik kesintisi sırasında bile saklanmalıdır. 100'e kadar farklı program ve çeşitli konfigürasyon verileriyle, PIC'nin 256 baytlık yerleşik EEPROM'unun yeterince büyük olmayacağı anlaşıldı. Tüm programlama bilgilerini depolamak için bir 24LC256 I²C EEPROM kullanılır.

Basit kullanıcı arayüzü

Kullanıcı arayüzü sadece 2 öğeden, LED arka aydınlatmalı 16 x 4 satır LCD ekrandan ve 4 x 3 tuş takımından oluşur. Tüm programlama sadece birkaç tuşa basılarak yapılabilir. Arayüze yapılan eklemeler, sesli bir piezo zili ve görsel olarak yanıp sönen LCD arka ışığıdır.

Adım 2: Programlama Esnekliği

Programlama Esnekliği
Programlama Esnekliği

Yeterli program esnekliği sağlamak için, zamanlayıcıda ayrı ayrı ayarlanabilen 100 program bulunur. Her program için Açma zamanı, Kapanma Zamanı, Çıkış Kanalları ve Haftanın Günü ayarlanabilir. Her programın üç modu vardır:

- Otomatik: Açma Zamanı, Kapanma zamanı, Çıkış Kanalı ve Haftanın günü ayarlanır.

- Kapalı: Bireysel program, ayarlar silinmeden devre dışı bırakılabilir. Programı tekrar etkinleştirmek için, sadece farklı bir mod seçin.

- Gündüz/Gece: Açık Zaman, Kapalı Zaman, Çıkış Kanalı ve Haftanın günü ayarlanır. Otomatik modla aynı şekilde çalışır, ancak

çıkışları yalnızca karanlık olduğunda Açma ve Kapanma saatleri arasında açın. Bu, tam Gündüz/Gece kontrolünü de sağlar

gün batımında ışıkları açmak ve gün doğumunda kapatmak için ek esneklik olarak.

Örnek 1: 20:00'den sonra ışığı açacak ve gün doğumunda ışığı kapatacak.:

Saat: 20:00, Kapalı:12:00, Örnek 2: Gün batımında ışığı açacak ve 23:00'te ışığı kapatacak.

Açık: 12:00

Kapalı: 23:00

Örnek 3: Gün batımında ışığı açacak ve gün doğumunda ışığı kapatacak.

Açık: 12:01

Kapalı: 12:00

Tamamı 100 Açma/Kapama programından bağımsız olarak çalışan ek seçenekler mevcuttur.

Program Kanalları Aktif: Birden fazla programı kapatmak yerine, programları değiştirmeye gerek kalmadan tek tek çıkış kanalları devre dışı bırakılabilir.

Yardımcı girişler: Belirli çıkış kanallarının belirli bir süre için açılmasına izin vermek için iki dijital giriş mevcuttur. Örneğin, gece geç saatlerde eve varıldığında, uzaktan kumandadaki bir düğmeye basıldığında veya ev alarmı tetiklendiğinde farklı bir ışık serisini açmak için belirli ışıkları yakmak için kullanılabilir.

Yardımcı çıkışlar: İki ek çıkış (8 çıkış kanalı dışında) mevcuttur. Belirli çıkış kanallarıyla veya dijital girişlerle açılacak şekilde programlanabilirler. Kurulumumda 24V ile çalışan sulamamı kontrol eden 6-8 çıkışlarım var. Yardımcı çıkışlardan birini açmak, sulama sistemi için 24V güç kaynağını açmak için 6-8 kanallarını kullanıyorum.

Manuel Açma: Ana ekrandayken, kanalları manuel olarak açmak veya kapatmak için 1-8 düğmeleri kullanılabilir.

3. Adım: Donanım

Donanım
Donanım

Güç Kaynağı: Güç kaynağı bir doğrultucu, yumuşatma kondansatörü ve aşırı yük koruması için 1 Amperlik sigortadan oluşur. Bu besleme daha sonra bir 7812 ve 7805 regülatörü tarafından düzenlenir. Çıkış rölelerini sürmek için 12V besleme kullanılır ve diğer tüm devreler 5V beslemeden beslenir. 7805 regülatörü 7812 regülatörün çıkışına bağlı olduğu için toplam akım 7812 regülatör üzerinden 1 amper ile sınırlandırılmalıdır. Bu regülatörlerin uygun bir soğutucu üzerine monte edilmesi tavsiye edilir.

I²C Bus: Flowcode, donanım I²C kontrolüne izin verse de, yazılım I²C konfigürasyonunu kullanmaya karar verdim. Bu, pin atamalarında daha fazla esneklik sağlar. Daha yavaş (50 kHz) olmasına rağmen, donanım I²C veriyoluna kıyasla yine de harika bir performans sergiliyor. Hem DS1307 hem de 24LC256 bu I²C veriyoluna bağlıdır.

Gerçek Zamanlı Saat (DS1307): Başlatma sırasında, geçerli zaman ve konfigürasyon verilerini içerip içermediğini belirlemek için RTC kaydı 0 ve 7 okunur. Kurulum doğru olduğunda, RTC zamanı okunur ve zaman PIC'ye yüklenir. Bu, zamanın RTC'den okunduğu tek zamandır. Başlatmadan sonra, RTC'nin 7 numaralı pininde 1 Hz'lik bir darbe olacaktır. Bu 1Hz sinyali RB0/INT0'a bağlıdır ve bir kesme servis rutini aracılığıyla PIC zamanı her saniye güncellenir.

Harici EEPROM: Tüm program verileri ve seçenekleri harici EEPROM'da saklanır. EEPROM verileri başlangıçta yüklenir ve verilerin bir kopyası PIC belleğinde saklanır. EEPROM verileri yalnızca program ayarları değiştirildiğinde güncellenir.

Gündüz/Gece Sensörü: Gündüz/Gece sensörü olarak standart bir ışığa bağlı direnç (LDR) kullanılır. LDR'ler aynı ışık koşulları altında farklı direnç değerlerine sahip birçok şekil ve çeşitte geldiğinden, ışık seviyesini okumak için bir analog giriş kanalı kullandım. Gündüz ve Gece seviyeleri ayarlanabilir ve farklı sensörler için biraz esneklik sağlar. Biraz histerezis ayarlamak için Gündüz ve Gece için ayrı değerler ayarlanabilir. Durum yalnızca, ışık seviyesi 60 saniyeden uzun bir süre Gündüz'ün altında veya Gece ayar noktalarının üzerindeyse değişecektir.

LCD Ekran: Tüm veriler 2 satırlı ekranda görüntülenemediğinden 4 satır, 16 karakter ekran kullanılır. Proje, LCD_Custom_Char makrosunda tanımlanan bazı özel karakterler içeriyor.

Yardımcı Girişler: Her iki giriş de bir NPN transistörü ile arabelleğe alınır. +12v ve 0V konnektörde de mevcuttur, bu da harici bağlantılara daha esnek bağlantılar sağlar. Örnek olarak, kaynağa bir uzaktan kumanda alıcısı bağlanabilir.

Çıkışlar: Tüm çıkışlar bir 12V röle vasıtasıyla devreden elektriksel olarak izole edilmiştir. Kullanılan röleler, 10 amperde 250V AC olarak derecelendirilmiştir. Normalde açık ve normalde kapalı kontaklar terminallere getirilir.

Tuş takımı: Kullanılan tuş takımı 3 x 4 matris tuş takımıdır ve PORTB:2..7'ye bağlıdır.

Adım 4: Tuş Takımı Kesintileri

Tuş Takımı Kesintileri
Tuş Takımı Kesintileri
Tuş Takımı Kesintileri
Tuş Takımı Kesintileri
Tuş Takımı Kesintileri
Tuş Takımı Kesintileri

Herhangi bir tuşa basıldığında PORTB Interrupt on Change interrupt'ını kullanmak istedim. Bunun için, PORTB yönünün ve verilerinin her keypad kesmesinden önce ve sonra doğru ayarlandığından emin olmak için Akış Kodunda bir Özel Kesinti oluşturulması gerekiyordu. Bir düğmeye her basıldığında veya bırakıldığında bir kesme oluşturulur. Kesme rutini yalnızca bir tuşa basıldığında yanıt verir.

ÖZEL KESİNTİ

Kodu Etkinleştir

portb = 0b00001110;trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

işleyici kodu

if (intcon & (1 << RBIF))

{ FCM_%n();

portb = 0b00001110;

trisb = 0b11110001;

wreg= portb;

clear_bit(intcon, RBIF);

}

Sorun bulundu

Bir kesme sırasında, kesme hizmeti yordamı HAYIR koşullarında, programın geri kalanında kullanılabilecek herhangi bir başka makroyu çağırmalıdır. Kesinti, ana programın da aynı alt programda olmasıyla aynı anda meydana gelebileceğinden, bu sonuçta yığın taşma sorunlarına yol açacaktır. Bu, kod derlendiğinde Flowcode tarafından CİDDİ HATA olarak da tanımlanır.

GetKeyPadNumber altındaki Tuş Takımının Özel kodunda, Delay_us makrosuna yığın taşmasına neden olacak böyle bir çağrı var. Bunu aşmak için Delay_us(10) komutunu kaldırdım ve yerine 25 satır “wreg = porta;” koydum. komutlar. Bu komut PORTA'yı okur ve biraz gecikme elde etmek için değerini W kaydına yerleştirir. Bu komut, assembler movf porta, 0'a benzer tek bir komutla derlenecek. Projede kullanılan 10MHz saat için, her komut 400ns olacak ve 10us gecikme elde etmek için bu komutlardan 25'ine ihtiyacım vardı.

Şekil 3: GetKeypadNumber Özel Kodunun ikinci satırında, orijinal delay_us(10) komutunun “//” ile devre dışı bırakıldığını unutmayın. Bunun altına 25 adet “wreg = porta;” ekledim. yeni bir 10us gecikmesi almak için komutlar. Keypad_ReadKeypadNumber özel kodunun içinde herhangi bir makroya çağrı yapılmadığı için, Keypad makrosu artık bir kesme hizmeti rutininde kullanılabilir.

Akış Kodu Tuş Takımı ve eBlocks bileşenlerinin giriş hatlarında standart çekme dirençlerini kullanmadığına dikkat edilmelidir. Bunun yerine 100K aşağı çekme dirençleri kullanır. Geliştirme sırasında tuş takımında bulunan bazı parazitler nedeniyle, 100K dirençlerin tümü 10K ile değiştirildi ve tüm 10K dirençler 1K5 ile değiştirildi. Tuş takımı, 200 mm'lik uçlarla doğru çalışması için test edildi.

Adım 5: Zamanlayıcıyı Kullanma

Zamanlayıcıyı Kullanma
Zamanlayıcıyı Kullanma
Zamanlayıcıyı Kullanma
Zamanlayıcıyı Kullanma
Zamanlayıcıyı Kullanma
Zamanlayıcıyı Kullanma

Tüm ekranlar, kullanıcının ayarlarda hızlı değişiklikler yapması için gerekli tüm bilgileri gösterecek şekilde ayarlanmıştır. 4. satır, menüler ve program seçenekleri arasında gezinmeye yardımcı olmak için kullanılır. Normal çalışma sırasında toplam 22 ekran mevcuttur.

HAT 1: Zaman ve Durum

Geçerli günü ve saati, ardından durum simgelerini gösterir:

A – Yardımcı Giriş A'nın tetiklendiğini ve Yardımcı Giriş A zamanlayıcısının çalıştığını gösterir.

B – Yardımcı Giriş B'nin tetiklendiğini ve Yardımcı Giriş B zamanlayıcısının çalıştığını gösterir.

C – Yardımcı Çıkış C'nin açık olduğunu gösterir.

D – Yardımcı Çıkış D'nin açık olduğunu gösterir.

} – Gündüz/Gece sensör durumu. Varsa, gece olduğunu gösterir.

HAT 2: Program Çıktıları

Farklı programlar tarafından açılmış kanalları gösterir. Kanallar çıkış numaralarında görüntülenir ve bir "-" belirli çıkışın açık olmadığını gösterir. “Program Çıkışları Aktif”te devre dışı bırakılan kanallar burada yine gösterilecektir, ancak Gerçek çıkışlar ayarlanmayacaktır.

HAT 3: Gerçek Çıktılar

Farklı programlar, A ve B Aux Girişleri veya kullanıcı tarafından ayarlanan manuel çıkışlar tarafından hangi kanalların açıldığını gösterir. 0'a basmak, manuel olarak etkinleştirilen tüm çıkışları kapatacak ve Yardımcı Çıkış A ve B zamanlayıcılarını sıfırlayacaktır.

HAT 4: Menü ve tuş seçenekleri (tüm menülerde)

“*” ve “#” tuşlarının işlevini gösterir.

Orta kısım, seçilen ekran için hangi sayısal tuşların (0-9) etkin olduğunu gösterir.

Aux Girişi A ve B'nin giriş durumu da Açık veya Kapalı anahtar simgesi aracılığıyla gösterilir.

Tuş takımındaki ilgili tuşa basılarak çıkışlar manuel olarak açılıp kapatılabilir.

Menüler boyunca, farklı program seçenekleri arasında gezinmek için Yıldız ve Karma tuşları kullanılır. 0-9 tuşları seçenekleri ayarlamak için kullanılır. Tek bir ekranda veya programlama menüsünde birden fazla seçeneğin mevcut olduğu durumlarda, farklı seçenekler arasında gezinmek için Hash tuşu kullanılır. Mevcut seçili seçenek her zaman ekranın solundaki “>” karakteri ile gösterilecektir.

0-9 Zaman değerlerini girin

1-8 Kanal seçimini değiştir

14 36 Adım adım programlar, 1 adım geri, 4 adım geri 10 program, 3 adım ileri, 6 adım ileri 10

programlar

1-7 Haftanın günlerini ayarlayın. 1=Pazar, 2=Pazartesi, 3=Salı, 4=Çarşamba, 5=Perşembe, 6=Cuma, 7=Cumartesi

0 Ana ekranda, tüm manuel geçersiz kılmaları ve Giriş A ve Giriş B zamanlayıcılarını temizleyin. Diğer menülerde, değişiklikler

seçili seçenekler

# Ana ekranda, tüm manuel geçersiz kılmaları, Giriş A ve Giriş B zamanlayıcılarını ve Program Çıkışlarını devre dışı bırakacaktır.

sonraki olay.

* ve 1 Zamanlayıcıyı yeniden başlatın

* ve 2 Tüm programları ve seçenekleri silin, ayarları varsayılana geri yükleyin.

* ve 3 Zamanlayıcıyı beklemeye alın. Zamanlayıcıyı tekrar açmak için herhangi bir tuşa basın.

Herhangi bir zaman değerinin yanlış girilmesi sırasında, LCD arka ışığı bir hatayı belirtmek için 5 kez yanıp sönecektir. Aynı zamanda buzzer çalacaktır. Çıkış ve Sonraki komutları yalnızca geçerli giriş doğru olduğunda çalışır.

LCD Arka Işık

İlk çalıştırmada, aşağıdaki durumlar dışında LCD arka ışığı 3 dakika boyunca açılır:

- Bir donanım hatası var (EEPROM veya RTC bulunamadı)

- RTC'de zaman ayarlanmadı

LCD arka ışığı, tuş takımındaki herhangi bir kullanıcı girişinde 3 dakika boyunca tekrar açılacaktır. LCD arka ışığı kapalıysa, herhangi bir tuş takımı komutu önce LCD arka ışığını açar ve basılan tuşu yok sayar. Bu, kullanıcının tuş takımını kullanmadan önce LCD ekranı okuyabilmesini sağlar. Yardımcı Giriş A veya Yardımcı Giriş B etkinleştirilirse LCD arka ışığı da 5 saniye boyunca açılır.

6. Adım: Menü Ekran Görüntüleri

Menü Ekran Görüntüleri
Menü Ekran Görüntüleri
Menü Ekran Görüntüleri
Menü Ekran Görüntüleri
Menü Ekran Görüntüleri
Menü Ekran Görüntüleri

Tuş takımını kullanarak seçeneklerin her biri kolayca programlanabilir. Görüntüler, her ekranın ne yaptığı hakkında bazı bilgiler verir.

Adım 7: Sistemin Tasarımı

Sistemin Tasarımı
Sistemin Tasarımı

Tüm geliştirme ve testler breadboard üzerinde yapıldı. Sistemin tüm bölümlerine bakarak sistemi üç modüle ayırdım. Bu karar, esas olarak Eagle'ın ücretsiz sürümünün PCB boyutu sınırlamalarından (80 x 100mm) kaynaklanıyordu.

Modül 1 - Güç Kaynağı

Modül 2 - CPU kartı

Modül 3 - Röle kartı

Tüm bileşenlerin kolayca elde edilebilir olması gerektiğine ve yüzeye monte bileşenleri kullanmak istemediğime karar verdim.

Her birinin üzerinden geçelim.

Adım 8: Güç Kaynağı

Güç kaynağı
Güç kaynağı
Güç kaynağı
Güç kaynağı
Güç kaynağı
Güç kaynağı
Güç kaynağı
Güç kaynağı

Güç kaynağı basittir ve CPU ile röle kartlarını 12V ve 5V ile besler.

Voltaj regülatörlerini uygun ısı alıcılarına monte ettim ve ayrıca besleme için aşırı yüksek kapasitörler kullandım.

Adım 9: CPU Kartı

CPU Kartı
CPU Kartı
CPU Kartı
CPU Kartı
CPU Kartı
CPU Kartı
CPU Kartı
CPU Kartı

LCD ekran, tuş takımı ve röleler hariç tüm bileşenler CPU kartına monte edilmiştir.

Besleme, iki dijital giriş ve ışık sensörü arasındaki bağlantıları basitleştirmek için terminal blokları eklendi.

Başlık pimleri/soketleri, LCD ekrana ve tuş takımına kolay bağlantı sağlar.

Rölelere çıkışlar için ULN2803 kullandım. Zaten gerekli tüm sürüş dirençlerini ve geri dönüş diyotlarını içerir. Bu, CPU kartının hala Eagle'ın ücretsiz sürümü kullanılarak yapılabilmesini sağladı. Röleler iki ULN2803'e bağlanır. Alttaki ULN2803, 8 çıkış için ve üstteki ULN2803, iki yardımcı çıkış için kullanılır. Her yardımcı çıkışın dört transistörü vardır. Rölelere bağlantılar da başlık pinleri/soketleri aracılığıyla yapılır.

PIC 18F4520, PicKit 3 programcısı aracılığıyla kolay programlamaya izin vermek için bir programlama soketi ile donatıldı.

NOT:

Kartın ek bir 8 pin IC içerdiğini fark edeceksiniz. Üst IC bir PIC 12F675'tir ve bir dijital girişe bağlıdır. Bu, PCB tasarımı sırasında eklendi. Bu, dijital girişi önceden işlemeyi kolaylaştırır. Uygulamamda dijital girişlerden biri alarm sistemime bağlı. Alarm çalarsa, evimde bazı ışıklar açılır. Alarm sistemimi kurmak ve devre dışı bırakmak sirende farklı bip sesleri verir. PIC 12F675'i kullanarak artık kurma/devre dışı bırakma ile gerçek bir alarmı ayırt edebiliyorum. 12F675 ayrıca bir programlama soketi ile donatılmıştır.

Ayrıca başlık pimi/soket aracılığıyla bir I2C bağlantı noktası için hazırlık yaptım. Bu, daha sonra röle kartlarıyla kullanışlı olacaktır.

Kart, IC soketlerini takmadan önce lehimlenmesi gereken birkaç jumper içerir.

Adım 10: Akış Kodu Sonuç

Akış Kodu Sonuç
Akış Kodu Sonuç
Akış Kodu Sonuç
Akış Kodu Sonuç
Akış Kodu Sonuç
Akış Kodu Sonuç

Montajda kayıt seviyesinde çalışmaya alışkın olduğum için, bileşen makrolarını kullanmak bazen zor ve sinir bozucu oldu. Bu, esas olarak Flowcode'un programlama yapısı hakkındaki bilgi eksikliğimden kaynaklanıyordu. C veya ASM bloklarını kullandığım tek yer, bir kesme rutini içindeki çıkışları açmak ve tuş takımı kesmesini devre dışı bırakmak/etkinleştirmek için Do_KeyPressed rutiniydi. PIC, EEPROM veya RTC bulunamadığında bir ASM bloğu kullanılarak SLEEP'e de yerleştirilir.

Farklı I²C komutlarının kullanımına ilişkin yardımların tümü Flowcode Help dosyalarından elde edildi. Komutların başarılı bir şekilde kullanılabilmesi için farklı I²C cihazlarının nasıl çalıştığının tam olarak bilinmesi gerekir. Bir devre tasarlamak, tasarımcının ilgili tüm veri sayfalarına sahip olmasını gerektirir. Bu, Flowcode'un bir eksikliği değildir.

Flowcode gerçekten testin üstesinden geldi ve Microchip serisi mikroişlemciler ile çalışmaya başlamak isteyen kişiler için şiddetle tavsiye edilir.

PIC için akış kodu programlaması ve konfigürasyonu resimlere göre ayarlandı

Adım 11: Opsiyonel I2C Röle Kartı

Opsiyonel I2C Röle Kartı
Opsiyonel I2C Röle Kartı
Opsiyonel I2C Röle Kartı
Opsiyonel I2C Röle Kartı
Opsiyonel I2C Röle Kartı
Opsiyonel I2C Röle Kartı

CPU kartında zaten 16 röle için başlık bağlantıları var. Bu çıkışlar, iki ULN2803 yongası aracılığıyla açık kollektör transistörleridir. Bu, rölelere doğrudan güç sağlamak için kullanılabilir.

Sistemin ilk testlerinden sonra CPU kartı ile röleler arasındaki tüm kabloları beğenmedim. CPU kartına bir I2C bağlantı noktası eklediğim için, röle kartını I2C bağlantı noktasına bağlanacak şekilde tasarlamaya karar verdim. 16 kanallı bir MCP23017 G/Ç Bağlantı Noktası Genişletici yongası ve bir ULN2803 transistör dizisi kullanarak CPU ve röleler arasındaki bağlantıları 4 kabloya indirdim.

80 x 100mm PCB üzerine 16 adet röle sığdıramadığım için iki adet board yapmaya karar verdim. Her MCP23017, 16 bağlantı noktasından yalnızca 8'ini kullanır. Kart 1, 8 çıkışı ve kart 2 iki yardımcı çıkışı yönetir. Panolardaki tek fark, her panonun adresleridir. Bu, mini bir jumper ile kolayca ayarlanır. Her kartın diğer karta güç ve I2C verisi sağlamak için konektörleri vardır.

NOT:

Gerekirse yazılım, 16 bağlantı noktasının tümünü kullanabilen yalnızca bir kart sağlar. Tüm çıkış röle verileri ilk kartta mevcuttur.

Devre isteğe bağlı ve çok basit olduğu için şematik oluşturmadım. Yeterli talep olursa daha sonra ekleyebilirim.

Adım 12: İsteğe Bağlı RF Bağlantısı

Opsiyonel RF Bağlantısı
Opsiyonel RF Bağlantısı
Opsiyonel RF Bağlantısı
Opsiyonel RF Bağlantısı
Opsiyonel RF Bağlantısı
Opsiyonel RF Bağlantısı

Projeyi tamamladıktan sonra, zamanlayıcıya çok fazla 220V AC kablo çekmem gerektiğini fark ettim. Zamanlayıcının bir dolabın içine yerleştirilmesine izin veren standart 315MHz modüllerini ve tüm 220V kablolara yakın bir şekilde çatının içindeki röle panolarını kullanarak bir RF bağlantısı geliştirdim.

Bağlantı, 16MHz'de çalışan bir AtMega328P kullanır. Hem verici hem de alıcı için yazılım aynıdır ve mod bir mini jumper ile seçilir.

verici

Verici basitçe CPU I2C portuna takılır. AtMega328P, I2C röle kartlarıyla aynı verileri dinlediğinden ek kurulum gerekmez.

Veriler I2C portunda saniyede bir güncellenir ve verici bu bilgiyi RF bağlantısı üzerinden gönderir. Verici, yaklaşık 30 saniye boyunca I2C verilerini almazsa, verici, alıcı üniteye giden tüm röleleri kapatmak için sürekli olarak veri iletecektir.

Verici modülüne giden güç, PC kartındaki mini jumper ile 12V ile 5V arasında seçilebilir. Vericime 12V kullanarak güç veriyorum.

Alıcı

Alıcı, vericiden gelen kodlanmış verileri dinler ve verileri bir I2C bağlantı noktasına yerleştirir. Röle kartı basitçe bu bağlantı noktasına takılır ve CPU kartına takılı olduğu gibi çalışır.

Alıcı 30 saniye boyunca geçerli veri almazsa, alıcı, röle kartlarındaki tüm röleleri kapatmak için sürekli olarak I2C portuna veri gönderir.

şemalar

Bir gün talep olursa. Arduino taslağı, devre şeması olmadan devreyi oluşturmak için gerekli tüm bilgileri içerir.

Menzil

Benim kurulumumda verici ve alıcı arasında yaklaşık 10 metre mesafe var. Zamanlayıcı bir dolabın içinde ve röle ünitesi tavanın üstünde.

Adım 13: Nihai Ürün

Son ürün
Son ürün
Son ürün
Son ürün
Son ürün
Son ürün

Ana ünite eski bir proje kutusuna yerleştirildi. Aşağıdakileri içerir:

- 220V/12V Trafo

- Güç kaynağı panosu

- CPU Kartı

- LCD ekran

- Klavye

- RF Bağlantı Vericisi

- Işıkları uzaktan kumandayla açıp kapatmamı sağlayan ek uzaktan kumanda alıcı ünitesi

Röle ünitesi aşağıdakilerden oluşur:

- 220V/12V Trafo

- Güç kaynağı panosu

- RF Bağlantı Alıcısı

- 2 x I2C Röle Panosu

Tüm panolar aynı boyutta tasarlanmış olup, 3 mm ara parçalar ile üst üste istiflemeyi kolaylaştırır.

Önerilen: