fekt-scara/tex/text/4_prakticka_cast.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{}