Bunnie Huang: A l’usine, Partie 2 sur 4 : Concevoir pour l’industrialisation

Ce qui suit est donc la traduction de l’article de Bunnie Huang: The Factory Floor, Part 2 of 4: On Design for Manufacturing. C’est donc lui qui s’exprime à travers le “je” utilisé dans l’article suivant. N’étant pas un traducteur professionnel, je suis ouvert à toute proposition d’amélioration que vous me soumettriez dans les commentaires.

N’hésitez pas à consulter les autres parties de cette série:

  1. Le Devis (ou comment faire une nomenclature)
  2. Concevoir pour l’industrialisation
  3. La Conception Industrielle pour les Startups
  4. Choisir (et conserver) un partenaire

Akiba a posté des messages pour présenter les troisième et quatrième jours de mon cours “visite geek” pour les étudiants du MIT Media Lab, qui se déroule à Shenzhen, en Chine. Leur site a eu quelques soucis avec le trafic intense qui en a résulté, ce qui nous fait réfléchir à un changement de serveur. Malheureusement, se trouver à l’intérieur du grand pare-feu de Chine rend difficile l’administration de tout ce qui se trouve dans le cloud.

En attendant, voici le deuxième round de ma série en 4 parties nommée “A l’Usine”.

Optimisation des processus: concevoir pour l’industrialisation et les bancs de test

Il est temps de se pencher sur le sujet des rendements. C’est un sujet ennuyeux pour beaucoup d’ingénieurs, mais pour un entrepreneur, le succès ou l’échec sera partiellement déterminé par l’obtention d’un rendement suffisant. A l’inverse des logiciels, chaque copie d’un bien physique aura quelques petites imperfections. Parfois, ces imperfections vont s’annuler entre elles, alors que das d’autres cas, ces imperfections vont s’accumuler au mauvais endroit, ce qui dégradera les performances. Quand les volumes de production augmentent, ces cas exceptionnels commencent à s’amonceler, et une certaine proportion des produits fabriqués se révèle invendable. Si la conception est robuste, la fraction invendable sera si petite que les tests fonctionnels pourront être simplifiés, ce qui réduira encore les coûts. A l’inverse, des conceptions sensibles aux tolérances des composants nécessiteront des tests bien plus poussés, et le rendement de la production sera plus faible, ce qui donnera plus de pertes. Reprendre manuellement les unités défectueuses entraîne des coûts supplémentaires en main d’œuvre et en composants, ce qui finit par éroder sérieusement les marges commerciales.

En conséquence, un des challenges les plus importants à résoudre quand on passe de l’établi de l’ingénieur à la production de masse, est la re-conception en vue d’améliorer la robustesse face aux tolérances de fabrication. C’est ce qu’on appelle la “conception pour l’industrialisation”,ou CPI (en anglais DFM de “design for manufacturing”).

Les tolérances à prendre en compte pendant le processus de conception incluent par exemple:

  • Les tolérances sur les composants passifs (par exemple, les résistances sont souvent +/- 5%, les valeurs des condensateurs sont souvent à +80/-20%, etc)
    Certains paramètres spécifiés peuvent varier dans de grandes proportions (comme le bêta (hFE) d’un transistor bipolaire, la tension de transition (Vt) pour un FET, ou la tension directe (Vf) pour une LED). Lisez toujours la datasheet et gardez un œil sur les paramètres qui montrent de grandes possibilités de variations. Par exemple, le bêta d’un transistor bipolaire 2N3904 peut varier de 40 à 300, et la tension directe d’une super LED Kingbright peut varier de 2 à 2,5 volts.
  • Les coefficients de sécurité pour les tensions – c’est particulièrement important pour les condensateurs et les réseaux d’entrée. De manière générale, j’essaye de spécifier des composants avec une tolérance égale à deux fois la tension nominale d’utilisation, je vais par exemple utiliser des condensateurs supportant 10V pour les lignes d’alim à 5V, et des capas 6,3V pour les rails d’alim à 3,3V. D’autre part, la capacité de beaucoup de condensateurs céramiques diminue (derate) quand la tension à leur bornes augmente. Cela signifie que lorsqu’un condensateur céramique est utilisé dans des conditions proches de sa tension nominale, sa valeur s’approche du minimum toléré. De manière similaire, les réseaux d’entrée – tout les trucs dans lesquels l’utilisateur peut brancher quelque chose – sont victimes de punitions électrostatiques terribles (CEM) et autres abus transitoires, ce qui signifie que des mesures spéciales doivent leur être appliquées pour atteindre la robustesse désirée.
  • Les variations de largeur des pistes de circuits imprimés, et d’empilement des couches de circuits – cela a une influence sur les systèmes qui requièrent un contrôle de l’impédance, ou qui jouent avec des courants forts.
  • Les tolérances mécaniques : un boîtier conçu sans tolérances obligera l’usine à insérer le circuit en force dans la moitié des cas, selon que le circuit sera un peu trop grand ou que la boîte sera un peu trop petite. Ceci peut produire des dommages mécaniques au circuit ou au boîtier.
  • Défauts cosmétiques : Tout produit manufacturé sera sujet à de petits défauts, comme des grains de poussière coincés dans le plastique, des éraflures, des marques de retrait de moule, et des abrasions. Il est important de définir à l’avance des critères d’acceptation pour ce genre de défauts, par exemple, pas plus de deux défauts ponctuels de plus de 0,2mm par produit, pas de rayure plus longue que 0,3mm, etc. de manière à ce qu’un processus puisse être mis en place pour éviter ces défauts; c’est tout de même moins cher que de construire bêtement des produits, puis de jeter ceux qui ne respectent pas un ensemble de critères de qualités imposés plus tard dans le jeu. Bien sûr rien n’est gratuit, donc pour éviter les surprises, évitez les finitions ultra-glossy et envisagez l’utilisation de finitions mates et/ou texturées, qui cachent naturellement les défauts.

La CPI pour améliorer le résultat net

Retournons à notre étude de cas de clignotant à LED de la partie 1 de la série. Disons que dans le prototype, il y a 3 LEDs en parallèle, chacune équipée de sa résistance de limitation. Comme remarqué au dessus, Vf, la tension de polarisation directe de la diode pour une luminosité donnée, peut varier d’environ 20% selon le composant; dans ce cas, entre 2,0 et 2,5V. Une limitation à base de résistances ne fera que renforcer ces variations. Ceci est dû au fait que dans un circuit conçu pour être efficace, la chute de tension sur la résistance de limitation est faible, ce qui rend le paramètre de contrôle du courant – la tension de chute sur la résistance – plus sensible aux variations de la tension directe de la diode, Vf. Et puisque la luminosité d’une LED dépend du courant qui la traverse, et non de la tension à ses bornes, l’utilisation d’une résistance pour limiter la luminosité d’une LED peut produire des incohérences visibles dans l’uniformité de l’éclairage.

Le schéma ci-dessus décrit comment une variation de 20% de Vf produit une variation de 40% de la tension aux bornes de la résistance de limitation pour une tension d’alimentation constante de 3,3V, qui va à son tour provoquer une variation de 40% du courant qui traverse la LED, et donc une variation de 40% de la luminosité perçue.

Une telle conception fonctionnera la plupart du temps, et le problème ne se verra en réalité que si une LED à Vf élevée est associée à une LED à Vf plus basse. Pour les deux ou trois protos préparés sur l’établi, tout s’était bien passé. Pourtant, une part significative des produits fabriqués aura des problèmes d’uniformité d’éclairage tellement évidents qu’il n’y aura pas d’autre choix que de refuser ces produits. Sachant que la plupart des grosses entreprises électroniques survivent sur des marges assez étroites, perdre ne serait-ce que 10% des produits finis à cause de défauts est une perspective assez préoccupante.

Une des possibilités est de reprendre (manuellement) le composant incriminé. Une usine peut identifier les LEDs trop faibles ou trop brillantes dans un ensemble, et les remplacer par de nouvelles LEDs qui auront plus de chances de convenir. Mais ces reprises coûtent cher, et entraînent des factures inattendues et déplaisantes, surtout au dernier moment d’une campagne de prod. Les concepteurs naïfs pourront blâmer l’usine pour sa mauvaise qualité et argumenter pour savoir qui doit payer les frais supplémentaires, mais il est bien plus efficace d’éviter ces problèmes de manière proactive en soumettant chaque conception à un test de CPI, puis de lancer une petite production initiale pour vérifier qu’aucun problème sérieux impactant le rendement n’apparaît avant de lancer la fabrication d’un lot entier d’unités.

Le coût des conséquences du rendement [cost of yield fallout] mesure combien il faut dépenser en plus pour compenser les variations normales des caractéristiques des composants. Par exemple, un produit dont le coût de revient est de 10 dollars et dont le rendement est de 80% a un coût réel par unité vendable de 12,5 dollars (cela peut être calculé en divisant le coût de revient total par le nombre d’unités produites qui sont fonctionnelles). En conséquence, il revient au même d’augmenter le coût de revient de 2,5 dollars pour atteindre un rendement de 100%; et dépenser 1 dollar pour passer le rendement à 99% améliorera le résultat net de 1,38 dollars.

Pour le cas du flash à LEDs, ce dollar pourrait être dépensé sur un régulateur réhausseur (boost) avec régulation du courant, ce qui permettrait de mettre les LEDs en série et non en parallèle, garantirait que chaque LED reçoit un courant identique, et ainsi améliorerait grandement l’uniformité de l’éclairage. Alors que régulateur boost coûte plus cher que les quelques centimes requis par les résistances de limitation, l’amélioration du rendement que ce régulateur apporterait ferait mieux que rembourser les coûts supplémentaires en composants.

Tester pour s’assurer de la réussite

Une autre responsabilité du concepteur qui est souvent négligée est celle du plan de test. Une usine peut détecter les problèmes, mais encore faut il le lui demander. En conséquence, chaque fonctionnalité d’un produit doit être testée individuellement, même si elle est triviale. Par exemple, sur un Chumby, tout ce qui interagit avec l’utilisateur est associé à un test de production explicite: le LCD, l’écran tactile, le son, le micro, tous les ports d’expansion (USB, audio), la batterie, les boutons, les potentiomètres, etc. etc. Même les plus simples boutons poussoirs ont été testés. Même s’il est tentant de ne pas tester des composants aussi simples, je vous garantis que si la vérification d’une seule fonctionnalité est négligée, alors cette fonctionnalité sera une cause de retours.

Et non, ne sous-traitez pas le plan de test à l’usine, même s’ils offrent ce service. D’abord, l’usine ne comprend pas souvent les objectifs que vous vouliez atteindre pendant la conception, donc leurs programmes de test seront soit inefficaces, soit ils testeront un comportement totalement à coté de la plaque. De plus, les usines sont incitées à faire réussir le plus de tests possibles, aussi vite que possible, donc les tests développés par ces usines ont tendance à être primitifs et inadéquats.

De manière générale, pour chaque produit que vous créez, vous allez en réalité créer deux produits liés: un pour l’utilisateur final, et un module de test pour l’usine. De toutes les manières, le banc de test doit être aussi facile à utiliser que le produit lui même – après tout, les tests ne sont pas exécutés par des ingénieurs en électronique. Par contre, le banc de test sera bien plus rapide et facile à construire si des fonctionnalités de test sont incluses dans la conception du produit final.

Voici quelques conseils pour concevoir un plan de tests:

  • Obligez vous à viser une couverture de 100%. Il est souvent facile de négliger les fonctions simples ou secondaires – des LEDs d’état, un capteur de tension interne, etc. Pour faire une bonne check-list, regardez votre produit, et listez toutes les possibilités d’interactions que le produit présente au client. Demandez vous si le plan de test vérifie absolument toutes les surfaces d’interaction possibles avec l’appareil, même si c’est un test très simple : toutes les LEDs s’allument-elles correctement? une pression sur chaque bouton a-t-elle été effectuée? chaque capteur a-til été stimulé? chaque circuit de mémoire a-t-il été activé? Si le produit contient un micro-contrôleur, il est aussi utile de vérifier quels drivers sont chargés pour faire une vérification croisée avec la liste des tests. Enfin, faites une revue du schéma, et faites la liste de tous les signaux internes principaux qu’il est utile de vérifier pendant la procédure de test.
  • Minimisez les efforts de mise en place du test. En d’autres termes, vous devez optimiser le temps requis pour placer chaque unité sur le banc de test. On utilise souvent des supports dédiés munis de pogo-pins ou de connecteurs pré-alignés. Si un processus de test demande à l’opérateur de vérifier manuellement une douzaine de points, ou d’insérer une douzaine de connecteurs, cela prend du temps, et c’est très sensible aux erreurs de manipulation. La plupart des usines chinoises peuvent vous aider à concevoir un support de test pour un coût fixe, mais la conception de ce support est grandement facilitée, et il est plus efficace, si les points de test ont été prévus à l’avance.
  • Automatisez au maximum l’exécution des tests, selon un processus linéaire. De manière idéale, l’exécution d’un test sur un produit se fait par un simple appui de bouton, et produit un simple résultat OK/KO. En pratique, il y aura toujours des points bloquants qui demanderont l’intervention de l’opérateur. Un exemple d’intervention trop compliquée pourrait être le besoin, pour chaque produit, d’entrer le SSID d’un réseau wi-fi ou d’en choisir un dans une liste. Au lieu de cela, déterminez le SSID cible une fois pour toutes et stockez le en dur dans le script de test, de manière à ce que le test de connexion wi-fi soit automatique.
  • Utilisez des icônes et des couleurs pour communiquer avec les opérateurs, pas du texte. Il n’est pas garanti que tous les testeurs sachent parler une langue donnée.
  • Utilisez des journaux de traçabilité. Enregistrez les résultats des tests, et associez les de manière fiable avec le numéro de série de chaque appareil, en incorporant un lecteur de code-barres au banc de test. Une alternative est de créer des “coupons de test” ou un journal embarqué dans l’appareil qui puisse prouver que les tests y ont été exécutés avec succès. Cela peut donner un indice sur ce qui s’est mal passé dans un produit fautif retourné par un client. Cela permet aussi de s’assurer rapidement que les tests ont été exécutés sur tous les produits. Après 8 heures de travail, un opérateur a plus de chances de faire des erreurs, comme par exemple mettre un produit défectueux dans la caisse des produits fonctionnels. Une méthode rapide pour vérifier que tous les produits expédiés ont été testés avec succès peut s’avérer très utile pour identifier et isoler ce genre de problème.
  • Mettez en place un mécanisme pratique de mise à jour. Comme tous les programmes, les programmes de test ont des bugs, et les tests ont aussi besoin d’évoluer à chaque fois que le produit est patché ou mis à jour. Il est donc impératif d’avoir un mécanisme de mise à jour et de correction des programmes de test sans avoir à se rendre en personne à l’usine à chaque fois. Beaucoup de mes bancs de test ont un mode dans lequel ils peuvent “appeler à la maison” via un VPN, via lequel je peux me connecter à eux par SSH pour corriger les bugs. Mêmes mes bancs les plus simples sont basés sur un PC portable sous Linux.

Ces conseils sont faciles à implémenter si le produit a été conçu en pensant à sa testabilité. Comme la plupart des produits que je fabrique exécutent Linux, je mets à profit le processeur à l’intérieur du produit lui même pour exécuter la majorité des tests et gérer l’interface utilisateur des tests. Pour les produits qui n’ont pas ces surfaces d’interaction avec l’utilisateur, j’utilise comme interface de test un téléphone Androïd ou un portable connecté à l’appareil par wifi ou port série.

Un test n’est pas une validation

Les tests de production sont censés vérifier l’absence d’erreurs d’assemblage, et non les variations naturelles des propriétés des composants, ni les problèmes de conception. Si un de vos tests élimine des produits à cause de variations normales dans les spécifications des composants, c’est à vous d’utiliser de meilleurs composants, ou de revoir votre conception.

Pour des produits de consommation courante, il n’y a pas besoin de lancer un test exhaustif de la RAM de cinq minutes sur chaque appareil; en théorie, un produit devrait être conçu de manière à ce que la RAM fasse son boulot dès que tout est soudé correctement. Un test rapide pour vérifier qu’il n’y a pas de lignes d’adresse en court-circuit ou mal connectées est en réalité suffisant. Les fournisseurs de composants de marques reconnues ont des taux de défaut extrêmement bas, nous n’avons donc pas besoin de valider leur conception du silicium; en revanche, nous cherchons à valider la qualité des soudures, des connecteurs, ainsi qu’à détecter l’absence ou l’inversion de composants (notez bien que si vous achetez des composants clonés, dégriffés, repackagés, ou partiellement testés pour réduire les coûts, il est recommandé de lancer un mini programme de validation juste pour ces composants).

Pour illustrer ce point, comparons le test et la validation d’un interrupteur.

Un test de production pour un interrupteur intégré dans un produit peut être aussi simple que de demander à l’opérateur d’utiliser l’interrupteur une paire de fois pour vérifier qu’il se comporte bien, et vérifier que le contact électrique est correct grâce à un simple indicateur binaire (ok/ko).

Un test de validation pour un interrupteur pourrait se réaliser en extrayant quelques pièces de la ligne de production, en mesurant leur résistance de contact avec un multimètre à cinq chiffres, en les soumettant à une humidité de 100% à une température de 40°C pendant toute une nuit, puis en les connectant à un banc de test qui les manipulerait 10000 fois. Pour finir, les interrupteurs seraient re-mesurés avec le même multimètre afin de détecter toute dégradation de la résistance de contact.

Ce niveau de conformité ne peut clairement pas être vérifié sur chaque produit fabriqué. A la place, on utilise un programme de validation pour vérifier que les performances de l’interrupteur sont garanties pour la durée prévue de vie du produit, et le test de production vérifie juste que l’interrupteur est bien assemblé. Remarquez qu’il est recommandé de relancer des tests de validation sur quelques unités prises au hasard dans chaque lot de 1000 pièces produites; il existe des formules et des tables pour calculer combien il faut prélever d’échantillons pour garantir un certain niveau de qualité.

Alors quel niveau de test doit on considérer comme suffisant? On peut se baser sur des arguments économiques. Chaque test supplémentaire implique des coûts fixes d’équipement, de conception, et un coût variable lié au temps de test. En conséquence, l’accroissement de l’activité de test s’accompagne d’une réduction des bénéfices additionnels: A un certain point, il est moins cher de gérer un retour de produit que de concevoir des tests supplémentaires. Naturellement, la barre doit être relevée pour le matériel médical ou industriel, car les responsabilités liées à un équipement défectueux sont bien plus contraignantes dans ce cas. De la même manière, un produit publicitaire destiné à être distribué gratuitement peut se contenter d’un niveau de test bien plus réduit.

Le mot de la fin sera donc: ne négligez pas les avantages apportés par une application sérieuse des principes de conception électronique aux bancs de tests. Une fois, j’ai eu un problème de soudures sèches aléatoires sur un connecteur pour un câble ruban à 50 fils. J’ai demandé à l’usine de mettre en place un test de validation de ces connecteurs. La solution qu’ils m’ont proposé consistait à mettre une LED au bout de chaque patte du connecteur, d’appliquer une tension de l’autre coté, et de contrôler l’allumage des LEDs à l’autre bout. Le souci, c’était que les soudures sèches n’étaient pas seulement des contacts ouverts ou fermés; certaines présentaient une résistance intermédiaire élevée. Le courant qui circulait était suffisant pour allumer les LEDs, mais la résistivité empêchait quand même le produit final de fonctionner. Après avoir constaté le problème, l’usine a proposé d’utiliser 50 multimètres pour mesurer la résistance de chaque patte. Cette proposition, en plus d’être coûteuse, était sensible aux erreurs de manipulation. Ma réponse a été de mettre toutes les connexions de l’adaptateur en série, et de vérifier la résistance de l’ensemble grâce à une seule mesure (au lieu de vérifier subjectivement la luminosité de 50 LEDs). Ainsi, pour un test aussi simple qu’une vérification de soudures sèches sur un connecteur, on voit que différentes implémentations sont possibles, bonnes ou mauvaises. Les composants plus complexes ayant besoin de tests encore plus subtils, il y a un vrai avantage à appliquer sérieusement ses connaissances en conception électronique, afin d’inventer des ensembles de test pertinents, mais toujours robustes.

Consultez également les autres parties de cette série:

  1. Le Devis (ou comment faire une nomenclature)
  2. Concevoir pour l’industrialisation
  3. La Conception Industrielle pour les Startups
  4. Choisir (et conserver) un partenaire