This post is also available in: English

forum-banner



Bağış yaparak bilimsel çalışmalarıma destek olabilirsiniz. Bilime Destek Ol
Forum Navigasyonu
Forum içerik haritası - Buradasınız:ForumBilim: YazılımMCP4013 KONTROLÜ HAKKINDA
Please or Kayıt ol to create posts and topics.

MCP4013 KONTROLÜ HAKKINDA

Merhaba Arkadaşlar,
Bir devremdeki analog potansiyometreyi dijital potansiyometre ile değiştirme uygulamasında MCP4013 kullandım. MCP4013 ün kontrolü iki pin (CS ve U/D) üzerinden, U/D seri haberleşme ile yapılabiliyor. Cihazın açıklamasında net bir şekilde nasıl kontrol edileceği çizilen diyagramlar ile de anlatılıyor ama ben kontrolde sıkıntı yaşadım ve siz de aynı sıkıntıyı yaşamadan amerikayı tekrar keşfetmek zorunda kalmadan direk bilgiyi kullanabilin diye yazdığım kod parçasını da paylaşmak istiyorum. Ben örnek kodu hiçbir yerde bulamadığım için 2 günüm boşu boşuna gitti.  Sonuçta bilgi paylaşıldıkça büyür ve paylaşılırsa  değerlidir.

CS pini LOW olduğu sürece haberleşme yapılabilir. CS pini LOW yapıldığı sırada U/D pininin durumuna göre direnç değeri artıyor veya azalıyor.

CS pini LOW pozisyonuna alındığında U/D pini HIGH pozisyonunda ise bundan sonra U/D pinini yapacağı her kare dalganın yükselen kenarı ile MCP4013 entegremizin direnç değeri 1 birim artacaktır.

Eğer bunun tam tersi durumu söz konusu ise yani yine CS pini LOW pozisyonunda ama bu sefer U/D pini LOW pozisyonunda ise bundan sonraki her kare dalganın yükselen kenarı ile entegremizin direnç değeri 1 birim azalacaktır.

 

Örnek kod parçası şöyle (CCS C deyazılmıştır);

 

while(TRUE){

if(input (UP_BUTTON))     // Arttır tuşuna basılırsa
{
output_high(U_D);         //U/D pinini HIGH yap
delay_ms(5);
output_low(CS);           //CS pinini LOW yap
do{
delay_ms(100);
output_low(U_D);          //U/D pinini LOW yap
delay_us(10);             //kare dalga genişliği 10 microsaniye
output_high(U_D);         //U/D pinini HIGH yap(direnç 1 artar)
} while (input(UP_BUTTON)); //butona basıldığı sürece devam et

output_high(CS);           //CS'yi HIGH yap.haberleşmeyi durdur
}

if(input(DW_BUTTON) == 1)   // Azalt tuşuna basılırsa
{
output_low(U_D);            //U/D pinini LOW yap
delay_ms(5);
output_low(CS);             //CS pinini LOW yap
do{
delay_ms(100);
output_high(U_D);       //U/D pinini HIGH yap (direnç 1 azalır)
delay_us(10);            //kare dalga genişliği 10 microsaniye
output_low(U_D);         //U/D pinini LOW yap
} while (input(DW_BUTTON)); //butona basıldığı sürece devam et

output_high(CS);        //CS'yi HIGH yap.haberleşmeyi durdur

}

 

 

Umarım faydası olur.

İyi çalışmalar

 

 

 

 

Merhaba

Katkınız için teşekkürler.

İyi Çalışmalar


İletişim için sadece soru-cevap forumunu kullanınız