LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 31 janvier 2023

84 visiteurs en ce moment

Fabrication d’un programmateur pour microcontrôleurs ATtiny

. Par : Christian, Dominique, Jean-Luc

DIFFICULTÉ :

Cet article vous propose de fabriquer un petit programmateur à partir d’une carte Uno et d’un shield dont la construction est décrite ici. Si vous consacrez la carte Uno uniquement à ce shield, vous disposerez d’un programmateur rapidement opérationnel qui vous évitera d’avoir à sortir la breadboard et les câbles Dupont.

Principe de fonctionnement du programmateur

Le principe de fonctionnement a été décrit dans l’article Le microcontrôleur ATtiny45 (2) : il utilise le bus SPI d’une carte Uno qui contient le programme ArduinoISP donné dans les exemples. La première chose à faire est donc de téléverser ce programme dans votre carte Uno. Il est également nécessaire d’importer dans votre IDE les fichiers nécessaires aux puces ATtiny. L’ensemble de ces procédures a été décrit en détail dans l’article cité et nous n’allons pas revenir dessus. En fait, le shield dont nous décrivons ici la construction, ne fait que remplacer la breadboard qu’on peut voir sur la figure 1 de l’article, avec en plus la présence de trois LED comme préconisé dans le programme ArduinoISP.

// … (extrait des commentaires de tête du programme ArduinoISP)
//
// Put an LED (with resistor) on the following pins:
// 9: Heartbeat   - shows the programmer is running
// 8: Error       - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave
//

Possibilités du programmateur

Le programmateur a été conçu pour programmer indifféremment les microcontrôleurs ATtiny de la série 24/44/84 ou de la série 25/45/85, ainsi que les microcontrôleurs ATtiny13 et ATtiny2313, et également les microcontrôleurs ATmega168 ou ATmega328. L’alimentation des puces et les signaux SPI ne se faisant pas sur les mêmes broches d’une série à l’autre, le shield comprend trois supports ZIF (Zero Insertion Force) permettant de positionner le microcontrôleur à programmer.

La figure 1 montre le shield de programmation installé sur sa carte Uno. On voit les trois supports ZIF : le plus proche convient pour les ATtiny24/44/84 à 14 broches, le plus éloigné convient pour les ATmega168/328 à 28 broches, enfin celui du milieu sert à programmer les ATtiny2313/4313 à 20 broches.

Figure 1
Figure 1
Le programmateur une fois terminé.

Le support du milieu sert aussi à programmer les ATtiny à 8 broches (série 25/45/85 ou ATtiny13) : dans ce cas, la puce doit être insérée en bout de support, la broche 1 du microcontrôleur étant au plus proche du levier. La figure 2 montre comment sont connectées les broches de ce support sachant que la broche 1 est du côté du levier du support ZIF.

Figure 2
Figure 2
Support ZIF du milieu.

Les figures 3 à 7 montrent pour chaque microcontrôleur où se situent les broches d’alimentation et les broches SPI.

Figure 3
Figure 3
Figure 4
Figure 4
Figure 5
Figure 5
Figure 6
Figure 6
Figure 7
Figure 7

La figure 8 montre le bus SPI de la carte Uno. On rappelle que les broches SPI sont maintenant appelées COPI et CIPO à la place de MOSI et MISO (C pour Component et P pour Peripheral), afin de ne plus faire référence à la période de l’esclavagisme. On rappelle également que le programme ArduinoISP utilise la broche 10 de la carte Uno pour reseter les microcontrôleurs à programmer.

Figure 8
Figure 8
Brochage de la carte Uno.

Circuit imprimé

Le circuit imprimé (figure 9) du shield mesure 58 mm par 54 mm ; il s’agit d’un circuit double face qui peut être fabriqué à partir du fichier Gerber ci-dessous. La procédure pour faire fabriquer un circuit imprimé à partir d’un fichier Gerber est décrite dans l’article Une station DCC minimale avec boutons de commande et écran Oled en prenant comme exemple l’industriel JLCPCB.

Figure 9
Figure 9
Le circuit imprimé du shield.
Fichiers de production Gerber du Shield Locoduino ISP

Ce circuit imprimé comporte quelques composants CMS : sur la face du dessus, quatre LED avec 4 résistances de limitation de courant de 1kΩ. Ces LED et ces résistances sont en boîtier 1206. Sur la face du dessous, 5 condensateurs de découplage en boîtier 805 pour l’alimentation des microcontrôleurs (figure 10). L’article Utiliser les composants CMS explique comment souder de tels composants et comporte une petite vidéo explicative. Une fois les résistances et LED soudées, on peut vérifier leur bon fonctionnement : pour cela, on peut prélever du 5 V sur une carte Arduino alimentée, et injecter cette tension (avec deux câbles Dupont mâle-mâle) sur le circuit imprimé, en respectant la polarité (GND sur la flèche noire de la figure 10 et 5 V sur les flèches oranges).

Figure 10
Figure 10
Les composants CMS : en jaune LED et résistances, en rouge condensateurs.
Les flèches indiquent où injecter une tension de 5 V pour contrôler le bon fonctionnement des LED.

Montage des autres composants sur le shield

Une fois terminé ce travail délicat (mais non insurmontable) de soudure de composants CMS, il reste quelques composants classiques à souder sur le circuit imprimé, mais ils sont assez peu nombreux :

  • Un interrupteur à glissière anglé SPDT modèle ESP2010 de marque ECE qu’on trouve [1] mais que l’on peut remplacer par n’importe quelle interrupteur de modèle similaire : anglé, passant suffisamment de courant pour alimenter un microcontrôleur et avec un pas de broches de 2,54mm ;
  • Un condensateur électrochimique de 10µF et au moins 16V de tolérance (diamètre 5mm, écartement des broches de 2mm) ;
  • De la barrettes sécable 40 broches mâle au pas de 2,54mm
  • Trois supports ZIF de 14, 20 et 28 broches avec une largeur entre les broches de 7,62mm. Prenez de la marque pour que ça dure. Par exemples ces modèles.
Les supports ZIF de microcontrôleurs doivent être soudés avec le levier relevé ; en effet, les souder avec le levier baissé bloque les pinces en position fermée et les rend inutilisable.

Comme toujours, il est préférable de souder les composants du moins haut au plus haut : d’abord les CMS (voir paragraphe précédent), puis l’interrupteur, les barrettes (en les mettant sur la carte Uno pour garantir l’alignement des broches). On termine par les supports ZIF puis le condensateur électrochimique en respectant sa polarité.

Les figures 11 et 12 montrent cette progression.

Figure 11
Figure 11
Une fois l’interrupteur soudé, on insère les barrettes dans la carte Arduino, puis on insère le circuit imprimé du shield par dessus pour le souder aux barrettes.
Figure 12
Figure 12
Une fois les barrettes soudées, on sépare la carte shield de la carte Arduino pour souder les supports ZIF en commençant par deux broches en diagonale. On vérifie que rien n’a bougé puis on soude toutes les broches.

Utilisation du programmateur

Rien ne change par rapport à ce qui a été expliqué dans l’article Le microcontrôleur ATtiny45 (2). Une fois les réglages effectués dans l’IDE, vous pouvez graver la séquence d’initialisation si c’est la première fois que vous utilisez la puce, ou bien téléverser le programme qui doit être adapté aux broches du microcontrôleur utilisé.

À noter qu’Arduino ISP n’aime pas qu’on lui mette le composant à flasher hors tension et arrête de faire clignoter PULSE. Ce n’est pas très grave, un coup de RESET et ça repart et c’est moins pénible que de débrancher et rebrancher l’USB.

La figure 13 montre comment insérer un ATtiny45 pour le programmer. La broche 1 est au plus près du levier du support, puis le levier est refermé. On connecte alors le programmateur à la sortie USB, on met l’interrupteur du shield sur ON. Tout est prêt pour la programmation.

Figure 13
Figure 13
La broche 1 de l’ATtiny45 est ici repérée par un point blanc ; elle est au plus proche du levier qui est ici abaissé.

[1chez TME

2 Messages

Réagissez à « Fabrication d’un programmateur pour microcontrôleurs ATtiny »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Projets »

Un chenillard de DEL

Enseigne de magasin

Feux tricolores

Multi-animations lumineuses

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Une barrière infrarouge

Un capteur RFID

Un TCO xpressnet

Une animation sonore

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Calcul de la vitesse d’un train miniature avec l’Arduino

La génèse d’un réseau 100% Arduino

Une horloge à échelle H0

Simulateur de soudure à arc

Un automatisme de Passage à Niveau

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Etude d’un passage à niveau multivoies

La rétro-signalisation sur Arduino

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"

Réalisation d’un affichage de gare ARRIVEE DEPART

Ménage à trois (Ordinateur, Arduino, réseau)

Réalisation d’un va-et-vient automatique et réaliste

Souris et centrale sans fil

Communications entre JMRI et Arduino

Annonces en gare avec la RFID

Une croix de pharmacie animée avec Arduino UNO

Réalisation d’un wagon de mesure (distance et vitesse)

Une manette simple et autonome pour LaBox

Éclairer le réseau (1)

Éclairer le réseau (2)

Block Automatique Lumineux à 8 cantons analogiques

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco

Éclairer le réseau (3)

Éclairer le réseau (4)

Éclairer le réseau (5)

JMRI pour Ma première centrale DCC

Rocrail pour Ma première centrale DCC

CDM-Rail pour Ma première centrale DCC (1)

CDM-Rail pour Ma première centrale DCC (2)

Banc de test pour les décodeurs DCC

Ma première manette pour les aiguillages DCC

Mon premier décodeur pour les aiguillages DCC

Boitier 3D pour la station DCC minimale

Va-et-vient pour deux trains

Affichage publicitaire avec Arduino (1)

Affichage publicitaire avec Arduino (2)

Fabrication d’un programmateur pour microcontrôleurs ATtiny

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

La PWM : Qu’est-ce que c’est ? (1)

La PWM : Qu’est-ce que c’est ? (2)

La PWM : Qu’est ce que c’est ? (3)

La PWM : Qu’est ce que c’est ? (4)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Contrôleur à télécommande infrarouge pour centrale DCC++

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

La carte Satellite V1

La carte Satellite V1

La carte Satellite V1

La carte Satellite V1

La carte Satellite V1

Les derniers articles

Fabrication d’un programmateur pour microcontrôleurs ATtiny


Christian, Dominique, Jean-Luc

Affichage publicitaire avec Arduino (2)


catplus, Christian

Affichage publicitaire avec Arduino (1)


catplus, Christian

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco


msport

Banc de test pour les décodeurs DCC


msport

Va-et-vient pour deux trains


msport

Boitier 3D pour la station DCC minimale


msport

Mon premier décodeur pour les aiguillages DCC


msport

Ma première manette pour les aiguillages DCC


msport

Éclairer le réseau (5)


Jean-Luc

Les articles les plus lus

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

La PWM : Qu’est-ce que c’est ? (1)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Une barrière infrarouge

Un chenillard de DEL

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Mon premier décodeur pour les aiguillages DCC

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)