mirror of
https://github.com/vofy/fekt-scara.git
synced 2025-04-27 21:01:01 +02:00
109 lines
No EOL
5.1 KiB
TeX
109 lines
No EOL
5.1 KiB
TeX
\chapter{Praktická část}
|
|
|
|
\section{3D model}
|
|
Pro modelování dílů jsem se rozhodl použít CAD software FreeCAD. Pro tento CAD jsem se rozhodl proto, že je open source a tedy dostupný pro každého, kdo jej chce používat. Software FreeCAD byl nedávno vydán ve verzi 1.0, což ve světě open-source mj. znamená připravenost pro použití v praxi.
|
|
|
|
FreeCAD je univerzální parametrický modelovací systém vydaný pod licencí LGPL, tudíž jej lze libovolně šířit a modifikovat. FreeCAD je také multiplatformní, tudíž jej lze používat v operačních systémech Windows, Linux i MacOS. FreeCAD je napsán v jazyce C++ a pro manipulaci s geometrií využívá knihovny OpenCASCADE. FreeCAD lze jej rozšiřovat pomocí zásuvných modulů (pluginů). FreeCAD též umožňuje psaní vlastních skriptů v jazyce Python a nahrávání vlastních maker. \cite{FreeCAD_wiki}
|
|
|
|
Mnou vytvářené modely vychází z projektu x-scara. \cite{x-scara} Model je rozdělen do tří dílčích částí. První je základna, druhou je rameno a třetí je samotná hlava nástroje. Další částí je sestava s vyhřívanou podložkou.
|
|
|
|
\subsection{Základna}
|
|
Základna je složena ze hliníkových profilů 20x20mm a 20x40mm. Na základnu je upevněno rameno, které se díky lineárně valivým ložiskům pohybuje po vodící tyči o průměru 8mm. Základna je složena ze hliníkových profilů 20x20mm a 20x40mm. Na základnu je upevněno rameno, které se díky lineárně valivým ložiskům pohybuje po třech vodících tyčích o průměru 8mm. V horní části základny je upevněn krokový motor, který pomocí trapézové tyče o průměru 8mm pohybuje ramenem v ose Z.
|
|
|
|
Pro spojení hliníkových profilů jsem zvolil techniku "Blind Joint", která umožňuje pevné a levné spojení dvou hliníkových profilů. Tuto techniku jsem zvolil i z důvodů snadnější montáže akrylové desky a možnosti zapuštění elektroniky do rámu tiskárny.
|
|
|
|
V zadní části zakladny je též prostor pro upevnění elektroniky. Za akrylovým panelem jsou přimontovány dvě DIN lišty, na které jsou pomocí adaptérů upevněny jednotlivé elektronické prvky.
|
|
|
|
\section{Implementace kinematiky SCARA do Klippy}
|
|
% cSpell:disable-next-line
|
|
Klippy je část firmwaru Klipper, která běží na počítači uvnitř 3D tiskárny, ke kterému je připojena řídící deska. Kód je napsán převážně v jazyce Python, přičemž některé funkce jsou implementovány v jazyce C. Volání těchto funkcí je realizováno použitím rozhraní CFFI (C Foreign Function Interface). \cite{klipper_code_overview}
|
|
|
|
\subsection{Přímá a inverzní kinematika}
|
|
Kinematické transformace se používají k převodu natočení kloubů na souřadnice koncového bodu (přímá transformace) a naopak (inverzní transformace). Pro výpočet transformace je třeba znát délky ramen \(L_1\) a \(L_2\), offsety ramen \(x_{offset}\) a \(y_{offset}\) a Elbow Crosstalk Ratio (ECR).
|
|
|
|
Pro další výpočty je potřebné znát Elbow Crosstalk Ratio (převodový poměr řemenice v ose ramene vůči řemenici v ose kloubu).
|
|
|
|
\begin{equation}
|
|
ECR = \frac { n_S } { n_E }
|
|
\end{equation}
|
|
|
|
\subsubsection{Přímá kinematika}
|
|
|
|
\begin{equation}
|
|
\phi_S = a
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
\phi_E = b - \frac{a}{ECR}
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
a\_sin = - \sin(\phi_S) \cdot L_1
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
a\_cos = \cos(\phi_S) \cdot L_1
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
b\_sin = - \sin(\phi_S + \phi_E) \cdot L_2
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
b\_cos = \cos(\phi_S + \phi_E) \cdot L_2
|
|
\end{equation}
|
|
|
|
Nakonec je potřeba přičíst odsazení souřadného systému nástroje vůči souřadnému systému báze (konkrétně odsazení kloubu ramene vůči počátku tiskové podložky).
|
|
|
|
\begin{equation}
|
|
x = a\_sin + b\_sin + x_{offset}
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
y = a\_cos + b\_cos + y_{offset}
|
|
\end{equation}
|
|
|
|
|
|
\subsubsection{Inverzní kinematika}
|
|
Nejprve je třeba kompenzovat offset polohy TCP v osách x a y.
|
|
|
|
\begin{equation}
|
|
x = - (raw_x - x_{offset})
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
y = (raw_y - y_{offset})
|
|
\end{equation}
|
|
|
|
Dalším krokem je výpočet vzdálenosti od počátku.
|
|
|
|
\begin{equation}
|
|
% cSpell:disable-next-line
|
|
hypot = \sqrt{x^2 + y^2}
|
|
\end{equation}
|
|
|
|
Dále se vypočítají úhly ramen \(\phi_S\) (shoulder) a \(\phi_E\) (elbow).
|
|
|
|
\begin{equation}
|
|
% cSpell:disable-next-line
|
|
\phi_S = arctan2 \left( x, y \right) - arccos \left( \frac { x^2 + y^2 + L_1^2 - L_2^2 } { 2 \cdot L_1 \cdot hypot } \right) [\si{\radian}]
|
|
\end{equation}
|
|
|
|
kde \(L_1\) a \(L_2\) jsou délky ramen.
|
|
|
|
\begin{equation}
|
|
\phi_E = \frac { \phi_S } { ECR } + arccos \left( \frac { x^2 + y^2 + L_1^2 + L_2^2 } { 2 \cdot L_1 \cdot L_2 } \right) [\si{\radian}]
|
|
\end{equation}
|
|
|
|
kde \(ECR\) je Elbow Crosstalk Ratio, \(L_1\) a \(L_2\) jsou délky ramen.
|
|
|
|
Následně stačí převést úhel v radiánech na stupně.
|
|
|
|
\begin{equation}
|
|
\Phi_S = \phi_S \cdot \frac { 180 } { \pi } [\si{\degree}]
|
|
\end{equation}
|
|
|
|
\begin{equation}
|
|
\Phi_E = \phi_E \cdot \frac { 180 } { \pi } [\si{\degree}]
|
|
\end{equation}
|
|
\section{} |