MCP4922 DAC Kullanımı

Bunu bir formülü var.

GİRİLEN ADC x (ÇALIŞMA VOLTAJI / TOPLAM ADC)
YANİ SENİN DAC İÇİN HESAP YAPARSAK
1023 x (5 / 4096)
Yani yaklaşık olarak 1.24v okumam gerekiyor. Yarın yapayım bu testleri.
 
Her adım referans voltajının olabilecek değişik çıkış sayısına bölümü kadardır. Referans voltajı 4.096 V, DAC da 12 bit olduğu için 4096 farklı çıkış üretebiliyor. O halde her bit 1 mV gibi bir değere karşılık geliyor.
 
6.0.3 e güncelle. Normalde açması lazım aslında.
PCB'yi açtı bir şekilde yetti bana zaten pinleri görsem yeterdi.


SETUP:
#define CS 17
void setup(){
    pinMode(CS, OUTPUT);
    SPI.setTX(19);
    SPI.setSCK(18);
    SPI.begin();
}

Eğer bu ayarlar yapılırken çalışmazssa SPI.begin(); satırı SPI.setTX(19); üstüne gelsin.
 
Bu adam transfer için uint8 ve uint16 kullanmış bizimde bunlara uyarak mı yazmamız gerek acaba programı.

earle:
    byte transfer(uint8_t data) override;
    uint16_t transfer16(uint16_t data) override;
 
Her adım referans voltajının olabilecek değişik çıkış sayısına bölümü kadardır. Referans voltajı 4.096 V, DAC da 12 bit olduğu için 4096 farklı çıkış üretebiliyor. O halde her bit 1 mV gibi bir değere karşılık geliyor.
O zaman 1000mV 1V yapıyor abi.
Hesaplayamadım. O zaman ben 12V çıkış almak istersem hangi rakamı göndermem gerek?
 
Abi burada işin içine op-amp da giriyor.
Yani bizim dac'dan gönderiğimiz voltaj op-amp kazancına göre çıkış yapılıyor.
Hee doğru. Birde onu hesaplaması var.
Ara verdiğim için mi bilemiyorum ama kafam basmıyor bir türlü.
 
İyiki benim gibi her yere sigorta koymamışssın abi.

Girişteki 10000uF kondansatör ilk şarj anında sigortayı attırabilirdi.
@taydin abi benden daha çok görmüştür çok güçlü ses amfileri ilk fişe takılırken özellikle evlerde sigorta attırabiliyor sanırım bunun sebebi içindeki kondansatörlerin aniden şarj olması.
 
Hee doğru. Birde onu hesaplaması var.
Ara verdiğim için mi bilemiyorum ama kafam basmıyor bir türlü.
o kadar matematik çalıştım ki son 1 haftada kafam durulmadan beni zorlayacak bir projeyi sınavdan sonra yapmazssam birdaha yapamam.
çoğu zaman projeye ara verdiğimde yeni özellikler düşünüp motive edityorum kendimi ben sana da tavsiye ederim abi özellik ekleyelim
 
İyiki benim gibi her yere sigorta koymamışssın abi.

Girişteki 10000uF kondansatör ilk şarj anında sigortayı attırabilirdi.
@taydin abi benden daha çok görmüştür çok güçlü ses amfileri ilk fişe takılırken özellikle evlerde sigorta attırabiliyor sanırım bunun sebebi içindeki kondansatörlerin aniden şarj olması.
Benim amfiyi de on - off yaparken hoparlörlerden çıt çıt ses geliyor. Sanırsın içinde entegre filan patlıyor. Bu projeden sonra eğer trafo sardırabilirsem amfiye girişeceğim, sardıramazsam elektronik yüke başlayacağım. Çok iş var sırada :)
 
Her adım referans voltajının olabilecek değişik çıkış sayısına bölümü kadardır. Referans voltajı 4.096 V, DAC da 12 bit olduğu için 4096 farklı çıkış üretebiliyor. O halde her bit 1 mV gibi bir değere karşılık geliyor.
Demek adamlar bu nedenle 4.096 referans satıyorlar ...
 
İyiki benim gibi her yere sigorta koymamışssın abi.

Girişteki 10000uF kondansatör ilk şarj anında sigortayı attırabilirdi.
@taydin abi benden daha çok görmüştür çok güçlü ses amfileri ilk fişe takılırken özellikle evlerde sigorta attırabiliyor sanırım bunun sebebi içindeki kondansatörlerin aniden şarj olması.

Bizim millet faydası olacak düşüncesiyle her zaman filtre kondansatörüne abanırlar ondan atıyordur :) Filtre kondansatöründe optimum bir değer seçmek lazım yoksa faydası olmadığı gibi boşuna hem trafoyu yorar hem de köprü diyotları.
 
Bizim millet faydası olacak düşüncesiyle her zaman filtre kondansatörüne abanırlar ondan atıyordur :) Filtre kondansatöründe optimum bir değer seçmek lazım yoksa faydası olmadığı gibi boşuna hem trafoyu yorar hem de köprü diyotları.
QSC diye bir marka amfi vardı tanıdığımızın düğün salonunda ne zaman fişe taksan sigorta atardı modelini tam hatırlamıyorum yerli veya yabancı onuda bilmiyorum.

Sigorta attıkça bunlar izmirde 1. onur iş hanında alt katta bir ses cihazları tamircisi var oraya gönderiyor bunlarda biz bakımlarını yaptık diyip parasını alıyor takıyorlar yine atıyor.

En son bir elektirkçi çağırıyorlar bizim tesissat kısa devreymiş diye:katil1: elektrikçi'de 8A sigortayı 63A ile değiştirip gidiyor:katil1:
Sorun falan kalmıyor. Tabii bağlı cihazlarda kısa devre olursa cihaz üstünden 63A geçip atar mı sigorta bilmiyorum.
 
@taydin
Şimdi 4.096 referans entegresini ölçtüm. Çıkışı 4.096 ama çıkış bacağına koyduğumuz direnç ve kondansatör sayesinde 3.6v a düşüyor. DAC'e de 3.6v gidiyor. Bu normal mi?

mcp1501.png
 
Şimdi aşağıdaki kodları yalın olarak picoya yükledim.
MCP1501 referans çıkışım 3.6V
DAC'ın A çıkışına 1023 değeri gönderdim ve karşılık olarak 0.9V aldım.
DAC'ın B çıkışına 2046 değeri gönderdim ve karşılık olarak 1.8V aldım.

Bu durumda DAC'a 4096 değeri gönderirsem 3.6V alabileceğim görünüyor.
Bu referans çıkışının 3.6V olması bir sorun teşkil etmiyorsa şuanda DAC'ı sağlıklı bir şekilde kullanabiliyorum.
Geriye kalıyor opamp kazançlarından sonra her adımda 0.1V alabilmek için nasıl bir işlem yapmam gerektiği meselesi.

C++:
// include the library code:
#include <SPI.h>

// Set Constants
const int dacChipSelectPin = 17;      // pin 9'u DAC için çip seçimi olarak ayarlayın:

// Start setup function:
void setup() {
  pinMode (dacChipSelectPin, OUTPUT);
  // set the ChipSelectPins high initially:
  digitalWrite(dacChipSelectPin, HIGH);
  // initialise SPI:
  SPI.begin();
  SPI.setTX(19);
  SPI.setSCK(18);
  
  SPI.setBitOrder(MSBFIRST);         // Kesinlikle gerekli değil, sadece emin olmak için.
  SPI.setDataMode(SPI_MODE0);        // Kesinlikle gerekli değil, sadece emin olmak için.
} // End setup function.

// Start loop function:
void loop() {
  setDac(1023, 0);
  setDac(2046, 1);
}// End of loop function.


// DAC'yi ayarlama işlevi, Gönderilecek Değeri ve kullanılacak DAC kanalını kabul eder.
void setDac(int value, int channel) {
  byte dacRegister = 0b00110000;                        // Varsayılan DAC kayıtlarını ayarlar B00110000, 1. bit DAC'yi seçer, A=0 B=1, 2. Bit giriş Tamponunu atlar, 3. bit çıkış kazancını 1x'e ayarlar, 4. bit aktif düşük kapatmayı kontrol eder. LSB burada önemsizdir.
  int dacSecondaryByteMask = 0b0000000011111111;        // 12 bitlik değer olan B00000000111111111'in son 8 bitini izole eder.
  byte dacPrimaryByte = (value >> 8) | dacRegister;     //Değer maksimum 12 Bit değerdir, Birincil Bayta giriş için değerden ilk 4 MSB'yi almak için 8 bayt sağa kaydırılır, ardından da Register ile BORed
  byte dacSecondaryByte = value & dacSecondaryByteMask; // 8 LSB'yi izole etmek ve onu tek bir bayta indirmek için 12 bit değerini karşılaştırır.
  // Ayarlanacak DAC'yi belirlemek için birincil Baytta MSB'yi ayarlar, DAC A=0, DAC B=1
  switch (channel) {
    case 0:
      dacPrimaryByte &= ~(1 << 7);
      break;
    case 1:
      dacPrimaryByte |= (1 << 7);
  }
  noInterrupts(); // DAC'ye veri göndermeye hazırlanmak için kesintileri devre dışı bırakın
  digitalWrite(dacChipSelectPin, LOW); // DAC'yi seçmek için Chip Select pinini alçaltın:
  SPI.transfer(dacPrimaryByte); //  Birincil Baytı gönder:
  SPI.transfer(dacSecondaryByte);// İkincil Baytı gönder
  digitalWrite(dacChipSelectPin, HIGH); // DAC'nin seçimini kaldırmak için Chip Select pinini yükseğe alın:
  interrupts(); // Kesintileri etkinleştir
}
 
Hmm DAC demekki yüklüyor referansı. O zaman R30 u kaldır kısa devre et.
R30'u söküp 0R Jumper direnç taktım. Şuanda 4.096v alabiliyorum referanstan.

Voltaj değişkenime test için voltaj = voltaj * 100; şeklinde değer gönderdim.
Ekrandan 5.00v gönderdiğimde DAC çıkışını 0.500V olarak okuyorum, Opampdan sonraki ana çıkışı ise 0,680V okuyorum.

DAC çıkışlarını ters bağlantı yapmışım. Sistemden Amper ayarladığımda Voltaj değişiyor, Voltaj ayarladığımda Amper değişiyor.
Bunu yazılım da çözmeye çalışacağım. Olmazsa DAC çıkışlarını yer değiştirip kartı yeniden basabilirim.

Şimdi DAC'a manuel olarak 4096 değer gönderip çıkışta kaç volt okuyabileceğime bakacağım.
 

Çevrimiçi personel

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,892
Mesajlar
100,583
Üyeler
2,494
Son üye
yasin533

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.
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)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Back
Top