Danas ćemo govoriti o rješenju dostojnom plasmana u Guinnessovu knjigu rekorda – to je kontroler Kincony KC868-A128, koji na ploči ima čak 128 digitalnih ulaza i 128 digitalnih izlaza – tranzistora (MOSFET). S takvim karakteristikama performansi KC868-A128 može postati temelj vrlo složenih projekata. Slaba strana takvih impresivnih mogućnosti je veličina kontrolera – ona prelazi sve granice i pomalo podsjeća na “krilo aviona”. KC868-A128 neće se uklopiti u bilo koji “kućni” razvodni ormar za automatizaciju, za njegovo postavljanje potreban vam je ili industrijski tip ormara ili neka vrsta zasebne kutije. Ali njime upravlja naš omiljeni ESP32, što ga čini jednostavnim za programiranje i izradu različitih realizacija projektnih zahtjeva. Sada ćemo pobliže pogledati KC868-A128 i koncentrirati se na kontrolu svih njegovih 256 ulaza / izlaza.
❯ Kincony KC868-A128
Ako nastavimo s figurativnim analogijama, tada se Kincony KC868-A128 može usporediti s oceanskim kontejnerskim brodom – veći dio ploče zauzimaju “kontejneri” (elementi digitalnih ulaza i MOSFET izlaza), a sam kontroler (“upravljačka kabina” – ESP32, Ethernet itd.) skromno je smješten na jednom rubu ploče. Nije posebno jasno što je glavni dio a koji je sporedni ili ulazni i izlazni elementi nadopunjuju ESP32 ili ESP32 nadopunjuje ulaze i izlaze.
Čak se i različite ideje pojavljuju: nije li bilo efikasnije podijeliti sam kontroler i hipertrofiranu I/O jedinicu na dva odvojena uređaja spojena putem I2C sučelja. U tom slučaju, periferne jedinice bi se mogle spojiti, ovisno o određenom zadatku, na glavni kontroler. Ali to su samo maštarije tko šta više preferira. Očito je Kinconyju lakše osigurati svaki I/O blok s integriranim kontrolerom nego realizirati interkontrolerske konektore i sučelja.
KC868-A128 sadrži:
- Mikrokontroler ESP32 (ESP-WROOM-32E)
- 128 digitalnih optoizoliranih ulaza (“suhi kontakt”)
- 2 analogna ulaza 0-5 V
- 2 analogna ulaza 4–20 mA
- 128 MOSFET izlaza 12/24 V/0.5 A za relej i drugu kontrolu opreme
- 128 LED dioda izlaznog statusa
- Povezivost vanjskih relejnih jedinica KC868-E16 ili ekvivalenta
- RS485 sučelje
- Dva odvojena I2C konektora
- Zaseban serijski port
- Ethernet LAN8270A
- USB priključak za programiranje i punjenje firmware
- Gumbi za vraćanje i preuzimanje
- Napaja se sa 12/24 V DC
Jasno je da KC868-A128 ima sve što je potrebno za provedbu širokog spektra projekata automatizacije, neću se ni detaljno osvrnuti na opis svih njegovih podsustava, samo ću primijetiti da je sve to bogatstvo lako i jednostavno programabilno, u mom slučaju u Arduino okruženju. Primjena uključuje upotrebu KC868-A128 u projektima u kojima treba primati podatke s više ulaza i kontrolirati više izlaza – aktuatora.
KC868-A128 sastavljen, spreman za ugradnju na DIN šinu (samo treba pronaći odgovarajući kabinet)
❯ Plug-in relejne jedinice
KC868-A128 koristi tranzistorske (MOSFET) izlaze koji mogu kontrolirati ne samo releje, već i drugu opremu kao što su solenoidni ventili. Ako želite kontrolirati relej, onda u ovom slučaju morate spojiti vanjske jedinice, na primjer, jedinicu Kincony KC868-E16 ili sličnu.
Dodatna relejna jedinica Kincony KC868-E16
Budući da KC868-A128 ima 128 izlaza, za njihovu punu uporabu bit će potrebno 8 jedinica KC868-E16, ili morate potražiti blokove za više releja, kao što su 32, 64 itd. (ako su dostupni).
❯ Izgled i dizajn
KC868-A128 opremljen je posebnim profilom s navojem za montažu zavertnjima i za montažu na DIN tračnicu. Sve je rastavljeno i jednostavno – dovoljno je odvrnuti nekoliko vijaka duž rubova ovog profila i “gurnuti” upravljačku ploču u stranu. Zbog velikog broja digitalnih ulaza i upravljačkih izlaza, svi elementi nisu stali na gornju stranu ploče. Na poleđini su također optocoupler-i i MOSFET-ovi.
❯ Strujni krugovi
U ovom odjeljku neće se prezentirati svi podsustavi kontrolera KC868-A128 (Kincony u svojim proizvodima koristi standardna rješenja koja su više puta opisana u prethodnim člancima), analizirat će se samo neke od njih, karakteristične i specifične za dotični model. 80% ploče zauzimaju ulazi / izlazi, a preostalih 20% – svi ostali sadržaji kontrolera. Pitam se hoće li uslijediti izdavanje KC868-A256 i koje će dimenzije kontroler imati u ovom slučaju?
Digitalni ulazi
Kontroler ima 128 digitalnih opto izoliranih “suhih kontaktnih” ulaza na EL357 optocouplerima, raspoređenih u 16 konektora sa po 8 kontakata. Kako bi osigurao njihov rad u suradnji s ESP32, KC868-A128 koristi digitalne I/O ekstendere s I2C sučeljem na 8 PCF8575TS čipova. Radi jasnoće i kako ne bi zatrpali shemu, prikazan je samo jedan od 16 blokova optocouplera, ostali su potpuno jednaki. Ekstenderi priključka na PCF8575TS prikazuju svih 8 konektora digitalnih ulaza jedno od dva I2C sučelja (I2C br. 2). Odvojeno, shema konektora za povezivanje digitalnih optoizoliranih ulaza “suhi kontakt”. Svaki konektor ima dva GND kontakta (za zatvaranje).
MOSFET izlazi
Još jedan veliki podsustav kontrolera KC868-A128, čija se interakcija s mikrokontrolerom ESP32 provodi pomoću 8 I/O ekspandera s I2C sučeljem PCF8575TS. Nadalje, kontrolni signali primaju se na optocouplerima TLP181, koji upravljaju sa 128 MOSFET tranzistora NCE40P05Y (40V / 5.3A). Tu su i LED diode indikatora, po kojima možete odrediti trenutno stanje izlaza kontrolera KC868-A128. Dijagram prikazuje samo jedan od 16 MOSFET blokova (ostali su mu potpuno jednaki). Kontrola izlaza provodi se putem I2C sučelja (I2C No1). Svaki konektor ima kontakt za spajanje napona napajanja od 12/24 V.
I2C poveznici
Dvije vrlo korisne stvari za spajanje različitih dodatnih komponenti I2C konektora. S njima se možete povezati, na primjer, display, dodatnim senzorima i drugim elementima. Štoviše, imajte na umu da ovi konektori imaju različita sučelja (I2C No1 i I2C No2). Shematski dijagram podsustava (konektora) I2C:
Serijski poveznik
Ne manje koristan dodatak – na ovaj konektor možete spojiti puno zanimljive opreme koja koristi serijsko sučelje za primanje i prijenos podataka. Shematski dijagram serijskog podsustava (poveznika):
Raspored pinova
Sveobuhvatne informacije o tome što je i kako povezano s mikrokontrolerom ESP32 na ploči KC868-A128.
❯ Shema vanjskih veza
Izvorna shema konektora i vanjskih veza kontrolera KC868-A128 proizvođača. Ovdje možete jasno vidjeti sve lokacije i pinoute konektora.
❯ Programiranje
Pogledajmo sada neke primjere programiranja KC868-128. Budući da se pcf8575 I2C port ekstenderski čipovi koriste za upravljanje digitalnim ulazima i MOSFET izlazima, trebat će nam odgovarajuća PCF8574_library za rad s njima.
Programiranje digitalnih ulaza
Na primjer, zamislimo primanja podataka iz svih 128 digitalnih ulaza kontrolera KC868-A128 i šaljimo te podatke na serijski port. Da bismo bili sigurni da naš program stvarno radi, zatvorit ćemo prvi digitalni ulaz na ground, kratkospojnikom – to bi se trebalo odražavati u izlaznim podacima.
/*
KC868-A128 DI example
*/
#include “Arduino.h”
#include “PCF8575.h”
#define SDA 15
#define SCL 4
PCF8575 pcf_1(0x24, SDA, SCL);
PCF8575 pcf_2(0x25, SDA, SCL);
PCF8575 pcf_3(0x21, SDA, SCL);
PCF8575 pcf_4(0x22, SDA, SCL);
PCF8575 pcf_5(0x26, SDA, SCL);
PCF8575 pcf_6(0x27, SDA, SCL);
PCF8575 pcf_7(0x20, SDA, SCL);
PCF8575 pcf_8(0x23, SDA, SCL);
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println(F(“KC868-128 DI example start…”));
pcf_1.begin();
pcf_2.begin();
pcf_3.begin();
pcf_4.begin();
pcf_5.begin();
pcf_6.begin();
pcf_7.begin();
pcf_8.begin();
for (byte i = 0; i < 16; i++) {
pcf_1.pinMode(i, INPUT);
pcf_2.pinMode(i, INPUT);
pcf_3.pinMode(i, INPUT);
pcf_4.pinMode(i, INPUT);
pcf_5.pinMode(i, INPUT);
pcf_6.pinMode(i, INPUT);
pcf_7.pinMode(i, INPUT);
pcf_8.pinMode(i, INPUT);
}
delay(1000);
}
void loop() {
Serial.println();
for (byte i = 0; i < 16; i++) {Serial.print(pcf_1.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_2.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_3.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_4.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_5.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_6.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_7.digitalRead(i));} Serial.print(‘ ‘);
for (byte i = 0; i < 16; i++) {Serial.print(pcf_8.digitalRead(i));} Serial.print(‘ ‘);
delay(300);
}
Primjer KC868-A128 DI
*/
#include “Arduino.h”
#include “PCF8575.h”
#define SDA 15
#define SCL 4
PCF8575 pcf_1(0x24, SDA, SCL);
PCF8575 pcf_2(0x25, SDA, SCL);
PCF8575 pcf_3(0x21, SDA, SCL);
PCF8575 pcf_4(0x22, SDA, SCL);
PCF8575 pcf_5(0x26, SDA, SCL);
PCF8575 pcf_6(0x27, SDA, SCL);
PCF8575 pcf_7(0x20, SDA, SCL);
PCF8575 pcf_8(0x23, SDA, SCL);
null setup() {
Serijski početak(115200);
Serial.println();
Serial.println(F(“KC868-128 DI primjer starta…”));
pcf_1.begin();
pcf_2.begin();
pcf_3.begin();
pcf_4.begin();
pcf_5.begin();
pcf_6.begin();
pcf_7.begin();
pcf_8.begin();
for (bajt i = 0; i < 16; i++) {
pcf_1.pinMode(i, INPUT);
pcf_2.pinMode(i, INPUT);
pcf_3.pinMode(i, INPUT);
pcf_4.pinMode(i, INPUT);
pcf_5.pinMode(i, INPUT);
pcf_6.pinMode(i, INPUT);
pcf_7.pinMode(i, INPUT);
pcf_8.pinMode(i, INPUT);
}
kašnjenje(1000);
}
void loop() {
Serial.println();
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_1.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_2.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_3.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_4.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_5.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_6.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_7.digitalRead(i));} Serial.print(‘ ‘);
for (bajt i = 0; i < 16; i++) {Serial.print(pcf_8.digitalRead(i));} Serial.print(‘ ‘);
kašnjenje(300);
}
Budući da ploča KC868-128 ima I2C sučelje koje radi na nestandardnim GPIO15 i 4 (I2C #2), to moramo izričito navesti u programu.
Odmah navodimo adrese (0x24, 0x25, 0x21, 0x22, 0x26, 0x27, 0x20, 0x23) ekstendera priključka PCF8575.
#define SDA 15
#define SCL 4
PCF8575 pcf_1(0x24, SDA, SCL);
PCF8575 pcf_2(0x25, SDA, SCL);
PCF8575 pcf_3(0x21, SDA, SCL);
PCF8575 pcf_4(0x22, SDA, SCL);
PCF8575 pcf_5(0x26, SDA, SCL);
PCF8575 pcf_6(0x27, SDA, SCL);
PCF8575 pcf_7(0x20, SDA, SCL);
PCF8575 pcf_8(0x23, SDA, SCL);
Zatim inicijaliziramo linije proširenja kao ulazne i u petlji ispisujemo matricu svih 128 digitalnih ulaza KC868-128 (imajte na umu nulu u prvom položaju svakog retka – to je prvi ulaz spojen s masom). Ovo je veoma kompleksan uređaj, nije kao većina koja sadrži sveka nekoliko digitalnih ulaza i izlaza.
Programiranje izlaza
Pokušajmo sada programirati drugi čip KC868-128 – to je 128 MOSFET izlaza. Zamislite samo električnu ploču na kojoj je na kontroler spojeno 128 releja ili 128 ventila.
/*
/*
KC868-A128 DO example
*/
#include “Arduino.h”
#include “PCF8575.h”
#define SDA 5
#define SCL 16
PCF8575 pcf_1(0x24, SDA, SCL);
PCF8575 pcf_2(0x25, SDA, SCL);
PCF8575 pcf_3(0x21, SDA, SCL);
PCF8575 pcf_4(0x22, SDA, SCL);
PCF8575 pcf_5(0x26, SDA, SCL);
PCF8575 pcf_6(0x27, SDA, SCL);
PCF8575 pcf_7(0x20, SDA, SCL);
PCF8575 pcf_8(0x23, SDA, SCL);
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println(F(“KC868-128 DO example start…”));
pcf_1.begin();
pcf_2.begin();
pcf_3.begin();
pcf_4.begin();
pcf_5.begin();
pcf_6.begin();
pcf_7.begin();
pcf_8.begin();
for (byte i = 0; i < 16; i++) {
pcf_1.pinMode(i, OUTPUT);
pcf_2.pinMode(i, OUTPUT);
pcf_3.pinMode(i, OUTPUT);
pcf_4.pinMode(i, OUTPUT);
pcf_5.pinMode(i, OUTPUT);
pcf_6.pinMode(i, OUTPUT);
pcf_7.pinMode(i, OUTPUT);
pcf_8.pinMode(i, OUTPUT);
}
delay(1000);
}
void loop() {
Serial.println();
pcf_1.digitalWrite(P0, HIGH); Serial.println(F(“OUT1 HIGH”));
delay(3000);
pcf_1.digitalWrite(P0, LOW); Serial.println(F(“OUT1 LOW”));
delay(3000);
}
Ovdje je sve slično održavanju digitalnih ulaza, samo su PCF8575 čipovi spojeni na 1. I2C (GPIO5, 16). Zatim inicijalizirajte objekte i konfigurirajte linije kao izlaze.
#define SDA 5
#define SCL 16
PCF8575 pcf_1(0x24, SDA, SCL);
PCF8575 pcf_2(0x25, SDA, SCL);
PCF8575 pcf_3(0x21, SDA, SCL);
PCF8575 pcf_4(0x22, SDA, SCL);
PCF8575 pcf_5(0x26, SDA, SCL);
PCF8575 pcf_6(0x27, SDA, SCL);
PCF8575 pcf_7(0x20, SDA, SCL);
PCF8575 pcf_8(0x23, SDA, SCL);
Zatim, u petlji, upravljamo jednim (prvim) izlazom, uključivanjem i isključivanjem. Slično tome, može se kontrolirati bilo koji od 128 izlaza na ploči KC868-128.
❯ Zaključak
Sada kada možete dobiti podatke sa stotinu i više senzora i kontrolirati stotinu i više aktuatora u projektu, znate što učiniti u tako velikim projektima. Ono što je najbolje je jednostavnost programiranja – KC868-128 možete lako programirati onoliko koliko želite kontrolirati opremu i komunicirati preko različitih protokola sa svojim IoT sustavom automatizacije.
Pored naglaska na 128 digitalnih ulaza i 128 izlaza, ne smije se zaboraviti da KC868 A128 raspolaže i sa 4 analogna ulaza:
- 2 analogna ulaza 0-5 V
- 2 analogna ulaza 4–20 mA
Kojim se može značajno obogatiti primjena ovog kontrolera na složenim projektima. Tako projekti s isključivo prekidačkim funkcijama se mogu oplemeniti s nadzorom 4 analogne veličine putem analognih senzora.
Želimo vam uspješnu primjenu, a ako nam dostavite vaše zanimljive projekte rado ćemo ih objaviti i podjeliti sa drugima.