Სარჩევი:

Arduino 2-in-1 მოდელის მატარებლის კონტროლერი: 4 ნაბიჯი
Arduino 2-in-1 მოდელის მატარებლის კონტროლერი: 4 ნაბიჯი

ვიდეო: Arduino 2-in-1 მოდელის მატარებლის კონტროლერი: 4 ნაბიჯი

ვიდეო: Arduino 2-in-1 მოდელის მატარებლის კონტროლერი: 4 ნაბიჯი
ვიდეო: CS50 2014 - Week 9 2024, ივლისი
Anonim
Arduino 2-in-1 მოდელის მატარებლის კონტროლერი
Arduino 2-in-1 მოდელის მატარებლის კონტროლერი

ორმოცი წლის წინ მე შევიმუშავე op-amp მოდელზე დაფუძნებული მოდელის მატარებელი რამოდენიმე მეგობრისთვის, შემდეგ კი დაახლოებით ოთხი წლის წინ მე ხელახლა შევქმენი ის PIC მიკროკონტროლის გამოყენებით. Arduino– ს ეს პროექტი ხელახლა ქმნის PIC ვერსიას, მაგრამ ასევე ამატებს შესაძლებლობას გამოვიყენოთ Bluetooth კავშირი მექანიკური გადამრთველების ნაცვლად, გაზქურის, მუხრუჭისა და მიმართულების კონტროლისთვის. მიუხედავად იმისა, რომ დიზაინი, რომელსაც აქ წარმოვადგენ, გამიზნულია 12 ვოლტიანი მოდელის რკინიგზის ძრავისთვის, ის ადვილად შეიძლება შეიცვალოს სხვადასხვა სახის ძრავის კონტროლის სხვა პროგრამებისთვის.

ნაბიჯი 1: პულსის სიგანის მოდულაცია (PWM)

პულსის სიგანის მოდულაცია (PWM)
პულსის სიგანის მოდულაცია (PWM)

მათთვის, ვინც არ იცნობს PWM– ს, ეს არ არის ისეთი საშინელი, როგორც ჟღერს. ყველაფერი, რაც ნამდვილად ნიშნავს ჩვენი მარტივი საავტომობილო კონტროლის პროგრამას, არის ის, რომ ჩვენ ვქმნით გარკვეული სიხშირის კვადრატულ ტალღას და შემდეგ ვცვლით სამუშაო ციკლს. სამუშაო ციკლი განისაზღვრება, როგორც დროის თანაფარდობა, რომლის გამომუშავებაც ლოგიკურად მაღალია ტალღის ფორმის პერიოდთან შედარებით. თქვენ აშკარად ხედავთ ზემოთ მოცემულ დიაგრამაში, რომლის ზედა ტალღის ფორმაა 10% სამუშაო ციკლი, შუა ტალღის ფორმა 50% სამუშაო ციკლით და ქვედა ტალღის ფორმა 90% სამუშაო ციკლით. მოწყვეტილი ხაზი, რომელიც გადახურულია თითოეულ ტალღის ფორმაზე, წარმოადგენს ძრავის მიერ დანახულ ექვივალენტურ DC ძაბვას. იმის გათვალისწინებით, რომ Arduino– ს აქვს PWM უნარი ჩაშენებული, მართლაც საკმაოდ მარტივია ამ ტიპის DC ძრავის კონტროლის გენერირება. PWM– ის გამოყენების კიდევ ერთი უპირატესობა ის არის, რომ ის ხელს უწყობს ძრავის შენარჩუნებას გაშვებული გაშვებისგან, რაც შეიძლება მოხდეს პირდაპირი DC– ის გამოყენებისას. PWM– ის ერთი მინუსი ის არის, რომ ზოგჯერ ისმის ხმაური ძრავიდან PWM სიხშირით.

ნაბიჯი 2: აპარატურა

ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა

პირველი სურათი გვიჩვენებს Arduino კავშირებს კონცენტრატორებისთვის და LM298 ძრავის დრაივერის მოდულს. არდუინოს შიგნით არის სუსტი გამწევი რეზისტორები, ამიტომ გადამრთველებისთვის არ არის საჭირო გამწევი რეზისტორები. მიმართულების შეცვლა არის მარტივი SPST (ერთ ბოძზე ერთჯერადი გადაყრა) გადამრთველი. Throttle და Brake კონცენტრატორები ნაჩვენებია როგორც ჩვეულებრივ ღია, წამიერი კონტაქტის ღილაკები.

მეორე სურათი გვიჩვენებს Arduino კავშირებს Bluetooth მოდულისთვის და LM298 ძრავის დრაივერის მოდულისთვის. Bluetooth TXD გამომავალი პირდაპირ უკავშირდება Arduino RX სერიულ შეყვანას.

მესამე სურათი არის L298N ორმაგი H- ხიდის მოდული. LM298 მოდულს აქვს 5 ვოლტიანი რეგულატორი, რომლის ჩართვაც შესაძლებელია ჯუმბერის საშუალებით. ჩვენ გვჭირდება +5 ვოლტი არდუინოსა და ბლუთუსისთვის, მაგრამ ჩვენ გვინდა +12 ვოლტი ძრავის მართვისთვის. ამ შემთხვევაში ჩვენ გამოვიყენებთ +12 ვოლტს L298N- ის " +12V სიმძლავრის" შეყვანისას და ჩვენ დავტოვებთ "5V ჩართვის" ჯუმბერს ადგილზე. ეს საშუალებას აძლევს 5 ვოლტ რეგულატორს გამოვიდეს მოდულზე "+5 სიმძლავრის" კავშირზე. შეაერთეთ ის Arduino– ს და Bluetooth– ს. ნუ დაგავიწყდებათ მიწების დაკავშირება +12 შეყვანისა და +5 გამომავალი მოდულისთვის "power GND".

ჩვენ გვსურს, რომ ძრავაზე ძაბვა იცვლებოდეს Arduino– ს მიერ წარმოქმნილი PWM– ის ნაცვლად, ვიდრე უბრალოდ იყოს სავსე ან გამორთული. ამისათვის ჩვენ ამოვიღებთ მხტუნავებს "ENA" - დან და "ENB" - დან და ვუერთებთ ჩვენს Arduino PWM გამომავალს "ENA" - ს მოდულში. გაითვალისწინეთ, რომ ჩართვის რეალური პინი არის ყველაზე ახლოს დაფის კიდეზე ("შეყვანის" პინების გვერდით). თითოეული ჩართვის უკანა პინი არის +5 ვოლტი, ასე რომ ჩვენ გვინდა დავრწმუნდეთ, რომ ჩვენ არ ვუკავშირდებით მას.

მოდულის "IN1" და "IN2" ქინძისთავები დაკავშირებულია შესაბამის Arduino პინებთან. ეს ქინძისთავები აკონტროლებენ ძრავის მიმართულებას და, დიახ, არსებობს კარგი მიზეზი, რომ Arduino- მ გააკონტროლოს ისინი მოდულის გადამრთველის უბრალოდ შეერთების ნაცვლად. რატომ პროგრამულ დისკუსიაში ვნახავთ.

ნაბიჯი 3: Bluetooth მოდული

Bluetooth მოდული
Bluetooth მოდული

აქ ნაჩვენები სურათი ტიპიურია ხელმისაწვდომი Bluetooth მოდულებისთვის. როდესაც ეძებთ მას ყიდვისას, შეგიძლიათ მოძებნოთ ტერმინები "HC-05" და HC-06 ". ამ ორს შორის განსხვავებები არის firmware- ში და ჩვეულებრივ დაფაზე ქინძისთავების რაოდენობაში. სურათი ზემოთ არის HC-06 მოდულის და გააჩნია გამარტივებული firmware, რომელიც მხოლოდ ძალიან ძირითად კონფიგურაციის საშუალებას იძლევა. ის ასევე არის მითითებული, როგორც „მონა“მხოლოდ Bluetooth მოწყობილობა. მარტივი სიტყვებით, ეს ნიშნავს, რომ მას შეუძლია უპასუხოს მხოლოდ "სამაგისტრო" მოწყობილობის ბრძანებებს და არ შეუძლია ბრძანებების გაცემა დამოუკიდებლად. HC-05 მოდულს აქვს უფრო მეტი კონფიგურაციის შესაძლებლობა და მისი დაყენება შესაძლებელია როგორც „სამაგისტრო“ან „მონა“მოწყობილობად. HC-05– ს ჩვეულებრივ აქვს ექვსი ქინძისთავები ნაცვლად მხოლოდ ოთხისა ზემოთ ნაჩვენები HC-06– ისთვის. სახელმწიფო პინი ნამდვილად არ არის მნიშვნელოვანი, მაგრამ გასაღები (ზოგჯერ სხვა სახელებით, როგორიცაა "EN") საჭიროა თუ გსურთ რაიმე კონფიგურაციის გაკეთება. საერთოდ, მოდულებს არ სჭირდებათ რაიმე კონფიგურაცია, თუ კარგად ხართ ნაგულისხმევი 9600 baud მაჩვენებლით და არ გაინტერესებთ მოდულისთვის კონკრეტული სახელის მინიჭება. მე მაქვს რამდენიმე პროექტი, სადაც მე ვიყენებ მათ, ამიტომ მომწონს მათი სახელის დადება.

Bluetooth მოდულების კონფიგურაცია მოითხოვს, რომ იყიდოთ ან შექმნათ ინტერფეისი RS-232 სერიულ პორტში ან USB პორტში. მე არ განვიხილავ როგორ ავაშენო ეს ამ პოსტში, მაგრამ თქვენ უნდა შეგეძლოთ ინფორმაციის მოძიება ინტერნეტში. ან უბრალოდ იყიდეთ ინტერფეისი. კონფიგურაციის ბრძანებები იყენებენ AT ბრძანებებს, ისევე როგორც ძველად ტელეფონის მოდემებს. მე დავამატე მომხმარებლის სახელმძღვანელო, რომელიც შეიცავს AT ბრძანებებს თითოეული მოდულის ტიპისთვის. ერთი რამ უნდა აღინიშნოს, რომ HC-06 მოითხოვს UPPERCASE ბრძანებებს და ბრძანების სტრიქონი უნდა დასრულდეს 1 წამში. ეს ნიშნავს, რომ ზოგიერთი უფრო გრძელი სტრიქონი ისეთი რაღაცეებისათვის, როგორიცაა ბაუდის განაკვეთების შეცვლა, უნდა იყოს მოჭრილი და ჩასმული თქვენს ტერმინალურ პროგრამაში, ან თქვენ დაგჭირდებათ ტექსტური ფაილების დაყენება გასაგზავნად. UPPERCASE მოთხოვნაა მხოლოდ იმ შემთხვევაში, თუ თქვენ ცდილობთ კონფიგურაციის ბრძანებების გაგზავნას. რეგულარულ კომუნიკაციის რეჟიმს შეუძლია მიიღოს ნებისმიერი 8 ბიტიანი მონაცემი.

ნაბიჯი 4: პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფა საკმაოდ მარტივია როგორც სახელმძღვანელო ვერსიისთვის, ასევე Bluetooth ვერსიისთვის. Bluetooth ვერსიის შესარჩევად, უბრალოდ დატოვეთ კომენტარი "#define BT_Ctrl" განცხადებაზე.

როდესაც დავწერე PIC კოდი, მე ექსპერიმენტი გავუკეთე PWM სიხშირეს და საბოლოოდ დავადგინე 500-ჰც. აღმოვაჩინე, რომ თუ სიხშირე ძალიან მაღალი იყო მაშინ LM298N მოდულს არ შეეძლო საკმარისად სწრაფად რეაგირება იმპულსებზე. ეს იმას ნიშნავდა, რომ ძაბვის გამომუშავება არ იყო წრფივი და შეიძლება დიდი ნახტომი გადაეღო. Arduino– ს აქვს PWM ბრძანებები ჩაშენებული, მაგრამ ისინი მხოლოდ საშუალებას გაძლევთ შეცვალოთ სამუშაო ციკლი და არა სიხშირე. საბედნიეროდ, სიხშირე არის დაახლოებით 490-ჰც, რაც საკმაოდ ახლოსაა 500-ჰც-თან, რაც მე გამოვიყენე PIC- ში.

მატარებლის საჰაერო ხომალდის ერთ -ერთი "მახასიათებელი" არის აჩქარების და დამუხრუჭების იმპულსის განცდა, რათა სიმულაციური იყოს როგორ მუშაობს რეალური მატარებელი. ამის მისაღწევად, მარტივი დროის შეფერხება ჩნდება მარყუჟში პროგრამული უზრუნველყოფის სახელმძღვანელო ვერსიისთვის. ნაჩვენები მნიშვნელობით, დაახლოებით 13 წამი სჭირდება 0 -დან 12 ვოლტამდე გადასვლას ან 12 ვოლტიდან ნულს. შეფერხება ადვილად შეიძლება შეიცვალოს უფრო გრძელი ან მოკლე დროით. ერთადერთი შემთხვევა, როდესაც იმპულსი არ არის ძალაშია, როდესაც იცვლება მიმართულების გადამრთველი. დაცვის მიზნით, PWM– ის სამუშაო ციკლი დაუყოვნებლივ არის მითითებული 0% –ზე, როდესაც ეს შეცვლა შეიცვლება. ეს, ფაქტობრივად, ხდის მიმართულების გადართვას ასევე ორმაგად, როგორც გადაუდებელი მუხრუჭი.

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

პროგრამული უზრუნველყოფის Bluetooth ვერსია იყენებს ერთი ასო ბრძანებებს Forward, Reverse, Brake და Throttle ფუნქციების დასაწყებად. ფაქტობრივად, მიღებული ბრძანებები ცვლის მექანიკურ გადამრთველებს, მაგრამ იწვევს ერთსა და იმავე პასუხებს. აპლიკაციას, რომელსაც მე ვიყენებ Bluetooth კონტროლისთვის, შემდეგი პროტოტიპებით ეწოდება "Bluetooth სერიული კონტროლერი". ეს საშუალებას გაძლევთ დააკონფიგურიროთ ვირტუალური კლავიატურა და დააყენოთ თქვენი საკუთარი ბრძანების სტრიქონი და სახელები თითოეული გასაღებისთვის. ეს ასევე გაძლევთ საშუალებას დააყენოთ გამეორების სიჩქარე, ასე რომ მე დავაყენე სამუხრუჭე და გასროლის ღილაკები 50ms- ზე, რათა მივაღწიო დაახლოებით 14 წამის იმპულსს. მე გამორთულია განმეორებითი ფუნქცია Forward და Reverse ღილაკებისთვის.

სულ ესაა ამ პოსტისთვის. გადახედეთ ჩემს სხვა ინსტრუქციებს. თუ თქვენ დაინტერესებული ხართ PIC მიკროკონტროლის პროექტებით, გადახედეთ ჩემს ვებ გვერდს www.boomerrules.wordpress.com

გირჩევთ: