Cette réalisation est une amélioration du convertisseur USB/UPDI v1 que je vous avais déjà présenté, il y a peu. Cette 2ème version (v2, donc) admet 2 changements essentiels (minimes, mais qui apportent énormément !) : un détrompeur rudimentaire au niveau du bornier de sortie, pour éviter les inversions de polarité, et d’une possibilité d’alimentation externe, issue de l’ATtiny à programmer, plutôt que d’utiliser celle du port USB (ce qui permet des programmations in situ, sans conflit de tension/courant entre ordi et ATtiny).
Bien évidemment, pour que ce soit plus clair pour vous, je vous invite à lire la v1 de ce projet avant de lire celui-ci. Car qui plus est, pour éviter les doublons, je n’ai pas tout redétaillé comme la première fois ! Ainsi, on pourra se focaliser sur la partie technique/électronique, plutôt que le reste ! Ça vous dit ? Alors par ici la suite !
Remarque : pour rappel, ce type de convertisseur USB/UPDI est fait pour programmer les microcontrôleurs ATtiny récents, pourvus d’une entrée UPDI (ceux de la série 0 1 ou 2, par exemple, comme les ATtiny412, ATtiny824, ATtiny3226, etc). Par contre, il ne pourra donc pas être utilisé sur des microcontrôleurs plus anciens, dépourvus de ligne UPDI, tels que les ATtiny13, ATtiny85, ou autre.
Différences avec la première version (v1)
Comme évoqué en intro, il n’y a que peu de changements par rapport à la v1, mais ceux-ci font toute la différence, si je puis dire ! Les voici.
Nota : si tout ce qui suit n’est pas clair pour vous, ne vous inquiétez pas ! Dans ce cas, n’hésitez pas à faire un saut directement sur le schéma électronique complet, et à revenir ici ensuite, pour mieux comprendre de quoi je parle (surtout si vous n’avez pas vu mon article sur la première version de ce convertisseur USB/UPDI !)
Premier changement : mise en place d’un connecteur différent, pour éviter tout risque d’inversion de polarité
Dans la première version de ce convertisseur USB/UPDI, j’avais mis un connecteur de sortie à 3 broches (Vout, Updi, et GND). C’était certes très pratique, mais souffrait d’un problème de taille : il n’y avait pas de détrompeur au niveau du connecteur ! Du coup, si on est tête en l’air, on pourrait très bien tout cramer ! Aussi, je me suis dit qu’il serait bien d’imaginer une solution simple et sécurisée, pour éviter tout souci électrique à ce niveau.
Eh bien… j’ai fait au plus simple ! Au final, j’ai simplement remplacé ce connecteur à 3 broches par un connecteur 3 broches à double rangée, et n’ai branché les signaux que d’un côté. Ainsi, si jamais on branche ce convertisseur à l’envers, rien ne fonctionnera, tout simplement (et bien sûr, sans provoquer le moindre dommage !).
Voici une image qui sera, sans doute, plus parlante que ce que je viens de vous expliquer !

Pour info, ce connecteur de sortie est rétro-compatible avec la v1. Du coup, vous pourrez brancher ce convertisseur V2 sur une carte ATtiny prévue pour la V1, et vice-versa. Plus généralement :
- vous pouvez embrocher ce programmateur V2 à 2×3 broches dans un header femelle V1 à 1×3 broches (du moment où il y a de la place autour, et que le « bon » sens de branchement est respecté, bien entendu)
- et vous pouvez embrocher l’ancienne version du programmateur (V1) à 1×3 broches dans un header femelle V2 à 2×3 broches (là aussi, du moment où il y a un petit espace de libre autour, et que vous respectez les branchements, y’a pas de souci !)
Remarque : certains se demanderont pourquoi j’utilise ici un connecteur de type « pin header » alors que je pourrais utiliser un connecteur avec détrompeur, type JST ou autre. Eh bien la raison est simple : les « pins headers » forcent moins que les connecteurs à détrompeur, ce qui soulage les PCB lors des insertions/retraits répétés. Bien sûr, c’est un choix personnel ; donc rien ne vous empêche de réaliser un montage inspiré de celui-ci, avec un connecteur qui vous conviendra mieux 😉
Second changement : mise en place d’un interrupteur à glissière, pour choisir entre une alimentation USB ou une alimentation extérieure
Le deuxième changement que j’ai souhaité apporté correspond à un besoin pratique. En effet, dans la v1, c’était toujours le convertisseur USB/UPDI qui fournissait du +5V ou +3,3V à l’ATtiny qu’il devait programmer (du coup, il était impératif qu’il n’y ait aucune tension côté ATtiny, pour éviter tout conflit).
Or, en pratique, il y a des cas où la consommation côté ATtiny peut être trop élevée, car le convertisseur n’est pas prévu pour délivrer un fort courant. Du coup, il fallait ajouter la possibilité que ce soit l’ATtiny qui fournisse le +5V ou +3,3V à ce convertisseur USB/UPDI, afin d’éviter tout problème électrique.
Bien sûr, c’est quelque peu délicat ici, car au final :
- nous avons 2 tensions différentes à gérer (du 5V ou du 3,3V)
- ces tensions peuvent provenir d’un côté (USB) comme de l’autre (EXT)
- et le CH340N, en plus de son alimentation, doit être raccordé :
- à rien sur sa broche V3, s’il est alimenté en 5V
- au 3,3V sur sa broche 3V, s’il est alimenté en 3,3V
Du coup, c’est un peu plus complexe qu’on pourrait le croire ! D’ailleurs, pour ceux que ça intéresse, voici les tensions envoyées au CH340N (au niveau de son alim, et de sa broche V3), en fonction de la position des interrupteurs à glissière (+5V ↔ +3,3V et USB ↔ EXT) :

Si tout cela ne vous semble pas très parlant, ne vous inquiétez pas ! Car au final, cela n’est pas si important que ça, sauf si vous vous intéressez aux détails ! Du reste, passons à présent au schéma électronique complet, pour mieux voir comment tout cela se présente 😉
Schéma électronique de ce convertisseur USB → UPDI v2
Voici le schéma électronique de ce convertisseur USB/UPDI, permettant la programmation de microcontrôleurs ATtiny en UPDI (version 2, donc) :

Par rapport à la version 1, il n’y a que deux changements principaux, à savoir :
- le rajout d’un 2ème interrupteur à glissière (switch USB/EXT), permettant d’alimenter le CH340N soit à partir de l’USB (en 5V ou 3,3V issus de ce 5V), soit à partir d’une source d’alimentation extérieure (fournissant du 3,3V ou 5V) ; à noter que le switch 5V/3,3V a pour le coup du être « recâblé », pour la prise en charge de cette alim extérieure
- le remplacement du connecteur 1×3 broches de la v1 par un connecteur 2×3 broches (permettant ainsi d’éviter tout risque électrique / inversion de polarité, en cas de branchement inverse)
Du reste, les autres blocs n’ont pas vraiment changé 🙂
Remarque : toute la « beauté » de ce montage à 2 switches doubles réside dans le fait que le CH340N peut être alimenté de l’extérieur, si l’ATtiny a sa propre alimentation, et que seules les lignes D+, D-, et GND de la prise USB sont nécessaire pour faire le lien (dans ce cas, l’USB ne fournit pas la tension d’alim, mais seulement les signaux). Et pour ceux qui se poseraient la question : oui, il est possible d’admettre des signaux D+/D- de la prise USB 5V même si le CH340N est alimenté en 3,3V depuis l’extérieur ; cela est possible car les tensions D+ et D- sont plus basses que ça encore, tout simplement !
Circuit imprimé : soudage des CMS et composants traversants
Comme pour la v1, cette carte permettant la programmation d’ATtiny est faite en double couche (composants soudés dessus, et plan de masse en dessous, grosso modo !). D’ailleurs, voici à quoi ressemblent le PCB dessus/dessous, et les parties cuivrées :



Comme dans la première version, on retrouve ici des CMS et des composants traversants. Pour ma part, j’ai brasé les composants CMS à l’aide d’une table chauffante réglable en température (20-260°C), et de la soudure basse température (Sn42/Bi58, point de fusion à 138°C) soudure basse température (Sn64.7/Bi35/Ag0.3, point de fusion à 151°C), avec le profil de chauffe (montée en t°) suivant :
- préchauffage (montée en température) : passage de la température ambiante à 120°C, sur 1 minute environ
- préchauffage (maintien) : maintien de ces 120°C pendant 1 minute environ
- montée en chauffe : augmentation de la température de chauffe de 120°C à 180/190°C, sur 1 minute environ
- refusion : maintien de ces 180/190°C pendant 30 secondes environ
- refroidissement : arrêt de la chauffe pour un refroidissement lent/naturel
Et voici en image ce que ça donne sur ma plaque chauffante, une fois les composants CMS brasés :

Du reste, pour les composants traversants, j’ai simplement utilisé mon fer à souder Kaiweets (électronique), et de la soudure plomb/étain qu’il me restait !
Au final, voici à quoi ressemble le PCB, une fois tous ces composants soudés :



On aperçoit bien ici le connecteur double de sortie, sur la photo du milieu. Électriquement parlant, les 3 broches du haut sont connectées à Vext/UPDI/GND, et les 3 broches du bas ne sont pas connectées (ces dernières servant donc de détrompeur rudimentaire, ici).
Liste des composants et matériels utilisés
Voici la liste de tous les composants utilisés dans ce convertisseur USB vers UPDI, avec un lien d’achat indicatif, si vous ne savez pas où les trouver :
En espérant que les fabricants et fournisseurs ne changent pas leurs modèles/références entre temps !
Essais de programmation d’ATtiny en UPDI, avec Arduino IDE
Côté programmation, je vous renvoie vers ce que je vous avais détaillé pour la v1, à savoir :
- comment installer « megatinycore » dans Arduino IDE, pour ensuite pouvoir retrouver dedans les µC ATtiny
- comment programmer un ATtiny avec l’IDE Arduino et ce convertisseur USB → UPDI, pour uploader vos codes dans les µC ATtiny
Par contre, le mode d’utilisation de cette v2 est différent de la v1, concernant la partie électrique et la position des switches. Voici les 4 cas possibles :
- si vous souhaitez programmer un ATtiny en +5V à partir de la prise USB, il faudra sélectionner USB sur le switch USB/EXT et 5V sur le switch 5V/3,3V
- si vous souhaitez programmer un ATtiny en +3,3V à partir de la prise USB, il faudra sélectionner USB sur le switch USB/EXT et 3,3V sur le switch 5V/3,3V
- si vous souhaitez programmer un ATtiny déjà alimenté en +5V, il faudra sélectionner EXT sur le switch USB/EXT et 5V sur le switch 5V/3,3V
- si vous souhaitez programmer un ATtiny déjà alimenté en +3,3V, il faudra sélectionner EXT sur le switch USB/EXT et 3,3V sur le switch 5V/3,3V
Important : faites toujours très attention à bien sélectionner ce qui correspond à vos besoins ! Si vous fonctionnez avec telle ou telle tension, sélectionnez celle qui correspond sur ce convertisseur USB/UPDI ; et si vous souhaitez alimenter votre ATtiny à partir de l’USB ou souhaitez que l’ATtiny fournisse l’alimentation au convertisseur USB/UPDI, alors sélectionnez bien USB ou EXT sur le switch correspondant. Prenez toujours le temps de la réflexion, avant de mettre quoi que ce soit sous tension ! Par ailleurs, faites également bien attention aux lignes de sortie : Vext, UPDI, et Gnd. Veillez à ne pas les inverser, sans quoi vous risquez d’endommager plusieurs composants électroniques, ou pire encore… Soyez donc toujours vigilant, avant de brancher telle ou telle chose.
Pour rappel, au niveau du connecteur de sortie double, les lignes Vext / UPDI / GND sont branchées sur les broches du haut (« dessus ») ; les broches du bas (« dessous ») n’étant raccordées à rien, et servant juste de détrompeur basique.
Du reste, je vous rajouterai ici ultérieurement des photos de cette nouvelle version « en action », très prochainement (là, je m’en suis servi pour faire des essais dans tous les sens sur breadboard… et ça ne faisait pas très présentable !).
Documents de conception/fabrication (Kicad)
Voici les fichiers de conception/fabrication de ce « programmateur d’ATtiny version 2 » :
- le schéma électronique de ce Convertisseur USB/UPDI v2 (format PDF)
- les documents de fabrication du Convertisseur USB/UPDI v2 (format PDF)
- le fichier Gerber de ce Convertisseur USB→UPDI v2 (format ZIP), pour faire fabriquer ce circuit imprimé par un fabricant (type JLCPCB ou autre)
Convertisseur USB UPDI v2 : conclusion !
Voilà ! J’espère avoir été clair dans toutes les explications de mise à niveau entre la v1 et la v2 de ce convertisseur USB/UPDI, permettant de programmer les µC ATtiny de « dernières générations » ! Sinon, n’hésitez pas à poser vos questions tout en bas, en zone commentaire 🙂
Enfin, très bientôt (sur l’article suivant, si tout va bien), je vous montrerais des photos de ce programmateur enfiché sur une carte à ATtiny, pour que ce soit plus parlant encore. Alors à bientôt !
Jérôme.
À découvrir aussi : un chargeur d’accus LIR 2032 fait-maison !
(*) Mis à jour le 07/07/2025

Excellent article, comme d’habitude.
Pour info, le lien vers la soudure basse température Sn42/Bi58 ne fonctionne pas.
Je serais intéressé par un article concernant la méthode de soudure CMS avec table chauffante
Salut Vincent !
Oui, je viens de voir, merci ! Mais plus bizarre encore, je n’en vois plus en vente sur Aliexpress. Du coup, je mis un lien vers une autre pâte à braser étain/bismuth, qui se vend encore et qui est meilleure (en ce sens où cette dernière contient de l’Argent, ce qui offre une meilleure résistance mécanique, face chocs physiques et thermiques). Côté point de fusion, celui-ci est de 151°C (au lieu de 138 °C pour le Sn42/Bi58), mais cela reste encore de la « basse température », ce qui reste idéal donc pour nous, bricoleurs en électronique, qui soudons des CMS 😉
Du reste, concernant la table chauffante, c’est on ne peut plus simple : tu poses ton PCB dessus, après y avoir déposé la pâte à braser et les composants à leur place, et tu montes la température à la main, suivant le profil de chauffe choisi (j’en partage un dans cet article, en donnant les températures à suivre, au fil du temps). Cela étant dit, il sera difficile pour moi de faire mieux au niveau des explications ; en fait, je pense qu’une vidéo pourrait être plus parlante, mais ça, ce n’est pas mon domaine… Désolé !
Voilà ! En espérant avoir pu t’aider, et en te remerciant encore.
Jérôme.
Fidèle à lui même, Jérôme nous fournit un article bien pensé, fouillé et remarquablement bien rédigé. Merci pour ce travail de partage.
De rien ! Au plaisir 🙂
Electronicien retraité, toujours passionné d’électronique, je découvre et je suis séduit par la qualité globale.
Bravo
Nickel, merci !