Rigol DP832A kalibrasyon prosedürü

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
24,718
Daha önce elimdeki DP821A güç kaynağını, bir bash script ile ve SCPI arabirimi üzerinden kalibre etmiştim. Bununla ilgili internette herhangi bir dokümantasyon olmamasına rağmen, parça parça sağda solda bulunan bilgileri derleyip ve bol bol deneme yanılma ile çalışan bir prosedür elde edebildim. Bugün aynı kalibrasyon işlemini en sık kullandığım güç kaynağı olan DP832A için yaptım. Burada aşama aşama nasıl yapıldığını anlatacağım.

Öncelikle kullandığım ekipmanları listeliyorum:

1) Rigol DM3068 6.5 haneli multimetre. Mutlaka bu modelin kullanılmasına gerek yok, ama kullanılacak multimetrenin ağ üzerinde SCPI protokolünü desteklemesi lazım. Ayrıca script'te kullanılan bazı SCPI komutlarının diğer multimetreye göre değişmesi gerekebilir. Örneğin akım ölçümü yaparken multimetreyi 10A kademesine alıyorum. Bunun için belki başka bir multimetre'de farklı bir SCPI komutu gerekiyor olabilir.

2) Uygun akım taşıma kapasitesine sahip, iki tarafı erkek banana jack'ler. Ben 1.5 mm[SUP]2[/SUP] kesitli çok damarlı kablo kullandım.

3) Üzerinde lxi-tools yazılım paketi kurulu olan ve ağa bağlı olan bir linux bilgisayar. Benim bilgisayar'de lxi-tools version 1.21 kurulu.
 
Öncelikle hem DP832A hem de DP3068'i bilgisayar ağına bağlıyoruz ve linux makinadaki bir terminalden aratıyoruz.

Kod:
[ta@bonsai ~]$ lxi discover
Searching for LXI devices - please wait...

Broadcasting on interface lo
Broadcasting on interface eno1
  Found "KEITHLEY INSTRUMENTS,MODEL 2450,04448841,1.6.7c" on address 10.2.1.151
  Found "RIGOL TECHNOLOGIES,DP832A,DP8B171700360,00.01.13" on address 10.2.1.182
  Found "Rigol Technologies,DM3068,DM3O190900153,01.01.00.01.10.00" on address 10.2.1.150
Broadcasting on interface ppp0

Found 3 devices

[ta@bonsai ~]$

Burada DP832A ve DM3068'i görebiliyoruz, o halde bu bilgisayardan bu iki cihaz ile SCPI protokolü ile iletişim kurulabilir.
 
Sonra DP832A nın ilk çıkışını multimetrenin voltaj ölçüm girişlerine bağlıyoruz. Bunun için yukarıda belirtilen banana jack'leri kullanıyoruz.

Sonra aşağıdaki bash script'i terminalden çalıştırıyoruz. Bu script öncelikle ağda DM3068'i ve DP832A nın IP adresini tespit ediyor ve ekrana yazıyor. Eğer geçerli bir IP adres bulunamamışsa script'i devam ettirmemek gerekir ve sorun neyse önce girerilmesi gerekir.

Ama geçerli IP adresler bulunmuşsa script devam edecek ve sırasıyla 1. çıkış, 2. çıkış, ve 3. çıkışın kalibrasyonunu yapacaktır. Her bir çıkış için de prosedür şöyle:

1) Üretilen ve ölçülen gerilim kalibrasyonu yapılacak.
2) Script bu aşamada, çıkışın multimetrenin akım ölçüm girişlerine bağlanmasını bekleyecek.
3) Üretilen ve ölçülen akım kalibrasyonu yapılacak.
4) Bu aşamada bu çıkış için kalibrasyon tamamlanmış olacak ve script, bir sonraki çıkışı multimetrenin vojtaj ölçüm girişlerine bağlanmasını bekleyecek.

Bu adımlar, DP832A nın üç tane çıkışı için tekrar edilecek.

Kod:
#!/bin/bash

VPOINTS=(
    0.0
    0.01
    0.03
    0.1
    0.2
    0.7
    1.0
    1.2
    1.7
    2.0
    2.3
    2.7
    3.0
    3.8
    4.2
    4.7
    5.1
    5.3
    5.6
    6.0
    6.5
    7.0
    8.0
    8.4
    9.0
    10.0
    11.0
    12.0
    13.0
    14.0
    15.0
    16.0
    17.0
    18.0
    19.0
    20.0
    21.0
    22.0
    23.0
    24.0
    25.0
    26.0
    27.0
    28.0
    29.0
    30.0
    31.0
    32.0
)

CPOINTS=(
    0.0
    0.001
    0.002
    0.005
    0.01
    0.02
    0.03
    0.04
    0.05
    0.06
    0.07
    0.08
    0.09
    0.1
    0.2
    0.3
    0.4
    0.5
    0.6
    0.7
    0.8
    0.9
    1.0
    1.2
    1.5
    1.7
    2.0
    2.2
    2.5
    2.7
    3.0
    3.2
)

get_device_ip ()
{
    local DEVICE="$1"
    local IPADDR=`lxi discover | grep "$DEVICE" | grep -oe '[0-9\.]*$'`
    echo $IPADDR
}

get_dmm_ip ()
{
    get_device_ip DM3068
}

get_ps_ip ()
{
    get_device_ip DP832A
}

DMM_IP=`get_dmm_ip`
PS_IP=`get_ps_ip`

write_ps_cmd ()
{
    local CMD="$1"
    lxi scpi -a $PS_IP "$CMD"
}

write_dmm_cmd ()
{
    local CMD="$1"
    lxi scpi -t 10 -a $DMM_IP "$CMD"
}

read_dmm_vdc ()
{
    V_SCPI=`write_dmm_cmd ":meas:volt:dc?"`
    printf "%f\n" $V_SCPI
}

read_dmm_cdc ()
{
    write_dmm_cmd ":meas:curr:dc max"
    V_SCPI=`write_dmm_cmd ":meas:curr:dc?"`
    printf "%f\n" $V_SCPI
}

read_ref ()
{
    local POINT="$1"

    if [ "$MODE" = "V" ]; then
        REF=${VPOINTS[$POINT]}
    elif [ "$MODE" = "C" ]; then
        REF=${CPOINTS[$POINT]}
    else
        REF="somejunk"
    fi

    echo $REF
}

read_value ()
{
    if [ "$MODE" = "V" ]; then
        VALUE=`read_dmm_vdc`
    elif [ "$MODE" = "C" ]; then
        VALUE=`read_dmm_cdc`
    else
        VALUE="somejunk"
    fi

    echo $VALUE
}

calibration_loop ()
{
    echo "CH = $CH, MODE = $MODE, DEV = $DEV"

    write_ps_cmd ":output $CH,on"

    for (( POINT = 0; POINT < $NUMPOINTS; POINT++ )); do
        local REF=`read_ref $POINT`
        echo "POINT = $POINT, REF = $REF"
        write_ps_cmd ":calibration:set $CH,$MODE,$POINT,$REF,$DEV"
        sleep 2
        local VALUE=`read_value`
        echo "VALUE = $VALUE"
        write_ps_cmd ":calibration:meas $CH,$MODE,$POINT,$VALUE,$DEV"
    done

    write_ps_cmd ":output $CH,off"
}

calibrate_ch ()
{
    echo "Multimeter IP Address = $DMM_IP"
    echo "Power Supply IP address = $PS_IP"

    local CH="$1"
    local NUMV="$2"
    local NUMC="$3"

    write_ps_cmd ":calibration:start 11111,$CH"
    write_ps_cmd ":calibration:clear $CH,all"

    local MODE="V"

    local NUMPOINTS=$NUMV

    local DEV="1"
    calibration_loop

    local DEV="0"
    calibration_loop

    echo "SWITCH DMM to Current Measurement, press enter to continue ..."
    read

    MODE="C"

    local NUMPOINTS=$NUMC

    local DEV="1"
    calibration_loop

    local DEV="0"
    calibration_loop

    write_ps_cmd ":calibration:end `date +%d/%m/%Y`,$CH"
}

# put device into a known state
write_ps_cmd ":*RST"

calibrate_ch CH1 48 32

echo "SWITCH power supply output, press enter to continue ..."
read

calibrate_ch CH2 48 32

echo "SWITCH power supply output, press enter to continue ..."
read

calibrate_ch CH3 18 32
 
Son düzenleme:
Bu şekilde kalibrasyonu tamamladım ve şu anda ayarlanan ve ölçülen değerler hem voltaj hem akım için en fazla 1 mV ve 1 mA sapma gösteriyor. Daha önce voltaj için kabaca 7 mV sapma, akım için ise 25 mA civarında sapma vardı.
 
Kalibrasyonun çalışma aşamasında üretilen ekran çıktısı ekteki metin dosyasında.
 

Ekler

Aynı komutlar (DMM ismini değiştirmek koşulu) ile Siglent SDM3065X kullanarak DP832A kalibrsayonu yaptım ve sorunsuz çalıştı. Eline sağlık @taydin

 
Rigol ve Siglent birbirleri ile rekabet ettikleri için ve birbirinden müşteri kapmak istedikleri için demekki SCPI komut setlerini uyumlu tutuyorlar :)
 

Forum istatistikleri

Konular
7,285
Mesajlar
123,134
Üyeler
2,938
Son üye
oguzbaste

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top