Სარჩევი:

სამუშაო RC მანქანის სიჩქარე: 4 ნაბიჯი (სურათებით)
სამუშაო RC მანქანის სიჩქარე: 4 ნაბიჯი (სურათებით)

ვიდეო: სამუშაო RC მანქანის სიჩქარე: 4 ნაბიჯი (სურათებით)

ვიდეო: სამუშაო RC მანქანის სიჩქარე: 4 ნაბიჯი (სურათებით)
ვიდეო: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, ნოემბერი
Anonim
მუშაობს RC მანქანის სიჩქარე
მუშაობს RC მანქანის სიჩქარე

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

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

ნაწილების სია:

მიკროკონტროლერი: მე გამოვიყენე ATTiny85 ჩიპი, რომლის ღირებულება იყო დაახლოებით 1 ფუნტი.

მიკროკონტროლერის პროგრამისტი: იმისათვის, რომ მიიღოთ კოდი ჩიპზე, გჭირდებათ მისი პროგრამირების საშუალება. რეგულარული arduino– ით ეს მხოლოდ USB კაბელია, მაგრამ ATTiny ჩიპისთვის, თქვენ გჭირდებათ რაიმე დამატებითი. თქვენ შეგიძლიათ გამოიყენოთ სხვა არდუინო ამის გასაკეთებლად, ან ჩემ მსგავსად, შეგიძლიათ გამოიყენოთ პატარა AVR პროგრამისტი Sparkfun– დან.

learn.sparkfun.com/tutorials/tiny-avr-prog…

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

8 პინიანი ჩიპის სოკეტი: თუ ჩიპს ჩასვამთ სოკეტში და არა მის პირდაპირ შედუღებას, შეგიძლიათ საკუთარ თავს დაუშვათ შეცდომები შეკრებისას. გამოცდილებით ნათქვამი - არავის უნდა ჩიპების დესლედრება მათი გადაპროგრამების მიზნით.

კონდენსატორი: გამოიყენება 100nF (კოდი 104) გამყოფი კონდენსატორი. მე არ მესმის რატომ, მაგრამ წავიკითხე, რომ კონდენსატორების გათიშვა მნიშვნელოვანია ინტერნეტში, ასე რომ ეს სიმართლე უნდა იყოს …

რეზისტორი: 10kΩ რეზისტორი გამოიყენება არდუინოში ხაზის ჩამოსაყვანად. ისევ და ისევ, ელექტრონიკის კიდევ ერთი საიდუმლო.

გასართობი დაფა/Stripboard: ზოგიერთი დაფა, რომელზედაც უნდა შეიკრიბოთ თქვენი წრე.

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

Servo Wire: სამი მავთულის ლენტი, რომელიც მთავრდება 3 პინიან JR მდედრობითი დანამატით. მე მივიღე ჩემი დამწვარი სერვოდან, რომელსაც "ვცვლიდი".

სტეპერიანი ძრავა: მე გამოვიყენე 6 მმ ბიპოლარული Nidec სტეპერიანი ძრავა. ნებისმიერი პატარა სტეპერი უნდა მუშაობდეს, თუმცა შეინარჩუნეთ ისინი პატარა, რადგან სტეპერი პირდაპირ არდუინოდან არის განდევნილი.

სათაურის ქინძისთავები: არ არის აუცილებელი, მაგრამ თუ თქვენს სტეპერს მიამაგრებთ 4 სათაურის ქინძისთავზე და დააინსტალირებთ სოკეტს თქვენს წრეზე, მარტივად შეგიძლიათ გამორთოთ თქვენი დაფა ინსტალაციის სიმარტივისთვის.

კომპიუტერი: თქვენი დაფის დასაპროგრამებლად დაგჭირდებათ კომპიუტერი. შესაძლოა Arduino IDE– სთან ერთად. და შესაძლოა USB კაბელი. თუ მას აქვს კვების კაბელიც, მაშინ კიდევ უკეთესი.

ნაბიჯი 1: სისტემა

სისტემის შექმნის ძირითადი მონახაზი იყო მეთოდი, რომლის მიხედვითაც პულსის სიგანის მოდულაციის (PWM) სიგნალი, რომელიც RC მიმღებიდან მოდის, გარდაიქმნება სტეპერ ძრავის გაწმენდაში ATTiny 85 მიკროკონტროლერის (uC) საშუალებით.

აქ არის რესურსი PWM სიგნალებსა და RC– ზე, მაგრამ ამის გამეორებისთვის თქვენ არ გჭირდებათ მისი გაგება.

en.wikipedia.org/wiki/Servo_control

ATTiny არის Arduino– ს ჩემი საყვარელი გემო, რადგან ის ჯერ კიდევ საკმარისია I/O ქინძისთავებით ძირითადი საქმეების შესასრულებლად, ასე რომ მშვენივრად ჯდება პატარა მოდელებსა და RC პროექტებში. ATTiny– ის მთავარი მინუსი ის არის, რომ მას სჭირდება ცოტა მეტი კონფიგურაცია პროგრამის დასაპროგრამებლად, მაგრამ მას შემდეგ რაც დაინსტალირდებით ისინი იმდენად იაფია, რომ თქვენ შეგიძლიათ შეიძინოთ მათი დასტები ყველა სახის პროექტისათვის.

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

სისტემა, გააქტიურებისთანავე, გადააბიჯებს სტეპერს უკან ორი რევოლუციისთვის, ისე რომ ნემსი ნულდება. სპიდომეტრს სჭირდება დასასვენებელი ბუდე, სადაც გინდათ რომ იყოს ნულოვანი ნიშანი, თორემ ის უბრალოდ სამუდამოდ დატრიალდება. შემდეგ ის ასახავს წინა და უკანა PWM სიგნალებს ძრავის რამდენიმე საფეხურისკენ. ადვილია, არა…?

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

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

ასე რომ, ჩემი უღრმესი მადლობა დუან ბ -ს, რომელმაც შექმნა კოდი RC სიგნალების ინტერპრეტაციისთვის:

rcarduino.blogspot.com/

და არდუნაუტს, რომელმაც შეადგინა კოდი სტეპერის გასაშვებად, როგორც ანალოგური ლიანდაგი:

arduining.com/2012/04/22/arduino-driving-a…

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

ახლა ეს გზაზე არ არის, აი რა უნდა ატვირთოთ ATTiny– ში:

#განსაზღვრეთ THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - use interrupt number in attachInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = ციფრული PIN 2 - გამოიყენეთ PIN ნომერი ციფრული წაკითხვის ხანგრძლივობა ნეიტრალური გასროლი ელექტრო RC მანქანაზე #განსაზღვრეთ UPPER_THROTTLE 2000 // ეს არის ხანგრძლივობა მიკროწამებში მაქსიმალური დაქოქვისას ელექტრო RC მანქანაზე #განსაზღვრეთ LOWER_THROTTLE 1000 // ეს არის ხანგრძლივობა ელექტრონულ RC მანქანაზე მინიმალურ დროსელი მიკროწამებში DEADZONE 50 // ეს არის გასროლის მკვდარი ზონა. ჯამური ზონა ორჯერ მეტია. #ჩათვლით #განსაზღვრეთ ნაბიჯები 21 // ნაბიჯები თითო რევოლუციაზე (შემოიფარგლება 315 ° -ით) შეცვალეთ ეს სიჩქარემეტრის მაქსიმალური მგზავრობის შესაცვლელად. #განსაზღვრეთ COIL1 3 // Coil Pins. სტეპერისთვის ATTiny იყენებს ქინძისთავებს 0, 1, 3, 4. პინი 2 არის ერთადერთი პინი, რომელსაც შეუძლია გაუმკლავდეს შეფერხებებს, ასე რომ ის უნდა იყოს შეყვანა. #განსაზღვრეთ COIL2 4 // სცადეთ მათი შეცვლა, თუ სტეპერიანი ძრავა არ მუშაობს სწორად. #განსაზღვრეთ COIL3 0 #განსაზღვრეთ COIL4 1 // შექმენით სტეპერი კლასის მაგალითი: სტეპერი სტეპერი (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // პოზიცია საფეხურებში (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // დრო გადატვირთვის დროს უსაქმურ დროში int int Resetval = 0; არასტაბილური int ThrottleIn = LOWER_THROTTLE; არასტაბილური ხელმოუწერელი ხანგრძლივი StartPeriod = 0; // შეწყვეტაში მითითებული // ჩვენ შეგვიძლია გამოვიყენოთ nThrottleIn = 0 მარყუჟში ცალკე ცვლადის ნაცვლად, მაგრამ bNewThrottleSignal- ის გამოყენება იმის საჩვენებლად, რომ ჩვენ გვაქვს ახალი სიგნალი // უფრო ნათელია ამ პირველი მაგალითისთვის void setup () {// ვუთხრა Arduino ჩვენ გვინდა, რომ ფუნქცია calcInput იყოს გამოძახებული, როდესაც INT0 (ციფრული პინი 2) იცვლება HIGH– დან LOW– მდე ან LOW– მდე HIGH // ამ ცვლილებების დაჭერა საშუალებას მოგვცემს გამოვთვალოთ რამდენ ხანს არის შეყვანის პულსი მიმაგრებული Interrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // დააყენეთ ძრავის სიჩქარე 30 RPM (360 PPS დაახ.). სტეპერი. ნაბიჯი (STEPS * 2); // პოზიციის გადატვირთვა (X ნაბიჯები საათის ისრის საწინააღმდეგოდ). } void loop () {გადატვირთვა = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTLET,; გადატვირთვა = 0; } // საპირისპირო რუქის სხვა შემთხვევაში თუ (ThrottleInAvg LOWER_THROTTLE) {SPEED = რუკა (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); გადატვირთვა = 0; } // დიაპაზონის მიღმა სხვა if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; გადატვირთვა = 0; } // დიაპაზონის მიღმა სხვაგან დაბალი თუ (ThrottleInAvg Resetcounter) {stepper.step (4); // მე ვცდილობ სტეპერს ვუთხრა, რომ ხელახლა გადატვირთოს, თუ RC სიგნალი დიდი ხანია ჩიხშია. დარწმუნებული არ ვარ, კოდის ეს ნაწილი ნამდვილად მუშაობს. }} int val = SPEED; // მიიღეთ პოტენომეტრის მნიშვნელობა (დიაპაზონი 0-1023) val = რუკა (val, 0, 255, 0, STEPS * 0.75); // რუქის ქოთნის დიაპაზონი სტეპერ დიაპაზონში. if (abs (val - pos)> 2) {// თუ სხვაობა 2 საფეხურზე მეტია. if ((val - pos)> 0) {stepper.step (-1); // გადაადგილება ერთი ნაბიჯი მარცხნივ. პოს ++; } if ((val - pos) <0) {stepper.step (1); // ერთი ნაბიჯის გადატანა მარჯვნივ. პოს--; }} // დაგვიანება (10); } void calcInput () {// თუ pin მაღალია, ეს არის წყვეტის დასაწყისი, თუ (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// მიიღეთ დრო მიკროსკოპის გამოყენებით - როდესაც ჩვენი კოდი მართლაც დაკავდება, ეს გახდება არაზუსტი, მაგრამ მიმდინარე პროგრამისთვის მისი // ადვილად გასაგები და მუშაობს ძალიან კარგად StartPeriod = micros (); } else {// თუ ქინძისთავი დაბალია, ეს არის პულსის დაცემა (int) (micros () - StartPeriod); დაწყების პერიოდი = 0; }}}

მიმართეთ ამას ATTiny85– ის პროგრამირების შესახებ დამატებითი ინფორმაციისათვის:

learn.sparkfun.com/tutorials/tiny-avr-prog…

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

აპარატურა
აპარატურა
აპარატურა
აპარატურა
აპარატურა
აპარატურა

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

C1 = 100nF

R1 = 10kΩ

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

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

თუ თქვენ დაამზადებთ სათაურის პინ კონექტორს და აყენებთ ქინძისთავებს ასე: [Ca1, Cb1, Ca2, Cb2] Ca1 დგას Coil A, მავთული 1 და ა.შ. ეს გაძლევთ საშუალებას შეცვალოთ ლიანდაგის ბრუნვის მიმართულება დანამატის შეცვლით გარშემო

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

ნაბიჯი 4: ეპილოგი

ვიმედოვნებთ, რომ თქვენ ისიამოვნეთ ამ მოკლე ინსტრუქციებით და ის თქვენთვის სასარგებლო აღმოჩნდა. თუ ააშენებ ამათგან ერთს, გამაგებინე!

Წარმატებები!

გირჩევთ: