diff --git a/Praesentationen/folien_vorstellung/img/abloese_1_1.png b/Praesentationen/folien_vorstellung/img/abloese_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3298995617e8f30f9e50b6b2e0d8d36ce3520c Binary files /dev/null and b/Praesentationen/folien_vorstellung/img/abloese_1_1.png differ diff --git a/Praesentationen/folien_vorstellung/img/abloese_1_2.png b/Praesentationen/folien_vorstellung/img/abloese_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee9a4acfc7dd9eeee737e3b350eb4997ba8c238 Binary files /dev/null and b/Praesentationen/folien_vorstellung/img/abloese_1_2.png differ diff --git a/Praesentationen/folien_vorstellung/img/abloese_1_3.png b/Praesentationen/folien_vorstellung/img/abloese_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..445ba64cfb3512a7dde8ab12a96c2338696b6d72 Binary files /dev/null and b/Praesentationen/folien_vorstellung/img/abloese_1_3.png differ diff --git a/Praesentationen/folien_vorstellung/img/abloese_2_1.png b/Praesentationen/folien_vorstellung/img/abloese_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb89cd180d55f50d4fce41baab820c00c3140f3 Binary files /dev/null and b/Praesentationen/folien_vorstellung/img/abloese_2_1.png differ diff --git a/Praesentationen/folien_vorstellung/img/abloese_2_2.png b/Praesentationen/folien_vorstellung/img/abloese_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f96aa5557b3c2185ea5a1a1e43823ea5b6a83e0 Binary files /dev/null and b/Praesentationen/folien_vorstellung/img/abloese_2_2.png differ diff --git a/Praesentationen/folien_vorstellung/img/abloese_2_3.png b/Praesentationen/folien_vorstellung/img/abloese_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2fcb4d5e7cb0accdb2b146f4a95ca5fbbdf5448d Binary files /dev/null and b/Praesentationen/folien_vorstellung/img/abloese_2_3.png differ diff --git a/Praesentationen/folien_vorstellung/slides.pdf b/Praesentationen/folien_vorstellung/slides.pdf index bd07fc03c81d426f94e10d114e6c93af4b82e282..2376a0e2ef9956c534887baacf6eb244757a582e 100644 Binary files a/Praesentationen/folien_vorstellung/slides.pdf and b/Praesentationen/folien_vorstellung/slides.pdf differ diff --git a/Praesentationen/folien_vorstellung/slides/slides.tex b/Praesentationen/folien_vorstellung/slides/slides.tex index 23b03ac8d99d2c144e916c2398f9c2348b9f57ee..f6d0d9212c5babc6917607f94e51bd01ee96a67f 100644 --- a/Praesentationen/folien_vorstellung/slides/slides.tex +++ b/Praesentationen/folien_vorstellung/slides/slides.tex @@ -211,10 +211,6 @@ \begin{frame}\frametitle{Firmware} \begin{itemize} \item Eigene Firmware f\"ur den Drucker geschrieben - \begin{itemize} - \item Hinzuf\"ugen weiterer Funltionen einfacher - \item ...und der Programmierer hat auch Spa{\ss} :) - \end{itemize} \item Viele Implementierungen aus den \"Ubungen wiederverwendet \item G-Codes nach RepRapFirmware \item Kompatibel mit 3D-Druck-Software wie Pronterface oder Octoprint @@ -223,6 +219,22 @@ \begin{frame}\frametitle{Firmware} \center{\includegraphics[width=0.8\textwidth]{img/system_small.pdf}} \end{frame} +\begin{frame}\frametitle{Achsen und Motoren} + \begin{itemize} + \item Motoren als Struct beschrieben, nur Pins und Schrittanzahl + \item Achsen-Modul \"ubernimmt Umrechnung und Positionierung + \item Je nach Art der Achse andere Formel f\"ur Schritte pro Millimeter + \item Nicht 100\% exakt - ben\"otigt Nachkalibrierung + \end{itemize} +\end{frame} +\begin{frame}\frametitle{G-Codes} + \begin{itemize} + \item G-Code-Implementierung nach Definition auf dem RepRap-Wiki + \item Menge klein gehalten (18 G-Codes), nur das n\"otigste + \item Ringbuffer zum Einlesen der Befehle + \item Kommunikation mit dem PC, Status und Anforderung des n\"achsten G-Code... falls die Software sich darum k\"ummert + \end{itemize} +\end{frame} \section{Fertiger Drucker} @@ -265,7 +277,7 @@ \end{itemize} %Kurz auf jede einzelne Idee eingehen und sagen warum wir uns gegen sie entschieden bzw. für die Kamera entschieden haben, später als Note hinzufügen bitte! \end{frame} -\begin{frame}\frametitle{Demonstration} +\begin{frame}\frametitle{Der Plan...} \begin{itemize} \item Erstens: Ansteuerung einer Kamera \"uber das Board \begin{itemize} @@ -277,17 +289,59 @@ \begin{itemize} \item Prototypisch implementiert, abseits vom Board \item Analyse von Bildern der Board-Kamera - \item Drei m\"ogliche Ans\"atze zur Erkennung von Abl\"osen + \item Mehrere m\"ogliche Ans\"atze zur Erkennung von Abl\"osen \end{itemize} \end{itemize} \end{frame} +\begin{frame}\frametitle{Die Realit\"at...} + \begin{itemize} + \item Sehr viel Zeit mit Problemen des eigentlichen Druckers verloren + \item Kamera nur fast fertig implementiert... sehr knapp am Ziel + \item Theoretische \"Uberlegungen f\"ur Ans\"atze zur Erkennung, aber keine M\"oglichkeit sie auszuprobieren + \end{itemize} + $\Rightarrow$ Daher hier nur eine \"Ubersicht \"uber die m\"ogliche Implementierung der Abl\"oseerkennung... +\end{frame} \begin{frame}\frametitle{Ansteuern} \begin{itemize} \item Board als Taktgeber, Pixel Clock zur\"uck - \item Bytes parallel auf 8 Pins ablesbar (optimal direkt vom Register) + \item Bytes parallel auf 8 Pins ablesbar \item Konfiguration \"uber SCCB, Aufl\"osung und Pixelrate einstellbar \end{itemize} \end{frame} +\begin{frame}\frametitle{Implementierung} + \begin{itemize} + \item Interrupt Handler auf Pin der Pixel Clock + \item Hardware-Register f\"ur Port D auslesen, Bitmaske und Shiften + \item Direkt in Buffer schreiben (176 x 144 x 2 Bytes gro{\ss}) + \item Bei VSync-Signal: zur\"uck an erste Position, Flag setzen + \item Lese-Thread kann gesamten Buffer auf dem seriellen Port ausgeben + \end{itemize} + $\Rightarrow$ Wir haben eine Zeile des Bildes gelesen! +\end{frame} +\begin{frame}\frametitle{Abl\"oseerkennung 1: Von oben} + \center{\includegraphics[width=0.3\textwidth]{img/abloese_1_1.png}\includegraphics[width=0.3\textwidth]{img/abloese_1_2.png}\includegraphics[width=0.3\textwidth]{img/abloese_1_3.png}} + \begin{itemize} + \item Pr\"ufen der unteren Kante des Druckobjekts + \item Mit G-Code: Bewegungen der ersten Schicht auslesen, transformieren, entlang dieser Verbindungen pr\"ufen (innere Verbindungen k\"onnen entfernt werden) + \item Ohne G-Code: Unterste Pixel jeder Spalte erkennen, in denen Filament liegt, und periodisch pr\"ufen + \end{itemize} +\end{frame} +\begin{frame}\frametitle{Abl\"oseerkennung 2: Von unten} + \center{\includegraphics[width=0.3\textwidth]{img/abloese_2_1.png}\includegraphics[width=0.3\textwidth]{img/abloese_2_2.png}\includegraphics[width=0.3\textwidth]{img/abloese_2_3.png}} + \begin{itemize} + \item Je nach Lichtdurchl\"assigkeit des Materials -- Lichtquelle \"uber Druckobjekt beleuchtet die Buildarea, das Licht sollte nicht dort zur Kamera durchdringen wo Filament liegen soll + \item Mit G-Code: Fl\"ache der ersten Schicht auslesen, hier muss Filament liegen -- kein direktes Licht + \item Ohne G-Code: Nach der ersten Schicht bedruckte Fl\"ache erkennen, erkannte Pixel d\"urfen nur noch dunkler werden + \end{itemize} +\end{frame} +\begin{frame}\frametitle{// TODO: Abl\"oseerkennung} + Einige Probleme noch nicht behandelt: + \begin{itemize} + \item Wie wird Filament erkannt? Farbe einstellen? + \item Wo muss die Kamera montiert werden? Beeinflusst das Wackeln die Bildanalyse? + \item Auf dem Board? Extern \"uber das Hostsystem? + \end{itemize} +\end{frame} \section{Budget} @@ -329,12 +383,11 @@ Ein kurzer Auszug aus unserem Budgetplan... \section{R\"uckblick} \begin{frame}\frametitle{R\"uckblick und Erkenntnisse} \begin{itemize} - \item Fr\"uher Anfangen! - \item Bauteile aus China sind nicht immer zuverl\"assig! + \item Die Teile fr\"uher zusammen testen + \item Bauteile aus China sind nicht immer zuverl\"assig \item Firmware kann man selber schreiben \item Sehr zeitaufw\"andig \item L\"osung eines Problems f\"uhrt zu einem neuen Problem - \item Implementierung der Kamera war keine gute Idee, lieber Lichtschranke, da simpler (oder bessere Kamera) \end{itemize} \end{frame} \begin{frame}\frametitle{Was haben wir gelernt in dieser Veranstaltung?}