Uhlelo lokuqoqa idatha oluzimele

Inkampani ithenge izikhala zokuqapha ze-NEKST-M, ezikhiqizwe ngaphakathi yi-Next Technologies. Ukuqinisekisa ukubonwa kokusebenza kwamayunithi okupompa,
ama-alamu omlilo nezokuphepha, ukuba khona kwamandla kagesi ekuqaleni, izinga lokushisa legumbi, izinga lamanzi eliphuthumayo. Inhliziyo ye-NEKST-M yi-ATMEGA 1280 futhi leli qiniso liyakhuthaza ngokuya nokwenzeka kokudala ikhithi yakho yezidingo ezithile.

Umsebenzi wawusethelwe ukudala uhlelo lokuthunyelwa kwendawo oluzimele ngokugcwele lwezidingo ezithile ngesikhathi esifushane ngangokunokwenzeka nangezindleko ezincane. Isisekelo siyi-microcontroller. Ukuthuthukiswa, ukukhiqiza, okudalwe ngabasebenzi ngokwabo.

Uhlelo kumele lusebenze ngaphandle kokuncika kumanethiwekhi amaselula, amaseva, i-inthanethi kanye nohlelo lwamalayisense okusetshenziswa kwezinsiza zomsakazo, lungasebenzisi amakhompyutha ekusebenzeni kohlelo lokuqapha nokulawula noma, ikakhulukazi, lusebenzise amakhompyutha aphathekayo ngezikhathi ezithile, ngaphandle kokufinyelela izinto isikhathi eside (6-9 izinyanga). Ukumiswa kwenethiwekhi kunokwakheka kweradial. Idatha iqoqwa ngesikhathi esisodwa bese ithunyelwa ukuthi icutshungulwe ngamashaneli okuxhumana avamile noma njengekhophi ephepheni.

Isistimu kufanele ihlinzeke:

  • ukuqapha ukusebenza kwamayunithi okumpompa
  • i-automation yezobuchwepheshe
  • ukuvikelwa emiphumeleni yezimo eziphuthumayo
  • ukusayina kwesimo esiphuthumayo
  • isikhathi sokusebenza sokubala
  • ukubala inani likagesi osetshenzisiwe
  • ukulawula izinga lokushisa kwemishini
  • ukuphepha kanye ne-alamu yomlilo
  • ukuqoshwa okukude ngezikhathi ezithile kolwazi
  • izimfuneko zesikhathi esizayo ezingaziwa

Izimo zokusebenza:

  • indawo yokuhlanganisa 1 sq. km.
  • ukubonakala okuqondile phakathi kwezinto
  • lokushisa kusuka +50 kuya -50 C
  • umswakama kufika ku-100%
  • ama-biologically active deposits (isikhunta, amagciwane anciphisa i-sulfate)
  • ukudlidliza, akusekho, kwemishini yamakilasi 1-2 ngokuya ngeGOST ISO 10816-1-97
  • imvelo kagesi - ukushintsha kwamamotho kagesi ane-KT 6053 contactors, i-RVS-DN into yokuqala ethambile, imishini yokulawula ye-SIEMENS MICROMASTER PID, imisebe ebangeni le-ISM ne-GSM ngokuya ngezidingo zalawa madivayisi, ukushiselwa kwe-arc manual esizeni
  • I-voltage yenethiwekhi eyeqile, ukuphazamiseka kwesikhathi esifushane ekunikezeni ugesi, ukugcwala kombani, ukungalingani kwesigaba lapho intambo yolayini ongaphezulu inqamuka kumanethiwekhi okusabalalisa angu-6-10 kV.

Naphezu kwezidingo eziqinile ezinjalo, ukusebenzisa kulula kakhulu lapho uxazulula inkinga isinyathelo ngesinyathelo.

Ngokucabangela konke, ibhodi elithi "Arduino Nano 3.0" laba "ubuchopho" bohlelo. Ibhodi le-robotdyn linesilawuli se-ATMEGA 328, i-3,3V voltage stabilizer edingekayo
yamanje 800 mA futhi converter ukuze CH340G UART-USB.

Okokuqala nje, izibali zamahora okusebenza zadalwa njengalezo ezakamuva kakhulu. Amamitha ezimboni ayesetshenziswa ngaphambilini ahlanganiswe kuma-PIC anesekhethi yokuphakelwa kukagesi engena-transformer ahlulekile ngenxa yokwenyuka kwamandla kagesi phakathi nonyaka esebenza. Yilabo kuphela abaxhunywe kusetshenziswa izinsiza zikagesi ezenziwe ekhaya eziyi-5V ezihlale zinjalo. Ukusheshisa ukufakwa nokuhlukahluka kokuxhumeka, isignali mayelana nesimo samayunithi sithathwa kumatheminali amadivaysi okushintsha, i.e. ukubhaliswa kokuba khona kwe-voltage yesigaba soku-1 ngamandla wesigaba sesithathu se-380V. Ukuze uxhumanise nesilawuli, i-relay emaphakathi ene-220V yokujikajika noma i-optocoupler eyakhiwe i-LED kanye ne-GL5516 photoresistor noma i-PC817 optocoupler isetshenziswa. Zonke izinketho zahlolwa. I-LED inikwa amandla amandla kagesi alungisiwe anomkhawulo wamanje kusetshenziswa ama-capacitor amabili e-SVV22 adizayinelwe amandla kagesi angu-630V axhunywe ochungechungeni ukuze aphephe ngesikhathi sokuhlolwa ngephutha kwamasekhethi nge-megohmmeter.
Ukufunda ukufundwa kwesikhathi sokusebenza kusetshenziswa isikrini se-LCD se-ST7735S, ukudluliswa kwedatha yesikhathi sangempela ngomsakazo kusetshenziswa imojula ye-E01-ML01DP05 kumafrikhwensi angu-2,4 MHz. Le divayisi iqukethe i-nRF24L01+ chip kanye ne-RFX2401C transmit/receive amplifier,
amandla okukhipha afika ku-100 mW. Ama-antenna angama-Helical aklanyelwe uhla olufunekayo kusibali sokubala esiku-inthanethi isiza. Ukukhethwa kohlobo lwe-antenna kunqunywa ukungafakwa kokwamukelwa kwamagagasi aboniswa ngawodwa ezakhiweni zensimbi ezizungezile. Izingxenye ze-antenna ziphrintwa kuphrinta ye-3D. Isimo samanje sezinto zokubala sigcinwa ku-EEPROM yesilawuli ngokwaso futhi sibuyiselwa esimweni sokunqamuka kwamandla okungalindelekile. Izikhawu zesikhathi zokubala zihlinzekwa yi-RTC chip DS3231 ngendlela yemojuli enebhethri eliyisipele. Ukunikezwa kwamandla kusebenzisa amamojula ama-3, umthombo wangempela we-pulse 220/5V HLK-PM01 600mA, isiguquli esisuka ku-1-5V siye ku-5V I-HW-553 и 03962A - isilawuli sebhethri nge uhlelo ukuvikelwa ekujikelezeni okufushane, ukuchithwa ngokweqile kanye nokukhokhiswa ngokweqile. Zonke izingxenye zathengwa kuwebhusayithi ye-Aliexpress.

Ibhodi lesinkwaUhlelo lokuqoqa idatha oluzimele
4-channel counter. Kukhona izihlungi ze-LC kokokufaka ukuze kuvikelwe ekuphazamisekeni kolayini wokuxhumana ngababili osontekile. Idatha yesimo sokulawula izinto ihlale ifundwa kanye ngomzuzwana futhi iboniswa ngombala ku-LCD. Ukufundwa kuyabuyekezwa futhi kurekhodwe kumemori engaguquguquki njalo ngemizuzwana engama-1. Imizuzwana engu-36 ingu-36/1 wehora, lena ifomethi lapho idatha idingeka khona. Njalo ngemizuzwana eyi-100. ulwazi ludluliselwa mayelana nenani lamasekhondi okusebenza kweyunithi ngayinye yokulawula. Inkumbulo ye-EEPROM inenani elilinganiselwe lemijikelezo yokusula ukubhala, ngokomkhiqizi, izikhathi ezingu-12. Inketho embi kakhulu yilapho okungenani iseli elilodwa livuselelwa njalo. Ivolumu yekhawunta yoku-100000 ingamabhayithi angu-1, lena inombolo yefomethi ende, izinto zokubala ezingu-4, inani lamabhayithi angu-4 lihlala irekhodi elilodwa. Ubude bememori ye-chip bungamabhayithi angu-16; ngemva kokufakwa okungu-1024 kwezibali ezi-64, ukurekhoda kuzoqala phansi. Kulabhulali ye-EEPROM, indlela ye-EEPROM.put ayibhali; uma inani leseli kanye nolwazi olubhalwayo kufana, ngeke kube khona ukuwohloka kwamaseli. Ngenxa yalokho, isikhathi sokusebenza kwenkumbulo esiqinisekisiwe sizoba ngaphezu kweminyaka engu-4. Isikhathi somsebenzi ongenzeka kodwa ongaqinisekisiwe singaba yinde kakhulu.

Umdwebo wesifundaUhlelo lokuqoqa idatha oluzimele
Uhlelo ku-Arduino IDE//12 bytes (328%)

#faka // Umtapo wezithombe oyinhloko
#faka // Umtapo wolwazi oqondene ne-Hardware
#hlanganisa
#faka
#faka
#faka
#faka
Umsakazo we-RF24(9, 10); // into yomsakazo yokusebenza nomtapo wezincwadi we-RF24,
// kanye nezinombolo zephinikhodi nRF24L01+ (CE, CSN)
#faka
I-DS3231 rtc(SDA, SCL);
Isikhathi t;

//#chaza i-TFT_CS 10
#chaza i-TFT_CS 8
#define TFT_RST -1 // ungakwazi futhi ukuxhuma lokhu ekusetheni kabusha kwe-Arduino
// uma kunjalo, setha le phinikhodi ethi #define ibe -1!
//#chaza TFT_DC 9 // DC=RS=A0 - izinketho zokukhetha ukukhetha umyalo noma irejista yedatha.
#chaza TFT_DC 3

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// Inketho 2: sebenzisa noma yiziphi izikhonkwane kodwa kancane kancane!
#chaza i-TFT_SCLK 13 // setha lezi zibe yinoma yiziphi izikhonkwane ozithandayo!
#chaza i-TFT_MOSI 11 // setha lezi zibe yinoma yiziphi izikhonkwane ozithandayo!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#faka

i-byte shift = 52;
i-byte pinState;
iphampu ende engasayiniwe[4];// amalungu afanayo anamanani aphikisayo amasekhondi angu-4
iflothi m = 3600.0;
ikheli le-int elingabhalisiwe = 0;
int rc;// okuguquguqukayo kwezibali
i-suprim ende engasayiniwe = 0;
i-sumsec ende engasayiniwe = 0;
ibhayithi i = 0;
ibhayithi k = 34;
unsigned int z = 0;
ibhayithi b = B00000001;
i-byte pumrcounter[4]; // array yokugcina izinto, 1 - off, 0 - on.
int isiqalo = 0; //

ukusetha okungenalutho () {

rtc.qala ();
umsakazo.qala (); // Qalisa umsebenzi nRF24L01+
radio.setChannel(120); // isiteshi sedatha (kusuka ku-0 kuye ku-127).
radio.setDataRate(RF24_250KBPS); // izinga lokudlulisa idatha (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // amandla okudlulisa (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Vula ipayipi elinenkomba yokudlulisa idatha

// Ukusetha isikhathi, khulula imigqa edingekayo
//rtc.setDOW(1); // Usuku lwesonto
//rtc.setTime(21, 20, 0); // Isikhathi, ngefomethi yamahora angama-24.
//rtc.setDate(29, 10, 2018); // Idethi, Okthoba 29, 2018

tft.initR(INITR_BLACKTAB); // qala i-chip ye-ST7735S, ithebhu emnyama
// Sebenzisa lesi siqalisi (susa amazwana) uma usebenzisa i-1.44" TFT
//tft.initR(INITR_144GREENTAB); // qala i-chip ye-ST7735S, ithebhu ye-rcB EBOMVU
tft.setTextWrap(amanga); // Vumela umbhalo ukuthi usuke kwesokudla
tft.setRotation( 2); // ye-PCB EMNYAMA kanye ne-RED tft.setRotation(0) noma cha.
tft.fillScreen(ST7735_BLACK); // sula isikrini

I-DDRD = I-DDRD | B00000000;
PORTD = PORTD | B11110000;// ukuqinisa isoftware kuyasebenza, izinga eliphezulu -
// izinto ezilawulwayo "azisebenzi", "4" ibhalwe kuwo wonke amachweba aphezulu angu-1 D, akukho kubalwa okwenzekayo.

okwe ( rc = 0; rc <4; rc++)
{
tft.setCursor ( 3, rc * 10 + shift); // ukubonisa izinombolo zendawo yezinto zokulawula
tft.print(rc + 1);
}

tft.setCursor(12, 0); // okukhipha imigqa emi-3 yombhalo
tft.println("ABATHUTHUKISI & BAKHA"); // ukuzidumisa wena obathandayo
tft.setCursor(24, 10); // noma ilungelo lobunikazi elibi
tft.print("DEVELOPER MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

//ukuthola kabusha idatha//////////////////////////////////////// ///////////

ngoba ( z = 0; z < 1023; z += 16 ) {// Iphinda kuwo wonke amaseli embonini
// futhi ubhalele uhlu lwamaphampu aguquguqukayo angu-4, amabhayithi angu-4 kukhawunta ngayinye, ngoba
// okuguquguqukayo okude okungabhalisiwe. Kukhona izinto zokubala ezi-4, irekhodi elilodwa lawo wonke ama-4 lithatha amabhayithi ayi-16.
EEPROM.get(z, futha[0]); // ngakho, ngaphandle kwe-loop, ivolumu encane
I-EEPROM.get(z+4, iphampu[1]);
I-EEPROM.get(z+8, iphampu[2]);
I-EEPROM.get(z+12, iphampu[3]);

// ukwabela inani elisha elilandelayo lesamba sokubala okungu-4
suprim = (ipompo [0] + futha [1] + futha [2] + futha [3]);

// iqhathanisa inani elisha lesamba sokubala okungu-4 kokuguquguquka kwe-suprim nevelu yangaphambili kokuguquguqukayo
// sumsec futhi uma isamba sangaphambilini singaphansi noma silingana nesamba esisha, esisha esikhulu noma esilinganayo siyanikezwa
// inani le-sumsec.

uma ( sumsec <= suprim ) {
sumsec = suprim; //

// futhi inani lamanje elithi z labelwe ukuguquguquka kwekheli, z ikheli lesiqalo sebhulokhi engu-16-byte yamanani angu-4
// izinto zokubala ezirekhodwe ngesikhathi esifanayo (kusukela lapho kuvotwa ichweba, zonke izingcezu zayo eziyi-8 zibhalwa kanyekanye,
// kufaka phakathi izingcezu zethu ezi-4 eziphezulu ezidingekayo ze-port D).
ikheli = z;
}
}

// futhi ukufinyelela inkumbulo ye-eeprom ekhelini lokuqala kwebhlokhi yamabhayithi angu-16 enamanani ama-counter arekhodiwe angu-4
// okokugcina, i.e. amanani ngaphambi kokuvala noma ukuqalisa kabusha ngenxa yokubanda. Iqopha okwakamuva
// amanani aphikisayo abe yiphampu eguquguqukayo engu-4.

EEPROM.get(ikheli, futha[0]);
EEPROM.get(ikheli + 4, futha[1]);
EEPROM.get(ikheli + 8, futha[2]);
EEPROM.get(ikheli + 12, futha[3]);

ikheli += 16; // ukukhulisa ikheli lokubhala ibhulokhi elandelayo ngaphandle kokubhala ngaphezulu idatha yerekhodi lokugcina

//ukuphela kokutholwa kwedatha/////////////////////////////////////// //////////////////

attachIsiphazamisi(0, count, RISING); // pin D2, vumela ukuphazamiseka, woza njalo ngomzuzwana
// ama-pulses avela ku-RTC DS3231 asuka ku-SQW okukhiphayo

wdt_enable(WDTO_8S); // qala isibali sikhathi se-watchdog, qalisa kabusha isilawuli uma kubanda, isikhathi,
// okudingeka ukhiphe umyalo wokusetha kabusha isibali sikhathi wdt_reset( futhi ugweme ukuqalisa kabusha ngesikhathi sokusebenza okuvamile - 8 sec.
// ekuhlolweni akunconyiwe ukusetha inani libe ngaphansi kwamasekhondi angu-8. Kulokhu, isibali sikhathi sisethwa kabusha ngokungcono
// ukudlikiza, futhi kwenzeka njalo ngomzuzwana.

}

i-loop engekho () {
// umjikelezo ongenalutho, lapha kuzoba nokulawulwa kokusebenza kwesigaba esivulekile semoto kagesi
}

isibalo esingenalutho() {

tft.setTextColor(ST7735_WHITE); // setha umbala wefonti
t = rtc.getTime(); // isikhathi sokufunda
tft.setCursor(5, 120); // ukusetha indawo yekhesa
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // ukusula indawo yokukhipha isikhathi
tft.print(rtc.getTimeStr()); // ukufundwa kwewashi lokukhipha

wdt_reset(); // setha kabusha i-watchdog njalo ngomjikelezo, i.e. wesibili

ku-(rc = 0; rc <4; rc ++) // ekuqaleni komjikelezo wokuhlola ukuthobela isimo sokufaka
// amabhithi embobo kuya kusimo esifundiwe sangaphambilini samabhithi echweba D
{
pinState = (PIND >> 4) & ( b << rc );

uma (pumrcounter [rc] != pinState) {// futhi uma ingahambisani, khona-ke
pumrcounter[rc] = pinState; // ukunikeza ukuguquguquka kwesimo sebhithi yembobo inani elisha 1/0
}
// inkomba yesimo sezinto zokulawula umbala
// OKUHLAZA okwesibhakabhaka i-glitch encane yesikrini esikhona (noma umtapo wezincwadi?), i-RGB ne-BGR kuxutshwe.
uma (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // ukuze uthole izinga eliphansi lokubala shintsha OKULUHLAZA kube OKULUHLAZA
} enye {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // ukuze uthole izinga eliphansi lokubala shintsha OKULUHLAZA OKUHLAZA KULUHLAZA kuya OKULUHLAZA
iphampu [rc] += 1; // engeza isekhondi elingu-1 kukhawunta yesikhathi sokusebenza
}
}

k++;
uma (k == 36) {
k = 0;

tft.fillRect(30, shift, 97, 40, ST7735_BLACK); // ukusula indawo yokubonisa isikhathi sokusebenza
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // kanye nezinsuku

tft.setCursor(60, 120); // ukusetha indawo yekhesa
tft.print(rtc.getDateStr()); // bonisa usuku esikrinini se-LCD

ngoba (rc = 0; rc <4; rc ++) // amahora okusebenza okukhiphayo ngokuphelele, okweshumi kanye
{
tft.setCursor ( 30, rc * 10 + shift); // amakhulukhulu ehora ngokushintsha kwesikrini phansi ngamaphikseli angu-10
tft.println(ipompo [rc] / m);
}

// ngokubhala amanani wamahora okusebenza “aluhlaza” (ngemizuzwana) ukuya ku-EEPROM ////////////////////////////

okwe (rc = 0; rc <4; rc++)
{
EEPROM.put(ikheli, futha [rc]);
ikheli += sizeof(ntanta); // khulisa ukuguquguquka kwekheli lokubhala
}
}

// thumela idatha ngesiteshi somsakazo kusuka kudatha ebonisa ukuthi mangaki amabhayithi okufanele athunyelwe.
uma ((k == 6 ) || (k == 18 ) || (k == 30 )) {

idatha ende engasayiniwe;

radio.write(&start, sizeof(start));

okwe (i = 0; i <4; i++) {
idatha = iphampu [i];
radio.write(&data, sizeof(data));
}
}
}

Amanothi ambalwa ekugcineni. Ukubala kwenzeka ezingeni eliphansi elinengqondo kulokho okufakwayo.

Ukumelana nokudonsa i-R2-R5 kungu-36 kOhm ngokukhethwa kukho ngama-photoresistors GL5516. Endabeni ye-optocoupler ye-phototransistor ne-relay, isethwe ku-4,7-5,1 kOhm. I-Arduino Nano v3.0 bootloader yathathelwa indawo i-Arduino Uno kusetshenziswa umhleli we-TL866A ukuze asebenze kahle isibali sikhathi se-watchdog. Amafuse ayalungiswa ukuze asebenze kuma-voltage angaphezu kuka-4,3 V. Isekhethi yangaphandle yokusetha kabusha i-R6 C3 ayizange isetshenziswe. Kuhlelo lwesampula, imvamisa yokudlulisela ayihambisani nobubanzi obungenalayisense; ububanzi be-2,4 MHz bukhawulelwe kumafrikhwensi 2400.0-2483.5 MHz.

Ibanga le-E01-ML01DP05 transmitter lingu-2400-2525 MHz. Umkhawulokudonsa wesiteshi esisodwa ngu-1 MHz, lapho usetha isivinini njengokuthi “RF24_2MBPS” isiteshi esishiwo se-radio.setChannel(120) bese kuzosetshenziswa esinye esilandelayo, i.e. ibhendi izoba ngu-2 MHz.

Source: www.habr.com

Engeza amazwana