سامانه پایه؛ ورودی ۲۰۱۶
بدنه اصلی شامل دو مفصل دورانی در صفحه XY و یک محور خطی Z بود. استپر موتورها، تابلو فرمان و مکانیزم اصلی حفظ شدند؛ پروژه از نقطه صفر ساخته نشد و مبنای کار، بازمهندسی سامانه موجود بود.
کار را با یک SCARA نیمهکاره از ورودی ۲۰۱۶ شروع کردیم؛ مکانیزم اصلی ماند، اما افتادگی بازو، هومینگ، کنترل حرکت، ارتباط وب و شبیهسازی آن از نو بررسی و بازنویسی شد.
J1J2Z اول خطاهای مکانیکی و نقطه صفر را پایدار کردیم؛ بعد سراغ معادلات حرکت و کنترل رفتیم.
01 02 03 بدنه اصلی شامل دو مفصل دورانی در صفحه XY و یک محور خطی Z بود. استپر موتورها، تابلو فرمان و مکانیزم اصلی حفظ شدند؛ پروژه از نقطه صفر ساخته نشد و مبنای کار، بازمهندسی سامانه موجود بود.
وزن اهرم آبی روی محور اول باعث افتادگی، ناهممحوری و خطای مکانیکی میشد. اتصال و تکیهگاه محور بازبینی شد تا پیش از هر تنظیم نرمافزاری، خطای ناشی از مکانیک کاهش پیدا کند.
دو سنسور القایی زیر Joint 2 نصب شد. STM32 بازو را تا سنسور اول حرکت میدهد، جهت را معکوس میکند و با رسیدن به سنسور دوم، محدوده مرجع را تشخیص میدهد. در پایان، موقعیت صفر مکانیکی ثبت میشود.
مسیر کابلهای قدرت، سیگنال و سنسورها از هم تفکیک شد. ترمینالها و دستهبندی سیمها مرتب شدند تا عیبیابی، نگهداری و کنترل نویز در تابلو فرمان سادهتر باشد.
هر نقطه هدف در فضای کاری با مختصات X، Y و Z تعریف میشود. سینماتیک معکوس، این مقصد را به θ₁، θ₂ و d₃ تبدیل میکند. سینماتیک مستقیم نیز موقعیت ابزار را از روی وضعیت مفصلها دوباره محاسبه میکند تا نمایش و کنترل اعتبار مسیر ممکن باشد.
x = L₁ cos θ₁ + L₂ cos(θ₁ + θ₂) y = L₁ sin θ₁ + L₂ sin(θ₁ + θ₂) z = d₃وظایف بین دو لایه تقسیم شد: STM32 برای زمانواقعی و ESP8266 برای وب، ذخیره پروژه و ارتباط.
تولید پالس استپر، اجرای پروفایل حرکت، هومینگ محورها و مدیریت تنظیمات پایه در کنترلر STM32 انجام میشود. کنترلر فرمانهای سطح بالا را به حرکت زمانبندیشده محورهای ربات تبدیل میکند.
ESP8266 درخواستهای رابط وب را دریافت میکند، فرمانها و موقعیتها را اعتبارسنجی کرده و از طریق UART برای STM32 میفرستد. پاسخ وضعیت نیز از کنترلر خوانده و دوباره به صفحه وب ارسال میشود.
موقعیتها، ترتیب اجرا، زمان توقف و تنظیمات پروژه در حافظه ذخیره میشوند. کاربر میتواند یک الگوی حرکتی را دوباره بارگذاری کند، Loop تعریف کند و بدون واردکردن مجدد نقاط آن را اجرا کند.
// Browser ↔ ESP8266 ↔ STM32 void loop() { webServer.handleClient(); processIncomingSerialData(); } if (command == "Run") sendCodeToController(activeProject); if (command == "Pause") sendPause(); saveToEEPROM(projectData);
سرعت پالس، نوع سینماتیک، تعداد پالس در دور و پارامترهای هر موتور از رابط تنظیم میشوند و برای کنترلر ارسال میگردند.





مدل، مفصل، جرم، برخورد و کنترل باید با ربات واقعی هممعنا باشند.
هندسه ربات در Isaac Sim به یک Articulation تبدیل شد. محورهای J1 و J2 بهصورت دورانی و محور Z بهصورت خطی تعریف شدند و جهت مثبت هر محور با ربات واقعی یکسانسازی شد.
جرم، مرکز جرم، اینرسی، محدوده حرکت و برخورد اجزا تنظیم شد تا مدل فقط یک انیمیشن نباشد و رفتار آن از قیود فیزیکی تبعیت کند.
موقعیت هدف مفصلها به Driveهای شبیهساز داده میشود. ضرایب کنترل برای رسیدن نرم به هدف، کاهش نوسان و جلوگیری از حرکت جهشی تنظیم شدند.
هر پروژه با ترتیب نقاط و زمان مشترک در رابط، ربات واقعی و دوقلوی دیجیتال اجرا میشود. وضعیت اجرا و شماره نقطه فعال برای حفظ همزمانی بین سه لایه مبادله میشود.
صبور روی مکانیک، سنسورها و کنترل زمانواقعی تمرکز داشت؛ شریکیان وباپ، ارتباطات و دوقلوی دیجیتال را جلو برد. تصمیمهای حساس و تست نهایی را با هم انجام دادیم.
مسئول توسعه بخش کنترل زمانواقعی و اصلاحات مرتبط با سنسورها و حرکت محورها.
مسئول رابط کاربری، ارتباط ESP8266 و توسعه مدل دوقلوی دیجیتال و لایه همگامسازی.
گزارش شامل سیمکشی، اصلاح مکانیک، منطق هومینگ، سینماتیک، پروفایل حرکت، ارتباط STM32 و ESP8266 و ساختار پروژههای وب است.