Každé domáce laboratorium , alebo dieľna nevyhnutne potrebuje na realizáciu a testovanie prototypov a vlastných projektov, alebo pri opravách , zdroj s možnosťou nastavovania veľkosti napätia a prúdu. Samozrejme takéto zariadenia sú bežne dostupné ku kúpe v obchodoch s elektronickými súčiastkami a meracími prístrojmi.
Vlastné zadanie
Praktické skúsenosti a doterajšia potreba definovali parametre budúceho zdroja. Hlavnými požiadavkami bolo:
• dve samostatné odizolované vetvy výstupného napätia
• samostatná regulácia napätia a prúdu
• ochrany proti prúdovému preťaženiu , prehriatiu …
• rozsah výstupného napätia 0 - 50V
• rozsah výstupného prúdu 0 - 20A
• nízka hladina rušenia na obidve strany napájacieho zdroja (do siete, aj do napájaného obvodu)
• čo najväčší výstupný výkon
• jednoduché ovládanie a prijateľná cena
Návrh riešenia
Z uvedeného zadania vyplynulo obmedzenie príkonu zdroja do 3.5kW, aby mohol byť napájaný z jednej fázy elektrickej siete. Nad zdrojom, dnes už klasickej konštrukcie, trafo – usmerňovač – filter – regulácia – meranie, som ani neuvažoval.
Dôvodom je niekoľko prozaických príčin: transformátor by bol obrovský a ťažký , chladenie usmerňovača a regulátora objemné, vzhľadom na požadovaný výstupný prúd, by bloky kondenzátorov filtra museli byť tiež veľké, lebo pracujeme s filtrami pre transformátor a usmerňovač 50Hz, … Rozhodnutie padlo na spínaný zdroj. Takéto konštrukcie spínaných zdrojov boli na stránkach Amatérskeho rádia publikované opakovane z teoretického aj praktického hľadiska. Mojim cieľom nebolo zhotoviť spínaný zdroj z diskrétnych súčiastok, ale zostaviť zdroj primeraných parametrov z dostupných modulov. Podobne ako v počítačovej technike už opúšťame návrh CPU jednotiek, ale vyberieme pre naše konštrukcie niektorý z dostupných modulov CPU. Takto nejako som pristúpil k riešeniu zadanej úlohy. Aby sa znížil pomer medzi rozsahom vstupného a výstupného napätia, zvolil som dvojstupňové riešenie.
Prvý stupeň, AC/DC prevodník, zabezpečí stabilizáciu pevného napätia na jeho výstupe, ktoré musí byť vyššie najmenej o hodnotu úbytku napätia na druhom stupni zabezpečujúcom reguláciu. Druhý stupeň je DC/DC prevodník zabezpečujúci reguláciu výstupného napätia a prúdu v požadovanom rozsahu ovládaný číslicovo cez zbernicu Modbus . Pre dvojicu nezávislých výstupných napätí som použil dve na sebe nezávislé zostavy zdrojov. Zadávanie a zobrazovanie želaných a skutočných hodnôt zabezpečuje dotykový HMI displej (Human machine interface). Ovládací program som napísal v Pythone . Pomocný obvod, v schéme označený ako „modbus adaptér LK-20“ zabezpečuje prevod signálov rozhrania TTL modbus na sériové rozhranie HMI displeja a súčasne zaisťuje galvanické oddelenie výstupných napätí jednotlivých vetiev. Skrinku zdroja som doplnil o obvod indukčného ohrevu.
Popis hardware
Vychádzajúc zo zvoleného konceptu som vybral nasledovné kľúčové komponenty:
zdroj MS-1500-72 , RIDEN RD-1500-68 , alebo iný podobný vhodný typXY6020L DIY Laboratórny zdroj 20A 1200W
Celková schéma zapojenia je na nasledujúcom obrázku:
Základom tohto laboratórneho zdroja je modul DC/DC prevodníka, XY-6020L (PWR4, PWR5). Je to riadený prevodník s mikroprocesorom Artery AT32F421 pracujúcom na frekvencii 120MHz. Tento RISC mikroprocesor obsahuje 32-bitové jadro ARM Cortex-M4 s 64kB flash pamäte a 16kB statickej RAM. Okrem toho obsahuje 5 16-bitových časovačov, dve i2c zbernice, dva sériové porty UART, hardwarový komparátor a 10 kanálový 12 bitový analógovo-digitálny prevodník s hodinovou frekvenciou 28MHz , 25 vstupno výstupných liniek GPIO. XY6020 je spínaný zdroj typu "step down". Medzi základné charakteristiky patrí presnosť výstupného napätia a prúdu pod 1%, zvlnenie na výstupe do 100mV a výkon 1200W. Prepäťové , nadprúdové a ochrany proti prehriatiu netreba ani spomínať. Modul zdroja XY6020L sa dá ovládať pomocou konektormi pripojeného ovládacieho modulu s LCD displejom, alebo cez sériovú zbernicu Modbus. Ja som zvolil ovládanie cez Modbus. Z horeuvedeného obrázku schémy zapojenia je zrejmé, že prívod 230V je cez konektor X1. Za ním je poistka F1, chrániaca celé zariadenie pred prúdovým preťažením v prípade poruchy zdrojov. PWR1 a PWR2 zabezpečujú AC/DC prevod zo striedavých 230V na 64V jednosmerných (výstupné napätie je nastavené trimrom v zdroji). Použil som spínané zdroje MS-1500-72 s nastaviteľným výstupným napätím do 72V a výkonom 1500W. Nastavené výstupné napätie týchto zdrojov musí byť menšie ako 65V inak moduly PWR4, PWR5 ( XY6020L ) prejdú do blokovaného stavu z dôvodu prepätia na svojom vstupe. Moduly PWR4, PWR5 sú stepdown DC/DC meniče zaisťujúce požadované hodnoty napätia a prúdu na výstupných svorkách X4-X7. Požadované hodnoty napätia a prúdu sa zadávajú cez dotykový HMI displej ER-DIS08050H. Časové relé XT1 slúži na oneskorené pripojenie PWR1 k sieti 230V po zapnutí hlavného vypínača SW1, aby sa zabránilo vzniku nadprúdu z prechodového javu nabíjania kondenzátorov zdrojov pri zapnutí. PWR3 je zdroj +5V pre napájanie displeja a pomocných riadiacich obvodov. PWR6 je modul indukčného ohrevuu ZVS1000 , ktorý som zabudoval do skrinky popisovaného laboratórneho zdroja. Spínač SW2 pripojí napájanie z druhej vetvy zdroja PWR5 na vstup indukčného modulu. Výstup vysokofrekvenčného modulu PWR6 je vyvedený na svorky X8 a X9, ako aj na piny konektora X3, ktorý musí vydržať prúdové zaťaženie najmenej 20A a slúži na pohodlné pripájanie zariadení indukčného ohrevu. Tlačidlový spínač SW3 slúži na aktiváciu výstupu druhého zdroja , ktorý zároveň napája indukčný modul pri zapnutom vypínači SW2 a to po dobu, pokým je stlačený SW3. Prostredníctvom USB konektora X2 je možné pripojiť HMI displej k PC pre monitorovanie a ladenia, alebo nahratie nového firmware. Dôležitou časťou laboratórneho zdroja je obvod modbus adaptéra (Obr4.png), ktorý zabezpečuje galvanické oddelenie sériových liniek , cez ktoré sa ovládajú zdrojové moduly XY6020 a sprostredkováva komunikáciu s HMI displejom pre zadávanie a zobrazovanie požadovaných hodnôt .
Vstupno-výstupný modul HMI (human machine interface) LCD displeja ER-DIS0705H je postavený na báze mikroprocesora ESP32. 5“ displej má rozlíšenie 800x480 bodov, kapacitný dotykový snímač, wifi rozhranie, sériové TTL rozhranie, akustickú signalizáciu , slot pre SD kartu, ... Obmedzený počet a typ IO rozhraní vyžadoval nájsť riešenie pre komunikáciu s modbus. Dalo by sa nájsť riešenie s modulom displeja, ktorý obsahuje viacero sériových liniek, ale tu je limitujúcim faktorom cena. Takéto zariadenie stojí viac ako niekoľko stoviek € a zostal by problém s galvanickým oddelením zdrojov. Rozhodol som sa vytvoriť vlastný modul , zabezpečujúci požadované funkcie . Použil som vývojový modul od firmy Waweshare, za pár €. Voľba padla na tento modul , lebo doska displeja obsahuje ten istý mikroprocesor ESP32-S3 , čo mi umožnílo použiť časť programových knižníc spoločných. Obvod modbus adaptéra je napájaný z 5V zdroja PWR5. Sériové linky rozhrania modbus modulov zdroja XY6020 (PWR4 a PWR5) sú privedené na konektory X2 a X3 modbus adaptéra.
Obvod LK-20 modbus interface
Schéma zapojenia je jednoduchá.
Galvanické oddelenie komunikačných liniek zdrojov XY6020 zabezpečujú integrované obvody ¶122M30 , aby výstupné napätia zdrojov mali nezávislý potenciál a mohli sa kombinovať do série , čo umožní dosiahnuť stabilizované výstupné napätie až 120V pri maximálnom výstupnom prúde 20A . Blokovo funkčná schéma integrovaného obvodu je tu: 
Izolačné napätie dosahuje hodnotu až 3kV a maximálna prenosová rýchlosť je 10Mbit. Použitý obvod je dvojkanálový a umožňuje aj prevod napäťových úrovní medzi 3V a 5V , pričom spotreba samotného integrovaného obvodu je menšia ako 100 µA.
Napájanie integrovaných obvodov na strane mikropočítača U1 je zabezpečené stabilizátorom napätia 3.3V umiestneného na doske vývojového kitu U1 a vyvedeného na pin č.1. Napájanie izolačných obvodov na stranu ovládaných zdrojov XY6020 je 3V zo zdrojov cez vývody 1 a 4 konektorov X2 a X3. Mikropočítač U1 ESP32-S3-DEV-KIT-N8R8 je napájaný zo zdroja 5V cez svorky X1 a zabezpečuje komunikáciu protokolom modbus so zdrojmi XY6020 cez porty GPIO4, GPIO5 a GPIO17, GPIO18 a cez WiFi, protokolom TCP, komunikuje s HMI displejom , ktorý je tiež osadený mikroprocesorom ESP32. Použité kondenzátory C1 až C7 majú filtračnú funkciu a rezistor R1 má hodnotu 0 Ohm (prepojka) a použil som ho iba pre zjednodušenie dosky plošných spojov (DPS), tak aby mohla byť realizovaná ako jednostranná . Použitie vývojového kitu ESP32-S3-DEV-KIT-N8R8 má svoje výhody. Predovšetkým som sa vyhol potrebe realizácie DPS metódou SMD a nemusel som riešiť pomocné obvody, napríklad pre pripojenie CPU k USB portu. DPS má rozmery 100mm x 50mm. Motív plošného spoja a osadenie súčiastok ukazuje jreho jednoduchosť.
DPS je jednostranná a je tak jednoduchá, že nepotrebuje ďalší popis a jej realizácia je zrejmá z obrázku. Oživenie spočíva v kontrole plošného spoja na skraty a prípadné prerušenia spojov pri vŕtaní, či výrobe DPS a naprogramovaniu CPU U1 spôsobom popísaným v ďalšej časti príspevku. Drobný problém prináša použitie integrovaného obvodu ¶122M30, ktorý sa vyrába iba v púzdre SOIC-8 pre SMD montáž. Problém vyriešil malý adaptér SOIC-8 na DIP8 (Obr30.png) na ktorý sa dá čip ¶122M30, pri troche opatrnosti a s použitím tenšieho hrotu, naspájkovať aj obyčajnou trafo spájkovačkou. Ako vývody DIP8 púzdra som použil 4 piny jednoradovej DIP lišty.
Popis software
Vzhľadom na to, že prevažná časť hardware je zostavená z hotových modulov, veľký podiel úsilia muselo byť venované programovému vybaveniu. Obslužné programy sú napísané jazyku MicroPython, čo je programovací jazyk Python optimalizovaný pre použitie na embedded systémoch s limitovanými zdrojmi. Komunikácia medzi displejom a doskou s modbus interface prebieha cez wifi pomocou TCP protokolu. Doska displeja je v režime klienta a doska modbus inface je v režime AP. Všetky potrebné programy je možné stiahnúť sekcii na stiahnutie . Na strane AP-čka je hlavným programom main_AP.py. Do boot.py je potrebné doplniť riadok:import main_APTýmto sa zabezpečí automatické spustenie hlavného programu pri zapnutí a na strane klienta (HMI displej) podobne, ale main_client.py:import main_client
Program zabezpečuje čítanie a zápis modbus registrov z regulovaných zdrojov XY6020L. Komunikačné rozhranie je TTL sériový port a využíva protokol MODBUS-RTU . Z továrne je ID zariadenia nastavené na 0x01 (01 hexadecimálne). Pracuje s úrovňami 3.3V aj 5V. Formát sériových dát je baudrate = 115200, 8 dátových bitopv, bez parity, jeden stop bit (115200,8,N,1). Pred oživením celého zdroja je potrebné zmeniť adresu ID druhého zdroja XY6020 na hodnotu 0x02 (02 hexadecimálne) pomocou vhodného nástroja. Na začiatku som použil voľne dostupný nástroj OpenModScan, ale pre opakovanie tejto procedúry som vytvoril krátky Python program, ktorý sa dá spustiť na ESP32 module po pripojení sériovej linky modulu XY6020. Modifikáciou premennej MODBUS_ADDR je možné zapísať ľubovoľnú slave ID hodnotu.
from machine import UART
import time
# Nastavenie UART
uart1 = UART(1, baudrate=115200, tx=4, rx=5, timeout=500)
MODBUS_ADDR = 1 # Adresa Modbus zariadenia
def modbus_crc(data):
crc = 0xFFFF
for byte in data:
crc ^= byte
for _ in range(8):
if crc & 0x0001:
crc >>= 1
crc ^= 0xA001
else:
crc >>= 1
return crc
def write_single_register(reg_address, value):
# Zostavenie správy pre zápis jedného registra (funkčný kód 0x06)
msg = bytearray([
MODBUS_ADDR,
0x06, # Funkčný kód pre zápis jedného registra
(reg_address >> 8) & 0xFF, # High byte adresy
reg_address & 0xFF, # Low byte adresy
(value >> 8) & 0xFF, # High byte hodnoty
value & 0xFF # Low byte hodnoty
])
# Pridanie CRC
crc = modbus_crc(msg)
msg.append(crc & 0xFF)
msg.append((crc >> 8) & 0xFF)
# Odoslanie správy
print(f"Odosielam: {bytes(msg).hex(' ')}")
uart1.write(msg)
# Čakanie na odpoveď
time.sleep_ms(200)
resp = uart1.read()
if not resp:
print("Chyba: Žiadna odpoveď")
return False
print(f"Prijaté: {resp.hex(' ')}")
# Kontrola odpovede
if len(resp) != 8: # Očakávaná dĺžka odpovede pre funkčný kód 0x06
print("Chyba: Neplatná dĺžka odpovede")
return False
# Kontrola CRC
resp_crc = resp[-2] | (resp[-1] << 8)
if modbus_crc(resp[:-2]) != resp_crc:
print("Chyba: Neplatné CRC")
return False
# Kontrola, či sa odpoveď zhoduje s požiadavkou
if resp[0] != MODBUS_ADDR or resp[1] != 0x06:
print("Chyba: Neplatná hlavička odpovede")
return False
return True
# Hlavný program
print("\nModbus komunikácia - zápis do registra")
print("Pokúšam sa zapísať hodnotu 1 do registra 24...")
if write_single_register(0x12, 1):
print("Zápis prebehol úspešne!")
else:
print("Zápis zlyhal!")
Program je dostupný v sekcii na stiahnutie. Ak nebola hodnota slave ID menená a je nastavená od výrobcu na hodnotu 1, nie je potrebné ju meniť, lebo modul modbus adaptéra LK-20 komunikuje na samostatných sériových kanáloch a obidva zdroje XY6020 možu mať rovnaké ID.
Potrebné programové funkcie na komunikáciu so zdrojmi XY6020 sú obsiahnuté v modbus.py knižnici. Ako už bolo povedané , wifi HMI displeja je v režime klienta a wifi modul jednotky ESP32 na doske modbus adaptéra je v režime AP. Inicializácia wifi rozhraní je v knižnici wifi_comm.py, ktorá je spoločná pre klienta aj AP. Všetky knižnice, a teda aj my_lib.py sú spoločné pre obidva moduly modbus rozhranie aj displej). Rozdielne sú iba main_AP.py a main_client.py pre modul displeja. Na strane AP je inicializový DHCP server, ktorý pridelí IP adresu klientovi pri pripojení, BSSID a heslo sú definované v knižnici wifi_comm.py a možu byť ľubovoľne zmenené. Na strane AP je vytvorený TCP server, na ktorý sa pripojí TCP klient HMI displeja s LVGL knižnicou (Light Versatile Graphics Library), umožňujúcou pohodlnú tvorbu grafických užívateľsky prívetivých rozhraní. Komunikácia je riadená prerušením na pozadí. TCP klient a server si pravidelne vzájomne aktualizujú dátové štruktúry xy6020data1 a xy6020data2 obsahujúce prečítané hodnoty registrov XY6020, ako aj požadované hodnoty registrov pre zápis a status registre, pomocou ktorých sa riadi komunikácia a zápis do registrov a teda aj režimy štart , alebo stop zdrojov.
Dátové polia sú definované v knižnici funkcií modbus.py a majú 2 x 34 bytov pre každý zdroj. 34 bytov pre zápis xy6020_data1w[34] a 34 xy6020_data1r[34] bytov pre čítanie registrov a stavových hodnôt. Obsahujú kompletný obraz registrov pamäťovej sady M0. Definícia niektorých dôležitých pamäťových premenných dátových polí, či už bitových, alebo bytových hodôt xy6020_data1w[] a xy6020_data1r[] vyzerá takto:
TOTAL_REGISTERS = 32 # Počet registrov XY6020 # Dátové polia pre registre - čitanie z XY60020
MAX_RETRIES = 3 # Maximálny počet opakovaní
AP_STATUS_REG_INDEX = 32 # Index apečka pre status, word v datovom poli
STA_STATUS_REG_INDEX = 33 # Index pre status klienta, word v datovom poli
# COMMAND_REG_INDEX = 33 # Index pre príznak požiadavky zápisu v datovom poli
STATUS_ERROR_BIT = 0 # nastala nejaká chyba
STATUS_NEW_DATA_BIT = 1 # bit indikuje prijatie nových dát na zápis do XY registrov
STATUS_MODBUSR_BIT = 2 # chyby UART na modbus
STATUS_SEND_DATA_BIT = 3 # sú nové dáta k odviselaniu na server
STATUS_WIFI_BIT = 4 # chyba spojenia na server, AP, alebo STA
STATUS_APC_BIT = 5 # spracováva sa wifi požiadavka odoslania, či príjmu na strane AP
STATUS_STAC_BIT = 6 # spracováva sa wifi požiadavka odoslania, či príjmu na strane klienta
STATUS_WRITE_BIT = 7 # požiadavka na zápis do registrov XY
STATUS_TCP_BIT = 8 # 1 znamená chybu v TCP komunikácii
# 32-bitové masky pre určenie ktoré registry sa majú zapísať
# Každý bit zodpovedá jednému registru (bit 0 = Reg0, bit 31 = Reg31)
regw_uart1 = 0b00000000000001000000000000000011 # Príklad: zapíše sa len register 0,1,18
regw_uart2 = 0b00000000000001000000000000000011 # Príklad: zapíše sa len register 0,1,18
regr_uart1 = 0b00000000000001000000000000001111 # Príklad: číta len register 0,1,2,..
regr_uart2 = 0b00000000000001000000000000001111 # Príklad: číta len register 0,1,2,
xy6020_data1 = [0] * (TOTAL_REGISTERS+ 2) # 32 registrov + 1 status + ....
xy6020_data2 = [0] * (TOTAL_REGISTERS+ 2) # 32 registrov + 1 status + ....
# Dátové polia pre registre- zápis do XY60020
xy6020_data1w = [0] * (TOTAL_REGISTERS+ 2) # 32 registrov + 1 status + ....
xy6020_data2w = [0] * (TOTAL_REGISTERS+ 2) # 32 registrov + 1 status + ....
Aby sa vždy nezapisovali alebo čítali registre, ktoré nepodliehajú zmene, alebo obsah nie je práve zaujímavý, je zavedená bitová maska regw_uart1 a xy6020_data1w (pre druhý zdroj regw_uart2 a xy6020_data2w ) , ktorá definuje byty registrov určené pre operáciu zápisu, alebo čítania. Jednotlivé bity Určujú register v XY6020 , ktorý sa bude čítať alebo zapisovať, tak ako je to v hore uvedenom príklade. Mikropočítač na doske modbus adaptéra nepretržite periodicky komunikuje cez opticky izolované rozhranie so zdrojmi a číta aktuálne hodnoty napätia, prúdu a stavu z ich registrov pomocou sady príkazov. Pre toto zariadenie (XY6020) sú povolené iba nasledovné modbus funkcie
|
Kód
|
Funkcia
|
Popis
|
|
0x03
|
Read register data
|
Čítanie dát z jedného alebo viacerých registrov
|
|
0x06
|
Write single register
|
Zápis do jedného registra
|
|
0x10
|
Write multiple registers
|
Zápis do viacerých registrov
|
a obsahuje nasledovnú sadu registrov (Holding Registers). Každý register pozostáva z 16 bitov, prenášaných ako 2 byte .
|
Názov
|
Popis
|
Bajtov
|
Dec.
|
Jednotka
|
Čítanie a zápis
|
Adresa registra
|
|
V-SET
|
Nastavenie napätia
|
2
|
2
|
V
|
R/W
|
0000H
|
|
I-SET
|
Nastavenie prúdu
|
2
|
2
|
A
|
R/W
|
0001H
|
|
VOUT
|
Zobrazovaná hodnota výstupného napätia
|
2
|
2
|
V
|
R
|
0002H
|
|
IOUT
|
Zobrazovaná hodnota výstupného prúdu
|
2
|
2
|
A
|
R
|
0003H
|
|
POWER
|
Zobrazovaná hodnota výstupného výkonu
|
2
|
1
|
W
|
R
|
0004H
|
|
UIN
|
Zobrazovaná hodnota vstupného napätia
|
2
|
2
|
V
|
R
|
0005H
|
|
AH-LOW
|
Výstupné AH nízkych 16 bitov
|
2
|
0
|
mAh
|
R
|
0006H
|
|
AH-HIGH
|
Výstupné AH vysokých 16 bitov
|
2
|
0
|
mAh
|
R
|
0007H
|
|
WH-LOW
|
Výstupné WH nízkych 16 bitov
|
2
|
0
|
mWh
|
R
|
0008H
|
|
WH-HIGH
|
Výstupné WH vysokých 16 bitov
|
2
|
0
|
mWh
|
R
|
0009H
|
|
OUT_H
|
Čas zapnutia - hodiny
|
2
|
0
|
H
|
R
|
000AH
|
|
OUT_M
|
Čas zapnutia - minúty
|
2
|
0
|
M
|
R
|
000BH
|
|
OUT_S
|
Čas zapnutia - sekundy
|
2
|
0
|
S
|
R
|
000CH
|
|
T_IN
|
Hodnota vnútornej teploty
|
2
|
1
|
°F/°C
|
R
|
000DH
|
|
T_EX
|
Hodnota vonkajšej teploty
|
2
|
1
|
°F/°C
|
R
|
000EH
|
|
LOCK
|
Zámok kláves
|
2
|
0
|
-
|
R/W
|
000FH
|
|
PROTECT
|
Stav ochrany
|
2
|
0
|
-
|
R/W
|
0010H
|
|
CVCC
|
Stav konštantného napätia/prúdu
|
2
|
0
|
-
|
R
|
0011H
|
|
ONOFF
|
Prepínač výstupu
|
2
|
0
|
-
|
R/W
|
0012H
|
|
F-C
|
Symbol teploty
|
2
|
0
|
-
|
R/W
|
0013H
|
|
B-LED
|
Úroveň jasu podsvietenia
|
2
|
0
|
-
|
R/W
|
0014H
|
|
SLEEP
|
Čas do zhasnutia obrazovky
|
2
|
0
|
M
|
R/W
|
0015H
|
|
MODEL
|
Číslo produktu (bolo 6100h)
|
2
|
0
|
-
|
R
|
0016H
|
|
VERSION
|
Číslo verzie firmvéru (bolo 0071h)
|
2
|
0
|
-
|
R
|
0017H
|
|
SLAVE-ADD
|
Adresa slave (podriadeného zariadenia)
|
2
|
0
|
-
|
RAW
|
0018H
|
|
BAUDRATE_L
|
Prenosová rýchlosť (6 = 115200)
|
2
|
0
|
-
|
RAW
|
0019H
|
|
T-IN-OFFSET
|
Korekcia vnútornej teploty
|
2
|
1
|
°F/°C
|
RAW
|
001AH
|
|
T-EX-OFFSET
|
Korekcia vonkajšej teploty
|
2
|
1
|
°F/°C
|
RAW
|
001BH
|
|
BUZZER
|
Prepínač bzučiaka (neimplementované?)
|
2
|
0
|
-
|
RAW
|
001CH
|
|
EXTRACT-M
|
Rýchle vyvolanie dátových sád
|
2
|
0
|
-
|
RAW
|
001DH
|
|
DEVICE
|
Stav zariadenia
|
2
|
0
|
-
|
RAW
|
091EH
|
Okrem týchto registrov má XY6020 celkovo 10 pamäťových dátových sád M0-M9. Každá sada obsahuje celkom 14 dátových registrov. Počiatočná adresa dátovej sady M0 je 0050H pre uloženie nastavení a ich rýchle vyvolanie. Dátová skupina M0 sa štandardne vyvoláva pri zapnutí výrobku, dátové skupiny M1 a M2 sú dátové skupiny rýchlo vyvolané z panelu výrobku a M3-M9 sú bežné pamäťové dátové skupiny. Výpočtová metóda počiatočnej adresy dátovej skupiny je: 0050H + číslo dátovej skupiny * 0010H, napríklad počiatočná adresa dátovej skupiny M3 je: 0050H + 3 * 0010H = 0080H. Vyvolanie pamäte M1-M9 sa vykoná zápisom požadovaného čísla 1..9 do registra EXTRACT-M na adrese 001DH. V dôsledku toho sa vyvolané pamäťové hodnoty skopírujú do oblasti M0 na adrese 0050H a ďalej. M0 je aktuálna účinná operačná dátová sada. Aktualizácie tejto oblasti nadobúdajú okamžitý účinok. (Vyvolanie pamäte M0 nemá žiadny účinok.) Túto vlastnosť využívam zápisom do registrov k okamžitej zmene požadovaných hodnôt a laboratórny zdroj nevyužíva pamäťové sady M1-M9.
Nahranie programov
Na nahranie potrebného programového vybavenia je potrebné do modulov nahrať firmware obsahujúci potrebnú verziu MicroPython a ovládacie programy. Zvláštnu pozornosť vyžaduje HMI displej, kde odporúčam ušetriť si ťažkosti a použiť firmware výrobcu displeja, ktorý obsahuje potrebné ovládače pre dotykový displej. Pre ESP32 na module modbus je možné použiť MicroPython verziu 1.19, alebo vyššiu. Pre nahranie MicroPython cez USB rozhranie do ESP32, či už displeja alebo modulu ESP32 na doske modbus adaptéra, som použil prostredie programu Thonny (https://thonny.org/), ktorý je vhodný aj pre začiatočníkov, samozrejme je možné použiť aj iné prostredie, napríklad Visual studio, alebo Arduino IDE. Obecný postup pre prácu s MicroPython a IDE rozhraním Thonny a ESP32 spočíva v pripojení modulu na PC cez USB rozhranie a predpokladám použitie OS Windows. Najskôr je potrebné skontrolovať, či Windows nahral správne ovládače USB rozhraniu pripojeného modulu (tieto informácie majú všobecný charakter a platia pre ľubovoľné ESP32 moduly , nielen pre použitie v tomto projekte).
Skontrolujete to v správcovi zariadení systému Windows tak, že má pribudnúť sériový port po pripojení modulu k PC . Teraz môžete spustiť na svojom PC program Thonny a nahrať firmware MicroPython. Úvodná obrazovka signalizuje chýbajúci „backend“, čo znamená, že Thonny nemá aktívnu komunikáciu s pripojeným ESP32 modulom. Kliknite na položku menu „Tools“ a potom , v novootvorenom okne , kliknite na záložku „Interpreter“ , vyberte typ interpretera „MicroPython (ESP32)“ a zvoľte sériový port , ktorý už vášmu modulu pridelil Windows . Potom kliknite na odkaz „Install or update MicroPython (esptool)“ a v nasledujúcom okne v riadku „Target port“ vyberiete sériový port priradený vášmu ESP32 modulu, v spodnej časti obrazovky rozkliknete menu a vyberiete „Select local MicroPython image…“, kde budete v následujúcom okne vyzvaný na zadanie názvu súboru s obrazom MicroPython , nalistujete ho vo vašom počítači a zvolíte ho na nahratie. Následné okno informuje , kde je cieľový port, vyberiete typ procesora, v našom prípade ESP32S3, riadok version ukazuje verziu zvoleného image MicroPython určeného na nahratie.
Kliknutím na tlačidlo „Install“ naštartujete zápis do flash pamäte modulu ESP32. Po úspešnom nahratí bude obrazovka programu Thonny v záložke „shell“ obsahovať výpis konzoly vášho MicroPython systému a môžete zadávať príkazy. Stavový riadok vpravo dole vás informuje , že ste pripojený cez USB sériový port (v mojom prípade COM4) k MicroPython systému s ESP32. V ľavej časti okna vidíte záložku „Files“, ktorá v hornej časti zobrazuje obsah lokálneho priečinku vo vašom PC a v spodnej časti súbory nahraté vo vašom module. Nastavte kurzor na lokálny súbor v okne Thonny programu , kliknite pravým tlačidlom myši a zo zobrazeného kontextového menu vyberte „upload …“, tým prekopírujete zvolený súbor do modulu ESP32. Dvojklikom ľavého tlačidla myši, na niektorý súbor, ho otvoríte pre editáciu.
Pre nahratie potrebných python programov do ESP32 to urobíte pre displej takto:
• pripojte displej k PC cez USB a nahrajte Micropython firmware-5.0-A.bin do ESP32
• stiahnite client.rar zo sekcie na stiahnutie a nahrajte rozbalený obsah do koreňového priečinka ESP32 displeja
• na koniec súboru boot.py doplňte príkaz import main_client
Pre naprogramovanie obsahu procesora ESP32 na doske modbus LK-20 postupujeme podobne:
• pripojte ESP32-S3 k USB počítača a nahrajte Micropython najmenej verziu v1.19.1 (2022-06-18)
• stiahnite ap.rar zo sekcie na stiahnutie a nahrajte rozbalený obsah do koreňového priečinka ESP32 displeja na koniec boot.py doplňte príkaz import main_AP. Nahrajte všetky súbory z archívu , nielen tie s prípomou py.
Ovládanie zdroja
Ovládanie dvojice zdrojov sa vykonáva z dotykovej obrazovky HMI displeja rozdelenej do 4 rámcov.
Prvý obsahuje stavový riadok, druhý obsahuje skutočné hodnoty napätia a prúdu pre dvojicu výstupov zdrojov. Tretí rámec zobrazuje požadované (zadané ) hodnoty napätia a prúdu pre výstupné napätie a prúd každého zdroja a štvrtý rámec obsahuje dotykové tlačidlá pre ovládanie zdrojov. Sú to tlačidlá so symbolmi štart a stop pre každý zdroj samostatne a prostredné tlačidlo slúži na vyvolanie informačnej obrazovky s diagnostickými údajmi.
Aktivita tlačidiel je signalizovaná zmenou farby tlačidla. Sivá farba indikuje neaktívny stav, pre prostredné diagnostické tlačidlo je aktívny stav signalizovaný modrou farbou tlačidla. Aktívne tlačidlo štart je signalizované zelenou farbou (vtedy je tlačidlo stop sivej farby), aktivovanie funkcie stop zmení farbu tlačidla stop na červenú a súčasne stav tlačidla štart zmení na sivú. Netreba hádam pripomínať, že funkcia štart znamená aktiváciu napätia na výstupe zdroja na zadané hodnoty a funkcia stop vypne výstupné napätie príslušnej vetvy zdroja. Použitie hardwarového tlačidla SW3 aktivuje výstupné napätie druhého zdroja , ako je uvedené vyššie v texte, čo je signalizované aj zmenou farieb tlačidiel štart a stop pre druhý zdroj.
Priloženie prsta na zobrazovanú hodnotu napätia alebo prúdu v druhom rámci obrazovky , kde sa zobrazujú skutočné hodnoty napätia a prúdu, vyvolá virtuálnu klávesnicu na zadanie požadovaných výstupných hodnôt napätia alebo prúdu.
Klávesnica obsahuje číslice a potvrdzovaciu klávesu „enter“. Zadávanie vstupných hodnôt sa ukončí stlačením klávesy "enter" na klávesnici, alebo zadaním štyroch znakov, podľa toho, čo nastane skôr. Zadávajú sa hodnoty zľava doprava, ak je zadané menej ako 4 znaky, doplnia sa nuly. Napríklad 0+5+"enter" znamená 05.00 voltov , alebo ampér. Počet desatinných miest je pevný, nastavený na 2. Pri zobrazovaní výstupných hodnôt zdroja sa úvodná nula potláča.
Prvý rámec na obrazovke je vyhradený indikácií stavu.
V ľavej časti rámca za názvom status je zobrazený zelený znak ,
ak je všetko v poriadku alebo červené X, ak nastane nejaká chyba. Ikony v ľavej časti stavového riadku signalizujú prebiehajúcu aktivitu, alebo zdroj chyby . Ikony zľava doprava signalizujú zmenou farby a akustickým signálom, chybu na modbus zbernici zdrojov, chybu na TCP spojení klienta a servera, chybu wifi spojenia. Ikona trojuholníka s výkričníkom signalizuje oranžovou farbou prehriatie modulu XY6020 a posledná ikona blikaním signalizuje načítavanie veľkých fontov počas bootovania. Pre každú ikonu platí nasledovné pravidlo: neznámy stav je signalizovaný sivou farbou, bezchybný stav zelenou farbou a chybový stav červenou farbou.
Mechanická konštrukcia
Laboratórny zdroj som zabudoval do počítačovej skrine MC MF-320B Micro Tower. Zadný kovový panel skrine som z časti odstránil a nahradil vlastným panelom z hliníkového plechu , na ktorý som umiestnil zásuvku IEC 230V/16A a poistkové puzdro. Rozmer a vŕtanie otvorov zadného panelu ukazuje obrázok v súbore mechanické časti v sekcií na stiahnutie. Na dno skrine som uchytil panel z hliníkového plechu, s vyrezanými vetracími otvormi a osadený nitovacími maticami , ktoré zároveň slúžia ako distančné stĺpiky pre uchytenie AC/DC meničov v prvom stupni zdroja . Horný hliníkový plech má rovnako nitovacie matice, pre uchytenie DC/DC meničov XY6020, indukčného meniča, zdroja AC/DC +5V a modbus adaptéra .
Tento panel je uchytený na zadnú časť skrine klavírovým pántom, aby bol dobrý prístup ku kabeláži. Použitý typ vodičov , ich dĺžok, káblových ôk, konektorov je zrejmý z Obr31.pdf. Výkres vŕtania horného panelu je mechanické časti v sekcií na stiahnutie. Výstupné svorky, konektor, vypínače a HMI displej sú uchytené priamo na plastový predný panel , do ktorého je potrebné vyrezať potrebné otvory . USB porty som zo skrine odstránil a otvory prekryl malým panelom, ktorý som nalepil na čelo skrine.
Oživenie a nastavenie
Po mechanickom zostavení zdroja a pripojení kabeláže pripojte zdroj na sieť a zapnite hlavný vypínač. Pripojte voltmeter na výstupné svorky zdroja PWR1 a pomocou potenciometra na zdroji nastavte výstupné napätie na 64V. Postup zopakujte aj pre PWR2. Vypnite hlavý vypínač zdroja a pripojte modbus adaptér LK-20 k PC cez USB a nahrajte Micropython do U1 a nakopírujte programy main_AP.py, modbus.py, my_lib.py, wifi_comm.py , ktoré sú obsiahnuté v archíve ap.rar, do koreňového priečinka procesora na U1. Potom pripojte USB kábel z PC na HMI displej a nahrajte firmware displeja obsahujúceho micropython a do koreňového priečinka CPU displeja nahrajte všetky súbory z archívu client.rar. Skontrolujte kabeláž a môžete zdroj zapnúť. Priebeh bootovania, nadväzovanie modbus komunikácie a TCP cez wifi bude signalizované v hornom stavovom riadku a malo by skončiť stavom STATUS: . Ak je to tak, váš zdroj je pripravený k činnosti, ak nie, s najväčšou pravdepodobnosťou ste urobili chybu v kabeláži. Výsledná obrazovka po úspešnom zavedení a spustení programu vyzerá takto:
.
Technické parametre
Režim meniča: step-down/buck
Vstupné napätie: AC 230 V
Výstupné napätie: 0-60 V
Výstupný prúd: 0-20 A
Kolísanie výstupu: 100 mv VPP
Výstupný výkon: 1200 W
Rozlíšenie merania: 0,01 V/A
Aktivácia ventilátora: I > 2A, P > 45W, T > 50 °C
Externá tepelná ochrana: 0 - 110 °C
Prepäťová ochrana na vstupe druhého stupňa : 0-71 V
Podpäťová ochrana na vstupe druhého stupňa: 4.8-71 V
Prepäťová ochrana na výstupe: 65 V
Prúdová ochrana na výstupe: 22 A
Poznámky
Praktickým denným používaním zdroja sa ukázalo, že zabudovanie modulu indukčného ohrevu ZVS 1000W (PWR6) nie je najšťastnejšie riešenie pre jeho nízku spoľahlivosť a prípadným záujemcom o stavbu laboratórneho zdroja neodporúčam jeho zabudovanie. Blok je citlivý na charakter indukčnej záťaže , často zlyháva , nechce samovoľne kmitať, alebo sa zničia FET tranzistory bez toho, aby boli prúdovo , alebo napäťovo preťažené.
Užitočné odkazy
https://dedeideas.eu/index.php/sk/laboratorny-zdroj-s-xy6020l
https://cs.wikipedia.org/wiki/Modbus
https://allegro.sk/ponuka/1000w-zvs-nizkonapatovy-modul-varnej-dosky-14096359685?utm_feed=547ce2b2-2e28-4773-9707-58218068540e&utm_source=google&utm_medium=cpc&utm_campaign=SK%3EAll%3E1fulfillment%3EPLA&ev_campaign_id=21150088683&gad_source=1&gad_campaignid=21150088683&gbraid=0AAAAAqKvbIiOsXLs-Aj_MmAenGOU2RU6O&gclid=CjwKCAjwr5_CBhBlEiwAzfwYuHbxLq3eLmLY6McRudArRqOSeiiurC6zhhg2-5imkzsVqrySlFdw_hoCV_cQAvD_BwE
https://en.wikipedia.org/wiki/User_interface
https://www.waveshare.com/wiki/ESP32-S3-DEV-KIT-N8R8
https://micropython.org/
https://dedeideas.eu/index.php/sk/na-stiahnutie/15-laboratorny-zdroj-lk-20?download=44:xy6020l-users-manual-sk1
https://github.com/sanny32/OpenModScan
https://dedeideas.eu/index.php/sk/na-stiahnutie/15-laboratorny-zdroj-lk-20
https://thonny.org/
https://www.aliexpress.com/item/1005007566574866.html?gatewayAdapt=vnm2glo#nav-specification
https://www.laskakit.cz/riden-rd-1500-68-modulovy-napajeci-230v-ac-dc-zdroj-68v-22-1a-1500w/


