Ahmet
S38>S85
- Katılım
- 31 Mayıs 2021
- Mesajlar
- 6,094
Bunu bir formülü var.Eee o zaman 1023 ün kaç volta tekabul ettiğini nasıl anlayacağım?
GİRİLEN ADC x (ÇALIŞMA VOLTAJI / TOPLAM ADC)
YANİ SENİN DAC İÇİN HESAP YAPARSAK
1023 x (5 / 4096)
Bunu bir formülü var.Eee o zaman 1023 ün kaç volta tekabul ettiğini nasıl anlayacağım?
Yani yaklaşık olarak 1.24v okumam gerekiyor. Yarın yapayım bu testleri.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)
Benim salak KiCad 6.0 açmıyor senin şemaları.Yani yaklaşık olarak 1.24v okumam gerekiyor. Yarın yapayım bu testleri.
6.0.3 e güncelle. Normalde açması lazım aslında.Benim salak KiCad 6.0 açmıyor senin şemaları.
Açabilirsem yazacağım hangi bus'a bağlı hangi atamalar yapılacak.
PCB'yi açtı bir şekilde yetti bana zaten pinleri görsem yeterdi.6.0.3 e güncelle. Normalde açması lazım aslında.
#define CS 17
void setup(){
pinMode(CS, OUTPUT);
SPI.setTX(19);
SPI.setSCK(18);
SPI.begin();
}
O zaman 1000mV 1V yapıyor abi.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.
Abi burada işin içine op-amp da giriyor.O zaman 1000mV 1V yapıyor abi.
Hesaplayamadım. O zaman ben 12V çıkış almak istersem hangi rakamı göndermem gerek?
Hee doğru. Birde onu hesaplaması var.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.
o kadar matematik çalıştım ki son 1 haftada kafam durulmadan beni zorlayacak bir projeyi sınavdan sonra yapmazssam birdaha yapamam.Hee doğru. Birde onu hesaplaması var.
Ara verdiğim için mi bilemiyorum ama kafam basmıyor bir türlü.
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İ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ı.
Demek adamlar bu nedenle 4.096 referans satıyorlar ...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.
İ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ı.
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.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ı.
// 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
}
@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?
17899 eklentisine bak
R30'u söküp 0R Jumper direnç taktım. Şuanda 4.096v alabiliyorum referanstan.Hmm DAC demekki yüklüyor referansı. O zaman R30 u kaldır kısa devre et.
voltaj = voltaj * 100;
şeklinde değer gönderdim.