Methode zur Zuweisung eindeutiger Adressen pro Karte

18

Wir entwerfen Sender- / Empfängerplatinen für eine HF-Fernsteuerungsanwendung. Um zu vermeiden, dass zwischen nicht übereinstimmenden Paaren gesprochen wird, benötigen wir eindeutige Adressen pro Karte. Die Adresse wird für Codierer / Decodierer-Chips über 8 Adresspins angegeben.

Wir werden wahrscheinlich eine kleine Charge (ca. 25 Stück) von Hand zusammenbauen, aber die Leiterplatten werden professionell hergestellt.

Was ist Ihre Lieblingsmethode, um in einer solchen Situation eindeutige Adressen pro Board zu erstellen? Ich habe über DIP-Schalter, Jumper und Leiterbahnen nachgedacht. Ich neige dazu, Spuren zu hinterlassen, aber ich würde gerne hören, was erfahrene Leute normalerweise tun.

Steven Ourada
quelle
Wie umkonfigurierbar müssten diese sein? und wie körperlich robust? Ist es sicher, von einer RF-Fernbedienung anzunehmen, dass es eine feindliche Vibrationsumgebung geben wird?
JustJeff
4
Vermeiden Sie DIP-Schalter. Leute werden sie ändern.
Brian Carlton
@JustJeff, sie sollten nicht neu konfiguriert werden müssen, es sei denn, einer der Controller fällt aus und muss ersetzt werden, oder so ähnlich. Es wird nicht viel Vibration geben.
Steven Ourada
@ Brian, ja, es gibt diese Möglichkeit, aber ich mache mir keine allzu großen Sorgen.
Steven Ourada
1
Mir ist klar, dass meine Frage wahrscheinlich zu weit gefasst und zu einfühlsam war. Ich mag die Antworten und habe gute Dinge gelernt; Vielen Dank an alle, die dazu beigetragen haben.
Steven Ourada

Antworten:

15

Ich bin überrascht, dass niemand EEPROM erwähnt hat. Wir mussten einige Male eindeutige Nummern in Produkte einfügen, und die meiste Zeit sind sie in das EEPROM des Prozessors oder in manchmal reservierte Speicherplätze des Programmspeichers gelangt. Dies ist normalerweise eine einfache Sache, die als letzter Schritt des Produktionstests und des Kalibrierungsprozesses ausgeführt werden muss. Sobald das Gerät als funktionsfähig gilt und eine Kalibrierung durchgeführt wurde, sendet das Produktionstestsystem einen Befehl an das Mikro, um ihm seine Seriennummer zu geben, oder verwendet die Programmierschnittstelle, um die Seriennummer direkt an die entsprechende Stelle zu schreiben. Manchmal handelt es sich bei den HEX-Dateien, die in das Mikro programmiert werden, um eine einmalige, von der Master-Vorlage abgewandelte HEX-Datei mit der eindeutigen Seriennummer für dieses Gerät, mit entsprechend geänderten Prüfsummen und möglicherweise anderen Informationen.

Vor ein paar Jahren arbeitete ich mit einem Unternehmen zusammen, das über einen Auftragshersteller in China 100.000 kleine Dinge pro Jahr herstellte. Wir haben zwei komplette Testsysteme an den chinesischen Hersteller geschickt. Das Testprogramm würde eine Seriennummerndatei verwalten, und wir könnten ihnen neue Dateien senden, um die Einheiten für neue Seriennummernbereiche zu konfigurieren. Für eine Weile ging alles gut, bis wir eines Tages Einheiten mit doppelten Seriennummern bekamen. Es stellte sich heraus, dass die Chinesen etwas Dummes mit einem der Systeme gemacht hatten, damit es nicht mehr lief. Anstatt uns mitzuteilen, was genau zu tun ist, wenn etwas schief geht, haben sie eine vollständige Kopie der Festplatte vom Arbeitssystem auf das andere System erstellt. Dabei wurden natürlich auch die Seriennummerndateien und der aktuelle Status kopiert, sodass von nun an beide Systeme die gleiche Sequenz von Seriennummern verteilten.

Ich musste neuere Testsysteme entwerfen, also stellte ich sicher, dass der Seriennummernbereich und der aktuelle Status in einem EEPROM in der Testerhardware gespeichert waren, und lieferte dem Hersteller keine Dokumentation dazu. Wir ließen etwa ein Dutzend der Testkarten herstellen und ordneten jedem sorgfältig separate Seriennummernbereiche zu. Wenn der Hersteller mit einem neuen Block von Seriennummern aktualisiert werden musste, schickten wir ihnen aktualisierte Testkarten. Bisher hat dieses System sehr gut funktioniert. Es macht es auch einfach, die gelegentliche Einheit hier oder an einem anderen Produktionsstandort zu produzieren. Jeder Ort hat einen eigenen Tester mit einem eigenen Seriennummernbereich, und nur eine Person war der Hauptverwalter der Seriennummern und würde den Testern neue Bereiche zuweisen.

Olin Lathrop
quelle
1
Hallo Olin! Brian erwähnte EEPROM in seiner Antwort, fügte jedoch keine Details hinzu. Ihre Geschichte zeigt die Schwachstelle der programmgesteuerten Zuweisung eindeutiger IDs auf. Es gibt eine Produktionskette, die einige logistische Schritte umfasst, bei denen etwas schief gehen kann. Es passierte uns auch einmal, als der Programmierservice unserer Disti vergaß, den Zähler zu erhöhen. Früher oder später passieren diese Dinge. IMO nichts geht über die SSN (siehe meine Antwort): keine Programmierung, keine Verwaltung, keine nichts :-)
Stevenvh
15

Mein Favorit ist der Maxim DS2411 . Es ist ein kleines SOT-23-Teil, das eine eindeutige SSN (Silicon Serial Number) enthält. An sich nicht sehr billig, aber insgesamt vielleicht am billigsten , wenn man den logistischen Aufwand und die Programmierkosten in anderen Lösungen berücksichtigt. Die SSN-Lösung erfordert neben dem automatisierten Pick-and-Place keinen manuellen Eingriff.
Das Risiko doppelter IDs ist nahezu Null.
In einem Kommentar zu dieser Antwort zeigte mikeselecticstuff auf diese MAC-Adress-EEPROMs . Es handelt sich um gängige EEPROMs mit einer eindeutigen ID, die in einem schreibgeschützten Bereich des EEPROMs programmiert ist. Sie sind billiger als der DS2411 und haben noch Speicherplatz für Benutzerdaten.

Ω

Bildbeschreibung hier eingeben

Der Bediener muss lediglich einen Tropfen Lötzinn über beide Hälften legen, um ein Bit zu "programmieren". Weniger als die Hälfte der Zeit (ein Lötpunkt anstelle von zwei und keine Komponente zum Bestücken) und keine Komponenten erforderlich. Sie sparen also zweimal. Und wie Olin sagt, sind sie mit der richtigen Größe und Lücke leicht zu überbrücken und zu lösen.

Wenn Ihre Karte über einen Mikrocontroller verfügt (welche Karte derzeit nicht?), Kann vom Programmierservice eine Seriennummer darin programmiert werden. Der logistische Aufwand auf Ihrer Seite ist minimal: Verfolgen Sie bei jedem Programmierstapel, mit welcher Serie sie beginnen sollen.
Das Risiko von Fehlern, die zu doppelten IDs führen, ist gering, je nachdem, wie gut der Programmierservice organisiert ist, aber ich habe es gewusst.

Ich wusste über Folgendes Bescheid, erinnerte mich aber nicht, wie sie genannt wurden, und dachte auch, ich brauche ein Bild, um es besser zu erklären.

programmierbarer DIP-Shunt
Anscheinend spricht man von einem programmierbaren DIP-Shunt . Sie verwenden es wie einen DIP-Schalter, aber anstelle von Miniaturschaltern werden schwache Verbindungen verwendet, die Sie "programmieren" können, indem Sie sie mit einem Stift oder einem kleinen Schraubendreher trennen.
Dies hat den gleichen großen Nachteil wie die Selektivlötlösungen: Der Bediener muss entscheiden, welche Verbindungen unterbrochen werden sollen und welche intakt bleiben sollen, und dann ist menschliches Versagen nie weit entfernt. Zuverlässigkeit in Bezug auf die Einzigartigkeit: gering.

stevenvh
quelle
2
Ich stimme den Lötbrücken zu, wenn ein Mensch jede einzelne machen muss. Ich habe ein paar verschiedene Dinge ausprobiert, aber zwei Halbkreis-Pads gefunden, die am besten funktionieren. Mit der richtigen Größe und Lücke sind sie leicht zu überbrücken und zu lösen. Einige davon finden Sie auf einer Platine unter embedinc.com/products/ready02/qprot05_1280.jpg unter dem rechten Ende des DB-9-Steckverbinders oben auf der Platine.
Olin Lathrop
7

I2C-EEPROMs sind gut und klein. Chips mit 1-Draht-Seriennummer sind vorhanden.

Brian Carlton
quelle
Hmm, ich hatte nicht viel darüber nachgedacht, obwohl ich eine Schnittstelle entwerfen musste, um das zu lesen und dem Encoder / Decoder ständig die Adresse zu präsentieren, da ich keinen direkten Zugriff auf die Interna dieses Chips habe. Nun, da Sie es erwähnen, scheint der Hersteller dies anbieten zu können, da es sich bei den Encodern / Decodern nur um Mikrocontroller mit proprietärer Firmware handelt. Könnte mit ihnen darüber sprechen müssen.
Steven Ourada
3

Wenn die Adresse von einer Person mit Lötfähigkeit eingestellt werden soll, können Sie für jeden Pin eine Widerstandsfläche für die Oberflächenmontage auslegen und selektiv 0-Ohm-Jumper einlöten.

B Pete
quelle
Ja, das ist ein Weg. Meine Theorie ist, dass es etwas einfacher ist, Spuren zu schneiden als Lötbrücken, aber ich könnte mich irren.
Steven Ourada
5
@Steven - Auf den ersten Blick sehen Schnittspuren möglicherweise einfacher aus, da Sie keine Komponenten benötigen, aber das Schneiden ist chaotisch und es ist kostspielig zu prüfen, ob Sie eine ordnungsgemäße Unterbrechung haben. Löten ist billiger, insb. wenn du die Jumper nicht brauchst (siehe meine Antwort).
Stevenvh
1

Für die einfache 8-Bit-Adressierung verwende ich normalerweise Cut-Tracks. Es ist dauerhafter als Jumper / Lötverbindungen und hält die Leute davon ab, es so stark zu verändern. So mache ich es normalerweise an der Tafel:

Bildbeschreibung hier eingeben

Jeder Link ist ein Pad (aber das ist eine Einschränkung meiner Software - ich würde es vorziehen, wenn es nicht verzinnt ist), sodass es keine Lötmaske bekommt und nur 5 mils (im Gegensatz zu den 10 mils für den Rest des Tracks) macht es leichter zu schneiden. 5 mils ist das Minimum für das Signal, das sie in meinem Fall tragen - Sie könnten dicker verwenden. In meinem Beispiel wird nur ein Widerstandspaket als Pull-up-Widerstände verwendet. Sie können dies natürlich durch das ersetzen, was Sie wollen.

Denken Sie daran, darauf zu achten, dass sich keine Lötmaske darüber befindet.

Eine andere Möglichkeit besteht darin, (wie bereits erwähnt) SMT-Widerstandspads zu verwenden und diese zu überbrücken. Aber wenn Sie nur zu Widerständen gehen, um als Klimmzüge zu fungieren, warum lassen Sie dann nicht einfach die Widerstände weg, mit denen Sie sich überhaupt nicht verbinden würden?

Majenko
quelle
4
Zur Beantwortung Ihrer letzten Frage: Weil die Kosten für die selektive Bestückung von Bauteilen teuer sind. du musst es von hand machen. Es ist billiger, das Bauteil per Bestückung zu platzieren und 1 Punkt von Hand zu löten, als per Bestückung manuell und dann manuell zwei Punkte zu löten. Wenn Sie alle Widerstände platzieren, können Sie auch ein Widerstandsarray verwenden (genau wie Sie), was auch billiger ist. Platzierungskosten für 1 Widerstand >> Kosten für den Widerstand selbst.
Stevenvh
2
Wie ist Schneiden dauerhafter als Löten? Ich kann Ihren Schnitt so einfach auflösen, wie Sie mein Lot entfernen können. Das Löten ist auch zuverlässiger (woher wissen Sie, dass es richtig geschnitten ist). Um ehrlich zu sein, mag ich die Schnittidee überhaupt nicht, aber das war offensichtlich,
nehme
Das ist sehr wahr. Ich selbst benutze P & P noch nicht - meine Bände machen es nicht wert. Ich möchte zwar eines Tages meine eigene P & P-Maschine bauen ... Aber zuerst muss ich eine CNC-Bohrmaschine für die Löcher bauen;)
Majenko
Sie können es so einfach löten, ja. Die Beständigkeit ist eher psychisch als physisch.
Majenko
Wenn Ihr P & P in der Lage sein wird, 01005s (0,25 mm x 0,12 mm) zu machen, möchte ich kommen und einen Blick darauf werfen! Ich habe keine Ahnung, wie sie das machen!
Stevenvh
1

Wenn Sie ein 1-Wire-Gerät in Ihrer Schaltung haben, wird Ihre Karte mit einer Seriennummer geboren.

Ich habe eine Wechselrichterplatine und da die MOSFETs sehr warm werden, habe ich einen DS18B20-Temperatursensor am Kühlkörper angebracht, der die Temperatur der MOSFETs misst. Dadurch erhielt mein Wechselrichter auch eine Seriennummer, die dem Temperatursensor zugewiesen wurde.

Sie können auch ein paar Sicherungen auf Ihrer Platine verwenden und einige davon durchbrennen lassen, bevor Sie das Werk verlassen, um als Seriennummerngerät zu fungieren.

Maxthon Chan
quelle