د سیمه ایزو خپلواکو معلوماتو راټولولو سیسټم

شرکت د NEKST-M څارنې پوسټونه اخیستي، چې په کور دننه تولید شوي د Next ټیکنالوژیو لخوا. د پمپ کولو واحدونو عملیاتو لید ډاډ ترلاسه کولو لپاره ،
د اور او امنیت الارمونه، په پیل کې د ولتاژ شتون، د خونې تودوخې، د بیړني اوبو کچه. د NEKST-M زړه ATMEGA 1280 دی او دا حقیقت د ځانګړو اړتیاو لپاره ستاسو د خپل کټ رامینځته کولو امکان له مخې هڅونکی دی.

دنده په لنډ ممکن وخت او لږ لګښت کې د ځانګړو اړتیاو لپاره د بشپړ خپلواک محلي لیږد سیسټم رامینځته کولو لپاره ټاکل شوې وه. اساس یو مایکرو کنټرولر دی. پراختیا، تولید، پخپله د کارمندانو لخوا رامینځته شوی.

سیسټم باید د راډیو فریکوینسي سرچینو کارولو لپاره د ګرځنده شبکو ، سرورونو ، انټرنیټ او جواز ورکولو سیسټم پورې له انحصار پرته کار وکړي ، د نظارت او کنټرول سیسټم په عملیاتو کې کمپیوټر ونه کاروي یا په ډیر وخت کې لیپټاپونه وکاروي ، پرته له لاسرسي څخه. د اوږدې مودې لپاره شیان (6-9 میاشتې). د شبکې ترتیب یو ریډیل جوړښت لري. معلومات په یو وخت کې راټولیږي او بیا د منظم ارتباطي چینلونو له لارې یا د هارډ کاپي په توګه د پروسس لپاره لیږل کیږي.

سیسټم باید چمتو کړي:

  • د پمپ کولو واحدونو د عملیاتو څارنه
  • ټیکنالوژیک اتوماتیک
  • د بیړنیو شرایطو له پایلو څخه ساتنه
  • بیړني سیګنال
  • د عملیاتي وخت محاسبه
  • د مصرف شوي بریښنا مقدار محاسبه کول
  • تجهیزات د حرارت درجه کنټرول
  • امنیت او د اور وژنې الارم
  • د معلوماتو دورې دورې ثبت کول
  • نامعلوم راتلونکي اړتیاوې

د کار شرایط:

  • د پوښښ ساحه 1 مربع کیلومتره.
  • د شیانو ترمنځ مستقیم لید
  • د حرارت درجه له +50 څخه تر -50 درجو پورې
  • رطوبت تر 100٪ پورې
  • د بیولوژیکي پلوه فعال زیرمې (مولډ، سلفیټ کمولو باکتریا)
  • د GOST ISO 1-2-10816 مطابق د 1-97 ټولګیو ماشینونو کمپن، نور نه،
  • بریښنایی مقناطیسي چاپیریال - د KT 6053 تماس کونکو سره د بریښنایی موټرو بدلول ، د RVS-DN نرم پیل تجهیزات ، د سیمنز مایکروماسټر PID کنټرول تجهیزات ، د دې وسیلو اړتیاو سره سم ISM او GSM رینج کې وړانګې ، په سایټ کې د لاسي آرک ویلډینګ
  • د شبکې ډیر ولتاژ، د بریښنا په رسولو کې لنډمهاله خنډونه، د بریښنا ډیر ولتاژ، د پړاو عدم توازن کله چې د 6-10 kV توزیع شبکې کې د سر کرښې تار مات شي.

د داسې سختو غوښتنو سره سره، پلي کول خورا ساده دي کله چې ګام په ګام د ستونزې حل کول.

د هرڅه په پام کې نیولو سره، د "اردوینو نانو 3.0" بورډ د پلان "مغز" شو. د روبوټډین بورډ د ATMEGA 328 کنټرولر لري، د اړتیا لپاره د 3,3V ولټاژ سټیبلیزر
اوسنی 800 mA او کنورټر CH340G UART-USB ته.

تر ټولو لومړی، د عملیاتي ساعتونو شمیرونکي د خورا نوي په توګه رامینځته شوي. مخکې کارول شوي صنعتي میټرونه چې په PICs کې د ټرانسفارمر پرته بریښنا رسولو سرکټ سره راټول شوي وو د عملیاتو په یو کال کې د ولټاژ د زیاتوالي له امله ناکام شوي. یوازې هغه چې د کور جوړ شوي 5V بریښنا رسولو په کارولو سره وصل شوي پاتې دي. د پیوستون د نصبولو او استقامت ګړندی کولو لپاره ، د واحدونو حالت په اړه سیګنال د سویچ کولو وسیلو له ترمینلونو څخه اخیستل کیږي ، د بیلګې په توګه. د 1V درې پړاو بریښنا رسولو سره د لومړي پړاو ولتاژ شتون ثبت کول. د کنټرولر سره همغږي کولو لپاره، د 380V باد سره یو منځنی ریل یا د LED او GL220 فوتوریزیسټور یا د PC5516 آپټوکوپلر څخه جوړ شوی آپټوکوپلر کارول کیږي. ټول انتخابونه ازمول شوي. LED د اوسني محدودیت سره د اصلاح شوي ولټاژ لخوا پرمخ وړل کیږي دوه SVV817 capacitors په کارولو سره د 22V ولتاژ لپاره ډیزاین شوي چې د میګوهمیټر سره د سرکټونو ناڅاپي ازموینې پرمهال د خوندیتوب لپاره په لړۍ کې وصل شوي.
د ST7735S LCD سکرین په کارولو سره د عملیاتي وخت لوستل لوستل ، د ریښتیني وخت ډیټا لیږد د راډیو له لارې د E01-ML01DP05 ماډل په کارولو سره د 2,4 MHz فریکونسۍ کې. دا وسیله د nRF24L01 + چپ او RFX2401C لیږد / ترلاسه کولو امپلیفیر لري،
د تولید بریښنا تر 100 میګاواټه پورې. هیلیکل انتنونه په آنلاین کیلکولیټر کې د مطلوب حد لپاره ډیزاین شوي سایټ. د انتن ډول انتخاب د شاوخوا فلزي جوړښتونو څخه د واحد منعکس شوي موجونو د استقامت په جلا کولو سره ټاکل کیږي. د انتن برخې په 3D چاپګر کې چاپ شوي. د کاونټرونو اوسنی حالت پخپله د کنټرولر په EEPROM کې زیرمه شوی او د غیر متوقع بریښنا بندیدو په صورت کې بیا رغول کیږي. د شمېرنې لپاره د وخت وقفې د RTC چپ DS3231 لخوا د بیک اپ بیټرۍ سره د ماډل په بڼه چمتو شوي. د بریښنا رسولو 3 ماډلونه کاروي، د نبض اصلي سرچینه 220/5V HLK-PM01 600mA، یو کنورټر له 1-5V څخه تر 5V پورې HW-553 и 03962A - د بیټرۍ کنټرولر سره سکیم د شارټ سرکټ ، ډیر خارج کیدو او ډیر چارج پروړاندې محافظت. ټولې برخې په Aliexpress ویب پاڼه کې اخیستل شوي.

د ډوډۍ تختهد سیمه ایزو خپلواکو معلوماتو راټولولو سیسټم
4-چینل کاونټر. په انپټونو کې د LC فلټرونه شتون لري ترڅو د دوه اړخیزو اړیکو لاین کې د مداخلې په وړاندې ساتنه وکړي. د کنټرول شیانو حالت په اړه معلومات په دوامداره توګه په هر ثانیه کې یو ځل لوستل کیږي او په LCD کې په رنګ کې ښودل کیږي. لوستل په هر 1 ثانیو کې په غیر بې ثباته حافظه کې تازه او ثبت کیږي. 36 ثانیې د یو ساعت 36/1 دی، دا هغه بڼه ده چې ډاټا ته اړتیا لري. هر 100 ثانیې. معلومات د هر کنټرول واحد لپاره د عملیاتو د ثانیو په اړه لیږدول کیږي. د EEPROM حافظه د لیکلو پاکولو دورې محدود شمیر لري ، د جوړونکي په وینا ، 12 ځله. ترټولو بد انتخاب هغه وخت دی کله چې لږترلږه یو حجره په دوامداره توګه تازه کیږي. د لومړي کاونټر حجم 100000 بایټس دی ، دا د اوږد فارمیټ شمیره ده ، 1 کاونټرونه ، ټول 4 بایټس د یو ریکارډ لخوا نیول شوی. د چپ حافظې اوږدوالی 4 بایټ دی؛ د 16 کاونټرونو 1024 ننوتلو وروسته ، ثبت کول به بیا پیل شي. د EEPROM کتابتون کې، د EEPROM.put میتود نه لیکل کیږي؛ که د حجرې ارزښت او لیکل شوي معلومات سره سمون ولري، د حجرو تخریب به نه وي. د پایلې په توګه، د تضمین شوي حافظې عملیاتي وخت به د 64 کلونو څخه ډیر وي. د امکان وړ مګر تضمین شوي کار وخت ډیر اوږد کیدی شي.

د سرکټ ډیاګرامد سیمه ایزو خپلواکو معلوماتو راټولولو سیسټم
په Arduino IDE کې برنامه//12 بایټس (328%)

#شامل // د کور ګرافیک کتابتون
#شامل // د هارډویر ځانګړي کتابتون
# شاملول
#شامل
# شاملول
#شامل
#شامل
RF24 راډیو (9، 10)؛ // د RF24 کتابتون سره کار کولو لپاره د راډیو څیز،
// او د پن نمبر nRF24L01+ (CE, CSN)
#شامل
DS3231 rtc(SDA, SCL);
وخت t;

//# TFT_CS 10 تعریف کړئ
# TFT_CS 8 تعریف کړئ
# تعریف TFT_RST -1 // تاسو کولی شئ دا د Arduino ریسیټ سره هم وصل کړئ
// په کوم حالت کې، دا # تعريف پن -1 ته وټاکئ!
//#تعریف TFT_DC 9 // DC=RS=A0 - د کمانډ یا ډیټا راجستر غوره کولو لپاره د ټاکلو اختیارونه.
# TFT_DC 3 تعریف کړئ

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

// اختیار 2: کوم پنونه وکاروئ مګر یو څه ورو!
# TFT_SCLK 13 تعریف کړئ // دا ترتیب کړئ هر هغه پنونه چې تاسو یې خوښوئ!
# TFT_MOSI 11 تعریف کړئ // دا تنظیم کړئ هر هغه پنونه چې تاسو یې خوښوئ!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#شامل

بایټ شفټ = 52؛
بایټ pinState;
نه لاسلیک شوی اوږد پمپ[4]؛// سرنی د 4 ثانیو ضد ارزښتونو سره
float m = 3600.0 ;
نه لاسلیک شوی ادرس = 0 ;
int rc؛// د شمېرونکو لپاره متغیر
نه لاسلیک شوی اوږد سوپریم = 0;
نه لاسلیک شوی اوږد sumsec = 0;
بایټ i = 0;
بایټ k = 34;
غیر لاسلیک شوی int z = 0;
byte b = B00000001 ;
د بایټ پمرکونټر[4]؛ // د اعتراض حالتونو ذخیره کولو لپاره صف، 1 - بند، 0 - آن.
int start = 0 ; //

باطل تنظیم () {

rtc.begin();
radio.begin(); // کار پیل کړئ nRF24L01+
radio.setChannel(120); // د معلوماتو چینل (له 0 څخه تر 127 پورې).
radio.setDataRate(RF24_250KBPS); // د معلوماتو د لیږد کچه (RF24_250KBPS، RF24_1MBPS، RF24_2MBPS).
radio.setPALevel(RF24_PA_MAX); // د لیږدونکي بریښنا (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm،
// RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openWritingPipe(0xAABBCCDD11LL); // د معلوماتو لیږد لپاره د پیژندونکي سره پایپ خلاص کړئ

// د وخت ټاکلو لپاره، اړین لینونه کم کړئ
//rtc.setDOW(1); // د اونۍ ورځ
//rtc.setTime(21, 20, 0); // وخت، د 24 ساعتونو بڼه کې.
//rtc.setDate(29, 10, 2018); // نیټه، د اکتوبر 29، 2018

tft.initR(INITR_BLACKTAB); // د ST7735S چپ پیل کړئ، تور ټب
// که تاسو د 1.44 "TFT کاروئ نو دا ابتکار (غیر تبصره) وکاروئ
//tft.initR(INITR_144GREENTAB); // د ST7735S چپ پیل کړئ، د RED rcB ټب
tft.setTextWrap(غلط); // متن ته اجازه ورکړئ چې د ښي څنډې څخه وځي
tft.setRotation( 2 ); // د تور PCB او RED tft.setRotation(0) لپاره یا نه.
tft.fillScreen(ST7735_BLACK); // روښانه سکرین

DDRD = DDRD | B00000000;
PORTD = PORTD | B11110000؛ // د سافټویر ټینګول کار کوي، په لوړه کچه -
// کنټرول شوي شیان "کار نه کوي"، "4" ټولو 1 لوړ پوړو بندرونو ته لیکل شوي، هیڅ شمیرنه نه کیږي.

د (rc = 0؛ rc <4؛ rc++) لپاره
{
tft.setCursor ( 3, rc * 10 + شفټ ); // د کنټرول شیانو د موقعیت شمیره ښودل
tft.print(rc + 1);
}

tft.setCursor(12, 0); // د متن 3 لینونه تولید کړئ
tft.println("پراختیا او جوړونه"); // د خپلو عزیزانو ستاینه وکړئ
tft.setCursor(24, 10); // یا بد کاپي حق
tft.print("Developer MM");
tft.setCursor(28, 20);
tft.print("BUILD-ER DD");

//د معلوماتو بیا رغونه//////////////////////////////////////// /////////

لپاره ( z = 0; z < 1023; z += 16 ) { // د صنعت د ټولو حجرو له لارې تکرار کیږي
// او د 4 پمپ متغیرونو لړۍ ته لیکي، د هر کاونټر لپاره 4 بایټ، ځکه
// نه لاسلیک شوی اوږد متغیر. 4 کاونټرونه شتون لري، د ټولو 4 څخه یو ریکارډ 16 بایټونه اخلي.
EEPROM.get(z, پمپ[0]); // نو، د لوپ لپاره پرته، لږ حجم
EEPROM.get(z+4, پمپ[1]);
EEPROM.get(z+8, پمپ[2]);
EEPROM.get(z+12, پمپ[3]);

// د 4 کاونټرونو مجموعې لپاره د نوي راتلونکي ارزښت ټاکل
sumprim = (پمپ [0] + پمپ [1] + پمپ [2] + پمپ [3]);

// په sumprim متغیر کې د 4 کاونټرونو د مجموعې نوی ارزښت په متغیر کې د پخواني ارزښت سره پرتله کوي
// sumsec او که پخوانۍ مجموعه د نوي رقم څخه کم یا مساوي وي، نوی لوی یا مساوي ټاکل کیږي
// sumsec ارزښت.

که ( sumsec <= sumprim ) {
sumsec = sumprim; //

// او اوسنی ارزښت z د پتې متغیر ته ټاکل شوی، z د 16 ارزښتونو د 4-بایټ بلاک د پیل پته ده
// کاونټرونه په ورته وخت کې ثبت شوي (کله چې د پورټ رایه ورکول کیږي، د هغې ټول 8 بټونه په ورته وخت کې لیکل شوي،
// زموږ د اړین لوړ 4 بټ پورټ D) په شمول.
پته = z;
}
}

// یوځل بیا د 16 ثبت شوي کاونټر ارزښتونو 4 بایټ بلاک د پیل په پته کې د ایپروم حافظې ته لاسرسی
// وروستی، i.e. ارزښتونه د یخولو له امله د بند یا ریبوټ کولو دمخه. وروستي ثبت کول
// د 4 متغیر پمپونو په قطار کې د کاونټر ارزښتونه.

EEPROM.get(پته، پمپ[0]);
EEPROM.get(پته + 4، پمپ[1]);
EEPROM.get(پته + 8، پمپ[2]);
EEPROM.get(پته + 12، پمپ[3]);

پته += 16; // د وروستي ریکارډ ډیټا له لیکلو پرته د راتلونکي بلاک لیکلو لپاره د پتې زیاتوالی

//د معلوماتو د بیرته ترلاسه کولو پای////////////////////////////////// ///////////////

نښلول (0، شمېرنه، پورته کېدل)؛ // پن D2، مداخلې فعال کړئ، هره ثانیه راشي
// د SQW محصول څخه د RTC DS3231 څخه دالونه

wdt_enable(WDTO_8S); // د څار ټایمر پیل کړئ ، د یخ کیدو په صورت کې کنټرولر ریبوټ کړئ ، وخت ،
// د کوم لپاره چې تاسو اړتیا لرئ د ټایمر ریسیټ کمانډ جاري کړئ wdt_reset (او د نورمال عملیاتو په جریان کې د ریبوټ کولو څخه مخنیوی وکړئ - 8 ثانیې.
// د ازموینو لپاره دا سپارښتنه نه کیږي چې ارزښت له 8 ثانیو څخه کم وټاکئ. پدې حالت کې، ټایمر په غوره توګه بیا تنظیم شوی.
// ټوکې کول، او دا هره ثانیه کیږي.

}

باطل لوپ () {
// خالي دوره، دلته به د برقی موټرو د پرانیستې مرحلې عملیات کنټرول وي
}

باطل شمېر() {

tft.setTextColor(ST7735_WHITE); // د فونټ رنګ تنظیم کړئ
t = rtc.getTime(); // د لوستلو وخت
tft.setCursor(5, 120); // د کرسر موقعیت ترتیب کول
tft.fillRect(5, 120, 50, 7, ST7735_BLACK); // د وخت د محصول ساحه پاکول
tft.print(rtc.getTimeStr()); // د تولید ساعت لوستل

wdt_reset(); // د څارنې هر دورې بیا تنظیم کړئ، د بیلګې په توګه دویمه

د (rc = 0؛ rc <4؛ rc ++) // د ننوتلو حالت د موافقت چک کولو لپاره د دورې پیل
// د پورټ بټس د پورټ D بټونو پخوانی لوستل شوي حالت ته
{
pinState = (PIND >> 4) & ( b << rc );

که (pumrcounter [rc]!= pinState) { // او که سمون نه خوري، نو
pumrcounter[rc] = pinState؛ // د پورټ بټ حالت متغیر د نوي ارزښت 1/0 ټاکل
}
// د رنګ کنټرول شیانو حالت ته اشاره
// BLUE د موجوده سکرین (یا کتابتون؟) یوه کوچنۍ ستونزه ده ، RGB او BGR ګډ شوي.
که (pinState == ( b << rc )) {
tft.fillRect(15، ((rc * 10 + شفټ))، 7، 7، ST7735_BLUE)؛ // د ټیټې کچې شمیرنې لپاره شنه ته نیلي بدل کړئ
} else {
tft.fillRect(15، ((rc * 10 + شفټ))، 7، 7، ST7735_GREEN)؛ // د ټیټې کچې شمیرنې لپاره نیلي ته شین بدل کړئ
پمپ [rc] += 1; // د عملیاتي وخت کاونټر ته 1 ثانیه اضافه کړئ
}
}

k++;
که (k == 36) {
k = 0؛

tft.fillRect(30, شفټ, 97, 40, ST7735_BLACK); // د عملیاتي وخت ښودلو ساحه پاکول
tft.fillRect(60, 120, 73, 7, ST7735_BLACK); // او نیټې

tft.setCursor(60, 120); // د کرسر موقعیت ترتیب کول
tft.print(rtc.getDateStr()); // نیټه په LCD سکرین کې ښکاره کړئ

د (rc = 0؛ rc <4؛ rc ++) // په ټولیزه توګه د فعالیت ساعتونه، لسمه او
{
tft.setCursor ( 30, rc * 10 + shift)؛ // د یو ساعت سلمه برخه د سکرین د 10 پیکسل لخوا ښکته کیدو سره
tft.println(پمپ [rc] / m);
}

// EEPROM ته د "خام" عملیاتي ساعتونو ارزښتونه (په ثانیو کې) لیکل /////////////////////////////////////

لپاره (rc = 0؛ rc <4؛ rc ++)
{
EEPROM.put(پته، پمپ [rc]);
پته += اندازه (فلوټ)؛ // د لیکلو پته متغیر زیات کړئ
}
}

// د ډیټا څخه د راډیو چینل ته ډیټا واستوئ دا په ګوته کوي چې څومره بایټونه باید واستول شي.
که (( k == 6 ) || ( k == 18 ) || ( k == 30 )) {

غیر لاسلیک شوي اوږد معلومات؛

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

لپاره (i = 0؛ i <4؛ i++) {
ډاټا = پمپ [i]؛
radio.write(&data, sizeof(data));
}
}
}

په پای کې یو څو یادښتونه. شمېرنه په ټيټه منطقي کچه کې په داخل کې واقع کیږي.

د پورته کولو مقاومت R2-R5 د فوتوریزیسټور GL36 سره د اختیار لپاره 5516 kOhm دی. د فوټوټرانسسټر آپټوکوپلر او ریلي په حالت کې ، 4,7-5,1 kOhm ته ټاکل شوی. د Arduino Nano v3.0 bootloader د TL866A پروګرامر په کارولو سره د Arduino Uno سره د واچ ډاگ ټایمر سم عملیاتو لپاره بدل شو. فیوزونه د 4,3 V څخه پورته ولتاژونو کې د کار کولو لپاره سم شوي. د خارجي ریسیټ سرکټ R6 C3 نه کارول شوی. د نمونې په برنامه کې، د لیږدونکي فریکونسۍ د غیر جواز شوي حد سره مطابقت نلري؛ د 2,4 MHz حد د 2400.0-2483.5 MHz فریکونسۍ پورې محدود دی.

د E01-ML01DP05 ټرانسمیټر رینج 2400-2525 MHz دی. د یو چینل بینډ ویت 1 MHz دی، کله چې سرعت د "RF24_2MBPS" په توګه ټاکل شوی راډیو.setChannel(120) چینل او بل به اشغال شي، د بیلګې په توګه. بانډ به 2 MHz وي.

سرچینه: www.habr.com

Add a comment