Sistèm koleksyon done otonòm lokal yo

Konpayi an te achte pòs siveyans NEKST-M, ki te pwodwi domestik pa Next Technologies. Pou asire vizyalizasyon operasyon inite ponpe yo,
dife ak alam sekirite, prezans vòltaj nan kòmanse, tanperati chanm, nivo dlo ijans. Kè NEKST-M se ATMEGA 1280 e reyalite sa a ankourajan an tèm de posiblite pou kreye pwòp twous ou pou bezwen espesifik yo.

Travay la te fikse pou kreye yon sistèm dispatch lokal totalman otonòm pou bezwen espesifik nan tan ki pi kout posib ak nan pri minimòm. Baz la se yon mikrokontwolè. Devlopman, fabrikasyon, kreye pa anplwaye yo tèt yo.

Sistèm nan dwe opere san yo pa depandans sou rezo selilè, sèvè, entènèt la ak sistèm lisans lan pou itilize resous frekans radyo yo, pa sèvi ak òdinatè nan operasyon sistèm siveyans ak kontwòl la oswa, pi plis, itilize òdinatè pòtab detanzantan, san aksè a. objè pou yon tan long (6-9 mwa). Konfigirasyon rezo a gen yon estrikti radial. Done yo kolekte nan yon pwen epi yo voye yo pou yo trete atravè chanèl kominikasyon regilye oswa kòm yon kopi papye.

Sistèm nan dwe bay:

  • kontwole operasyon inite ponpe yo
  • automatisation teknolojik
  • pwoteksyon kont konsekans kondisyon ijans yo
  • siyal ijans
  • kalkil tan opere
  • kalkile kantite elektrisite konsome
  • ekipman kontwòl tanperati
  • sekirite ak alam dife
  • peryodik anrejistreman aleka nan enfòmasyon
  • kondisyon lavni enkoni

Kondisyon travay:

  • zòn pwoteksyon 1 km sq.
  • vizibilite dirèk ant objè yo
  • tanperati soti nan +50 a -50 C
  • imidite jiska 100%
  • depo byolojik aktif (mwazi, bakteri ki diminye silfat)
  • Vibration, pa plis, nan machin nan klas 1-2 dapre GOST ISO 10816-1-97
  • anviwònman elektwomayetik - chanje nan motè elektrik ak kontakè KT 6053, RVS-DN ekipman demaraj mou, ekipman kontwòl SIEMENS MICROMASTER PID, radyasyon nan seri ISM ak GSM selon kondisyon yo pou aparèy sa yo, soude manyèl arc sou sit.
  • twòp vòltaj rezo a, entèripsyon kout tèm nan ekipman pou pouvwa, survoltaj zèklè, dezekilib faz lè yon fil liy anlè kraze nan rezo distribisyon 6-10 kV.

Malgre kondisyon sevè sa yo, aplikasyon se byen senp lè rezoud pwoblèm nan etap pa etap.

Lè w ap pran tout bagay an kont, tablo "Arduino Nano 3.0" te vin "sèvo" plan an. Tablo robotdyn a gen yon kontwolè ATMEGA 328, estabilizasyon vòltaj 3,3V ki nesesè pou
aktyèl 800 mA ak konvètisè CH340G UART-USB.

Premye a tout, kontè èdtan opere yo te kreye kòm sa yo ki pi ajou. Prevans itilize mèt endistriyèl yo reyini sou PICs ak yon sikwi ekipman pou pouvwa transfòmatè echwe akòz monte vòltaj nan yon ane nan operasyon. Se sèlman moun ki konekte lè l sèvi avèk endijèn 5V ekipman pou pouvwa rete entak. Pou pi vit enstalasyon ak adaptabilite nan koneksyon, yo pran yon siyal sou eta a nan inite yo nan tèminal yo nan aparèy yo chanje, i.e. enskripsyon nan prezans nan vòltaj la faz 1ye ak yon ekipman pou pouvwa twa-faz nan 380V. Pou kowòdone ak kontwolè a, yo itilize yon relè entèmedyè ki gen yon likidasyon 220V oswa yon optocoupler ki konpoze de yon LED ak yon fotorezistans GL5516 oswa yon optocoupler PC817. Tout opsyon yo te teste. Dirije a ap mache ak yon vòltaj rektifye ak limit aktyèl lè l sèvi avèk de kondansateur SVV22 ki fèt pou yon vòltaj 630V konekte nan seri pou sekirite pandan tès aksidan sikui yo ak yon megohmmeter.
Lekti tan fonksyònman lekti lè l sèvi avèk ekran LCD ST7735S, transmisyon done an tan reyèl atravè radyo lè l sèvi avèk modil E01-ML01DP05 nan yon frekans 2,4 MHz. Aparèy sa a gen chip nRF24L01+ ak anplifikatè transmèt/resevwa RFX2401C,
pouvwa pwodiksyon jiska 100 mW. Antèn helicoïdal ki fèt pou seri a vle nan kalkilatris la sou entènèt sit. Se chwa nan kalite antèn detèmine pa esklizyon an nan resepsyon an nan vag yon sèl reflete soti nan estrikti metal ki antoure. Pati antèn yo enprime sou yon enprimant 3D. Eta aktyèl la nan kontwa yo estoke nan EEPROM nan kontwolè a tèt li epi li retabli nan evènman an nan yon pann kouran inatandi. Entèval tan pou konte yo bay RTC chip DS3231 nan fòm lan nan yon modil ak yon batri backup. Ekipman pou pouvwa a sèvi ak 3 modil, sous aktyèl batman kè 220/5V HLK-PM01 600mA, yon konvètisè soti nan 1-5V 5V. HW-553 и 03962A - kontwolè batri ak konplo pwoteksyon kont kous kout, overdischarge ak surcharge. Tout eleman yo te achte sou sit entènèt Aliexpress la.

Tablo penSistèm koleksyon done otonòm lokal yo
4-chanèl kontwa. Gen filtè LC nan antre yo pou pwoteje kont entèferans sou yon liy kominikasyon pè trese. Done sou eta a nan objè kontwòl yo toujou ap li yon fwa pou chak segonn epi parèt nan koulè sou LCD a. Lekti yo mete ajou epi anrejistre nan memwa ki pa temèt chak 1 segonn. 36 segonn se 36/1 nan yon èdtan, sa a se fòma nan ki done yo mande yo. Chak 100 sec. yo transmèt enfòmasyon sou kantite segonn nan operasyon pou chak inite kontwòl. EEPROM memwa gen yon kantite limite nan sik ekri-efase, dapre manifakti a, 12 fwa. Opsyon ki pi mal la se lè omwen yon selil yo toujou ap mete ajou. Volim 100000ye kontwa an se 1 bytes, sa a se yon nimewo fòma long, 4 kontwa, yon total de 4 bytes okipe pa yon dosye. Longè memwa chip la se 16 bytes; apre 1024 antre nan 64 kontè, anrejistreman ap kòmanse sou. Nan bibliyotèk EEPROM, metòd EEPROM.put pa ekri, si valè selil la ak enfòmasyon ke yo ekri a matche, pa pral gen degradasyon selil yo. Kòm yon rezilta, tan an fonksyone memwa garanti yo pral plis pase 4 ane. Tan an nan travay posib men pa garanti ka pi lontan ankò.

Dyagram sikwiSistèm koleksyon done otonòm lokal yo
Pwogram nan Arduino IDE//12 octets (328%)

#enkli // Bibliyotèk grafik debaz
#enkli // Materyèl espesifik bibliyotèk
# enkli
#enkli
# enkli
#enkli
#enkli
RF24 radyo (9, 10); // objè radyo pou travay ak bibliyotèk RF24 la,
// ak nimewo PIN nRF24L01+ (CE, CSN)
#enkli
DS3231 rtc (SDA, SCL);
Tan t;

//#defini TFT_CS 10
#defini TFT_CS 8
#defini TFT_RST -1 // ou ka tou konekte sa a ak reset Arduino
// nan ka sa a, mete PIN #defini sa a nan -1!
//#define TFT_DC 9 // DC=RS=A0 - opsyon deziyasyon pou chwazi yon lòd oswa done rejis.
#defini TFT_DC 3

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

// Opsyon 2: sèvi ak nenpòt broch men yon ti kras pi dousman!
#define TFT_SCLK 13 // mete sa yo pou yo dwe tou sa pin ou renmen!
#define TFT_MOSI 11 // mete sa yo pou yo dwe tou sa pin ou renmen!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#enkli

byte chanjman = 52;
byte pinState;
ponp long ki pa siyen[4];// etalaj ak valè kontwa 4 segonn
flote m = 3600.0;
unsigned int adrès = 0;
int rc;// varyab pou kontè
sumprim long ki pa siyen = 0;
unsigned long sumsec = 0;
byte i = 0;
byte k = 34;
unsigned int z = 0;
byte b = B00000001;
byte pumrcounter[4]; // etalaj pou estoke eta objè, 1 - off, 0 - on.
int kòmanse = 0; //

konfigirasyon anile () {

rtc.begin();
radyo.begin(); // Inisye travay nRF24L01+
radio.setChannel(120); // kanal done (de 0 a 127).
radio.setDataRate(RF24_250KBPS); // pousantaj transfè done (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // pouvwa transmetè (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm,
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // Louvri yon tiyo ak yon idantifyan pou transfè done

// Pou fikse lè a, retire liy ki nesesè yo
//rtc.setDOW(1); // Jou nan semèn nan
//rtc.setTime(21, 20, 0); // Tan, nan fòma 24 èdtan.
//rtc.setDate(29, 10, 2018); // Dat, 29 oktòb 2018

tft.initR(INITR_BLACKTAB); // inisyalize yon chip ST7735S, tab nwa
// Sèvi ak inisyalize sa a (uncomment) si w ap itilize yon TFT 1.44".
//tft.initR(INITR_144GREENTAB); // inisyalize yon chip ST7735S, RED rcB tab
tft.setTextWrap(fo); // Pèmèt tèks kouri sou kwen dwat
tft.setRotation(2); // pou NWA PCB ak WOUJ tft.setRotation(0) oswa ou pa.
tft.fillScreen(ST7735_BLACK); // klè ekran

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000; // lojisyèl pi sere ap travay, wo nivo -
// objè kontwole "pa travay", "4" ekri nan tout 1 pò ansyen D, pa gen okenn konte fèt.

pou (rc = 0; rc <4; rc++)
{
tft.setCursor (3, rc * 10 + shift); // montre nimewo pozisyon objè kontwòl yo
tft.print(rc + 1);
}

tft.setCursor(12, 0); // pwodiksyon 3 liy tèks
tft.println("DEVLOPÒ & KONSTWI"); // fè lwanj tèt ou moun ou renmen yo
tft.setCursor(24, 10); // oswa move copyright
tft.print("DEVELOPPÈ MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

//rekiperasyon done////////////////////////////////////////////// ///////////

pou ( z = 0; z < 1023; z += 16 ) { // Itere atravè tout selil endistri a
//Epi ekri nan yon etalaj de 4 varyab ponp, 4 byte pou chak kontwa, paske
// varyab long ki pa siyen. Gen 4 kontè, yon dosye nan tout 4 pran 16 bytes.
EEPROM.get(z, ponp[0]); // Se konsa, san yo pa bouk la, mwens volim
EEPROM.get(z+4, ponp[1]);
EEPROM.get(z+8, ponp[2]);
EEPROM.get(z+12, ponp[3]);

// bay yon nouvo valè pwochen pou sòm 4 kontè
sumprim = (ponp [0] + ponp [1] + ponp [2] + ponp [3]);

// konpare nouvo valè sòm 4 kontè nan varyab sumprim la ak valè anvan an nan varyab la
// sumsec epi si sòm anvan an mwens pase oswa egal ak nouvo sòm, nouvo sòm ki pi gran oswa egal a bay
// valè sumsec.

si (sumsec <= sumprim) {
sumsec = sumprim; //

//ak valè aktyèl la z asiyen nan varyab adrès la, z se adrès la nan kòmansman an nan yon blòk 16-byte nan 4 valè
// kontè anrejistre nan menm tan an (depi lè sondaj yon pò, tout 8 bit nan li yo ekri an menm tan,
// ki gen ladan nou nesesè segondè 4 Bits nan pò D).
adrès = z;
}
}

// yon lòt fwa ankò jwenn aksè nan memwa eeprom nan adrès la nan kòmansman an nan yon blòk 16 byte nan 4 valè kontwa anrejistre
// dènye, i.e. valè anvan fèmen oswa rdemare akòz konjelasyon. Anrejistreman dènye a
// kontre valè nan yon etalaj de 4 varyab ponp.

EEPROM.get(adrès, ponp[0]);
EEPROM.get (adrès + 4, ponp [1]);
EEPROM.get (adrès + 8, ponp [2]);
EEPROM.get (adrès + 12, ponp [3]);

adrès += 16; //Ogmante adrès la pou ekri pwochen blòk la san yo pa ranplase done dènye dosye a

//fen rekiperasyon done//////////////////////////////////////////// //////////////////

attachInterrupt(0, konte, RISING); // PIN D2, pèmèt entèwonp, vini chak segonn
// pulsasyon soti nan RTC DS3231 soti nan pwodiksyon SQW

wdt_enable (WDTO_8S); // kòmanse revèy gadyen an, rdemare kontwolè a nan ka konjelasyon, tan,
// pou ki ou bezwen bay lòd reset revèy wdt_reset (epi evite rdemare pandan operasyon nòmal - 8 sec.
// pou tès li pa rekòmande yo mete valè a nan mwens pase segonn 8. Nan ka sa a, revèy la reset de preferans
// jerking, epi li rive chak segonn.

}

anile bouk () {
// sik vid, isit la pral gen kontwòl sou operasyon an louvri-faz nan motè elektrik la
}

konte anile () {

tft.setTextColor(ST7735_WHITE); // mete koulè font la
t = rtc.getTime(); // li tan
tft.setCursor(5, 120); // mete pozisyon kurseur la
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // netwaye zòn pwodiksyon tan an
tft.print (rtc.getTimeStr ()); // pwodiksyon revèy lekti

wdt_reset(); // Reyajiste watchdog la chak sik, sa vle di dezyèm fwa

pou (rc = 0; rc < 4; rc ++) // kòmansman sik la pou tcheke konfòmite eta a opinyon.
// pò Bits nan eta a anvan lekti nan pò D Bits
{
pinState = (PIND >> 4) & ( b << rc );

si (pumrcounter [rc] != pinState) { // epi si pa matche, lè sa a
pumrcounter[rc] = pinState; // bay varyab estati pò a yon nouvo valè 1/0
}
// endikasyon nan eta a nan objè kontwòl koulè
// BLUE se yon ti pwoblèm nan ekran an ki deja egziste (oswa bibliyotèk?), RGB ak BGR yo melanje.
si (pinState == ( b << rc )) {
tft.fillRect(15, ((rc * 10 + maj)), 7, 7, ST7735_BLUE); // pou nivo konte ba chanje VÈT pou BLE
} Lòt bagay {
tft.fillRect(15, ((rc * 10 + maj)), 7, 7, ST7735_GREEN); // pou nivo konte ki ba chanje BLUE a VÈT
ponp [rc] += 1; // ajoute 1 segonn nan kontwa tan fonksyònman an
}
}

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

tft.fillRect(30, shift, 97, 40, ST7735_BLACK); // netwaye zòn ekspozisyon tan fonksyònman an
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // ak dat

tft.setCursor(60, 120); // mete pozisyon kurseur la
tft.print (rtc.getDateStr ()); // montre dat la sou ekran LCD a

pou (rc = 0; rc < 4; rc ++) //sòti èdtan fonksyònman an antye, dizyèm ak
{
tft.setCursor (30, rc * 10 + shift); // santyèm nan yon èdtan ak yon chanjman ekran desann pa 10 piksèl
tft.println(ponp [rc] / m);
}

// ekri valè "kri" èdtan fonksyònman (an segonn) nan EEPROM ///////////////////////////////

pou (rc = 0; rc < 4; rc++)
{
EEPROM.put(adrès, ponp [rc]);
adrès += sizeof(float); // ogmante varyab adrès ekri a
}
}

// voye done sou kanal radyo a soti nan done ki endike konbyen byte yo ta dwe voye.
si ((k == 6 ) || (k == 18 ) || (k == 30 )) {

done long ki pa siyen;

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

pou (mwen = 0; mwen <4; i++) {
done = ponp [i];
radio.write(&done, sizeof(done));
}
}
}

Kèk nòt nan fen. Konte fèt nan yon nivo ki ba lojik nan entrain yo.

Rezistans Pull-up R2-R5 se 36 kOhm pou opsyon ki gen fotorezistans GL5516. Nan ka yon optocoupler fototransistor ak relè, mete sou 4,7-5,1 kOhm. Arduino Nano v3.0 bootloader la te ranplase ak Arduino Uno lè l sèvi avèk pwogramè TL866A pou operasyon kòrèk revèy gadyen an. Fyouz yo korije pou opere nan vòltaj ki pi wo a 4,3 V. Sikwi ekstèn R6 C3 yo pa te itilize. Nan pwogram echantiyon an, frekans transmetè a pa koresponn ak seri san lisans lan; ranje 2,4 MHz limite a sa sèlman frekans 2400.0-2483.5 MHz.

Ranje E01-ML01DP05 transmetè a se 2400-2525 MHz. Pleasant yon sèl kanal se 1 MHz, lè w ap fikse vitès la kòm "RF24_2MBPS" chanèl radio.setChannel(120) espesifye ak pwochen an ap okipe, i.e. gwoup la pral 2 MHz.

Sous: www.habr.com

Add nouvo kòmantè