طابعة دلتا للمعايرة التلقائية ، مثال Prism Mini

في مقال سابق ، تم توضيح كيفية معايرة طابعة دلتا في الوضع اليدوي. ولكن بسبب تعقيد الإعدادات وتعقيدها ، فقد تقرر إجراء المعايرة التلقائية. نظرًا لأن الإصدار النهائي في مرحلة الاختبار والتصنيع ، فإننا ما زلنا نريد أن نجعل الحياة أسهل لعملائنا ، وكل من صنع الطابعات لأنفسهم وفقًا لهذا المخطط. بعد ذلك ، سيتم النظر في إحدى طرق تنفيذ المعايرة التلقائية.
هناك العديد من الأساليب ، تثبيت مسبار قابل للسحب على قاذف مع مفتاح مصغر ، وأجهزة استشعار FSR ، ومستشعر Hall ، إلخ. لكن هذه الأنظمة لها عيب كبير - فهي تقيس المسافة ليس إلى الفوهة ، ولكن مباشرة إلى المستشعر ، بالإضافة إلى ذلك ، في بعض الحالات ، قد تفشل المحاذاة (إذا لم يكن المستشعر موجودًا بدلاً من الفوهة ، فقد يتم انتهاك حساب الهندسة. ناهيك عن الدقة) .
الخيار المثالي هو إصلاح لمسة الفوهة نفسها على الطاولة. وهنا يمكنك الذهاب بطريقتين:
  • قم بإنشاء اتصال كهربائي بين HotEnd والمستجيب ، بحيث يكون HotEnd متحركًا ويفتح (أو يغلق) جهة الاتصال عند النقر فوقه.
  • إنشاء اتصال كهربائي بين الفوهة المعدنية والجدول.

الخيار الأول أكثر تعقيدًا في تصنيع العمل واستقراره ، ولكن مع التصميم المناسب سيعطي نتيجة مستقرة دائمة ، بدون حركات جسم إضافية.
الخيار الثاني أقل ملاءمة للاستخدام ، ولكنه سهل التنفيذ ، وغالبًا ما تكون المعايرة مطلوبة ويمكن إجراؤها حسب الحاجة.
سنتحدث عن الطريقة الثانية:


من الأداة نحتاج:
  1. شريط سكوتش الألومنيوم (في الواقع ، هو رقائق الألومنيوم على أساس لاصق ، وليس جميع أنواع أشرطة التسليح هناك)
  2. "تمساح" - لربط أحد جهات الاتصال بالعلبة المعدنية ذات الطرف الساخن ، من حيث المبدأ ، يمكنك القيام بأي مشبك ورق ، أو إصلاح نهاية السلك عن طريق شده أو لحامه (صارم ولكن فعال)
  3. مكتب الغسيل
  4. دبوس كتلة 2.54 لتوصيل جهاز استشعارنا المرتجل بلوحة RAMPS 1.4 (أو بموصل EndStop المقابل على اللوحة). قلة من الناس لديهم تجعيد لتركيب مثل هذه الكتل ، ولكن يمكنك العثور على كتلة مماثلة في وحدة الكمبيوتر بإزالتها من "مكبر الصوت" أو الأزرار.
  5. ملحقات اللحام ، من المستحسن أن يكون هناك تدفق نشط وحديد لحام أقل قوة.
  6. الأسلاك ، حوالي متر.

كانت أبسط طريقة لتطبيق طبقة موصلة للتيار على سطح عملنا (الزجاج) عبارة عن ملصق من شريط الألمنيوم ، ولكن من المهم التمسك به بشكل متساوٍ وتنعيمه بحيث يكون هناك اتصال كهربائي بين شرائط الشريط ، ويتم فحصه بشكل أساسي باستخدام مقياس متعدد من أجل "الرنين".

أيضًا ، للتبديل ، يجب أن تصنع سلكًا ، كما هو مكتوب سابقًا ، اضغط على أحد طرفيه في كتلة 2.54 (أو لحام عليه) ، سيتم تثبيت الطرفين الآخرين على مشعاع HotEnd وعلى الطاولة بشريط ألومنيوم. من أجل الزحف إلى الرادياتير ، نأخذ تمساحًا عاديًا ونلحم أحد طرفي السلك إليه ، أنصح باستخدام الحمض لسهولة اللحام ، على الرغم من أنني تمكنت من تسخينه جيدًا وصنوبري الصنوبري العادي ، ولكن يمكن أيضًا لحام الطرف الثاني في التمساح ، ولكن في هذه الحالة هناك فرصة لتلف الشريط اللاصق عند الإصلاح ، يجب أن يكون التمساح كبيرًا بما يكفي. تصرفنا على النحو التالي: خذ مشبك ورق ونظفه من الطلاء (يفضل من جميع الجهات). النقطة المهمة هناأننا سنلحم سلكًا نحاسيًا في قطعة قماش معدنية مع لحام عادي (PIC 61) ولحام ناجح تمامًا ، نحتاج إلى تدفق نشط ، استخدمنا حمض orthophosphoric عادي (حامض لحام).


فيما يلي صور للاتصال باللوحة والطابعة نفسها. ترتبط نهايات الأسلاك في طابعتنا بـ Z-max. وفي البرامج الثابتة ، من الضروري الإشارة إلى الحالة الطبيعية لمفتاح الحد (مستشعرنا ، مغلق أو مفتوح). مع هذا النهج ، يكون المستشعر مفتوحًا في حالة طبيعية.




يمكن أخذ البرامج الثابتة مع المعايرة التلقائية لطابعات دلتا من هنا: البرامج الثابتة Marlin Delta مع تحديثات المعايرة التلقائية . RichCattell
إعدادات البرامج الثابتة:
Cohfiguration.h
// Precision for G30 delta autocalibration function
#define AUTOCALIBRATION_PRECISION 0.03 // mm.  ,     0.1.

// Diameter of print bed - this is used to set the distance that autocalibration probes the bed at.   ,        ,     ( ),  ,    (  , ..   )   .
#define BED_DIAMETER 170 // mm

// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.     


بعد توصيل الأسلاك وضبط البرنامج الثابت للطابعة ، تحتاج إلى بدء المعايرة نفسها. وهنا نقطة مهمة للغاية أنه يجب إجراء المعايرة من جهاز كمبيوتر ، لأن الطابعة نفسها لا تقوم بهذه العملية بشكل صحيح. يبدو أنه لا توجد ذاكرة كافية للجهاز وتنتهي المعايرة في مكان ما في المنتصف.
أيضًا ، إحدى ميزات المعايرة التلقائية هي أن الخوارزمية تختار بشكل متسلسل معلمات الهندسة ، والتي يمكن أن تستغرق وقتًا طويلاً ، خاصة إذا كانت الهندسة مكسورة بشدة أو لم يتم تعيين المعلمات الأولية بشكل صحيح (على سبيل المثال ، طول الأقطار 150 مم ، وفي الواقع 200 مم ، وستعيد الخوارزمية ذات الخطوة المحددة المعايرة كل تكرار مرة أخرى ، وفي النهاية ستتم معايرتها ، ولكنها ستستغرق وقتًا لا يمكن تصوره)

لبدء المعايرة التلقائية ، اتصل بالطابعة عبر USB واستخدم برنامج pronterface. هناك ثلاثة أنواع من المعايرة:
  • يقوم الأمر G30 - لمعايرة الإزاحة - بتعيين الارتفاع إلى مفاتيح الحد بشكل أساسي.
  • يقوم فريق G30A - بمعايرة هندسة الطابعة بالكامل ، وطول الأقطار ، ومسافة بادئة مفاتيح الحد (الارتفاع) وانحناء الهندسة وفقًا لـ "البرج" - الأبراج (على الأرجح ، تدعم الطابعة ارتفاعات مختلفة)
  • فريق G29 - ما يسمى AutoBedLevel - المعايرة التلقائية لانحناء الجدول. على طابعات دلتا ، تعمل بشكل صحيح ، وتبدأ مباشرة قبل بدء الطباعة في g-code الأولي.

وبناء على ذلك ، فإن الأخيرين أكثر صلة.
فيما يلي قائمة بوحدة تحكم الطابعة بدون معايرة أولية وإعادة تشغيلها.
مبدأ المعايرة القصيرة:
  • فحص / ضبط تعويضات Endstop
  • فحص / ضبط دلتا الشعاع
  • فحص أخطاء هندسة البرج
  • تحديد الطول القطري> فحص هندسة البرج> تسوية إزاحة EndStop. عندما تتغير المعلمتان الأوليان ، يتم تحديد الثالث ويتم تكرار الدورة حتى يتم استيفاء جميع المعلمات الثلاث.


قائمة المعايرة الأولية - يتم قطع التكرارات من 4 إلى 17 منذ ذلك الحين يكرر العمل
Connecting...
start
Printer is now online.
echo:Marlin 1.0.0
echo: Last Updated: Jul 31 2015 11:09:21 | Author: (RichCattell, Prism Mini)
Compiled: Jul 31 2015
echo: Free Memory: 1753  PlannerBufferBytes: 1232
echo:Hardcoded Default Settings Loaded
echo:Steps per unit:
echo:  M92 X100.00 Y100.00 Z100.00 E156.00
echo:Maximum feedrates (mm/s):
echo:  M203 X200.00 Y200.00 Z200.00 E200.00
echo:Maximum Acceleration (mm/s2):
echo:  M201 X9000 Y9000 Z9000 E9000
echo:Acceleration: S=acceleration, T=retract acceleration
echo:  M204 S3000.00 T3000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
echo:  M205 S0.00 T0.00 B20000 X20.00 Z20.00 E20.00
echo:Home offset (mm):
echo:  M206 X0.00 Y0.00 Z0.00
echo:Delta Geometry adjustment:
echo:  M666 A0.000 B0.000 C0.000 I0.000 J0.000 K0.000 U0.000 V0.000 W0.000 R66.00 D154.00 H230.00
echo:Endstop Offsets:
echo:  M666 X0.00 Y0.00 Z0.00
echo:Z-Probe Offset:
echo:  M666 P X0.00 Y0.00 Z0.00
echo:PID settings:
echo:   M301 P15.09 I0.75 D76.13
echo:SD init fail
Setting hotend temperature to 190.000000 degrees Celsius.
Setting bed temperature to 70.000000 degrees Celsius.
>>> g30 a
SENDING:G30 A
Starting Auto Calibration..
Calibration precision: +/-0.100mm
|	Z-Tower			Endstop Offsets
| 	-7.8500			X:0.00 Y:0.00 Z:0.00
| -5.2400		-8.5900		Tower Offsets
| 	-6.8400			A:0.00 b:0.00 C:0.00
| -3.7200		-8.0400		I:0.00 J:0.00 K:0.00
| 	-5.6900			Delta Radius: 66.0000
| X-Tower		Y-Tower		Diagonal Rod: 154.0000



Iteration: 1
Checking/Adjusting endstop offsets //  /   endstop'
			x:-3.6800 (adj:-3.6800) y:-7.9600 (adj:-7.9600) z:-7.7700 (adj:-7.7700)
			X=ERROR Y=ERROR Z=ERROR
			x:0.7500 (adj:-2.9300) y:-0.1900 (adj:-8.1500) z:-0.2200 (adj:-7.9900)
			X=ERROR Y=ERROR Z=ERROR
			x:0.1600 (adj:-2.7700) y:-0.0800 (adj:-8.2300) z:0.0500 (adj:-7.9400)
			X=ERROR Y=OK Z=OK
			x:0.0300 (adj:-2.7400) y:-0.0200 (adj:-8.2500) z:0.0100 (adj:-7.9300)
			X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0300			X:-2.74 Y:-8.25 Z:-7.93
| -0.0200		0.1500		Tower Offsets
| 	-0.2800			A:0.00 b:0.00 C:0.00
| -0.0300		-0.0300		I:0.00 J:0.00 K:0.00
| 	-0.1900			Delta Radius: 66.0000
| X-Tower		Y-Tower		Diagonal Rod: 154.0000
Checking delta radius //  
Adjusting Delta Radius //  
			x:-0.0600 (adj:-2.8000) y:-0.0300 (adj:-8.2800) z:-0.0500 (adj:-7.9800)
			X=OK Y=OK Z=OK
			 c: -0.2000 delta radius:66.0000 prec:0.010 tries:0
			 done:false
			x:0.0700 (adj:-2.7300) y:0.0900 (adj:-8.1900) z:0.0300 (adj:-7.9500)
			X=OK Y=OK Z=OK
			 c: -0.2100 delta radius:66.2000 prec:0.010 tries:0
			 done:false
			x:0.0600 (adj:-2.6700) y:0.0300 (adj:-8.1600) z:0.0600 (adj:-7.8900)
			X=OK Y=OK Z=OK
			 c: -0.1500 delta radius:66.4000 prec:0.010 tries:0
			 done:false
			x:0.0400 (adj:-2.6300) y:-0.0100 (adj:-8.1700) z:0.0300 (adj:-7.8600)
			X=OK Y=OK Z=OK
			 c: -0.0800 delta radius:66.6000 prec:0.010 tries:1
			 done:false
			x:0.0300 (adj:-2.6000) y:0.0400 (adj:-8.1300) z:0.0600 (adj:-7.8000)
			X=OK Y=OK Z=OK
			 c: 0.0200 delta radius:66.8000 prec:0.010 tries:2
			 done:false
			x:-0.0100 (adj:-2.6100) y:0.0200 (adj:-8.1100) z:-0.0200 (adj:-7.8200)
			X=OK Y=OK Z=OK
			 c: -0.0900 delta radius:66.7000 prec:0.010 tries:3
			 done:false
			x:-0.0000 (adj:-2.6100) y:-0.0000 (adj:-8.1100) z:-0.0000 (adj:-7.8200)
			X=OK Y=OK Z=OK
			 c: -0.0500 delta radius:66.7500 prec:0.020 tries:0
			 done:false
			x:0.0500 (adj:-2.5600) y:0.0100 (adj:-8.1000) z:0.0300 (adj:-7.7900)
			X=OK Y=OK Z=OK
			 c: -0.0400 delta radius:66.8000 prec:0.020 tries:1
			 done:false
			x:-0.0100 (adj:-2.5700) y:-0.0500 (adj:-8.1500) z:-0.0400 (adj:-7.8300)
			X=OK Y=OK Z=OK
			 c: 0.0100 delta radius:66.8500 prec:0.020 tries:1
			 done:true
			 
			 
			 
Iteration: 2
Checking/Adjusting endstop offsets //  /   endstop'
			x:-0.0000 (adj:-2.5700) y:0.0300 (adj:-8.1200) z:0.0300 (adj:-7.8000)
			X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	 0.0100			X:-2.57 Y:-8.12 Z:-7.80
| 0.0100		0.1700		Tower Offsets
| 	 0.0000			A:0.00 b:0.00 C:0.00
| 0.0200		-0.0200		I:0.00 J:0.00 K:0.00
| 	-0.1900			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 154.0000
Checking for tower geometry errors.. //   
			x_diff = 0.15000
			y_diff = 0.03000
			z_diff = 0.20000
			high_diff = 0.20000
			xy_equal = false
			xz_equal = true
			yz_equal = false
			Opp Range = 0.36000
			t1:Err t2:OK t3:Err
			Tower geometry OK
Checking DiagRod Length //  
			target:0.0033 c:0.0000 adj:0.00000
			|	Z-Tower			Endstop Offsets
			| 	-0.0000			X:-2.57 Y:-8.12 Z:-7.80
			| 0.0400		0.2000		Tower Offsets
			| 	-0.0000			A:0.00 b:0.00 C:0.00
			| -0.0100		-0.0000		I:0.00 J:0.00 K:0.00
			| 	-0.2000			Delta Radius: 66.8500
			| X-Tower		Y-Tower		Diagonal Rod: 154.0000
			
			
			
Iteration: 3
Checking/Adjusting endstop offsets  //  /   endstop'
			x:-0.0100 (adj:-2.5800) y:0.0300 (adj:-8.0900) z:0.0300 (adj:-7.7700)
			X=OK Y=OK Z=OK
			|	Z-Tower			Endstop Offsets
			| 	-0.0300			X:-2.58 Y:-8.09 Z:-7.77
			| 0.0300		0.1400		Tower Offsets
			| 	-0.0200			A:0.00 b:0.00 C:0.00
			| 0.0100		-0.0400		I:0.00 J:0.00 K:0.00
			| 	-0.2200			Delta Radius: 66.8500
			| X-Tower		Y-Tower		Diagonal Rod: 154.0000
Checking for tower geometry errors..  //   
			x_diff = 0.13000
			y_diff = 0.07000
			z_diff = 0.19000
			high_diff = 0.19000
			xy_equal = true
			xz_equal = true
			yz_equal = false
			Opp Range = 0.36000
			t1:Err t2:OK t3:Err
			Tower geometry OK
Checking DiagRod Length //  
			target:-0.0033 c:-0.0200 adj:-0.20000
			target:0.2133 c:0.2000 adj:-0.20000
			target:0.4267 c:0.4000 adj:-0.20000
			target:0.6233 c:0.6200 adj:0.00000
Diag Rod Length changed .. Homing Endstops  //  ... "" -      Endstop
|	Z-Tower			Endstop Offsets
| 	-0.4600			X:-2.58 Y:-8.09 Z:-7.77
| -0.4000		-0.2900		Tower Offsets
| 	-0.4600			A:0.00 b:0.00 C:0.00
| -0.4500		-0.5200		I:0.00 J:0.00 K:0.00
| 	-0.6900			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.4000

Iteration: 17
Checking/Adjusting endstop offsets
x:0.0100 (adj:-3.0300) y:0.0300 (adj:-8.5000) z:0.0100 (adj:-8.2300)
X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0300			X:-3.03 Y:-8.50 Z:-8.23
| 0.0400		0.1200		Tower Offsets
| 	-0.0300			A:0.00 b:0.00 C:0.00
| 0.0100		-0.0600		I:0.00 J:0.00 K:0.00
| 	-0.2600			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453
Checking for tower geometry errors..
x_diff = 0.11000
y_diff = 0.10000
z_diff = 0.23000
high_diff = 0.23000
xy_equal = true
xz_equal = false
yz_equal = false
Opp Range = 0.38000
Tower 3 has largest error
t1:Err t2:Err t3:Err
Tower3 Error: Adjusting
 tower: -0.0400 opptower:-0.2700 tower radius adj:0.0000
 done:false
x:0.0000 (adj:-3.0300) y:0.0000 (adj:-8.5000) z:-0.0600 (adj:-8.2900)
X=OK Y=OK Z=OK
 tower: -0.0700 opptower:-0.1300 tower radius adj:-1.0000
 done:false
x:-0.0600 (adj:-3.0900) y:-0.0900 (adj:-8.5900) z:-0.0900 (adj:-8.3800)
X=OK Y=OK Z=OK
 tower: -0.0900 opptower:0.0900 tower radius adj:-2.0000
 done:false
x:-0.0500 (adj:-3.1400) y:-0.0400 (adj:-8.6300) z:-0.0700 (adj:-8.4500)
X=OK Y=OK Z=OK
 tower: 0.0400 opptower:0.0500 tower radius adj:-1.5000
 done:true
Tower Postions changed .. Homing Endstops
|	Z-Tower			Endstop Offsets
| 	 0.6400			X:-3.14 Y:-8.63 Z:-8.45
| 0.3300		0.4500		Tower Offsets
| 	 0.0900			A:0.00 b:0.00 C:0.00
| 0.0900		0.0100		I:0.00 J:0.00 K:-1.50
| 	-0.0200			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453



Iteration: 18
Checking/Adjusting endstop offsets
x:0.1000 (adj:-3.0400) y:0.0600 (adj:-8.5700) z:0.6500 (adj:-7.8000)
X=OK Y=OK Z=ERROR
x:-0.0500 (adj:-3.0900) y:-0.0400 (adj:-8.6100) z:0.0600 (adj:-7.7400)
X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0000			X:-3.09 Y:-8.61 Z:-7.74
| -0.0600		0.0200		Tower Offsets
| 	-0.1100			A:0.00 b:0.00 C:0.00
| -0.0000		-0.0700		I:0.00 J:0.00 K:-1.50
| 	 0.0200			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453
Checking delta radius
Adjusting Delta Radius
x:-0.0200 (adj:-3.1100) y:-0.0300 (adj:-8.6400) z:0.0200 (adj:-7.7200)
X=OK Y=OK Z=OK
 c: -0.1100 delta radius:66.8500 prec:0.010 tries:0
 done:false
x:0.0500 (adj:-3.0600) y:0.0400 (adj:-8.6000) z:0.0100 (adj:-7.7100)
X=OK Y=OK Z=OK
 c: -0.0400 delta radius:67.0500 prec:0.010 tries:1
 done:false
x:0.0400 (adj:-3.0200) y:0.0800 (adj:-8.5200) z:0.0600 (adj:-7.6500)
X=OK Y=OK Z=OK
 c: -0.0000 delta radius:67.2500 prec:0.010 tries:1
 done:true
 
 
 
Iteration: 19
Checking/Adjusting endstop offsets
x:-0.0000 (adj:-3.0200) y:-0.0200 (adj:-8.5400) z:0.0100 (adj:-7.6400)
X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0200			X:-3.02 Y:-8.54 Z:-7.64
| -0.0600		0.0200		Tower Offsets
| 	 0.0000			A:0.00 b:0.00 C:0.00
| -0.0100		-0.0300		I:0.00 J:0.00 K:-1.50
| 	 0.0200			Delta Radius: 67.2500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453
Autocalibration Complete
SENDING:M500
echo:Settings Stored




قائمة إعادة المعايرة الكاملة
SENDING:G30 A
Starting Auto Calibration..
Calibration precision: +/-0.100mm
| Z-Tower Endstop Offsets
| -0.1800 X:-3.02 Y:-8.54 Z:-7.64
| -0.3000 -0.1600 Tower Offsets
| -0.2200 A:0.00 b:0.00 C:0.00
| -0.2200 -0.2000 I:0.00 J:0.00 K:-1.50
| -0.1500 Delta Radius: 67.2500
| X-Tower Y-Tower Diagonal Rod: 153.3453
Iteration: 1
Checking/Adjusting endstop offsets
x:-0.2100 (adj:-3.2300) y:-0.2000 (adj:-8.7400) z:-0.1700 (adj:-7.8100)
X=ERROR Y=ERROR Z=ERROR
x:0.0100 (adj:-3.2200) y:0.0100 (adj:-8.7300) z:-0.0200 (adj:-7.8300)
X=OK Y=OK Z=OK
| Z-Tower Endstop Offsets
| 0.0200 X:-3.22 Y:-8.73 Z:-7.83
| -0.1000 0.0300 Tower Offsets
| 0.0000 A:0.00 b:0.00 C:0.00
| -0.0200 -0.0300 I:0.00 J:0.00 K:-1.50
| 0.0100 Delta Radius: 67.2500
| X-Tower Y-Tower Diagonal Rod: 153.3453
Autocalibration Complete

Source: https://habr.com/ru/post/ar382461/


All Articles