Schmartwatch [14]: Flex Baugruppe bestücken

Die flexieblen Leiterplatten wurden geliefert und ich kann jetzt mit der Bestückung beginnen. Die Bestückung der ersten Leiterplatte werde ich in einzelnen Phasen durchführen. Zuerst wird der DCDC Konverter U2 bestückt. Dieser sitzt auf 6 BGA Bällchen und ist nicht leicht zu platzieren.
Wie man in den Aufnahmen bereits sehen kann, ist die Referenzierung der Siebdruck, Lötstopp und Kupfer Maske nicht ganz akkurat. Daher wurde an den Stellen der kleinen Landepads auch nachgearbeitet. Mit dieser Modifikation sollte es nun möglich sein die Bauteile korrekt und ohne Kurzschluss zu verlöten. Wenn ich die TPS61099 verlötet habe, kann ich mit dem Multimeter die Lötstellen auf Kurzschlüsse prüfen. Das Verlöten wird mit dem Heißluftfön passieren. Dabei wird mit Flussmittel eine Barriere zur Athmosphäre hergestellt (viel hilft viel) und der Chip erhitzt, bis das Lötzinn flüssig ist. Die suaerstoffhaltige Athmosphäre soll absgeschottet werden, um ein oxidieren (verbrennen) des Lot zu vermeiden. Im industriellen Herstellungsprozess wird das mit zum Beispiel einer Schutzathmosphäre erreicht. Anschließend kann dann mit dem Lötkolben die restliche Beschaltung dazugelötet werden. Wahlweise kann auch hier die Heißluft eingesetzt werden um die Bauteile zu verlöten.

Wenn der Regler aus den 3V Eingangsspannung die gewünschten 3,3V Ausgangsspannung erzeugt, kann die MCU, also der Microcontroller U3 bestückt werden. Dieser hat ebenfalls Landepads, die allerdings größer sind als die kleinen Kreisförmigen des Spannungsreglers. Hier musste nicht nachgearbeitet werden um die Pads mit Lötstopplack zu trennen. Diese Trennung ist wichtig, denn sonst könnnen sich Brücken bilden, die man von Außen nicht sehen kann. Für den Microcontroller kann ebenfalls eine Kurzschlussmessung erfolgen, ebenso wie eine optische Inspektion unter dem Mikroskop. Wenn der Lötvorgang für Gut befunden wird, kann die restliche Peripherie um den Controller gelötet werden. dazu gehören: Stützkondensatoren, und Vorspannungswiderstände. Wenn alle diese Komponenten verlötet sind, sollte der Controller über den Debug-Port erreichbar sein.
Sollte das der Fall sein, kann mit der Bestückung der externen ePaper Beschaltung begonnen werden. Diese, zusammen mit dem Stecker J3 ist für sie Uhrenfunktion absolut notwendig. Die Echtzeituhr und der Bewegungssensor werden nacheinander dazugelötet und auf Kurzschlüsse überprüft. Jede der Komponenten sollte dann einzeln in Betrieb genommen werden.

Die Bilder zeigen, dass der Offset des Siebdrucks leider so stark ist, dass der Rahmen um die Komponenten nicht als Referenz zum Platzieren herangezogen werden kann. Das ist schade, denn jetzt muss ich mich auf die optische von der Seite erfolgende Bewertung der Platzierung verlassen.

Die Rückseite der Flexplatine ist mit einer dicken Schicht Polyimid (PI) versehen. Da auf der Rückseite allerdings auch einige Messpunkte anfgebracht sind, wurde in der Schicht Öffnungen vorgesehen.

Diese Öffnungn sind groß genug um mit dem Tastkopf an das darin liegende Pad zu gelangen. Somit ist das Testen in einem Testadapter möglich. Diesen habe ich allerdings noch nicht entworfen.
Um die Uhr weiter zu stabilisieren wird der Batteriehalter in der Mitte mit einem thermisch aushärtenden Kleber fixiert. Das Kunststoffgehäuse des Halters kann so Längs und Quer Kräfte aufnehmen, die die Platine in der Mitte durchbiegen würden.

Beim Auflöten der zusätzlichen Komponenten habe ich an eine noch unbekannten Stelle einen Kurzschluss, oder besser gesagt eine Diodenstrecke von  0,4V in beide Richtungen. Hier muss ich also erst noch ein bisschen nacharbeiten, bevor ich mit dem Prototyp eine Funktion testen kann.

Wenn die Funktion gegeben ist, werde ich als nächsten Schritt die Software so weit fertig machen, dass sie initial released werden kann. Dazu fehlt noch ein wenig Code, vor allem die Funktion die Updatemuster des ePapers zu kontrollieren.

Kurzschluss Junkies [0x06]: Gemischte Tüte

Feedback zur letzten Folge war positiv. Ob wir YouTube Videos machen, werden wir sehen. Firma in der wir arbeiten ist unbekannt. Ob wir die irgendwann erwähnen werden wir sehen.
3000+ Downloads in diesem Jahr.

Podcast wird auf jeden Fall fortgeführt. Wir machen weiter.

Allgemeines:

RIGOL1054Z das kleine Osziwunder für <400€ mit Sofwareencoder, FFT und das Beste ist es kann ein eigenes Augendiagramm erstellen. Hat 1G/Sample und 50MHz Bandbreite. Top Hobby-Oszi.

Aus Fehlern lernen:

DRC ist immer von Vorteil und sollte man nicht vergessen.
Zuken ist nicht das beste Tool wenn es darum geht Busse von Subsheet zu Subsheet zu führen. Daher der „gesunde“ Blauton im Bild (Videosignal) auf einer seiner Baugruppen. Wir nutzen das etwas ältere CR5000 mittlerweile gibt es CR8000.

Layoutsoftware:

KiCad, Zuken, Pulsonix und Altium mal kurz erwähnt.
KiCad ist ein kostenloses Layouttool was durchaus mit den professionellen Tool mithalten kann.
Zuken ist zumindes bei uns etwas buggy aber durchaus nutzbar für Großprojekte.
Pulsonix ist das modernere Zuken welches auch etwas günstiger ist.
Altium ist ein Tool welches etwas besser sein soll jedoch auch teuerer, aber vom Hörensagen ein sehr gutes Programm ist.

Basti hat für KiCad einen Bugfix bereit gestellt für einen Haken und Stacked-Vias in seine Version implementiert.

Projekt Genesis:

Das Alexagame für zwischendurch. Wer wollte schon immer mal ein KI sein und über die Zukunft der Menschheit entscheiden? 😉

Der Minidrucker:

Beim Minidrucker geht der Stepperdriver von ST zumindest wenn das Board extern ist. Um das Mini-Drucker-Mainboard richtig bestücken zu können brauchen wir einen Fineplacer. Der Bausatzlink folgt. Bei motedis kann man günstig mechanische Teile kaufen.

PC Hardware:

Ein paar Geheimtipps für PC Hardware. Netzteil aus dem T7500 (1KW für unter 60€)
Aktuelle Preis/Leistungssieger ist die RX580.

Schmartwatch:

Neue Schmartwatchversion ist öffentlich zum Review, da das Board für Prototypen sehr teuer ist.

Chip(s) der Woche:

Microchips MCP6411. Ein Sehr günstiger OPAMP für ca. 25ct.
Analogs AD8515. Auch nicht schlecht für grad mal 5ct mehr.

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

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

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.

Schmartwatch [11]: Neue Hardware

Die erste Version der Hardware hatte einige kleine Bugs. Darunter war ein Fehler in der Booster Schaltung für VCOM des E-paper Displays, Kondensatoren, die nicht spannungsfest genug waren und kein Piezo Piepser. Alles das ist in der zweiten Version der Hardware vorhanden. Mit der Bestellung habe ich eine ganze Weile gewartet, da ich erst alle Teile der Hardware, die bereits vorhanden ist und funktioniert testen wollte. Das ist jetzt geschehen und die zweite Version kann hergestellt werden.

Die alte Version der Hardware hat einige Pinbelegungen anders als die Neuere. Daher ist die Software bereits dafür ausgelegt, die richtige Header Datei einzubinden, wenn für die eine oder andere Hardware kompiliert wird.

Hier eine Übersicht der aktuellen Funktionen.
Links oben befindet sich der Piezo Buzzer. Um dafür Platz zu machen, ist der Bewegungssensor U4 und der Mikrocontroller U3 weiter nach rechts gewandert. Die RTC, die unabhängig vom Controller läuft, ist ein wenig weiter nach unten gewandert und sitzt jetzt rechts oberhalb der Batteriehalterung. Unterhalb der Batterie befindet sich der Teil der E-paper Ansteuerung. Im Gegensatz zur Version 1 ist hier die Schaltung mit 0603 Bauelementen ausgelegt. Daher können Kondensatoren mit höheren Spannungsfestigkeiten eingesetzt werden. Ein zusätzliches Feature ist die Beleuchtung des Displays. Dafür ist ein weiterer Flat-Flex-Stecker vorgesehen: J4.

Das PCB, das ich bestellt habe wird aus 0,4 mm dickem FR4 hergestellt und kommt damit der Dicker eines Flex-Boards mit Stiffner nahe. Eventuell ist sie auch flexibel genug um für das Handgelenk gebogen zu werden. Der Stecker sollte zwar mit einem 0,3 mm dicken Flex-Board verwendet werden, aber vielleicht passt das 0,4 mm dicke ja trotzdem.

Auch hier ist die Wahl wieder auf FR4 als Boardmaterial gefallen, da die Flex Boards alle viel teurer sind. Wenn mehr als 5-10 PCBs bestellt werden können, weil ich mir sicher bin, dass es das endgültige Design ist, dann ist Flex wieder nicht zu teuer. Bis dahin wird FR4 genügen müssen.

Einer der nächsten Schritte wird es sein, die Hardware und die Software für die Veröffentlichung vorzubereiten. Im Moment schließe ich die BOM ab, sodass eine Liste aller benötigten Bauelemente zur Verfügung steht. Weiterhin kommt dann noch ein neueres 3D Modell zum Einsatz. Auch hier sind einige Design Änderungen eingeflossen, die in der ersten Version noch nicht beachtet wurden. Dazu aber später mehr.

Schmartwatch [10]: Energieverbrauch Ergebnis

Hier ist das Ergebnis des Batterie Tests. Wie anhand der Oszilloskop-Bilder zu sehn war, ist die Batterie kontinuierlich beansprucht worden. Das hat sie nicht lange mit sich machen lassen und so stand heute, als ich aus dem Urlaub zurück gekommen bind, folgendes Ergebnis fest:

Die Uhr lief genau bis zum 29.09. 02:29 Uhr. Das ist nicht besonders lange. Gerade einmal 6,5 Stunden.

Das Ergebnis zeigt, dass es noch zu viele aktive Stromverbraucher gibt. Der nächste Schritt wird sein, diese zu finden und zu beseitigen.

Schmartwatch [09]: Energieverbrauch

Ich habe jetzt Urlaub und was bietet sich da besser an, als ein Laufzeit Experiment. Die Uhr ist mit der aktuellen Software ausgestattet, das Softdevice ist initialisiert, aber nicht aktiv. Ich habe eine neue Batterie eingelegt und lasse die Uhr jetzt einfach liegen. Dank des E-Ink Displays kann man genau sehen, wie lange die Uhr lief, bevor kein Update mehr kam. Das Foto zeigt die Uhr kurz nach dem Start beim Updaten der Minute.

Testbedingungen

Test startete am  28.09.2018 19:56
Git Revision 0c692ed

Hardware:

  • FR4 Prototyp mit Display Adapter Platine
  • J-Link Adapter mit Diode
  • CR2032 Lithium Knopfzelle von EDEKA zuhause MHD: 12-2022

Zum Schluss noch einige Messungen während die Uhr läuft:

Zustand der Spule am Schaltpunkt des DCDC-Konverters während des Ruhe Betriebs.
Dieser Spannungsverlauf hat eine Einschaltdauer von 15%.
Zustand der Spule am Schaltpunkt des DCDC-Konverters während einer Aktualisierung.
Spannung an der Batterie während des Ruhe Betriebs. Spannung an der Batterie während einer Display Aktualisierung.

Schmartwatch [08]: BOM Management in KiCad

Um eine elektronische Baugruppe herstellen zu können benötigt man neben einer Leiterplatte elektronische Komponenten. Diese haben spezifische Werte, um die gewünschte Funktion zu erzielen. Spezifiziert werden die Werte beim Eingeben des Schaltplans. In KiCad geht das mit dem Programm Eeschema. Anhand der Funktion und angegebenen Parametern kann eine Auswahl getroffen werden, welche Bauteile von welchem Hersteller für eine Komponenten im Schaltplan verwendet werden können. Ähnlich wie bei der Herstellung von Leiterplatten können dann verschiedene Gründe, wie Lieferzeit und Preis, die Auswahl beeinflussen. Betrachtet man diese Schaltung, zeigt sich dass hier folgende Komponenten verwendet werden:

Zwei Widerstände, eine Spule , zwei Kondensatoren, drei Schottky Dioden und ein Transistor. Im Schaltplan sind alle wichtigen Informationen eingeblendet um die Schaltung ausreichend zu spezifizieren. Der Transistor ist angegeben als Si1308EDL. Dieser wird von der Firma Vishay hergestellt und ist nur im SOT-323 Package zu bekommen. Für die Schottky Dioden ist eine Typenbezeichnung angegeben: MBR0530. Ebenso eine Gehäuseform: SOD-123. Somit kann als Bauteil eine Diode von ON Semi oder MCC eingesetzt werden. Bei den Kondensatoren, Widerständen und Spule ist die Auswahl noch größer. Die Kondensatoren haben als Werte die Kapazität, Gehäusegröße und maximal Spannung angegeben. Mit diesen Werten bieten sich mehrere Hersteller an. Hier sind zum Beispiel Murata, Yageo oder TDK zu nennen. Jeder der Kondensatoren, der die angegebenen Werte erfüllt ist geeignet in dieser Schaltung verwendet zu werden. Die Spule ist ähnlich wie die Kondensatoren mit drei Charakteristiken spezifiziert. Der Induktivität, dem maximalen Strom und der Bauform. Mit diesen Parametern bieten sich Spulen der Hersteller Taiyo Yuden oder TDK an. Beide Spulen sind geeignet.
Bei den Widerständen sind lediglich die Gehäuseform (0603) und der Ohmsche Widerstandswert angegeben. Daher bieten sich eine Vielzahl an Herstellern an, z.B. Stackpole, Bourns, Vishay, Yageo oder Susumu.

Wie zu sehen ist, stehen für viele Komponenten der Schaltung Alternativen zur Verfügung. Diese sind grundsätzlich alle geeignet um eine funktionierende Baugruppe zu bilden. Beim Herstellen kann also die günstigste oder kurzfristig beschaffbare Variante gewählt werden. Das ganze zu verwalten nennt man BOM-Management (Bill of Material). In größeren Unternehmen sind ganze Abteilungen damit beschäftigt, die Verfügbarkeit von Alternativen für die Bestückung der Leiterplatte zu sichern. Im kleinen Rahmen reicht aber eine solche Tabelle völlig aus.

Im aktuellsten KiCad (5.0.0) ist das Management der BOM nicht ganz ausgereift, aber dennoch brauchbar. Die Tabelle wird dynamisch mit den Komponenten im Schaltplan aktualisiert und kann auch die einzelnen Gruppen als ganzes bearbeiten. So sind zum Beispiel alle Kondensatoren  mit 100nF gruppiert. Wenn in der Gruppe ein Feld geädert wird, ändert sich auch jede Komponente in der Gruppe. So kann nach der Schaltplaneingabe schnell eine Zuordnung der einzelnen Komponenten zu Bestellnummern (MPN) hergestellt werden. Das Feld Price habe ich noch zusätzlich eingefügt, um einen groben Überblick über die Kosten zu behalten. Wenn in der Tabelle die Felder fehlen, kann einem beliebigen Bauteil das Feld im Eigenschaften-Dialog hinzugefügt werden. Danach sthet es allen Komponenten zur Verfügung.

Mit diesen Feldern in den Eigenschaften der einzelnen Komponenten kann eine Stückliste erzeugt werden, die viele Informationen für eine Bestellung beinhaltet. Über den BOM Ausgabedialog kann das Plugin bom_csv_grouped_by_value ausgeführt werden. Wenn das in der Auswahl nicht aufgeführt ist, aknn es über Add Plugin hinzugefügt werden. Im Ordner „C:\Program Files\KiCad\bin\scripting\plugins“ befindet sich das Script.

Weiterhin sollte in der Kommandozeile das %O durch ein %O.csv ersetzt werden, wie in der Abbildung zu sehen. Dadurch wird der erzeugten Datei die Endung .csv gegeben anstatt keiner.

Nachdem die BOM generiert wurde, findet ihr die Ausgabe im Projektordner mit den Namen des Projekts und wenn die Kommandozeile angepasst wurde mit Endung .csv. Hier sind die Werte der Tabelle als Text abgespeichert und können in einer Tabellenkalkulation bearbeitet werden. Diese Liste kann auch dem Hersteller der Baugruppe übergeben werden. Eventuell müssen hier noch Komponenten gelöscht werden um mögliche Verwirrungen zu vermeiden.

Um Signale an der Flachbaugruppe gut messen zu können, werden Testpunkte in der Schaltung verwendet. Diese sind zwar Komponenten im Schaltplan, haben aber kein Bauteil, das bestückt werden muss. Daher kann in der Stückliste die Zeile entfernt werden. gleiches gilt für die Widerstände, die als DNP (Do Not Place) markiert sind. Auch einer der Steckverbinder soll nicht verlötet werden, daher kann er aus der Liste gestrichen werden.

Was jetzt übrig bleibt, ist eine vollständige Stückliste mit alternativen Bauteilen, wenn möglich, aus der jeder Hersteller ein Angebot für die Baugruppe erstellen kann.

Schmartwatch [07]: Erstes Watchface -> 7-Segment-Circuit

Auf meiner Pebble Smartwatch wird die aktuelle Uhrzeit mit dieser Watchface angezeigt. Die gefällt mir so gut, dass ich mich davon inspirieren ließ und für meine Schmartwatch eine 7-Segment Watchface entworfen habe.

Die Uhr ist im Moment nur in der Lage das Display komplett anzusteuern. Das heißt, es wird jede Minute das komplette Display neu gezeichnet. Der Prozess dauert einige Zeit und benötigt während der Aktualisierungsphase wesentlich mehr Strom als im Standby / Power-off Zustand. Um von der aktuell geringen Batterielaufzeit (einige Tage) auf eine bessere Laufzeit (einige Monate) zu kommen, sollte ein komplettes Update des Displays so selten wie möglich gemacht werden. Dazu mehr, wenn es um das partielle Update geht.

Die Watchface ist nach dem folgenden Muster aufgebaut:

  • Die RTC löst einen „Minute hat sich geändert“ Alarm aus.
  • Lösche den Framebuffer.
  • Zeichne den Hintergrund.
  • Schaue, ob sich der Monat geändert hat, wenn ja, aktualisiere den Bereich im Framebuffer.
  • Schaue, ob sich der Tag geändert hat, wenn ja, aktualisiere den Bereich im Framebuffer.
  • Schaue, ob sich die Stunde geändert hat, wenn ja, aktualisiere den Bereich im Framebuffer.
  • Schaue, ob sich der Minute geändert hat, wenn ja, aktualisiere den Bereich im Framebuffer.
  • Wecke das Display aus dem Energiesparmodus.
  • Warte, bis das Display bereit ist.
  • Schreibe den Framebuffer in das RAM des Displays und starte ein volles Update.
  • Warte, bis das Update fertig ist.
  • Setzte das Display in den Energiesparmodus.

Als Hintergrund Bild ist dieses binäre Bitmap hinterlegt. Es ist 152×152 Pixel groß und nimmt somit das komplette Display ein.
Bei dieser Größe hat das Bild 23.104 Pixel. Es benötigt also 2.888 Byte Programmspeicher und RAM. Der erste Schritt diesen Speicherbedarf zu kürzen ist, den großen Anteil weiß in der Mitte des Bildes auszulassen, das Bild also in zwei Teile zu zerlegen. Diese sind dann nur 45 Pixel hoch, benötigen also nur 855 Byte je Bild macht also eine Speicherersparnis von ca 30%.
Bei weniger komplexen Grafiken kann es sogar effizienter sein, die Grafik bei Bedarf in den Framebuffer zu zeichnen. Genau das ist nämlich die 7-Segment Anzeige. Die Segmente sind simple Grafiken, die bei Bedarf gezeichnet, oder weggelassen werden können. Wie die Abbildung zeigt, ist ein Segment nichts weiter als ein gefülltes Rechteck, an dessen Stirnseite je eine kürzere Linie gezeichnet wird. Die Grafik wurde mit dem Simulator Tool erzeugt, der den gleichen Render-Code besitzt, wie die Uhr. Allerdings sind die Pixel um das Zweifache vergrößert dargestellt. Das hilft beim Erstellen der Grafiken enorm. Da das Display ziemlich klein ist, ist ein einzelnes Pixel schwierig zu erkennen.

Eine Zahl im Sieben-Segment Display wird dann aus waagerechten oder senkrechten Elementen gezeichnet und so müss nicht jede Zahl von 0 bis 9 als Bitmap im RAM vorgehalten werden.

Wenn man den oben beschriebenen Ablauf genauer betrachtet, kann man erkennen, dass ein partielles Update des Displays relativ einfach zu bewerkstelligen sein sollte. Jedesmal wenn sich ein Wert geändert hat, wird die betroffene Fläche mit einem partiellen Update aktualisiert. Die Dokumentation des Displays ist leider nicht sehr aussagekräftig, was den Ablauf des Updates betrifft. Daher wird dieses Thema ein eigenes Kapitel bekommen.