नियंत्रक के सिद्धांत: रोबोट का दिमाग़
नियंत्रक (कंट्रोलर) एक छोटा कंप्यूटर है जो तय करता है कि रोबोट क्या करे। इसका आम रूप माइक्रोकंट्रोलर है: एक चिप जिसमें प्रोसेसर, मेमोरी और पिन होते हैं। Arduino, micro:bit और Raspberry Pi Pico जैसे बोर्ड में यही होता है।
हर नियंत्रक तीन काम करता है: इनपुट (सेंसर और बटन पढ़ना), प्रोग्राम (जमा किए नियमों से फ़ैसला) और आउटपुट (मोटर, बत्ती, बज़र चलाना)। इसकी घड़ी (क्लॉक) एक सेकंड में लाखों कदम चलाती है, इसलिए सब तुरंत लगता है।
प्रोग्राम मेमोरी में रहता है, इसलिए बिजली बंद होने पर भी बचा रहता है। प्रोग्राम बदलिए तो वही रोबोट नए ढंग से चलता है। नया पुर्ज़ा नहीं चाहिए।
प्रोग्रामिंग: क्रम, फ़ैसला और लूप
प्रोग्राम साफ़ कदमों की सूची है। ज़्यादातर रोबोट के लिए तीन विचार काफ़ी हैं:
- क्रम (sequence): कदम एक के बाद एक चलते हैं।
- फ़ैसला (decision): अगर कुछ सच है तो यह करो, नहीं तो वह करो।
- लूप: वापस जाकर दोहराओ। रोबोट का प्रोग्राम अक्सर हमेशा लूप में रहता है।
चर (variable) एक नाम वाला डिब्बा है जिसमें संख्या रहती है, जैसे दूरी या सीमा। सीमा (threshold) वह संख्या है जिससे हम तुलना करते हैं।
हमारा प्रोग्राम: 1) दूरी पढ़ो, 2) अगर दूरी < सीमा तो मोटर बंद, 3) नहीं तो मोटर चालू, 4) लाइन 1 पर जाओ। कोड लिखने से पहले फ़्लोचार्ट बना सकते हैं। रोबोट गड़बड़ करे तो ग़लत लाइन ढूँढिए। इसे डीबगिंग कहते हैं।
इंटरफ़ेस: नियंत्रक बाकी पुर्ज़ों से कैसे बात करता है
इंटरफ़ेस नियंत्रक और दूसरे पुर्ज़े के बीच का जोड़ है। चार आम प्रकार:
- डिजिटल पिन: सिर्फ़ दो अवस्थाएँ, HIGH (1) या LOW (0)। बटन और LED इसे इस्तेमाल करते हैं।
- एनालॉग इनपुट और ADC: ADC सरल बदलते वोल्टेज को संख्या बना देता है। 10-बिट ADC के 1024 स्तर (0 से 1023) होते हैं।
- PWM आउटपुट: पिन बहुत तेज़ी से चालू-बंद होता है। जितनी देर चालू रहे (ड्यूटी साइकिल), मोटर उतनी तेज़ चलती है।
- सीरियल लिंक (UART, I2C, SPI): कुछ तारों से डिस्प्ले जैसी दूसरी चिप तक कई संदेश जाते हैं।
एक पिन सिर्फ़ लगभग 20 mA दे पाता है, जबकि छोटी मोटर को सैकड़ों mA चाहिए। इसलिए ड्राइवर (ट्रांज़िस्टर या मोटर-ड्राइवर चिप) अपनी बैटरी के साथ लगाते हैं। पिन ड्राइवर को सिर्फ़ चालू या बंद कहता है। दोनों के ग्राउंड आपस में जोड़िए।
करके देखिए: खुद नियंत्रक बनिए
काग़ज़ पर प्रोग्राम की चार लाइनें लिखिए। दोस्त एक किताब आपकी तरफ़ सरकाए (यही बाधा है)। आप नियंत्रक हैं: दूरी सेमी में ज़ोर से पढ़िए, सीमा 30 से मिलाइए और बोलिए चालू या बंद। बार-बार दोहराइए। फिर सीमा 50 कर दीजिए और देखिए क्या बदला। 3D में भी स्लाइडर से यही कीजिए और देखने से पहले मोटर की अवस्था का अंदाज़ा लगाइए।
मुख्य सूत्र और परिभाषाएँ
- नियंत्रक = इनपुट + प्रोग्राम + आउटपुट (I-P-O)
- ADC के स्तर = 2^बिट (10-बिट: 1024 स्तर, 0 से 1023)
- वोल्टेज = (रीडिंग / 1023) × संदर्भ वोल्टेज (10-बिट ADC)
- ड्यूटी साइकिल (%) = चालू समय / कुल समय × 100
- PWM का औसत वोल्टेज = ड्यूटी साइकिल × सप्लाई वोल्टेज
हल किए गए उदाहरण
1. 5 V संदर्भ वाला 10-बिट ADC रीडिंग 512 देता है। वोल्टेज क्या है?
V = 512 / 1023 × 5 = 2.50 V (5 V का लगभग आधा)।
2. 5 V वाला PWM पिन 40% ड्यूटी साइकिल पर चलता है। औसत वोल्टेज क्या है?
औसत = 0.40 × 5 = 2 V। मोटर पूरे 5 V से धीमी चलेगी।
3. सीमा = 30 सेमी। तीन लूप में सेंसर 50, 35, 20 पढ़ता है। हर बार मोटर क्या करेगी?
नियम: दूरी < सीमा तो बंद। 50: चालू। 35: चालू। 20: बंद।
4. मोटर को 400 mA चाहिए। एक पिन अधिकतम 20 mA देता है। पिन कितना कमज़ोर है? क्या जोड़ेंगे?
400 / 20 = 20 गुना कमज़ोर। अपनी बैटरी वाला ड्राइवर जोड़ेंगे।
5. 8-बिट ADC तापमान सेंसर पढ़ता है। कितनी अलग-अलग रीडिंग संभव हैं?
2^8 = 256 रीडिंग (0 से 255)।
आम गलतियाँ
- मोटर को सीधे पिन से जोड़ देना। पिन इतनी धारा नहीं दे पाता और ख़राब हो सकता है। ड्राइवर लगाइए।
- सोचना कि प्रोग्राम एक बार चलकर रुक जाता है। रोबोट का प्रोग्राम हमेशा लूप में चलता है।
- < और > में गड़बड़ करना। चलाने से पहले एक नमूना संख्या से नियम जाँच लीजिए।
- नियंत्रक और मोटर की बैटरी के ग्राउंड न जोड़ना। तब संकेत का कोई संदर्भ नहीं रहता और कुछ नहीं चलता।