Სარჩევი:

28BYJ-48 სტეპერიანი კუთხოვანი პოზიციური კონტროლი Arduino და ანალოგური ჯოისტიკი: 3 ნაბიჯი
28BYJ-48 სტეპერიანი კუთხოვანი პოზიციური კონტროლი Arduino და ანალოგური ჯოისტიკი: 3 ნაბიჯი

ვიდეო: 28BYJ-48 სტეპერიანი კუთხოვანი პოზიციური კონტროლი Arduino და ანალოგური ჯოისტიკი: 3 ნაბიჯი

ვიდეო: 28BYJ-48 სტეპერიანი კუთხოვანი პოზიციური კონტროლი Arduino და ანალოგური ჯოისტიკი: 3 ნაბიჯი
ვიდეო: Униполярный шаговый двигатель 28BYJ-48 в биполярный 2024, ნოემბერი
Anonim
28BYJ-48 სტეპერიანი კუთხოვანი პოზიციური კონტროლი Arduino და ანალოგური ჯოისტიკით
28BYJ-48 სტეპერიანი კუთხოვანი პოზიციური კონტროლი Arduino და ანალოგური ჯოისტიკით

ეს არის 28BYJ-48 სტეპერიანი ძრავის კონტროლის სქემა, რომელიც მე შემუშავდა გამოსაყენებლად ჩემი ბოლო წლის სადისერტაციო პროექტის ფარგლებში. მე არ მინახავს ეს ადრე, ასე მეგონა ატვირთავდი იმას, რაც აღმოვაჩინე. ვიმედოვნებთ, რომ ეს დაეხმარება სხვას იქ!

კოდი ძირითადად საშუალებას აძლევს სტეპერ ძრავას "გადაწეროს" ანალოგური ჯოისტიკის კუთხის პოზიცია, ანუ თუ ჯოისტიკს წინ მიიწევთ, ძრავა მიემართება "ჩრდილოეთისაკენ". დააყენეთ ჯოისტიკი დასავლეთისკენ, ძრავა ბრუნავს წერტილისკენ იმავე მიმართულებით.

ჩემი განხორციელებისათვის მე მოვითხოვე, რომ თუ ჯოისტიკი გაუშვეს, ანუ არ აქვს კუთხური პოზიცია, ძრავა ბრუნდება "სახლის" მიმართულებით. სახლის მიმართულება აღმოსავლეთისაკენ არის მიმართული, ხოლო ძრავა (ან იჯარით ნებისმიერი მაჩვენებელი / მოწყობილობა, რომელიც მიამაგრეთ გამომავალ ლილვზე!) ასევე უნდა იყოს მიმართული ამ მიმართულებით, როდესაც ის ჩართულია.

მარაგები

არდუინო უნო ან მსგავსი

პურის დაფა და ჯუმბერის მავთულის შერჩევა (მამაკაცი მამაკაცი, მამაკაცი ქალი)

5V კვების ბლოკი

ჯოისტიკების ანალოგი

28BYJ-48 სტეპერიანი ძრავა და ULN2003 სტეპერიანი მძღოლი

კალამი, ქაღალდი და ბლუ-ტაკი (ან ნებისმიერი სხვა მაჩვენებელი მოწყობილობა ძრავაზე დასამაგრებლად!)

ნაბიჯი 1: ნაბიჯი 1: დაყენება

შეაერთეთ სტეპერიანი ძრავა სტეპერ დრაივერთან და შეაერთეთ ქინძისთავები შემდეგნაირად:

IN1 - Arduino pin 8

IN2 - Arduino pin 9

IN3 - Arduino pin 10

IN4 - Arduino pin 11

შეაერთეთ თქვენი 5 ვ ელექტროენერგიის მიწოდება თქვენს პურის დაფაზე და შეუერთეთ ULN2003 5 ვ შეყვანის მიწოდების რელსებს. დააკავშირეთ სახმელეთო რკინიგზა მიწაზე თქვენს არდუინოზე.

ჯოისტიკისთვის დააკავშირეთ შემდეგნაირად:

გადართვა pin - Arduino pin 2

X ღერძი - Arduino A0 (ანალოგი 0 -ში)

Y ღერძი - Arduino A1

+5V - Arduino 5V გამომავალი

GND - Arduino GND

საბოლოოდ დააკავშირეთ თქვენი პურის დაფის საფუძველი სხვა Arduino GND პინთან

ნაბიჯი 2: ნაბიჯი 2: კოდის ახსნა

მე ჩავრთე Arduino– ს სრული კოდი, რომ გადმოწეროთ და გამოიყენოთ. მაგრამ ყველაფერს გავაკეთებ იმისთვის, რომ ავხსნა აქ შესაბამისი ნაწილები.

ამ კოდის მიღმა არსებული თეორია მდგომარეობს იმაში, რომ ჯოისტიკით დაკავებული სივრცე დაყოფილია გრაფიკად, 0, 0 ცენტრში. თუმცა ჯოისტიკის შეყვანა არის ცენტრში (დაახლ.) 512, ამიტომ ამ ორი ფუნქციის დასაძლევად გამოიყენება X და Y ღერძებიდან წაკითხული მნიშვნელობის "ნულამდე". ენერგიის წყაროს მიხედვით, რომელსაც თქვენ იყენებთ, შეიძლება დაგჭირდეთ ZeroX და ZeroY ფუნქციების მნიშვნელობების შეცვლა ისე, რომ თქვენი ჯოისტიკი დასვენებისას იძლევა 0 -ს საიმედო მაჩვენებელს.

როდესაც X, Y მნიშვნელობები იკითხება, ისინი პირველად გარდაიქმნება რადიანად math.h ბიბლიოთეკაში atan2 () ფუნქციის გამოყენებით. ამ ფუნქციის ახსნა ამ ინსტრუქციის ფარგლებს მიღმაა, მაგრამ გთხოვთ გადახედოთ მას - ეს გეომეტრიის საკმაოდ მარტივი ხრიკია!

დაბოლოს, რომ გავადვილოთ ცხოვრება ჩვენთვის, ვინც ვმუშაობდით ხარისხში და არა რადიში, atan2 () - ით გაანგარიშებული რადი მნიშვნელობა გარდაიქმნება ხარისხად.

მარყუჟის ზედა ნაწილში არის კოდის მცირე ფრაგმენტი, რომელიც საშუალებას გაძლევთ დააჭიროთ ჯოისტიკზე მომენტალურ ღილაკს "სახლის" მდებარეობის გადასატანად. ეს წარმოუდგენლად სასარგებლო იყო კოდის ტესტირებისას, მაგრამ მე დავტოვე ის, როგორც ვხედავ, როგორ შეიძლება ის სასარგებლო იყოს ზოგიერთ შემთხვევაში.

ახლა გადადით კოდის მთავარ ნაწილზე! ჩვენ ვიწყებთ ჯოისტიკის X კითხვით, Y კოორდინატებს ორჯერ გამოყოფს 10ms დაგვიანებით და შემდეგ ვამოწმებთ, რომ ისინი ერთნაირია - აღმოვაჩინე, რომ ჯოისტიკი ხანდახან გამოსცემს სპორადულ კითხვებს და ეს უმნიშვნელო შეფერხება საკმარისი იყო იმისთვის, რომ შეჩერებულიყო ძრავის ბრუნვა ამ საფუძველზე რა ეს არის ასევე საკმაოდ მოკლე შეფერხება, რომ არ ჩანს ხელი შეუშალოს განზრახ შეყვანას.

დანარჩენი კოდი საკმაოდ გასაგებია და მე ყველაფერი გავაკეთე ამის დასადასტურებლად; IF განცხადებების სერია ადარებს ჯოისტიკის ამჟამინდელ კუთხეს ძრავის კუთხესთან და ამძრავს ძრავას ამ კუთხით. 28BYJ-48 აქვს 5.689 საფეხური თითო ხარისხზე, ამიტომ ჩვენ ვამრავლებთ საჭირო მოძრაობას ამ ერთი შეხედვით უცნაურ რიცხვზე!

კოდის ერთი ნაწილი, რომელიც მოითხოვს ყველაზე მეტად ახსნას, არის ის, რასაც მე ვუწოდე "გადაფარვის საქმე". იმ ჯოისტიკზე და ძრავაზე იყო მაგ. +175 ° და ჯოისტიკი შემდგომში გადავიდა -175 ° –ზე (მოძრაობა მხოლოდ 10 ° ჯოისტიკზე, დასავლეთიდან ჩრდილოეთიდან დასავლეთის სამხრეთით), ძრავა გადაადგილდება არასწორი მიმართულებით 350 ° –ით! ამის აღსაწერად დაიწერა სპეციალური შემთხვევა.

შეფუთვა იწყება შემოწმებით, რომ ძრავას და ჯოისტიკს აქვთ საპირისპირო ნიშნები, ანუ ძრავა დადებითია და ჯოისტიკი უარყოფითი, ან პირიქით. ის ასევე ამოწმებს, რომ ჯოისტიკისა და ძრავის აბსოლუტური (ანუ პოზიტიური მნიშვნელობების) ჯამი 180 ° –ზე მეტია.

თუ ორივე ეს განცხადება მართალია, მაშინ ფუნქცია ამოწმებს საჭიროა თუ არა ძრავას საათის ისრის მიმართულებით მოძრაობა (ძრავის მნიშვნელობა უარყოფითია) თუ საათის ისრის საწინააღმდეგოდ (თუ ძრავის მნიშვნელობა დადებითია).

საავტომობილო კუთხისა და ჯოისტიკების კუთხის აბსოლუტური მნიშვნელობები ჯამდება და გამოაკლება 360 ° –ს გადაადგილების მანძილის დასადგენად. დაბოლოს, ძრავის კუთხე (რომელიც ახლა ასახავს ჯოისტიკის კუთხეს) განახლებულია, როგორც ასეთი.

ნაბიჯი 3: დასრულდა

ასე რომ, ყველაფერი რაც თქვენ გჭირდებათ არის ატვირთოთ კოდი თქვენს არდუინოში და გაუშვით! იხილეთ ვიდეო ზემოთ კარგი იდეისათვის, თუ როგორ მუშაობს პროექტი. ეს სასარგებლო იქნება კამერის გიმბალებისთვის, რობოტული მკლავებისთვის და მრავალი სხვა პროგრამისთვის!

თუ თქვენ იყენებთ კოდს, გთხოვთ შემატყობინოთ, და თუ ხედავთ სადმე, სადაც კოდის გაუმჯობესება შესაძლებელია, სიამოვნებით მოვისმენდი თქვენს გამოხმაურებას.

გირჩევთ: