instructables VHDL मोटर स्पीड कन्ट्रोल निर्णय दिशा र गति बायाँ र दायाँ गति नियन्त्रक
नोट: यो पृष्ठ ठूलो निर्माण को एक भाग हो। कृपया यहाँबाट सुरु गर्नुहोस् भन्ने सुनिश्चित गर्नुहोस्, ताकि तपाईले बुझ्नुहुन्छ कि निम्न ठूला परियोजना भित्र कहाँ फिट हुन्छ
माथिview
मोटर गति र दिशा नियन्त्रण फोटोडिटेक्टर रोबोटमा दुई मुख्य डिभिजनहरू मध्ये एक हो, अर्को फोटोडिटेक्टर वा लाइट डिटेक्टर डिभिजन हो। जबकि फोटोडिटेक्टर डिभिजनले रोबोटको दर्शनमा केन्द्रित हुन्छ, मोटरको गति र दिशा नियन्त्रण डिभिजनले रोबोटको चालमा केन्द्रित हुन्छ। मोटर गति र दिशा नियन्त्रण प्रक्रिया डेटा photodetector विभाजन देखि दिइएको छ र मोटर चाल को रूप मा एक भौतिक आउटपुट दिन्छ।
यस डिभिजनको उद्देश्य प्रकाश खोज्ने रोबोटको बायाँ र दायाँ दुवै मोटरको गति र दिशा नियन्त्रण गर्नु हो। यी मानहरू निर्धारण गर्न, तपाईंलाई क्यामेराद्वारा खिचिएको र थ्रेसहोल्डिङद्वारा प्रशोधन गरिएको प्रकाशको साइज र स्थिति चाहिन्छ। तपाईलाई प्रत्येक मोटरहरूमा मापन गरिएको गति पनि चाहिन्छ। यी इनपुटहरूबाट, तपाइँ प्रत्येक मोटरहरूको लागि PWM (पल्स-चौडाइ मोड्युलेसन) मान आउटपुट गर्न सक्षम हुनुहुनेछ।
यो प्राप्त गर्न, तपाईंले यी VHDL मोड्युलहरू बनाउन आवश्यक छ (तल लिङ्क पनि):
- नियन्त्रण
- त्रुटि गणना
- बाइनरी रूपान्तरण
- प्रकाश स्रोतको अभाव
तपाईं यहाँ यो विभाजनको लागि VHDL कोड हेर्न सक्नुहुन्छ।
आपूर्तिहरू
हामी ISE Design Suite 14.7 सँग कोड गर्न सिफारिस गर्छौं किनकि यो VHDL मा कोड परीक्षण गर्न पनि प्रयोग गर्न सकिन्छ। जे होस्, कोड BASYS 3 मा अपलोड गर्न, तपाईंले Vivado (ver. 2015.4 वा 2016.4) स्थापना गर्न आवश्यक छ र .xdc विस्तारको साथ बाधा लेख्नुपर्छ।
VHDL मोटर गति नियन्त्रण: दिशा र गति निर्णय गर्नुहोस्, बायाँ र दायाँ गति नियन्त्रक: पृष्ठ 1
निर्देशन चरण
चरण 1: नियन्त्रण
प्रकाश खोज्ने रोबोटको व्यवहार कसरी नियन्त्रण गर्ने भनेर बुझ्नको लागि, हामी रोबोटले प्रकाशको स्रोत देख्दा त्यसको इच्छित व्यवहारको व्याख्या गर्नेछौं। यो व्यवहार प्रकाश स्रोत को स्थिति र आकार अनुसार नियन्त्रण गरिनेछ।
प्रयोग गरिएको एल्गोरिथ्म RC रोबोट नियन्त्रकसँग मिल्दोजुल्दो छ, एउटा लीभर जुन बायाँ वा दायाँ घुमाउन सकिन्छ, र अर्को लीभर जुन अगाडि वा पछाडि घुमाउन सकिन्छ।
प्रकाश खोज्नको लागि, तपाईं यो रोबोटलाई सीधा रेखामा सार्न चाहनुहुन्छ भने प्रकाश स्रोतको स्थिति रोबोटको ठीक अगाडि छ। त्यसो गर्न, तपाइँ बायाँ र दायाँ मोटरहरूमा समान गति चाहानुहुन्छ। यदि लाइट रोबोटको बायाँ छेउमा अवस्थित छ भने, तपाइँ दायाँ मोटर बायाँ मोटर भन्दा छिटो सार्न चाहानुहुन्छ ताकि रोबोट उज्यालो तिर बायाँ तिर फर्कन सक्छ। यसको विपरित, यदि प्रकाश रोबोटको दायाँ छेउमा अवस्थित छ भने, तपाइँ बाँया मोटरलाई दायाँ मोटर भन्दा छिटो सार्न चाहानुहुन्छ ताकि रोबोट उज्यालो तिर दायाँ तिर घुम्न सकोस्। यो RC नियन्त्रकको बायाँ लीभरसँग मिल्दोजुल्दो छ, जहाँ तपाइँ रोबोटलाई बायाँ, दायाँ, वा सीधा सार्न चाहनुहुन्छ कि नियन्त्रण गर्न सक्नुहुन्छ।
त्यसोभए, यदि प्रकाशको स्रोत टाढा छ भने (सानो प्रकाश स्रोत), वा पत्ता लागेको प्रकाश स्रोत धेरै नजिक छ (ठूलो प्रकाश स्रोत) छ भने तपाईं रोबोट अगाडि बढ्न चाहनुहुन्छ। तपाईं यो पनि चाहनुहुन्छ कि रोबोट प्रकाशको स्रोतबाट जति टाढा छ, रोबोट उति छिटो सर्छ। यो RC नियन्त्रकको दायाँ लिभरसँग मिल्दोजुल्दो छ, जहाँ तपाईं अगाडि वा पछाडि जान चाहनुहुन्छ, र तपाईं यसलाई कति छिटो सार्न चाहनुहुन्छ भन्ने कुरा नियन्त्रण गर्न सक्नुहुन्छ।
त्यसपछि तपाईले प्रत्येक मोटरको गतिको लागि गणितीय सूत्र निकाल्न सक्नुहुन्छ, र हामी -255 देखि 255 बीचको गति दायरा छनोट गर्छौं। ऋणात्मक मानको अर्थ मोटर पछाडि फर्किनेछ, जबकि सकारात्मक मानको अर्थ मोटर अगाडि घुम्नेछ।
यो रोबोट को चाल को लागि आधारभूत एल्गोरिथ्म हो। यस मोड्युलको बारेमा थप जान्नको लागि, यहाँ क्लिक गर्नुहोस्।
चरण 2: त्रुटि गणना
तपाईंसँग पहिले नै मोटरहरूको लागि लक्ष्य गति र दिशा भएको हुनाले, तपाईं पनि मापन गरिएको गति र मोटरहरूको दिशालाई ध्यानमा राख्न चाहनुहुन्छ। यदि यो गति लक्ष्यमा पुग्यो भने, हामी मोटरलाई यसको गतिमा मात्र सार्न चाहन्छौं। यदि यो छैन भने, हामी मोटरमा थप गति थप्न चाहन्छौं। नियन्त्रण सिद्धान्तमा, यसलाई बन्द-लूप प्रतिक्रिया नियन्त्रण प्रणाली भनिन्छ।
यस मोड्युलको बारेमा थप जान्नको लागि, यहाँ क्लिक गर्नुहोस्।
चरण 3: बाइनरी रूपान्तरण
अघिल्लो गणनाबाट, तपाईंले पहिले नै प्रत्येक मोटरहरूको लागि आवश्यक कार्य थाहा पाउनुभएको छ। यद्यपि, गणनाहरू हस्ताक्षरित बाइनरी प्रयोग गरेर गरिन्छ। यस मोड्युलको उद्देश्य यी हस्ताक्षरित मानहरूलाई PWM जेनेरेटरद्वारा पढ्न सकिने मानमा रूपान्तरण गर्नु हो, जुन दिशा (या त घडीको दिशामा वा घडीको विपरीत दिशामा) र गति (० देखि २५५ बीचको) हो। साथै, मोटरबाट प्रतिक्रिया अहस्ताक्षरित बाइनरीमा नापिएको हुनाले, त्रुटि गणना मोड्युलद्वारा गणना गर्न सकिने हस्ताक्षर नगरिएको मान (दिशा र गति) लाई हस्ताक्षरित मानमा रूपान्तरण गर्न अर्को मोड्युल आवश्यक छ। यस मोड्युलको बारेमा थप जान्नको लागि, यहाँ क्लिक गर्नुहोस्।
चरण 4: प्रकाश स्रोतको अनुपस्थिति
तपाईंले एउटा रोबोट बनाउनुभएको छ जुन रोबोटले प्रकाश पत्ता लगाउँदा प्रकाश खोज्न जान्छ। तर रोबोटले प्रकाश पत्ता नलाग्दा के हुन्छ? यस मोड्युलको उद्देश्य यस्तो अवस्था हुँदा के गर्ने भनेर निर्देशन दिनु हो।
रोबोटलाई ठाउँमा घुमाउनको लागि सबैभन्दा सजिलो तरिका र प्रकाश स्रोत खोज्ने हो। सेकेन्डको सेट संख्याको लागि घुमाएपछि, यदि रोबोटले अझै प्रकाशको स्रोत फेला पारेको छैन भने, शक्ति बचत गर्नको लागि, तपाइँ रोबोटलाई चल्न बन्द गर्न चाहानुहुन्छ। सेकेन्डको अर्को सेट संख्या पछि, रोबोटले प्रकाश खोज्नको लागि फेरि ठाउँमा घुमाउनुपर्छ। यस मोड्युलको बारेमा थप जान्नको लागि, यहाँ क्लिक गर्नुहोस्।
चरण 5: यो कसरी काम गर्दछ
यस व्याख्याको लागि तपाईले माथिको चित्रलाई सन्दर्भ गर्न सक्नुहुन्छ। यस निर्देशनको सुरुमा उल्लेख गरिए अनुसार, तपाईंलाई थ्रेसहोल्डिङ विभाजनबाट इनपुटहरू "आकार" र "स्थिति" चाहिन्छ। यी इनपुटहरू मान्य थिए भनेर सुनिश्चित गर्न (पूर्वको लागिampले, जब तपाईले साइज = ० प्राप्त गर्नुहुन्छ, साइज साँच्चै शून्य हुन्छ किनभने क्यामेराले प्रकाश पत्ता लगाउँदैन, र क्यामेराले अझै सुरु गरिरहेको कारण होइन) तपाईलाई केहि प्रकारको सूचक पनि चाहिन्छ, जसलाई हामी "रेडी" भन्छौं। यी डेटा प्रत्येक मोटर (0 बिट, हस्ताक्षर) को लक्ष्य गति निर्धारण गर्न नियन्त्रण (Ctrl. vhd) द्वारा प्रशोधन गरिनेछ।
मोटरमा थप स्थिर आउटपुटको लागि, तपाइँ एक बन्द-लूप प्रणालीमा प्रतिक्रिया प्रयोग गर्न चाहनुहुन्छ। यसका लागि मोटर गति मापन विभाजनबाट प्रत्येक मोटरको इनपुटहरू "दिशा" र "गति" आवश्यक छ। तपाईंले आफ्नो गणनामा यी इनपुटहरू समावेश गर्न चाहनुभएकोले, तपाईंले यी हस्ताक्षर नगरिएका मानहरूलाई 9-बिट हस्ताक्षरित बाइनरीमा रूपान्तरण गर्नुपर्नेछ। यो हस्ताक्षरित बाइनरी कनवर्टर (US2S.vhd) मा हस्ताक्षर नगरिएको द्वारा गरिन्छ।
त्रुटि गणना (त्रुटि। vhd) ले प्रत्येक मोटरको लागि कार्य निर्धारण गर्न लक्ष्य गतिबाट मापन गरिएको गति घटाउँछ। यसको मतलब यो हो कि जब दुबैको समान मान हुन्छ, घटाउ शून्य हुन्छ र मोटरले आफ्नो गतिमा मात्र चल्छ। तपाईं गुणन को एक कारक पनि थप्न सक्नुहुन्छ ताकि रोबोट लक्ष्य गति छिटो पुग्न सक्छ।
मोटर कन्ट्रोलरलाई प्रत्येक मोटरको गति र दिशा चाहिने भएकोले, तपाईंले कार्यको हस्ताक्षरित मानहरूलाई दुई अलग-अलग अहस्ताक्षरित मानहरूमा अनुवाद गर्नुपर्छ: गति (१ बिट) र दिशा (८ बिट)। यो साइन-टु-असाइन गरिएको बाइनरी कन्भर्टर (S1US.vhd) द्वारा गरिन्छ, र मोटर नियन्त्रण डिभिजनमा इनपुट हुनेछ।
हामीले प्रकाश पत्ता नलाग्दा के गर्ने भनेर निर्धारण गर्न एक मोड्युल पनि थप्यौं (प्रकाश काउन्टर छैन। Bhd)। यो मोड्युल मूलतया एक काउन्टर भएको हुनाले, यसले रोबोटलाई घुमाउन वा ठाउँमा बस्न आवश्यक पर्ने समयको गणना गर्नेछ। यसले रोबोटले आफ्नो अगाडि के छ भन्ने सट्टा आफ्नो वातावरण "हेर्छ" भन्ने सुनिश्चित गर्नेछ, र कुनै पनि प्रकाश स्रोत साँच्चै उपलब्ध नभएको बेला ब्याट्रीको पावर बचाउँछ।
चरण 6: मिलाउनुहोस् Files
संयोजन गर्न files, तपाईंले प्रत्येक मोड्युलबाट संकेतहरू जडान गर्न आवश्यक छ। त्यसो गर्न, तपाईंले नयाँ शीर्ष स्तर मोड्युल बनाउनु पर्छ file। अघिल्लो मोड्युलको इनपुटहरू र आउटपुटहरूलाई कम्पोनेन्टको रूपमा घुसाउनुहोस्, जडानहरूको लागि संकेतहरू थप्नुहोस् र प्रत्येक पोर्टलाई सम्बन्धित जोडीमा असाइन गर्नुहोस्। तपाईंले माथिको दृष्टान्तमा जडानहरू सन्दर्भ गर्न सक्नुहुन्छ, र यहाँ कोड हेर्नुहोस्।
चरण 7: यसलाई परीक्षण गर्नुहोस्
तपाईंले पूरै कोडको साथ समाप्त गरिसकेपछि, तपाईंले बोर्डमा अपलोड गर्नु अघि तपाईंको कोडले काम गर्छ कि गर्दैन भनेर तपाईंले जान्न आवश्यक छ, विशेष गरी कोडका भागहरू विभिन्न व्यक्तिहरूद्वारा बनाइएको हुन सक्छ। यसका लागि टेस्टबेन्च चाहिन्छ, जहाँ तपाईंले डमी मानहरू इनपुट गर्नुहुनेछ र हेर्नुहोस् कि कोडले हामीले व्यवहार गर्न चाहेको तरिकाले व्यवहार गर्छ। तपाइँ प्रत्येक मोड्युल परीक्षण गरेर सुरु गर्न आराम गर्न सक्नुहुन्छ, र यदि ती सबै ठीकसँग काम गर्छन् भने, तपाइँ त्यसपछि शीर्ष-स्तर मोड्युल परीक्षण गर्न सक्नुहुन्छ।
चरण 8: यसलाई हार्डवेयरमा प्रयास गर्नुहोस्
तपाइँको कोड तपाइँको कम्प्युटरमा परीक्षण गरिसकेपछि, तपाइँ वास्तविक हार्डवेयरमा कोड परीक्षण गर्न सक्नुहुन्छ। बाधा पुर्याउनुपर्छ file Vivado मा (.xdc file BASYS 3 को लागि) कुन इनपुट र आउटपुटहरू कुन पोर्टहरूमा जान्छन् नियन्त्रण गर्न।
महत्वपूर्ण सुझाव: हामीले कडा तरिकाले बिजुलीका कम्पोनेन्टहरूमा करेन्ट वा भोल्युमको अधिकतम मान हुन सक्छ भनेर सिक्यौंtages। मानहरूको लागि डाटाशीट सन्दर्भ गर्न निश्चित हुनुहोस्। PMOD HB5 को लागि, भोल्युम सेट गर्न निश्चित हुनुहोस्tage १२ भोल्टमा पावर स्रोतबाट (यो आवश्यक भोल्ट होtage मोटरको लागि), र मोटर सार्नको लागि आवश्यक जति कम वर्तमान।
चरण 9: यसलाई अन्य भागहरूसँग मिलाउनुहोस्
यदि अघिल्लो चरणहरू सफल भएमा, अन्तिम कोड रोबोटमा अपलोड गर्नका लागि अन्य समूहहरूसँग कोड मिलाउनुहोस्। त्यसपछि, भोइला! तपाईंले सफलतापूर्वक उज्यालो खोज्ने रोबोट बनाउनु भएको छ।
चरण 10: योगदानकर्ताहरू
बायाँ देखि दायाँ:
- एन्टोनियस ग्रेगोरियस डेवेन रिभाल्डी
- फेलिक्स विगुना
- निकोलस सञ्जय
- रिचर्ड मेडियान्टो
धेरै राम्रो: VHDL मोटर गति नियन्त्रण: दिशा र गति निर्णय गर्नुहोस्, बायाँ र दायाँ गति नियन्त्रक: पृष्ठ 6
पुन: को लागी धन्यवादviewing! यो परियोजना वास्तवमा वर्ग परियोजनाको मात्र एक भाग हो (BASYS 3 बोर्ड र OV7670 क्यामेराको साथ लाइट खोज्ने रोबोट), त्यसैले म छिट्टै कक्षाको निर्देशनयोग्य लिङ्क थप्नेछु!
अद्भुत: म सबै कुरा मिलाएर हेर्नको लागि तत्पर छु।
कागजातहरू / स्रोतहरू
![]() |
instructables VHDL मोटर स्पीड कन्ट्रोल निर्णय दिशा र गति बायाँ र दायाँ गति नियन्त्रक [pdf] निर्देशनहरू VHDL मोटर गति नियन्त्रण निर्णय दिशा र गति बायाँ र दायाँ गति नियन्त्रक, VHDL मोटर गति, नियन्त्रण निर्णय दिशा र गति बायाँ र दायाँ गति नियन्त्रक |