taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
21,796
Raspberry pi pico ile MCP4922 DAC nasıl kullanılır bakalım ve performans ölçümleri yapalım.

MCP4922, SPI arabirimine sahip 12 bitlik bir DAC. 5V besleme gerilimi ile çalışıyor. Bu DAC için referans voltaj kaynağı olarak MCP1501-40 kullanacağız. Bu referans kaynağının çıkış voltajı 4.096 V ve başlangıç toleransı da %0.1. Önce bu voltaj referansını bread board'a bağlayabilmek için DIP adaptörüne lehimleyelim.

IMG_20220704_194246.jpg
 
Şimdilik sadece referans entegresinin devresini kurdum. Referans kaynağa çok yakın olarak da 1 μF dekuplaj kondansatörü koydum. SHDN pinini pasif hale getirdim ve bütün GND pinlerini şaseye bağladım.

Burada önemli bir ayrıntı var. MCP1501 in üç tane GND ayağı var. Bunların aynı olduğunu varsayıp sadece bir tanesini şaseye bağlama hatasını yapmamak lazım. Zaten multimetre ile ölçünce de bu üç GND nin birbirine içeride bağlı olmadığını görüyoruz.

IMG_20220704_195359.jpg
 
5 V besleme voltajını uyguluyorum, ne olur ne olmaz düşüncesiyle de akımı 10 mA ile sınırlandırıyorum. Referansın akım gereksinimi 140 μA, sıkıntı olmaması lazım.

Beslemeyi uygulayınca çıkış voltajını 4.09137 V olarak ölçüyorum. Datasheet'te belirtilen tolerans olan %0.1 için hesap yaparsak, minimum 4.0919 V ölçmem gerekirdi. Demekki bu referans %0.1 lik değil. Bu direnc.net ten almıştım. Orada 4.091 - 4.10001 demiş. Ama bir datasheet linki koymamışlar. Microchip'in bu referans için verdiği datasheet'e bakınca bu tolerans dışı.

 
Özdisan'dan aldığım aynı referans entegresini denedim, onda da 4.09039 V ölçtüm. Bu da tolerans dışı ...


Üstelik özdisan'da datasheet linki de var ve linke bakınca açıkça belirtiyor ilk toleransın %0.1 olduğu.
 
Bir süre bekletip öyle deneyeyim diyorum ama, zaten topu topu 140 μA akım çekiyor, ısınma durumu falan yok. Ama gene de bekleteyim bakalım.
 
Çok ilginç. Bende özdisandan aldım, bendeki tam 4096 veriyor.
 
Şimdi bir süre çalıştıktan sonra tekrar ölçtüm. Şu anda 4.09442 V. Çıkışa 1 k yük bağladım biraz daha arttı. Şu anda 4.09449 V larda duruyor, değişkenlik çok az.

Zaten ilk tolerans değerinin ne olduğu çok önemli değil. Önemli olan uzun dönemde ne kadar stabil olduğu.
 
Datasheet'te çıkış voltajı limitlerinin belli bir süre bekledikten sonra ölçüleceğine dair bir bilgi de yok. O yüzden ben buna daha ilk power verdiğim anda %0.1 tolerans içinde kalmasını beklerdim.
 
Neyse, şimdi DAC bağlantılarını gerçekleştirelim. SPI bağlantısı olarak da pico'nun varsayılan SPI portunu kullanacağız yani 16, 17, 18, 19 numaralı pinleri. Bir de LDAC bağlantısı için boş bir pin kullanacağız. Ben 15 i kullandım.

IMG_20220704_220251.jpg
 
Devre kurulumunu bir bütün olarak test etmeden önce, sadece picoyu kullanarak SPI portlarından veri yazdım ve bu verilerin gerçekten çıktığını teyit ettim.

C++:
#include <SPI.h>

#define PIN_SPI_CS 17
#define PIN_SPI_SCK 18
#define PIN_SPI_TX 19

void setup()
{
  SPI.setCS(PIN_SPI_CS);
  SPI.setSCK(PIN_SPI_SCK);
  SPI.setTX(PIN_SPI_TX);
  SPI.begin(true);
}

void loop()
{
  /* milivolt */
  unsigned int va = 1000;
  unsigned int vb = 1000;

  while (1)
  {
    SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));

    /* A ve B cikislarini yaz */
    SPI.transfer16(0x3000 | va);
    SPI.transfer16(0xb000 | vb);

    SPI.endTransaction();

    delay(100);
  }
}

a.png
 
Sonra da pico SPI larını DAC'a bağladım. DAC data registerlerine 1000 yazıp çıkışı ölçünce, iki kanal arasında bir fark görüyorum.

A çıkışı 1.0001 V
B çıkışı 0.9981 V
 
DAC data registerlerine 0 yazıp çıkışı ölçünce, iki kanal eşit denebilir

A çıkışı 0.0015 V
B çıkışı 0.0016 V
 
DAC data registerlerine 4080 yazıp çıkışı ölçünce

A çıkışı 4.0749 V
B çıkışı 0.0752 V
 
DAC data registerlerine 2000 yazıp çıkışı ölçünce

A çıkışı 1.9950V
B çıkışı 1.9967 V
 
Bu şekilde bütün dijital kodlar için bir lineerlik hatası grafiği çıkarılabilir, ama genel olarak konuşursak, dijital koda göre değişen bir lineerlik hatası ile karşı karşıyayız. Bazı kodlarda bu hata 5 mV olurken bazı kodlarda hata 2 mV da kalıyor. En kötü durumda bu hata nedir anlamak için grafiği çıkarmak gerekir.
 
Ha tamam unutmuşum onu. Evet SPI sinyalleri 3.3 V şu anda. Çalışıyor sorunsuz ama olması gereken bu değil tabi.
 
Ha tamam unutmuşum onu. Evet SPI sinyalleri 3.3 V şu anda. Çalışıyor sorunsuz ama olması gereken bu değil tabi.
Biz gökhan abiye lojik shifter yaptık abi bunu bir sorun olarak görüp. benim için hala sorun en doğrusu optokuplor ile veya lojik shifter kullanarak yapmak. Ama nasıl tepki veriyor anlamadım datasheetde 4 volt diye hatırlıyorum yüksek seviye olarak gördüğü voltaj
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,837
Mesajlar
99,546
Üyeler
2,479
Son üye
yiyehuoxing32

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top