Სარჩევი:

სმარტ 3D პრინტერის ძაფის მრიცხველი: 5 ნაბიჯი (სურათებით)
სმარტ 3D პრინტერის ძაფის მრიცხველი: 5 ნაბიჯი (სურათებით)

ვიდეო: სმარტ 3D პრინტერის ძაფის მრიცხველი: 5 ნაბიჯი (სურათებით)

ვიდეო: სმარტ 3D პრინტერის ძაფის მრიცხველი: 5 ნაბიჯი (სურათებით)
ვიდეო: Заниматься 3д печатью - самая Крутая работа в мире 🔥☄️ #мастерская #3дпечать #3d #ender #деталь 2024, ივნისი
Anonim
სმარტ 3D პრინტერის ძაფის მრიცხველი
სმარტ 3D პრინტერის ძაფის მრიცხველი

რატომ აწუხებთ ძაფის დათვლა? რამდენიმე მიზეზი:

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

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

ძაფის მოძრაობის გაზომვისას ასევე გამაგებინეთ როდის დაიწყო და როდის შეჩერდა ბეჭდვა

მე მჭირდებოდა რაღაც, რომ დაფაროს სივრცე, რომელიც დარჩა ჩემი პრინტერის წინა მახინჯი გიგანტური ლოგოს ამოღებით

მაგარია

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

მარაგები

მბრუნავი კოდირება

ESP32 დაფუძნებული dev დაფა

I2C OLED დისპლეი (ორი ფერის ერთეული განსაკუთრებით მაგრად გამოიყურება)

პაწაწინა მომენტალური ღილაკი

ცხიმიანი 608ZZ ტარების

ორი ბეჭედი ტექნიკის მაღაზიიდან (~ 33 მმ ID x ~ 1.5 მმ პროფილის დიამეტრი - იხილეთ კომენტარები)

ორი 2.5 მმ-იანი თვითმმართველობის მოსმენების ხრახნები შიგთავსისთვის

ორი 4 მმ -იანი ხრახნი, კაკალი და საყელურები, რომ დაამონტაჟოთ მთა თქვენს პრინტერზე

რამოდენიმე მავთული

3D პრინტერი და ზოგიერთი ძაფები

ნაბიჯი 1: შეარჩიეთ მბრუნავი კოდირება

შეარჩიეთ მბრუნავი კოდირება
შეარჩიეთ მბრუნავი კოდირება
შეარჩიეთ მბრუნავი კოდირება
შეარჩიეთ მბრუნავი კოდირება

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

თუ ღირს ამის გაკეთება, ღირს ზედმეტად გაკეთება. ასე რომ, შევიძინე დიდი, მეგობრული, 360 პულსიანი რევოლუციის კოდირება და ავაშენე ჩემი პროექტი მის გარშემო. მე ავირჩიე Signswise Incremental Optical Rotary Encoder, ტიპი LPD3806-360BM-G5-24C. მაგრამ ნებისმიერი ღირსეული კოდირება გააკეთებს.

ნაბიჯი 2: დაამატეთ პულლი და უსაქმური

დაამატეთ პული და უსაქმური
დაამატეთ პული და უსაქმური

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

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

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

ნაბიჯი 3: კოდირება

Image
Image

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

ძირითადი გაანგარიშება მარტივია: ორი შეყვანა - დაყენებულია შინაგანად ისე, რომ გარე რეზისტორებს არ სჭირდებოდეს Vcc– ზე შედუღება - და ერთი შეწყვეტა. მე ასევე დავამატე ნულოვანი/გადატვირთვის ღილაკი, რომელიც მოითხოვს კიდევ ერთ შეყვანას და შეწყვეტას:

void setUpPins () {

pinMode (ENCODER_PIN_1, INPUT_PULLUP); pinMode (ENCODER_PIN_2, INPUT_PULLUP); pinMode (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, CHANGE); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } void IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {პოზიცია += 1; } else {პოზიცია -= 1; }} void IRAM_ATTR zeroButtonPressed () {// სახელურის ნულოვანი & გადატვირთვა}

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

სრული კოდი არის Github– ზე.

რამდენიმე შენიშვნა კოდზე:

ამის შესაქმნელად, თქვენ გჭირდებათ რეზოლუცია (encoderPPR) - პულსი რევოლუციისთვის, რაც ჩვეულებრივ ორჯერ აღემატება მითითებულ სპეციფიკაციას - და პულელის რადიუსი (wheelRadius). ეს მნიშვნელობები, პლუს თქვენი wifi ssid და პაროლი და ღილაკზე, კოდირებასა და OLED ეკრანზე დაკავშირებული კონკრეტული ქინძისთავები, ყველა შედის config.h

ნულოვანი ღილაკი ასევე ორმაგდება გადატვირთვის სახით - დაიჭირეთ იგი დაფის გადატვირთვისთვის, რაც გამოსაყენებლად სასარგებლოა

შეფერხებები ძლიერია - ზოგჯერ ძალიან ძლიერი. ნულოვანი ღილაკის ერთმა შეხებამ შეიძლება გამოიწვიოს zeroButtonPressed () ფუნქციის გამოძახება 10-20-ჯერ, ამიტომ დავამატე დებიუანსის ლოგიკა. ჩემს ოპტიკურ დამშიფრებელს ეს არ სჭირდებოდა, მაგრამ YMMV

მიუხედავად იმისა, რომ შეფერხებები ზრუნავენ შეყვანაზე ასინქრონულად, მარყუჟის () რუტინა ამუშავებს ბუღალტერიას. EncoderState - enum, რომელიც შეიძლება იკვებებოდეს, გაიყვანოს ან შეჩერდეს - განახლდება კოდირების პოზიციის ცვლილებით. დროის ამოწურვა განსაზღვრავს, როდის დაიწყო პრინტერმა და დაასრულა ბეჭდვა. მაგრამ სახიფათო ნაწილი ის არის, რომ 3D პრინტერები ხშირად იწყებენ და აჩერებენ მოძრაობას, ასე რომ რაც საუკეთესოდ მუშაობდა იყო განსაზღვრული „სრული დაბეჭდვის“მოვლენა, რომელიც განუწყვეტლივ ჩერდებოდა მინიმუმ 5 წამის განმავლობაში. ნებისმიერი მოძრაობა იწვევს მეორე ტაიმერს, რომელიც განსაზღვრავს "დაწყებული დაბეჭდვის" მოვლენას მხოლოდ იმ შემთხვევაში, თუ რაიმე "დაბეჭდვის სრული" მოვლენა არ მოხდება 15 წამის ვადაში. პრაქტიკაში, ეს ცურვით მუშაობს

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

ჩემს მაგალითში არის რამოდენიმე დამატებითი კოდი (A) დაამყაროს და შეინარჩუნოს ქსელური კავშირი WiFi და mDNS– ით, (B) მოიტანოს დრო NTC სერვერიდან, ასე რომ მე შემიძლია დროულად მოვახერხო ჩემი დაწყების და დასრულების შეტყობინებები და აჩვენო მხიარული საათი ჩემს OLED– ზე და (C) ამუშავებს OTA განახლებებს, ასე რომ მე არ მჭირდება ფიზიკურად ჩემი დაფის დაკავშირება Mac– თან კოდის განახლებისთვის. ამ დროისთვის, ეს ყველაფერი ერთ მონოლითურ C ++ ფაილშია, მხოლოდ იმიტომ, რომ მე დრო არ დამჭირდა მისი უკეთ ორგანიზებისთვის

მე გამოვიყენე მშვენიერი (და უფასო) Prowl iOS აპლიკაცია, რომ გამომეგზავნა push შეტყობინებები ჩემს ტელეფონზე არა უმეტეს HTTP Get მეთოდებისა

კოდის შესაქმნელად და დაფის გასანათებლად გამოვიყენე სანახაობრივი PlatformIO, რომელიც მუშაობს Visual Studio Code– ზე, ორივე უფასოა

ჩემი პროექტისთვის გამოვიყენე ეს ბიბლიოთეკები: ოლივერის u8g2, პოლ სტოფგრენის elapsedMillis და მარკუს სატლერის HTTPClient, რომელსაც გააჩნია Espressif ESP32 პლატფორმა. ყველაფერი დანარჩენი მოყვება Arduino ბიბლიოთეკას ან ESP32 პლატფორმას PlatformIO- ში

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

ნაბიჯი 4: გაყვანილობა

გაყვანილობა
გაყვანილობა

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

პირველი მოთხოვნა იყო ჩემი მბრუნავი კოდირების 5V მიწოდების ძაბვა. ESP32- ის სხვადასხვა დაფებიდან, რომელიც მე მქონდა ჩამონტაჟებული, მხოლოდ რამდენიმემ მიაწოდა ჭეშმარიტი 5V Vcc პინზე, როდესაც იკვებებოდა USB- ით. (დანარჩენებმა შეაფასეს 4.5-4.8V, რაც, თუ თქვენი მათემატიკა ცუდია, 5V- ზე დაბალია.) დაფა, რომელსაც ვიყენებდი იყო Wemos Lolin32.

შემდეგი, მოვიდა ორი მბრუნავი კოდირების სიგნალის ქინძისთავები. ვინაიდან მე ვიყენებ შეფერხებებს, მთავარი საზრუნავი ის არის, რომ მე ვიყენებ ქინძისთავებს არაფერში ერევა. ESP32– ის დოკუმენტებში ნათქვამია, რომ ADC2 არ შეიძლება გამოყენებულ იქნას WiFi– სთან ერთად, ასე რომ, სამწუხაროდ, მე არ შემიძლია გამოვიყენო არცერთი ADC2 GPIO ქინძი: 0, 2, 4, 12, 13, 14, 15, 25, 26, ან 27. მე ავირჩიე 16 და 17.

რჩევა: თუ ამ ყველაფრის ერთად დაყენების შემდეგ, თქვენი კოდირება უკუღმა ითვლის, შეგიძლიათ უბრალოდ შეცვალოთ ორი პინიანი დავალება config.h– ში.

დაბოლოს, შეაერთეთ მბრუნავი კოდირების გრუნტის მავთული… დრამის როლთან… მიწასთან.

შემდეგი, ნულოვანი/გადატვირთვის ღილაკი უკავშირდება მიწას და სხვა უფასო პინს (მე ავირჩიე GPIO 18).

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

დაბოლოს, OLED– ს, თუ ის უკვე არ არის დაკავშირებული თქვენს დაფასთან, სჭირდება მხოლოდ ოთხი ქინძისთავები: 3V3, მიწა, i2c საათი და i2c მონაცემები. ჩემს დაფაზე, საათი და მონაცემები არის შესაბამისად 22 და 21, შესაბამისად.

ნაბიჯი 5: ამობეჭდეთ ნაწილები

ამობეჭდეთ ნაწილები
ამობეჭდეთ ნაწილები

მე შევიმუშავე შვიდი ნაწილი ამ მშენებლობისთვის:

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

უსაქმური, რომელიც ჯდება 608ZZ საყრდენზე (ამოიღეთ თაროები და წაშალეთ WD40– ით, ისე რომ ტრიალებს თავისუფლად)

დამჭერი, რომელზედაც დამონტაჟებულია ორი ქუსლი და დამშიფრავი - აღნიშნავენ სპირალურ ზამბარას უსაქმურისთვის

ფრჩხილი დამჭერის სტაბილიზაციისთვის. ამ ნაბიჯის ფოტო გვიჩვენებს, თუ როგორ მიმაგრებულია ფრჩხილი დამჭერზე

დანართი (ქვედა) ჩემი ESP32 dev დაფის შესანახად, გვერდით USB კაბელისთვის, ხოლო მეორეზე ზემოთ კონექტორისთვის, რომელიც დავამატე ჩემს კოდირების მავთულს. ეს განკუთვნილია Wemos Lolin32– ის მოსაწყობად, ასე რომ თქვენ შეიძლება დაგჭირდეთ ამ დიზაინის ოდნავ მოდიფიცირება სხვა დაფაზე

დანართი (ზედა) OLED ეკრანის შესანახად, კიდევ ერთი სპირალი ნულოვანი / გადატვირთვის ღილაკისთვის

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

ყველაფერი შექმნილია დასაბეჭდად მხარდაჭერის გარეშე. ჩვეულებრივი PLA თქვენი არჩევანის ფერი არის ყველაფერი რაც თქვენ გჭირდებათ.

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

გირჩევთ: