Ich habe eine Leiterplatte für die Produktion in kleinem Maßstab entworfen. Derzeit löte ich sie von Hand in Chargen von jeweils 20 Stück. Diese Platine verwendet einen ATMEGA168-Mikrocontroller, den ich vor dem Löten auf die Platine programmiere - diese Methode funktioniert im Moment gut für mich.
Ich möchte eine Serie von 200 Boards für mich herstellen und montieren lassen, da das von mir entworfene Produkt sehr beliebt zu sein scheint. Wäre es besser, entweder einen ICSP-Header auf die Platine zu setzen oder die ICs selbst weiter vorzuprogrammieren? Eine Neuprogrammierung der Platine nach Herstellung oder Montage ist keine beabsichtigte oder erforderliche Funktion.
Ich bin mir nicht sicher, wie dies in einer größeren Produktionsumgebung durchgeführt wird. Das Hinzufügen eines ICSP-Headers würde die Herstellungskosten geringfügig erhöhen. Ist die Vorprogrammierung eine Standardpraxis?
Wenn Sie Platz für einen Header haben, ist dies wahrscheinlich die beste Option. Die leicht versetzten Stifte, die Majenko empfiehlt, sind eine gute Möglichkeit, einen Anschluss an Ort und Stelle zu halten, ohne die Komplexität zu erhöhen.
Hier ist jedoch ein alternativer Ansatz für Boards, bei denen Sie keinen Platz für einen Header haben oder der Standard-Header nicht alle Ihre Programmier- / Setup- / Board-Testaufgaben erfüllt.
Bei einer kleinen Formfaktor-Leiterplatte wie hier (33 mm Durchmesser)
Sie können es mit Testpunkten auslegen (auf der Rückseite beschriftet).
und erstellen Sie eine Testvorrichtung dafür (mit Pogo Pins )
Dies erfordert einige Bearbeitungsfähigkeiten und mindestens einen Säulenbohrer (da die Pogo-Stifte genau vertikal sein müssen). Wenn Sie jedoch bereit sind, eine Prototyp-Leiterplatte zu riskieren, können Sie sie auf eine Materialbahn klemmen und durch die Testpunktlöcher "punktieren", um die Pogo-Stifte genau an der richtigen Stelle zu platzieren. (Ich bekomme 10 Leiterplatten für einen lächerlich niedrigen Preis von Itead, daher ist es keine große Sache, eine zu verlieren).
Mit einer Drehmaschine und einer Mühle ist es ein Kinderspiel, die Säulen und Klemmen so zu platzieren, dass die Leiterplatte genau an der richtigen Stelle positioniert wird, aber mit einfacheren Werkzeugen ist dies nicht allzu schwierig.
Dann montieren Sie einfach jede Platine, programmieren und testen sie. Der lose Stecker führt normalerweise zu den Header-Pins eines TI-Launchpads, das zum Programmieren dieser MPU (TI MSP430) über die SBW-Schnittstelle verwendet wird. Das gleiche Prinzip würde jedoch für JTAG oder andere Schnittstellen gelten. (Das braune Kabel oben ist ein Koaxialkabel, das ein Kalibrierungssignal zu einem Frequenzzähler führt.)
Die polierte Mahagonibasis ist optional; Ich bevorzuge zufällig einen Steampunk-Stil für meine Testgeräte.
quelle
Ich füge immer Platz für einen ICSP-Header hinzu, auch wenn dieser nicht ausgefüllt ist. Ich habe im Moment drei Möglichkeiten, es je nach Situation zu tun.
Eines meiner Designs hat einen sehr feinen Header, für den ich einen Adapter gebaut habe (0,6 mm Massivdraht ist perfekt dafür):
Ich benutze diesen Anschluss, wenn der Platz knapp ist. (Tut mir leid, es ist verschwommen, die Kamera meines Telefons ist naff).
Die zweite Anordnung, die ich häufig verwende, besteht darin, den ICSP in einen anderen Header zu integrieren. Wenn die ICSP-Pins auch als GPIO-Pins verwendet werden können und Sie sie mit einer abnehmbaren Verbindung verwenden können, ist es einfach genug, andere ICSP-Verbindungen, die Sie möglicherweise benötigen (z. B. MCLR), zu minimalen Kosten einzuschließen. Dann stecken Sie Ihren Programmierer einfach mit einem Adapter in diesen Header, der einfach zu erstellen sein sollte.
Die dritte Möglichkeit besteht darin, einen "gestaffelten" oder "versetzten" Header-Footprint für ICSP bereitzustellen. Ich verwende dies hauptsächlich auf Entwicklungsplatinen, bei denen der Endbenutzer möglicherweise ICSP ausführen möchte, seine Platine jedoch nicht durch dauerhaftes Einlöten eines Headers ruinieren möchte. Dieser Platzbedarf ermöglicht es einem Standard-Header, ohne Lötmittel zu passen und einen guten festen Kontakt herzustellen:
Wenn Sie anfangen, mit viel größeren Mengen umzugehen, kann es sicherlich kostengünstiger sein, den Chiphersteller zu veranlassen, die Chips mit Ihrer Firmware für Sie vorzuprogrammieren. Ich denke, alle großen Hersteller bieten diese Möglichkeit.
quelle
Wenn man einen Prozessor verwendet, der in der Schaltung neu programmiert werden kann, würde ich dringend empfehlen, die Platinen so zu gestalten, dass sie verwendet werden können, auch wenn für die tatsächliche Verwendung der Funktion ein Gerät für diesen speziellen Zweck gebaut werden muss und dies nicht der Fall ist Ich habe nicht vor, einen bauen zu müssen. Wenn nach der Herstellung einer großen Anzahl von Karten ein Firmware-Problem festgestellt wird, ist der Bau einer Vorrichtung, mit der diese Karten neu programmiert werden können, möglicherweise viel billiger als die Nacharbeit oder der Umbau.
In einigen Fällen kann ein guter Ansatz darin bestehen, das E / A-Layout einer Karte so auszuwählen, dass die für die Neuprogrammierung im Schaltkreis erforderlichen Steuerungsstifte für Zwecke verwendet werden, die "natürlich" dazu führen, dass sie leicht zugänglichen Kontaktpunkten ausgesetzt werden. Beispielsweise können bei einer Platine, die für die Verwendung mit Metallkuppelkontakten ausgelegt ist, die Kontakte selbst mit den Programmierstiften im Schaltkreis verdrahtet sein. Ein solches Design würde keinen Platz im Layout für einen Programmieranschluss erfordern, aber - insbesondere wenn der Batteriekontakt auch allgemein dimensioniert wäre - lassen Sie einen Programmieranschluss mit einfachen federbelasteten Kontakten auskommen.
Beachten Sie, dass es nicht unbedingt wichtig ist, ob der Code gut getestet zu sein scheint. Änderungen von einer Charge Chips zur nächsten können immer noch unerwartete Probleme verursachen. Zum Beispiel habe ich ein Produkt entworfen, das sich unter Prozessorsteuerung ausschalten sollte, indem der Prozessorausgang an einem Pin "hoch" war, wenn er "an" sein sollte. Bei der ersten Charge von 10.000 Einheiten funktionierte alles einwandfrei, aber bei einer späteren Charge begann der Prozessor eine Fehlfunktion, wenn seine Spannung etwa 2 Volt erreichte, und konnte diesen Pin wieder auf "hoch" schalten. Der 2-Volt-Ausgang "high" reichte kaum aus, um das Gerät wieder einzuschalten. Da der Prozessor so spezifiziert wurde, dass er bis zu IIRC 1,6 Volt im Ruhemodus bleibt, Das Problem konnte behoben werden, indem die Geräte so umprogrammiert wurden, dass sie beim Aktivieren ihres Abschaltzustands in den Ruhemodus wechseln. Wäre eine solche Neuprogrammierung nicht möglich gewesen, wäre eine viel teurere Nacharbeit (oder Verschrottung und Umbau) erforderlich gewesen.
quelle