به نام خدایی که محمد (ص) یکی از بندگان اوست : پروژه رزبری حکاکی لیزری روی چوب قسمت 2 ؛ در قسمت اول این آموزش، یه کادر مربعی روی چوب حک کردیم و کد حکاکی عکس دو حالته ( 0 و 1 ) رو گذاشتیم؛ در این قسمت، یه توضیح کوچیک در مورد کد می دیم و یه کمی برنامه رو توسعه می دیم.
پروژه رزبری حکاکی لیزری روی چوب قسمت 2
برای استفاده از این کد، نیاز به نصب کتابخانه opencv روی رزبری دارید؛ می تونید با مراجعه به لینک زیر، نحوه نصب این کتابخونه رو ببینید : نیازمندی های رزبری پای
کدی که آخر مطلب قبلی گذاشتیم این بود :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
//g++ step.cpp -o step $(pkg-config --libs opencv) -l wiringPi #include <wiringPi.h> #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/imgproc/imgproc.hpp> #include "iostream" using namespace std; using namespace cv; Mat img,gray; Mat image(1,262144,CV_32FC1); int main(void) { wiringPiSetup(); pinMode(25,OUTPUT); pinMode(24,OUTPUT); pinMode(23,OUTPUT); pinMode(22,OUTPUT); pinMode(21,OUTPUT); pinMode(27,OUTPUT); pinMode(28,OUTPUT); pinMode(29,OUTPUT); pinMode(26,OUTPUT); img = imread("1.jpg",1); cvtColor(img,gray,CV_BGR2GRAY); cout << img.row(100) << " " << endl; cout << gray.row(100) << " " << endl; // imshow("asli",img); resize(gray,gray,Size(512,512)); imshow("gray",gray); waitKey(2000); for(int y =0;y < 512;y++) { uint8_t* data = gray.ptr<uint8_t>(y); if((y%2)==0) { for(int x = 0;x < 512;x++) { image.at<float>(0,x) = *data; data++; } } else { data+=512; for(int x = 511;x >=0;x--) { image.at<float>(0,x) = *data; data++; } } } digitalWrite(26,1); for(int i=0;i<64;i++) { digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,0); delay(20); digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); delay(20); digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); delay(20); digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,1); delay(20); digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,0); delay(20); digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,1); digitalWrite(22,0); delay(20); digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); delay(20); digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); delay(20); } digitalWrite(25,LOW); digitalWrite(24,LOW); digitalWrite(23,LOW); digitalWrite(22,LOW); for(int i=0;i<64;i++) { digitalWrite(29,1); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,0); delay(20); digitalWrite(29,1); digitalWrite(28,1); digitalWrite(27,0); digitalWrite(21,0); delay(20); digitalWrite(29,0); digitalWrite(28,1); digitalWrite(27,0); digitalWrite(21,0); delay(20); digitalWrite(29,0); digitalWrite(28,1); digitalWrite(27,1); digitalWrite(21,0); delay(20); digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,1); digitalWrite(21,0); delay(20); digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,1); digitalWrite(21,1); delay(20); digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,1); delay(20); digitalWrite(29,1); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,1); delay(20); } digitalWrite(29,LOW); digitalWrite(28,LOW); digitalWrite(27,LOW); digitalWrite(21,LOW); for(int i=0;i<64;i++) { digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,0); delay(20); digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); delay(20); digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); delay(20); digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,1); digitalWrite(22,0); delay(20); digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,0); delay(20); digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,1); delay(20); digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); delay(20); digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); delay(20); } digitalWrite(25,LOW); digitalWrite(24,LOW); digitalWrite(23,LOW); digitalWrite(22,LOW); for(int i=0;i<64;i++) { digitalWrite(29,1); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,0); delay(20); digitalWrite(29,1); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,1); delay(20); digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,1); delay(20); digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,1); digitalWrite(21,1); delay(20); digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,1); digitalWrite(21,0); delay(20); digitalWrite(29,0); digitalWrite(28,1); digitalWrite(27,1); digitalWrite(21,0); delay(20); digitalWrite(29,0); digitalWrite(28,1); digitalWrite(27,0); digitalWrite(21,0); delay(20); digitalWrite(29,1); digitalWrite(28,1); digitalWrite(27,0); digitalWrite(21,0); delay(20); } digitalWrite(29,LOW); digitalWrite(28,LOW); digitalWrite(27,LOW); digitalWrite(21,LOW); digitalWrite(26,0); return 0; } |
خط 1 : دستور کامپایل کده.
خط 3 تا 10 : مربوط به فراخوانی کتابخونه هاست
خط 12 و 13 : فضای نام های مورد استفاده ما
خط 14 و 15 : متغیر های عمومی
خط 17 تا 81 : تابع جابجایی محور y هست که پارامتر ورودیش بین 0 تا 7 هست و در اون از swich case با 8 مورد متفاوت استفاده شده؛ هر مورد، یک موقعیت موتور پله ای محور y رو معلوم می کنه.
خط 84 تا 93 : تنظیم gpio و خروجی های مورد نیاز برای کنترل موتور ها و لیزر
خط 95 تا 102 : فراخوانی عکس a.jpg(این عکس در پوشه پروژه قرار می گیرد) و تغییر اندازه آن به 512*512 و نمایش آن.
خط 104 : تعریف اشاره گر data که به اولین پیکسل از عکس اشاره می کنه.
خط 106 : شروع حلقه شمارنده سطر های عکس
خط 108 تا 246 : حک کردن مقادیر یک سطر از عکس
خط 114 تا 126 : مقدار پیکسل رو بررسی می کنه اگر خاکستری کمرنگ بود،اونو سیاه خالص در نظر می گیره و اگر روشن تر از خاکستری کم رنگ بود، اونو سفید در نظر می گیره؛ برای نقطه سفید، لیزر رو خاموش نگه میداره و به پیکسل بعدی میره و برای نقطه سیاه، لیزر رو روشن می کنه و 20 میلی ثانیه صبر می کنه تا نقطه حک بشه و بعدش لیزر رو خاموش می کنه و میره سراغ نقطه بعدی.
خط 253 : تابع جابجایی در محور y رو فراخوانی می کنه و یه سطر پایین میاد ( چوب رو جابجا می کنه )
خط 259 تا 301 : هم محور x رو به نقطه ابتدا برمی گردونه.
توجه : می تونیم حکاکی لیزر رو در جهت x، به صورت رفت و برگشتی انجام بدیم، تا کار سریع تر انجام بشه، ولی از جهتی، باعث گرمی و ضعیف شدن لیزر می شه.
اون تاخیر های 2 میلی ثانیه ای و 2.3 میلی ثانیه ای، تجربی به دست میاد و برای اینه که موتور بتونه به پالس های کنترلی جواب بده چون اگه ما پشت سر هم سیگنال ها رو به موتور بفرستیم، موتور از پالس ها جا می مونه؛ خب تشریح کد تموم شد.
کد بالا، یه مشکل اساسی داره، اینکه فقط به درد حکاکی نوشته و اشکال سیاه و سفید خالص به درد می خوره و روی عکس سیاه و سفید معمولی هیچ کنترلی نداریم؛ حالا می خوایم تغییرات زیر رو در برنامه اعمال کنیم :
- حکاکی در محور x رو رفت و برگشتی کنیم.
- یه کمی کد رو خلوت تر کنیم.
- نحوه ساخت و کار با track bar رو در opencv یاد بگیریم ( تا باهاش بشه عکس معمولی رو هم حکاکی کرد )
خب یه فایل cpp بسازید و کد زیر رو بنویسید و ذخیره کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
//g++ step.cpp -o step $(pkg-config --libs opencv) -l wiringPi #include <wiringPi.h> #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/imgproc/imgproc.hpp> #include "iostream" #include "math.h" using namespace std; using namespace cv; Mat img,image; float f=0.0; void laser(uint8_t*dt) { int t=(abs((*dt)-255)/15)+2; if(t<4) digitalWrite(26,0); else digitalWrite(26,1); delay(t); digitalWrite(26,0); } void yaxis(int j) { switch(j) { case 0: digitalWrite(29,1); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,0); delay(3); break; case 1: digitalWrite(29,1); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,1); delay(3); break; case 2: digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,0); digitalWrite(21,1); delay(3); break; case 3: digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,1); digitalWrite(21,1); delay(3); break; case 4: digitalWrite(29,0); digitalWrite(28,0); digitalWrite(27,1); digitalWrite(21,0); delay(3); break; case 5: digitalWrite(29,0); digitalWrite(28,1); digitalWrite(27,1); digitalWrite(21,0); delay(3); break; case 6: digitalWrite(29,0); digitalWrite(28,1); digitalWrite(27,0); digitalWrite(21,0); delay(3); break; case 7: digitalWrite(29,1); digitalWrite(28,1); digitalWrite(27,0); digitalWrite(21,0); delay(3); break; default: cout << "Not Valid" << endl; } } int main(void) { wiringPiSetup(); pinMode(25,OUTPUT); pinMode(24,OUTPUT); pinMode(23,OUTPUT); pinMode(22,OUTPUT); pinMode(21,OUTPUT); pinMode(27,OUTPUT); pinMode(28,OUTPUT); pinMode(29,OUTPUT); pinMode(26,OUTPUT); img = imread("a8.jpg",2); resize(img,img,Size(512,512)); namedWindow("image"); imshow("image",img); waitKey(100); namedWindow("For Engrave"); int threshold=114; createTrackbar("Threshold","For Engrave",&threshold,240); while(waitKey(10)<3) { img.convertTo(image,-1); uint8_t* data = image.ptr<uint8_t>(0); for(long x=0;x<512*512;x++) { if((*data)>threshold) *data=255; else *data=0; data++; } imshow("For Engrave",image); } cout<<"start"<<endl; uint8_t* data = image.ptr<uint8_t>(0); destroyWindow("image"); waitKey(10); for(int k=0;k<256;k++) { for(int i=0;i<64;i++) { digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,0); laser(data); data++; digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); laser(data); data++; digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); laser(data); data++; digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,1); digitalWrite(22,0); laser(data); data++; digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,0); laser(data); data++; digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,1); laser(data); data++; digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); laser(data); data++; digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); laser(data); data++; } digitalWrite(26,0); digitalWrite(25,LOW); digitalWrite(24,LOW); digitalWrite(23,LOW); digitalWrite(22,LOW); yaxis(k%8); data+=511; for(int i=0;i<64;i++) { digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,0); laser(data); data--; digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); laser(data); data--; digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,0); digitalWrite(22,1); laser(data); data--; digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,1); laser(data); data--; digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,0); digitalWrite(22,0); laser(data); data--; digitalWrite(25,0); digitalWrite(24,1); digitalWrite(23,1); digitalWrite(22,0); laser(data); data--; digitalWrite(25,0); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); laser(data); data--; digitalWrite(25,1); digitalWrite(24,0); digitalWrite(23,1); digitalWrite(22,0); laser(data); data--; } data+=513; digitalWrite(26,0); digitalWrite(25,LOW); digitalWrite(24,LOW); digitalWrite(23,LOW); digitalWrite(22,LOW); yaxis(k%8); } digitalWrite(25,LOW); digitalWrite(24,LOW); digitalWrite(23,LOW); digitalWrite(22,LOW); digitalWrite(29,LOW); digitalWrite(28,LOW); digitalWrite(27,LOW); digitalWrite(21,LOW); digitalWrite(26,0); return 0; } |
تکراری ها رو دیگه نمی گم.
خط 17 تا 26 : تابع روشن و خاموش کردن لیزر و مقدار انتظار برای نقطه مورد نظر رو معلوم می کنه، به این صورت که اگر پیکسل سفید بود، لیزر خاموش می مونه و 2 میلی ثانیه صبر می کنه تا موتور عقب نمونه و اگر نقطه سیاه بود، لیزر رو روشن می کنه و 19 میلی ثانیه روی نقطه می مونه بعدش لیزر رو خاموش می کنه.
خط 112 : یه track bar با نام Threshold بالای پنجره For Engrave می سازه و مقدار پیشفرضش رو threshold=114 میده و مقدار بیشینه اش رو 240 قرار میده؛ track bar رو در پنجره زیر می بینید و عملکردی که براش تعریف کردیم در ویدئو بعدی می بینید :
http://www.aparat.com/v/IfRmr
خط 114 تا 127 : عکس اصلی موجود در ماتریس img رو در ماتریس image کپی می کنه تا عکس اصلی خراب نشه.
بعدش کل عکس رو پیمایش می کنه و مقدار هر پیکسل رو با مقدار trackbar مقایسه می کنه و در نهایت، عکس رو صفر و یک می کنه ( با این تفاوت که این صفر و یک کردن عکس، تحت کنترل ما است.) و عکس صفر و یک شده رو نمایش میده.
این فرآیند تا زمان فشرده شدن کلید کیبورد ادامه پیدا می کنه تا به تصویر دلخواه برای حکاکی برسیم.
خط 192 تا 246 : عکس رو در محور x و درجهت برگشت چاپ می کنه.
تموم شد.
چند تا پیشنهاد خوب :
- استفاده از سیستم مکانیکی پرینتر برای افزایش مساحت کاری.(این ایده رو تو یکی از سایتا دیدم)
- تغییر در برنامه برای حذف ناحیه هایی از عکس که دلخواه شما نیست.(مثلا سفید کردن یک لکه)
- امکان انتخاب یک ناحیه از یک عکس بزرگ برای حکاکی
- دوستانی که رزبری ندارند و AVR، آردینو یا ARM کار می کنن، می تونن بخش سیاه و سفید کردن رو با کامپیوتر انجام بدن و مقادیر هر پیکسل رو با پورت سریال، از کامپیوتر به میکرو بفرستن تا میکرو، لیزر و موتور ها رو کنترل کنه.
حالا می خوام یه تجربه از خودم که بی ربط به این پروژه هم نیست رو بگم :
امروز، داشتم سخت روی این دستگاه حکاکی کار می کردم که بابام اومد سر میزم و گفت به سلامتی این دستگاهت هم که درست شد…خب کی می خوای به تولید برسونی و بفروشیش؟؟؟
گفتم این به درد تولید و فروش نمی خوره…در جواب گفت : اگه به درد نمی خوره،چرا انقدر رو این چیزا وقت میذاری؟برو سراغ یه کار به درد بخور…وقتتو تلف نکن. منم ناراحت شدم و با تندی گفتم خب شما می گی چه کار کنم؟اینو که گفتم،چیزی نگفت و رفت…حتی بر نگشتم نگاه کنم که ناراحت شد یا نه.
بعد از ظهر، هر چی بیشتر تلاش می کردم، به مشکلات بیشتری بر می خوردمT دستگاهی که تا دیروز درست کار می کرد، در جهت محور xش هرز شد!!! لیزرم ضعیف شده و دیگه خوب کار نمی کنه ( تازه انقد سعی کردم لیزر رو تنظیم کنم که چشام هم درد گرفته )
بعد از نوشتن این داستان هم دارم میرم پشت دست پدر و مادرم رو ماچ کنم.
اینو اینجا آووردم که هر وقت به این صفحه اومدم، یادم بیوفته که بد اخلاقی نکنم…
خدايا هيچ صفتى كه بر من عيب شمرده شود وامگذار مگر آن كه اصلاحش فرمايى وهيچ صفت نكوهيده اى را بجاى مگذار مگر آن كه آن را نكوسازى و مرا در هيچ خصلتپسنديده ناتمامى فرو مگذار مگر آن كه كاملش گردانى. ( صحیفه سجادیه، از فرازهای دعای 20 )
به امید خدا، اگر تونستم دستگاه رو درست کنم، یه فیلم درست و حسابی ازش میذارم.
راستش الان می بینم که لایق گفتن جمله زیر نیستم…ولی برای شما که لایقی آوردم:
جهت هر چه مستحکم تر شدن مقام ولایت فقیه و تعجیل درظهور بابای خوبمون مهدی(عج) صلوات
مهمان
ببخشید ی سوال دیگه :
میشه چندتا لیزر روی یک نقطه متمرکز کرد تا برش بزنه . ؟
منظورم برا آلومینیوم ۳ میل هست .
نویسنده این مطلب
تنظیم کردن لنز یه لیزر سخته،حالا اگر چند تا باشن که خیلی سخت تر میشه!!!
کار نشد نداره ولی خیلی خیلی سخته
مهمان
جناب اسلامی امکان متمرکز کردن چند لیزر در یک نقطه وجود نداره که اگر اینطور بود اصلا فلسفه وجود لیزر دیود زیر سوال میرفت !
برای بالا رفتن دقت و تنظیم راحت تر از کیس لنز های مخصوص استفاده کنید با توجه به فوکوس خاصی که دارند نیازی به تنظیم دستی ندارند و همینطور تمرکز لیزر فوق العاده بالاتر میره به عنوان مثال اگر با لنز فعلی قطر لیزر روی قطعه هدف شما ۲۰۰ میکرومتر است با این ارتقا به نزدیک ۱۰ میکرومتر کاهش پیدا میکنه
نویسنده این مطلب
کار نشد نداره
اون کیس لنزهای مخصوص،رو از کجا باید تهیه کنم؟
مهمان
چه خوبه ! نصف متن نظر از بین میره
والا کیس هاش رو میتونید نسبت به نیازتون از فروشگاه های رباتیک بخرید منتها لنزش رو اصلا توصیه نمیکنم از اینطور فروشگاه ها تهیه کنید.
مبحث لنز برمیگرده به اپتیک و فیزیک به عنوان مثال اگه شما از لیزر هلیوم-نئون (گازی) استفاده کنید که طول موج ــش ۶۳۲٫۸ نانومتر هست و پرتو مبدا لیزر ۱ میلیمتر قطر داشته باشه میتونید با استفاده از یک لنز با فاصله کانونی ۱۰ میلیمتر در نقطه هدف (کانون) قطر لیزر ۸ میکرومتر میشه.
در این حالت هیچ نیازی هم به تنظیم کانون با چشم نیست و فقط کافیه فاصله سطح عدسی رو تا سطح هدف روی ۱۰ میلیمتر تنظیم کنید کافیه یک قطعه چوب با ارتفاع دقیقا ۱۰ میلیمتر رو بین لیزر و جسم هدف بذارید و ارتفاع لیزر رو تنظیم کنید.
برای خرید لنز بهترین کار سرچ کردن هست.
مهمان
با لیزر تیوپ ۸۰ وات هم نمیتونید آلمینیوم برش بزنید .
برش فلزات نیاز به لیزر یاگ داره .
مهمان
سلام.خسته نباشید .
میشه از این لیزر برای برش آلومینیوم ۳ میل استفاده کرد یا نه ؟
نویسنده این مطلب
سلام.خیر نمیشه!!!
حتی کاغذ هم باهاش نمیشه برش داد!!خیلی ضعیفه
لیزر فلزات مخصوص هستن.
مهمان
منظورم از چندتا لیزر با هم برای برش آلومینیوم بود .
طبیعتا چندتا با هم قدرت برش داره .
حالا شما توی اینکارید چقد احتمال شدن هست . میشه روش کار کرد . ؟ به قولی ارزش کار کردن رو داره ؟
بعد لیزر فلزات چطوره . میشه ساخت ؟
ان شا الله موفق باشی
نویسنده این مطلب
جنس لیزر فلزات کلا فرق داره فکر کنم اسمش لیزر حالت جامد،یا یه همچین چیزیه…
با لیزر های معمولی دی وی دی رایتر نمیشه.
تو فروشگاه های خارجی سرچ بفرمایید.انواعش هست