Posts mit dem Label KiCad werden angezeigt. Alle Posts anzeigen
Posts mit dem Label KiCad werden angezeigt. Alle Posts anzeigen

Montag, 7. Januar 2019

PCBWay Board Quality - Leiterplatte für das Differenzielle I2C Interface

Ich habe vor einigen Tagen einen Gutschein von PCBWay bekommen. Im Gegenzug dazu veröffentliche ich auf meiner Webseite eine Rezension. Dieser Artikel ist die Rezension zu den kostenlos erhaltenen Leiterplatten. Zuerst die fertig bestückte Leiterplatte bereits auf dem RaspberryPi montiert. Wenn ihr euch über den Link anmeldet und eine Bestellung aufgebt, bekomme ich einen kleinen Bonus für weitere Platinen.
Die Leiterplatte kam in einem Fedex Paket. Als Express. Innerhalb von 5 Tagen nach Bestellung. Unglaublich schneller Service auf Seiten von PCBWay. Deutsche Leiterplatten Hersteller haben ähnliche oder längere Lieferzeit bei weit höheren Kosten.
Im Paket waren Aufkleber, ein Weihnachtsgeschenk und die Leiterplatten. Das Weihnachtsgeschenk ist ein PCB Weihnachtsmann, der über Batterie betrieben leuchtet. Die Leiterplatten sind wie üblich eingeschweißt um sie vor Korrosion und Schmutz zu schützen.

Ausgepackt zeigt sich die hervorragende Qualität der Boards. Bei der ersten Inspektion lassen sich keine Fehler erkennen. Sowohl auf der Vorder- als auch auf der Rückseite. Auch die Abmessungen der Leiterplatte ist genau getroffen, so weit ich das mit dem Messschieber nachmessen kann. Die Bilder unten zeigen die Leiterplatte von beiden Seiten. Die Fräskontur ist wie in den Gerberdaten angegeben ausgeführt. Die Kerbe an der linken Seite, sowie der Schlitz sind wie gewünscht ausgeführt.
 
Ich habe neben den Bildern noch Aufnahmen mit dem Mikroskop gemacht. Dabei zeigen sich weitere Qualitätsmerkmale der Leiterplatten.
Das oben gezeigte Bild ist mit einem USB Mikrokop aufgenommen und zeigt 0,25mm breite Leiterbahnen und Vias mit 0,4mm Loch und 0,4mm Restring. Sehr gut ist zu erkennen, dass die Löcher der Vias sehr genau in der Mitte des Rings liegt. Das ist ein Zeichen für hohe Genauigkeit beim Referenzieren der Panels bei der Fertigung. Rechts neben dem Bild sind die originalen CAD-Daten des fotografierten Ausschnitts. Gut zu sehen ist auch, wie genau der Siebdruck zu den Kupferstrukturen ausgerichtet ist.
Dieser kleine Siebdruck zeigt, wie filigran PCBWay in der Lage ist Siebdruck auf die Platine zu bringen. Für Prototypen wird meistens kein Sieb hergestellt sondern mit einem Rasterverfahren gearbeitet. Dabei geht ein Druckkopf, ähnlich wie beim Tintenstrahldrucker, Zeile für Zeile die Platine entlang und positioniert tröpfchenweise Tinte, die Später entweder getrocknet, oder über UV-Licht ausgehärtet wird.
Zum Schluss noch einige Nahaufnahmen der Lötstellen. Rechts vor und links nach dem Löten sehen die Strukturen sehr gut aus. Auch mit dem Lötkolben war es sehr angenehm zu arbeiten. Die Pads sind gut verzinnt (HASL) und nehmen Lötzinn (bleihaltig und bleifrei) sehr gut an.
PCBWay ist also ein Leiterplattenhersteller, den ich sehr empfehlen kann. Ich habe auch schon bestückte Leiterplatten bestellt. Die waren von der Qualität auch sehr zufrieden stellend.

Hier noch ein Video von der Leiterplatte im Ofen


Mittwoch, 12. Dezember 2018

World Smallest 3D Printer Hardware/Software Part1

So... es ist soweit. Die erste Platine bzw. Platinen sind gekommen. Da mir Bestückung für eine Prototypen Platine noch zu teuer ist heißt es gleich ran an`s Werk. Die Platinen incl. Bauteile hab ich bei JLCPCB bzw.  bei LCSC. Diese kammen innerhalb von 10 Tagen nach Bestellung bei mir an. Was ich sehr gut finde ist, dass JLCPCB die Ware ordentlich deklariert hat, wodurch die Post das Paket ohne Probleme weitergegeben hat. Gegen eine Extrazahlung von nochmal 19% habe ich dann das Paket vom Postboten bekommen. Naja, kam zwar ohne Probleme, aber war dann doch sehr verwirrend. Am Morgen kam ein Brief von der Zoll Stelle Leipzig, dass ich doch bitte einen Haufen Unterlagen hinschicken soll, meinen Firmennamen usw. Mittags kam dann das Paket trotzdem an. Komisch aber ich will mich nicht beschweren.

Jetzt gehts an`s Bestücken. Ich hab alles in allem für die erste Platine zwei Stunden gebraucht. Jedoch hatte ich bei den Stepperdrivern meine Probleme. Ich werde mir wohl einen Reflow Ofen zulegen müssen um diese ordentlich löten zu können.



Nachdem die Platine dann bestückt war ging es an den Bootloader vom Arduino. Was ich nicht wusste: Der Bootloader findet sich in nahezu jeder Arduinoinstallation unter *:\Arduino\hardware\arduino\avr\bootloaders. Ich habe zu Beginn versucht den Bootloader per BusPirate zu flashen. Nach mehreren Versuchen und auch mehrmaliger Kontrolle der Verbindung habe ich es nicht geschafft den Bootloader mit dem BusPirate zu flashen. Basti hat zum Glück noch einen AVRISP MK2. Nachdem ich diesen angeschlossen habe, ging das flashen ohne Probleme. Jetzt ist der Bootloader drauf und es kann losegehen. Also ein Microusb-Kabel angeschlossen und im Gerätemanager nach dem COM-Port gesucht. Bei mir wird der FDTI Driver sofort installiert und als COM13 bekannt gegeben. Ich hab dann erst mal den µSD Karten Test von Arduino aufgespielt. Eine µSD Karte gesucht und das ganze im Serialmonitor von Arduino angesehen. Und siehe da, die µSD Karte hatte ich wohl mal genutzt um einen Octopie zu booten. Sie wird direkt erkannt.


Jetzt will ich einen Port mal wackeln lassen, den H0 Pin. Da dieser der einzige ist, der eine LED hat. Also habe ich in den gleichen Sketch folgende Befehle eingebaut.


digitalWrite(H0, HIGH);
delay(500);
digitalWrite(H0, LOW);
delay(500);

Als ich den Sketch hochladen wollte hat sich Arduino nicht mit dem Bootloader verbunden. Nachdem ich mit dem AVR wieder den Bootloader geflashed habe, ging das dann wieder. Und siehe da die LED blinkt nun im Sekunden Takt. Also geht der H0 Ausgang auch schonmal. Jetzt mal sehen, warum das flashen nicht direkt funktioniert. Und siehe da, ich hab vergessen den DTR Pin mit dem RESET zu verbinden. Erst hab ich gedacht "Warum hab ich den vergessen ich hab doch alles soweit wie möglich übernommen" doch ich weiß jetzt warum ich den nicht verbunden habe. Der FTDI230x hat diesen Pin nicht. ABER ich kann den CTS Pin hierfür nutzen. Jetzt habe ich einen Kondensator an den Reset gelötet und das hat auch "fast" funktioniert. Der RESET wurde nicht stark genug auf Masse gezogen. Das liegt daran, dass der Chip eine 3V3 I/O Spannung hat. Da ich nicht einen zusätzlichen IC bestücken will nur um einen Pegel zu wandeln hab ich micht für einen einfachen MOSFET Pegelwandler entschieden. Einen N-KAN MOSFET habe ich schon auf der Platine, dadurch brauch ich kein extra Bauteil. Da aber beim wechsel auf High der Pegel am RESET Pin auf 5V*2 ansteigen kann, brauche ich noch eine Diode um diese Spannung abzuleiten. Da ich keine Dioden (außer LEDs) auf der Platine habe, hab ich auch hier vor einen weiteren MOSFET zu nehmen und die interne Bodydiode zu nutzen. Diese Schaltung habe ich dann mit Fädeldraht auf der Platine realisiert wodurch das Flashen jetzt ohne Probleme klappt.

Jetzt habe ich mir das Marlin runtergeladen und in einer groben Erstkonfiguration auf den MEGA geflashed. Ab jetzt kann ich mit den G-Codes arbeiten. Also fix den Befehl M105 abgesendet um die Temperaturen zu bekommen. Die Platine hat eine Temperatur von um die 20°C was in etwa dem entspricht, wass ich mit meinen Fingern ertaste. Dann hab ich die Platine mal an eine Kerze gehalten. Ja.....  also Kerze macht warm. In wie fern die Temperaturen der Realität entspricht muss ich noch ermitteln.
 Jetzt hab ich den Befehl G28 abgesendet um den Drucker "zu Homen". Eigenltich wollte ich nur das ein Motor zuckt, ist aber nicht passiert. Also muss ich mir die Stepperdriver nochmal überprüfen.

Zusammenfassend funktioniert:
* USB => UART
* LED an H0
* µSD Interface
* NTC auf der Platine
Was noch nicht funktioniert oder noch nicht getestet ist:
* Stepper Driver
* NTC auf dem Hotend
* Ventilator Ausgang
* Hotend betreiben

Soviel erst mal

Samstag, 1. Dezember 2018

World Smallest 3D Printer


Ich hatte vor einiger Zeit die Idee, den Welt kleinsten 3D-Drucker zu entwickeln. Dieser darf nicht zu teuer werden. Er sollte für nahezu jeden, der einen Lötkolben richtig halten kann einfach zusammen zu bauen sein.

Also günstig ABER funktionstüchtig.

Da ich nicht die komplette Software neu entwickeln will, versuche ich mich auf vorhandene Software zu stützen. Meine Wahl fällt auf Marlin, was auf Arduino basiert. Die Hoffnung ist, dass ich mit geringstem Softwareaufwand den Drucker in Betrieb nehmen kann. Da ich den ATmega2560 verwenden möchte, dessen Gehäuse relativ groß ist (warum kommt später) möchte ich mich an dem Rumba orientieren. Diesen Schaltplan nehme ich als Referenz und schon habe ich das Pinout für den Controller.

Also gesagt getan. Die neuste Version von KiCad runtergeladen und los geht's.

Erst mal den Schaltplan soweit wie nötig erstellt und "neue" Bauteile aussuchen. Da der Drucker per USB betreiben werden soll, müssen die Stepper, Heizer, Lüfter usw. mit 5V laufen.
Als Stepper Driver wird der STSPIN220 von ST verwendet. Dieser ist super klein und läuft mit dem gewohnten Pololu Interface (STEP, DIR, EN). Als Heizelement werde ich Widerstände verwenden. In diese Flachbaugruppe schraube ich die Nozzle.


Weiter geht's mit dem Layout. Warum ich ein großes Gehäuse nehmen möchte? Ich möchte ein "beheiztes" Druckbett. Da liegt es nah den vorhanden µC zu nehmen. Also mir liegt dies nah ;).
Der Controller wird also das Zentrum der Leiterplatte, und der Rest muss versuchen darauf zu passen. Durch diese Einschränkung der "Druckbettgröße" haben sich die restlichen Maße ergeben und der Drucker bekommt eine Seitenlänge von 7cm.

Da ich auch versuche in der 3D Modellierung besser zu werde, hab ich mit dem Tool FreeCAD versucht den Drucker in 3D zu modellieren.

So oder so ähnlich soll er später mal aussehen. Da ich keine Fräße habe, möchte ich alle Teile aus Flachbaugruppen erstellen und als Verbindungen keine Schrauben wählen, sondern die Teile sollen verlötet werden. Also Lötzinn als Verbindungselement nutzen. Mal sehen wie gut das funktioniert.