Rigol DP821A tamiri

Epoksi lehimleme ısılarına dayanabiliyor. Onu da şuna göre söylüyorum: Bazan üreticiler, sırf ürün tamir edilemesin diye lehimlenmiş çipin altına epoksi döküyorlar. Özellikle Apple bunu yapıyor. Bu şekilde epoksilenmiş bir çipi sökmek çok zor oluyor. Freze ile çipi tamamen kazıyarak yok etmek gerekiyor.
 
Yeni kart geldi.

Hmm, acaba şu BGA işini tekrar denesem mi? :cool:

IMG_20191221_113400.jpg


IMG_20191221_113416.jpg
 
Hameg'e ne zaman girişiyorsun abi :D
 
Güç kaynağını topladım ve ilk testini elektronik yük ile yaptım. Çıkışların gerilim ve akım verme kapasitelerinde bir sorun yok, ama kalibrasyon gerekiyor :mad: Şu anda ayarlanan voltaj değeri ile çıkıştaki voltaj değeri birbirini tutmuyor. Ayrıca akım ölçümü de hatalı. Umarım bunun kalibrasyon dokümanı vardır bir yerlerde.

Aşağıda güç kaynağını 8V'a ayarladım, elektronik yük 3A çekiyor. Ama güç kaynağının göstergesi 8.262V gerilim ve 3.311A akım gösteriyor.

IMG_20191221_144451.jpg
 
Aslında daha önceki control kartındaki NAND flash'ı söküp buna taksım uygun kalibrasyon değerleri de gelmiş olacak. Ama cihazı tekrar sökmek istemiyorum.

Rigol'ün internet sitesinde DP800 güç kaynakları için yazılmış bir kalibrasyon dokümanı var. Ama bu doküman, menü arayüzünden, kalibrasyon katsayıları tek tek girerek yapılan bir kalibrasyon yöntemi. Çok sayıda nokta için kalibrasyon yapılması gerekiyor, o yüzden bu metot hiç randımanlı değil.

Bir de cihazın kalibrasyon menüsünde çok sayıda bug var. sadece 8.4V verebilen ikinci çıkış için 32V'a kadar kalibrasyon katsayısı istiyor, 60V'a çıkan birinci çıkış için 8.4V'a kadar kalibrasyon katsayısı istiyor. Bu menüyle olacak gibi değil.
 

Ekler

  • DP800 Calibration Guide.pdf
    298 KB · Görüntüleme: 405
EEVBlog'da birisinin DP832 yi kalibre etmek için SCPI protokolü kullanımını anlattığı bir belge buldum. Ama tabi DP821'in çıkış voltaj ve akım limitleri DP832'den tamamen farklı, o yüzden oradaki kalibrasyon voltaj ve akım seviyeleri DP821 ile kullanılamaz.

Cihaz firmware'inin programınını hex dump yaparak mevcut kalibrasyon tablosunu okumaya yarayan bir SCPI komutu var mı diye araştırdım. Ama öyle bir komut bulamadım.

Kalibrasyon tablosu kabaca şöyle işliyor. Değişik voltaj değerleri için DAC'a yazılan değer ile güç kaynağından gerçekte çıkan değerlerin bulunduğu bir tablo hazırlanıyor. Sonra da güç kaynağı çıkışındaki değer ile ADC'nin geri okuduğu değerlerin bulunduğu başka bir tablo. Acaba mutlaka belli değerlerin mi bulunması gerekiyor tabloda diye araştırırken, hex dump'ta her bir tablo için 80 tane yer ayrıldığını gördüm. Ama DP832 kalibrason tablosunda bu kadar değer yoktu.

Ben de tamamen kendi keyfime göre hem voltajlar için hem de akımlar için birer tablo hazırladım:

Kod:
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
    33.0
    34.0
    35.0
    36.0
    37.0
    38.0
    39.0
    40.0
    41.0
    42.0
    43.0
    44.0
    45.0
    46.0
    47.0
    48.0
    49.0
    50.0
    51.0
    52.0
    53.0
    54.0
    55.0
    56.0
    57.0
    58.0
    59.0
    60.0
    61.0
    62.0
    63.0
    64.0
    65.0
    66.0
    67.0
    68.0
    69.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.05
    1.2
    1.5
    1.7
    2.0
    2.2
    2.5
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    10.0
    10.49
)

Sonra da bu tablo üzerinden döngü olarak kalibrasyon işlemini yaptım. Burada bir voltaj tablosu var ve 0.01V tan 69V'a kadar 78 değer içeriyor (80 den az) Akım tablosu da 0.001A den 10.49A'e kadar değerler içeriyor (gene 80 den az).
 

Ekler

  • DP800 SCPI Calibration Users Guide.pdf
    80 KB · Görüntüleme: 381
Burada voltaj kalibrasyonunda iki işlem yapılması gerekiyor. Belli bir voltaj değeri ürettirilecek güç kaynağına, çıkışta ne ölçülüyor cihaza yazılacak. Bu işlemi belli sayıda voltaj değeri için yapılacak. Güç kaynağı çıkışı 63V'a kadar gidiyorsa ona göre değerler kullanılacak, 8.4V'a kadar gidiyorsa ona göre değer kullanılacak.

İkinci aşamada tablodaki belli voltaj değerleri ürettirilecek, sonra da güç kaynağı geriye ne okuyor o kaydedilecek cihaza.

Aynı işlem akım tablosu kullanılarak akım ölçümü ve sınırlaması için yapılacak. Bu işi yapan bir bash script hazırladım ve güç kaynağının iki çıkışında çalıştırdım. Birinci çıkış 63V/1.05A limitine kadar, diğer çıkış da 8.4V/10.49A limitine kadar kalibre edildi.

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
    33.0
    34.0
    35.0
    36.0
    37.0
    38.0
    39.0
    40.0
    41.0
    42.0
    43.0
    44.0
    45.0
    46.0
    47.0
    48.0
    49.0
    50.0
    51.0
    52.0
    53.0
    54.0
    55.0
    56.0
    57.0
    58.0
    59.0
    60.0
    61.0
    62.0
    63.0
    64.0
    65.0
    66.0
    67.0
    68.0
    69.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.05
    1.2
    1.5
    1.7
    2.0
    2.2
    2.5
    3.0
    4.0
    5.0
    6.0
    7.0
    8.0
    9.0
    10.0
    10.49
)

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 DP821A
}

DMM_IP=10.2.1.150
PS_IP=10.2.1.152

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
}

ps_set_sense ()
{
    if [ "$SENSE" = "on" ]; then
        write_ps_cmd ":output:sense $CH,on"
    elif [ "$SENSE" = "off" ]; then
        write_ps_cmd ":output:sense $CH,off"
    fi
}

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

    ps_set_sense

    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_ch1 ()
{
    local CH="CH1"

    write_ps_cmd ":calibration:start 11111,$CH"

    if [ -n "$VOLTAGE" ]; then
        local MODE="V"
        write_ps_cmd ":calibration:clear $CH,$MODE"

        local SENSE="none"
        local NUMPOINTS=79

        local DEV="1"
        calibration_loop

        local DEV="0"
        calibration_loop
    fi

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

    if [ -n "$CURRENT" ]; then

        MODE="C"
        write_ps_cmd ":calibration:clear $CH,$MODE"

        local SENSE="none"
        local NUMPOINTS=24

        local DEV="1"
        calibration_loop

        local DEV="0"
        calibration_loop
    fi

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

calibrate_ch2 ()
{
    local CH="CH2"

    write_ps_cmd ":calibration:start 11111,$CH"

    if [ -n "$VOLTAGE" ]; then
        local MODE="V"
        write_ps_cmd ":calibration:clear $CH,$MODE"

        local SENSE="off"
        local NUMPOINTS=24

        local DEV="1"
        calibration_loop

        local DEV="0"
        calibration_loop
    fi

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

    if [ -n "$CURRENT" ]; then

        MODE="C"
        write_ps_cmd ":calibration:clear $CH,$MODE"

        local SENSE="on"
        local NUMPOINTS=39

        local DEV="1"
        calibration_loop

        local DEV="0"
        calibration_loop
    fi

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

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

VOLTAGE=1
CURRENT=1

calibrate_ch1

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

calibrate_ch2
 
Kalibrasyon sonrasında 60V/1A çıkışını hem ürettiği voltaj, hem de cihazın geri okuyup görüntülediği voltaj neredeyse tam doğru. Burada 8.000V ürettiriyorum ve cihazın kendi göstergesi de 8.000V geri okuyor.

IMG_20191222_223140.jpg


DM3068 de 8V'a çok yakın bir değer ölçüyor
IMG_20191222_223149.jpg
 
Aynı çıkışı elektronik yüke bağlıyorum ve 8V'ta 620 mA çekiyorum. Güç kaynağı çıkış voltajını muhafaza ediyor. DP821A nın gösterdiği akım değeri yükün ayarlandığı akım değerinden biraz fazla. Ama bu elektronik yükün toleransı. DM3068 ile ölçtüğüm zaman DP821A nın ölçtüğü akım ile neredeyse tam olarak uyuşuyor.

IMG_20191222_223331.jpg
 
İkinci çıkışın da voltaj ve akım kalibrasyonu çok iyi görünüyor. Ama bir sorun devam ediyor. İkinci çıkışta, çok yüksek akımlarda güç kaynağının kabloda düşen gerilimi kompanze etmesini sağlayan SENSE girişleri var. Bu sense özelliğinin kalibrasyonunu yapamadım. Dolayısıyla örneğin 10A akım çektirdiğim zaman 8V'a ayarlanmış çıkıştan, elektronik yükteki voltaj 7.6V'lara düşüyor. Aradaki fark kablo üzerinde düşen voltaj.

Bu sense işi ile ilgili araştırmalara devam edeceğim. Ama bu haliyle artık kullanılmaya hazır.
 
Bu sense olayını elektorun geçmişte paylaştığı bir güç kaynağında görmüş öğrenmiştim. O yıllar için yapılmış bu şema çok hoşuma gitmişti.

Sonra o güç kaynağını bir kaç değişiklikle 0 - 30 volt 0 - 3 amper olan şemayı 10 amper alabilecek şekilde yapmıştım.
 

Forum istatistikleri

Konular
7,121
Mesajlar
121,233
Üyeler
2,885
Son üye
ozcanthegreat

Son kaynaklar

Son profil mesajları

az bilgili çok meraklı
Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
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.
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 ❤️
Back
Top