Elektronik Yük Projesi Analog Bölüm

İki tane 8 bitlik DAC kullanarak 16 bitlik bir DAC yapmak konusu takılıyor aklıma akşam mesajları okuduğumdan beri.

ESP32'de iki DAC kanalı var. İlk DAC 16X kazançla, ikinci DAC 1/16 kazançla çalışsa sonra bir opamp ile bunların çıkışını toplasak mantıklı olur mu sizce ? Tabi bir de karakterize edip kalibre edeceğiz yazılımla her birini ayrı ayrı.
Simulasyonda denemek lazım. 16x 1/16 kafamda canlanmadı. Alternatif olarak dac için r-2r merdiveninin pwm ile hibrit olarak kullanıldığını bir projede görmüştüm. Bende bir ara r-2r ile 8 bit dac kombine olurmu onu deneyeceğim..
 
Esp32 seçimine ben de katılıyorum ama ADC ve DAC harici eklense ve SPI üzerinden esp32 ile kontrol olsa süper olur
 
ESP32 fikrine katılıyorum. Dış sistemlere entegrasyon için ayrıca bir çözüm üretmeye gerek kalmamış olur.

UART artık demode bence. WiFi, BT, BLE ve UART elimizin altında olur. Cihaz üzerine konfigürasyon için bir web sayfası bile koyabiliriz. Kolay entegrasyon için MQTT, SCPI ve REST API desteklenebilir. Böylece ayrı bir PC uygulamasına da gerek kalmazyabilir.

Bunun yanında, benzer bir ticari yükün SCPI arayüz taklit edilirse onu destekleyen tüm uygulamalara da sürücü hazır olmuş olur.

ESP32 fikri bana sıcak geliyor. Ancak önce giriş çıkış I/O sayılarını belirleyip ona göre ortak bir seçim yapalım. Her koşulda mcu işi bence 10$ altında kalmalı...
 
harici DAC ve ADC kullanacaksak her denetleyici olur üstünde I2C ve SPI barındıran ESP32 bu noktada avantajı dahili olarak üstünde Wi-Fi ve BT bulunması.

Ama projeyi STM ile yapmak forumdakilere gerçekten bir ARM kullanma deneyimi sunar ARM kullanamk isteyip erteleyenler için bir fırsat olur.
 
Simulasyonda denemek lazım. 16x 1/16 kafamda canlanmadı. Alternatif olarak dac için r-2r merdiveninin pwm ile hibrit olarak kullanıldığını bir projede görmüştüm. Bende bir ara r-2r ile 8 bit dac kombine olurmu onu deneyeceğim..

Haklısınız o kısmı çok net yazmamışım. Şöyle ki:

Normalde bir kanal DAC 3.3V üretebiliyor ve şimdilik DAC'ımızın düzgün ve lineer çalıştığını varsayalım.
DAClardan birincisinin çıkışını 16 kazançlı bir opamptan geçirdiğimizi varsayalım. 0-52.8V aralığında ve 207 mV adımlarla gerilim üretecek.
İkincisi ise 1/16 kazançlı bir opamptan geçecek ve 0-206mV aralığında ve 0.88 mV adımlarla gerilimüretecek.
Budurumda ikisini topladığımızda 0-53V aralığında istediğimiz herhangi bir voltajı 0.88mV hassasiyetle üretmek mümkün olacak. En azından kağıt üzerinde.

Eğer derseniz ki 0-53V gerekli değil, 0-24 yeter o durumda kazançlar 8X ve 1/32X olacak, 0-26.5V aralığında 0,44mV hassasiyetle voltaj oluşacak. Negatif beslememiz de olduğu varsayımıyla rail-to rail opamp da şart olmayabilir.
 
@ozkarah 52v gerilimin oluşturulmasına gerek var mı? DAC ile mosfeti sürecek gaye(pot yerine) voltajı sağlamayavçcak mıyız? Bubda en fazla 5-5.5v yapar.
 
Haklısınız o kısmı çok net yazmamışım. Şöyle ki:

Normalde bir kanal DAC 3.3V üretebiliyor ve şimdilik DAC'ımızın düzgün ve lineer çalıştığını varsayalım.
DAClardan birincisinin çıkışını 16 kazançlı bir opamptan geçirdiğimizi varsayalım. 0-52.8V aralığında ve 207 mV adımlarla gerilim üretecek.
İkincisi ise 1/16 kazançlı bir opamptan geçecek ve 0-206mV aralığında ve 0.88 mV adımlarla gerilimüretecek.
Budurumda ikisini topladığımızda 0-53V aralığında istediğimiz herhangi bir voltajı 0.88mV hassasiyetle üretmek mümkün olacak. En azından kağıt üzerinde.

Eğer derseniz ki 0-53V gerekli değil, 0-24 yeter o durumda kazançlar 8X ve 1/32X olacak, 0-26.5V aralığında 0,44mV hassasiyetle voltaj oluşacak. Negatif beslememiz de olduğu varsayımıyla rail-to rail opamp da şart olmayabilir.
Ben DAC çıkışını 0-Vref aralığında düşünüyordum. Tasarladığımız analog devre şönt direnciyle kıyaslıyor referans voltajını ve akımı limitliyor. Eğer kademeli olarak düşünülürse, düşük akımlarda daha fazla çözünürlük için DAC çıkışını voltaj bölücüyle 0-1V aralığıı ve hatta daha azına ölçekleyebliriz.
Bence DAC kullanmadaki en büyük sıkıntıı DC ofset sorununu çözmek olacak. 1mV sapma 10mA akım hatasına sebep olur çünkü. Gerçi dinamik olarak mcu ile referans kontrolü de yapılabilir tabii
 
@ozkarah 52v gerilimin oluşturulmasına gerek var mı? DAC ile mosfeti sürecek gaye(pot yerine) voltajı sağlamayavçcak mıyız? Bubda en fazla 5-5.5v yapar.
Burada 0-nV değerindeki n'in bir önemi yok. Amacımı anlatmak için yazdım. İhtiyaç duyulan aralığa göre revize edilebilir oranlar. Voltaj aralığı azaldıkça hassasiyet artar.

Asıl amaç, iki tane 8 bit DAC ile 16 bit hassasiyet elde edilmesi pratikte mantıklı olur mu?
 
Burada 0-nV değerindeki n'in bir önemi yok. Amacımı anlatmak için yazdım. İhtiyaç duyulan aralığa göre revize edilebilir oranlar. Voltaj aralığı azaldıkça hassasiyet artar.

Asıl amaç, iki tane 8 bit DAC ile 16 bit hassasiyet elde edilmesi pratikte mantıklı olur mu?
Anladım hocam. Birler basamağı onlar basamağı gibi, DAC'in biri diğerinin 256 katı adımlarla yükselecek ve ikisini opampla toplayacağız. Bence çalışır, 2 biti uygulama kusurlarına feda etsek 14 bit de gani gani yeter. Ama DAC'lar birbirine eş mi denemek lazım. Hem ESP32'ye hakimsin hem de bunu ölçecek ekipmanın kralı sende :) . DAC çıkışı 0'ı görüyorsa çok iyi.
 
Bu mantıkla 3 opamp kullanmak lazım.

Belki şöylede olabilir. Dac. O-3v ise ikinci dac 3-6v ofsetlenir. Sonra toplayıcı ile toplanır. Opamp sayısı iki ye düşer.
 
Peki olayı geliştirelim. Dac 0-3v ise ve io 3v ise io voltajı ikiye katlanır. Toplayıcıya girilir. Başta io low olur. Dav 3v kadar 8 bit çalışır. Sonra io high olur. Dac tekrar sıfırdan 8 bit çalışır. Vites atmak gibi... Ama tek dac ile.
 
Bu mantıkla 3 opamp kullanmak lazım.

Belki şöylede olabilir. Dac. O-3v ise ikinci dac 3-6v ofsetlenir. Sonra toplayıcı ile toplanır. Opamp sayısı iki ye düşer.
Evet ama referans voltajını üreteceğimizden mosfet sayısından bağımsız, öyle değil mi? 10 mosfetin paralel olacağı bir yapı da olsa yine toplamda 3 opamp.
 
Ben de fakir ekipmanım ve fakir 16bit DAC'ımla :) eldeki imkanlarla bir deney tasarladım. Ut-139C'nin milivolt kademesiyle deneme yapacağım için deneyi buna göre tasarladım. Amacım bu HC595 dac'ın çıkışlarının sıcaklıkla ne kadar değiştiğini görmek. DAC çıkışı yaklaşık 1mV min ve VDD-10mV max civarı çıkış veriyor. önce dac değerini 0 yapıp 10 saniye ölçüm için bu değerde tutacağım. Sonra dac değerini 1000 yapıp 10 saniye ölçüm. benzer şekilde üst çıkış limitini de 64535 ve 65515 ile test edeceğim ve bunu entegreler soğukken ve üzerlerine 100 derece hava üflerken ayrı ayrı deneyeceğim. DAC voltaj regülatörüne uzak ve ayrı olduğundan besleme voltajı sıcaklıktan etkilenmeyecek.
kod
dac test:
#define LATCH_DDR    DDRB
#define LATCH_PORT   PORTB
#define LATCH_PIN   PINB
#define LATCH_PIN_NO  1
#define LATCH_H     (LATCH_PORT|=1<<LATCH_PIN_NO)
#define LATCH_L     (LATCH_PORT&=~(1<<LATCH_PIN_NO))
#define LATCH_L_H_L   LATCH_L;LATCH_H;LATCH_L

#define DATA_DDR    DDRB
#define DATA_PORT   PORTB
#define DATA_PIN    PINB
#define DATA_PIN_NO   3
#define DATA_H      (DATA_PORT|=1<<DATA_PIN_NO)
#define DATA_L      (DATA_PORT&=~(1<<DATA_PIN_NO))

#define CLOCK_DDR   DDRB
#define CLOCK_PORT    PORTB
#define CLOCK_PIN   PINB
#define clock_PIN_NO  5
#define CLOCK_H     (CLOCK_PORT|=1<<clock_PIN_NO)
#define CLOCK_L     (CLOCK_PORT&=~(1<<clock_PIN_NO))
#define CLOCK_L_H_L   CLOCK_L;CLOCK_H;CLOCK_L;

byte asama;
unsigned int dacVal,dacbuff;



void disp_sur (void);
void setup() {
  // put your setup code here, to run once:
  LATCH_DDR|=1<<LATCH_PIN_NO;
  // SPI pinlerini output ayarla
  DDRB|=1<<PINB3 | 1<<PINB5 | 1<<PINB2;
  LATCH_L;
  // SPI ayarı
  // en düşük değerli bit önce transfer edilir.
  // spi hızı maksimumda
  SPCR |= (1<<SPE)|(1<<MSTR)|(1<<DORD);
  SPSR |= 1<<SPI2X;
  sei();
  dacVal=0;delayMicroseconds(1);disp_sur();delayMicroseconds(1);disp_sur();
  delay(600);

}

void loop() {
  // put your main code here, to run repeatedly:
  dacVal=0;
  delayMicroseconds(1);
  disp_sur();
  delayMicroseconds(1);
  disp_sur();
  delay(10000);
 
  dacVal=1000;
  delayMicroseconds(1);
  disp_sur();
  delayMicroseconds(1);
  disp_sur();
  delay(10000);

  dacVal=65535;
  delayMicroseconds(1);
  disp_sur();
  delayMicroseconds(1);
  disp_sur();
  delay(10000);

  dacVal=64515;
  delayMicroseconds(1);
  disp_sur();
  delayMicroseconds(1);
  disp_sur();
  delay(10000);
 
 
 
}

void disp_sur (void)
{
  switch(asama)
  {
    case 0:
      dacbuff=dacVal;
      LATCH_L_H_L;// en son gönderilen disp değerini shift reg çıkışlarına yansıtma
      // en düşük bitten başlanıyor, gönderime alt 8 biti gönderme
      SPDR = 0xff&dacbuff;
      asama++;
      break;
    case 1:
      SPDR=dacbuff>>8;
      asama=0;
      break;
    default: asama=0;
  }
}

soğukken 1~77mV minimum, VDD-7~83mV maksimum olurken sıcakken minimum yine 1-77mV kaldı ama max voltaj VDD-30~100mV oldu.
maximum dac değerini düşürerek denedim 58000 için soğuk VDD-550mv sıcak VDD-580mV oldu. entegrelerin sıcaklıkları soğuk için 18C sıcak için 45C civarı. 5V aralıkta 25C sıcaklıkta 30mV maximım voltaj değiiyorsa, parmak hesabı voltage drift formulüm 0,006/25 derece ile derece başına çok az :) sapma oluyor. Saçma bir deney oldu galiba. Veriyi de disiplinli takip etmedim.

Yine de bunu kullanarak açılma anında DAC minimumunu 0V için kalibre etsem adc ile ölçerek, bence baya bi iş yapabilir bu. Kuracağım prototipte uygulayacağım. Yalnız bu DAC adımlamada zıplama yapıyor çıkış voltajında. Low pass filtreleyince geç dengeleniyor yavaş bir opamp buffer koysam ne olur acaba. Hem Korad güç kaynakları bu şekilde HC595'li r-2r dac ile çalışmıyor mu, onlar nasıl çözmüşler acaba.
 
Mcu pwm yada uc3845 ile pulse yapsanıza , çıkışı kısa devre edilmiş buck convertör gibi düşünelim. Hemde güçlü mosfet gerekmez ucuz olur yani.
 
Son düzenleme:
Mcu pwm yada uc3845 ile pulse yapsanıza , çıkışı kısa devre edilmiş buck convertör gibi düşünelim. Hemde güçlü mosfet gerekmez ucuz olur yani.
O da bir seçenek fakat onun da kendine göre dez avantajları var. Mesela dediğiniz şekilde olursa yüksek güçlü bir direnç gerekli. 100 ve üzeri watt.
onu da ayrıca soğutmak gerekiyor. Dahası darbeli/gürültülü bir yoldur ve bu iyi bir yükte istenmeyen bir özelliktir.

Burada daha lineer, daha rezistif, ve çok düşük voltajlarda bile yüksek akımlar çekebilen bir elektronik yük tasarımı üzerinde çalışıyorlar. Bunun da yolu mosfetleri lineer bölgede çalıştırmak.
 
Son düzenleme:
Yük Modülü Bağlantıları ve bazı özellikler :

+/- 12V Besleme

Prototip Yük Modülü Dijital Kontrol Bağlantıları :

Analog IN : Akım Ayar Referansı (tercihen 10V)
Analog OUT : Mosfet 1 Akım Değeri (Maks 300mv)
Analog OUT : Mosfet 2 Akım Değeri (Maks 300mv Opsiyon)
Analog OUT : Mosfet 3 Akım Değeri (Maks 300mv Opsiyon)
Analog OUT : Mosfet 4 Akım Değeri (Maks 300mv Opsiyon)

Analog OUT : Mosfet Ortak Akım Değeri (Maks 300mv)
Analog OUT : Yük Voltajı Değeri (Girişin 1/10 'u - Negatif Değer alabilir!)

INPUT : Röle Kontrol (3 - 12V)
INPUT : Mosfet 1 Kontrol (Referans voltajından büyük olmalı)
INPUT : Mosfet 2 Kontrol (Opsiyon) (Referans voltajından büyük olmalı)
INPUT : Mosfet 3 Kontrol (Opsiyon) (Referans voltajından büyük olmalı)
INPUT : Mosfet 4 Kontrol (Opsiyon) (Referans voltajından büyük olmalı)

INPUT : Mosfet Kontrol (Ortak) (Referans voltajından büyük olmalı)

OUTPUT : Aşırı Isı Alarm Sinyali (12V)
OUTPUT : Uygun Polarite ve Voltajda Yük Var Sinyali (12V)


Analog Kullanım İçin Bağlantılar :

Mosfet On/Off 2Pin Switch Bağlantısı
Akım Ayar Pot Bağlantısı
Voltaj a bağlı Akım Kesme Pot Bağlantısı
Voltaja Bağlı Akım Kesme on/off 2Pin Switch Bağlantısı
Uygun Polarite ve Voltajda Yük Var Led Bağlantısı
Aşırı Isı Alarm Led Bağlantısı

Board Üzeri Ledler :

Uygun Polarite ve Voltajda Yük Var Ledi
Aşırı Isı Alarm Ledi
Mosfet 1 Devre Dışı Ledi
Mosfet 2 Devre Dışı Ledi
Mosfet 3 Devre Dışı Ledi
Mosfet 4 Devre Dışı Ledi
+12V Besleme Ledi
-12V Besleme Ledi

Board Trimpot Ayarları :

Akım Kalibrasyon Trimpotu
Maksimum Giriş Voltajı Ayar Trimpotu (opsiyon trimpot yerine gerilim bölücü direnç takılabilir)
Minimum Giriş Voltajı Ayar Trimpotu (opsiyon trimpot yerine gerilim bölücü direnç takılabilir)

Not : 1 nolu mesaj güncellenmiştir.
 
Mosfet devreye almadaki gecikme sorunu düzeldi. Tesadüfen oldu ve hala etken neydi tam anlamış değilim.

Devreye Alma sinyalini 3 ve/veya 5 ile tetiklenecek şekilde düzeltme yaparken lineerlikte hafif bozulma fark ettim. Onu düzelttim. Gecikmede düzeldi. :cheeky2:

1672081694481.png


Simülasyon : Link
 
Transistörün bu şekilde bağlantısının özel bir adı varmı? Şemalarda görüp çok da anlam veremiyorum. Aklıma geldi denedim . Ters akım diyot kullanıma göre çok daha iyi görünüyor.
 
Bu akşam diydac'la oynamaya devam ediyorum. set değerlerinde voltaj zıplaması ve gürültü sorunuyla uğraşırken, bu sorunların kaynağını tespit ettim ve kabul edilebilir bir seviyeye getirebildim.
Diydac'ta hc595'leri spi yoluyla sürüyorum, bunu yaparken de yüksek hızda çalışmasını hedefliyordum ve spi çalışma frekansını da hc595'ler desteklediği için atmega328'in maksimum frekansında kullanıyordum. Önce çiplerin "latch " inputlarını 10k dirençle sürdüm gürültü biraz azaldı, sonra spi frekansını fCpu/64'e çektim. Görüntülediğim sinyalde hc595 anahtarlama gürültüsü kalmadı denebilir.
Bu spi ile sürülen en yavaş halinde 130us gibi bir sürede gönderiyorum komutu. Tabi uygulamada mcu bu sürenin %1'inde bile meşgul olmayacak.

Bu spi hızında merdiven şeklindeki çıkışla herhangi bir seviyede anormallik var mı diye görmek için inceledim. Uygulamada DAC hizini önemsiz görüyorum.

DAC_yavaş merdiven.jpg


3KHzkare dalga ile sinyalin tepe ve dipleri aşağıdaki gibi.
1ms dip.jpg
1ms tepe.jpg

Burada dip ve tepe süresince HC595 inpuları sürülmekte. görünen gürültü osiloskobun Ground kıskacında da ölçtüğüm osiloskobun kendi gürültüsü kadar. Ufak dalgalanma da DC voltajlarda da gördüğüm DAC'dan kaynaklayanmayan dalga.

Şu halde iyi ayarlanıp kalibre edilmiş bir analog devreyle kullanıldığında ADC çözünürlüğünden bağımsız olarak yükü yüksek çözünürlükle adımlamak mümkün. Yani ADC ile ölçülemese de ayarlanmış akımım geçtiği varsayılarak hesaplama yapılabilir.

Kullanımda, analog devreyle eşleştirmek için DAC negatif beslemesini G'in biraz altında kararlı bir şekilde opampla sağlamayı düşündüm. uygulamada nasıl olacak bakalım...
 

Forum istatistikleri

Konular
6,589
Mesajlar
111,867
Üyeler
2,699
Son üye
mertokusluk

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