J'avais besoin de programmer une EEPROM AT28C64B alors j'ai fabriqué un programmeur à partir de matériel que j'avais en inventaire. Comme toujours ce projet est sur github.com
Ce programmeur permet de programmer aussi les AT28C256 car c'est le même brochage à la différence que les 2 broches marqués NC sur la AT28C64B sont utilisés pour les 2 bits d'adresses supplémentaires A13 et A14 requis pour adresser 32Ko au lieu de 8Ko. Notez aussi que la carte NUCLEO_8S208RB a un jumper JP3 qui permet de sélectionner la tension d'alimention du MCU entre 3.3V ou 5V. Ça permet donc de programmer les versions AT28BV64B et AT28BV256 disponibles en format SOIC-28 qui fonctionnent à 3.3 volt. Cependant il faut souder ces componsants sur un adapteur comme celui-ci
pour les utiliser avec ce programmeur. Il est important de s'assurer que le socket ZIF peut accepter les IC DIP-28 étroits de 300mil.
1 embase DIP-28 sans force d'insertion (ZIF socket).
carte de prototypage à pastille de soudure 7x10cm
fil AWG 30 pour le filage.
montage
La carte de l'embase est conçue pour se brancher sur les connecteurs CN1 et CN9 de la carte NUCLEO_8S208RB.
Schématique
La schématique a étée dessinée dans KiCAD version 8.0.6
Utilisation
L'embase accepte les EEPROM compatibles AT28C64B de 8Ko et AT28C256 de 32Ko au format DIP-28.
Une fois la carte NUCLEO_8S208RB branchée au PC il faut utiliser un émulateur de terminal pour communiquer avec le programmeur.
Liste des commandes
L'interface reprend le format du WOZMON avec quelques différences aux niveaux des commandes. Au lieu de lire et d'écrire dans la mémoire du STM8 les opérations sont effectuées sur l'EEPROM. dans de qui suit adr et data doivent-être entrés en hexadécimal comme dans le WOZMON.
adr<RETURN> affiche le contenue de l'EEPROM à cette adresse. un point (.) suivit de <RETURN> affiche le contenu de l'adresse suivante.
adr1.adr2<RETURN> affiche le contenue de la plage mémoire à partir de adr1 jusqu'à adr2. 16 octets sont affichés par ligne.
adr: data data data ...<RETURN> écriture d'une liste d'octets dans la mémoire EEPROM à partir de l'adresse adr.
adr1Xadr2<RETURN> Efface la plage mémoire de adr1 jusqu'à adr2.
adr"chaîne de caractères ASCII<RETURN> programme la chaîne de caractères dans l'EEPROM à partir de l'adresse adr la chaîne est terminée par un 0.Il ne faut pas mettre de guillemet à la fin de la chaîne.
Il est possible d'entrer une liste de commandes de programmation dans un fichier texte et d'utililser la fonction send RAW file du terminal pour l'envoyer au programmeur. Cependant le terminal doit-être configuré pour un délais de 10msec entre l'envoie de chaque ligne. C'est le temps que ça prend à l'EEPROM pour compléter la programmation d'une ligne.
Capture d'écran d'une session
eeProg, Copyright Jacques Deschenes, 2025
version 1.0.0
#0
0000: 54 T
#.
0001: 48 H
#.
0002: 45 E
#0.2F
0000: 54 48 45 20 51 55 49 43 4B 20 42 52 4F 57 4E 20 THE QUICK BROWN
0010: 46 4F 58 20 4A 55 4D 50 20 4F 56 45 52 20 54 48 FOX JUMP OVER TH
0020: 45 20 4C 41 5A 59 20 44 4F 47 2E 00 01 02 03 04 E LAZY DOG.
#0X2F
#0.2F
0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
#0"THE QUICK BROWN FOX JUMP OVER THE LAZY DOG.
#2C: 1 2 3 4 5 6
#32: A B C D E AA 55
#0.3F
0000: 54 48 45 20 51 55 49 43 4B 20 42 52 4F 57 4E 20 THE QUICK BROWN
0010: 46 4F 58 20 4A 55 4D 50 20 4F 56 45 52 20 54 48 FOX JUMP OVER TH
0020: 45 20 4C 41 5A 59 20 44 4F 47 2E 00 01 02 03 04 E LAZY DOG.
0030: 05 06 0A 0B 0C 0D 0E AA 55 FF FF FF FF FF FF FF
#
Ce petit circuit simple permet de détecter une inondation et de déclencher une alarme sonore.
Fonctionnement
Ce multivibrateur utilise 2 transistors, Q12N3904 qui est un petit transistor NPN d'usage général dans un boitier TO-92 et Q2 TIP32C qui est un transistor de puissance PNP dans un boitier TO-220 qui alimente le haut-parleur.
Lorsque les 2 électrodes sont mise en contact à travers un milieu conducteur comme l'eau, Q1 reçoit un courant dans sa base et entre en conduction. Le collecteur de Q1 fournie à son tour du courant à la base de Q2 qui lui aussi entre en conduction. Cependant à travers C1 et R2 il y a une rétro-action positive qui fait entrer les 2 transistors en saturation rapidement. C1 se charge et lorsqu'il a atteint sa pleine charge le courant dans la base de Q1 dimininue donc sa conduction aussi et entraîne Q2 dans la même direction. La conséquence est que le courant dans le collecteur de Q2 diminue et donc le voltage sur le haut-parleur. Encore une fois par rétro-action positive à travers C1 et R2 le voltage à la base de Q1 diminue rapidement et les 2 transistors coupent rapidement. À ce moment la tension à la base de Q1 est négative à cause de la charge qui s'est accumulée dans C1 durant la phase 1. Cependant C1 va se décharger à travers R1, R2 et les sondes. Lorsque le voltage aux bornes de C1 deviendra légèrement positif Q1 va se remettre à conduire pour débuter un nouveau cycle. La durée de la première phase est déterminée par la constante de temps (R2+résistance de la base de Q1)*C1 et la durée de la seconde phase est déterminée par la constante de temps (R1+R2+résistance entre les sondes)*C1. Avec les valeurs des composants choisis on on obtient une fréquence d'environ 990 Hertz lorsqu'on met les 2 fils de sonde en court-circuit. Cependant dans l'eau la conduction entre les 2 fils est moins bonne donc la fréquence diminue.
Aperçu du signal
Dans cette capture de l'image à l'oscilloscope la courbe en jaune est le signal sur la base de Q1 et celle en bleu est le signal aux bornes du haut-parleur. Cette capture a étée réalisé avec C1 de 4,7nF et les sondes en court-circuit. L'oscilloscope indique une fréquence 990 Hertz et un rapport cyclique près de 50%. Lorsque les sondes sont dans l'eau la résistance de décharge de C1 augmente donc la phase 2 rallonge, ce qui diminue la fréquence ainsi que le rapport cyclique.
La phase 1 est lorsque les transistors sont en saturation et que C1 se charge et la phase 2 celle ou ils sont bloqués et C1 se décharge.
Dans ces conditions l'alimentation draine 100ma à 3 volts.
démonstration
Dans ce démo on voit que la fréquence lorsque les 2 fils sont en court-circuit est plus élevée que lorsque les fils sont dans l'eau. Ceci est du au fait que la résistance de l'eau s'ajoute à celles de R1 et R2.
Le traceur de cable est un outil très utile lorsqu'on travaille sur les réseaux cablés ou les systèmes téléphoniques. On s'en sert pour identifier un cable dans le panneau de jonction à partir de la prise murale dans un local. Comme tous les fils des prises murales aboutissent dans ce panneau et que la plupart du temps ils ne sont pas indentifiés cet outil a été inventé dans le but de simplifier cette identification. Il est constitué de 2 modules.
Un générateur de tonalité. Généralement il émet 2 tonalités en alternance rapide pour que le signal soit facilement reconnaissable à travers le bruit.
Une sonde qu'on balait le long des barettes du panneau de jonction. Il n'y a pas de contact physique entre la sonde et les cables. La détection se fait par coupable électromagnétique.
Lorsque la sonde s'approche du bon cable on entend la tonalité du générateur. La sensibilité est habituellement de 3 à 4 centimètres mais ça dépend de la résistance de terminaison de la ligne. Si la ligne est ouverte en extrémité le signal est plus fort que lorsqu'elle est en court-circuit.
Le générateur de tonalité
Ce module est très simple à réaliser avec une minuterie double TLC556 (2 minuteries 555 dans le même boitier 14 broches).
La première minuterie fonctionne en basse fréquence et est utilisée pour commuter les tonalités. Dans ce montage la période est d'environ 0,65 seconde. La sortie de cette minuterie est branchée à travers la résistance R10 à l'entrée CV de la deuxième minuterie. Cette entrée contrôle la fréquence en modifiant le point de bascule des 2 comparateurs de la minuterie. Dans mon montage les tonalités sont d'environ 570 et 630 hertz.
réalisation
Le montage est fait sur une plaquette à pastille de 5x7cm. Les pastilles de cuivre sont sur une seule face. La plaquette est montée dans un petit boitier en plastique de 98H x 58L x 22P mm.
La sonde
La sonde se compose d'un amplificateur et d'un préamplicateur contenu dans des boitiers différents. L'ampli est basé sur un LM386-N.
Le préamplificateur est contenu dans un tube d'aluminium de 21mm de diamètre intérieur et de 10cm de long. Le préamplificateur est branché à l'amplificateur par un connecteur mini-DIN 3 broches.
J'ai utilisé un transistor NJFET à l'entrée du préamplificateur pour avoir une impédance d'entrée maximale puisque le couplage avec le signal se fait par couplage capacitif il est important que l'impédance d'entrée soit très élevée. Un circuit avec transistor bijonction n'aurait pas une impédance d'entrée suffisante.
Les condensateurs C4, C5 ainsi que la résistance R5 forme un filtre passe-bande. J'ai utilisé ltSpice pour simuler le circuit du préamplificateur et obtenir sa courbe de réponse.
Le gain en voltage du préamplifcateur est d'environ 5DBv selon la simulation.
réalisation
Une carte identique de 5x7cm a été utilisée pour le montage de l'amplificateur. Celui-ci nécéssitant un boitier plus gros de 120H x 65L x 38P mm.
Le tube d'aluminium est récupéré d'un balais à neige pour auto et il est bouché à chaque extrémité par 2 morceaux de liège coupés dans un bouchon de bouteille de vin. Une languette de 21mm de largeur a été découpé dans une carte 5x7cm pour le préamplificateur inséré dans le tube d'aluminium. L'antenne de la sonde est un fil de cuivre calibre 14 AWG recouvert d'une gaine thermorétrécicante (shrink tubing). La longueur est arbitraire.