Korad 3005P programlama

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
21,760
Korad 3005P nin seri port üzerinden nasıl programlanabileceğine bakalım. Bu işi bir linux kullanıcısı açısından anlatacağım. Windows için de eşdeğer prosedürler olacaktır.

Programlama işlemi ya doğrudan USB bağlantısı ile, yada bir USB de RS232 dönüştürücü ile RS232 portu üzerinden yapılabilmektedir. Ben burada RS232 üzerinden yapılmasını anlatıyor olacağım, çünkü aletin USB portu bir şekilde benim kullandığım linux ile uyumlu değil ve hata veriyor. Windows'da USB bağlantısı sorunsuz olarak algılanıyor.

IMG_20230310_220247.jpg
 
USB/RS232 dönüştürücü ile güç kaynağını linux bilgisayara bağlıyorum. Linux tarafından /dev/ttyUSB0 aygıtı olarak algılanıyor.

Korad 3005P nin programlama kılavuzuna bakınca, aşağıdaki komutların olduğunu görüyoruz

1678477009972.png


1678477035296.png
 
Seri bağlantı protokol bilgileri de aşağıdaki gibi verilmiş

1678477110710.png


Bu bilgilerle komut satırından terminal emülatörünü çalıştırıyorum. Yazdığım komutu görebilmek için "local echo" aktive ediyorum. Ayrıca cihazın gönderdiği stringlerde satır sonunda CRLF yerine sadece LF geldiği için, LF yi CRLF ye dönüştürmesini sağlıyorum. Sonra da komut olarak *IDN? gönderince cihaz model bilgilerini geri dönüyor. Buradan bağlantını doğru bir şekilde çalıştığını anlıyoruz.

Bash:
[ta@bonsai ~]$ picocom --imap lfcrlf -c -b 9600 /dev/ttyUSB0
picocom v3.1

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

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


*IDN?
KORAD KA3005P V5.5 SN:17338373
 
Artık cihazın hem voltajını hem akım sınırlama seviyesini yapılandırabiliyoruz, hem de yapılandırılan değeri öğrenebiliyoruz. Bunun dışında cihaz çıkışındaki güncel voltajı/akımı da sorgulayabiliyoruz.

Bash:
[ta@bonsai ~]$ picocom --imap lfcrlf -c -b 9600 /dev/ttyUSB0
picocom v3.1

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

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



VSET1:4.32

VSET1?
04.32

ISET1:2.345

ISET1?
2.345

OUT1

VOUT1?
04.32

IOUT1?
0.000
 
Seri arabirim ile yapılan yapılandırma kalıcı olmuyor. Cihazı kapatıp açınca kayboluyor. Kaybolmaması için mevcut yapılandırmayı M1 belleğine kaydetmek gerekiyor. Bunun için gereken komut da yukarıdaki bilgilerde anlatıldığı üzere SAV1. Bu şekilde ayarlar M1 belleğine kaydedildikten sonra cihaz kapatıp açıldığında muhafaza edilecektir.
 
Seri arabirim ile yapılan yapılandırma kalıcı olmuyor. Cihazı kapatıp açınca kayboluyor. Kaybolmaması için mevcut yapılandırmayı M1 belleğine kaydetmek gerekiyor. Bunun için gereken komut da yukarıdaki bilgilerde anlatıldığı üzere SAV1. Bu şekilde ayarlar M1 belleğine kaydedildikten sonra cihaz kapatıp açıldığında muhafaza edilecektir.
Şu konuya göz attınız mı? Orada firmware güncellemesi yapıldıktan sonra görüyor USB üzerinden demişler.

 
Çıkışı ne kadar hızlı bir şekilde kapatıp açabiliyoruz ona da bir bakalım. Şöyle bir python programı yazdım ve sleep değerini 20 ms ye kadar düşürebildim. Bu sırada elektronik yük ile 1 A akım çekiyordum çıkıştan.

Zaten baud hızı düşük, her bir komutun gönderimi 5 ms gibi sürüyor. Muhtemelen cihazın programının da bir komut okuyabilme sıklığı var, o yüzden daha hızlı değişimler çıkışa yansımıyor. Acaba yeterince akım çekilmediği için çıkıştaki kapasitör mü yanıltıyor diye düşündüm ve 3 A çektim, gene sonuç aynı.

Python:
#!/bin/python3

import serial
import time

ser = serial.Serial("/dev/ttyUSB0", 9600)

while True:
    ser.write(b"OUT1")
    time.sleep(0.02)
    ser.write(b"OUT0")
    time.sleep(0.02)

 
Şu konuya göz attınız mı? Orada firmware güncellemesi yapıldıktan sonra görüyor USB üzerinden demişler.


Oradaki sorun farklı. Bende USB aygıt olarak dahi tanımıyor.
 
Bir güç kaynağının bu şekilde programlanabilir olması, cihaza birçok ilave özelliğin kazandırılabilmesini mümkün kılıyor. Örneğin her türlü akü için bir şarj cihazı olarak çalışması sağlanabilir. Veya PC de bir sıcaklık sensöründen veri okuyabiliyorsak, bir rezistansın PID kontrolünü yapmak mümkün. Sensörden okunan değere göre voltaj veya akım kontrolü ile rezistans ısısını ayarlayabiliriz.

Bunun dışında otomatik olarak bir süreç çalıştırmak istersek, bu şekilde programlanabilirlik çok büyük avantajlar sağlıyor. Örneğin bir cihazı sürekli kapatıp açmak ve her seferinde doğru açıldığını teyit etmek mümkün. Ben elimdeki programlanabilir Rigol DP832A güç kaynağını bu şekilde test amaçlı kullanmıştım. Ethernet bağlantı özelliği olan bir gömülü sistemde bazan güç verildiğinde IP adres alamıyordu. Problem nadir meydana geliyordu, bazan problemin oluşması saatler sürüyordu. Her seferinde kartın başında durup kendim güç kaynağını kapatıp açacağıma, bir program ile bu işi yaptım ve IP alıp almadığını da ping ile kontrol ettim. Bu şekilde bir test olanağı olunca da problemin kaynağını bulup düzelttikten sonra artık cihazın %100 çalıştığını teyit etmek mümkün oluyor. Akşamdan programı çalıştırıyorum, sürekli kartı kapatıp açıyor, açtıktan sonra da ping ile bağlantıyı test ediyor ve sabaha kadar binlerce test yapıyor. Testlerin hepsi başarılı ise de problemi çözdüğünden emin olabiliyorsun.
 
Windows algılayabiliyor ve bir COM port olarak sisteme kaydediliyor. Aslında USB/RS232 dönüşümünü yapan bir Nuvoton işlemci var orada. Onun yerine bir Arduino nano konup sorun kökten çözülebilir. Hangi komut için nasıl bir mesaj iletiyor ana işlemciye onu gözlemlemek yeterli. Veya doğrudan üzerindeki Nuvoton işlemciye yeniden program da atılabilir. Nuvotonun programlama adaptörü var bende.
 
Abi cihaz içindeki menüden baudrate 115200 ayarlanabilir. Ben dummy load da preset ayarı değiştirip o şekilde kullandım.
100ms de 2-3 defa akım -voltaj okudum.
 
Menü falan yok bunda gördüğüm kadarıyla. Sabit olarak 9600 baud gibi duruyor.



Bu güç kaynağı da baud 9600 de olsa 100 ms de 5 defa on off yapabiliyor, o konuda bir sıkıntı yok.
Anladigim kadariyla @fide iletisim hizini 115K ile limitle, Linux Kernel USB2.0 ile ilietisim kurmaya calistigi icin cihaz tepki vermiyor olabilir demek istemis. USB uzerindeki hizi da limitliyorsa bu ayar USB'den herhangi bir sinyal geldiginde kullandigi iletisim protokollerini iletiyor olabilir. Denemek lazim.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,821
Mesajlar
99,360
Üyeler
2,476
Son üye
mrmandos

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top