İşte görüyorsun üreticiler kendilerini garantiye almak için datasheet verilerini ne kadar muhafazakar veriyorlar. Datasheet'e göre SPI timinglerde lojik 1 in EN AZ 3.5 V olması lazım. Ama biz 3.3 V veriyoruz ve çalışıyor. Bunu bütün komponentler için görmek mümkün. Mesela ben 600 V luk mika kondansatörü patlatmak için megger ile 5000 V verdim, bana mısın demedi :D
 
Abi birde şey merak ediyorum.
Bu üstündeki regülatör 2 yönlü otomatik çalışıyor.

Beslemeyi 2 volt civarına veya tam dip seviye 1.5 civarına alıp dener misin eğer ayarlı güç kaynağı ile besliyorsan. neler oluyor regülatöre step up beslenince sapıtma oluyor mu işlemcide
 
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

Devre tasarımını her zaman datasheet verilerine göre yapmak lazım. Bu özellikle profesyonel iş hayatında çok önemli. Datasheet'e göre gidersen en azından bir sorun olduğunda üreticiyi sorumlu tutabilirsin.
 
Devre tasarımını her zaman datasheet verilerine göre yapmak lazım. Bu özellikle profesyonel iş hayatında çok önemli. Datasheet'e göre gidersen en azından bir sorun olduğunda üreticiyi sorumlu tutabilirsin.
Her zaman okuduklarıma uymaya çalışırım.
Besleme max 5 diyorsa ben 1 seri diyot koyar 5 voltu 0.7 aşşağı alırım.

Veya regülatör 1 amper diyorsa ben soğutma yapsam dahi 500 den fazla yük vermem eğer mecbursam 2. regülatörü koyar yükü dağıtırım alan kısıtlıysa daha güçlü kullanırım ama hep ilk tercihim 2. regülatör üzerine olur
 
Abi birde şey merak ediyorum.
Bu üstündeki regülatör 2 yönlü otomatik çalışıyor.

Hmm hakkaten bunu bir buck/boost ile beslemişler! Denedim şimdi, 1.5 V a inince 3.15 V gibi bir değer üretiyor. Biraz sınırda ama gene de SPI dan veri göndermeye devam ettiğini gördüm. Yalnız pico datasheet'te 1.8 - 5.5 V aralığını vermiş. Yani 1.5 V ile üreticisi her şekilde çalışacağını garanti etmiyor.
 
Bu arada saatlerdir voltaj referans entegresi çalışıyor ve şu anda ölçtüğümde çıkışında 4.0952 V var. İlginç. Bakalım bu gece kapatıp yarın sabah açtığımda tekrar tolerans dışı değerden mi başlayacak görelim.
 
Hayret birşey yav. Şimdi voltaj referansını tekrar ölçtüm, 4.0952 V

Demekki aynı araba motorlarında olduğu gibi bunun ilk kullanımda bir rodaj süresi var, bu süre sonunda ancak olması gereken performansta çalışmaya başlıyor :katil2:
 
Evet şimdi tekrar power verdim. Beklemeden ölçtüğüm zaman da 4.09519 - 4.09523 V arasında değerler ölçüyorum. Bakalım biraz çalışsın değişme olacakmı.
 
Picoyu benim Linux PC den kontrol etmek için bir USB/UART dönüştürücüyü picoya bağladım. Şimdi Linux terminal emülatörden komut göndererek DAC çıkış voltajını set edebiliyorum.

A100 dersem A çıkış voltajını set ediyorum, B100 dersem B çıkışını, sadece 100 dersem her iki çıkışı da set ediyorum.

C++:
#include <SPI.h>

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

/* milivolt */
static unsigned int va = 2000;
static unsigned int vb = 2000;

static char line[100];
static unsigned int pos = 0;

static void process_line(void)
{
  char buffer[100];

  snprintf(buffer, sizeof(buffer), "line = (%s)\n", line);
  Serial.print(buffer);

  unsigned int value;
  if (sscanf(line, "%u", &value) == 1)
  {
    va = vb = value;
  }
  else if (sscanf(line, "A%u", &value) == 1)
  {
    va = value;
  }
  else if (sscanf(line, "B%u", &value) == 1)
  {
    vb = value;
  }

  snprintf(buffer, sizeof(buffer), "va = %u, vb = %u\n", va, vb);
  Serial.print(buffer);
}

static void process_serial_rx(void)
{
  if (Serial1.available())
  {
    int data = Serial1.read();

    if (data == '\r')
    {
      line[pos] = '\0';
      process_line();

      pos = 0;
    }
    else
    {
      if (isascii(data))
      {
        if (pos < (sizeof(line) - 1))
        {
          line[pos++] = data;
        }
      }
    }
  }
}

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);

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

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

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

    SPI.endTransaction();

    process_serial_rx();

    delay(100);
  }
}
 
Otomatik ölçüm scripti aşağıdaki gibi: Seri terminalden picoya DAC dijital verisini gönderiyor. 1 saniye bekliyor voltajın DAC çıkışında oturması için, sonra DM3068 ile ölçüm yapıyor. 0 dan 4095 e kadar tüm değerler için ölçüm yapacak ve sonuçları bir text dosyaya yazacak. Sonra da MATLAB ile bakacağız çizgi ne kadar düzgün.

Bash:
#!/bin/bash

PORT="/dev/ttyACM0"
RIGOL_ADDR="10.2.1.154"

picocom -rX -b 115200 $PORT

for (( v = 0; v < 4096; v++ )); do
    echo -e "$v\r\n" > $PORT
    sleep 1
    lxi scpi -a $RIGOL_ADDR ":meas:volt:dc?"
done

Program çıktısı

Kod:
[ta@bonsai ~]$ ./lintest
picocom v3.1

port is        : /dev/ttyACM0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : yes
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        :
omap is        :
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : yes

Type [C-a] [C-h] to see available commands
Terminal ready

Terminating...
Skipping tty reset...
Thanks for using picocom
1.47665916E-03
1.47623679E-03
1.47115632E-03
2.05002874E-03
3.09754663E-03
4.16305007E-03
5.22362346E-03
6.28023771E-03
7.35807853E-03
8.42190060E-03
9.47231292E-03
1.05243976E-02
1.15771127E-02
1.26347736E-02
1.36779744E-02
1.47281152E-02
1.57683577E-02
1.68334808E-02
1.78750112E-02
1.89135048E-02
1.99865471E-02
2.10146622E-02
 
Vay be teknolojiye bak. Bende bir elim keypadde bir elimde multimetre probunda, 1-2-3-4 gönderip tek tek değer ölçüyorum. :katil2:
 
Vay be teknolojiye bak. Bende bir elim keypadde bir elimde multimetre probunda, 1-2-3-4 gönderip tek tek değer ölçüyorum. :katil2:

Artık 4096 ölçüm yaptıktan sonra kahrından elektroniği falan bırakır doğru meyhaneye giderdin :katil2:

Buradaki eğri DAC'tan DAC'a ne kadar değişiyor onu da görmek istiyorum. İki tane DAC var elimde.
 
Artık 4096 ölçüm yaptıktan sonra kahrından elektroniği falan bırakır doğru meyhaneye giderdin :katil2:
Bu gidişle bırakıcam zaten elektroniği de meyhaneye gidecek para yok. Bir 70'lik parasına 4-5 tane DAC alırım. :katil2:

Öte yandan projenin tamamına harcadığım parayla meyhaneye gitsem 8-10 şişe devirirdim herhalde :katil2:
 
DAC'ın grafiği çıktı. Bu şekilde bakınca gayet düzgün görünüyor, ama ideale göre karşılaştırınca anlarız bunun ne kadar iyi olduğunu

1657034571548.png
 
Bu grafik de ideal DAC grafiği ile test edilen DAC'ın grafiğinin üst üste binmiş hali

1657035092190.png


Birbirlerine oldukça yakın duruyorlar, ama bazı bölgelere zum yapınca farklılıkların olduğu belli oluyor

1657035167353.png
 
İki grafiğin arasındaki farkı hesaplattırıp doğrudan farkın grafiğine bakalım. Burada ideal vektörden gerçek vektörü çıkardım.

1657035257653.png
 
Bu hata grafiği DAC'nin A çıkışı için. Bir de B çıkışı için aynı grafiği elde edelim.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,952
Mesajlar
118,759
Üyeler
2,824
Son üye
selocan32

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