This post is also available in:
- MCP4561 Dijital Direnç – Pot
- MCP4561 Çalışma Protokolleri
- MCP4561 Pin İşlevleri
- MCP4561 Dijital Trimpot Devresi
- MCP4561 MikroC Kütüphanesi
- Çalışma Videosu
- Sonuç
- Kütüphane Dosyaları
- Yararlanılan Kaynaklar
MCP4561 Dijital Direnç -POT
- MCP4561 dijital bir dirençtir daha doğrusu MCU ile ayarlanabilen bir trimpottur.
- Bu dersimizde MCP4561 dijital direncin kullanımını ve MikroC de yazdığım kütüphanesini göreceğiz.
- Bu direncin en büyük özelliği hem çok ufak olması hemde PIC gibi mcu lar ile kontrol edilebilmesi.
- Çok farklı modelleri bulunmakta dikkat edilmesi gereken her modelin kullanılacağı iletişim protokolü ve yapısı farklıdır.
- MCP4561 I2C ile kontrol edilir ve kalıcı belleğe sahiptir(Nonvolatile). Yani enerji kesilse de ayarladığınız direnç değeri değişmez.
- MCP4561 5k-10k-50k-100k gibi kendi içinde tipleri vardır. Bunu seçerken gerekli çözünürlüğü de dikkate alın çünkü bu entegre 256 adımdan oluşur yani 10 k lık modeli alırsanız 10000ohm/256 = 39 ohm eder. Ayarlayacağınız direnç daima 39 ohm ve katları olabilir.
- Ben bu projede 10 k lık modeli kullandım.
- MCP4561 1 adet adresleme pinine sahiptir yani I2C ile kullanılacağından aynı hatta sadece 2 adet MCP4561 kullanılabilir.
- MCP4561 kazanç direnci , kalibrasyon direnci yada güç kaynağı çalışmalarında kullanılabilir . Tabii ki gerekli şartlar yerine getirildiği takdirde. Bu direncin MCU tarafından ayarlanması en başta kalibrasyon vb. işlemleri yaparken devre kutusunu açma gibi işlemlerden bizi kurtarır. Ayrıca LCD ve GLCD lerde arka plan ışığı şiddeti ve kontrast gibi ayarları da MCU yapma olanağı sağlar.
MCP4561 Hafıza Haritası
Adres | İşlevi | Hafıza Tipi |
00h | Uçucu Wiper 0 | RAM |
01h | Bu modelde kullanım dışıdır | – |
02h | Kalıcı Wiper 0 | EEPROM |
03h | Bu modelde kullanım dışıdır | – |
04h | Uçucu TCON Register | RAM |
05h | Status Register | RAM |
06h | EEPROM Hücresi | EEPROM |
07h | EEPROM Hücresi | EEPROM |
08h | EEPROM Hücresi | EEPROM |
09h | EEPROM Hücresi | EEPROM |
0Ah | EEPROM Hücresi | EEPROM |
0Bh | EEPROM Hücresi | EEPROM |
0Ch | EEPROM Hücresi | EEPROM |
0Dh | EEPROM Hücresi | EEPROM |
0Eh | EEPROM Hücresi | EEPROM |
0Fh | EEPROM Hücresi | EEPROM |
- Uçucu Wiper , bu bölge kullanılarak yapılacak direnç ayarının geçici olduğunu belirtir. Enerji kesilince burada ki ayarlamada silinir.(burada arttırım ve azaltım yapılabilir)
- Kalıcı Wiper , bu bölge kullanılarak yapılan direnç ayarının kalıcı olduğunu belirtir. Enerji kesilince burada ki ayarlar silinmez.( burada arttırım ve azaltım yapılamaz)
- TCON – Terminal Kontrol bölgesinde yapılacak ayarlar da geçicidir.
- Status bölgesinden sadece okuma yapılabilir
- Geriye kalan tüm EEPROM hücreleri adından da anlaşılacağı üzere kalıcı bilgi tutabilir.
MCP4561 Kontrol Alanları
- MCP4561 in 2 adet bölgesi bulunur.
- Status Register
- TCON Register
- Bu bölgeleri okumak veya bu bölgelere veri yazmak şart olmasa da bazı durumlarda kullanılması gerekebilir.
Status Register
Status Register – Hafıza Adresi 05h | |||||||
1 | 1 | 1 | 1 | okuma-0 | – | okuma-x | okuma-x |
Ayrılmış Alan | EEWA | – | WL0 | WP | |||
7.bit | 6.bit | 5.bit | 4.bit | 3.bit | 2.bit | 1.bit | 0.bit |
- Bu bölgeden sadece okuma yapılabilir hiçbir şekilde yazma yapılamaz
- Bu bölgedeki bilgiler EEPROM işlemlerinde kullanılabilir
- EEWA : Bu bit MCP4561 içerisinde ki EEPROM un müsait olup olmadığını bildirir. Bu bit okunarak EEPROM a yazma işlemleri yapılır yada bekletilir
- 1 ise : EEPROM meşgüldür.
- 0 ise : EEPROM yeni işlem için müsaittir.
- NOT: EEPROM meşgül olduğu durumlarda diğer geçici (RAM) alanlara okuma ve yazma yapılabilir.
- WL0 – Wiper Lock : Direnc üzerinde ayar yapılmasını engeller. Ancak ben bu özelliği kullanmıyorum bu sebeple açıklama yapmak gereği duymadım çok işlevli-gerekli bir şey değildir.
- WP : Bu bit MCP4561 in EEPROM un kilitli olup olmadığını bildirir.
- 1 ise : EEPROM kilitlidir.
- 0 ise : EEPROM kilitli değildir.
- EEWA : Bu bit MCP4561 içerisinde ki EEPROM un müsait olup olmadığını bildirir. Bu bit okunarak EEPROM a yazma işlemleri yapılır yada bekletilir
- Ayrılmış alan üretici tarafından gelecek için ayrılmıştır.
- 2.bit ise bu modelde işlevsizdir bazı dual modellerde kullanılır.
TCON – Terminal Kontrol Register
TCON – Terminal Kontrol Register -Hafıza Adresi 04h | ||||||||
o/y-1 | – | – | – | – | o/y-1 | o/y-1 | o/y-1 | o/y-1 |
GCEN | – | – | – | – | R0HW | R0A | R0W | R0B |
8.bit | 7.bit | 6.bit | 5.bit | 4.bit | 3.bit | 2.bit | 1.bit | 0.bit |
- o/y = okuma-yazma yapılabilir
- Bu registerde hem okuma hem yazma yapılabilir ancak geçici bellekte bulunduğundan yapılan ayarlamalar yeniden başlatılınca silinecektir.
- Bu bölge dijital direnç pinlerini açıp kapatmaya yarar ancak yukarıda görüldüğü gibi varsayılan olarak tüm pinler aktif gelmektedir.
- GCEN : Bu bit I2C hattındaki tüm MCP4561 lerin aynı anda kontrol edilmesini sağlayan “Genel Komutları” alıp almayacağını belirler
- 1 ise : Komutları alır
- 0 ise : Komutları almaz
- Not : Varsayılan değer 1 dir.
- R0HW : Bu bit MCP4561 in donanımını kontrol eder
- 1 ise : MCP4561 zorunlu kapatmayı yapmaz ( voltaj düştüğünde shutdown yapmaz)
- 0 ise : MCP4561 zorunlu kapatmayı yapar ( voltaj düştüğünde shutdown yapar)
- Not : Varsayılan değer 0 dır.
- R0A : Bu bit P0A pininin bağlantısını sağlar yada koparır
- 1 ise : Bağlıdır
- 0 ise : Bağlı değildir
- Not : Varsayılan değeri 1 dir.
- R0W : Bu bit P0W pininin bağlantısını sağlar yada koparır
- 1 ise : Bağlıdır
- 0 ise : Bağlı değildir
- Not : Varsayılan değeri 1 dir.
- R0W : Bu bit P0B pininin bağlantısını sağlar yada koparır
- 1 ise : Bağlıdır
- 0 ise : Bağlı değildir
- Not : Varsayılan değeri 1 dir.
- GCEN : Bu bit I2C hattındaki tüm MCP4561 lerin aynı anda kontrol edilmesini sağlayan “Genel Komutları” alıp almayacağını belirler
MCP4561 Çalışma Protokolleri
- Bu bölümde MCP4561 in adresleme sistemini ,genel işlemler,okuma-yazma sistemini ve wiper arttırma-azalma işlemlerini göreceğiz.
- Burada görülecek şablonlara mutlaka uyulmalıdır.
MCP4561 Adres Sistemi
- MCP4561 de 1 adet adres pini bulunur.(A0) bu sebeple bu pin 1 yada 0 yapılarak adres belirlemesi yapılabilir.( aynı I2C hattında sadece 2 tane MCP4561 kullanılabilir)
- Adres sistemi yukarı da görüldüğü gibi 010111+A0 (standart adres+diğer adres pinleri+A0) şeklindedir. A0 dan önce olan bölüm sabittir A0 a göre 1 yada 0 olur
- I2C protokolünde her zaman start ile işlem başlar 7 bit adres+1 bit işlem = toplam 8 bit bilgi gönderilir ve MCP4561 den onaylandı (ACK 1) yada onaylanmadı (NACK 0) işareti gelir. Bu şekilde işlem yapılacak parça seçilir.
- NOT: MCP nin diğer modellerinde birden fazla Adres pini bulunabilir yukarıda örnekte sadece 0101 kısmı daima sabittir. Ancak MCP4561 de A2 ve A1 olmadığından bunlar 1 kabul edilir sadece A0 değişkendir. Diğer modellerde daha fazla adres pini bulunuyorsa adres buna göre değerlendirilmelidir.
MCP4561 Genel Komut Gönderim Sistemi
Genel Komutlar | ||
7 bit Komut | İşlev | |
100000D | Wiper alanına veri yazar – Geçici Bellek | Genişletilmiş komut |
110000D | TCON alanına veri yazar – Geçici Bellek | Genişletilmiş komut |
1000010 | Wiper Değerini Arttırır | Genel komut |
1000100 | Wiper Değerini Azaltır | Genel komut |
- Genel komutlar I2C hattındaki tüm MCP4561 ler üzerinde aynı anda işlem yapmak için kullanılırlar.
- Yapılabilecek işlemler sadece yukarıdaki tablo ile sınırlıdır bunun dışında işlem yaptırlmaya çalışılırsa hata sonucu alınacaktır.
- Adres daima “00000000” şeklinde olmalıdır.
- Veri yazma komutlarında “D” 9. veri bitidir. Detayı aşağıda anlatılacaktır.
- Genel komut sistemi kendi içerisinde 2 ye ayrılır
- Genel Komut Sistemi
- Genişletilmiş Genel Komut Sistemi
Genel Komut Sistemi
- Sadece 7 bitlik komut gönderimi yapılır veri gönderilmez.
- Wiper arttırma ve azaltma işleminde kullanılır.
- 7 bit komut sonrasında ki “0” biti sabittir.
Genişletilmiş Genel Komut Sistemi
- Genel komut sistemi içerisinde veri yazma işleminin yapılması için kullanılır.
- Buna göre TCON alanına ve Wiper alanına veri yazılabilir fakat bu alanlar geçici bellek alanlarıdır. Yani yazılan veri enerji kesilince silinecektir.
- Bu bölümde farklı olarak 9 . veri biti bulunur bunun sebebi şudur;
- MCP4561 0-256 arası olmak üzere 257 adet kademeden oluşur .
- Dolayısı ile MCP4561 de direnç değeri belirlerken en az “0” en fazla “256” değeri veri olarak girilebilir.
- Sizinde fark ettiğiniz gibi 256 değeri 8 bite sığmaz dolayısı ile 9 bit bir yer gereklidir.
- Bu sebeplerden dolayı eğer Wiper alanına 256 değeri yazacaksak 9. bite taşan kısım 7 adet komut bitinin sonuna eklenerek gönderilmelidir.
- Normal şartlarda eğer 8 bite sığan veri gönderilirse 9.veri biti “0” olmalıdır zaten yalnızca 256 verisi gönderileceği zaman 9.veri biti = 1 olur diğer tüm veri bitleri “0” olacaktır. 256 = 00000001 00000000 -> 16 bit binary gösterimi
MCP4561 İşlem Komutları
İşlem Komutları | |
Komut (binary) | İşlev |
00 | Veri Yazma |
01 | Wiper Arttırma |
10 | Wiper Azaltma |
11 | Veri Okuma |
- Bu bölümde verilen komutlar her MCP4561 için özeldir yani adres seçimi yapılan MCP4561 için geçerlidir.
- Buradaki tüm işlemlerde mutlaka ilk olarak MCP4561 adresi seçilir ardından işlem yapılacak Hafıza Adresi seçilir.
MCP4561 Veri Yazma İşlemi
- Yazma işlemi için ilk olarak işlem yapılacak MCP4561 in adresi gönderilerek seçim yapılır
- Veri yazma işleminin yapılacağı Hafıza adresi ve komut birleştirilir eğer yazılacak veri 256 ise D8 biti 1 yapılır
- Yazdırılacak veri 256 dan küçük ise D8=0 yapılır ve onaydan sonra 8 bitlik veri gönderilir aksi halde 8 bitlik bölüm sıfır olur.
- İşlem kesintiye uğramadan devam ettirilecekse STOP – P gönderilmez onaydan sonra yeniden Hafıza Adresi ve komut kombinasyonu gönderilir ve yeniden veri yazılabilir.
- İşlem bitirileceği zaman STOP – P işareti ile sonlandırılır.
- İşlem sonlandırıldıktan sonra yeniden yazma yapılacaksa en baştan başlanarak MCP4561 seçimi yapılmalıdır.
MCP4561 Veri Okuma İşlemi
- I2C protokolünde okuma yazma kadar basit ve tek düze değildir biraz daha karışık bu sebeple bazı durumlarda hatalar olmasına sebep olabiliyor.
- İlk olarak MCP4561 in adresi yazma yapılacak şekilde seçilir
- Okuma yapılacak RAM adresi okuma komutu ile (binary 11) seçilir
- Tekrar başlat yapılır ve bu sefer MCP4561 in adresi okuma yapılacak şekilde seçilir
- Clock gönderildikçe veri gelmeye başlar her veri paketi sonunda ACK gönderilirse veri gelmeye devam eder NACK gönderildiğinde iletişim kopar STOP ile durur.
- Daha öncede belirttiğim gibi MCP4561 256 değerini alabiliyordu. Burada da yine 256 değeri ihtimaline karşı D8 bitini görüyoruz yani 9. veri biti. Okuma yapıldığında bu sebeple ilk gelen 7 biti görmezden geliyoruz. 8.biti okuyup onay gönderdikten sonra gelen 8 bit bizim için değerli veri taşımaktadır. Yani toplamda bizi ilgilendiren 9 bittir.
- Okuma işleminde veriler gelmeye başladığında yukarıdaki çizimde de göreceğiniz üzere ACK veya NACK işaretleri bu sefer MCP4561 den değil bizim tarafımızdan (MCU dan) MCP4561 e gönderilir okuma işleminin de bir farkı budur bu sadece veri gelmeye başladığında olur adres gönder vb. bölümlerde değil.
- Veri okuma sonunda NACK gönderilmedikçe veri okunmaya devam edilir . I2C protokolü gereği MCP4561 her okumada işaretçisini bir arttırıp bir sonraki adresteki veriyi okuyacaktır.
MCP4561 Wiper Arttırma İşlemi
- Wiper trimpotlar ayar yapılan orta pini temsil eder. Dolayısı ile burada yapılan işlem MCP4561 içindeki bu ayar pinini arttırmaktır.
- MCP4561 sistemi gereği 257 kademeye sahiptir.(0-256) dolayısı ile her kademe de 39 ohm artış yada azalma olacaktır. ( trimpotun 3 pini olduğunu unutmayın nereden ölçüm yaptığınıza göre direnç değeri azalıp artabilir.)
- Wiper arttırma işleminde sadece geçici wiper belleğindeki (00h) bilgi arttırılıp azaltılabilir başka alanlarda bu işlem yapılamaz.
- Bir kere MCP4561 in adresi gönderildikten sonra arka arkaya yukarıda ki gibi wiper arttırma komutu gönderilerek sürekli artış sağlanabilir.
MCP4561 Wiper Azaltma İşlemi
- Wiper trimpotlar ayar yapılan orta pini temsil eder. Dolayısı ile burada yapılan işlem MCP4561 içindeki bu ayar pinini azaltmaktadır.
- MCP4561 sistemi gereği 257 kademeye sahiptir.(0-256) dolayısı ile her kademe de 39 ohm artış yada azalma olacaktır. ( trimpotun 3 pini olduğunu unutmayın nereden ölçüm yaptığınıza göre direnç değeri azalıp artabilir.)
- Wiper azaltma işleminde sadece geçici wiper belleğindeki (00h) bilgi arttırılıp azaltılabilir başka alanlarda bu işlem yapılamaz.
- Bir kere MCP4561 in adresi gönderildikten sonra arka arkaya yukarıda ki gibi wiper azaltma komutu gönderilerek sürekli azalış sağlanabilir.
MCP4561 Pin İşlevleri
Pin | İsim | İşlev |
1 | A0 | I2C Adresleme Pini |
2 | SCL | I2C Clock Pini |
3 | SDA | I2C Data Pini |
4 | Vss | GND |
5 | P0A | Ayarlı Direnç 1. Bacak |
6 | P0W | Ayarlı Direnç Ayar Pini- WIPER |
7 | P0B | Ayarlı Direnç 2. Bacak |
8 | Vdd | Besleme +1,8V / +5V |
- Yukarıda yer alan ve kütüphanede sürekli anılacak olan WIPER ayarlı dirençlerde ayar yapılan orta bacağı temsil eder.
- Adresleme pini +5 volt yada GND ye bağlanarak 1 ve 0 yapılır bu şekilde 1 hatta 2 tane MCP4561 kullanılabilir.
MCP4561 Dijital Trimpot Devresi
- Bu bölümde MCP4561 için gerekli temel devreyi göreceğiz.
- Zaten pek fazla bir parçaya ihtiyaç duymamaktadır nihayetinde bir trimpottur.
MCP4561 Devre Şeması
- Devre şemasında 2 adet MCP4561 in adresleme pinlerine dikkat edin. Biri “1” yapılırken diğeri “0” yapıldı.
- I2C hatları mutlaka 20k ile pull-up yapılmalıdır.
- A-WIPER-B ucları direnç çıkışlarıdır. Bir trimpotun 1-2-3 bacağı gibi düşünülebilir
Gerekli Malzemeler
- MCP4561
- 100nf kondansatör
- 20 k direnç – 2 adet
- Deneme devreleri için DIP çevirici
Devrenin Yapılışı
- Devre basit olduğu için boarda kurarak denedim.
- DIP çevirici kullanmak deneme devrelerinde büyük kolaylık sağlamaktadır.
- MCP4561 in boyut olarak büyük avantajları vardır.
MCP4561 MikroC Kütüphanesi
- MCP4561 I2C protokolü ile çalışmaktadır bu sebeple daha önce yazdığım I2C protokolü ile kütüphaneyi hazırladım. I2C Kütüphanesini buradan indirip projenize dahil etmelisiniz.
Daha önce olduğu gibi bu kütüphanede GPL ile açık kaynak kod olarak yayınlanmıştır. Kütüphaneyi indirip inceleyebiliriz değişiklikler yapabilirsiniz.- MCP4561- 10 k lık modelde 257 kademe var demiştik ve her kademe 39 ohm dur.
- WIPER fonksiyonları trimpotlardaki orta pinin hareketi temsil eder.
Fonksiyonlar
- Fonksiyonların tamamı kullanıcı fonksiyonudur.
- Bazı fonksiyonlar kullanıcıya rahatlık sağlamak amacı ile oluşturuldu.
Genel Komut Fonksiyonları
- Bu bölümdeki fonksiyonlar aynı I2C hattında bulunan tüm MCP4561 leri aynı anda kontrol etmeye yarar.
- Komutları MCP4561.h dosyasında bulabilirsiniz.
– MCP4561_GENEL_KOMUTLAR Fonksiyonu
Fonksiyon : unsigned char MCP4561_GENEL_KOMUTLAR(unsigned char KOMUT)
Amacı : Genel komutları işletir. I2C hattındaki MCP4561 lerde WIPER artttırma ve azaltma yapar
Parametreler :
- KOMUT : Uygulanacak komut buraya yazılır
Kullanım Şekli :
MCP4561_GENEL_KOMUTLAR(WIPER_ARTTIR);
Geri Bildirim :
- 1 gelirse işlem başarılı demektir
– MCP4561_GENISLETILMIS_GENEL_KOMUTLAR Fonksiyonu
Fonksiyon : unsigned char MCP4561_GENISLETILMIS_GENEL_KOMUTLAR(unsigned char KOMUT,unsigned char VERI)
Amacı : Genel komutları işletir. I2C hattındaki MCP4561 lerin TCON alanına ve WIPER değerini geçici bölgesine yazmaya yarar
Parametreler :
- KOMUT : Uygulanacak komut buraya yazılır
- VERI : Yazılacak veri buraya yazılır
Kullanım Şekli :
MCP4561_GENISLETILMIS_GENEL_KOMUTLAR(TCON_REGISTER_DEGERI,0b11001100)
Geri Bildirim :
- 1 gelirse işlem başarılı demektir.
İşlem Fonksiyonları
– MCP4561_VERI_OKUMA Fonksiyonu
Fonksiyon : unsigned int MCP4561_VERI_OKUMA(unsigned char MCP4561_ADRESI,unsigned char RAM_ADRESI)
Amacı : Belirtilen hafıza alanında veri okur
Parametreler :
- MCP4561_ADERSI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
- RAM_ADRESI : Okuma yapılacak hafıza adresi yazılır
Kullanım Şekli :
MCP4561_VERI_OKUMA(0,5);
Geri Bildirim :
- Okunan veriyi geri bildirim olarak gönderir. 0-256 arası bir değer döndürür.
– MCP4561_DIRENC_DEGERI_OKU Fonksiyonu
Fonksiyon : unsigned int MCP4561_DIRENC_DEGERI_OKU(unsigned char MCP4561_ADRESI,unsigned char RAM_ADRESI)
Amacı : Belirtilen wiper noktalarından direk olarak direnç değeri okur
Parametreler :
- MCP4561_ADRESI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
- RAM_ADRESI : Okuma yapılacak hafıza adresi yazılır
Kullanım Şekli :
MCP4561_DIRENC_DEGERI_OKU(0,5);
Geri Bildirim :
- Veriyi direkt olarak ohm değerinde bildirir.
– MCP4561_STATUS_OKUMA Fonksiyonu
Fonksiyon : unsigned char MCP4561_STATUS_OKUMA(unsigned char MCP4561_ADRESI)
Amacı : Status registerini okur
Parametreler :
- MCP4561_ADRESI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
Kullanım Şekli :
MCP4561_STATUS_OKUMA(0);
Geri Bildirim :
- Status registerinden okunan veriyi geri döndürür
– MCP4561_VERI_YAZMA Fonksiyonu
Fonksiyon : unsigned char MCP4561_VERI_YAZMA(unsigned char MCP4561_ADRESI,unsigned char RAM_ADRESI,unsigned int VERI)
Amacı : Seçilen hafıza adresine veri yazar
Parametreler :
- MCP4561_ADRESI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
- RAM_ADRESI : Okuma yapılacak hafıza adresi yazılır
- VERI : Yazılacak veriler bu değişkene yüklenir( wiper alanlarına yazma yapılacaksa 0-256 arası değer yazılabilir)
Kullanım Şekli :
MCP4561_VERI_YAZMA(0,5,125);
Geri Bildirim :
- 1 gelirse işlem başarılı demektir.
– MCP4561_DIRENC_DEGERI_YAZ_GECICI Fonksiyonu
Fonksiyon : void MCP4561_DIRENC_DEGERI_YAZ_GECICI(unsigned char MCP4561_ADRESI,unsigned int DIRENC_DEGERI_OHM)
Amacı : Girilen direnç değerini ( ohm olarak ) geçici direnç bölgesi yazar
Parametreler :
- MCP4561_ADRESI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
- DIRENC_DEGERI_OHM : Ayarlanmak istenen direnç değeri ohm olarak yazılır
Kullanım Şekli :
unsigned char MCP4561_DIRENC_DEGERI_YAZ_GECICI(0,39);
Geri Bildirim : Geri bildirim yapmaz
– MCP4561_DIRENC_DEGERI_YAZ_KALICI Fonksiyonu
Fonksiyon : void MCP4561_DIRENC_DEGERI_YAZ_KALICI(unsigned char MCP4561_ADRESI,unsigned int DIRENC_DEGERI_OHM)
Amacı : Girilen direnç değerini ( ohm olarak ) kalıcı direnç bölgesi yazar
Parametreler :
- MCP4561_ADRESI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
- DIRENC_DEGERI_OHM : Ayarlanmak istenen direnç değeri ohm olarak yazılır
Kullanım Şekli :
unsigned char MCP4561_DIRENC_DEGERI_YAZ_KALICI(0,39);
Geri Bildirim : Geri bildirim yapmaz
WIPER Fonksiyonları
– MCP4561_WIPER_BASLANGIC Fonksiyonu
Fonksiyon : unsigned char MCP4561_WIPER_BASLANGIC(unsigned char MCP4561_ADRESI)
Amacı : Wiper ayarı yapmak için ilk olarak bu fonksiyon çağırılır
Parametreler :
- MCP4561_ADRESI : Okuma yapılacak MCP4561 adresi yazılır. A0 pinine göre 0 yada 1 değeri alır
Kullanım Şekli :
MCP4561_WIPER_BASLANGIC(0);
Geri Bildirim :
- 0 gelirse işlem başarısızdır
– MCP4561_WIPER_ARTTIRMA Fonksiyonu
Fonksiyon : unsigned char MCP4561_WIPER_ARTTIRMA()
Amacı : Wiper ı bir kademe arttırır
Parametreler : Bulunmuyor
Kullanım Şekli :
MCP4561_WIPER_ARTTIRMA();
Geri Bildirim :
- 1 gelirse işlem başarılıdır.
– MCP4561_WIPER_AZALTMA Fonksiyonu
Fonksiyon : unsigned char MCP4561_WIPER_AZALTMA()
Amacı : Wiper ı bir kademe azaltır
Parametreler : Bulunmuyor
Kullanım Şekli :
MCP4561_WIPER_AZALTMA();
Geri Bildirim :
- 1 gelirse işlem başarılıdır.
– MCP4561_WIPER_SONLANDIR Fonksiyonu
Fonksiyon : void MCP4561_WIPER_SONLANDIR()
Amacı : Wiper ayar işlemini sonlandırır
Parametreler : Bulunmuyor
Kullanım Şekli :
MCP4561_WIPER_SONLANDIR();
Geri Bildirim : Geri bildirimde bulunmaz
Fonksiyonların Uygulanması
- Uygulama kısmında direnç değeri yazma ve arttırmayı göreceğiz.
- Burada önemli birkaç nokta bulunmaktadır.
- Kalıcı wiper bölümüne yazılan değer arttırılıp azaltılamaz sadece geçici wiper bölümündeki değer arttırılıp azaltılabilir
- Eğer enerji kesilmeden kalıcı bölüme yazdığımız değer geçerli olsun istiyorsan bu değeri aynı zamanda geçici bölüme de yazmalıyız.
//I2C protokolü için pin ayarlamaları sbit I2C_SDA at RB6_bit; sbit I2C_SCL at RB7_bit; sbit I2C_SDA_VERI at LATB6_bit;//27.01.2019 güncellemesi ile eklendi sbit I2C_SDA_Direction at TRISB6_bit; sbit I2C_SCL_Direction at TRISB7_bit; void main() { unsigned int deger=0; CMCON=7; MCP4561_DIRENC_DEGERI_YAZ_KALICI(0,5000);//5000 ohm yani 5k deger=MCP4561_DIRENC_DEGERI_OKU(0,2); MCP4561_DIRENC_DEGERI_YAZ_GECICI(0,deger); }
- Yukarıdaki örneği açıklamak gerekirse;
- İlk olarak kalıcı wiper alanına 5k değerini yazdırdık . Ancak enerji kesilmedikçe değer 5 k olmayacaktır.
- Bunu sağlamak için aynı değer geçici wiper bölümüne de yazmamız gerektiğinden devamında değer geçici wiper alanına yazıldı
- Direnç değeri okumanın anlamı ise daha önceden kalıcı wiper bölümüne veri yazılmış ise bunu alıp okumaktır.
//I2C protokolü için pin ayarlamaları sbit I2C_SDA at RB6_bit; sbit I2C_SCL at RB7_bit; sbit I2C_SDA_VERI at LATB6_bit;//27.01.2019 güncellemesi ile eklendi sbit I2C_SDA_Direction at TRISB6_bit; sbit I2C_SCL_Direction at TRISB7_bit; void main() { unsigned int deger=0; CMCON=7; MCP4561_DIRENC_DEGERI_YAZ_KALICI(0,5000); deger=MCP4561_DIRENC_DEGERI_OKU(0,2); MCP4561_DIRENC_DEGERI_YAZ_GECICI(0,deger); MCP4561_WIPER_BASLANGIC(0); MCP4561_WIPER_ARTTIRMA(); MCP4561_WIPER_ARTTIRMA(); MCP4561_WIPER_SONLANDIR(); deger=MCP4561_DIRENC_DEGERI_OKU(0,0); MCP4561_DIRENC_DEGERI_YAZ_KALICI(0,deger); }
- Yukarıda bu sefer geçici wiper alanındaki 5k değeri 2 kez arttırıldı yani 5000+39+39 ohm oldu.
- Ardından işlem sonlandırıldı fakat bu arttırmanın kalıcı olması için bu sefer geçici bellekten okuma yapıldı ve kalıcı wiper alanına yazıldı böylece yapılan 2 kademe arttırım işlemi kalıcı hale gelmiş oldu.
- Yukarıda değer 5,04k olarak görülmektedir. 5,04×1000=5040 ohm
- 2 kademe arttırdık yani 39×2=78 ohm
- 5040+78 = 5118 ohm / 1000 = 5,11 k oluyor , zaten ölçü aleti de bu sonucu vermektedir.
Çalışma Videosu
Sonuç
- MCP4561 in çalışma sistemini öğrendiniz. Artık kendi kodlarınızı yazabilir yada benim kütüphanemi kullanabilirsiniz.
- MCP4561 bir çok alanda kullanılabilir özellikle kalibrasyon gerekli olan yerlerde oldukça faydalı olacaktır ayrıca ekran parlaklığı gibi ayarları devre kutusunu açmadan yapabilirsiniz.
- Bu kütüphane I2C ile yazıldığından benim yazmış olduğum I2C yi indirip projenize dahil etmeniz gerekmektedir.
- Sorularınızı “Soru-Cevap” Forumuna sorabilirsiniz.
Kütüphane Dosyaları
- MCP4565 Dijital Trimpot MikroC Kütüphanesi- .mcl – (ÜCRETSİZ)
Bağlantıyı Görmek İçin Giriş Yapın ya da Ücretsiz Üye Olun
- I2C MikroC Kütüphanesi – .mcl – (ÜCRETSİZ)
Bağlantıyı Görmek İçin Giriş Yapın ya da Ücretsiz Üye Olun
Yararlanılan Kaynaklar
This post is also available in: