Méthode d'attribution d'adresses uniques par carte

18

Nous concevons des cartes émetteur / récepteur pour une application de télécommande RF. Pour éviter de parler entre des paires incompatibles, nous voulons des adresses uniques par carte. L'adresse est spécifiée aux puces codeur / décodeur via 8 broches d'adresse.

Nous assemblerons probablement un petit lot (environ 25) à la main, mais les PCB seront fabriqués par des professionnels.

Quelle est votre façon préférée de créer des adresses uniques par carte dans une situation comme celle-ci? J'ai réfléchi aux commutateurs DIP, aux cavaliers et aux coupes / sauts de traces. Je penche vers la découpe de traces, mais j'aimerais entendre ce que font généralement les personnes plus expérimentées.

Steven Ourada
la source
dans quelle mesure ces éléments devraient-ils être reconfigurables? et comment robuste physiquement? est-il sûr de supposer à partir de la télécommande RF qu'il y aura un environnement de vibration hostile?
JustJeff
4
Évitez les commutateurs DIP; les gens vont les changer.
Brian Carlton
@JustJeff, ils ne devraient pas avoir à être reconfigurés sauf si l'un des contrôleurs tombe en panne et doit être remplacé, ou quelque chose comme ça. Il n'y aura pas beaucoup de vibrations.
Steven Ourada
@Brian, oui, il y a cette possibilité, mais je ne suis pas trop inquiet à ce sujet.
Steven Ourada
1
Je me rends compte que ma question était probablement trop large et trop large. J'aime les réponses et j'ai appris de bonnes choses; Merci à tous ceux qui ont participé.
Steven Ourada

Réponses:

15

Je suis surpris que personne n'ait mentionné l'EEPROM. Nous avons dû mettre des numéros uniques dans les produits plusieurs fois, et la plupart du temps, ils sont entrés dans l'EEPROM du processeur ou parfois dans des emplacements réservés de la mémoire du programme. C'est généralement une chose simple à faire en tant qu'étape finale du processus de test de production et d'étalonnage. Une fois que l'unité est jugée fonctionnelle et qu'un étalonnage a été effectué, le système de test de production envoie une commande au micro pour lui donner son numéro de série, ou utilise l'interface de programmation pour écrire directement le numéro de série à l'emplacement approprié. Parfois, les fichiers HEX qui sont programmés dans le micro sont des fichiers uniques modifiés à partir du fichier HEX du modèle principal avec le numéro de série unique pour cet appareil, avec des sommes de contrôle et éventuellement d'autres informations modifiées en conséquence.

Il y a quelques années, je travaillais avec une entreprise qui produisait des centaines de milliers de petites choses par an via un fabricant sous contrat en Chine. Nous avons envoyé deux systèmes de test complets au fabricant chinois. Le programme de test conserverait un fichier de numéros de série et nous pourrions leur envoyer de nouveaux fichiers pour configurer les unités pour de nouvelles plages de numéros de série. Tout s'est bien passé pendant un certain temps, jusqu'au jour où nous avons obtenu des unités avec des numéros de série en double. Il s'avère que les Chinois ont fait quelque chose de stupide avec l'un des systèmes pour qu'il ne fonctionne plus. Au lieu de nous dire, ce qu'ils avaient des ordres stricts à faire en cas de problème, ils ont fait une copie complète du disque du système de travail vers l'autre système. Bien sûr, cela a copié les fichiers de numéros de série et l'état actuel, donc à partir de là, les deux systèmes ont distribué la même séquence de numéros de série.

J'ai dû concevoir des systèmes de test plus récents, alors je me suis assuré que la plage de numéros de série et l'état actuel étaient conservés dans une EEPROM dans le matériel du testeur et je n'ai fourni aucune documentation à ce sujet au fabricant. Nous avons fait fabriquer une douzaine de cartes de testeur et nous avons soigneusement attribué des plages de numéros de série distinctes à chacune. Lorsque le fabricant devait être mis à jour avec un nouveau bloc de numéros de série, nous lui avons envoyé des cartes de test mises à jour. Jusqu'à présent, ce système a très bien fonctionné. Cela facilite également la production de l'unité occasionnelle ici ou sur un site de fabrication différent. Chaque endroit a son propre testeur avec sa propre plage de numéros de série, et une seule personne était le maître gardien des numéros de série et attribuerait de nouvelles plages aux testeurs.

Olin Lathrop
la source
1
Salut Olin! Brian a mentionné l'EEPROM dans sa réponse, mais n'a pas ajouté de détails. Votre histoire met le doigt sur le point faible de l'attribution par programme d'ID uniques. Il y a une chaîne de production qui implique des étapes logistiques où les choses peuvent mal tourner. Cela nous est également arrivé une fois lorsque le service de programmation de notre disti a oublié d'incrémenter le compteur. Tôt ou tard, ces choses arrivent. OMI rien ne bat le SSN (voir ma réponse): pas de programmation, pas d'administration, rien du tout :-)
stevenvh
15

Mon préféré est le Maxim DS2411 . C'est une petite pièce SOT-23 qui contient un SSN (Silicon Serial Number) unique . Pas très bon marché en soi, mais peut-être le moins cher dans l'ensemble , quand on pense aux frais généraux de logistique et aux coûts de programmation dans d'autres solutions. La solution SSN ne nécessite aucune intervention / opération manuelle en plus du pick-and-place automatisé.
Le risque d'ID en double est presque nul.
Dans un commentaire à cette réponse, mikeselecticstuff a indiqué ces EEPROM d'adresse MAC . Ce sont des EEPROM courantes avec un ID unique programmé dans une zone protégée en écriture de l'EEPROM. Ils sont moins chers que le DS2411 et disposent d'un peu de stockage pour les données utilisateur.

Ω

entrez la description de l'image ici

L'opérateur n'a qu'à déposer une goutte de soudure sur les deux moitiés pour "programmer" un bit. Moins de la moitié du temps (un point de soudure au lieu de deux et aucun composant à prélever et à placer) et aucun composant requis. Vous économisez donc deux fois. Et comme Olin le dit, avec la bonne taille et le bon écart, ils sont à la fois faciles à ponter et à débrancher.

Si votre carte a un microcontrôleur (quelle carte n'a pas de nos jours?), Vous pouvez avoir un numéro de série programmé par le service de programmation. Le coût logistique de votre côté est minimum: gardez simplement une trace de la série avec laquelle ils devraient commencer à chaque lot de programmation.
Le risque d'erreurs entraînant des ID en double est faible, selon la façon dont le service de programmation est organisé, mais je le sais.

Je connaissais les éléments suivants, mais je ne me souvenais pas de leur nom, et je pensais aussi que j'avais besoin d'une photo pour mieux l'expliquer.

shunt DIP programmable
Apparemment, cela s'appelle un shunt DIP programmable . Vous l'utilisez comme un interrupteur DIP, mais au lieu d'utiliser des interrupteurs miniatures, il utilise des connexions faibles que vous pouvez "programmer" en les cassant avec un stylo ou un petit tournevis.
Cela présente le même gros inconvénient que les solutions de soudage sélectif: l'opérateur doit décider quelles connexions rompre et lesquelles doivent rester intactes, et l'erreur humaine n'est jamais loin. Fiabilité en ce qui concerne l'unicité: faible.

Stevenvh
la source
2
Je suis d'accord sur les cavaliers de soudure si un humain doit faire chacun d'eux. J'ai essayé plusieurs choses différentes, mais j'ai trouvé deux pads en demi-cercle qui fonctionnaient le mieux. Avec la bonne taille et l'espace, ils sont à la fois faciles à ponter et à débrider. Vous pouvez en voir certains sur une carte à embedinc.com/products/ready02/qprot05_1280.jpg sous l'extrémité droite du connecteur DB-9 près du haut de la carte.
Olin Lathrop
7

Les EEPROM I2C sont bonnes et petites. Des puces de numéro de série à 1 fil existent.

Brian Carlton
la source
Hmm, je n'y avais pas beaucoup réfléchi, bien que je devrais concevoir une interface pour lire cela et présenter continuellement l'adresse à l'encodeur / décodeur, car je n'ai pas un accès rapide aux composants internes de ladite puce. Maintenant que vous le mentionnez, il semble que le vendeur puisse offrir cela, car les encodeurs / décodeurs ne sont que des microcontrôleurs avec un firmware propriétaire. Il faudra peut-être leur en parler.
Steven Ourada
3

Si l'adresse doit être définie par une personne capable de souder, vous pouvez disposer une empreinte de résistance de montage en surface pour chaque broche et souder sélectivement dans des cavaliers de 0 ohm.

B Pete
la source
Ouais, c'est une façon de procéder. Ma théorie est qu'il est un peu plus facile de couper des traces que des cavaliers de soudure, mais je peux me tromper.
Steven Ourada
5
@Steven - à première vue, les traces de découpe peuvent sembler plus simples car vous n'avez pas besoin de composants, mais la découpe est compliquée et il est coûteux de vérifier si vous avez une interruption appropriée. La soudure est moins chère, en particulier. lorsque vous n'avez pas besoin des cavaliers (voir ma réponse).
stevenvh
1

Pour l'adressage 8 bits simple, j'utilise généralement des pistes de coupe. C'est plus permanent que les cavaliers / liens de soudure, et dissuade les gens de le changer autant. Voici comment je le fais habituellement au tableau:

entrez la description de l'image ici

Chaque lien est un pad (mais c'est une limitation de mon logiciel - je préfère qu'il ne soit pas étamé) donc il n'obtient pas de masque de soudure, et seulement 5 mils (par opposition aux 10 mils pour le reste de la piste) qui facilite la coupe. 5 mils est le minimum pour le signal qu'ils transportent dans mon cas - vous pourriez utiliser plus épais. Dans mon exemple, il s'agit simplement d'utiliser un pack de résistances comme résistances de rappel. Vous pouvez évidemment remplacer cela par ce que vous voulez.

N'oubliez pas de vous assurer qu'il n'y a pas de masque de soudure dessus.

Une autre option consiste à (comme quelqu'un d'autre l'a mentionné) utiliser des pads de résistance SMT et les ponter. Mais, si vous allez simplement utiliser des résistances pour faire des tractions, pourquoi ne pas simplement laisser de côté les résistances auxquelles vous ne vous connecteriez pas en premier lieu?

Majenko
la source
4
Pour répondre à votre dernière question: parce que les coûts de placement sélectif des composants sont chers; vous devez le faire à la main. Il est moins cher de placer le composant par pointage et soudage et de souder 1 point à la main que le pointage manuel et ensuite de souder manuellement deux points. De plus, si vous placez toutes les résistances, vous pouvez utiliser un réseau de résistances (comme vous l'avez fait), ce qui est également moins cher. Coût de la mise en place d'une résistance >> coût de la résistance elle-même.
stevenvh
2
Comment la coupe est-elle plus permanente que la soudure? Je peux ressouder votre coupe aussi facilement que vous pouvez retirer ma soudure. La soudure est également plus fiable (comment savoir si elle est correctement coupée). Pour être honnête, je n'aime pas du tout l'idée de coupe, mais c'était évident, je suppose :-)
stevenvh
C'est très vrai. Je n'utilise pas encore P&P moi-même - mes volumes n'en valent pas la peine. J'aimerais construire ma propre machine P&P un jour ... Mais d'abord, je dois construire une perceuse CNC pour les trous;)
Majenko
Vous pouvez le souder aussi facilement, oui. La permanence est plus psychologique que physique.
Majenko
Si votre P&P sera capable de faire des 01005 (0,25 mm x 0,12 mm), je veux venir voir! Je ne sais pas comment ils le font!
stevenvh
1

Si vous avez un appareil à 1 fil dans votre circuit, votre carte naîtra avec un numéro de série.

J'ai une carte onduleur et comme les MOSFET ont tendance à devenir très chauds, j'ai ajouté un capteur de température DS18B20 sur le dissipateur de chaleur, détectant la température des MOSFET. Cela a également donné à mon onduleur un numéro de série, attribué au capteur de température.

Vous pouvez également utiliser quelques fusibles sur votre carte et en faire sauter quelques-uns avant de quitter l'usine pour fonctionner comme un périphérique avec numéro de série.

Maxthon Chan
la source