সুচিপত্র:

8 চ্যানেল প্রোগ্রামযোগ্য টাইমার: 13 টি ধাপ
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার: 13 টি ধাপ

ভিডিও: 8 চ্যানেল প্রোগ্রামযোগ্য টাইমার: 13 টি ধাপ

ভিডিও: 8 চ্যানেল প্রোগ্রামযোগ্য টাইমার: 13 টি ধাপ
ভিডিও: Automatic on/off dual timer connection | 8 pin 2 timer connection 2024, জুলাই
Anonim
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার
8 চ্যানেল প্রোগ্রামযোগ্য টাইমার

ভূমিকা

আমি 1993 সাল থেকে আমার প্রকল্পের জন্য মাইক্রোচিপের PIC রেঞ্জের মাইক্রোকন্ট্রোলার ব্যবহার করছি, এবং মাইক্রোচিপ MPLab IDE ব্যবহার করে অ্যাসেম্বলার ভাষায় আমার সমস্ত প্রোগ্রামিং করেছি। আমার প্রকল্পগুলি সাধারণ ট্র্যাফিক লাইট এবং ফ্ল্যাশিং এলইডি থেকে শুরু করে, আরবি/সি মডেলের ইউএসবি জয়স্টিক ইন্টারফেস এবং শিল্পে ব্যবহৃত সুইচগিয়ার অ্যানালাইজার পর্যন্ত। বিকাশে অনেক দিন লেগেছিল, এবং কখনও কখনও অ্যাসেম্বলার কোডের হাজার হাজার লাইন।

ম্যাট্রিক্স মাল্টিমিডিয়া ফ্লোকোড 4 প্রফেশনাল পাওয়ার পর আমি সফটওয়্যারটি নিয়ে বেশ সংশয়ী ছিলাম। এটা বিশ্বাস করা খুব সহজ লাগছিল। আমি এটি একটি চেষ্টা করার সিদ্ধান্ত নিয়েছে, এবং সব বিভিন্ন কম্পোনেন্ট ম্যাক্রো পরীক্ষা, সব মহান সাফল্যের সঙ্গে। ফ্লোকোড ব্যবহার করার সবচেয়ে ভালো দিক হল যে সহজ প্রকল্পগুলো এক রাতে কোড করা যায়। I²C এবং DS1307 রিয়েল টাইম ঘড়ির সাথে খেলার পরে, আমি ফ্লোকোড ব্যবহার করে 8 টি চ্যানেল টাইমার ডিজাইন করার সিদ্ধান্ত নিয়েছি। একটি ছোট এবং সহজ প্রকল্প নয়, আমি বিশ্বাস করি যে এটি আমাকে ফ্লোকোড শেখানোর জন্য একটি দুর্দান্ত প্রকল্প হবে।

একটি মাইক্রোপ্রসেসর এবং অন্যান্য উপাদান নির্বাচন করা

প্রয়োজনীয় I/O পিনের সংখ্যার কারণে, এটি স্পষ্ট ছিল যে একটি 40 পিন ডিভাইসের প্রয়োজন হবে। PIC 18F4520 নির্বাচিত হয়েছিল, প্রধানত তার 32K প্রোগ্রাম মেমরির জন্য এবং 1536 বাইট ডেটা মেমরির জন্য। ব্যবহৃত সমস্ত উপাদান, স্ট্যান্ডার্ড থ্রু-হোল ডিভাইস, প্রয়োজনে ভেরো বোর্ডে সার্কিট তৈরি করা সম্ভব করে তোলে। এটি একটি ব্রেডবোর্ডের উন্নয়নেও সহায়তা করেছিল।

ধাপ 1: প্রকল্পের উদ্দেশ্য

প্রকল্পের উদ্দেশ্য
প্রকল্পের উদ্দেশ্য

উদ্দেশ্য

- ব্যাটারি ব্যাক-আপ সহ সঠিক সময় পালন।

- ক্ষমতা হারানোর পরেও সমস্ত প্রোগ্রাম এবং ডেটা ধরে রাখা হবে।

- সহজ ইউজার ইন্টারফেস।

- প্রোগ্রামিং নমনীয়তা

সময় পালন

বিদ্যুৎ ব্যর্থতার ঝুঁকিপূর্ণ এলাকায় বাস করা, পাওয়ার লাইন থেকে স্ট্যান্ডার্ড 50/60Hz সঠিক সময় রাখার জন্য যথেষ্ট হবে না। একটি বাস্তব সময় ঘড়ি অপরিহার্য ছিল, এবং বেশ কয়েকটি RTC চিপ পরীক্ষা করার পর, আমি DS1307 এর সিদ্ধান্ত নিয়েছিলাম তার সহজ অসিলেটর এবং ব্যাটারি ব্যাক-আপ কনফিগারেশনের কারণে। DS1307 এর সাথে সংযুক্ত কেবল 32.768 kHz স্ফটিক ব্যবহার করে বেশ সঠিক সময় পালন করা হয়েছিল। স্ফটিকগুলির 4 টি ভিন্ন ব্যবহার করে 2 মাসের ট্রায়াল সময়কালে 2 সেকেন্ডের মধ্যে নির্ভুলতা ছিল।

তথ্য ধারণ

সমস্ত টাইমার প্রোগ্রামের ডেটা ধরে রাখতে হবে, এমনকি বিদ্যুৎ ব্যর্থতার সময়ও। 100 টি পর্যন্ত বিভিন্ন প্রোগ্রাম এবং বিভিন্ন কনফিগারেশন ডেটা দিয়ে, এটি স্পষ্ট হয়ে গেল যে PIC এর অন-বোর্ড EEPROM এর 256 বাইট যথেষ্ট বড় হবে না। একটি 24LC256 I²C EEPROM সমস্ত প্রোগ্রামিং তথ্য সংরক্ষণ করতে ব্যবহৃত হয়।

সহজ ইউজার ইন্টারফেস

ইউজার ইন্টারফেসে রয়েছে মাত্র 2 টি আইটেম, একটি 16 x 4 লাইন এলসিডি ডিসপ্লে এলইডি ব্যাকলাইট এবং একটি 4 x 3 কিপ্যাড। সমস্ত প্রোগ্রামিং কেবল কয়েকটি বোতাম টিপে করা যেতে পারে। ইন্টারফেসে সংযোজন হল একটি শ্রবণযোগ্য পাইজো বুজার, এবং ভিজ্যুয়াল ফ্ল্যাশিং এলসিডি ব্যাকলাইট।

ধাপ 2: প্রোগ্রামিং নমনীয়তা

প্রোগ্রামিং নমনীয়তা
প্রোগ্রামিং নমনীয়তা

পর্যাপ্ত প্রোগ্রামের নমনীয়তা নিশ্চিত করতে, টাইমারের 100 টি প্রোগ্রাম রয়েছে যা পৃথকভাবে সেট করা যেতে পারে। প্রতিটি প্রোগ্রামের জন্য, অন টাইম, অফ টাইম, আউটপুট চ্যানেল এবং সপ্তাহের দিন নির্ধারণ করা যেতে পারে। প্রতিটি প্রোগ্রামের তিনটি মোড রয়েছে:

- অটো: সময়, অফ টাইম, আউটপুট চ্যানেল এবং সপ্তাহের দিন সেট করা আছে।

- বন্ধ: পৃথক প্রোগ্রাম সেটিংস মুছে ফেলা ছাড়া অক্ষম করা যেতে পারে। প্রোগ্রামটি আবার সক্রিয় করতে, কেবল একটি ভিন্ন মোড নির্বাচন করুন।

- দিন/রাত: সময়, অফ টাইম, আউটপুট চ্যানেল এবং সপ্তাহের দিন সেট করা আছে। অটো মোডের মতোই কাজ করে, কিন্তু করবে

অন্ধকার হলে শুধুমাত্র আউট এবং অফের মধ্যে আউটপুট চালু করুন। এটি পুরো দিন/রাতের নিয়ন্ত্রণকেও সক্ষম করে

সূর্যাস্তের সময় লাইট জ্বালানোর এবং সূর্যোদয়ের সময় বন্ধ করার জন্য অতিরিক্ত নমনীয়তা হিসাবে।

উদাহরণ 1: 20:00 এর পরে আলো জ্বালাবে, এবং সূর্যোদয়ের সময় আলো বন্ধ করবে:

চালু: 20:00, বন্ধ: 12: 00, উদাহরণ 2: সূর্যাস্তের সময় আলো জ্বালাবে, এবং 23:00 এ আলো বন্ধ করবে।

চালু: 12:00

বন্ধ: 23:00

উদাহরণ 3: সূর্যাস্তের সময় আলো জ্বালাবে, এবং সূর্যোদয়ের সময় আলো বন্ধ করবে।

চালু: 12:01

বন্ধ: 12:00

অতিরিক্ত বিকল্প উপলব্ধ, সমস্ত 100 চালু/বন্ধ প্রোগ্রাম থেকে স্বাধীনভাবে কাজ করে।

প্রোগ্রাম চ্যানেলগুলি সক্রিয়: বেশ কয়েকটি প্রোগ্রাম বন্ধ করার পরিবর্তে, প্রোগ্রামগুলি পরিবর্তনের প্রয়োজন ছাড়াই পৃথক আউটপুট চ্যানেলগুলি অক্ষম করা যেতে পারে।

অক্জিলিয়ারী ইনপুট: দুটি ডিজিটাল ইনপুট পাওয়া যায়, যাতে নির্দিষ্ট সময়ের জন্য নির্দিষ্ট আউটপুট চ্যানেল চালু করা যায়। উদাহরণস্বরূপ, গভীর রাতে বাড়িতে আসার সময় নির্দিষ্ট লাইট জ্বালানোর জন্য ব্যবহার করা যেতে পারে, যখন রিমোটের একটি বোতাম চাপানো হয়, অথবা ঘরের অ্যালার্ম ট্রিগার করা হলে অন্যরকম লাইট চালু করা যায়।

সহায়ক আউটপুট: দুটি অতিরিক্ত আউটপুট (8 আউটপুট চ্যানেল ছাড়া) পাওয়া যায়। এগুলি নির্দিষ্ট আউটপুট চ্যানেলগুলি, বা ডিজিটাল ইনপুটগুলির সাথে চালু করার জন্য প্রোগ্রাম করা যেতে পারে। আমার ইনস্টলেশনে, আমার সেচ নিয়ন্ত্রণে আমার 6-8 আউটপুট আছে, যা 24V তে কাজ করে। আমি সেচ ব্যবস্থার জন্য একটি 24V পাওয়ার সাপ্লাই চালু করতে সহায়ক আউটপুটগুলির একটি চালু করতে 6-8 চ্যানেল ব্যবহার করি।

ম্যানুয়াল চালু: যখন প্রধান স্ক্রিনে, 1-8 বোতামগুলি চ্যানেলগুলি ম্যানুয়ালি চালু বা বন্ধ করতে ব্যবহার করা যেতে পারে।

ধাপ 3: হার্ডওয়্যার

হার্ডওয়্যার
হার্ডওয়্যার

বিদ্যুৎ সরবরাহ: বিদ্যুৎ সরবরাহে একটি সংশোধনকারী, মসৃণ ক্যাপাসিটর এবং ওভারলোড সুরক্ষার জন্য 1 এমপি ফিউজ থাকে। এই সরবরাহ তারপর একটি 7812 এবং 7805 নিয়ন্ত্রক দ্বারা নিয়ন্ত্রিত হয়। 12V সরবরাহ আউটপুট রিলে চালানোর জন্য ব্যবহৃত হয়, এবং অন্যান্য সমস্ত সার্কিট 5V সরবরাহ থেকে চালিত হয়। যেহেতু 7805 রেগুলেটর 7812 রেগুলেটরের আউটপুটের সাথে সংযুক্ত, তাই মোট কারেন্ট 7812 রেগুলেটরের মাধ্যমে 1 এমপিতে সীমাবদ্ধ থাকতে হবে। এই নিয়ামকগুলিকে উপযুক্ত হিট সিঙ্কে মাউন্ট করার পরামর্শ দেওয়া হচ্ছে।

I²C বাস: যদিও ফ্লোকোড হার্ডওয়্যার I²C নিয়ন্ত্রণের অনুমতি দেয়, আমি সফ্টওয়্যার I²C কনফিগারেশন ব্যবহার করার সিদ্ধান্ত নিয়েছি। এটি পিন অ্যাসাইনমেন্টগুলির আরও নমনীয়তার অনুমতি দেয়। যদিও ধীর (50 kHz), এটি এখনও হার্ডওয়্যার I²C বাসের তুলনায় দুর্দান্ত কাজ করে। DS1307 এবং 24LC256 উভয়ই এই I²C বাসের সাথে সংযুক্ত।

রিয়েল টাইম ক্লক (DS1307): স্টার্ট-আপ চলাকালীন, RTC রেজিস্টার 0 এবং 7 পড়া হয় যাতে এটি বৈধ সময় এবং কনফিগারেশন ডেটা থাকে কিনা তা নির্ধারণ করা হয়। একবার সেটআপ সঠিক হলে, আরটিসি সময় পড়া হয় এবং পিআইসিতে লোড করা সময়। আরটিসি থেকে এই সময়টিই একমাত্র সময়। স্টার্টআপের পরে, আরটিসির পিন 7 এ 1Hz পালস উপস্থিত থাকবে। এই 1Hz সিগন্যালটি RB0/INT0 এর সাথে সংযুক্ত, এবং একটি ইন্টারাপ্ট সার্ভিস রুটিনের মাধ্যমে, PIC টাইম প্রতি সেকেন্ডে আপডেট করা হয়।

বহিরাগত EEPROM: সমস্ত প্রোগ্রাম ডেটা এবং বিকল্পগুলি বহিরাগত EEPROM- এ সংরক্ষণ করা হয়। EEPROM ডেটা স্টার্ট-আপে লোড করা হয়, এবং PIC মেমরিতে ডেটার একটি অনুলিপি সংরক্ষণ করা হয়। EEPROM ডেটা শুধুমাত্র আপডেট করা হয় যখন প্রোগ্রাম সেটিংস পরিবর্তন করা হয়।

ডে/নাইট সেন্সর: একটি স্ট্যান্ডার্ড লাইট ডিপেন্ডেন্ট রেসিস্টর (এলডিআর) ডে/নাইট সেন্সর হিসেবে ব্যবহৃত হয়। যেহেতু এলডিআরগুলি অনেক আকার এবং বৈচিত্র্যে আসে, সবগুলি একই আলোর অবস্থার অধীনে বিভিন্ন প্রতিরোধের মান সহ, আমি আলোর স্তর পড়তে একটি এনালগ ইনপুট চ্যানেল ব্যবহার করেছি। দিনের পাশাপাশি রাতের স্তরগুলি স্থায়ী হয় এবং বিভিন্ন সেন্সরের জন্য কিছু নমনীয়তার অনুমতি দেয়। কিছু হিস্টেরেসিস স্থাপন করার জন্য, দিন এবং রাতের জন্য পৃথক মান নির্ধারণ করা যেতে পারে। রাজ্যের পরিবর্তন হবে যদি আলোর মাত্রা দিনের নিচে, অথবা নাইট সেট পয়েন্টের উপরে, 60 সেকেন্ডের বেশি সময় ধরে।

এলসিডি ডিসপ্লে: 4 লাইন, 16 ক্যারেক্টার ডিসপ্লে ব্যবহার করা হয়, কারণ সমস্ত ডেটা 2-লাইনের ডিসপ্লেতে প্রদর্শিত হতে পারে না। প্রকল্পে কিছু কাস্টম অক্ষর রয়েছে, যা LCD_Custom_Char ম্যাক্রোতে সংজ্ঞায়িত করা হয়েছে।

অক্জিলিয়ারী ইনপুট: উভয় ইনপুট একটি এনপিএন ট্রানজিস্টর দিয়ে বাফার করা হয়। +12v এবং 0V সংযোগকারীতেও উপলব্ধ, যা বহিরাগত সংযোগগুলির জন্য আরও নমনীয় সংযোগের অনুমতি দেয়। উদাহরণস্বরূপ, একটি রিমোট কন্ট্রোল রিসিভার সরবরাহের সাথে সংযুক্ত হতে পারে।

আউটপুট: 12V রিলে এর মাধ্যমে সার্কিট থেকে সকল আউটপুট বৈদ্যুতিকভাবে বিচ্ছিন্ন। ব্যবহৃত রিলে, 250V এসি, 10 amps এ রেট দেওয়া হয়। সাধারণত খোলা এবং স্বাভাবিকভাবে বন্ধ থাকা যোগাযোগগুলি টার্মিনালে নিয়ে আসা হয়।

কীপ্যাড: ব্যবহৃত কীপ্যাড একটি 3 x 4 ম্যাট্রিক্স কীপ্যাড, এবং সংযুক্ত PORTB: 2..7।

ধাপ 4: কীপ্যাড বাধা

কীপ্যাড ইন্টারাপ্ট
কীপ্যাড ইন্টারাপ্ট
কীপ্যাড ইন্টারাপ্ট
কীপ্যাড ইন্টারাপ্ট
কীপ্যাড ইন্টারাপ্ট
কীপ্যাড ইন্টারাপ্ট

আমি যে কোনো কী প্রেসে PORTB Interrupt on Change interrupt ব্যবহার করতে চেয়েছিলাম। এর জন্য, ফ্লোকোডে একটি কাস্টম ইন্টারাপ্ট তৈরি করতে হয়েছিল, যাতে প্রতিটি কিপ্যাড ইন্টারাপ্টের আগে এবং পরে PORTB নির্দেশ এবং ডেটা সঠিকভাবে সেট আপ করা হয়। প্রতিবার একটি বাটন চাপলে বা ছেড়ে দিলে একটি বাধা সৃষ্টি হয়। বাধা রুটিন কেবল তখনই সাড়া দেয় যখন একটি চাবি চাপানো হয়।

কাস্টম ইন্টারপার্ট

কোড সক্ষম করুন

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

হ্যান্ডলার কোড

যদি (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

সমস্যা পাওয়া গেছে

বিরতির সময়, ইন্টারাপ্ট সার্ভিস রুটিন অবশ্যই কোন অবস্থার অধীনে থাকা উচিত, অন্য কোন ম্যাক্রোকে কল করুন যা প্রোগ্রামের বাকি অংশে ব্যবহার করা যেতে পারে। এটি অবশেষে স্ট্যাক ওভারফ্লো সমস্যাগুলির দিকে পরিচালিত করবে, কারণ বাধা একই সময়ে ঘটতে পারে যে মূল প্রোগ্রামটিও একই সাবরুটিনে রয়েছে। কোড কম্পাইল করার সময় এটি ফ্লোকোড দ্বারা একটি গুরুতর ত্রুটি হিসাবে চিহ্নিত করা হয়।

GetKeyPadNumber এর অধীনে কীপ্যাডের কাস্টম কোডে, Delay_us ম্যাক্রোতে এমন একটি কল আছে, যা একটি স্ট্যাক ওভারফ্লো সৃষ্টি করবে। এটি কাটিয়ে ওঠার জন্য, আমি Delay_us (10) কমান্ডটি সরিয়ে দিয়েছি এবং এটিকে "wreg = porta" এর 25 লাইন দিয়ে প্রতিস্থাপন করেছি; কমান্ড এই কমান্ডটি PORTA পড়ে, এবং তার মানটি W রেজিস্টারে রাখে, কিছু বিলম্ব পেতে। এই কমান্ডটি অ্যাসেম্বলার movf পোর্টার মতো একটি একক নির্দেশনায় সংকলিত হবে, প্রকল্পে ব্যবহৃত 10MHz ঘড়ির জন্য, প্রতিটি নির্দেশনা 400ns হবে এবং 10us বিলম্ব পেতে, আমার এই নির্দেশাবলীর 25 টি প্রয়োজন।

চিত্র 3 এর দ্বিতীয় লাইনে লক্ষ্য করুন: GetKeypadNumber কাস্টম কোড, যে মূল delay_us (10) কমান্ডটি "//" দিয়ে অক্ষম করা হয়েছে। এর নিচে, আমি আমার 25 "wreg = porta;" যোগ করেছি একটি নতুন 10us বিলম্ব পেতে কমান্ড। Keypad_ReadKeypadNumber কাস্টম কোডের ভিতরে কোন ম্যাক্রোতে কোন কল না থাকায়, কীপ্যাড ম্যাক্রো এখন একটি ইন্টারাপ্ট সার্ভিস রুটিনের ভিতরে ব্যবহার করা যাবে।

এটি লক্ষ করা উচিত যে ফ্লোকোড কীপ্যাড এবং ইব্লকস উপাদানগুলি ইনপুট লাইনে স্ট্যান্ডার্ড পুল-আপ প্রতিরোধক ব্যবহার করে না। পরিবর্তে, এটি 100K পুল-ডাউন প্রতিরোধক ব্যবহার করে। উন্নয়নের সময় কীপ্যাডে কিছু হস্তক্ষেপের কারণে, 100K প্রতিরোধকগুলি 10K দ্বারা প্রতিস্থাপিত হয়েছিল এবং সমস্ত 10K প্রতিরোধক 1K5 দ্বারা প্রতিস্থাপিত হয়েছিল। 200 মিমি লিড দিয়ে সঠিক কাজ করার জন্য কীপ্যাডটি পরীক্ষা করা হয়েছিল।

ধাপ 5: টাইমার ব্যবহার করা

টাইমার ব্যবহার করে
টাইমার ব্যবহার করে
টাইমার ব্যবহার করে
টাইমার ব্যবহার করে
টাইমার ব্যবহার করে
টাইমার ব্যবহার করে

ব্যবহারকারীদের সেটিংসে দ্রুত পরিবর্তন করার জন্য সমস্ত প্রয়োজনীয় তথ্য নির্দেশ করার জন্য সমস্ত স্ক্রিন সেট করা আছে। লাইন 4 মেনু এবং প্রোগ্রাম বিকল্পগুলির মাধ্যমে নেভিগেশনে সহায়তা করার জন্য ব্যবহৃত হয়। স্বাভাবিক অপারেশনের সময় মোট 22 টি স্ক্রিন পাওয়া যায়।

লাইন 1: সময় এবং অবস্থা

বর্তমান দিন এবং সময় দেখায়, এর পরে স্ট্যাটাস আইকন:

A - নির্দেশ করে যে Aux ইনপুট A ট্রিগার হয়েছিল, এবং Aux Input A টাইমার চলছে।

B - নির্দেশ করে যে Aux ইনপুট B ট্রিগার হয়েছিল, এবং Aux Input B টাইমার চলছে।

C - নির্দেশ করে যে Aux আউটপুট C চালু আছে।

D - নির্দেশ করে যে Aux আউটপুট D চালু আছে।

} - দিন/রাতের সেন্সরের অবস্থা। যদি উপস্থিত থাকে, ইঙ্গিত দেয় যে এটি রাত।

লাইন 2: প্রোগ্রাম আউটপুট

বিভিন্ন প্রোগ্রাম দ্বারা চালু করা চ্যানেলগুলি দেখায়। চ্যানেলগুলি তাদের আউটপুট সংখ্যায় প্রদর্শিত হয় এবং একটি "-" নির্দেশ করে যে নির্দিষ্ট আউটপুট চালু করা হয়নি। "প্রোগ্রাম আউটপুট সক্রিয়" -এ নিষ্ক্রিয় করা চ্যানেলগুলি এখনও এখানে নির্দেশিত হবে, কিন্তু প্রকৃত আউটপুট সেট করা হবে না।

লাইন 3: রিয়েল আউটপুট

বিভিন্ন প্রোগ্রাম, Aux ইনপুট A & B, বা ব্যবহারকারীর দ্বারা নির্ধারিত ম্যানুয়াল আউটপুট দ্বারা কোন চ্যানেলগুলি চালু আছে তা দেখায়। 0 টিপলে সমস্ত ম্যানুয়ালি সক্রিয় আউটপুট বন্ধ হয়ে যাবে এবং Aux আউটপুট A & B টাইমারগুলি পুনরায় সেট করবে।

লাইন 4: মেনু এবং কী অপশন (সব মেনুতে)

"*" এবং "#" কীগুলির কাজ নির্দেশ করে।

নির্বাচিত পর্দার জন্য কোন সংখ্যাসূচক কী (0-9) সক্রিয় তা কেন্দ্রের অংশ নির্দেশ করে।

Aux ইনপুট A & B এর ইনপুট স্থিতি একটি খোলা বা বন্ধ সুইচ আইকনের মাধ্যমেও দেখানো হয়।

কীপ্যাডে সংশ্লিষ্ট কী টিপে ম্যানুয়ালি আউটপুট চালু/বন্ধ করা যায়।

মেনু জুড়ে, স্টার এবং হ্যাশ কীগুলি বিভিন্ন প্রোগ্রাম বিকল্পগুলির মাধ্যমে নেভিগেট করতে ব্যবহৃত হয়। অপশন সেট করতে 0-9 কী ব্যবহার করা হয়। যেখানে একক স্ক্রিন বা প্রোগ্রামিং মেনুতে একাধিক অপশন পাওয়া যায়, সেখানে হ্যাশ কী ব্যবহার করা হয় বিভিন্ন বিকল্পের মাধ্যমে। বর্তমান নির্বাচিত বিকল্পটি সর্বদা পর্দার বাম দিকে ">" অক্ষর দ্বারা নির্দেশিত হবে।

0-9 সময় মান লিখুন

1-8 চ্যানেল নির্বাচন পরিবর্তন করুন

14 36 প্রোগ্রামের মাধ্যমে ধাপ, 1-পদক্ষেপ পিছনে, 4-পদক্ষেপ পিছনে 10 প্রোগ্রাম, 3-ধাপ এগিয়ে, 6-পদক্ষেপ এগিয়ে 10

প্রোগ্রাম

সপ্তাহের 1-7 দিন নির্ধারণ করুন। 1 = রবিবার, 2 = সোমবার, 3 = মঙ্গলবার, 4 = বুধবার, 5 = বৃহস্পতিবার, 6 = শুক্রবার, 7 = শনিবার

0 প্রধান স্ক্রিনে, সমস্ত ম্যানুয়াল ওভাররাইড এবং ইনপুট A এবং ইনপুট B টাইমার সাফ করুন। অন্যান্য মেনুতে, পরিবর্তন

নির্বাচিত বিকল্প

# মূল স্ক্রিনে, সমস্ত ম্যানুয়াল ওভাররাইড, ইনপুট এ এবং ইনপুট বি টাইমার এবং প্রোগ্রাম আউটপুটগুলি অক্ষম করবে, যতক্ষণ না

পরবর্তী ঘটনা।

* এবং 1 টাইমার পুনরায় বুট করুন

* এবং 2 সমস্ত প্রোগ্রাম এবং বিকল্প সাফ করুন, সেটিংস ডিফল্টে পুনরুদ্ধার করুন।

* এবং 3 স্ট্যান্ডবাইতে টাইমার রাখুন। আবার টাইমার চালু করতে, যেকোন কী টিপুন।

যে কোন সময় মূল্য ভুল এন্ট্রি সময়, LCD ব্যাকলাইট একটি ত্রুটি নির্দেশ করতে 5 বার ফ্ল্যাশ হবে। একই সময়ে, বাজারের শব্দ হবে। প্রস্থান এবং পরবর্তী কমান্ডগুলি তখনই কাজ করবে যখন বর্তমান এন্ট্রি সঠিক হবে।

এলসিডি ব্যাকলাইট

প্রাথমিক প্রারম্ভে, LCD ব্যাকলাইট 3 মিনিটের জন্য চালু করা হবে, যদি না:

- একটি হার্ডওয়্যার ব্যর্থতা আছে (EEPROM বা RTC পাওয়া যায় নি)

- আরটিসিতে সময় নির্ধারণ করা হয়নি

কিপ্যাডে যেকোন ব্যবহারকারীর ইনপুটে LCD ব্যাকলাইট আবার 3 মিনিটের জন্য চালু হবে। যদি এলসিডি ব্যাকলাইট বন্ধ থাকে, তাহলে যেকোনো কীপ্যাড কমান্ড প্রথমে এলসিডি ব্যাকলাইট চালু করবে এবং যে কী টিপেছিল তা উপেক্ষা করবে। এটি নিশ্চিত করে যে ব্যবহারকারী কীপ্যাড ব্যবহারের আগে LCD ডিসপ্লে পড়তে পারবে। Aux Input A বা Aux Input B সক্রিয় থাকলে LCD ব্যাকলাইট 5 সেকেন্ডের জন্যও চালু থাকবে।

ধাপ 6: মেনু স্ক্রিন শট

মেনু স্ক্রিন শট
মেনু স্ক্রিন শট
মেনু স্ক্রিন শট
মেনু স্ক্রিন শট
মেনু স্ক্রিন শট
মেনু স্ক্রিন শট

কীপ্যাড ব্যবহার করে, প্রতিটি বিকল্প সহজেই প্রোগ্রাম করা যায়। ছবিগুলি প্রতিটি পর্দা কী করে তার কিছু তথ্য দেয়।

ধাপ 7: সিস্টেমের নকশা

সিস্টেমের নকশা
সিস্টেমের নকশা

সমস্ত উন্নয়ন এবং পরীক্ষা ব্রেডবোর্ডে করা হয়েছিল। সিস্টেমের সমস্ত বিভাগ দেখে, আমি তিনটি মডিউলে সিস্টেমটি ভেঙে দিয়েছি। এই সিদ্ধান্তটি মূলত agগলের মুক্ত সংস্করণের পিসিবি আকারের সীমাবদ্ধতার (80 x 100 মিমি) কারণে ছিল।

মডিউল 1 - পাওয়ার সাপ্লাই

মডিউল 2 - সিপিইউ বোর্ড

মডিউল 3 - রিলে বোর্ড

আমি সিদ্ধান্ত নিয়েছি যে সমস্ত উপাদান সহজেই পাওয়া যায়, এবং আমি সারফেস মাউন্ট উপাদান ব্যবহার করতে চাইনি।

আসুন তাদের প্রত্যেকের মধ্য দিয়ে যাই।

ধাপ 8: বিদ্যুৎ সরবরাহ

পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই
পাওয়ার সাপ্লাই

বিদ্যুৎ সরবরাহ সরাসরি এগিয়ে, এবং 12V এবং 5V সঙ্গে CPU এবং রিলে বোর্ড সরবরাহ।

আমি ভোল্টেজ রেগুলেটরগুলিকে উপযুক্ত হিট সিংকে বসিয়েছি, এবং সরবরাহের জন্য ওভাররেটেড ক্যাপাসিটার ব্যবহার করেছি।

ধাপ 9: CPU বোর্ড

সিপিইউ বোর্ড
সিপিইউ বোর্ড
সিপিইউ বোর্ড
সিপিইউ বোর্ড
সিপিইউ বোর্ড
সিপিইউ বোর্ড
সিপিইউ বোর্ড
সিপিইউ বোর্ড

এলসিডি স্ক্রিন, কীপ্যাড এবং রিলে ছাড়া সমস্ত উপাদান সিপিইউ বোর্ডে মাউন্ট করা আছে।

সরবরাহ, দুটি ডিজিটাল ইনপুট এবং লাইট সেন্সরের মধ্যে সংযোগ সহজ করার জন্য টার্মিনাল ব্লক যুক্ত করা হয়েছিল।

হেডার পিন/সকেট এলসিডি স্ক্রিন এবং কীপ্যাডে সহজে সংযোগের ব্যবস্থা করে।

রিলে আউটপুটগুলির জন্য, আমি ULN2803 ব্যবহার করেছি। এটিতে ইতিমধ্যে সমস্ত প্রয়োজনীয় ড্রাইভিং প্রতিরোধক এবং ফ্লাইব্যাক ডায়োড রয়েছে। এটি নিশ্চিত করেছে যে সিপিইউ বোর্ডটি এখনও agগলের বিনামূল্যে সংস্করণ ব্যবহার করে তৈরি করা যেতে পারে। রিলে দুটি ULN2803 এর সাথে সংযুক্ত। নিচের ULN2803 8 আউটপুটের জন্য এবং উপরের ULN2803 দুটি অক্জিলিয়ারী আউটপুটের জন্য ব্যবহৃত হয়। প্রতিটি অক্জিলিয়ারী আউটপুটে চারটি ট্রানজিস্টর থাকে। রিলে সংযোগগুলি হেডার পিন/সকেটের মাধ্যমেও হয়।

PICKT 3 প্রোগ্রামারের মাধ্যমে সহজ প্রোগ্রামিং করার অনুমতি দেওয়ার জন্য PIC 18F4520- এ একটি প্রোগ্রামিং সকেট লাগানো ছিল।

বিঃদ্রঃ:

আপনি লক্ষ্য করবেন যে বোর্ডে একটি অতিরিক্ত 8 পিন আইসি রয়েছে। উপরের আইসি হল একটি PIC 12F675, এবং একটি ডিজিটাল ইনপুটের সাথে সংযুক্ত। এটি পিসিবি ডিজাইনের সময় যোগ করা হয়েছিল। এটি ডিজিটাল ইনপুট প্রাক-প্রক্রিয়া করা সহজ করে তোলে। আমার আবেদনে, ডিজিটাল ইনপুটগুলির মধ্যে একটি আমার অ্যালার্ম সিস্টেমের সাথে সংযুক্ত। যদি অ্যালার্ম শোনা যায়, আমার বাড়িতে কিছু লাইট জ্বলছে। আমার অ্যালার্ম সিস্টেমকে সশস্ত্র এবং নিরস্ত্রকরণ সাইরেনে বিভিন্ন বীপ দেয়। PIC 12F675 ব্যবহার করে, আমি এখন বাহু/নিরস্ত্র এবং একটি বাস্তব এলার্মের মধ্যে পার্থক্য করতে পারি। 12F675 এছাড়াও একটি প্রোগ্রামিং সকেট সঙ্গে লাগানো হয়।

আমি হেডার পিন/সকেটের মাধ্যমে একটি I2C পোর্টের ব্যবস্থাও করেছি। এটি রিলে বোর্ডগুলির সাথে পরে কাজে আসবে।

বোর্ডে কয়েকটি জাম্পার রয়েছে, যা আইসি সকেট লাগানোর আগে বিক্রি করা উচিত।

ধাপ 10: ফ্লোকোড উপসংহার

ফ্লোকোড উপসংহার
ফ্লোকোড উপসংহার
ফ্লোকোড উপসংহার
ফ্লোকোড উপসংহার
ফ্লোকোড উপসংহার
ফ্লোকোড উপসংহার

যেহেতু আমি সমাবেশে রেজিস্টার স্তরে কাজ করতে অভ্যস্ত, তাই উপাদান ম্যাক্রো ব্যবহার করা কখনও কখনও কঠিন এবং হতাশাজনক ছিল। এটি মূলত ফ্লোকোডের প্রোগ্রামিং কাঠামো সম্পর্কে আমার জ্ঞানের অভাবের কারণে হয়েছিল। একমাত্র স্থান যেখানে আমি সি বা এএসএম ব্লক ব্যবহার করেছি, সেটি ছিল একটি ইন্টারাপ্ট রুটিনের ভিতরে আউটপুট চালু করা, এবং Do_KeyPressed রুটিনে কীপ্যাড ইন্টারাপ্ট নিষ্ক্রিয়/সক্ষম করার জন্য। যখন EEPROM বা RTC খুঁজে পাওয়া যায় না, তখন PIC একটি ASM ব্লক ব্যবহার করে SLEEP এ স্থাপন করা হয়।

বিভিন্ন I²C কমান্ড ব্যবহারের আশেপাশে সাহায্য, সবই ফ্লোকোড হেল্প ফাইলের মধ্যে থেকে প্রাপ্ত হয়েছিল। কমান্ডগুলি সফলভাবে ব্যবহার করার আগে বিভিন্ন I²C ডিভাইসগুলি কীভাবে কাজ করে তা ঠিক জানা দরকার। একটি সার্কিট ডিজাইন করার জন্য ডিজাইনারের সমস্ত প্রাসঙ্গিক ডেটশীট উপলব্ধ থাকা প্রয়োজন। এটি ফ্লোকোডের ত্রুটি নয়।

ফ্লোকোড সত্যিই পরীক্ষায় দাঁড়িয়েছিল, এবং মাইক্রোপ্রসেসরের মাইক্রোচিপ পরিসরের সাথে কাজ শুরু করতে ইচ্ছুক ব্যক্তিদের জন্য অত্যন্ত সুপারিশ করা হয়।

PIC এর জন্য ফ্লোকোড প্রোগ্রামিং এবং কনফিগারেশন ছবি অনুযায়ী সেট করা হয়েছিল

ধাপ 11: Iচ্ছিক I2C রিলে বোর্ড

Ptionচ্ছিক I2C রিলে বোর্ড
Ptionচ্ছিক I2C রিলে বোর্ড
Ptionচ্ছিক I2C রিলে বোর্ড
Ptionচ্ছিক I2C রিলে বোর্ড
Ptionচ্ছিক I2C রিলে বোর্ড
Ptionচ্ছিক I2C রিলে বোর্ড

সিপিইউ বোর্ডে ইতিমধ্যেই 16 টি রিলে এর জন্য হেডার সংযোগ রয়েছে। এই আউটপুট দুটি ULN2803 চিপের মাধ্যমে ওপেন কালেক্টর ট্রানজিস্টর।

সিস্টেমের প্রথম পরীক্ষার পরে, আমি সিপিইউ বোর্ড এবং রিলেগুলির মধ্যে সমস্ত তারের পছন্দ করি না। যেহেতু আমি CPU বোর্ডে একটি I2C পোর্ট অন্তর্ভুক্ত করেছি, আমি I2C পোর্টের সাথে সংযোগ স্থাপনের জন্য রিলে বোর্ড ডিজাইন করার সিদ্ধান্ত নিয়েছি। একটি 16 চ্যানেল MCP23017 I/O পোর্ট এক্সপেন্ডার চিপ এবং একটি ULN2803 ট্রানজিস্টার অ্যারে ব্যবহার করে, আমি CPU এবং রিলেগুলির মধ্যে সংযোগগুলি 4 টি তারের মধ্যে হ্রাস করেছি।

যেহেতু আমি 80 x 100 মিমি পিসিবিতে 16 টি রিলে ফিট করতে পারিনি, তাই আমি দুটি বোর্ড তৈরি করার সিদ্ধান্ত নিয়েছি। প্রতিটি MCP23017 এর 16 টি পোর্টের মধ্যে মাত্র 8 টি ব্যবহার করে। বোর্ড 1 8 টি আউটপুট পরিচালনা করে, এবং বোর্ড 2 দুটি সহায়ক আউটপুট। বোর্ডগুলিতে একমাত্র পার্থক্য হল প্রতিটি বোর্ডের ঠিকানা। এটি সহজেই একটি মিনি জাম্পার দিয়ে সেট করা হয়। প্রতিটি বোর্ডের বিদ্যুৎ সরবরাহের জন্য সংযোগকারী রয়েছে এবং অন্য বোর্ডে I2C ডেটা রয়েছে।

বিঃদ্রঃ:

যদি প্রয়োজন হয়, সফ্টওয়্যারটি শুধুমাত্র একটি বোর্ডের জন্য বিধান করে যা 16 টি পোর্ট ব্যবহার করতে পারে। সমস্ত আউটপুট রিলে ডেটা প্রথম বোর্ডে পাওয়া যায়।

যেহেতু সার্কিটটি alচ্ছিক এবং খুব সহজ, আমি একটি পরিকল্পিত তৈরি করি নি। যদি পর্যাপ্ত চাহিদা থাকে, আমি পরে এটি যোগ করতে পারি।

ধাপ 12: Rচ্ছিক আরএফ লিঙ্ক

Rচ্ছিক আরএফ লিঙ্ক
Rচ্ছিক আরএফ লিঙ্ক
Rচ্ছিক আরএফ লিঙ্ক
Rচ্ছিক আরএফ লিঙ্ক
Rচ্ছিক আরএফ লিঙ্ক
Rচ্ছিক আরএফ লিঙ্ক

প্রকল্পটি শেষ হওয়ার পরে, আমি শীঘ্রই বুঝতে পেরেছিলাম যে আমাকে টাইমারের জন্য 220V এসি ওয়্যারিংয়ের অনেকগুলি টানতে হবে। আমি স্ট্যান্ডার্ড 315 মেগাহার্টজ মডিউল ব্যবহার করে একটি আরএফ লিঙ্ক তৈরি করেছি যা একটি আলমারির ভিতরে টাইমার স্থাপনের অনুমতি দেয় এবং ছাদের ভিতরে রিলে বোর্ডগুলি, সমস্ত 220V তারের কাছাকাছি।

লিঙ্কটি 16MHz এ চলমান একটি AtMega328P ব্যবহার করে। ট্রান্সমিটার এবং রিসিভার উভয়ের সফটওয়্যার একই, এবং মোড একটি মিনি জাম্পার দ্বারা নির্বাচিত হয়।

ট্রান্সমিটার

ট্রান্সমিটারটি কেবল CPU I2C পোর্টে প্লাগ করা আছে। কোনও অতিরিক্ত সেটআপের প্রয়োজন নেই, কারণ AtMega328P I2C রিলে বোর্ডের মতো একই ডেটা শোনে।

I2C পোর্টে প্রতি সেকেন্ডে একবার ডেটা আপডেট করা হয় এবং ট্রান্সমিটার আরএফ লিঙ্কে এই তথ্য পাঠায়। যদি ট্রান্সমিটার প্রায় 30 সেকেন্ডের জন্য I2C ডেটা গ্রহণ না করে, তাহলে ট্রান্সমিটার রিসিভার ইউনিটে সমস্ত রিলে বন্ধ করতে ক্রমাগত ডেটা প্রেরণ করবে।

পিসি বোর্ডে একটি মিনি জাম্পার দিয়ে ট্রান্সমিটার মডিউল থেকে পাওয়ার 12V এবং 5V এর মধ্যে নির্বাচন করা যেতে পারে। আমি 12V ব্যবহার করে আমার ট্রান্সমিটারকে শক্তি দিচ্ছি।

রিসিভার

রিসিভার ট্রান্সমিটার থেকে কোডেড ডেটা শোনে, এবং একটি I2C পোর্টে ডেটা রাখে। রিলে বোর্ড কেবল এই পোর্টে প্লাগ করে, এবং এটি একইভাবে কাজ করে যেমনটি সিপিইউ বোর্ডে প্লাগ করা হয়েছিল।

যদি রিসিভার 30 সেকেন্ডের জন্য বৈধ ডেটা গ্রহণ না করে, তাহলে রিসিভার রিলে বোর্ডের সমস্ত রিলে বন্ধ করতে I2C পোর্টে ক্রমাগত ডেটা পাঠাবে।

স্কিম্যাটিক্স

একদিন যদি এর চাহিদা থাকে। আরডুইনো স্কেচে সার্কিট ডায়াগ্রাম ছাড়াই সার্কিট তৈরির জন্য সমস্ত প্রয়োজনীয় তথ্য রয়েছে।

পরিসীমা

আমার ইনস্টলেশনে, ট্রান্সমিটার এবং রিসিভার প্রায় 10 মিটার দূরে। টাইমার একটি আলমারির ভিতরে, এবং সিলিংয়ের উপরে রিলে ইউনিট।

ধাপ 13: চূড়ান্ত পণ্য

চূড়ান্ত পণ্য
চূড়ান্ত পণ্য
চূড়ান্ত পণ্য
চূড়ান্ত পণ্য
চূড়ান্ত পণ্য
চূড়ান্ত পণ্য

মূল ইউনিট একটি পুরানো প্রকল্প বাক্সে লাগানো ছিল। এতে নিম্নলিখিতগুলি রয়েছে:

- 220V/12V ট্রান্সফরমার

- পাওয়ার সাপ্লাই বোর্ড

- সিপিইউ বোর্ড

- LCD প্রদর্শন

- কীপ্যাড

- আরএফ লিঙ্ক ট্রান্সমিটার

- অতিরিক্ত হোম রিমোট রিসিভার ইউনিট আমাকে রিমোটের মাধ্যমে লাইট চালু/বন্ধ করতে সক্ষম করে

রিলে ইউনিট নিম্নলিখিতগুলি নিয়ে গঠিত:

- 220V/12V ট্রান্সফরমার

- পাওয়ার সাপ্লাই বোর্ড

- আরএফ লিঙ্ক রিসিভার

- 2 x I2C রিলে বোর্ড

সমস্ত বোর্ডগুলি একই মাত্রার সাথে ডিজাইন করা হয়েছিল, এটি 3 মিমি স্পেসার দিয়ে একে অপরের উপরে স্ট্যাক করা সহজ করে তোলে।

প্রস্তাবিত: