taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
24,153
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
6,961
Mesajlar
118,893
Üyeler
2,826
Son üye
CortexPhoton

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top