Siostam cruinneachaidh dàta fèin-riaghailteach ionadail

Cheannaich a’ chompanaidh puist sgrùdaidh NEKST-M, air an dèanamh aig an taigh le Next Technologies. Gus dèanamh cinnteach à sealladh air obrachadh aonadan pumpaidh,
innealan-rabhaidh teine ​​​​is tèarainteachd, làthaireachd bholtachd aig luchd-tòiseachaidh, teòthachd an t-seòmair, ìre uisge èiginneach. Is e cridhe NEKST-M ATMEGA 1280 agus tha an fhìrinn seo misneachail a thaobh comas do shit fhèin a chruthachadh airson feumalachdan sònraichte.

Chaidh an obair a shuidheachadh gus siostam sgaoilidh ionadail gu tur fèin-riaghailteach a chruthachadh airson feumalachdan sònraichte anns an ùine as giorra a ghabhas dèanamh agus aig a’ chosgais as ìsle. Tha am bun-stèidh na microcontroller. Leasachadh, saothrachadh, a chruthaich an luchd-obrach fhèin.

Feumaidh an siostam obrachadh gun a bhith an urra ri lìonraidhean cealla, frithealaichean, an eadar-lìn agus an siostam ceadachd airson goireasan tricead rèidio a chleachdadh, gun a bhith a’ cleachdadh choimpiutairean ann an obrachadh an t-siostam smachd is riaghlaidh no, aig a’ char as motha, a’ cleachdadh coimpiutairean-glùine bho àm gu àm, gun chothrom air. stuthan airson ùine fhada (6-9 mìosan). Tha structar radial aig rèiteachadh an lìonraidh. Bidh dàta air a chruinneachadh aig aon àm agus an uairsin air a chuir airson a ghiullachd tro shianalan conaltraidh cunbhalach no mar lethbhreac cruaidh.

Feumaidh an siostam a bhith a’ toirt seachad:

  • cumail sùil air obrachadh aonadan pumpaidh
  • fèin-ghluasad teicneòlasach
  • dìon bho bhuaidhean suidheachaidhean èiginneach
  • comharran èiginn
  • àireamhachadh ùine obrachaidh
  • a’ tomhas na tha de dhealan ga chaitheamh
  • smachd teothachd uidheamachd
  • tèarainteachd agus inneal-rabhaidh teine
  • clàradh fiosrachaidh aig astar bho àm gu àm
  • riatanasan neo-aithnichte san àm ri teachd

Suidheachadh obrach:

  • raon còmhdaich 1 km ceàrnagach.
  • faicsinneachd dìreach eadar nithean
  • teòthachd bho +50 gu -50 ° C
  • taiseachd suas gu 100%
  • tasgaidhean gnìomhach bith-eòlasach (molltair, bacteria a tha a 'lùghdachadh sulfate)
  • crathadh, gun a bhith nas motha, de dh’ innealan de chlasaichean 1-2 a rèir GOST ISO 10816-1-97
  • àrainneachd electromagnetic - atharrachadh motaran dealain le luchd-conaltraidh KT 6053, uidheamachd tòiseachaidh bog RVS-DN, uidheamachd smachd SIEMENS MICROMASTER PID, rèididheachd anns an raon ISM agus GSM a rèir riatanasan nan innealan sin, tàthadh arc làimhe air an làrach
  • cus bholtachd lìonra, briseadh geàrr-ùine ann an solar cumhachd, overvoltages dealanach, mì-chothromachadh ìre nuair a bhriseas uèir loidhne os cionn ann an lìonraidhean cuairteachaidh 6-10 kV.

A dh 'aindeoin riatanasan cho cruaidh, tha buileachadh gu math sìmplidh nuair a tha thu a' fuasgladh na duilgheadas ceum air cheum.

A’ toirt aire don a h-uile càil, thàinig am bòrd “Arduino Nano 3.0” gu bhith na “eanchainn” den phlana. Tha rianadair ATMEGA 328 aig a’ bhòrd robotdyn, an stàball bholtachd 3,3V riatanach airson
gnàthach 800 mA agus inneal-tionndaidh gu CH340G UART-USB.

An toiseach, chaidh cunntairean uairean obrach a chruthachadh mar an fheadhainn as ùire. Dh'fhàillig meatairean gnìomhachais a chaidh a chleachdadh roimhe seo air PICn le cuairt solarachaidh cumhachd cruth-atharrachaidh mar thoradh air àrdachadh bholtachd taobh a-staigh bliadhna obrachaidh. Is e dìreach an fheadhainn a bha ceangailte a’ cleachdadh solar cumhachd 5V dachaigh a bha fhathast slàn. Gus stàladh agus sùbailteachd ceangail a luathachadh, thèid comharra mu staid nan aonadan a thoirt bho chrìochan nan innealan suidse, i.e. clàradh làthaireachd bholtaids ìre 1 le solar cumhachd trì-ìre de 380V. Gus co-òrdanachadh leis an rianadair, thathas a’ cleachdadh sealaidheachd eadar-mheadhanach le lùbach 220V no optocoupler air a dhèanamh suas de LED agus photoresistor GL5516 no optocoupler PC817. Chaidh na roghainnean uile a dhearbhadh. Tha an LED air a stiùireadh le bholtadh ceartaichte le cuingealachadh gnàthach a’ cleachdadh dà capacitor SVV22 air an dealbhadh airson bholtadh de 630V ceangailte ann an sreath airson sàbhailteachd rè deuchainn gun fhiosta air na cuairtean le megohmmeter.
Leughadh ùine obrachaidh a’ cleachdadh an scrion ST7735S LCD, tar-chuir dàta fìor-ùine tro rèidio a’ cleachdadh modal E01-ML01DP05 aig tricead 2,4 MHz. Anns an inneal seo tha a’ chip nRF24L01 + agus an amplifier tar-chuir / faighinn RFX2401C,
cumhachd toraidh suas gu 100 mW. Antennas helical air a dhealbhadh airson an raon a tha thu ag iarraidh anns an àireamhair air-loidhne сайта. Tha an roghainn de sheòrsa antenna air a dhearbhadh le bhith a’ dùnadh a-mach fàilteachadh tonnan singilte bho na structaran meatailt mun cuairt. Tha pàirtean antenna air an clò-bhualadh air clò-bhualadair 3D. Tha staid gnàthach nan cunntairean air a stòradh ann an EEPROM an rianadair fhèin agus air ath-nuadhachadh ma thachras briseadh cumhachd ris nach robh dùil. Tha amannan cunntais air an toirt seachad leis a’ chip RTC DS3231 ann an cruth modal le bataraidh cùl-taic. Bidh an solar cumhachd a’ cleachdadh 3 modalan, an fhìor stòr cuisle 220/5V HLK-PM01 600mA, inneal-tionndaidh bho 1-5V gu 5V HW-553 и 03962A - rianadair bataraidh le sgeama dìon an aghaidh cuairt ghoirid, overdischarge agus overcharge. Chaidh na pàirtean uile a cheannach air làrach-lìn Aliexpress.

Bòrd arainSiostam cruinneachaidh dàta fèin-riaghailteach ionadail
Cunntas 4-sianal. Tha sìoltachain LC aig na cuir a-steach gus dìon an aghaidh eadar-theachd thairis air loidhne conaltraidh càraid toinnte. Bithear an-còmhnaidh a’ leughadh dàta mu staid nithean smachd aon uair san diog agus air a thaisbeanadh ann an dath air an LCD. Bidh leughaidhean air an ùrachadh agus air an clàradh ann an cuimhne neo-luaineach gach 1 diog. Is e 36 diogan 36/1 uair a thìde, is e seo an cruth anns a bheil an dàta a dhìth. A h-uile 100 diog. tha fiosrachadh air a chuir a-mach mun àireamh de dhiogan obrachaidh airson gach aonad smachd. Tha àireamh chuingealaichte de chuairtean sgrìobhaidh-sgrios aig cuimhne EEPROM, a rèir an neach-dèanamh, 12 uair. Is e an roghainn as miosa nuair a bhios co-dhiù aon chill ga ùrachadh gu cunbhalach. Is e meud a’ chunntair 100000d 1 bytes, is e àireamh cruth fada a tha seo, 4 cunntairean, tha 4 bytes gu h-iomlan air a ghabhail thairis le aon chlàr. Is e fad cuimhne a’ chip 16 bytes; às deidh 1024 inntrigeadh de 64 cunntairean, tòisichidh clàradh a-rithist. Anns an leabharlann EEPROM, chan eil an dòigh EEPROM.put a’ sgrìobhadh; ma tha luach na cealla agus am fiosrachadh a thathar a’ sgrìobhadh a’ freagairt, cha bhith truailleadh sam bith air na ceallan. Mar thoradh air an sin, bidh an ùine obrachaidh cuimhne cinnteach nas fhaide na 4 bliadhna. Faodaidh an ùine airson obair a bhith comasach ach nach eil cinnteach a bhith fada nas fhaide.

Diagram cuairteSiostam cruinneachaidh dàta fèin-riaghailteach ionadail
Prògram airson Arduino IDE// 12 bytes (328%)

# gabhail a-steach // Leabharlann grafaigean bunaiteach
# gabhail a-steach // Leabharlann bathar-cruaidh sònraichte
#include
# gabhail a-steach
#include
# gabhail a-steach
# gabhail a-steach
Rèidio RF24 (9, 10); // nì rèidio airson a bhith ag obair leis an leabharlann RF24,
// agus àireamhan prìne nRF24L01+ (CE, CSN)
# gabhail a-steach
DS3231 rtc (SDA, SCL);
Uair t;

//#define TFT_CS 10
#define TFT_CS 8
#define TFT_RST -1 // faodaidh tu seo a cheangal ri ath-shuidheachadh Arduino cuideachd
// sa chùis seo, suidhich am prìne #define seo gu -1!
//#define TFT_DC 9 // DC=RS=A0 - roghainnean sònrachaidh airson òrdugh no clàr dàta a thaghadh.
#define TFT_DC 3

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

// Roghainn 2: cleachd prìneachan sam bith ach beagan nas slaodaiche!
#define TFT_SCLK 13 // suidhich iad sin mar na prìnichean as toil leat!
#define TFT_MOSI 11 // suidhich iad sin mar na prìnichean as toil leat!
// Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
# gabhail a-steach

byte shift = 52;
pinState byte;
pumpa fada gun ainm[4];// sreath le luachan cunntais 4 diogan
fleòdradh m = 3600.0;
seòladh int gun ainm = 0;
int rc;// caochlaideach airson cunntairean
sumprim fada gun ainm = 0;
sumsec fada gun ainm = 0;
byte i = 0;
byte k = 34;
gun ainm-sgrìobhte int z = 0;
byte b = B00000001;
byte pumprcounter [4]; // sreath airson stàitean nì a stòradh, 1 - dheth, 0 - air adhart.
int toiseach = 0; //

suidheachadh falamh () {

rtc. tòiseachadh();
radio.begin(); // Tòisich obair nRF24L01+
radio.setChannel(120); // sianal dàta (bho 0 gu 127).
radio.setDataRate(RF24_250KBPS); // ìre gluasad dàta (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // cumhachd sgaoilidh (RF24_PA_MIN= -18dBm, RF24_PA_LOW= -12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Fosgail pìob le aithnichear airson gluasad dàta

// Gus an ùine a shuidheachadh, cuir às do na loidhnichean riatanach
//rtc.setDOW(1); // Latha na seachdain
//rtc.setTime(21, 20, 0); // Ùine, ann an cruth 24 uair.
//rtc.setDate(29, 10, 2018); // Ceann-latha, Dàmhair 29, 2018

tft.initR(INITR_BLACKTAB); // tòisich sgiob ST7735S, tab dubh
// Cleachd an inneal tòiseachaidh seo (neo-iomradh) ma tha thu a’ cleachdadh TFT 1.44 ″
//tft.initR(INITR_144GREENTAB); // tòisich sgiob ST7735S, tab RED rcB
tft.setTextWrap(meallta); // Leig le teacsa ruith far an oir cheart
tft.setRotation( 2 ); // airson DUBH PCB agus RED tft.setRotation(0) no nach eil.
tft.fillScreen(ST7735_BLACK); // sgrion soilleir

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000; // teannachadh bathar-bog ag obair, ìre àrd -
// nithean fo smachd “chan obraich”, tha “4” sgrìobhte gu na 1 prìomh phuirt D, chan eil cunntadh ann.

airson (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + shift ); // a’ taisbeanadh àireamhan suidheachaidh de nithean smachd
tft.print (rc + 1);
}

tft.setCursor(12, 0); // cuir a-mach 3 loidhnichean teacsa
tft.println ("Leasachaidh & TOGAIL"); // gus thu fhèin a mholadh mar luchd-gràidh
tft.setCursor(24, 10); // no dlighe-sgrìobhaidh olc
tft.print ("Leasaiche MM");
tft.setCursor(28, 20);
tft.print ("BUILD-ER DD");

// data recovery/////////////////////////////////////// ///////////

airson ( z = 0; z < 1023; z + = 16 ) {// Ag ath-aithris tro gach ceal sa ghnìomhachas
// agus a’ sgrìobhadh gu sreath de 4 caochladairean pumpa, 4 bytes airson gach cuntair, oir
// caochladair fada gun ainm. Tha 4 cunntairean ann, tha aon chlàr de na 4 a’ toirt 16 bytes.
EEPROM.get(z, pumpa[0]); // mar sin, às aonais an airson lùb, nas lugha de mheud
EEPROM.get(z+4, pumpa[1]);
EEPROM.get(z+8, pumpa[2]);
EEPROM.get(z+12, pumpa[3]);

// a’ sònrachadh an ath luach ùr airson suim 4 cunntairean
sumprim = (pump [0] + pumpa [1] + pumpa [2] + pumpa [3] );

// a’ dèanamh coimeas eadar luach ùr an t-suim de 4 cunntairean anns a’ chaochladair sumprim leis an luach roimhe anns a’ chaochladair
// sumsec agus ma tha an t-suim roimhe nas lugha na no co-ionann ris an t-suim ùr, tha an t-suim ùr nas motha no co-ionann air a shònrachadh
// sumsec luach.

ma tha ( sumsec < = sumprim ) {
sumsec = sumprim; //

// agus tha an luach làithreach z air a shònrachadh don chaochladair seòlaidh, is e z an seòladh aig toiseach bloc 16-byte de 4 luachan
// cunntairean air an clàradh aig an aon àm (oir nuair a thathar a’ bhòtadh air port, tha na 8 pìosan dheth uile air an sgrìobhadh aig an aon àm,
// a’ toirt a-steach na 4 pìosan àrd de phort D).
seòladh = z;
}
}

// a-rithist a’ faighinn cothrom air a’ chuimhne eeprom aig an t-seòladh aig toiseach bloca de 16 bytes de 4 luachan-cunntais clàraichte
// mu dheireadh, i.e. luachan mus dùin thu sìos no ath-thòiseachadh air sgàth reothadh. A ' clàradh an tionndadh as ùire
// counter luachan a-steach do raon de 4 pumpa caochladairean.

EEPROM.get(seòladh, pumpa[0]);
EEPROM.get (seòladh + 4, pumpa [1]);
EEPROM.get (seòladh + 8, pumpa [2]);
EEPROM.get (seòladh + 12, pumpa [3]);

seòladh += 16; // ag àrdachadh an t-seòlaidh airson an ath bhloc a sgrìobhadh gun a bhith a’ sgrìobhadh thairis air dàta a’ chlàir mu dheireadh

// deireadh ath-bheothachadh dàta ///////////////////////////////////// /////////////////

ceangail Eadar-bhriseadh (0, cunnt, ÈIRIGH); // pin D2, cuir an comas stadan, thig a h-uile diog
// buillean bho RTC DS3231 bho thoradh SQW

wdt_enable(WDTO_8S); // tòisich an timer faire, ath-thòisich an rianadair gun fhios nach bi reothadh ann, ùine,
// airson am feum thu an àithne ath-shuidheachadh timer a chuir a-mach wdt_reset ( agus seachain ath-thòiseachadh rè obrachadh àbhaisteach - 8 sec.
// airson deuchainnean chan eilear a’ moladh an luach a shuidheachadh gu nas lugha na 8 diogan. Anns a’ chùis seo, is fheàrr an timer ath-shuidheachadh
// jerking, agus bidh e a 'tachairt a h-uile diog.

}

lùb falamh () {
// cearcall falamh, an seo bidh smachd air obrachadh ìre fosgailte an motair dealain
}

cunntadh falamh () {

tft.setTextColor(ST7735_WHITE); // suidhich dath a’ chruth-clò
t = rtc.getTime(); // àm leughaidh
tft.setCursor(5, 120); // suidheachadh suidheachadh a' chursair
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // a’ glanadh an raon toraidh ùine
tft.print(rtc.getTimeStr()); // leughaidhean cloc toraidh

wdt_reset(); // ath-shuidhich am buidheann faire gach cuairt, i.e. an dàrna fear

airson (rc = 0; rc <4; rc ++) // toiseach a’ chearcall airson sgrùdadh a dhèanamh air gèilleadh an staid cuir a-steach
// pìosan puirt chun staid leughaidh roimhe de bhuillean puirt D
{
pinState = (PIND >> 4) & ( b << rc );

ma tha (pumrcounter [rc] != pinState) {// agus mura h-eil e co-ionnan, an uairsin
pumrcounter[rc] = pinState; // a’ sònrachadh caochladair inbhe bit port luach ùr 1/0
}
// comharra air staid nithean smachd dath
// Tha BLUE na shealladh beag den sgrion (no an leabharlann?), RGB agus BGR measgaichte.
ma tha (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_BLUE); // airson cunntadh ìre ìosal atharraich GREEN gu BLUE
} {Eile
tft.fillRect(15, ((rc * 10 + shift)), 7, 7, ST7735_GREEN); // airson cunntadh ìre ìosal atharraich BLUE gu GREEN
pumpa [rc] += 1; // cuir 1 diog ris a’ chunntair ùine obrachaidh
}
}

k++;
ma tha (k == 36) {
k = 0;

tft.fillRect(30, shift, 97, 40, ST7735_BLACK); // a’ glanadh an raon taisbeanaidh ùine obrachaidh
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // agus cinn-latha

tft.setCursor(60, 120); // suidheachadh suidheachadh a' chursair
tft.print(rtc.getDateStr()); // ceann-latha taisbeanaidh air scrion LCD

airson (rc = 0; rc <4; rc ++) // uairean obrach toraidh gu h-iomlan, deicheamhan agus
{
tft.setCursor (30, rc * 10 + shift ); // ceudamhan uair a thìde le gluasad sgrion sìos le 10 piogsail
tft.println (pump [rc] / m);
}

// a’ sgrìobhadh luachan uairean obrachaidh “amh” (ann an diogan) gu EEPROM /////////////////////////

airson (rc = 0; rc <4; rc++)
{
EEPROM.put(seòladh, pumpa [rc]);
seòladh + = sizeof (fleòdradh); // Meudaich an caochladair seòladh sgrìobhaidh
}
}

// cuir dàta thairis air an t-sianal rèidio bho dhàta a’ sealltainn cia mheud bytes a bu chòir a chuir.
ma tha ((k == 6 ) || (k == 18 ) || (k == 30 )) {

dàta fada gun ainm;

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

airson (i = 0; i <4; i ++) {
dàta = pumpa [i];
radio.write(&data, sizeof(data));
}
}
}

Beagan notaichean aig an deireadh. Bidh cunntadh a’ tachairt aig ìre loidsigeach ìosal aig na cuir a-steach.

Is e an aghaidh tarraing-suas R2-R5 36 kOhm airson an roghainn le photoresistors GL5516. Ann an cùis phototransistor optocoupler agus sealaidheachd, suidhichte gu 4,7-5,1 kOhm. Chaidh an bootloader Arduino Nano v3.0 a chuir an àite an Arduino Uno a ’cleachdadh am prògramadair TL866A airson obrachadh ceart an timer faire. Tha na fuses air an ceartachadh gus obrachadh aig bholtaids os cionn 4,3 V. Cha deach an cuairteachadh ath-shuidheachadh taobh a-muigh R6 C3 a chleachdadh. Anns a ’phrògram sampall, chan eil tricead an inneal-sgaoilidh a’ freagairt ris an raon gun chead; tha an raon 2,4 MHz air a chuingealachadh ri triceadan 2400.0-2483.5 MHz.

Is e raon an inneal-sgaoilidh E01-ML01DP05 2400-2525 MHz. Is e leud-bann aon seanail 1 MHz, nuair a shuidhicheas tu an astar mar “RF24_2MBPS” an sianal radio.setChannel (120) ainmichte agus thèid an ath fhear a chleachdadh, i.e. bidh an còmhlan 2 MHz.

Source: www.habr.com

Cuir beachd ann