BEST-OF SERIES
LES 10 MEILLEURS PROJETS D’ELEKTOR EDITORS CHOICE
69 pages pour
7,95 €
9,95 € pour non membres
SELECT
DÉCOUVRIR
CRÉER
PARTAGER
UVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉC ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRI R ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉ OUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉC ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRIR ● CRÉER ● PARTAGER ● DÉCOUVRI
Personal Download for François Cariou | copyright Elektor
découvrir
créer
partager
testeur de transistors Platino type, brochage et gain Sunil Malekar (elektor.labs Inde) et Luc Lemmens (elektor.labs)
Ce testeur permet de trier comme bons ou mauvais les transistors sans référence ou douteux, de déterminer leur type et de mesurer leur gain. L’instrument repose sur Platino et peut tester les transistors bipolaires PNP et NPN, ainsi que les MOSFET à canal N ou P.
Certains trouvent fastidieux de lire le marquage d’un transistor et de chercher ses caractéristiques dans une fiche
technique. D’autres vous diront qu’il n’est pas de meilleure loupe pour identifier ces petites bêtes à trois pattes. Quoi qu’il
Caractéristiques
+5V
+5V
65 Ω
NMOS VGS = VTH
B PNP
S
RSW RE
RC
RE 1k
RB
230 Ω
100k
1k
RE
VB = RB • IB
C
(RE + RSW)
E 65 Ω
La muse Elektor
G
E
RSW
RC
D
RSW
B NPN
RB
Ce testeur est le troisième instrument de la panoplie d’appareils d’essai que nous concevons à partir de la carte Platino [1]. Il permet d’identifier le brochage du composant testé (base, collecteur, émetteur ; grille, source, drain), son type (PNP/NPN ; canal N ou P), sa technologie (bipolaire/MOSFET) et, bien sûr, son gain en courant HFE. La carte Platino dispose de tout ce qu’il faut pour créer une interface entre un circuit intrinsèquement analogique d’analyse du composant testé et un LCD et un poussoir. Le tout est gouverné par un micrologiciel exécuté par l’ATmega de la Platino.
VE = (5V - VTH) •
C
RE
Ω
RC
230 Ω
+5V
100k
c
VB = 0V
b
1k
RB
a
230 Ω
100k
VB = RB • IB
• Teste les bipolaires NPN/PNP et les MOSFET à canal N/P • Gain mesurable : entre 5 et 999 (environ) • Identification automatique du type (bipolaire/MOSFET, P/N) et du brochage (B/C/E, grille) • Indique si le transistor est défectueux ou n’est pas un transistor • Microcontrôleur ATmega32 sur la carte Platino d’Elektor • Programme (gratuit) en BASCOM AVR • LCD 20 x 4 caractères • Commande et lecture par terminal série (optionnel) • Alimentation : 12 à 18 VCC
130544 - 13
Figure 1. Configurations pour la mesure du gain (β) pour un transistor, et de la tension de seuil pour un MOSFET.
62
mars 2015
en soit, un testeur n’est jamais de trop (Internet non plus) lorsqu’il s’agit d’effectuer des tris rapides de type bon/ mauvais, des tests de résistance aux chocs mécaniques ou thermiques, ou encore, pour les audiophiles, des appariements de composants.
La conception du testeur a été inspirée par l’analyseur de semi-conducteurs de M. Waleczek publié dans Elektor en 2005 [2]. Téléchargez l’article (gratuit pour les membres abonnés) si la théorie sur laquelle s’appuie la méthode « d’essai en aveugle » du testeur vous intéresse, seul l’aspect pratique du circuit est abordé ici. Par « essai en aveugle » nous voulons simplement dire que le testeur peut s’utiliser sans savoir si le transistor en question est bipolaire ou MOSFET, PNP ou NPN, canal P ou N, ou si son gain vaut tant ou tant. Un essai en aveugle ne doit bien sûr ni détruire le composant en test
www.elektor-magazine.fr
Personal Download for François Cariou | copyright Elektor
...
projet labs
(noté DUT ci-après, pour Device Under Test), ni le circuit du testeur.
Discours de la méthode La méthode décrite ci-dessous s’applique à la majorité des transistors ordinaires fonctionnant correctement et doit être considérée comme générique. Elle ne prévoit pas les cas particuliers des thyristors, Darlington, UJT, MOSFET logiques, transistors RF au germanium, transistors à diode de protection ou autre membre de la foisonnante faune à trois pattes. En cas de doute, supposez que l’essai porte sur un NPN bipolaire au silicium de type BC547B ou 2N2222. NPN ou PNP ? Deux des trois pattes du transistor, notées E (émetteur), B (base) et C (collecteur), sont reliées virtuellement à la masse via
projet de lecteur
des résistances de 100 Ω, tandis que l’autre est tirée au +5 V via une 5,6 kΩ. Une fois cette connexion établie, la chute de tension aux bornes de la résistance est mesurée et enregistrée. Le circuit forme ensuite d’autres connexions masse/5,6 kΩ avec les pattes, la chute de tension est mesurée pour chaque configuration créée. Le tableau 1 montre les valeurs théoriques qui devraient être mesurées pour des transistors NPN et PNP. Le signe – correspond à une liaison entre la masse et une résistance de 100 Ω, le signe + à une connexion entre le +5 V et la 5,6 kΩ. Un NPN donne deux valeurs d’environ 5 V, et une d’environ 0,7 V ; un PNP donne une valeur de 5 V et deux 0,7 V. Ce premier test permet également d’identifier la base du transistor puisqu’il s’agit de la patte dont la mesure aboutit à une valeur différente des deux autres.
...
...
Mesure du gain Puisque le test NPN/PNP ne détermine pas la position des pattes E et C, le gain est mesuré pour chacune des deux combinaisons possibles. La valeur finale est présumée être la plus grande des deux valeurs mesurées. Si les tensions mesurées ne correspondent à aucune des combinaisons du Tableau 1. Mesures initiales Type
NPN
PNP
E
B
C
Valeur mesurée
–
–
+
5 V
+
–
–
5 V
–
+
–
0,7 V
–
–
+
0,7 V
+
–
–
0,7 V
–
+
–
5 V
www.elektor-magazine.fr
Personal Download for François Cariou | copyright Elektor
mars 2015
63
PC7
PC6
8
9
10
1
2
3
4
5
6
7
8
9
10
+5V
PC6
PA7
7
PC7
PA6
6
PA7
PA5
5
PA6
PA4
4
PA5
PA3
K1
3
PA4
K2
PA2
GND
AREF 8
2
PA3
PB5
7
PA1
6
1
PA2
5
K1
PA0
4
Platino PCB
K5
PA1
3
8
PA0
2
7
partager
AREF
PB5
1
PB4
6
GND
PB4
PB3
PB2
5
PB3
4
PB2
3
PB1
2
PB0
1
PB1
créer
PB0
découvrir
+5V 16 1
T1
R13 4k7
PA3
2 4
BC548
PA0
5
3 C5
6
VCC
2Y0 2Y1
IC2
2Y2 2Y3
1Y0 1Y1 1Y2 1Y3
74HC4052 2Z
1Z S0
E
1n
VEE
GND
7
8
S1
12
R1
14
R4
15
R2
11
R3
100k 5k6
PC6
1k 100R
13 10
PC1
9
PC0
+5V 16 1
IC1 LM7805
D1
K5 +V –V
+5V
2 4
1N4007 C1 1000u 35V
C2 100n
5
C3 100n
C4
PA1
3 C6
100u 16V
6
VCC
2Y0 2Y1
IC3
2Y2 2Y3
1Y0 1Y1 1Y2 1Y3
74HC4052 2Z
1Z S0
E
1n
VEE
GND
7
8
S1
12
R5
14
R8
15
R6
11
R7
K4
100k 5k6
K3
PA6
1k 100R
13 10
PA7
9
PC7
K6 1 2 3
+5V 16
10
PB4
9
PB3
2
3
4
5
6
7
8
9
10 11 12
1
2
3
4
5
6
6
5
4
3
mars 2015
www.elektor-magazine.fr
Personal Download for François Cariou | copyright Elektor
2
1 GND
+5V
Figure 2. Schéma du testeur de transistors. La carte Platino est représentée par le pourtour bleu (au cas où vous la schtroumpferiez).
64
GND
1
+5V
K6
PD0
K3
PD0
+5V PD1
8
13
PD1
7
100R
RESET
GND
PB5
1k
RESET
VEE
S1
R11
PC5
E
11
5k6
PC5
S0
R10
PC4
1Z
15
100k
PC4
2Z
R12
PC3
1n
6
1Y3
74HC4052
R9
14
PC2
C7
2Y3
1Y2
12
PC3
3
2Y2
1Y1
PC1
PA2
IC4
1Y0
PC2
Transistor Tester PCB
4
2Y1
PC0
2
2Y0
PC1
5
VCC
PC0
1
K2
130544 - 11
...
projet labs
tableau 1, le composant est soumis à des tests spécifiques à d’autres composants (MOSFET et diode). Pour vérifier s’il s’agit d’un MOSFET, le gain est mesuré de façon similaire pour les six arrangements possibles des pattes. L’identification des autres pattes est réalisée en connectant le DUT selon une configuration en collecteur commun s’il s’agit d’un transistor bipolaire, ou en drain commun s’il s’agit d’un MOSFET (fig. 1a, b et c). Le gain (noté β sur la figure) est déterminé par la mesure de VB et VE d’après les relations :
projet de lecteur
Listage 1. Code BASCOM AVR (extrait) cls locate 1,1 'Transistor type and base/gate pin determined 'Now calculate transistor parameter and display results Select case T_type case 1: 'NPN HFE_cal ' (T_type, base_pin, C_pin, E_pin,beta) lcd "Type : N-P-N"
HFE = [(VE × RB) ÷ (VB × RE)] – 1
Locate 2,1
Le gain mesurable est compris entre 5 et 999 (environ). Un MOSFET à canal N (fig. 1c) se distingue d’un transistor bipolaire par son courant de grille presque nul. Dans ce cas, la tension de seuil vaut VCC – VE (en supposant un NMOS). Le testeur ne prend malheureusement pas en charge les JFET.
Locate 3,1
Matériel et logiciel interagissent étroitement. Commençons par un survol du matériel et de son fonctionnement. La figure 2 montre le circuit monté sur la carte Platino. La section construite autour d’IC2, IC3 et IC4 lit la tension qui règne aux bornes des trois pattes du transistor relié à K6. Les trois 74HC4052 sont des multiplexeurs analogiques à 4 entrées (4 vers 1). Leur rôle est d’établir différentes connexions afin de former les arrangements de pattes à tester. Les différentes configurations de résistance nécessaires à la mesure des paramètres du transistor sont définies (de façon logicielle) sur les entrées parallèles 1Yn/2Yn des multiplexeurs. La chute de
JP4 : PB0 JP5 : PB1 JP6 : PB2 JP14 : PC7
LCD "C = ";c_pin; " B = ";base_pin;" E = "; e_pin LCD "Hfe=";beta case 2: 'PNP HFE_cal ' (T_type, base_pin, C_pin, E_pin,beta) lcd "Type : P-N-P" Locate 2,1 LCD "C = ";c_pin; " B = ";base_pin;" E = "; e_pin Locate 3,1 LCD "Hfe=";beta
Description du circuit
JP3 : PC5
...
Les héros de notre enfance : 2N3055, BC547, OC75, BC107, BF451, AC127, 2N406, BC550C, BD137, et les vôtres ? TIP2955, 2N1613, 2N2219A
VE = RE × (HFE + 1) × (VB ÷ RB)
Tableau 2. Configuration des cavaliers Platino
...
Case 5: 'NMOS call cal_Vgs(Vt) lcd "Type : NMOS" Locate 2,1 LCD "D = ";c_pin; " G = ";base_pin;" S = "; e_pin Locate 3,1 lcd "Vth = ";fusing(Vt,"#.#");" V" CASE 6: 'PMOS Call cal_Vgs(Vt) lcd "Type : PMOS" Locate 2,1 LCD "D = ";c_pin; " G = ";base_pin;" S = "; e_pin Locate 3,1 LCD "Vth = -";fusing(Vt,"#.#");" V" end select
Tableau 3. Interface Platino-testeur Broche
Fonction
PA0, PA1, PA2:
broches CAN (ADC) reliées aux pattes du DUT pour lire les tensions
PA7, PB3, PB4, PC0, PC1, PC7:
lignes de sélection des multiplexeurs
PA6,PB5,PC6:
sortie numérique pour la configuration masse/+5 V avec les résistances
PB0–PB2:
codeur avec poussoir
PC5:
commande du rétro-éclairage du LCD
www.elektor-magazine.fr
Personal Download for François Cariou | copyright Elektor
mars 2015
65
découvrir
créer
tension résultante est lue en reliant une patte à VCC via une 5,6 kΩ (R4, R8, R12) tandis que les deux autres sont reliées à la masse via les 100 Ω (R3, R7, R11). Après lecture des tensions aux bornes de chaque patte via les sorties nZ des multiplexeurs, la base du DUT est identifiée en comparant ces valeurs et en s’appuyant sur le fait que la tension à ses bornes (par rapport à la « masse ») est toujours différente des tensions aux bornes des autres broches. Le type NPN/PNP/NMOS/ PMOS du DUT est alors déterminé par le programme d’après le tableau 1. Les sorties des 4052 sont reliées aux CAN de la Platino via les lignes de bus PA0, PA1 et PA2. Le transistor T1 sert de commutateur de calibrage. La section qui s’occupe de l’alimentation est construite de façon classique. La tension d’entrée est délivrée par un adapta-
partager teur CA/CC de 12 à 18 V relié au bornier K8. La diode D1 protège contre les inversions de polarité et le régulateur LM7805 se charge de fournir une tension régulée de +5 V au contrôleur et aux composants alimentés par le rail de +5 V.
Platino Nous avons déjà présenté et utilisé Platino dans plusieurs articles. Qu’on l’appelle carte ou plateforme, concrètement la Platino est composée d’un ATmega32 installé sur une petite carte équipée par défaut d’un LCD, d’un codeur rotatif et de poussoirs. Le placement de ses connecteurs est optimisé et sa programmation est facilitée par les outils AVR. Attention, les cavaliers doivent ici être montés comme l’indique le tableau 2, pas autrement ! Le tableau 3 résume le brochage de l’interface Platino-testeur. L’interface utilisateur se fait via le LCD
de 4 lignes et 20 caractères. Si votre projet nécessite une liaison sérielle pour lire les résultats du testeur et, disons un zeste d’interaction en plus, vous pouvez interfacer la Platino avec la passerelle Elektor BOB USB-série et amener les lectures DUT dans un émulateur de terminal. Partant de là vous n’aurez aucun mal à automatiser la création de feuilles de calcul et de rapports d’essai. L’interface du DUT est montée sur la Platino, à laquelle elle est électriquement reliée via les connecteurs K1, K5, K2/K6.
Programme Le micrologiciel pour l’ATmega32 est écrit en BASCOM AVR. La carte Platino ellemême a servi d’outil de développement durant toute l’élaboration du projet. Pour toute introduction, raffermissement ou approfondissement de vos connaissances
Liste des composants Résistances (5%, 250 mW) R1, R5, R9 = 100 kΩ R2, R6, R10 = 1 kΩ R3, R7, R11 = 100 Ω R4, R8, R12 = 5,6 kΩ R13 = 4,7 kΩ Condensateurs C1 = 1000 µF, 35 V, radial C2, C3 = 100 nF C4 = 100 µF, 16 V C5, C6, C7 = 1 nF Semi-conducteurs IC1 = MC7805 IC2, IC3, IC4 = 74HC4052 D1 = 1N4007 T1 = BC548 Divers K1, K2, K3 = embase femelle simple rangée, coupée dans une embase à 36 contacts K4 = embase femelle double rangée, coupée dans une embase à 72 contacts K5 = bornier à vis pour CI à 2 voies, au pas de 5,08 mm K6 = bornier à vis pour CI à 3 voies, au pas de 5,08 mm 3 supports CI DIP-16 circuit imprimé 130544-1 (réf. e-choppe) [ELPP : Composants Passe-Partout d’Elektor Labs]
Figure 3. Dessin du circuit imprimé du testeur. Une fois les composants implantés, le circuit peut être relié à la carte Platino.
66
mars 2015
www.elektor-magazine.fr
Personal Download for François Cariou | copyright Elektor
...
projet labs
projet de lecteur
...
...
Construction
Figure 4. Le testeur peut communiquer avec votre PC via un émulateur de terminal.
en BASCOM, rappelons l’atelier du microcontrôleur, dont le premier numéro de la série a été publié en avril 2014 [3]. Le code, dont le listage 1 montre un extrait, est disponible [4]. Le programme comprend trois modules principaux : Affichage Le module traitant l’affichage envoie sur l’écran le type du transistor, son brochage CBE et la valeur du gain (HFE) dans la configuration en collecteur commun. Test Cette partie lit la tension qui règne aux bornes de chaque patte du transistor. Les CI multiplexeurs servent à former les différents arrangements de pattes. La nature PNP/NPN/NMOS/PMOS est établie d’après la valeur des tensions lues. Calcul du gain HFE Le gain est mesuré en utilisant le CAN de la Platino. À cette étape, les deux autres pattes restent encore à identifier. Pour cela, une des pattes est supposée être le collecteur. Le transistor est alors connecté en collecteur commun, le gain est mesuré, puis une nouvelle fois mesuré après commutation des multiplexeurs afin de permuter les connexions. La valeur la plus grande est considérée comme la valeur correcte, ce qui permet d’identifier sans équivoque possible les pattes C et E.
Commencez par assembler sur la carte Platino le LCD, l’unique poussoir, l’ATmega32 et les autres composants, puis configurez les cavaliers selon le tableau 2. La carte d’extension est spacieuse et ne comprend que des composants traversants. Elle a en outre été conçue pour être arrimée à la carte Platino au moyen de connecteurs. Le montage ne devrait pas poser de problème si vous vous conformez à la liste des composants, au schéma d’implantation (fig. 3) et aux photographies de l’article. Un assemblage en boîtier et un support ZIF pour le DUT donneront un aspect pro à votre testeur. Connectez la passerelle BOB USB-série Elektor si vous souhaitez afficher la sortie du testeur dans un terminal série (fig. 4). Le débit est paramétré sur 9600 bauds. Si vous voulez programmer vousmême le microcontrôleur, référez-vous à la figure 5 pour la configuration des fusibles.
Figure 5. Configuration des fusibles pour l’ATmega32 de la Platino.
Et maintenant donne la papatte Mettez le testeur sous tension en branchant une alimentation CC de 12 à 18 V en K8. Reliez le transistor à tester au connecteur K6 en plaçant ses pattes dans n’importe quel ordre. Appuyez sur le poussoir ou, si vous souhaitez lire les résultats sur un terminal série (optionnel), entrez « T » depuis votre émulateur. La figure 6 montre quelques résultats obtenus avec deux composants innocents, piochés dans un tiroir du laboratoire Elektor par une main non moins innocente. (130544 – version française : Hervé Moreau)
Liens [1] Platino : Elektor, octobre 2011, www.elektor-magazine.fr/100892 [2] Analyseur de semi-conducteurs : Elektor, avril 2005, www.elektor-magazine.fr/030451 [3] L’atelier du microcontrôleur : Elektor, avril à novembre 2014. No 1 : www.elektor-magazine.fr/120574 [4] Téléchargements : www.elektor-magazine.fr/130544
Figure 6. Deux suspects (un transistor bipolaire et un MOSFET) passant aux aveux.
www.elektor-magazine.fr
Personal Download for François Cariou | copyright Elektor
mars 2015
67
découvrir
créer
partager
sonde différentielle active 2 GHz faites-la vous-même, encore mieux et moins cher
Alfred Rosenkränzer (Allemagne)
HDMI, DVI, USB, les signaux numériques rapides, on a l’habitude de les transmettre en mode différentiel. Pour les mesurer, il faut des sondes différentielles actives. Elles sont hors de prix pour l’amateur ou la petite entreprise. Alors, faites-les vous-même ! Le modèle présenté ici, dans un boîtier style clé USB, offre une très grande largeur de bande, près de 2 GHz.
Caractéristiques techniques • atténuation : 10:1 pour des signaux différentiels et bouclage de 50 Ω sur l’oscilloscope • impédance différentielle : 5 kΩ • impédance d’entée asymétrique : 2,5 kΩ • impédance de sortie : 50 Ω • bande passante : 1,9 GHz (–3 dB) • temps de montée/descente : 300 ps • alimentation : ±8 à 12 V CC
On rencontre de plus en plus de signaux numériques rapides : FireWire, Panel Link, SATA, USB, DisplayPort, DVI, HDMI… Bien que différents protocoles et codages soient utilisés comme TDMS et 8b/10b, il y beaucoup de similitudes sur le plan électrique, aussi appelé couche physique ou Physical Layer. Les signaux sont transmis sur deux fils en différentiel, c’est-à-dire en opposition de phase. Leur amplitude n’est à peine que d’une centaine de millivolts, alors que le décalage peut atteindre plusieurs volts. Les deux
58
juillet/août 2015
conducteurs du signal sont généralement bouclés sur 100 Ω. Le récepteur n’utilise que la différence de tension entre les deux fils, les parasites de mode commun induits sur les conducteurs sont ainsi atténués. La faiblesse des variations des signaux aide à réduire les interférences électromagnétiques. C’est ce qui permet d’atteindre de hauts débits binaires avec une vitesse de balayage modérée. Cette technique a déjà été utilisée il y a des décennies sur les puces ECL (emitter-coupled logic) ; de nos jours, on
l’applique aux CML (current-mode logic) ou LVDS (low voltage differential signaling), mais aussi aux FPGA. Bien entendu, on peut aussi observer ces signaux avec les sondes de mesure habituelles à haute impédance. Quand on veut voir le signal de différence, il faut deux sondes et la fonction mathématique de l’oscilloscope. Mais pour cela, les sondes doivent être convenablement équilibrées non seulement en atténuation, mais aussi en temps. Pour les professionnels, il existe des sondes différentielles actives pour ce genre de mesure, par ex. Keysight (ex-Agilent), Tektronix, Rohde & Schwartz... Leur bande passante va de quelques centaines de mégahertz jusqu’à 10 GHz. Comme elles sont actives, elles ont besoin d’une alimentation, elle est fournie par l’oscilloscope (fig. 1) sur des contacts supplémentaires. Évidemment, les accessoires d’un fabricant sont rarement compatibles avec les appareils des autres. Dans la gamme
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet de lecteur
projet labs inférieure de prix, on trouve des sondes à brancher sur un port USB, celui d’un oscilloscope par exemple. Quand il faut plusieurs sondes, comme pour mesurer le signal d’horloge et celui de données, on atteint vite la saturation du système USB. L’alimentation sur pile de 9 V n’est pas non plus une bonne solution, elle ne tient pas longtemps, surtout si on oublie d’éteindre la sonde. Alors, le prix de sondes adéquates, à partir de 800 euros, les rend inaccessibles aux amateurs comme aux petites entreprises. Il faut changer tout cela.
Le circuit
Figure 1. Entrée d’un oscilloscope avec les contacts prévus pour la sonde de mesure différentielle adaptée (source : Keysight).
10 +OUT 9 V OCM
+5V 1 LED1
C4
330n
–9V DO214AA
100n
1
2
D4
IN –
R5 147R
R6 2k15
3 9
7 +VS
2
6
100n
10u 10V
8
+
IC3 ADA4927-1
–
EXP PAD
VOCM
13
LED2
14
3
79L05F IC2
C6
+VS
C3
562R
R2
R4 2k15
5
C5
–VS
IN +
R3 147R
PD
–VS
100n
12
+VS
R1
+VS
330n
D2
–VS
C2
562R
2
C1
–VS
DO214AA
D3
+5V
+VS 8
–IN 3 +FB 4
+VS 7
3
IC1 78L05F
R7 464R
12 PD 11 –OUT
+VS 6
D1
ADA4927-1
+IN 2
+VS 5
+9V
14 –VS
15 –V S
–FB 1
résistance de source de 50 Ω, à boucler sur 50 Ω, de préférence avec la fonction interne de l’appareil, sinon directement à l’entrée. Par rapport à l’amplitude de l’un des signaux d’entrée (pas leur somme), la sonde présente donc un rapport de
13 –VS
longe ici jusqu’à environ 1,9 GHz, assez pour la plupart des signaux et des oscilloscopes. Le signal d’entrée est appliqué aux contacts IN+ et IN–. Seule la sortie négative (–OUT) est utilisée pour attaquer l’entrée de l’oscilloscope avec une
16 –V S
Voici une sonde différentielle active dans un boîtier similaire à une clé USB. La figure 2 révèle l’étonnante simplicité du circuit. Un amplificateur opérationnel totalement différentiel ADA4927-1 d’Analog Devices suffit. Il a deux entrées et deux sorties et les deux branches sont câblées à l’identique. L’amplification vaut 1/5 selon le rapport R7/(R3+R4). La valeur de la résistance de R7 et de R8 est choisie de manière à obtenir la courbe de réponse la plus plate le plus loin possible. Elle se pro-
–5V R8 464R
15
1 11 –FB –OUT
+OUT +FB 4 10 16
C8
C7
100n
10u 10V
R9 49R9
SIG
R10 100R
(coax) GND
–5V 130538 - 11
Figure 2. Schéma de la sonde différentielle active.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
juillet/août 2015
59
créer
découvrir
partager
Figure 3. Sonde de mesure installée dans un boîtier transparent format clé USB.
tension de 1/10, tout comme une sonde passive à haute impédance raccordée sur 50 Ω. L’impédance d’entrée différentielle avoisine 4,6 kΩ. Cela semble très peu en comparaison d’une sonde passive. Mais comme les signaux rapides sont à très basse impédance (100 Ω), c’est bien suffisant.
La sortie inutilisée de la puce est reliée à la masse par 100 Ω pour garantir une symétrie parfaite de charge. La puce dispose d’une entrée V_OCM de compensation du décalage qui n’est pas utilisée ici, elle est mise à la masse et le décalage sera annulé sur l’oscilloscope. L’entrée de coupure du courant (Power down) est reliée à la tension d’alimen-
tation, la puce reste donc active tout le temps. Sous la puce, il y a une surface de contact dite Exposed Paddle (EPAD) à connecter à un plan soumis à une tension comprise entre celles d’alimentation, ici à la masse. Les deux tensions de ±5 V sont produites par les régulateurs linéaires IC1 et IC2, et découplées à la masse (GND)
L1 L1 ... L8 = SD12K100
TR1 3VA6
L2
B1
B80C800
2200u 16V
C1
C2
100n
100n
C5 22u 16V
1k2
C9
LED2
S1 C10 2200u 16V
C3
C4
100n
100n
C6 22u 16V
D1
LED1
R2 1k2
F1 200mA T
R3
R1 1k2
7V5
7908
1N4004
100n
1
C19
C7
3
22u 16V
100n
C22
C20
22u 16V
100n
C23
C21
22u 16V
100n
C26
C24
22u 16V
100n
C27
C25
22u 16V
100n
C30
C28
22u 16V
100n
1
C31
C29
3
22u 16V
100n
K1
2
LED3
1
K2
2 3
D2
1N4004
1
K3
2 3
L7
130538 - 12
L8
Figure 4. Schéma de l’alimentation secteur pour quatre sondes de mesure.
juillet/août 2015
22u 16V
L5
D3 8V2
L4
L6
IC2
60
C6
L3
IC1 7808
7V5
C18
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
2
K4
projet labs
projet de lecteur
Une sonde différentielle professionnelle est trop chère pour un amateur ou une petite entreprise par des condensateurs. Les diodes D1 et D3 protègent d’une inversion de polarité, tandis que D5 et D6 empêchent un verrouillage haut du régulateur de tension au cas où l’une des alimentations serait appliquée avant l’autre. Les LED D2 et D4 témoignent de la présence de ces tensions. Autant le circuit est simple, autant son câblage est crucial pour atteindre le fonctionnement voulu. J’ai eu recours à un circuit imprimé à quatre couches. Celle du haut assure les liaisons du signal, la suivante est totalement occupée par un plan de masse comme point de référence. Les deux autres servent à acheminer l’alimentation. J’ai évoqué l’EPAD sous la puce, qu’il faut relier à la masse. Comme ce n’est pas une mince affaire pour un amateur d’effectuer pareille soudure, je propose une carte toute montée et testée, prête à l’emploi. La puce est dotée de deux paires de sorties. Les broches +FB et –FB, à gauche, qui encadrent les entrées sont utilisées pour fermer la boucle d’amplification avec R7 et R8. Les deux autres, à droite, servent de sorties. Les raccordements des deux tensions d’alimentation au-dessus et en dessous sont découplés par deux condensateurs aussi près que possible de la masse. Tant pour les alimentations que pour la masse, de nombreux vias sont prévus pour réduire l’inductance autant que faire se peut.
La mécanique On peut insérer la carte de la sonde dans un boîtier transparent de clé USB (fig. 3). Le câble coaxial muni d’une fiche BNC se soude par le conducteur central à la pastille « Out », le blindage sur la surface à sa droite. Des trous permettent de fixer ce câble par un collier de serrage. Le câble d’alimentation sera soudé aux pastilles +9 V, –9 V et GND. Après avoir installé la carte dans son boîtier, on introduit dans les trous forés en face avant une barrette femelle sécable à trois éléments dont on aura enlevé la broche centrale. On incurve les autres broches pour les souder aux pastilles In+ et In-. C’est là qu’il faudra insérer les broches correspondantes sur
lesquelles auront été soudés de petits fils fins à relier aux conducteurs du signal. Ceci permet d’abord d’installer cette prise et ensuite d’y insérer la sonde. Il est alors possible de faire l’échange entre plusieurs signaux. Si cette prise est abîmée, on s’en fait une nouvelle. Manier une sonde à deux entrées n’est pas très pratique. Si vous utilisez plusieurs sondes, veillez à ce que les câbles coaxiaux aient tous la même longueur, sinon il y aura des différences dans le temps de parcours entre elles et vous risquez des erreurs de mesure. Le reste, on peut le compenser sur la plupart des oscilloscopes par le « Skew Ajust ». Avec des mesures différentielles, la somme des décalages des deux signaux est atténuée, seule la différence est affichée. Mais si vous voulez mesurer le décalage, vous pouvez utiliser une sonde à haute impédance ou relier l’une des entrées à la masse. Il faut alors penser à la baisse relative de la résistance d’entrée.
Les deux tensions sont encore filtrées par bobines et condensateurs avant d’atteindre les connecteurs de sortie.
Conclusion Cette sonde différentielle active bon marché, parce que construite pour une fraction du prix des produits commerciaux comparables, présente d’excellentes caractéristiques (cf. figures 5 et 6). Pour cela, il faut de bons composants bien choisis, mais aussi une conception mûrement réfléchie du circuit imprimé. Les lecteurs intéressés peuvent me contacter pour se procurer une carte montée et testée. Il est aussi possible de commander un kit comprenant le boîtier, le câble HF avec fiche BNC et le câble d’alimentation avec fiche. Pour des informations supplémentaires, écrivez à
[email protected]. (130538 – version française : Robert Grignard)
L’alimentation On peut alimenter la sonde de mesure par une alimentation de laboratoire d’au moins ±8 V. C’est très simple avec une seule sonde, mais plus il y en a, plus le câblage se complique et on finit par s’y perdre. Aussi ai-je étudié une alimentation secteur de table (figure 4) pour quatre sondes, en concordance avec le nombre maximal d’entrées d’un oscilloscope. Ce sont des fiches mini-DIN à trois broches que j’ai choisies pour le branchement : aucun risque d’inversion de polarité. Les quatre sorties sont largement filtrées en interne pour minimiser la diaphonie entre sondes. Le circuit se compose d’un transformateur secteur à deux secondaires, un redresseur, des électrolytiques et deux régulateurs linéaires encadrés des habituels condensateurs de découplage. Deux LED indiquent le fonctionnement de chacune des alimentations et, à l’aide d’une diode zener en série, une troisième en façade témoigne que les deux tensions sont bien là. Deux autres diodes empêchent qu’une tension inverse, issue éventuellement de la sortie, ne cause des dommages.
Figure 5. Comportement en fréquence jusqu’à 3 GHz de la sonde de mesure. Le point à –3 dB se situe à environ 1,9 GHz.
Figure 6. Mesure d’un signal d’horloge à 300 MHz avec un oscilloscope de 2 GHz.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
juillet/août 2015
61
découvrir
créer
partager
carte d’E/S pour Android l’électronique embarquée, pilotez-la depuis votre téléphone portable
Attention : la numérotation sur les photos du prototype diffère de celles du schéma et du tracé définitifs.
32
septembre 2015
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
Elbert Jan van Veldhuizen (Pays-Bas)
Avec son énorme puissance de calcul à un prix abordable, son écran tactile et ses multiples possibilités de communication sans fil, un appareil Android est tout indiqué pour commander toutes sortes de circuits électroniques. Ajoutezlui 22 lignes d’E/S et vous pourrez à distance commuter facilement, réaliser des mesures, lancer des moteurs, recevoir des signaux analogiques et en créer, bien d’autres choses encore. Ce premier article expose le matériel nécessaire.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
septembre 2015
33
créer
VMOD
V++
2 4 6 8
RST DOUT
1 3 5 7
DOUT DIN
JP1
ESP8266 DIN DOUT
PIO11 PIO10 PIO9 PIO8 PIO7 PIO6 PIO5 PIO4 PIO3 PIO2 PIO1 PIO0 GND
34 33 32 31 30 29 28 27 26 25 24 23 22
3V3
CONN
C6 C4 C2 C0 B6 B4 B2 B0 A6 A4 A2 A0
TX RC4 RC2 RC0 RB6 RB4 RB2 RB0 RA6 RA4 RA2 RA0
26 24 22 20 18 16 14 12 10 8 6 4 2
C7 C5 C3 C1 B7 B5 B3 B1 A7 A5 A3 A1
1 2 3 4 5 6 7 8
RX RC5 RC3 RC1 RB7 RB5 RB3 RB1 RA7 RA5 RA3 RA1
2 4u7
5 6
1u
K3
R1
C5
LED1
RA0 RA1 RA2 RA3 RA4 RA5 RA6 RA7
IC1 PIC16F1938
VSS
X1
470R
1 2 3 4 5 6
K4
3V3
C6
RB1
RB0
TX
R7 330R
RX
RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
470R
LED3
LED4
R14 330R
6
R15 RC4 330R
5
RC3
100n
8
RX TX RC5 RC4 RC3 RC2 RC1 RC0
LED2
C2
VCC
18 17 16 15 14 13 12 11
CLED
R13 2k2
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
R12 2k2
28 27 26 25 24 23 22 21
3V3
R4
SCL
IC2
WC
24FC256
SDA
GND
2 3 4 5 6 7 10 9
R5 330R
7
1 A0 2 A1 3 A2
K5 PICkit
3V3 RE3
RB7 RB6
R8
3V3 R9
K6
ICSP X1, C5, C6 not mounted
10k
3V3 C4
RA0 RA1 RA2 RA3 RA4 RA5 RA6 RA7
2 4 6 8
4
MCLR
VSS
3
1 3 5 7
RB3
1
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
470R
100n
R3
8
C3
R2
C1
10k
IC3
1
3V3
RB2
CLED
V++
DOUT DIN
ESP8266
R16
MCP1702T-3302E/CB
S2
CONN
3V3
RE3
K1
RST
BL600 eBOB
DIN DOUT
VMOD
micro USB 1 2 3 4
16 15 14 13 12 11 10 9
PGM RES GND VCC RTS CTS TX RX
JP2
10
GND
CONN DIN DOUT
GND 2 3 8 9 10 11 12
VMOD
20 19 18 17 16 15 14 13 12
470R
4 6 9 11
DIO0 DIO1 DIO2 MOD2 DIO3 XBEE-PRO DIO6 DIO12 RSSI DIO5 RN41/RN42/RN171 DTR VREF DIO4 STATUS CTS
20
2 DOUT 3 DIN 5 RST
VDD
DOUT DIN RST
VCC
DOUT DIN
VMOD
1
R6
MOD7
K2 25 23 21 19 17 15 13 11 9 7 5 3 1
10k
FT232R BOB
VMOD
TX RX CTS MOD1 RTS PCM_CLK PCM_OUT HC_06 PCM_IN PCM_SYNC AIO0 Bluetooth 2.0 AIO1 RST 3V3 GND
14 15 16 17 18 19 20 21
VMOD MOD5
MOD6
RST
VMOD
1 2 3 4 5 6 7 8 9 10 11 12 13
19
FT311D BOB
DIN
MOD4
330R
VMOD MOD3
partager
NC VBUSDCSB MOSI MISO CLK VSUBD+ GND
découvrir
R10 330R S1
R11
-t° Touch
NTC
150057- 11
Figure 1. Schéma de la carte d’E/S. En pratique, il y a beaucoup moins sur la carte, puisqu’on n’y installe qu’un seul module de communication. Tableau 1. Aperçu des caractéristiques de la carte d’E/S pour Android fonction
nb de broches (max 22) / valeur
remarques
entrées numériques
22
dont 8 broches à résistance de rappel vers le haut « molle » en option
sorties numériques
22
Isortie max 25 mA
C A/N
11
résolution de 10 bits, env. 20 Ké/s
interrupteurs sensitifs
8
dont 7 broches partagées avec le C A/N
MLI
8
par logiciel, 4 x 2 en mode en pont
compteur
à 16 bits
maximum 8 MHz
débit binaire
max 100 tâches par seconde
liaison à 9600 bauds
mémoire flash de données
32 Ko
sur 25FC256
suppléments sur carte
4 LED, 1 CTN, 1 touche tactile
tension d’alimentation
4 à 13 V non stabilisés 3,3 V stabilisés
consommation (sans charge)
max 30 mA (Bluetooth) max 250 mA (Wi-Fi) max 5 mA (USB) plus le courant pour le module USB
connexion d’alimentation
micro-USB, connecteur encartable
34
septembre 2015
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
Nous allons décrire une carte et un exemple d’appli pour échanger des informations sur 22 lignes d’entrée/sortie au moyen de commandes simples. La carte est capable de communiquer avec un téléphone tactile ou une tablette par Bluetooth, Wi-Fi ou USB. Ses ports peuvent traiter des entrées et des sorties numériques, mais aussi servir de C A/N, utiliser une touche capacitive, moduler des impulsions ou les compter. Son micrologiciel est aisément modifiable, on ajoute ainsi des fonctions dans le microcontrôleur pour des applications en temps réel, le contrôleur est pourvu d’un chargeur d’amorçage à cet effet. Pour commander cette carte d’E/S pour Android, j’ai développé des classes Java (des bibliothèques) aux dénominations parlantes. Avec elles, vous n’aurez pas le souci des détails de la programmation des fonctions de l’appli. Ce premier article dévoile le circuit imprimé et les fonctions du microcontrôleur. Dans les épisodes suivants, nous verrons les possibilités du Bluetooth, du Wi-Fi et du port USB, ainsi qu’une appli pour piloter la carte d’E/S Android. Nous étudierons ensuite comment réaliser un enregistreur de données, adapter le micrologiciel et le transférer avec le chargeur d’amorçage. Avant de fouiller dans le matériel, voyons ce qu’il peut faire en pratique. On sait déjà qu’il met à disposition 22 broches d’E/S. La carte porte aussi un interrupteur à touche capacitive, soudé à demeure, quatre LED et une résistance CTN. C’est en tout cas un circuit imprimé pratique pour acquérir de l’expérience. Le tableau 1 détaille les caractéristiques de la carte d’E/S Android avec les différentes options d’alimentation.
K4. La puce IC3 est un MCP1702-33, un régulateur à faible déchet qui délivre la tension de 3,3 V au module Bluetooth ou Wi-Fi et au reste du circuit. C’est l’interrupteur S2 qui met sous tension. Si vous n’en voulez pas, remplacez-le par un pont de câblage sur les deux pastilles de gauche. Le microcontrôleur PIC16F1938 de Microchip (IC1) totalise 28 broches. La liaison entre lui et les modules Bluetooth, Wi-Fi ou USB passe par le bloc de cavaliers JP2 pour le débogage et les résistances de sécurité R5 et R7. Toutes les lignes d’E/S sont disponibles sur le connecteur K2.
Le circuit Le schéma de la carte est à la figure 1. Le nombre de composants réellement présents sur le circuit imprimé est bien moindre que ce que le schéma présente. Il y a en effet de nombreux modules de communication qui peuvent y prendre place. Parmi eux, la plupart des modules pour le Bluetooth sont constitués de cartes de liaison (Break out Board, BoB) : e-BoB BL600 (avec Bluetooth V4, réf. 140270-91, ici Mod7), BoB (Mod1) avec module HC-06 (avec Bluetooth V2), carte à embase avec HC-06 (Mod6), carte avec RN41 au format Zigbee (Mod2), carte avec HC-06 au format Zigbee (Mod2). Comme modules Wi-Fi, on peut y mettre aussi bien un RN171-XV (au format ZigBee) qu’un ESP8266 (à embase). Il y a aussi des connecteurs pour brancher l’e-BoB Android d’Elektor (13051691) et la passerelle Elektor e-BoB FT232R USB/série (11055391), tous deux pour une liaison USB avec un PC, une tablette ou un téléphone tactile (par câble USB-OTG). Tous ces modules fournissent des données sérielles qui transitent par l’appareil Android vers un PC. Elles passent par un microcontrôleur PIC, ici un PIC16F1938 avec pas moins de 24 broches d’E/S, chargé d’un micrologiciel qui interprète les commandes pour configurer ces broches de manière à y envoyer des données numériques ou y recevoir des signaux en analogique ou numérique. Les lignes d’E/S du microcontrôleur sont toutes accessibles sur K2, une embase à deux rangées de treize picots. Ces généralités exposées, allons voir de près les composants dans le schéma. Partons du régulateur de tension de 3,3 V, IC3 sur la carte. Pour lui fournir du courant, il y a là deux options : un connecteur K1 micro-USB ou deux pastilles à souder, voire une embase
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
septembre 2015
35
créer
découvrir
partager
Liste des composants
Comme mémoire supplémentaire, pour l’enregistrement de données, par exemple, la carte dispose d’une mémoire flash (IC2) sérielle I²C de 32 Ko. Les lignes de bus I²C de cette puce sont protégées par R14 et R15, les résistances de rappel haut sont R12 et R13. On trouve aussi une résistance CTN (R11) pour des mesures de température, elle forme avec R9 un diviseur de tension. Les LED1 à LED4 sont des témoins pour les différents signaux. La première indique la présence de la tension de 3,3 V. LED2 ne travaille que si le module HC-06 est installé. On peut utiliser les LED3 et 4 dans différentes fonctions, par exemple LED3 signale que le chargeur d’amorce est activé. Le capteur capacitif S1 est constitué d’une surface soudée sur le circuit imprimé. Le connecteur K6 est directement en parallèle sur cet interrupteur sensitif, nécessaire à l’activation du chargeur d’amorçage dans le PIC.
Résistances : R1, R2, R3, R4 = 470 Ω 1%, CMS 0805 R5, R7, R8, R10, R14, R15 = 330 Ω 1%, CMS 0805 R6, R9, R16 = 10 kΩ 1%, CMS 0805 R11 = CTN 10 kΩ CMS 0805 (p.ex. Vishay NTCS0805E3103JHT) R12, R13 = 2,2 kΩ 1%, CMS 0805
Condensateurs : C1, C2 = 100 nF/25 V, 10%, CMS 0805 C3 = 4,7 µF/25 V, 10%, CMS 0805 C4 = 1 µF/25 V, 10%, CMS 0805
Semi-conducteurs : LED1, LED2, LED3, LED4 = LED verte faible courant, CMS 0805 IC1 = PIC16F1938-I/SO, SOIC28 (programmé : 150057-41*) IC2 = 24FC256-I/SN, SOIC8 IC3 = MCP1702T-3302E/CB, SOT23A
Divers : K1 = connecteur micro-USB 2.0 type B, CMS K2 = embase à 2x13 picots, pas de 2,54 mm K3 = embase à 2x3 picots, pas de 2,54 mm K4 = embase à 2 picots, pas de 2,54 mm K5 = embase à 6 picots, pas de 2,54 mm S2 = commutateur inverseur, pas de 2,54 mm circuit imprimé : 150057-1* ou circuit imprimé avec tous les CMS déjà soudés : 150057-91*
module de communication (n’en installer qu’un seul) :
Figure 2. Le circuit imprimé pour la carte d’E/S. Il y a sept options différentes de montage disponibles pour les modules de communication.
Mod1 = module Bluetooth HC-06/HC-05 à souder directement sur la carte Mod2 = module Bluetooth HC-06/HC-05 au format ZigBee Mod2 = module Bluetooth RN41XVC Mod2 = module WLAN RN171 (avec antenne fouet) à monter sur deux embases à 10 picots au pas de 2 mm Mod3 = e-BoB Android (Elektor, 130516-91*) à monter sur une embase à 10 picots au pas de 2,5 mm Mod4 = module Wi-Fi ESP8266 (raccordement sur 2x4 broches) à monter sur embase à 2x3 picots au pas de 2,5 mm Mod5 = e-BoB passerelle FT232R USB/série (Elektor, 110553-91*) à monter sur une embase à 3 contacts au pas de 2,5 mm (embase à 3 picots sur e-BoB) Mod6 = module HC-06 (version à 6 broches) à monter sur embase à 6 contacts au pas de 2,5 mm Mod7 = e-BoB BL600 (Elektor, 140270-91*) à monter sur embase à 8 contacts au pas de 2,5 mm * Circuits imprimés, modules assemblés et composants programmés disponibles en ligne (www.elektor.fr)
Tableau 2. Fonctions des connecteurs et embases K1
connecteur micro-USB pour alimenter carte et module
K2
embase à 2x13 picots pour 24 lignes d’E/S du PIC, 3,3 V et masse
K3
embase à 2x3 picots pour connecter en chaîne plusieurs cartes d’E/S
K4
connecteur d’alimentation à 2 broches pour carte (4 à 13 V)
K5
connecteur de programmation à 6 broches pour PICkit 2 ou 3
K6
embase à 2 picots pour lancer le chargeur d’amorce par bouton ou par liaison
JP1
embase à 2 picots pour mise à niveau du micrologiciel du module ESP8266
JP2
embase à 2x4 picots pour configurer les lignes de signal et d’alimentation vers les autres modules
MOD1 à connecteurs pour raccorder les différents modules Bluetooth / Wi-Fi / USB MOD7 (cf. liste des composants)
36
septembre 2015
Le circuit imprimé est prévu pour recevoir un quartz pour le PIC. Le logiciel du chargeur décrit ici ne s’en occupe pas. Pour le mettre en œuvre, il faut un autre chargeur qui adapte le mot de configuration. Alors, les broches A6 et A7 de K2 ne peuvent plus être utilisées par le micrologiciel.
Un circuit imprimé universel On pourrait vraiment s’y perdre dans le dessin des pistes de la figure 2, avec toutes ces implantations possibles de modules divers, mais à y regarder de plus près, on découvre où se situent précisément les raccordements pour les modules MOD1 à MOD6. Reste à faire le choix de l’unique module désiré qui occupera la place. Exception faite des connecteurs et commutateurs, tout est en CMS, ce qui ne simplifie pas la construction à la main. C’est pourquoi l’e-choppe [1] propose le circuit imprimé 150075-91 sur lequel tous les CMS et les connecteurs sont déjà soudés. Mais comme les différents modules ne seront décrits en détail que le mois prochain, il est préférable de patienter encore un peu. Il y a sur le circuit imprimé plusieurs connecteurs et embases pour différents usages. Pour la clarté, reportez-vous au tableau 2 qui en donne un aperçu complet. En usage normal, JP2 sert au passage des signaux TX et RX entre le PIC et le
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
module en place. D’habitude, on relie la broche 3 à la 4 et la broche 5 à la 6, tandis que les broches 7 et 8 (GND) sont déjà interconnectées par une piste, ce qui est pratique quand on veut brancher un module externe sur JP2. Sur la broche 2, on trouve l’alimentation de 3,3 V fournie à la carte par le régulateur de tension, alors que la broche 1 est reliée à la connexion d’alimentation du module. Il y a deux manières d’alimenter le module :
Figure 3. Le circuit imprimé assemblé, l’e-BoB BL600 d’Elektor y est installé.
• W pour Write, permet d’écrire une valeur donnée sur une broche spécifique. Format : W broche valeur. Exemple : w a3 1 passe la broche d’E/S A3 au niveau haut. • R pour Read, permet de lire la valeur sur une broche déterminée. Format : R broche. Exemple : r b4 lit la valeur de la broche B4. Le microcontrôleur répond selon le format : R broche valeur, donc dans l’exemple par R B4 1. • S pour Settings. On détermine ainsi la fonction d’une broche. Format : S broche fonction, la fonction est codée par un nombre. C’est 0 pour
A0
X
X
X
A1
X
X
X
spécial (6)
MLI (5)
Cap sense (4)
C A/N (3)
Inutile d’attendre que vous ayez une carte d’E/S entre les mains pour vous parler des commandes dont vous aurez à vous servir pour gérer la carte. Supposons qu’une liaison avec le module (Bluetooth, Wi-Fi ou USB) soit en service. C’est qu’il y a une communication sérielle transparente entre l’appareil Android et le microcontrôleur sur la carte d’E/S pour Android. Là, c’est une appli qui permettra d’envoyer des commandes au microcontrôleur. Le micrologiciel les interprète et agit en conséquence sur les E/S. Ces ports ont été numérotés d’après les dénominations du microcontrôleur : A0 à A7, B0 à B7 et C0 à C7 (cf. aussi tableau 3). On dispose de quatre types de commandes :
sortie (2)
ligne
Les commandes
entrée à rappel vers le haut (1)
Tableau 3. Fonctions possibles des lignes d’E/S entrée hte impédance (0)
Le module doit être alimenté en 3,3 V. C’est le cas des modules Bluetooth et Wi-Fi. Alors, il faut relier ensemble les broches 1 et 2. Lors de l’installation d’une passerelle e-BoB FT232R USB/série (110553-91) ou d’un e-BoB Android (130516-91), il faut les alimenter en 5 V par leur connecteur USB et dans cette circonstance, les broches 1 et 2 sur JP2 ne peuvent en aucun cas être reliées entre elles.
A2
X
X
X
A3
X
X
X
A4
X
X
A5
X
X
A6
X1
X
A7
X1
X
B0
X
X
X
X
X
X
B1
X
X
X
X
X
X
B2
X
X
X
X
X
X X
X X X
B3
X
X
X
X
X
B4
X1
X1
X
X
X
B5
X1
X1
X
X
X
B6
X
X
X
X
B7
X
X
X
X
C0
X1
X
C1
X1
X
X
C2
X1
X
X
C3
X1
C4
X
C5
X
pont MLI avec A6 pont MLI avec B0
pont MLI avec B6 compteur pont MLI avec C1 I2C: SCL I2C: SDA
X
C6
TX (vers module Bluetooth/Wi-Fi/USB)
C7
RX (d’un module Bluetooth/Wi-Fi/USB)
S
1
enregistreur
X
horloge
Y
numéro de version/série
Z
réglage global
Possibilité de faire changer la valeur
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
septembre 2015
37
découvrir
créer
faire une entrée à haute impédance, 1 crée une entrée avec résistance de rappel vers le haut « molle » (weak pull-up). Le 2 détermine une sortie. Un 3 transforme la broche en entrée de C A/N, tandis que le 4 en fait une entrée de capteur capacitif. Avec un 5, on obtient une sortie MLI. Le 6 est réservé à une fonction spéciale. Exemple : s b3 3 fait de la broche B3 une entrée de C A/N. En supplément, on peut encore fixer d’autres paramètres. À chaque broche sont attribués trois registres d’état à 8 bits, adressables en faisant suivre le numéro de broche de 1, 2 ou 3. C’est ainsi que dans l’exemple s b32 8, le paramètre du deuxième registre d’état est mis à la valeur 8. L’état du registre 0 est d’ailleurs la fonction de la broche précédemment adressée ; donc s b3 3 est identique à s b30 3. • G pour Get, permet de lire un réglage. Format : g broche. Le microcontrôleur, lui répond sous la forme G Broche valeur. Exemple : g b3 donne G B30 3. Les commandes et numéros de broches ne sont pas sensibles à la casse, mais le microcontrôleur répond toujours en lettres capitales. Lors du débogage, comme le contrôleur répète en écho les entrées, il est pratique d’écrire les commandes en minuscules, de manière à discerner facilement le texte de l’appareil Android en petites lettres de celui de la carte d’E/S en majuscules. Un document séparé (150057-W) qui reprend toutes les fonctions est disponible gratuitement sur [1]. Dans la deuxième partie de cette série, nous examinerons les modules Bluetooth, Wi-Fi et USB et nous verrons une appli qui utilise la carte d’E/S pour Android pour l’insolation et la gravure de circuits imprimés. (150057 – version française : Robert Grignard)
38
septembre 2015
partager
Figure 4. Quelques modules compatibles avec la carte d’E/S pour Arduino.
Liens [1] www.elektormagazine.fr/150057
Webinaire sur la carte d’E/S pour Android : le 17 septembre 2015, l’auteur de ce projet présentera un webinaire sur la carte universelle qu’il a développée. Ne le manquez pas ! La participation est gratuite, il suffit de s’inscrire à temps sur www.elektor.fr/webinar.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
Carte d’E/S Android
La carte d’E/S Android permet de piloter les ports d’un microcontrôleur PIC avec un appareil sous Android, par WiFi, USB ou Bluetooth (versions 2.0 et 4.0). Les classes JAVA (bibliothèques) spécialement développées pour commander la carte d’E/S Android permettent de se concentrer sur l’application plutôt que sur la manipulation des entrées/ sorties. La carte d’E/S Android basée sur un PIC16F1938-I/ SO permet d’accéder aux 25 broches d’E/S. www.elektor.fr/android-i-o-board
déwatteur L’ampli qui ne consomme que la puissance qu’il fournit !
Cet amplificateur de puissance en classe D est construit autour d’une puce audionumérique spéciale, l’IRS2092. Avec ce projet sans CMS, donc très facile à construire, vous disposerez de 200 W sur 8 Ω, mais pratiquement sans dissipation de chaleur. Kit de composants : www.elektor.fr/d-watt
Personal Download for François Cariou | copyright Elektor
découvrir
créer
partager
le déwatteur ampli en classe D
ne consomme que la puissance qu’il fournit Ton Giesberts (labo d’Elektor)
36
décembre 2016
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
Depuis longtemps, Elektor s’est bâti une renommée dans le domaine des projets audio. Pour les nombreux enthousiastes audiophiles, nous présentons cette fois-ci un nouvel ampli de puissance en classe D à partir d’une puce audionumérique spéciale. Vous voulez de la puissance, 200 W sur 8 Ω, mais pratiquement sans dissipation de chaleur ? Oubliez les gros radiateurs !
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
décembre 2016
37
créer
découvrir
partager
FLOATING INPUT
CSH
VAA
VB HIGH SIDE CS
COMP VAA+VSS 2
IN-
HO
OTA
L’amplificateur
GND HV LEVEL SHIFT
COMP
HV LEVEL SHIFT
FLOATING HIGH SIDE
VS
HV LEVEL SHIFT
VCC VSS
DEAD TIME
CSD
PROTECTION CONTROL
HV LEVEL SHIFT HV LEVEL SHIFT
SD
LO
DT
COM
LOW SIDE CS
VREF OCSET
DT
Figure 1. Diagramme fonctionnel de la puce numérique IRS2092 de pilotage de l’amplificateur.
Il y a déjà trois ans que le dernier projet d’amplificateur de sortie audio a été publié [1], l’ampli de puissance compact. Un classique étage final en classe AB pour un plein de puissance, la distorsion en moins. Il a depuis lors convaincu de nombreux audiophiles. Pour changer, ce projet-ci prend le chemin du numérique. Dans un ampli en classe D, les transistors de sortie commutent en permanence à une assez haute fréquence. Un modulateur de largeur d’impulsion traduit la grandeur du signal analogique d’entrée en une largeur équivalente d’impulsions positives et négatives pour constituer le signal de sortie. Là, un filtre éliminera la haute fréquence pour ne laisser passer que le signal analogique amplifié pour le haut-parleur. Avec pareil traitement numérique, on y gagne énormément en rendement, ce qui limite considérablement la dissipation d’énergie et… la dimension du radiateur. Tout tourne principalement autour d’une puce à 16 broches pour piloter un double MOSFET de puissance. De concert avec une panoplie de sécurités, l’ensemble repose sur un unique circuit imprimé, il ne vous reste qu’à lui fournir l’alimentation (stabilisée). Le projet ne compte aucun CMS, sa construction est donc très facile et vous pourrez encore y ajouter votre grain de sel.
38
jets de référence pour l’IRS2092. Mais pourquoi réinventer la roue quand on vous a déjà mâché la besogne ? D’autant que, vous l’avez deviné, notre projet a finalement abouti à bien mieux qu’un calque du circuit d’exemple.
décembre 2016
Sélection du projet On n’a pas attendu l’arrivée des puces spécialisées pour faire des amplis en classe D (les anciens se souviennent encore de Woodstock), mais sans elles, c’est plus compliqué. Par bonheur, différents fabricants proposent une solution mono-puce pour amplificateur en classe D. Pour de petites puissances, on trouve quantité de puces, mais si vous cherchez une grande puissance conjuguée à une bonne qualité, le choix s’amenuise. Nous avons découvert une solution épatante avec une puce développée par International Rectifier (aujourd’hui Infineon), l’IRS2092. Sous l’appellation de Protected Digital Audio Amplifier, ce DIP à 16 broches contient tout le nécessaire à la construction d’un ampli de qualité en classe D relativement simple, il ne lui manque que quelques transistors de puissance. Il dispose des pilotes de grille capables de fournir un fort courant aux MOSFET de puissance qui suivent, d’un modulateur MLI à autoamorçage, d’une protection bidirectionnelle en courant, d’une temporisation programmable de temps mort pour la commande de MOSFET, il supporte aussi des fréquences jusqu’à 800 kHz. Son diagramme fonctionnel est à la figure 1. Infineon offre, outre la fiche technique [2], une série de notes d’application et de nombreux pro-
Avec une puce conçue spécialement pour une tâche précise, mieux vaut partir de l’application standard du fabricant, c’est vrai pour l’IRS2092 aussi. La note d’application AN-1138 [3] fournit une description détaillée de la puce. La figure 2 vous montre notre version de l’ampli, dans laquelle la configuration autour de l’étage pilote IC2 et du double MOSFET T1 est pratiquement conforme. T1 est d’un type spécial pour ce genre d’applications, avec deux MOSFET à canal N, rassemblés sous un même boîtier. L’IRFI4020H-117P appartient à la famille Digital Audio MOSFET d’Infineon et se caractérise par un UDS max de 200 V, un ID cont de 9,1 A et une RDS(on) de 80 mΩ. Il est parfaitement adapté aux étages de puissance de 200 à 300 W sur 8 Ω. Il est bien plus facile de monter ce double MOSFET sur un radiateur et le tout sur le circuit imprimé. La rétroaction entre la sortie et l’entrée passe par R7/R8, où R8 forme avec C6 un filtre pour les signaux HF. Le gain est déterminé par (R7+R8)/(R5+R6). L’impédance d’entrée dépend sur cet amplificateur inverseur de R5 + R6, elle est assez basse, environ 3,3 kΩ. C’est pourquoi il est précédé d’un étage tampon, l’ampli op IC1A, un modèle rapide AD8031ANZ à excursion totale en tension. Le cavalier JP1 définit laquelle des deux entrées est branchée. L’impédance d’entrée de l’ampli op s’élève à 11 kΩ. Le gain est actuellement de un, mais vous pouvez le modifier en changeant R3 : A =R4/R3 + 1. Il est alimenté par les stabilisateurs ±5 V qui fournissent aussi les tensions auxiliaires pour IC2, nous y reviendrons. Presque chaque composant autour de IC2 détermine un paramètre. Certaines résistances définissent les deux tensions
Figure 2. Le schéma complet de l’amplificateur en classe D. Au-dessus, l’ampli proprement dit, en bas, les sécurités et le circuit de démarrage en douceur.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
U
B 1k
D1
D2
+5V -5V
U = unbuffered B = buffered 2x 1N4148 R1 3 2
1
IC3 7805 3
R6 3k0
100n
C16
+5V
C5 1n
R14
C15 10n
-5V
+5V R10
C10
R9
50V 10u
R11
P1
1k
C11 100n
C7 1n C8 1n C9 1n
C14
3
4
2
5
R7 120k
+12V
C20 10u 50V
8
D6
-VP
OCSET
R18
9
DT
COM
LO
VS
HO
CSH
VB
15
MUR120G
R16 4R7 R15
VCC
12
VCC 1
7
R17 6k8
IC2 IRS2092PBF
VAA IN-
COMP
GND
CSD 6
VSS VREF
C13
50V 10u
100n
C6 150p
16
14 13
11
10
R8 1k
R21
C21 22u 50V
VCC R19
R20
Ext. Test DC
D7
100n
C22
C23
+VP
BAV21 R24
R25 18R
R26 18R
C25
-VP
C24
R43
680u 100V
C35
D12
R42
1N4148
D13
100n
R41
+5V
IRFI4020H-117P
T1
680u 100V R22
R23
Amp.
JP2 Ext.
R39
R40
R44
RE1A
C26
C27
R45
C28 100n 100n 100n
R27
1W
RT314048 5520 Ω T8
T9
4x BC547C 1N4148
L1
22µH
R48
+5V
T10
T11
D14
R30
T2
D10
18V 1W3
R49
R50
R31
1
3
D8
+VP
IC5 7812
TIP122G
C33
1u 50V
R28
D9
-VP
2x 1N4007
C29
C30
100n
68V R53
0W5
D16
+VP
470n
R51
T12
R54 10k D17
1N4148
C32
100n
C31
+12V
10u 50V
-VP
–VP
+VP
RE1B
R29
2W
Over-Voltage Protection
R52
D15
0W5
68V
2 1
2 1
2 1
2 1
2 1
K1
K2
K3
K4
K5
LS+
LS-
+
0
–
39
décembre 2016
www.elektormagazine.fr
R12 2W C17 1u 50V
C4 R5 330R
C2 100n C3 100n
C18 100n
D3
C12
C34
T7
OCPL=19.5A R37
R38
T6
IRFD 210PBF
150115 - 11
Personal Download for François Cariou | copyright Elektor
D4 18V 1W3
JP1
10u
+5V
7
IC1 4
3
50V 10u
R36
2u2 50V
R47 150k
-VP
2
+VP
U B
6
AD8031ANZ IC1 R4 2k
-5V C19 1u 50V 2
-5V 1N4007
R35
D11
T5
+5V
BC557C
T4
1N4148 R33 4x BC547C R34
100u
R46 10k
Under-Voltage Protection
2k2
C1 1n
D5 18V 1W3 R13
7905 IC4
-VP
R32
T3
-5V
22k
10R
47k
22k
1R
10R
10R
22k
120k
2k7
10k
10k
820k
10k
15k 10M
1M
5k6 NM
8k2 10k
33k OCPH=19.5A 22k 4k7
3k0 10k 22k
10R
10R 6k8 10k
15k
10k
2W
-VP
HS1
2k2
2 1
1k8 1k8
R3 NM
R2 10k
470R CSD 4k7
projet de lecteur
projet labs
créer
découvrir
limites, le temps mort, le pilotage du MOSFET côté supérieur et la rétroaction depuis la sortie. Il faut au modulateur deux tensions symétriques de plus et moins 5 V. Elles ne sont pas prélevées simplement des sources principales par résistance et Zener, mais passent par une stabilisation séparée des œuvres de IC3 et IC4 pour leur garantir la qualité suffisante, surtout si l’alimentation principale n’est pas bien stabilisée. Pour limiter à un niveau sûr les tensions d’entrée des stabilisateurs et la dissipation, il y a aux entrées les diodes Zener D4 et D5 (les tensions d’alimentation peuvent s’élever à maximum ±70 V). Aux raccordements des tensions auxiliaires VAA et VSS sur la puce, un découplage supplémentaire composé de R10/C10/C11 et R11/C12/C13 évite toute influence des commutations à HF sur les deux stabilisateurs. La diode D3 protège
partager l’IRS2092 en cas de perte de l’alimentation négative. La tension d’alimentation négative sur la broche VCC, utilisée pour la commande du MOSFET d’en bas, vaut 12 V de plus que −VP, la tension négative principale. Comme cette ligne doit supporter un courant plus élevé que celle des tensions auxiliaires, son circuit de stabilisation comporte en plus, en série avec IC5, un Darlington de puissance (T2). C’est lui qui prend en charge le surplus de puissance à dissiper. La broche VCC de IC2 est découplée localement par C20 et R15. La tension d’alimentation positive (flottante) VB de IC2 sert à la commande du MOSFET du haut. Cette broche est reliée à un circuit auto-élévateur composé de R16/D6/C21 et R21, cette dernière est requise pour la charge de C21 avant le démarrage de la MLI. La résistance R16 limite les pointes de courant.
Résultats de mesure Mesures faites sur la version 6/8 Ω avec alimentation ±60 V (Hypex SMPS400A400), B = 22 kHz, R7 = 100 kΩ • Sensibilité d’entrée :
1,3 V (189 W/8 Ω, DHT+b = 1 %)
1,25 V (174 W/8 Ω, DHT+b = 0,1 %)
• Impédance d’entrée :
3,33 kΩ /11 kΩ
• Puissance de sortie permanente : 174 W sur 8 Ω (DHT+b = 0,1 %, 1 kHz)
189 W sur 8 Ω (DHT+b = 1 %, 1 kHz)
224 W sur 6 Ω (DHT+b = 0,1 %, 1 kHz)
246 W sur 6 Ω (DHT+b = 1 %, 1 kHz)
• Largeur de bande de puissance : 5 Hz (−3 dB) à 20 kHz (±1 dB) • Vitesse de balayage :
15 V/µs (8 Ω)
• Temps de montée :
4,4 µs (8 Ω)
• Rapport signal/bruit :
> 77 dB (linéaire, B = 22 Hz à 22 kHz)
(référence 1 W/8 Ω)
> 80 dBA
• Distorsion harmonique + bruit : (B = 22 kHz)
0,014 % (1 kHz, 1 W/8 Ω) 0,004 % (1 kHz, 50 W/8 Ω)
0,024 % (1 kHz, 1 W/6 Ω)
0,0046 % (1 kHz, 50 W/6 Ω)
• Distorsion d’intermodulation :
0,013 % (1 W/8 Ω)
(50 Hz : 7 kHz, 4 : 1)
0,023 % (50 W/8 Ω)
0,013 % (1 W/6 Ω)
0,017 % (50 W/6 Ω)
• Distorsion IM dynamique :
0,037 % (1 W/8 Ω)
(3,15 kHz carré + 15 kHz sinus) 0,009 % (50 W/8 Ω)
0,043 % (1 W/6 Ω)
0,008 % (50 W/6 Ω)
• Facteur d’amortissement :
174 (1 kHz, 8 Ω)
• Rendement à pleine puissance :
93 % sur 8 Ω
(THD+N = 0,1 %)
40
94 % sur 6 Ω
• Protection CC :
+3/−4 V
• Décalage CC en sortie :
< 0,3 mV
• Retard à l’enclenchement :
6 s
décembre 2016
Le temps mort DT, celui durant lequel on force les deux MOSFET à bloquer pour éviter que de fortes pointes de courant n’y circulent en même temps, est programmé par le diviseur R19/R20 en quatre pas : 105, 65, 40 et 25 ns. Nous avons choisi le temps mort le plus court, 25 ns en éliminant R20. Allonger le temps mort entraîne une augmentation considérable de la distorsion harmonique (DHT) aux fréquences élevées ! Notez toutefois qu’un MOSFET met habituellement deux fois plus de temps à bloquer qu’à conduire. Les résistances R25 et R26 réduisent dans les deux sens les courants de et vers les grilles des MOSFET de puissance. Les courants de court-circuit des pilotes de grille s’élèvent à 1 A fourni et 1,2 A absorbé. Avec 18 Ω pour R25 et R26, les courants de pointe de charge et décharge sont limités aux alentours de 0,5 A. Le diviseur de tension R17/R18 détermine le seuil de limitation de courant dans le côté bas. La caractéristique RDS(on) des sorties des MOSFET est ici utilisée pour mesurer le courant. Le coefficient de température positif de la RDS(on) du MOSFET a l’avantage de réduire le courant limite quand la température du MOSET s’élève. L’IRS2092 dispose d’une référence de tension interne de 5,1 V (VREF, broche 7) pour le réglage précis du seuil de courant. Il y a malheureusement une assez grande tolérance sur la résistance drain/source d’un MOSFET. Avec une tension de grille à source de 10 V, la RDS(on) du MOSFET utilisé présente une valeur typique de 80 mΩ et maximale de 100 mΩ à 25 °C. La R DS(on) grimpe à plus de 175 mΩ à 125 °C. Sur ce projet, nous avons réglé la tension de seuil à 1,56 V pour laquelle le seuil de courant s’établit typiquement à 19,5 A pour une température de jonction de 25 °C. À 125 °C, le seuil s’abaisse à environ 8,7 A. Si le courant de sortie devient trop fort, l’IRS2092 le bloque et les sorties LO et HO sont mises au niveau bas pour protéger le MOSFET. Le seuil de limitation de courant du côté haut est réglé par la broche 16, CSH. Elle a une tension de seuil fixe à 1,2 V par rapport à VS (broche 13). En plus de la limitation de courant côté haut par un diviseur de tension, il faut la diode de blocage D7 pour empêcher qu’une tension trop élevée parvienne à la broche CSH en cas de déconnexion du côté haut. En raison de la chute de
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
cet étage final de puissance en classe D ne consomme que ce qu’il restitue
tension de 0,6 V quand D7 conduit, la tension drain/source du MOSFET d’en haut se situe encore 0,6 V plus haut. La résistance R24 fournit un courant de polarisation à D7 quand le MOSFET d’en haut est commuté. Le diviseur de tension R22/R23 réduit la tension sur le MOSFET d’en haut et sur D7. Donc, si nous voulons y régler le même seuil qu’en bas, il faut tenir compte de D7. On obtient alors une valeur de 10 kΩ pour R23 et 8 kΩ (arrondi à 8,2 kΩ) pour R22. Vous trouverez le calcul dans la description de cet amplificateur sur le site du labo [4]. Le signal MLI en sortie des MOSFET passe par le filtre du second ordre composé de la bobine à noyau torique L1 et le condensateur C29. Suit encore le réseau de Boucherot R28/C30 qui assure à l’ampli une charge de sortie suffisante aux fréquences élevées.
tion. Mieux vaut alors adapter l’ampli et employer une autre tension d’alimentation, comme l’indique l’encadré Configuration sur 4 Ω.
Protections Nous avons complété les protections incorporées pour l’IRS2092 par quelques circuits supplémentaires : une protection contre les surtensions sur les deux alimentations, une protection contre la sous-tension (en double aussi) et une sécurité en continu par démarrage en douceur. Chacune de ces protections peut faire chuter le relais de sortie et débrancher l’IRS2092.
règne une trop haute tension, en vue de protéger l’enceinte qui y est branchée. La protection en continu réagit sur quelques volts. Cette valeur relativement haute tient compte du fait qu’en sortie de l’amplificateur, toute tension continue ne peut s’y manifester que si aucune charge n’y est connectée et que l’IRS2092 est coupé. Il subsiste manifestement un courant de repos en sortie de la broche VS quand l’IRS2092 est en mode de fermeture. Ce sont R38/R39/R40/C34/T6/T7 qui charpentent la protection en continu. Le diviseur de tension R39/R40 en définit le seuil d’activation. Avec les valeurs de
La protection en continu fait en sorte que la sortie soit isolée dès qu’il y
Les condensateurs C22 à C28 forment le découplage indispensable de l’alimentation. Comme sur tout amplificateur en classe D, il se peut qu’un phénomène de bus pumping se produise, qui renvoie de l’énergie du filtre de sortie vers l’alimentation. Il survient surtout à haut niveau, en basse fréquence et avec des impédances de charge basses. Avec une alim à découpage stabilisée, il peut rendre instable la rétroaction de la régulation. La meilleure façon d’étouffer une éventuelle montée de la tension d’alimentation est d’installer de gros condensateurs en parallèle sur les lignes d’alimentation. Commencez par un électrolytique de 10 000 µF/100 V sur chacune d’elles. Faites-le avec diplomatie, la plupart des alimentations à découpage n’apprécient pas les charges capacitives trop élevées, consultez les spécifications du constructeur. La tension d’alimentation de l’amplificateur se monte à ±60 V pour une version à 6/8 Ω (pour R7, le mieux est de prendre une valeur de 100 kΩ). Le maximum se situe près de ±70 V, mais alors, la distorsion augmente du fait de la présence accrue de la composante MLI dans le signal de rétroaction. Si vous utilisez l’ampli avec une charge de 4 Ω, l’alimentation ira régulièrement en limita-
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
décembre 2016
41
découvrir
créer
Liste des composants Résistances : (5 %, 0,25 W, sauf mention contraire) R1, R8 = 1 kΩ R2, R23, R24, R30, R34, R36, R37, R46, R50, R54 = 10 kΩ R3, R20 = non installées R4 = 2 kΩ, 1 % R5 = 330 Ω R6, R18 = 3 kΩ, 1 % R7, R52 = 120 kΩ R9 = 470 Ω R10, R11, R15, R31 = 10 Ω R12, R13 = 1,8 kΩ 2 W R14 = 2,2 kΩ R16 = 4,7 Ω R17, R35 = 6,8 kΩ R19 = 5,6 kΩ R21 = 33 kΩ R22 = 8,2 kΩ R25, R26 = 18 Ω R27 = 1 Ω, 1 W R28 = 10 Ω 1 W R29 = 2,2 kΩ 2 W R32, R40 = 4,7 kΩ R33, R43 = 15 kΩ R38, R39, R45, R48, R51 = 22 kΩ R41 = 1 MΩ R42 = 10 MΩ R44 = 2,7 kΩ R47 = 150 kΩ R49 = 820 kΩ R53 = 47 kΩ P1 = potentiomètre d’ajustage 1 kΩ vis au-dessus
Condensateurs : C1, C5, C7, C8, C9 = 1 nF/63 V, 1 %, polystyrène, au pas de 7,18 mm (LCR Components EXFS/HR 1 000 pF ±1 %) C2, C3, C11, C13, C16, C18, C31 = 100 nF/50 V, 10 %, X7R, au pas de 5,08 mm C4 = 10 µF/63 V, 10 %, MKT, au pas de 15 mm C6 = 150 pF/500 V, 5 %, mica argenté, au pas de 5,9 mm (Cornell Dubilier
42
décembre 2016
partager CD15FD151JO3F) C10, C12, C14, C20, C32 = 10 µF/50 V, 20 %, 5×11 mm, au pas de 2 mm C15 = 10 nF/100 V, 10 %, X7R, au pas de 5,08 mm C17, C19, C33 = 1 µF/50 V, 20 %, 5×11 mm, au pas de 2 mm C21 = 22 µF/50 V, 20 %, 5x11 mm, au pas de 2 mm C22, C24 = 100 nF/250 V, 10 %, MKT, 4×10 mm, au pas de 7,5 mm (TDK B32520C3104K000) C23, C25 = 680 µF/100 V, 20 %, 28 mΩ/ 2,57 A, 18×40 mm, au pas de 7,5 mm (Rubycon 100ZL680MEFC18X40) C26 = 100 nF/200 V, 10 %, X7R, au pas de 5,08 mm (Kemet C330C104K2R5TA) C27, C28, C30 = 100 nF/400 V, 5 %, polypropylène, au pas de 15 mm (TDK B32652A4104J000) C29 = 470 nF/400 V, 5 %, polypropylène, au pas de 15 mm (TDK B32652A4474J000) C34 = 100 µF/10 V bipolaire, 20 %, au pas de 2,5/3,5 mm, diam. max. 8 mm C35 = 2,2 µF/50 V, 5x11 mm, au pas de 2 mm
Inductances : L1 = noyau torique 22 µH, T130-2 (Micrometals), max. 20×40 mm (2 m fil de cuivre émaillé de 1,5 mm de diam.)
Semi-conducteurs : D1, D2, D11, D13, D14, D17 = 1N4148 D3, D8, D9 = 1N4007 D4, D5, D10 = BZX85C18 SB00018/E1, diode Zener 18 V/1,3 W D15, D16 = BZX55C68-TR, diode Zener 68 V/0,5 W (ou BZX79-C68 de NXP) D6 = MUR120G (200 V/1 A) D7 = BAV21 (250 V/250 mA) D12 = LED verte, 3 mm T1 = IRFI4020H-117P T2 = TIP122G T3, T4, T6, T7, T9, T10, T11, T12 = BC547C T5 = BC557C T8 = IRFD210PBF
IC1 IC2 IC3 IC4 IC5
= = = = =
AD8031ANZ IRS2092PBF MC7805CTG MC7905ACTG MC7812CTG
Divers : K1, K2, K3, K4, K5 = connecteur mâle plat Faston encartable, 6,35 × 0,81 mm, au pas de 5,08 mm JP1, JP2 = embase à 3 picots au pas de 2,54 mm, avec cavaliers RE1 = relais encartable SPCO, 16 A, 48 V/5,52 kΩ (TE Connectivity/Schrack RT314048) HS1 = radiateur encartable 2,6 K/W, distance entre 2 broches de montage 25,4 mm (Aavid Thermalloy 530002B02500G) radiateur pour IC4/IC5/T2 : plaque d’aluminium de 27 × 90 mm, 2 mm d’épaisseur radiateur pour IC3 : plaque d’aluminium de 30 × 30 mm, 1 ou 2 mm d’épaisseur matériel d’isolation (pastille thermique TO220 + anneau isolant TO-220) pour T2, IC3, IC4, IC5 6× broche à souder diam. 1,3 mm support pour CI DIP-16 support pour CI DIP-8 circuit imprimé 150115-1 ou kit complet avec circuit imprimé (mono), sans alimentation 150115-71
Nécessaire au raccordement d’une alimentation Hypex SMPS400A400 : 1× boîtier connecteur à 1 rangée droite de 5 contacts femelles JST série VHR pour connecteur encartable au pas de 3,96 mm (RS Components 820-1188, ensemble de 5) 1× boîtier connecteur JST au pas de 3,96 mm, 1 rangée droite de 3 contacts femelles série VHR encartable, (RS Components 820-1175, ensemble de 5) 5× cordon JST sertissage vers sertissage (RS Components 820-1135, ensemble de 5) 3× connecteur isolé Faston femelle, au pas de 6,35 mm
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs résistances indiquées, il se situe entre +3 V et −4 V. Les niveaux choisis divergent vers le haut par rapport à l’habitude, mais ne risquent pas de porter atteinte au système de haut-parleurs. Si jamais T6 ou T7 entre en conduction sous une tension d’alimentation trop haute, T5 deviendra immédiatement passant et activera à son tour T4, lequel décharge le condensateur électrolytique C35 de manière à bloquer le MOSFET T8 et faire chuter le relais. Simultanément, l’IRS2092 est mis hors tension par la décharge de C14 à travers T3 sur la broche CSD. Ce transistor travaille en adaptateur de niveau. La diode D11 près de T5 est là pour empêcher que T3 conduise en permanence à cause de R35. C’est un petit MOSFET qui active le relais, il facilite le travail du circuit de temporisation d’allumage, le condensateur C35 peut ainsi garder des proportions raisonnables pour assurer avec R41 la constante de temps voulue et se faire décharger plus vite par T4. L’embase JP2 permet de tester la sécurité du courant continu. En service normal, le cavalier est mis sur « Amp ». Pour changer le niveau du continu ou essayer une autre valeur pour R40, on le place sur « Ext. Test DC » pour y brancher une alim continue réglable. Le courant maximal de drain du double MOSFET IRFI4020H-117P est de 9,1 A (T C = 25 °C). À une température de 100 °C, il n’est plus que de 5,7 A. Aussi, avons-nous ajouté une sécurité anti-surtension qui limite la dissipation pour une tension d’alimentation supérieure. Cet amplificateur est conçu pour tolérer une tension maximale de ±70 V. La sécurité anti-surtension, basée sur les deux diodes Zener D15 et D16, réagit à environ ±75 V. Selon les résistances en série R52 et R53, le transistor T12 se met à conduire pour une trop forte tension positive ou négative et, comme pour la protection en continu, met T5 en conduction pour désactiver le relais par T4 et T8. La diode D17 permet la détection côté positif ; sans elle, la tension sur l’émetteur de T12 monterait effectivement lors
Figure 3. L’amplificateur au grand complet se trouve sur le même circuit imprimé, radiateurs compris. Il n’a besoin d’aucun refroidissement complémentaire.
projet de lecteur
Figure 4. Il y a deux petites plaques d’aluminium de 1 et 2 mm d’épaisseur à faire soi-même, la plus petite pour IC3, la plus grande pour IC4, IC5 et T2.
Figure 5. La bobine de 45 spires de fil de cuivre doit être enroulée selon une technique éprouvée pour limiter autant que possible la capacité parasite.
d’une surtension, mais pas suffisamment pour le faire conduire.
des composants traversants à installer, chacun de vous pourra donc aisément construire l’amplificateur, le modifier, y mener des expériences. Vous pouvez acheter à l’e-choppe un circuit imprimé nu, mais nous proposons aussi un kit (150115-71) qui comprend le circuit imprimé, tous les composants nécessaires et les radiateurs. Les trous restent à forer.
La protection contre la sous-tension est plus complexe, elle est aussi responsable de faire chuter le relais lors de l’extinction de l’amplificateur pour éviter le bruit de choc dans les enceintes. Au lieu de deux Zener, ce sont des transistors, T10 et T11, qui s’occupent ici de la détection. Ils sont tous deux passants tant que les deux tensions d’alimentation sont assez hautes, d’où T9 bloque. Sinon, T9 se met à conduire et, par l’intermédiaire de T5, T4 et T8, le relais est désactivé. D14 empêche la conduction de T11 quand T10 est à saturation, auquel cas, le collecteur de T10 est à −0,6 V, niveau qui serait celui de l’émetteur de T11 en l’absence de D14, avec pour conséquence qu’il continuerait de conduire avec une très basse tension d’alimentation. La sécurité contre la sous-tension positive serait alors compromise. Ce sont les diviseurs de tension R49/R50 pour le positif et R47/R46 pour le négatif qui fixent les seuils de détection. Les valeurs de R49 et R47 dépendent aussi du courant de base de T11 et du courant d’émetteur de T10. Avec les valeurs données dans le schéma, la sécurité réagira à toute tension inférieure à ±40 V environ.
Construction : trois radiateurs et une bobine La figure 3 représente le circuit imprimé pour l’amplificateur en classe D. Il est relativement grand, mais tous les radiateurs nécessaires y sont, nul besoin de grande et lourde plaque de refroidissement à l’extérieur. De plus, il n’y a que
La plupart des composants se montent sans la moindre difficulté. Il ne faut pas encore installer T1. Utilisez pour les deux puces, IC1 et IC2, des supports de qualité, de préférence avec des contacts de précision. Pour les condensateurs du modulateur MLI et les découplages HF du signal d’entrée audio (C1/C5/C7/C8/C9), il est important qu’ils soient de la meilleure qualité. Raison pour laquelle il y a sur le circuit imprimé beaucoup de place disponible pour y loger des modèles au polystyrène, au polypropylène ou au polyester ordinaire. Pour le découplage de la ligne de rétroaction (C6), nous préconisons même une version au mica argenté de 150 pF/500 V. Toute autre technologie est déconseillée. Pour le condensateur C4 à l’entrée, il faut bien se résoudre à utiliser une exécution au standard MKT, un polypropylène aurait une trop grande dimension, trop vulnérable aux parasites. Il ne faut au régulateur de tension IC3 qu’un petit radiateur à fabriquer soimême dans un morceau d’aluminium de 1 mm d’épaisseur, une surface de 30 × 30 cm suffira. Il n’est pas nécessaire d’isoler le régulateur, la surface de refroidissement est reliée à la masse. Installez
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
décembre 2016
43
découvrir
créer
partager
Quelques caractéristiques mesurées
Audio Precision +3 +2
Instrument de mesure : Audio Precision System Two Cascade Plus 2722 Dual Domain
+1 -0 -1 -2
d B r
Image A Ici, l’amplitude est mesurée en fonction de la fréquence pour des charges de 4, 6 et 8 Ω. La courbe près de 20 kHz montre que les caractéristiques du filtre de sortie constituent un bon compromis pour les différentes impédances. Entre 10 et 20 kHz, la déviation est d’environ ±1 dB. Sur 8 Ω (cyan), la fréquence de résonance du filtre de sortie est facilement identifiable. Sur 6 Ω (vert), la courbe reste pratiquement plate et sur 4 Ω (bleu), la fréquence de coupure est un peu plus basse.
A
-3 -4 -5 -6 -7 -8 -9 -10 -11
A
-12
10
20
50
100
200
500
1k
Hz
2k
5k
1k
2k
10k
20k
50k
100k
Audio Precision 10 5 2 1 0.5
Image B Distorsion harmonique totale plus bruit (DHT+b) à 1 W et 50 W, sur une charge de 8 Ω et pour des largeurs de bande de 22 kHz et 80 kHz. D’habitude, on ne dévoile pas de larges bandes passantes dans les fiches techniques des étages de puissance en classe D, parce que la fréquence de commutation y joue un rôle prépondérant. L’amplificateur produit effectivement des signaux au-dessus de 22 kHz, il est donc honnête de montrer ce qui s’y passe, même si on ne peut pas l’entendre. La courbe en rouge représente la DHT+b à 50 W, mesurée avec une largeur de bande de 22 kHz. La courbe en bleu est mesurée à la même puissance, mais sur une largeur de bande de 80 kHz. La courbe en cyan montre la DHT+b à 1 W et sur une bande passante de 22 kHz, enfin, la courbe verte présente la DHT+b à 1 W et 80 kHz de largeur de bande. Toutes les mesures ont été effectuées avec un filtre passe-bas elliptique d’ordre neuf dont la fréquence de coupure est de 200 kHz, placé devant l’entrée de l’analyseur, de manière à éliminer les résidus de la modulation de largeur d’impulsion de l’amplificateur.
0.2
%
0.1 0.05 0.02 0.01 0.005 0.002
B
0.001 20
50
100
200
500
Hz
5k
10k
20k
Audio Precision +0 -10 -20 -30 -40 -50 -60
d B -70 r A
-80 -90
-100 -110 -120 -130 -140
C Image C La FFT de 1 kHz à 1 W/8 Ω. Pas d’harmoniques visibles, sauf à bien y regarder, encore une harmonique deux dans le bruit. La DTH+b est à 0,014 % et là, il n’y a que du bruit. Dans cette FFT et dans la suivante, la fréquence de commutation de l’alimentation Hypex utilisée est bien visible près du 90 kHz (selon la fiche technique du fabricant, elle se situe entre 80 et 120 kHz), mais elle est à très bas niveau, −82 dB, aucun souci à se faire.
-150
10
20
50
100
200
500
1k
2k
5k
10k
20k
50k
100k
100
200
500
1k
2k
5k
10k
20k
50k
100k
5m 10m 20m
50m
200m
500m
Hz
Audio Precision +0 -10 -20 -30 -40 -50
d B r A
-60 -70 -80 -90 -100 -110 -120 -130
Image D La même FFT que dans C, mais ici, nous sommes à une puissance de 50 W/8 Ω. Quelques harmoniques sont visibles. La DHT+b est maintenant à 0,004 %. La fréquence de commutation est tombée au niveau insignifiant de −96 dB.
-140
D
-150
10
20
50
Hz
Audio Precision 10 5 2 1
Image E La DHT+b en fonction de la puissance de sortie (1 kHz/8 Ω, B = 22 kHz). La largeur de bande de mesure est ici réduite pour mieux suivre l’évolution de la distorsion. À partir de 50 W environ, la distorsion s’élève peu à peu. Avec une tension d’alimentation nominale, l’amplificateur peut délivrer un bon 200 W.
44
décembre 2016
0.5 0.2
% 0.1 0.05 0.02 0.01 0.005 0.002 0.001
E
1m
2m
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
W
1
2
5
10
20
50
100
300
projet labs la plaque contre le régulateur pour qu’elle vienne quelques millimètres au-dessus du circuit imprimé, sans occulter le trou de fixation du coin (voyez à la figure 4). IC4, IC5 et T2 sont montés sur une même plaque d’aluminium de 2 mm d’épaisseur, dimensions 27 × 90 mm, dont une partie est pliée à 65 mm (figure 4). Installez cette plaque contre les trois semi-conducteurs pour qu’elle vienne au moins 5 mm au-dessus du circuit imprimé pour éviter tout contact avec d’autres composants. Ces trois semi-conducteurs doivent être isolés, IC5 et T2 se placent l’un en face de l’autre et se fixent dans le même trou ! La position de ces trous dans la plaque : ils sont distants l’un de l’autre de 40 mm, IC4 se trouve à 14 mm du bord du circuit imprimé. À vous de voir à quelle hauteur les forer. Venons-en au radiateur pour T1. Ce double MOSFET de puissance est dans
projet de lecteur
un boîtier totalement synthétique, il n’y a donc pas lieu de l’isoler. Montez d’abord le radiateur sur le circuit imprimé, enduisez l’arrière de T1 d’une mince couche de pâte thermique et insérez les broches dans les trous appropriés. Appuyez-le contre le radiateur au moyen d’une vis de 12 mm de long, une rondelle plate, une rondelle éventail et un écrou. Vérifiez que ses pattes sont bien dans le circuit imprimé et ne sont pas tordues et fixez-le définitivement. Ce n’est qu’alors que vous pourrez souder les pattes du MOSFET sur le circuit imprimé.
La bobine de sortie Votre travail le plus « dur » sera sans doute la fabrication de la bobine du filtre de sortie. Vous devrez la bobiner à la main sur un noyau torique de 33 mm de diamètre avec du fil de cuivre émaillé de 1,5 mm. Le noyau Micrometals choisi pour son excellente linéarité est fait de poudre de fer, il ne donne qu’un minimum de distorsion. L’inconvénient de ce matériau est sa faible perméabilité, il lui faut donc un grand nombre de spires pour atteindre la valeur d’inductance requise. Pour réaliser le bobinage, il vous faudra 2 m de fil de cuivre émaillé de 1,5 mm de diamètre, de quoi revêtir le noyau de 45 spires. Elles ne tiendront pas toutes sur une seule couche à l’intérieur du noyau. Comme il importe de maintenir la capacité parasite à un minimum, il faut enrouler les spires d’une certaine façon. Le deuxième enrou-
Configuration sur 4 Ω Pour utiliser l’amplificateur avec une charge de 4 Ω, nous préconisons l’usage d’un autre type de MOSFET pour T1, un IRFI4212-117P. Auquel cas, la tension d’alimentation ne doit pas dépasser ±46 V. Il y a en outre quelques modifications à faire. Régler la limitation de courant à une valeur supérieure, R17 passe alors à 6,2 kΩ, R18 à 3,9 kΩ et R22 à 12 kΩ. La limite de courant devient ainsi 15,33 A et la charge peut descendre à 3 Ω. Le relais de 48 V peut maintenant se brancher directement sur la source d’alimentation, R44 est remplacée par un pont de câblage. Il convient aussi d’adapter la rétroaction : R7 descend à 75 kΩ. En service continu à pleine puissance sur 3 Ω, la protection en courant déclenche après quelques secondes, parce que la température du radiateur de IC1 – malgré le haut rendement – s’élève trop. On conseille alors de le doter d’un plus grand radiateur (il n’est pas livrable dans le kit prévu). Sur le site du labo [4], vous trouverez de nombreuses mesures pour la configuration de 4 Ω. Vous y verrez entre autres que l’amplificateur peut fournir 243 W sur 4 Ω avec 1 % de distorsion et même 297 W sur 3 Ω.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
décembre 2016
45
découvrir
créer
lement est posé sur le premier à l’intérieur du noyau. À l’extérieur, en revanche, les spires sont jointives par rapport au premier. La troisième couche vient de nouveau à côté de la première à l’intérieur du noyau et à côté de la deuxième à l’extérieur. On recommence la même procédure pour la quatrième couche. Quand on est arrivé de cette façon à 45 spires, les deux extrémités du fil de cuivre se trouvent de part et d’autre du noyau. Il faudra peut-être un peu improviser ou bidouiller pour avoir les 45 spires les unes près des autres, vous aurez sûrement compris le but de la manœuvre. Servez-vous aussi de la photo de la bobine terminée à la figure 5. Autant le savoir d’avance, du fil de cuivre de 1,5 mm d’épaisseur, c’est assez rigide : il ne se laisse pas facilement plier. Il faut travailler prudemment pour bien serrer les spires autour du noyau, mais sans utiliser d’outil métallique pour ne pas endommager
partager l’isolant du fil. Vous aurez alors une bobine d’une inductance de 33 µH et d’une résistance d’environ 20 mΩ, à placer verticalement sur le circuit imprimé pour la souder à demeure. Et voilà votre carte d’amplificateur prête !
Alimentation et insertion Vient le moment de monter le circuit imprimé avec une alimentation adéquate dans un joli boîtier. Il est évidemment possible de choisir une alimentation classique à gros transformateur, redresseur en pont et condensateurs électrolytiques, mais elle ne sied pas vraiment à une version moderne de l’amplificateur en classe D. En outre, cet ampli donne des résultats de mesure nettement meilleurs avec une alimentation stabilisée. C’est pourquoi nous avons associé notre ampli à une alimentation à découpage de la firme néerlandaise Hypex, développée spécialement pour des amplis de puissance en
classe D. Nous avons retenu le modèle SMPS400A400 qui fournit 400 W à 20 Hz pour une tension nominale de ±64 V. Et avec la faiblesse du secteur dans notre labo, nous arrivons à peine à ±60 V. Avec cette alim, l’amplificateur est à l’aise sous une charge de 6 à 8 Ω tandis qu’à de plus basses impédances, il vaut mieux l’adapter, selon l’encadré, pour éviter d’éventuelles interruptions à forte puissance. La figure 6 vous montre comment assembler deux circuits imprimés d’amplificateur et deux alimentations Hypex dans un boîtier standard. Le câblage y est assez succinct, vu que tout est ramené à un seul circuit imprimé. Nous vous souhaitons beaucoup de plaisir avec ce puissant déwatteur finalement très cool ! Vous trouverez sur le site du labo [4] de plus amples informations et encore d’autres résultats de mesure. (150115 – version française : Robert Grignard)
Figure 6. Deux cartes d’amplificateur et deux modules d’alimentation à découpage sont ici rassemblés dans un boîtier.
Liens [1] www.elektormagazine.fr/110656 [2] www.infineon.com/dgdl/irs2092.pdf?fileId=5546d462533600a401535675f1be2790 [3] www.infineon.com/dgdl/an-1138.pdf?fileId=5546d462533600a40153559a077610d1 [4] www.elektormagazine.fr/labs/200w-class-d-audio-power-amplifier-150511
46
décembre 2016
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
Rejoignez la communauté Elektor Devenez membre GOLD maintenant !
formule GOL D
• 6x magazine im
primé • 6x magazine numérique • accès à l’arc hive d’Elektor (des milliers d’ articles) • accès à plus de 1 000 fichiers Ge rber • le DVD annu
el d’Elektor
• 10% de rem ise da
ns l’e-choppe • des offres ex clusives
formule GRE EN
• 6x magazin e nu
Également disponible abonnement « zéro papier » GREEN !
www.elektor.fr/membres
mérique • accès à l’arc hive d’Elektor (des milliers d’ articles) • accès à plus de 1 000 fichiers Ge rber • 10% de rem ise dans l’e-cho ppe • des offres
Elektor Uno R4
exclusives
Nouveau microcontrôleur, plus d’E/S et plus de possibilités ! Quand un fabricant propose la version B d’un produit donné, les différences entre nouveau et ancien produits sont généralement peu significatives. Ce n’est pas le cas pour l’ATmega328P d’Atmel au cœur de l’Arduino Uno R3. La version B de ce µC a tellement de nouvelles fonctions que l’abandon de la version R3 est justifié : passez à l’Elektor Uno R4. • • • • • • • • • • •
Points forts : ATmega328PB à 16 MHz 2x UART 2x I²C 2x SPI 9 sorties à MLI 8 entrées analogiques 24 broches d’E/S à usage général Code source ouvert, matériel libre Régulateurs de tension embarqués 5 V et 3,3 V Paquet compatible Arduino (installation + bibliothèque)
www.elektor.fr/elektor-uno-r4
Personal Download for François Cariou | copyright Elektor
découvrir
créer
partager
générateur de fonctions par DDS sinus, carrés et dents de scie jusqu’à 10 MHz Theodorou Gerasimos (Grèce) Post-ingénierie : Ton Giesberts (Elektor.Labs)
Les puces DDS (Direct Digital Synthesis) simplifient grandement la construction de la partie analogique des générateurs de fonctions. Ajoutez à votre puce DDS une circuiterie de sortie, un microcontrôleur, une interface utilisateur, et voilà. Simple comme un jeu de briques. Du moins en théorie. En pratique, ce n’est pas si facile. À moins de choisir la bonne puce !
Un jour j’ai eu besoin d’un générateur de fonctions pour mon labo personnel. Au départ j’ai envisagé l’achat d’un des modèles commerciaux que j’utilise au travail, mais ils étaient trop coûteux et trop complexes pour ce que je souhaitais faire. J’ai donc décidé de construire mon propre générateur. Et bien sûr de vous en faire profiter.
Le choix des composants Après quelques recherches sur les différentes techniques de construction possibles, j’ai choisi une architecture exploitant la synthèse numérique directe (DDS, Direct Digital Synthesis). La synthèse DDS recourt à un oscillateur numérique et un quartz pour produire des sinusoïdes qui peuvent atteindre des fréquences très élevées. Comme microcontrôleur, j’ai pris un modèle d’Analog Devices. Ce n’est peutêtre pas le premier nom de fabricant qui vous serait venu à l’esprit, toutefois j’apprécie la documentation complète qui accompagne leur famille de microcontrôleurs ARM à 32 bits. Là où d’autres fabricants étalent parfois leurs descriptions sur plus d’un millier de pages, Analog Devices réussit à faire le tour des rouages d’un microcontrôleur complexe
42
novembre 2015
en à peine plus d’une centaine de pages. Outre ses célèbres processeurs de traitement numérique du signal (DSP), Analog Devices propose aussi des puces DDS, des AOP et des puces pour le traitement analogique. Je me suis donc naturellement tourné vers eux, d’autant plus qu’ils offraient des échantillons des composants dont j’avais besoin. J ’a i p l u s p r é c i s é m e n t o p t é p o u r l’ADuC7024BSTZ62, un µC de la famille Precision Analog Microcontroller. Il est en boîtier à 64 broches et son cœur ARM7TDMI est cadencé à 44 MHz. Les contrôleurs de cette famille sont dits analogiques, car ils présentent des E/S analogiques (CA/N et CN/A) et un comparateur analogique. Ils sont par ailleurs dotés de MLI, de timers et de ports série standard (SPI, UART et I²C). Celui que j’ai choisi possède 8 Ko de RAM et 62 Ko de mémoire flash programmable in situ via un port série ; certains modèles utilisent l’I²C pour leur programmation, donc assurez-vous d’utiliser un µC ayant exactement la même référence que celui-ci. La puce DDS est la populaire AD9834. La fréquence maximale de son oscillateur externe est de 75 MHz, ce qui autorise une fréquence de sortie maximale de 37,5 MHz (la moitié de la fréquence
d’horloge). L’inconvénient d’un signal d’horloge aussi rapide est que la résolution n’est que de 0,28 Hz, ceci en raison du diviseur de fréquence à 28 bits de la puce. Ça n’a l’air de rien, mais à 20 Hz cela représente une erreur de presque 0,6 %. On peut certes baisser la fréquence pour y remédier, mais au prix d’une fréquence de sortie maximale moindre. La résolution passe à 0,004 Hz en optant p. ex. pour 1 MHz, soit une erreur de 0,005 % à 20 Hz ; bien, mais le hic est que la fréquence maximale tombe alors à un ridicule 500 kHz. J’ai dû trancher entre résolution et plage de fréquence : la fréquence d’horloge DDS est de 75 MHz de façon à ce que le signal reste relativement propre jusqu’à 10 MHz. J’ai soigné l’inter face utilisateur puisqu’elle compte pour beaucoup dans le confort d’utilisation d’un instrument. J’ai ajouté des poussoirs pour faciliter la navigation entre les menus et leurs options, ainsi que deux potentiomètres multitours pour le réglage de l’amplitude et du décalage CC du signal de sortie. L’afficheur est un écran de remplacement pour le Nokia 6100. Il est bon marché et bien documenté sur Internet, mais les deux modèles existants (Epson
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
et Philips) ne sont hélas pas entièrement compatibles. Plus embêtant, il est impossible de spécifier le modèle souhaité au moment de l’achat. J’ai donc écrit deux micrologiciels, un pour chaque modèle.
projet de lecteur
Puisque l’aspect esthétique compte aussi, j’ai habillé le générateur d’un beau boîtier en aluminium de chez Hammond. Sur ma paillasse trône ainsi un instrument très élégant.
Caractéristiques
Le circuit Sur le schéma du générateur DDS (fig. 1), c’est la partie supérieure qui produit le signal ; la partie inférieure comprend quant à elle le microcontrôleur et
Audio Precision
• Synthèse numérique directe (DDS) avec étage d’entrée analogique • Plage de fréquences : 1 à 10 MHz • Résolution en fréquence : 0,28 Hz • Sortie : 0 à 15 VCC • THD+N (charge de 100 kΩ, bande passante > 500 kHz) : -- 1 V, 1 kHz : 0,12 % (0,09% pour bande passante = 22 kHz) -- 5 V, 1 kHz : 0,1 % (0,09 % pour bande passante = 22 kHz) -- 1 V, 10 kHz : 0,1 % (0,09 % pour bande passante = 80 kHz) -- 5 V, 10 kHz : 0,09 % (0,08 % pour bande passante = 80 kHz) -- 1 V, 100 kHz : 0,1 % -- 5 V, 100 kHz : 0,08 % • S/B (pour un signal de 1 V) : 72 dB • Sortie maximale (charge de 10 MΩ) : -- Sinus : 16 VCC -- Triangle : 16 VCC -- Carré : 18 VCC • Tension de décalage CC : –10 à +10 V • Impédance de sortie : 50 Ω • Rapport cyclique (onde carrée) : 1 à 99 % • Temps de montée et de descente (80 %, onde carrée) : 100 ns • Mode balayage • Consommation : 3 VA
+0 -10 -20 -30 -40 -50
d B -60 r A
-70 -80 -90
-100 -110 -120 -130
10
20
50
100
200
500
1k
Hz
2k
5k
10k
20k
50k
100k
Tracé jusqu’à 130 kHz de la FFT d’une sinusoïde de 1 kHz (la fondamentale a été supprimée). Le taux THD+N est principalement dû aux harmoniques du signal. Les quelques composantes visibles liées à la ligne CA (50 Hz) sont proches du bruit de fond. Vous trouverez d’autres chiffres et courbes sur www.elektor-labs.com/150210.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
novembre 2015
43
créer
découvrir
partager Le signal qui quitte IC5.A suit deux chemins. Celui du haut sert à la formation des sinusoïdes et des dents de scie (IC3 peut former les deux) ; il mène à l’entrée S2 d’IC7, un inverseur unipolaire qui pro-
fiée par IC5.A. S’il y a un filtre aussi rudimentaire, c’est à la fois pour des raisons de simplicité et, comme nous le verrons, parce qu’un filtre d’ordre supérieur aurait été inutile ici.
l’interface utilisateur. Les composants passifs qui entourent la puce DDS (IC3) sont ceux recommandés par le fabricant. La sortie d’IC3 est filtrée par le réseau R16/C18 avant d’être ampli-
DVDD
P1.2
DVDD DVDD
+3V3 DVDD AVDD Triangle, Sinus
DVDD
1
8
4 VDD
EN
OUT
6 9
3
10
GND
OSC 75MHz
12
2 C11 1u
IOUT
IC3
FSYNC
AD9834
MCLK
CAP/2.5V
SINGBIT
FSELECT
FSADJ
PSELECT
IOUTB
SLEEP
1
7
IC5.B
5
R19
R14 C16
100n
100n
2 1
IC6.A
3
100n
R23
R25
3
1
+15V
IC2 = AD8032ARZ IC5,IC6 = AD8042ARZ
8
2
IC2
3
4
8
C19
IC5
100n 4
1
5
IC2.B
IC2.A
V+
1
10u
2 3
D
4
3 4 5 6 DAC0
9 10 56
P1.2
48 47
CLK
46 45
MOSI
40
CSL
39 23 24 25
K2 RXD TXD
26 1
50
2
49 55
UART
P0.5/IRQ1
ADC5
P4.0
ADC6
P4.1
IC1
ADC7
P4.2
ADC8
P4.3
ADC9
P4.4
DAC0/ADC12
P4.5
DAC1/ADC13
P4.6
DACREF
P4.7
P1.2
P0.6
P1.3
TDO
ADUC7024
P1.4/IRQ2
TMS
P1.5/IRQ3
XCLKI
P1.6
XCLKO
P1.7
P0.7
P3.0
P2.0
P3.1
TDI
P3.2
TCK
P3.3
ADCNEG
P1.0
P0.0/BM
P1.1 VREF
C7
58 7
57
RST LVDD
19 41 22
A
CS
NC VCC
0W75
8 7
D
6
DVDD
29 R5
30 31 32
R6
R7
R8
R9
R10
R11
R12
43 44 51 52 53 54 13 14 16 18
TDO
11
TMS
36 35
S1
VCC
S3 S2
VCC 6
4
K3 JTAG
33 12
TDI
17
TCK
5
3
S5 S4
S7 S6
S8
2
34
D
1
DVDD
R2
GND
8
VCC
15
JTAGVCC
DVDD
28 21 C6 470n
470n
GND
Nokia 6100 LCD
CLK
9
10k
ADC4
VLED–
DATA
10k
P0.4/IRQ0
RST
2 JP2
2 JP1
RESET 1
DOWNLOAD 1
D
150210 - 11
Figure 1. À l’exception de l’alimentation, la carte principale accueille tous les composants du générateur.
44
novembre 2015
+15V
R1 220R
10
27
10k
ADC3
VLED+
1k
IOVDD
IOVDD
AVDD
DACVDD
P3.5
38
5
VCC
1k
2
P3.4
ADC2
DGND
1
ADC1
IOGND
64
P3.7 P0.3/TRST
IOGND
63
ADC0
DACGND
62
P3.6
GNDREF
61
AGND
37 ADC0
R3
20 42
R31 10k
–15V
10k
A
100n
ADR1581
K1
C5
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
7
IC8
C28
100n
100n
C27 A
C29
100n
100n
3
R36 10k
10k
100n
60 59
V– 2
2
10k
100n
IC11
–1V25
10k
10u
C4
A
4
A
1
NC
6
DVDD C3
100n
C26
2
3 10k
R37 1k
C1
C24
C23
3
2
100n
AVDD DVDD
C2
C22
+15V
ADR1581
V–
3 7
R33 100R
IC10 NC
10k
–15V
6
+15V
V+
A
ADC0
100R
A
220u 25V
10k
R30 10k
+1V25
C20
IC6
100n 4
R32
220u 25V
4
POWER
AD811
1
8
C30
100p R28
6
OP1177
1 P1
K4
K5
IC8
R27
C21
IC9
2
0V-2Vmax
+3V3
2
R29 10R
R24 499k
AVDD
A
DAC0
2 1 A
A
7
IC6.B
5
1k
3 1k
A
6
R15
R13 C17
P2
3
1.8V p-p
R20
2
3
GND
1.41V p-p
20
18
D
R22 1k
2k
5
D
7
A
AGND
ADG779
6
10p
16
REFOUT
DGND
C12
1
IC5.A
R17
C18
IC7
Square (0:0)
3
17
VIN
RESET
R16 910R
0.6V p-p
S1
+1V25
IC4
SDATA
19
2
1k2
11
3
COMP
4
R21 499k
1k2
15
SCLK
10n
6k8
CSL
AVDD
A
200R
13
DVDD
D
200R
14
MOSI
C15
4
1.8V p-p
IN
R26
A 100n
220R
A 100n 5
R18 2k
910R
D 100n
CLK
1
C14
C31
2 VDD
S2
910R
C13
6
–15V
7
IC9 4
projet labs
Figure 2. Une onde carrée de 1 MHz (rapport cyclique de 50 %) obtenue avec la sortie presque maximale et un potentiomètre P2 de dix tours et 1 kΩ.
CMS, l’alimentation recourt à des composants traversants de la liste de composants Passe-Partout du labo d’Elektor. Les secondaires du transformateur valent chacun 15 V / 5 VA puisque 10 VA suffisent à alimenter le générateur DDS. Pour minimiser les pertes dans le régulateur de 3,3 V, le circuit comporte un redres-
C15 D5
10n
+3V3
IC3 3
D6
LM317
2 R5
1
C16 10n
C17
C18
47u 50V
D1
10n 3
LM317
100n
+15V 2 R1 180R
1 10n
C5
C7
(115)
1000u 50V
100n
R2
C9
C11
C13
10u 50V
100n
K2 +3V3
10u 50V R4
0 +15V
C10
2k0 FL10/15 2x 15V / 10VA
D3
10n
C8
1000u 50V
100n
F3 315mA T
1 2
D4
R7
C4 10n
ADJ
10u 50V
C12
C14
R3
10u 50V
100n
180R
C3
C6
–15V
3
LM337 IC2
10k
100mA T (115VAC; 200mA T)
10u 50V
10u 50V
ADJ
JP1
F1
C21
IC1
D2
315mA T C2
K1
C20
C1
F2
TR1
C19
390R
100n
R6
2k0
D1, D2 = STPS2L60 D3...D6 = 1N4007
240R
ADJ
230
Puisque nous parlons de filtres indésirables, observez les chemins des signaux : tous les composants qui s’y trouvent, depuis la sortie d’IC3 et y compris le circuit imprimé, ont une bande passante limitée et contribuent partiellement au filtrage passe-bas du signal de sortie. C’est la raison pour laquelle je n’ai placé qu’un filtre RC du premier ordre (R16/C18). Avec un filtre d’ordre supérieur, il aurait fallu une troisième voie pour acheminer l’onde triangulaire, et le circuit aurait été plus complexe. La tension de décalage du signal de sortie est créée par les deux références de tension IC10 et IC11 et par le potentiomètre P1, tamponné par l’AOP de précision IC9. L’AOP IC8 ajoute cette tension CC au signal de sortie. Le signal de sortie alimente une des entrées analogiques du microcontrôleur
(ADC0) après mise à l’échelle et suppression du décalage CC (IC2). Le but est de surveiller le niveau du signal de sortie tel qu’indiqué sur l’afficheur. Consultez le lien [2] pour les mesures. La circuiterie qui entoure le µC IC1 parle d’elle-même : huit poussoirs, un LCD graphique, des condensateurs de découplage, et quelques embases. Rien de mystérieux, donc. Pas besoin de quartz externe, le contrôleur est cadencé par un oscillateur interne. Notez le connecteur JTAG : c’est lui qui m’a servi à programmer et déboguer le micrologiciel. Le port série est également accessible au cas où vous seriez obligé d’utiliser le chargeur d’amorçage pour programmer le µC. JP1 sert à placer le µC dans ce mode bootloader. L’alimentation (fig. 3) est construite autour de deux LM317 et d’un LM337. Ces régulateurs produisent une tension stable de ±15 V pour l’étage de sortie analogique, et de +3,3 V pour le reste du circuit. Contrairement à la carte principale, composée quasi exclusivement de
(115)
cure une très bonne isolation entre ses deux entrées et la sortie. Le chemin du bas va à l’entrée d’IC7 et est utilisé pour former les ondes carrées. Une onde carrée est créée en produisant un signal triangulaire transmis à IC5.B et IC6.B, deux comparateurs relativement rapides dotés d’une hystérésis bien dosée. La tension de référence nécessaire à ces deux comparateurs provient d’une des sorties analogiques (DAC0) du microcontrôleur et est tamponnée par IC6.A. Cela permet un contrôle précis du rapport cyclique de l’onde carrée. La sortie d’IC7 commande le potentiomètre P2 puis est amplifiée par l’AOP IC8. Cet amplificateur vidéo est rapide (vitesse de balayage : 2500 V/ms) et peut commander des charges de faible impédance. Notez qu’il s’agit ici d’un composant traversant, donc facilement remplaçable en cas d’avatar. L’amplitude crête à crête du signal de sortie est définie par P2. Ce potentiomètre influe de manière fondamentale sur la qualité du signal de sortie en raison de ses capacités et inductances parasites (qui le font se comporter comme un filtre passe-bas). Sa fréquence de coupure dépend de sa résistance et de son nombre de tours. Si vous utilisez surtout le générateur pour avoir des sinusoïdes propres et de fréquence élevée, un modèle à dix tours et de 1 kΩ ou plus convient. Si par contre vous avez besoin d’impulsions à flancs raides, optez pour un modèle à cinq tours et de 200 Ω ou moins (fig. 2).
projet de lecteur
–15V
LED1 POWER
150210 - 11
Figure 3. L’alimentation du générateur comprend trois régulateurs de tension LM3x7. Quelques tours de passe-passe ont permis de réduire la consommation de la partie à 3,3 V.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
novembre 2015
45
créer
découvrir
seur séparé (D5/D6) flanqué d’un simple filtre à condensateurs (C17/C18). La forte ondulation restante réduit quelque peu les pertes dans le régulateur IC3. D1 et D2 sont des diodes Schottky. Lorsque la charge est maximale, la chute de tension aux bornes de diodes « ordinaires » et l’ondulation sur C5 font dangereusement approcher la tension d’entrée d’IC1 de sa valeur minimale permise. À 0,5 A la tension directe des Schottky est inférieure à 0,45 V, alors qu’elle serait
partager deux fois moindre avec une classique 1N4007. L’alimentation et le circuit principal sont sur deux cartes séparées. La carte principale a été soigneusement conçue de façon à ce que le signal de sortie reste éloigné des interférences produites par les rapides signaux de commande numériques. Les CMS dominent, mais l’assemblage ne devrait pas poser de problème avec de bons yeux ou de bons verres de lunettes.
Le programme J’ai écrit le code source en C depuis l’environnement de développement intégré µVision de Keil. Je n’ai pas utilisé de système d’exploitation en temps réel par souci de simplicité. Le code est réparti sur quelques fichiers. Certains sont des fichiers d’en-tête contenant des définitions et des prototypes de fonctions, les autres contiennent les fonctions elles-mêmes. Deux d’entre eux prennent en charge les deux modèles de
Liste des composants de la Carte du générateur Résistances Toutes 1 %, 0,125 W, CMS 0805 R1 = 220 Ω, 1 %, 0,75 W, CMS 2010 R2, R22, R23, R37 = 1 kΩ R3 = 1 kΩ, 1 %, 0,1 W, CMS 0603 R5, R6, R7, R8, R9, R10, R11, R12, R30, R31, R36 = 10 kΩ R13 = 6,8 kΩ R14, R15 = 200 Ω R16, R19, R25 = 910 Ω R17, R20 = 1,2 kΩ R18, R26 = 2,0 kΩ R21, R24 = 499 kΩ R27 = 220 Ω R28 = 10 Ω R29 = 10 kΩ, 1 %, 0,1 W, CMS 0603 R32, R33 = 100 Ω, 1 %, 0,75 W, CMS 2010 P1 = 10 kΩ, 2 W, pot. 10 tours P2 = 1 kΩ, 2 W, pot. 10 tours
Condensateurs Par défaut : CMS 0603 C1, C3, C4, C12, C13, C14, C16, C17, C19, C20, C26, C27, C28, C29, C31 = 100 nF, 50 V, X7R
C2, C5 = 10 µF, 16 V, X7R, CMS 1206 C6, C7 = 470 nF, 25 V, X7R C11 = 1 µF, 16 V, X7R, CMS 1206 C15 = 10 nF, 50 V, X7R C18 = 10 pF, 50 V, C0G/NP0 C21 = 100 pF, 100 V, C0G/NP0, CMS 0805 C22, C23 = 220 µF, 25 V, radial, pas de 3,5 mm, diam. 8 mm max. C24, C30 = 100 nF, 50 V, X7R, CMS 0805
Semi-conducteurs IC1 = ADUC7024BSTZ62, LQFP-64, programmé* IC2 = AD8032ARZ, SOIC-8 IC3 = AD9834BRUZ, TSSOP-20 IC4 = FXO-HC736R-75, 7 x 5 mm IC5, IC6 = AD8042ARZ, SOIC-8 IC7 = ADG779BKSG-REEL7, SC-70 6 pattes IC8 = AD811ANZ, DIP-8 IC9 = OP1177ARZ, SOIC-8 IC10, IC11 = ADR1581ARTZ-REEL7, SOT-23-3
DF23C-10DS-0.5V(51), Hirose (HRS) K2, JP1, JP2 = barrette mâle 1x2 broches, verticale, pas de 2,54 mm K3 = barrette mâle 2x3 broches, verticale, pas de 2,54 mm K4 = barrette mâle 1x4 broches, verticale, pas de 2,54 mm K5 = prise BNC droite encartable, 50 Ω S1 à S8 = bouton à effleurement 6 mm, actionneur de 4,9 mm, 24 V / 0,05 A, SPST-NO Support DIP à 8 voies pour IC8 Écran LCD de remplacement N&B pour Nokia 6100
Divers
Autres
Boîtier aluminium, modèle Hammond 1455T1601, 165 x 160 x 51,5 mm Optionnel : filtre EMI/EMC, prise, CEI, 250 VAC / 4 A 2 boutons, noir, 16 mm, diam. axe 6,3 mm Circuit imprimé 150210-1 v1.11 (www.elektor.fr)
K1 = embase, pas de 0,5 mm, hauteur des contacts 1,5 mm, 10 voies,
* Indisponible en version préprogrammée
Figure 4a. Sérigraphie de la carte du générateur (double face et composants CMS).
46
novembre 2015
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs LCD graphiques. Le code du générateur est dans le fichier main.c. Le fichier init.s est écrit en assembleur et enferme les fonctions d’initialisation du µC ; il ne fait pas partie de l’EDI, je l’ai écrit en partant de zéro. J’ai écrit une partie du pilote du LCD, le reste repose sur un code source ouvert trouvé sur l’internet. Comme l’écran n’est pas relié à un port SPI matériel, le protocole de communication est reproduit de façon logicielle sur les broches GPIO au travers des fonctions WriteLcdCommand et WriteLcdData. Ce qui m’a pris le plus de temps ici a été de créer deux polices, une grande et une petite. L’activation du « clavier » est scrutée dans la boucle sans fin principale. Je me suis efforcé de n’utiliser ni arithmétique en virgule flottante, ni bibliothèque de maths, ceci afin que le code reste peu volumineux et indépendant de l’EDI. Tous les fichiers source ont été compilés en « code Thumb » ARM (code à 16 bits), pas tant pour réduire la taille du fichier hex qu’en raison de la mémoire flash à 16 bits du contrôleur : un code à 16 bits y est donc plus vite exécuté. L’exécutable fait environ 8 Ko, auxquels s’ajoutent 20 Ko pour stocker l’écran d’accueil. Je
projet de lecteur
n’ai eu besoin d’aucune astuce pour faire tenir l’ensemble dans le µC, sa mémoire flash est assez vaste pour ça. L’archive du projet peut être téléchargée gratuitement depuis [1].
Construction Les composants du générateur sont répartis sur deux circuits imprimés (fig. 4). Comme je l’ai dit, l’assemblage de la carte principale ne présentera pas de difficultés pour qui a de bons yeux… ou une bonne
loupe. Notez que les poussoirs et le LCD se montent côté cuivre de la carte. Restez soigneux avec le câble plat souple du LCD : il doit être détaché de son support en plastique (fig. 5) et plié autour de la carte pour atteindre K1 (fig. 6). Les deux potentiomètres s’insèrent dans le circuit imprimé en laissant dépasser l’axe côté cuivre. Le labo d’Elektor a utilisé des « disques » en caoutchouc (découpés dans une vieille chambre à air de vélo) pour éviter que les potentio-
Figure 5. À gauche, l’écran autrefois utilisé dans certains mobiles d’une célèbre marque scandinave qui n’est pas Ikea ; à droite, le même écran adapté à notre générateur.
Liste des composants de l’Alimentation Résistances (1 %, 0,6 W) R1, R3 = 180 Ω R2, R4 = 2,0 kΩ R5 = 240 Ω R6 = 390 Ω R7 = 10 kΩ, 5 %, 0,25 W
Condensateurs C1, C2, C3, C4, C15, C16 = 10 nF, 50 V, Y5V, pas de 5 mm C5 = 1000 µF, 50 V, pas de 5 ou 7,5 mm, diam. 16 mm C6 = 470 µF, 50 V, pas de 5 ou 7,5 mm, diam. 13 mm C7, C8, C13, C14, C18, C21 = 100 nF, 50 V, X7R, pas de 5 mm C9, C10, C11, C12, C19, C20 = 10 µF, 50 V, pas de 2 mm, diam. max. 6.3 mm C17 = 47 µF, 50 V, pas de 2,5 mm ou 3,5 mm, diam. max. 8 mm
K2 = bornier pour CI à 4 voies (2x2), pas de 5 mm, 250 V TR1 = prim. 2x115 V / sec. 2x15 V, 10VA, p. ex. Block FL 10/15 F1 = fusible, 100 mA (réseau 230 V) ou 200 mA (réseau 115 V) ; action retardée, 250 V, 20 x 5 mm F2, F3 = fusible, 315 mA, action retardée, 250 V, 20 x 5 mm
Porte-fusible pour F1, F2, F3, 20 x 5 mm, 500 V, 10 A Caches pour porte-fusibles F1, F2, F3, 20 x 5 mm JP1 = cavalier Circuit imprimé 150210-2 v1.1 (www.elektor.fr)
Semi-conducteurs D1, D2 = STPS2L60, boîtier DO-41 D3, D4, D5, D6 = 1N4007, boîtier DO-41 IC1, IC3 = LM317, boîtier TO-220 IC2 = LM337, boîtier TO-220 LED1 = LED, verte, 3 mm
Divers K1 = bornier pour CI à 2 voies, pas de 7,6 mm, 500 V
Figure 4b. Sérigraphie de la carte d’alimentation (simple face et composants traversants).
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
novembre 2015
47
découvrir
créer
partager
Figure 6. Montage de l’écran des deux côtés de la carte. Utilisez de l’adhésif double face pour le coller à la carte.
Figure 7. L’alimentation assemblée et son dissipateur maison. Notez le cavalier derrière le transformateur pour la sélection de la tension de réseau (230 V ici).
mètres ne glissent lors des réglages. Un trou de diamètre 10 mm convient ; le diamètre extérieur des disques doit de préférence être légèrement inférieur à 22 mm. Pour P2, la présence d’un disque évite aussi d’endommager la piste qui jouxte son trou côté composants. Le montage de la carte d’alimentation ne devrait poser aucun problème. Le transformateur a deux secondaires pour supporter à la fois les réseaux de 115 et 230 V. Placez un cavalier sur JP1 (au milieu des trois lignes pointillées) pour un réseau de 230 V ; placez deux cavaliers (sur les deux lignes pointillées extérieures) si vous êtes sur du 115 V. Ne placez pas les trois cavaliers sur JP1 ! N’oubliez pas d’utiliser le bon fusible pour protéger le primaire : 100 mA(T) pour du 230 V, et 200 mA(T) pour du 115 V, où T est le retard. Les trois régulateurs ont besoin d’un dissipateur. Celui de la figure 7 a été fabriqué à partir d’une bande d’alu de 2 mm d’épaisseur. N’oubliez pas l’isolation électrique de ces trois régulateurs (rondelle en mica et manchon en plastique). La longueur de la vis M3 doit être d’environ 6 mm. Il est conseillé d’ajouter une rondelle métallique entre la tête de la vis et le manchon en plastique. Le manchon est souvent un peu trop long ; si c’est le cas, coupez-le à la bonne longueur avant de monter les régulateurs sur le dissipateur. Si vous souhaitez loger le générateur dans le même boîtier que le mien (fig. 8), vous pouvez télécharger depuis [1] un gabarit pour le perçage des panneaux avant et arrière. L’embase BNC K5 est isolée ; elle se monte sur le panneau avant. Après avoir fixé la carte principale à ce panneau (j’ai collé les vis à l’arrière du panneau), utilisez des fils courts pour relier l’embase BNC au circuit imprimé.
Programmation
Figure 8. Le prototype construit par Jan Visser au labo Elektor. Découpes faites avec une machine-outil à 100 k€ des outils simples et de la patience.
48
novembre 2015
Le générateur doit d’abord être programmé avec le bon micrologiciel. Il en existe deux versions (à télécharger depuis [1]) puisqu’il y a deux configurations possibles pour le LCD. Comment savoir laquelle est la bonne ? Pas d’autres solutions que de les essayer puisqu’il n’existe aucun moyen visuel de connaître le modèle du LCD. Donc programmez le µC, et regardez si des ondes apparaissent. Pas d’ondes ? Essayez l’autre. Toujours rien ? Oh, oh… Vous pouvez programmer le contrôleur par JTAG ou par chargeur de démarrage.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur Matériel disponible sur www.elektor.fr • 150210-1 – circuit imprimé de la carte principale, sans composants • 150210-2 – circuit imprimé de la carte d’alimentation, sans composants • 150210-91 – carte principale, préassemblée Hélas, nous ne pouvons pas proposer le microcontrôleur IC1, ni vierge, ni programmé.
Figure 9. Capture d’écran de l’outil de programmation ARMWSD en plein travail.
La première solution, qui nécessite un adaptateur JTAG (p. ex. le J-LINK de Segger ou le ULINK de Keil), fournit une interface de débogage. L’interface JTAG standard a 20 broches mais fonctionne également avec seulement 6 broches (K3). L’autre solution est d’utiliser l’interface du port série (K2). Seule la programmation est possible ici. Autrement dit : pas de
débogage. Analog Devices vend le câble nécessaire, mais vous pouvez fabriquer le vôtre avec un câble série TTL-vers-USB. Le site web d’Analog Devices propose un outil de programmation in situ gratuit (ARMWSD.exe). Sélectionnez d’abord le port série USB approprié, puis chargez le fichier hex. Le programme vous invitera à Press Download and pulse Reset on hardware (fig. 9). C’est la raison pour laquelle les deux cavaliers JP1 et JP2 portent les mentions Download et Reset sur la carte. Pensez à retirer le cavalier de Download après la programmation, sinon à la prochaine mise sous tension le contrôleur sera encore en mode bootloader et l’écran restera noir.
Et là c’est moi… … qui vous envoie des ondes positives : avec ce bel instrument vous prendrez plaisir à réparer des amplificateurs, vous découvrirez que tracer la courbe de réponse d’un filtre est un jeu d’enfant, et le langage des ondes n’aura plus de secret pour vous. Bienvenue dans le monde merveilleux des électroniciens bien équipés ! (150210-I – version française : Hervé Moreau)
Liens [1] www.elektormagazine.fr/150210
[2] www.elektor-labs.com/150210
Manuel de l’utilisateur Bouton
Fonction
Bouton
Fonction
S1
Set
S5
–Down
S2
Right
S6
Mode
S3
Left
S7
Sweep
S4
+Up
S8
Calibration
• Forme d’onde – Appuyez sur Mode pour basculer entre sinus, carré et triangle. • Rapport cyclique – Il ne peut être défini qu’en mode onde carrée. Appuyez sur Mode pour activer la sortie onde carrée. La valeur du rapport est indiquée en bas de l’écran. Ajustez-le en pressant +Up et -Down (les chiffres ne doivent pas clignoter). • Fréquence – Appuyez sur Set. Un chiffre clignote ; utilisez +Up et -Down pour modifier sa valeur, et Left et Right pour passer aux autres chiffres. Appuyez sur Set pour valider. • Amplitude – Ajustez P2. Notez que le réglage de l’amplitude affecte la tension de décalage. Cf. [2] pour le détail des mesures. • Décalage CC – Ajustez P1. • Balayage de fréquence – Appuyez sur Sweep pour ouvrir le menu Sweep. Le chiffre le moins significatif de la fréquence de départ clignote ; utilisez +Up et -Down pour modifier sa valeur, Left et Right pour passer aux autres chiffres. Appuyez sur Set pour régler le paramètre suivant. Définissez la fréquence d’arrêt, la durée du balayage (appelée msec) et le mode (linéaire
ou logarithmique). Set lance le balayage : la première ligne du menu Sweep indique sweep run. Appuyez de nouveau sur Set pour l’arrêter (sweep stop s’affiche). Vous pouvez définir de nouvelles valeurs. Pressez Sweep pour revenir au menu principal. • Contraste – Appuyez sur Calibration pour accéder au menu permettant de régler le contraste du LCD. Utilisez Set pour naviguer entre les options, +Up et –Down pour modifier le niveau de contraste. Appuyez sur Calibration pour revenir au menu principal. • Niveaux de tension de calibrage – Reliez un oscilloscope à la sortie du générateur et réglez le niveau de sortie sur 5 Vcc. Appuyez sur Calibration pour ouvrir le menu Calibration. Sélectionnez Measurements pour lancer la procédure (si vous y entrez par erreur, coupez l’alimentation pour en sortir). Ajustez P1 pour définir la valeur minimale de sortie sur 0,00 V ; appuyez sur Set pour valider. Ajustez P1 pour mettre la valeur maximale de sortie sur 12,00 V ; Set pour valider. Un message signale la fin du calibrage. Appuyez sur Calibration pour revenir au menu principal. • Fréquence de calibrage – Reliez un fréquencemètre de précision à la sortie du générateur. Appuyez sur Calibration pour ouvrir le menu Calibration. Sélectionnez Frequency pour lancer le calibrage (si vous y entrez par erreur, coupez l’alimentation pour en sortir). Réglez la fréquence de sortie sur 100 kHz avec +Up et -Down. Bouton Set pour valider. Un message signale la fin du calibrage. Appuyez sur Calibration pour revenir au menu principal.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
novembre 2015
49
créer
découvrir
partager
boutons radio RVB pour quiz sans peur des coups, ni fil Antonello Della Pia (Italie) Circuit : Luc Lemmens (labo d’Elektor) Rédaction : Jan Buiting (rédacteur en chef GB)
Pour encadrer un jeu de questions-réponses dans un bistrot bruyant ou une classe de jeunes surexcités, il faut un système rapide, fiable et sans fil. C’est encore mieux si ce système permet de favoriser l’équité et d’assoir l’autorité de l’animateur. Ajoutez-y du son, de la lumière et une main magique pour la remise zéro. Il n’y a plus qu’à jouer ! référence NRF24L01+ de la marque Nordic Semiconductor. On les trouve facilement et c’est un jeu d’enfant de les associer aux microcontrôleurs ATtiny d’Atmel. Ces modules de trancepteur (émetteur/récepteur) de bonne composition peuvent gérer jusqu’à six canaux et offrent plusieurs modes de communi-
RF Transmitter
Les modules radio du projet portent la
PA
Caractéristiques
56
janvier/février 2016
Baseband TX Filter
GFSK Modulator
ANT1 LNA
ANT2
SPI
GFSK Demodulator RX FIFOs
Power Management
SCK MISO MOSI IRQ CE
Radio Control
VDD_PA
RF Synthesiser
IREF
XC2
RX Filter
DVDD
XC1
CSN
TX FIFOs
Enhanced ShockBurst Baseband Engine
RF Receiver
VSS
• Trancepteur NRF24L01+ à 2,4 GHz • Pupitres des joueurs rouge, vert et bleu • Trois canaux avec témoin par LED R-V-B • Le premier qui appuie évince les autres pour 2 s • Remise à zéro avec la main magique de l’animateur • Ruban de LED 12 V RVB bon marché et facile à trouver
cation. La figure 1 montre le synoptique du NRF24L01+ ; nous vous recommandons de consulter sa fiche technique [1] parce que ce module présente des options intéressantes et un bon potentiel pour l’incorporer à d’autres projets à µC. Et puis chut !… ils sont très bon marché.
Register map
Les trancepteurs
VDD
La femme de l’auteur est enseignante, elle voulait un système pour animer des jeux dans sa classe. Sur le modèle des émissions de quiz, le premier à donner la bonne réponse à la question gagne. Vu l’âge des participants, on se dit que le matériel doit être d’emploi aisé, à l’épreuve des coups, empêcher la tricherie, rester fiable et surtout, sans fil.
Figure 1. Le trancepteur radio est un NRF24L01+ de Nordic Semiconductor. Il a six canaux à 2,4 GHz. Il est disponible entre autres auprès de Seeed Studio.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
L’émetteur K1 MISO 1 SCK 3 RESET 5
R2
MISO
C2
+3V
CR2032
C3
C1
100n 100u 50V
R1
PB5
IC1 ATtiny85
100n
3 2 7 6 5
SCK MOSI
4
GND
S1
PB4 PB3 PB2 PB1 PB0
1 = GND 2 = VCC 3 = CE 4 = SCN 5 = SCK 6 = MOSI 7 = MISO 8 = IRQ (not used)
1 3 5 7
1
VCC
8
MOD1 NRF24L01+
2 4 6 8
6k8
BT1
150499 - 12
Figure 2. Schéma de l’émetteur pour quiz. Selon le micrologiciel chargé, il envoie la chaîne de texte RED, GREEN ou BLUE au récepteur sur le pupitre de l’animateur.
7805
1
500mAT
+5V R2
3 C3
C4
C5
100n
100u 50V
100n
+5V
UART
C7
JP1
21
20 16MHz
8
C9
ready
22p
R3
+5V 120R
R5
GND
OSC1 9
X1
2 3 4 5 6 11 12 13
R4
IC3
3
IC4
1
1
LS1 8 Ohm JP2
IR
C8 10u 50V
LED1
cable
AREF PD0/0 PD1/1 PD2/2 PD3/3 PD4/4 PD5/5 PD6/6 PD7/7
ATMEGA328P
1k
22
R1
RST
OSC2
PC5/A5 PC4/A4 PC3/A3 PC2/A2 PC1/A1 PC0/A0
AVCC
PB5/13 PB4/12 PB3/11 PB2/10 PB1/9 PB0/8
GND
28 27 26 25 24 23
VCC
7
Power Select
10
19 18 17 16 15 14
5V FTDI
K1 K2
100n 100u 50V
2
Le récepteur
K2
C12
100n
120R
1N4007
+5V
IC2
F1
2k7
D1
10k
12V 3 1 2
2
K1
C6
TSOP58238
LED2
C10 22p
T1
12k
R6 120R R7
12V
BS170
K3
2 4 6 8
+3V3
1 3 5 7
100u 50V
LP2950-33LPE3 +5V
1
IC1
3
+3V3
C1 100n
100n
1 = GND 2 = VCC 3 = CE 4 = SCN 5 = SCK 6 = MOSI 7 = MISO 8 = IRQ (not used)
R8 120R R9
+ R G B
T2
12k
MOD1 NRF24L01+
BS170
T3
R10 120R 12k
C11
2
Le récepteur dont le schéma est à la figure 3 est un peu plus compliqué que l’émetteur. Il utilise le même module trancepteur MOD1 alimenté par un adaptateur secteur à 12 Vcc sur K1. La diode D1 protège de l’inversion de polarité le régulateur IC2 ainsi que les trois LED branchées sur K3. La tension de 5 V sert à IC3, le détecteur IR, au microcontrôleur ATmega328P et à la fonction de démarrage à distance par K2. Un autre régulateur, IC1, abaisse cette même tension de 5 V à 3,3 V pour le trancepteur NRF24L01+. Le cavalier JP1 permet de choisir entre l’alimentation en 5 V à partir du récepteur (position K1) ou par le câble FTDI branché sur K2 (position K2). Les enfants en veulent toujours plus ! Du son et de la lumière ? Le µC sort un bip sur LS1 quand JP2 le permet. Il allume aussi LED2 quand on appuie sur le bouton pour répondre. La réception d’un message valide RED, GREEN ou BLUE fait s’allumer la LED correspondante. On a vu que les autres boutons sont alors inhibés jusqu’à une remise à zéro du récepteur. C’est l’animateur du quiz qui le fait en approchant sa main du détecteur de proximité IR (invisible) IC3 – c’est spectaculaire, un véritable tour
2 VCC 4 MOSI 6 GND
ATMEL ISP
10k
Le schéma de la figure 2 est celui de l’un des trois émetteurs à installer dans le camp des participants. Notre NRF24L01+, alias MOD1, est configuré pour fonctionner en mode de base. Quand on appuie (ou qu’on frappe) sur S1 pour donner la réponse, PB5 du microcontrôleur ATtiny est mis au niveau bas. Ce que détecte le micrologiciel qui tourne dans l’ATtiny, il envoie alors une chaîne de texte, RED, GREEN ou BLUE, au récepteur à sa portée. Dès ce moment, côté récepteur, on fait la sourde oreille à tout autre message envoyé par quelque retardataire que ce soit, le temps pour le meneur de jeu d’évaluer la réponse. Chaque émetteur est alimenté par une pile bouton de 3 V de type CR2032. Pour prolonger la vie de la pile, on maintient l’ATtiny85 en mode de veille. En poussant sur le bouton S1 pour répondre, on provoque une impulsion de mise à zéro qui éveille le microcontrôleur. Il envoie alors la chaîne de texte au trancepteur et se rendort. L’auteur a trouvé des boîtiers originaux : les émetteurs sont logés dans de gros rouleaux d’adhésif de couleur et le récepteur dans une boîte à spaghettis.
R11
BS170
150499 - 11
Figure 3. Schéma du récepteur. De nombreux composants servent aux alimentations et à la conversion de niveau pour le ruban de LED RVB de 12 V.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
janvier/février 2016
57
découvrir
créer
de magie. Après la remise à zéro, la LED ready s’allume et le système est prêt pour une nouvelle question. Les LED R, G et B fonctionnent sous 12 V ; l’ATmega328P,
partager avec son 5 V, ne peut pas les allumer seul, il faut donc comme intermédiaires les MOSFET T1, T2 ou T3. L’ensemble de LED RGB est connecté sur K3.
Le logiciel, l’affaire d’Arduino Le code du projet a été écrit avec l’IDE 1.6.5 d’Arduino et des bouts de la bibliothèque RF24 de Nordic. C’est pour-
Liste des composants Récepteur Résistances : à film de carbone, 5 %, 0,25 W, 250 V R1 = 1 kΩ R2 = 10 kΩ R3, R5, R6, R8, R10 = 120 Ω R4 = 2,7 kΩ R7, R9, R11 = 12 kΩ
Condensateurs : C1, C2, C3, C4, C6, C12 = 100 nF, 50 V, X7R, au pas de 5,08 mm C5, C7, C11 = 100 µF, 50 V, au pas de 3,5 mm, 8x11 mm C8 = 10µF, 50 V, au pas de 2 mm, 5x11 mm C9, C10 = 22 pF, 50 V, C0G/NP0, au pas de 2,5 mm
Semi-conducteurs :
Émetteur Résistances : à film de carbone, 5 %, 0,25 W, 250 V R1 = 10 kΩ R2 = 6,8 kΩ
D1 = 1N4007 LED1 = LED rouge 3 mm LED2 = diode IR à 940 nm, 5 mm, TSAL6100 T1, T2, T3 = BS170 IC1 = LP2950-33LPE3 IC2 = MC7805 IC3 = TSOP58238 (38 kHz), Newark/Farnell réf. 2251388 IC4 = ATMEGA328P, programmé (150499-41)
Divers :
Condensateurs : C1, C2 = 100 nF, 50 V, X7R, au pas de 5,08 mm C3 = 100 µF, 50 V, au pas de 3,5mm, 8x11 mm
Semi-conducteurs : IC1 = ATTINY85-20PU, programmé RED (150499-42) IC1 = ATTINY85-20PU, programmé GREEN (150499-43) IC1 = ATTINY85-20PU, programmé BLUE (150499-44)
Divers : Bt1 = coupleur de pile CR2032 K1 = embase à 6 picots avec collerette (en option) S1 = bouton-poussoir à dôme rouge, Sparkfun réf. COM-09181 ; vert = réf. COM-11275 ; bleu = réf. COM-11274 circuit imprimé (150499-2) embase femelle à 2 rangées de 4 contacts, verticale, au pas de 2,54 mm (option pour MOD1) pile au lithium CR2032 MOD1 = module trancepteur NRF24L01+ à 2,4 GHz (2x4 broches), Seeed Studio réf.113990011 (150499-91) variante : kit de composants (150499-71) ; contenu : cf. liste de composants du récepteur
F1 = 500mAT 20x5 mm, avec porte-fusible 20x5 mm JP1 = embase à 3 picots JP2 = embase à 2 picots K1 = prise pour jack CC, broche 1,95 mm, 12 V, 3A K2 = embase à 6 picots au pas de 2,54 mm K3 = embase à 4 picots au pas de 2,54 mm MOD1 = module trancepteur NRF24L01+ à 2,4 GHz (2x4 broches), Seeed Studio réf.113990011 (150499-91) JP1, JP2 = cavalier à 2 contacts, au pas de 2,54 mm embase à collerette à 2 lignes de 4 contacts, verticale, au pas de 2,54 mm (en option pour MOD1) LS1 = haut-parleur miniature 8 Ω, p.ex. KINGSTATE réf. KDMG20008 X1 = quartz 16 MHz, CL=18 pF ruban de LED RGB 12 V circuit imprimé réf. 150499-1 V1.1 variante : kit de composants (150499-71). Contenu : 1 carte de récepteur, 3 cartes d’émetteur, 4 µC programmés, 4 modules NRF24L01+
Figure 4. Circuits imprimés pour le récepteur et les émetteurs, ainsi que la liste de leurs composants. Notez qu’il faut trois cartes d’émetteur, chacune dotée d’un micrologiciel différent selon la couleur, -42 pour le rouge, -43 pour le vert et -44 pour le bleu.
58
janvier/février 2016
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs quoi nous avons utilisé un µC ATmega328P, le cœur de l’Arduino. Il n’est pas étonnant de le retrouver dans d’innombrables applications autonomes embarquées proposées dans le magazine Elektor. Les codes des programmes pour le récepteur et l’émetteur sont des sketchs Arduino séparés, disponibles sur la page du projet [2]. Comme pour tous les logiciels que nous distribuons gratuitement, chacun est invité à y apporter ses adaptations, améliorations et extensions. Pour ceux qui ne disposent pas chez eux d’une plateforme Arduino ou qui n’ont pas vraiment d’intérêt pour les microcontrôleurs, nous les fournissons déjà programmés dans l’e-choppe, voyez la liste des composants. Pour les autres, voici les données capitales qui permettent de programmer les émetteurs à la maison : 150449-42 (TX rouge) 150499-43 (TX vert) 150499-44 (TX bleu) ATTINY85-20PU SELFPRGEN = 1 (non programmé) RSTDIBL = 1 (non programmé) DWEN = 1 (non programmé) SPIEN = 0 (SPI validé) WDTON = 1 (non programmé) EESAVE = 1 (non programmé, EEPROM non préservée) BODLEVEL = 111 (non validé) CKDIV8 = 0 (programmé) CKOUT = 1 (non programmé) CKSEL = 0010, SUT = 10 (Int. RC osc. 8 MHz, start-up time: 6CK/14CK + 64 ms (PWRDWN/RESET)) et pour le récepteur : ATmega328P-PU à 16 MHz, réglage des fusibles : L:0xFF, H:0xDA, E:0x07, LB:0x0F, chargeur d’amorçage : Optiboot
La construction Pour ce projet, nous vous proposons un kit (réf. 150499-71) qui comprend les
projet de lecteur
quatre circuits imprimés nus, les quatre µC et les quatre modules radio pour le système à trois canaux décrit. Les informations essentielles pour la construction sont données dans la liste des composants de la figure 4. Les circuits imprimés sont pourvus de combinaisons de connecteurs et de supports pour y monter les modules trancepteurs. Si vous êtes sûr de vous, vous pouvez aussi souder directement les huit broches des modules sur le circuit imprimé, mais ils peuvent masquer certains trous de la carte. La carte du récepteur n’a qu’un composant, la diode radiante IR, installée sur le côté inférieur. La carte de l’émetteur peut accueillir un connecteur ISP à six broches en option, il ne servirait que pour (re)programmer l’ATtiny in situ. Elle porte en tout cas le coupleur pour la pile CR2032 sur le côté inférieur, mais ne l’implantez qu’en dernier lieu, vous verrez vite qu’avec lui, il devient impossible d’atteindre la plupart des pastilles à souder. Pour les rubans de LED, tout type RVB sous 12 V ira, il faut savoir qu’il en existe de deux sortes. La plupart ont trois, voire six LED RVB (les trois couleurs dans chaque LED) montées par section sur le ruban, les autres ont des LED séparées par couleur dans chaque section. On peut les utiliser indifféremment dans ce projet, le tout est de savoir ce qu’on commande. Les gros boutons de quiz que l’auteur a fabriqués avec des rouleaux de bande adhésive sont à la figure 5, ils doivent résister aux assauts des plus enthousiastes. Les microrupteurs euxmêmes sont des modèles industriels qui répondent aux mêmes critères. Jan Visser du labo d’Elektor, par ailleurs spécialiste de l’amélioration de l’habitat, a imaginé une construction différente. Les boîtiers des poussoirs sont faits de morceaux de tuyaux de descente en PVC de 55 mm de long, 110 mm de diamètre et une paroi de 3 mm, avec pour chacun deux capuchons, peints en rouge, vert et bleu. Le microrupteur se monte facilement sur le capuchon du haut, il suffit
Figure 5. Fabriqué avec un empilage de rouleaux de ruban adhésif et un microrupteur de qualité industrielle, le bouton de quiz de l’auteur est dans un boîtier solide décliné en trois couleurs.
d’y percer un trou de 23 mm au milieu. D’autres trous sont nécessaires dans le bouchon du fond pour évacuer l’air lorsqu’on presse le bouton. Le résultat pour le bouton rouge est visible à la figure 6, avec l’émetteur en sûreté dedans. Les microrupteurs utilisés sont des boutons-poussoirs éléphantesques (Big Dome pushbutton) d’un diamètre extérieur de 100 mm que l’on trouve entre autres chez Sparkfun [3] ou RobotItaly [4]. (150499 – version française : Robert Grignard)
Figure 6. Variante élaborée, on peut construire un bouton à toute épreuve avec des morceaux en PVC et un gros bouton-poussoir de Sparkfun illustrés ici.
Liens [1] Fiche technique du trancepteur NRF24L01P+ : www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P [2] Page du projet : www.elektormagazine.fr/150499 [3] Bouton-poussoir de type Big Dome : www.sparkfun.com/products/9181 [4] Bouton-poussoir de type Big Dome : www.robot-italy.com/en/big-dome-push-button-red-economy.html?___from_store=it
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
janvier/février 2016
59
créer
découvrir
partager
précision à la seconde près grâce au satellite Willem Tak (Pays-Bas)
nouvelle horloge Nixie pilotée par GPS
36
mai 2016
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
mai 2016
37
créer
découvrir
partager Caractéristiques
On garde les mêmes et on recommence, mais avec une précision
• Horloge radiopilotée par GPS • Précise à la seconde près • Horloge interne pour suppléer au signal GPS évanoui • Passage automatique à l’heure d’été/hiver
accrue. L’Horloge Nixie à récepteur GPS, dite « suisse », parue en octobre 2014 a, depuis, accouché d’une fille encore plus douée qui ne craint pas de montrer la vérité de la seconde, et toujours dans la chaleur du tube.
+180V' R26
R25
V6 Nixie IN12
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
2 11 10 9 8 7 6 5 4 3 12
2 11 10 9 8 7 6 5 4 3 12
2 11 10 9 8 7 6 5 4 3 12
2 11 10 9 8 7 6 5 4 3 12
1
V5 Nixie IN12
2 11 10 9 8 7 6 5 4 3 12
LA2
s ec s- 1
27k
27k
se cs- 1 0
1
27k
27k 1
R24
mins-1 V4 Nixie IN12
0 1 2 3 4 5 6 7 8 9
LA1
R5
mins-10 V3 Nixie IN12
470k
R4
470k
27k
V2 Nixie IN12
1
V1 Nixie IN12
R3
hours-1
1
R2
hours-10
2 11 10 9 8 7 6 5 4 3 12
1
27k
R1
1 3 5 7 9
2 4 6 8 10
1 3 5 7 9
2 4 6 8 10
+180V'
K4
1 3 5 7 9
2 4 6 8 10
1 3 5 7 9
1 3 5 7 9
2 4 6 8 10
1 3 5 7 9
1 3 5 7 9
2 4 6 8 10
K14
K13 2 4 6 8 10
1 3 5 7 9
2 4 6 8 10
1 3 5 7 9
K11
K9 2 4 6 8 10
2 4 6 8 10
K12
K10
K7
K5 2 4 6 8 10
2 4 6 8 10
K8
K6
K3 1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
2 4 6 8 10
+180V
C13
100uF 25V
100n 100n
C15
TC
GND
C3
R16
680p
R17
RD7
+5V
+5V R15
+3V3
R21
S1
16 15 8 9 13 14 11 10 1 2 O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 A3 4
A1
A2
7
R22 T7
21 20 19 18 17 16 15 14 13 12 11
RX0 TX0 EXT/INT ON/OFF SDA SCL GPIO5 GPIO4 NC NC NC
RST BOOTSEL VCC 3V3 WAKEUP MOD1 VOUT A2035H GND GPIO6 GPIO7 GND NC
1 2 3 4 5 6 7 8 9 10
R20 10k
R10
+3V3 C2 100n
2N7000
C14 100n
150189 - 11
copyright
Figure 1. L’horloge Nixie « suisse » s’est enrichie de deux tubes supplémentaires et d’un contrôleur avec plus d’E/S pour les piloter.
mai 2016
6
A0
1V8
SPP20N60C3
38
3
4
A2
A1
7
6
A3
C17 100n
R19 T6
30
8 RE0 9 RE1 10 RE2
18 RC3 23 RC4 25 RC6 26 RC7
JP1
+5V
100n
29 28 27 26 25 24 23 22
10u 250V
12
C16
10k
R18 10k
12
10k
C10
R14
GND
+3V3
+5V
10k
P1 500k
22p
+5V
MPSA42
IC9 74141
VCC
GND GND GND GND GND GND GND GND
31
10k
2 3
+5V
C9
22p
5
12
19 RD0 20 RD1 21 RD2 22 RD3
27 RD4 28 RD5 29 RD6
2 RA0 3 RA1 4 RA2 5 RA3
16 15 8 9 13 14 11 10 1 2 A0 3
R23
1k LED1
10k
SE
MC34063
DC
T5
C8
GND
10k
100n
3k3
100n
VSS
OSC2
IC8 74141
VCC
A3 4
A1
A2
7
6
3
C5
+5V
O0 O1 O2 O3 O4 O5 O6 O7 O8 O9
16 15 8 9 13 14 11 10 1 2 O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 A0
A3 4
A2
A1
7
5
T8
C4
VSS
14
13
RB7
MCLR 1
+5V 12
X1
22.1184MHz
R13
5k6
C12
IS
5
150R
8
IC7
CI
+180V 470k
BYV26
6 7
SC
4
1N4004
2
K2
1
VCC
R12
D1
330uH
3
+5V
GND
2N7000
IC6 1
OSC1
VDD
R11
40
PICkit
L1
7805
IC3 74141
VCC
IC4 PIC18F4420 7 RA5 6 RA4
32
C7 100n
+5V VCC
D2
24 RC5 15 RC0 16 RC1 17 RC2
RB6 RB5 RB4 RB0 RB1 RB2 RB3
39 38 37 33 34 35 36
3k3
2u2 25V
5
+5V
MPSA42
VDD
10k
100uF 25V
+5V
PGD PGC
C1 2
C11
12
GND
RST 11
3
1
6
A0 3
A3
R8
MPSA42
K1
IC2 74141
VCC
4
A1 6
5
T3
100n
IC5 +3V3 LP2950-33
+5V
O0 O1 O2 O3 O4 O5 O6 O7 O8 O9
+5V 12
GND
C6
T4
R9 10k
3
+5V
MPSA42
A2
IC1 74141
VCC A0
5
7
T2
R7 10k
O0 O1 O2 O3 O4 O5 O6 O7 O8 O9
+5V
MPSA42
16 15 8 9 13 14 11 10 1 2
16 15 8 9 13 14 11 10 1 2
T1
R6 10k
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs Le magazine Elektor d’octobre 2014 vous a présenté mon horloge à Nixie qui tire le temps réel d’un module GPS A2035H (de Maestro) pour en obtenir une grande précision. Et pourtant, sur quatre tubes, il n’était pas possible d’égrainer les secondes. D’autant que, malgré leur présence dans le logiciel (version 2.0 comprise), le matériel ne permettait pas de piloter suffisamment de lignes d’E/S pour gérer six tubes.
Davantage de broches Il aurait été possible de s’en sortir avec des extensions I²C par ex., mais le circuit en serait devenu trop compliqué à mon goût. J’ai choisi de repartir d’un PIC à 40 broches, le 18F4420. Bon marché, il est largement disponible.
projet de lecteur
GPS correcte. Si ce témoin reste allumé, c’est qu’il y a perte de contact. On peut programmer le PIC en circuit à l’aide d’un PICkit 2 ou PICkit 3 (cf. encadré Vicissitudes du programmateur). Le cavalier JP1 décide de l’affichage ou non du zéro non significatif (présent : pas de zéro ; absent : zéro inscrit). Le module GPS MOD1 (A2035H) inclut toute l’électronique et une antenne pour recevoir les signaux GPS. Comme le module GPS travaille sous 3,3 V alors qu’il faut 5 V pour le PIC, j’ai intercalé dans les lignes de données deux changeurs de niveau avec les FET T6 et T7, et les résistances R18 + R19 ainsi que R21 + R22. Comme pilotes des tubes Nixie, j’avais
je les ai remplacés par des IN-14 qui sont en plus compatibles avec les autres tubes de forme ovale comme le ZM1100 et le CD56. Ce nouveau type est lisible par le sommet de l’ampoule. Il a donc fallu séparer de la carte mère la partie affichage, qui peut dès lors servir directement de face avant. Mais il est aussi plus facile de construire un affichage personnalisé avec de la plaque perforée ou d’utiliser des tubes avec un autre brochage. Six embases à deux rangées de picots assurent la fixation de l’affichage sur la carte mère. On peut alimenter le circuit sur un adaptateur secteur de 9 à 15 VCC. La haute tension pour les tubes Nixie provient
coutume d’utiliser des puces 74141, mais depuis lors, elles sont devenues rares. La solution de rechange est le circuit russe K155ID1. Nul besoin de cette puce pour attaquer V1, puisque du chiffre de dizaines d’heures, on n’use que le 0, le 1 et le 2 : un triplet de transistors suffit. Pour les séparateurs entre heures, minutes et secondes, deux transistors alimentent les loupiotes au néon. Les tubes Nixie de l’horloge précédente sont aussi devenus rares et donc chers,
d’IC7, un convertisseur survolteur du type MC34063. Une diode rapide D1 et la bobine L1 produisent des pics de surtension qui sont stockés dans le condensateur électrolytique haute tension C10. Si jamais la rétroaction par la broche 5 d’IC7 est interrompue, la tension risque de s’élever inconsidérément jusqu’à faire exploser le condensateur électrolytique. Vérifiez donc soigneusement cette liaison avant toute mise en service. La tension d’alimentation de 180 V atteint chaque anode des Nixie à travers R1, R2,
En principe, tous les ports sont restés identiques, seuls les numéros des broches changent en raison de l’augmentation de leur nombre. Le schéma de la nouvelle version à la figure 1 montre le grand frère du PIC18F2480 dans un environnement technique éprouvé, tandis que le reste du schéma n’a subi que peu de modifications, en dehors de la commande des deux tubes Nixie supplémentaires, confiée au port D. Sept de ses lignes s’occupent des décodeurs de secondes. Le huitième nouveau bit servira à attaquer une petite ampoule au néon supplémentaire pour afficher le point sexagésimal entre les minutes et les secondes.
Autre amélioration Outre la question de l’affichage des secondes, de nombreuses remarques sont parvenues à propos du réglage du fuseau horaire (UTC+1 pour l’Europe centrale). Cela ne pouvait être modifié que dans le code source pour le microcontrôleur, ce qui – il est vrai – n’est pas très pratique. Dans la nouvelle version de l’horloge Nixie, il est désormais possible de choisir la zone horaire après une réinitialisation (RàZ) par l’interrupteur S1.
Le schéma Parcourons sommairement le schéma. Le PIC18F4420 collecte les données du module GPS et commande les tubes Nixie. Sa fréquence d’horloge de 22,1184 MHz est un multiple convenable du débit binaire de 4 800 bauds du module GPS. Le PIC peut aussi allumer un témoin à LED (LED1) qui clignote après une RàZ et marque chaque réception d’une chaîne
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
mai 2016
39
créer
découvrir
partager
Liste des composants Résistances :
C11, C12 = 100 µF, 25 V au pas de 3,5 mm
(5%, 1/4 W) R1, R2, R4, R5, R25, R26 = 27 kΩ R6, R7, R9, R10, R11, R14, R15, R18, R19, R20, R21, R22 = 10 kΩ R3, R13, R24 = 470 kΩ R8, R23 = 3,3 kΩ R12 = 1 kΩ R16 = 150 Ω R17 = 5,6 kΩ P1 = 500 kΩ potentiomètre d’ajust.
Condensateurs : C1 = 2,2 µF, 50 V au pas de 2 mm C2, C4, C5, C6, C7, C13 à C17 = 100 nF, 50 V, 20% C3 = 680 pF, 100 V Y5P, au pas de 2,5 mm C8, C9 = 22 pF, 50 V C0G/NP0, au pas de 2,5 mm C10 = 10 µF, 250 V 20 %, radial, au pas de 5 mm
Inductance : L1 = 330 µH, 900 mA, radial 10 x 15 mm
Semi-conducteurs : D1 = BYV26 D2 = 1N4004 LED1 = LED à tête plate, rouge, 3 mm T1, T2, T3, T4, T8 = MPSA42 T5 = SPP20N60C3 T6, T7 = 2N7000 IC1, IC2, IC3, IC8, IC9 = K155ID1 (74141) IC4 = PIC18F4420, programmé, réf. 150189-41 (www.elektor.fr) IC5 = LP2950 IC6 = 7805 IC7 = MC34063
K1 = embase SIL à 6 picots au pas de 2,54 mm K2 = bornier à 2 vis au pas de 5,08 mm K3, K5, K7, K9, K11, K13 = embase verticale à 2x5 picots K4, K6, K8, K10, K12, K14 = embase à 2x5 picots coudés LA1, LA2 = ampoule néon à fils T1.1/4 MOD1 = module GPS A2035H avec antenne interne S1 = interrupteur à levier, SPDT, 20 V 0,4 VA V1 à V6 = tube Nixie IN-12 X1 = quartz 22,1184 MHz cavalier pour JP1 circuit imprimé, réf. 150189-1 (www.elektor.fr) connecteur CC pour montage en boîtier : PC-010 (www.tme.eu/en/details/pc-010/ dc-power-connectors)
Divers : JP1 = embase à 2 picots
Figure 2. Pour mettre en valeur la lumière chaude des tubes Nixie, nous avons choisi un circuit imprimé de couleur sombre pour accentuer le contraste.
40
mai 2016
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs R4, R5, R25 et R26. Si vous utilisez un autre modèle de tube, il faudra adapter leur valeur au courant optimal. L’alimentation du reste de l’électronique est assurée par deux puces de stabilisation, un 7805 (IC6) pour le PIC et les circuits pilotes et un LP2950-33 qui fournit le 3,3 V au module GPS.
projet de lecteur Produits disponibles Pour ce projet, l’e-choppe vous propose un kit, un boîtier, un circuit imprimé et un contrôleur tout programmé. Le kit contient aussi les tubes Nixie testés individuellement à la main sur un appareil fait expressément (cf. photo).
Récupération du temps GPS Le logiciel précédent ne demandait que peu de modifications, exception faite de la sélection du fuseau horaire et de la production du code hexadécimal pour la nouvelle cible, le PIC18F4420. N’empêche, pour ne rien laisser dans l’ombre, nous allons revisiter l’ensemble du logiciel. Comme d’habitude, le code source et l’hexadécimal sont disponibles sur le site du magazine [1]. Si vous ne souhaitez pas le programmer vous-même, le PIC programmé [2] est aussi disponible dans l’e-choppe. Le système GPS se base sur le Temps Universel Coordonné, UTC (Coordinated Universal Time) [3], celui des horloges atomiques embarquées dans les satellites. La référence à GMT est maintenant anachronique.
venu une minute après le lancement, il déclenche une RàZ du PIC. Le témoin LED1 est resté allumé pendant cette minute. Dès réception d’une chaîne valide, la ligne RS232 reste sous surveillance, mais différemment. Le témoin continue aussi à indiquer une éventuelle coupure. Quand des données sont introduites, le PIC vérifie l’authenticité de la chaîne avant de transférer les données jusqu’à ce qu’il trouve un
(ASCII 13). Il calcule alors la somme de contrôle et la compare à celle transmise. Si elles sont égales, il déclare valide la donnée. Reste à calculer le décalage pour donner la bonne heure, été comme hiver. Il a recours à une table, qui court jusqu’en 2020, pour
Voici comment se déroule l’acquisition des données GPS. Le module extrait la trame GPRMC (Enable RMC) [4]. L’initialisation prévoit que seule la chaîne de caractères UTC soit envoyée une fois par seconde, les autres sont ignorées (Disable). Le PIC scrute sans arrêt l’arrivée de données dans le tampon RS232. Le chien de garde intégré le surveille et si rien n’est par-
déterminer laquelle est en vigueur. Pour finir, on convertit le temps en notation hexadécimale avec des variables séparées pour les heures, minutes et secondes. Il y a encore dans le logiciel une conversion d’ASCII en BCD pour garder la compatibilité avec d’anciennes versions. En principe, nous avons maintenant le temps GPS correct, mais il subsiste un souci avec les secondes. La transmission de la chaîne GPS est sujette aux conditions locales de réception, qui changent d’un endroit à l’autre, ce qui peut occasionner des ratés. Tant qu’on se contente d’afficher les heures et les minutes, on ne remarque rien, mais avec les secondes, mieux vaut ne pas afficher d’erreur. Pour l’éviter, j’ai décidé de programmer une horloge en temps réel avec un temporisateur interne. On appelle ainsi exactement toutes les 50 ms une routine d’in-
Figure 3. Si l’on excepte le module GPS, tous les composants sont traversants pour une construction facile.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
mai 2016
41
créer
découvrir
partager
Vicissitudes du programmateur Selon Microchip, le PICkit 2 et le PICkit 3 sont destinés à la programmation du PIC18F4420. Lors de la programmation de notre prototype, le PICkit 3 a impeccablement fonctionné. Mais avec le PICkit 2, impossible d’alimenter le contrôleur sur le programmateur. Ce n’est pas insurmontable, rien n’empêche d’utiliser l’alimentation du circuit, mais quand même, pourquoi pas ? Pour faire court, quand le circuit est alimenté de l’extérieur, le PICkit 2 fonctionne bien. Et même, quand il s’est mis en marche, vous pouvez débrancher l’alimentation externe. Il semble donc que le logiciel dans le PICkit 2 soit victime d’un bogue. Microchip ne prend plus en charge ce programmateur et, à vrai dire, nous n’avons pas ratissé la Toile à la recherche d’une solution. Encore une petite astuce : il n’est pas possible de brancher le programmateur directement sur le connecteur ISP : le régulateur 5 V et le condensateur réservoir l’encombrent. Un prolongateur SIL à six contacts et une embase à picots coudés, soudés dessus, vous feront un adaptateur parfait entre l’embase mâle pour ISP et le programmateur, comme à la figure 4.
Figure 4. Pour brancher le programmateur, mieux vaut fabriquer un accessoire avec une barrette à picots coudés et un prolongateur de bus SIL. Tableau 1. Réglage du fuseau horaire
UTC = temps universel coordonné
UTC = 0
UTC+0
UTC = 19
UTC-7
UTC = 1
UTC+1 (valeur standard)
UTC = 20
UTC-8
UTC = 2
UTC+2
UTC = 21
UTC-9
UTC = 3
UTC+3
UTC = 22
UTC-10
UTC = 4
UTC+4
UTC = 23
UTC-11
UTC = 5
UTC+5
UTC = 24
UTC-12
UTC = 6
UTC+6
UTC = 25
UTC+3.30
UTC = 7
UTC+7
UTC = 26
UTC+4.30
UTC = 8
UTC+8
UTC = 27
UTC+5.30
UTC = 9
UTC+9
UTC = 28
UTC+5.45
UTC = 10
UTC+10
UTC = 29
UTC+6.30
UTC = 11
UTC+11
UTC = 30
UTC+8.45
UTC = 12
UTC+12
UTC = 31
UTC+9.30
UTC = 13
UTC-1
UTC = 32
UTC+10.30
UTC = 14
UTC-2
UTC = 33
UTC+11.30
UTC = 15
UTC-3
UTC = 34
UTC+12.45
UTC = 16
UTC-4
UTC = 35
UTC–3.30
UTC = 17
UTC-5
UTC = 36
UTC–4.30
UTC = 18
UTC-6
UTC = 37
UTC–9.30
42
mai 2016
terruption. Comme l’écart entre les deux temps doit rester minimal, le réglage doit être réalisé avec précision par quartz. Il coexiste dans le logiciel l’heure produite par le PIC, PIC_HR, et celle de la chaîne GPS. On retrouve l’impulsion de 50 ms sur RA4, la broche 6 du PIC. L’horloge interne démarre bien sûr de 00:00:00, il faut une réception GPS valide pour la régler. Cela peut prendre un certain temps, mais dès qu’une chaîne valide arrive, le PIC la synchronise et l’horloge tourne au rythme des impulsions. Ensuite, un double mécanisme de vérification entre en jeu pour contrôler la stabilité de la réception GPS. Il analyse chaque chaîne GPS et, si elle est correcte, il la stocke dans un tampon qui peut en contenir dix. L’heure UTC correspond au nombre binaire de secondes écoulées depuis minuit. Le maximum étant de 24 x 60 x 60 = 86 400, 3 octets sont donc nécessaires pour les compter et les inscrire. Le nouveau temps est toujours inséré à la 10e position, ce qui décale d’une place tout le tampon, donc le temps le plus ancien arrive à la 1ère position. Si le débit de données du GPS a été constant, la différence entre ces deux valeurs est exactement de 9 s, auquel cas le drapeau GPS_STABLE est levé. On en déduit que le signal GPS est fiable et on l’emploie pour synchroniser l’horloge du PIC. Cette synchronisation se répète au moins une fois par heure. Quand l’heure du PIC passe à xx:00:30, la routine d’interruption lance une demande de synchro. Si le signal GPS est stable, le PIC est mis à l’heure du GPS. Ce moment de référence est choisi de manière à ce qu’une correction éventuelle ne soit visible que dans les secondes, mais pas plus haut. De toute façon, sur les différentes horloges que j’ai construites, l’écart ne dépasse jamais la seconde, pour autant que la boucle soit réglée précisément sur 50 ms. Pourtant, une synchronisation par heure n’est pas toujours suffisante. Principalement en phase de démarrage, il arrive que le temps validé issu du récepteur, souvent en l’absence d’information de coordonnées, soit totalement déphasé par rapport au temps réel et le reste longtemps. C’est très ennuyeux qu’un temps erronée soit transmis au PIC et affiché pendant près d’une heure.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur module GPS (cf. figure 3). Celui-ci est muni de pastilles à souder qu’il faut lier aux pastilles correspondantes du circuit imprimé au moyen de soudure. On le réalise fort bien à l’aide d’un fer à panne fine. Les plans de masse à la face opposée au module ne doivent pas forcément être étamés, on ne le réussit qu’au four à refusion.
Aussi, un second mécanisme de vérification, qui élimine aussi les boucles d’interruption imprécises, sert de moyen préventif du phénomène. Chaque seconde, le temps du PIC est aussi converti en secondes écoulées dans un mot de trois octets. Dès que le signal GPS est stable et tant qu’il le reste, on calcule la différence entre les deux valeurs. Si elle dépasse la valeur arbitraire de 3, le temps du PIC est aligné sur celui du GPS. La méthode peut sembler pointilleuse, mais en pratique, elle s’est révélée infaillible depuis longtemps.
Implantez d’abord les composants les moins hauts, puis les plus grands. Les régulateurs n’ont pas besoin de radiateur. Il faut de la prudence avec les tubes Nixie, ils sont fragiles et leurs fils de connexion sont très fins. Un petit support peut les stabiliser sur la carte, c’est une option. Coupez les fils à des longueurs différentes, en escaliers, mais pas trop courts, pour les introduire plus facilement un à un dans les trous de la carte. N’en soudez qu’un, positionnez alors le tube convenablement, à la verticale, avant de souder les autres.
La fiabilité du signal s’affiche sur l’ampoule au néon entre les heures et les minutes. Si elle clignote ou reste allumée, tout va bien. Mais quand elle s’éteint, c’est que l’horloge ne tourne plus que sur son signal interne, parce que depuis un certain temps, une trentaine de secondes, elle n’a plus reçu de chaîne GPS valide et qu’elle risque donc se dérégler.
Quand tout est correctement installé, branchez un adaptateur secteur, par ex. de 12 V et 1 A. Attendez que le module GPS ait une bonne réception et profitez bien de votre gardetemps attractif ! La tension sur les tubes est suffisamment élevée pour prévoir un boîtier adéquat qui évitera à quiconque un choc électrique.
Mise en service Bien que l’horloge reçoive automatiquement l’heure du module GPS, il y a quelques paramètres à ajuster soi-même. L’interrupteur S1 sert à définir le fuseau horaire et le passage automatique à l’heure d’été. On commence par éteindre l’horloge et la rallumer. On pousse sur S1 pendant 5 s. Le tube Nixie de gauche indique le réglage de l’heure d’été : un 0 signifie pas de passage automatique. Avec S1, on peut le mettre à 1 pour demander le changement d’heure automatique. Attendre ensuite que le premier tube se mette à clignoter et appuyer encore sur S1. Les deux tubes des minutes affichent alors un nombre entre 0 et 37 qui représente la zone horaire sélectionnée, en correspondance avec le tableau 1. S1 permet alors de parcourir les différentes valeurs. Quand on relâche le bouton, la valeur choisie s’inscrit en EEPROM et l’horloge démarre dans cette configuration.
(150189 – version française : Robert
Si vous avez choisi le changement d’heure manuel hiver/été, vous pourrez avancer l’horloge d’une heure en appuyant brièvement sur S1. Après une dizaine de secondes, l’affichage s’adapte.
Construction Le circuit imprimé pour cette horloge à Nixie (disponible dans l’e-choppe [2]) est à la figure 2. Les deux parties sont rassemblées en une seule plaque. C’est moins cher que deux circuits séparés, mais il faut les scinder soi-même. L’implantation des composants n’est pas très difficile, vous pouvez vous aider de la vidéo que nous avons déposée sur [5]. Tous les composants sont à fils, sauf le
Grignard)
Liens [1] Tracé des pistes, code source et hexadécimal : www.elektormagazine.fr/150189 [2] Produits disponibles dans l’e-choppe : www.elektor.fr/150189 [3] UTC : https://fr.wikipedia.org/wiki/ Temps_universel_coordonné [4] GPRMC : https://fr.wikipedia.org/wiki/ NMEA_0183 [5] Montage vidéo : https://youtu.be/p_rlTXYVsRQ
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
mai 2016
43
créer
découvrir
partager
SDR d’Elektor réinventé sur shield Arduino Burkhard Kainka (Allemagne)
Une radio logicielle, SDR pour Software Defined Radio, est un outil universel de travail en HF, qui permet aussi d’effectuer des mesures. Les caractéristiques du récepteur, c’est le logiciel qui les définit. Pour l’interface de communication, nous disposons à présent de la plateforme Arduino sur laquelle monter un nouveau shield.
Caractéristiques • Tension d’alimentation : 5 V et 3,3 V d’Arduino • Gamme de fréquences : 150 kHz à 30 MHz • Sensibilité : 1 µV • Gain global : 40 dB • Niveau maximal d’antenne : 10 mV • Plage de dynamique : 80 dB
De plus en plus de services de radiodiffusion quittent les ondes longues, moyennes et courtes qui offrent alors un magnifique terrain de jeu pour se lancer dans la chasse aux ondes. Maintenant plus que jamais, on y découvre de nombreuses stations lointaines, enfin débarrassées des signaux puissants qui les noyaient. En ondes courtes, il m’arrive souvent de douter de mon récepteur, tellement le silence est assourdissant. Dans de nombreuses bandes, les signaux les plus forts proviennent de radioamateurs. Vous y trouvez toujours du nouveau, depuis les stations pirates en radiotéléphonie sur SSB jusqu’aux récents développements numériques. De quoi exciter la curiosité ! Elektor a présenté et construit de nombreuses radios et en mai 2007 [1] sortait déjà la radio logicielle à interface USB. Depuis lors, de fréquentes suggestions
50
juillet/août 2016
ont été faites pour un aggiornamento. Or, il se fait que la puce PLL, la boucle à phase asservie, utilisée alors n’est plus fabriquée. Il fallait trouver une solution de rechange. Elle est venue sous la forme de la puce en CMOS Si5351 de Silicon Labs, un générateur d’horloge de 8 kHz à 160 MHz avec bus I²C. Les premières recherches ont eu lieu avec un BoB d’Adafruit. Les logiciels d’exemple actuels ont été rédigés pour Arduino et ont donc servi aux essais préliminaires. Le nouvel oscillateur réglé en tension (VFO) a été simplement relié à l’ancienne carte SDR pour prouver son efficacité (figure 1). Ainsi est née l’idée de construire tout le récepteur sur un shield Arduino. La question de l’alimentation est réglée et l’interface USB du PC, à portée de main. Arduino pilote le VFO et pour ainsi dire,
on peut lui parler en clair (à 6 030 kHz tout de même). Et sans doute le plus important, arriver à construire un récepteur complètement indépendant. Il devrait être relativement simple de faire migrer l’interface utilisateur du PC vers Arduino. Et qui sait, décoder les signaux IQ un de ces jours ?
Comment ça marche ? Reprenons d’abord depuis le début. C’est quoi, au juste une radio logicielle ? Malgré le développement du numérique en électronique, la radio est longtemps restée à la traîne. Quand les ordinateurs domestiques se sont répandus, la plupart des radios étaient encore analogiques. Commence alors un timide développement, du moins avec la numérisation de l’accord.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
ANT
IMixer
L
QMixer
R
Figure 1. Les essais préliminaires pour le SDR « nouvelle génération » : une puce PLL Si5351 raccordée à une Arduino Uno et à l’ancienne carte de récepteur SDR.
Figure 2. L’idée du circuit : l’interface se résume à un double mélangeur direct sur des signaux déphasés de 90°.
Les postes sont généralement équipés d’un synthétiseur à PLL, ce qui simplifie l’accord et garantit le respect de la grille des canaux. Mais le reste des circuits est encore largement analogique. Pendant ce temps-là, l’électronique numérique a débarqué dans la technique HF et chez les radioamateurs. Sans cesse, plus de fonctions analogiques des appareils sont remplacées par du logiciel. Le plus souvent, un processeur de signal numérique (DSP) travaille avec son logiciel à l’insu de l’utilisateur et s’occupe des caractéristiques optimales des filtres, de faire varier la largeur de bande, de décoder des signaux, de déparasiter et plein d’autres choses. Les appareils sont ainsi de meilleure qualité avec moins de dépense en matériel. D’autres exemples de ces développements sont les ordiphones et les terminaux mobiles. Dans cette cour-là, l’électronicien amateur ne peut plus jouer. Mais en réalité, il n’est pas nécessaire de chercher des complications. On utilise un convertisseur A/N rapide auquel on branche directement l’antenne. Tout le spectre est numérisé pour être traité ensuite. Le système peut fonctionner dans tout le domaine de 0 à 30 MHz. Le logiciel épure certaines fréquences et démodule le signal voulu. Peu importe qu’il s’agisse d’émetteurs radiophoniques AM ou DRM, de signaux SSB, d’émetteurs en morse, de téléscripteurs, de télécopieurs météo ou d’autres réceptions, tout est possible et pour tous, il existe un logiciel adapté. Toutefois, le matériel nécessaire pour une aussi grande largeur de bande est vraiment cher et le traitement ultérieur d’un spectre aussi étendu impose des exigences sévères.
de gain et la démodulation, le PC s’en charge. En principe, il suffit d’un simple mélangeur direct à diodes ou le célèbre NE612. Il ne faut y ajouter qu’un VFO stable. Pour des applications spéciales, on utilise un oscillateur à quartz. Mais si l’on veut pouvoir s’accorder sur toute la gamme, il faut un générateur DDS ou une puce PLL. Avec un mélangeur IQ, en bref, on a affaire à un double mélangeur direct avec deux signaux déphasés de 90° l’un par rapport à l’autre. Le signal de l’oscillateur se trouve toujours à proximité de la fréquence de réception. Les signaux de sortie se situent dans le domaine BF généralement entre 0 et 24 kHz. Les deux signaux s’appellent I et Q comme à la
La carte son d’un PC moderne offre déjà une possibilité. Avec un taux d’échantillonnage de 96 kHz courant aujourd’hui, on peut déjà recevoir toute la gamme jusqu’à 48 kHz. Sur l’entrée pour microphone, on branche une grosse bobine comme antenne pour recevoir la gamme TBF. Il y a là beaucoup de signaux intéressants, jusqu’aux émetteurs des sous-marins. Pour utiliser la carte son à de plus hautes fréquences, il faut d’abord effectuer une conversion vers le bas par mélangeur. Le système correspond à celui d’un s u p e r h é t é r o d y n e ave c f ré q u e n c e intermédiaire (FI) plus basse. Les étages FI, le filtrage, le réglage automatique
Figure 3. Le programme SDR# en réception d’un signal AM.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
juillet/août 2016
51
créer
3V3
5V
5V
C2 12 7
11
R2
25MHz
K3 SCL SDA AREF GND IO13 IO12 IO11 IO10 IO9 IO8
2
XA
IC1
4k7
4k7
X1
3
10 9 8 7 6 5 4 3 2 1
SCL
4
XB
SDA
R4 330R
5
SCL
9
C15
SI5351A
CLK2
100n
8
C
R 13
CLK0 CLK1
R3 330R
S
IC2B
14
IC2
IC2 = 74AC74
9 4
6
2
SDA
D
3
S
IC2A C R 1
GND 8
3
5 5 6
100n
11
100n
4u7 16V
IC4 = TS914
C3
R10 100k
3V3
IC3A
T1
L1
R6
10
2200uH
12
2x 1N4148
11
100n R13
2n2
IC3C
R14 10k
R11 6 5
IC4B
7
R15 100k
2
C10
C11 2n2
R18
C8 100n
R12 100k
K1
3
100n
100n
8
IOREF RESET 3V3 5V GND GND VIN
C7
C12
IC3D
IC4C
K2
100n
2n2
9
R8 100R
9
C5
C9 8
10
100n C4
2
BF545B D2
R9 10k
8 7 6 5 4 3 2 1
5V
C6
6 ANT D1
C18
IC3 = 74HC4066
13
L2
GND
100n
C17
2n2
4
R7 100R
1
3V3
IC3B
C19 8 7 6 5 4 3 2 1
7
4
IC4
10
470R
IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
C16
7
100uH
K5
14
IC3
10k
1
D
4k7
100n
VDD VDDO R1
R5 100R
10
4k7
C1 4u7 16V
partager
R16 13 12
IC4D
14
IC4A
1
C14 100n 1 2 3 4 5 6
R17 100k
10k
découvrir
C13 100n
K4
150515 - 11
Figure 4. Le schéma de la nouvelle radio logicielle.
Liste des composants Résistances :
IC4 = TI914IDT, SOIC-14
R1, R2, R13, R18 = 4,7 kΩ, 1 %/100 mW, CMS 0603 R3, R4 = 330 Ω, 1 %/100 mW, CMS 0603 R5, R7, R8 = 100 Ω, 1 %/100 mW, CMS 0603 R6 = 470 Ω, 1 %/100 mW, CMS 0603 R9, R11, R14, R16 = 10 kΩ, 1 %/100 mW, CMS 0603 R10, R12, R15, R17 = 100 kΩ, 100 mW, CMS 0603
Divers : K1 = prise pour jack stéréo 3,5 mm encartable K2, K3, K4, K5 = ensemble de connecteurs compatibles Arduino (1×6 broches, 2×8 broches, 1×10 broches)
X1 = quartz 25 MHz (Abracon ABM7) circuit imprimé, réf. 150515-1 ou circuit imprimé avec les CMS installés, réf. 150515-91 (www.elektor.fr)
Condensateurs : C1, C18 = 4,7 µF/16 V, CMS boîtier B C2, C3, C6, C7, C8, C9, C12, C13, C14, C15, C16, C17, C19 = 100 nF/50 V, X7R, CMS 0603 C4, C5, C10, C11 = 2,2 nF/50 V, X7R, CMS 0603
Inductances : L1 = 2 200 µH (Fastron L-1812AF) L2 = 100 µH (Murata LQH32CN101K23L)
Semi-conducteurs : D1, D2 = 1N4148WS, SOD-323 T1 = BF545B, SOT-23 IC1 = Si5351A-B-GT, MSOP-10 IC2 = SN74AC74PW, TSSOP-14 IC3 = 74HC4066, SOIC-14
52
juillet/août 2016
Figure 5. Le circuit imprimé à double face pour le nouveau récepteur SDR prend la forme d’un shield Arduino.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
AD0 AD1 AD2 AD3 AD4 AD5
projet labs figure 2. On les envoie directement aux canaux gauche et droit de l’entrée de la carte son. La suite appartient au logiciel. Un mélangeur simple mélangerait la bande en bas et celle en haut de la fréquence de l’oscillateur dans la même gamme. Il s’ensuivrait la production de fréquence image. Avec le mélange double et le déphasage, le logiciel est en mesure de déduire la fréquence image. On reçoit ainsi un domaine entre −24 kHz et +24 kHz si la carte son dispose d’un taux d’échantillonnage de 48 kHz. La figure 3 montre comment s’y prend un programme comme SDR# (cf. aussi l’encadré Le logiciel pour SDR).
Le schéma Voyez dans le schéma de la figure 4 les groupes individuellement. Le générateur PLL Si5351 (IC1) fournit le signal d’oscillateur, quadruple de la fréquence de réception, au diviseur 74AC74 (IC2B), lequel la divise par quatre pour appliquer le signal déphasé de 90° au mélangeur 74HC4066 (IC3). Ce commutateur analogique est câblé en inverseur et envoie le signal HF alternativement aux entrées inverseuse et non inverseuse de l’amplificateur opérationnel TS914 (IC4B/IC4D). C’est ce qui effectue la conversion vers le bas du signal dans le domaine BF. Après un léger filtrage et une amplification (IC4C/IC4A), le signal aboutit à la sortie audio. L’étage de sortie HF est un tampon à source suiveuse, formé par le JFET BF545B (T1), l’équivalent CMS du BF245B. En comparaison avec l’ancienne version de radio logicielle d’Elektor, on remarque une sérieuse simplification dans le trajet du signal. Les multiples filtres passebas commutables ont laissé place à une entrée à large bande avec deux diodes anti-surtension. L’expérience du passé ayant conclu à un risque de dommages sur l’étage d’entrée en cas d’orage, il est ainsi bien couvert pour la réception des ondes courtes avec un fil d’antenne. Pour des besoins particuliers, il reste possible d’y ajouter un filtre extérieur ou un préamplificateur. Le gain en BF, réglable sur trois niveaux sur l’ancien modèle, reste maintenant moyen, valeur révélée d’usage normal. Avec ces simplifications, il est plus aisé de tout installer sur un shield. Pour les premiers essais, il faut juste raccorder une antenne. L’idéal est un fil d’an-
projet de lecteur
tenne libre haubané d’une longueur d’au moins trois mètres. Si ce n’est pas possible, on peut utiliser un fil plus long n’importe où dans la pièce, mais une antenne intérieure est souvent plus parasitée. La construction optimisée d’antennes fera encore l’objet d’un thème d’article pour Elektor.
réo pour le traitement ultérieur. Bien entendu, on aurait pu essayer de déplacer l’interface vers Arduino et peut-être y ajouter un traitement simplifié du signal, mais ce serait beaucoup demander à un petit système. Ce qui compte d’abord, c’est qu’Arduino reçoive ses commandes du PC et règle le VFO.
La construction
Je ne vais pas décrire maintenant ce qui se trame avec l’EDI d’Arduino, supposons que tout se passe bien. Il faut commencer par charger un programme Arduino adapté. Ce que ce logiciel fait exactement vous sera expliqué dans la suite. Vous préférez sans doute arriver tout de suite à un premier captage, alors laissez de côté ces informations et chargez simplement le logiciel [3]. Sa mission décisive consiste à persuader le Si5351 de délivrer une fréquence appropriée. Cette puce compte deux PLL internes et trois sorties, son diagramme fonctionnel est à la figure 6. Nous n’utilisons ici que la PLL A et la sortie CLK1. Le croquis utilise la bibliothèque d’Adafruit, ce qui rend la chose agréablement simple. Mais avant d’en profiter, il faut que la bibliothèque soit chargée depuis [2] et incluse.
Le circuit imprimé est donc exécuté au format de shield pour Arduino, de manière à se brancher directement sur Arduino Uno. Comme le Si5351 n’est livrable qu’en CMS à dix contacts, il a été décidé de construire l’ensemble en CMS et de proposer dans l’e-choppe la carte assemblée [3], sur laquelle il reste à souder le connecteur compatible Arduino. Si vous préférez fabriquer complètement le circuit, vous pouvez télécharger en [3] le tracé des pistes ou acheter dans l’echoppe le circuit imprimé nu.
Le réglage de fréquence Arduino, de concert avec le shield SDR, sert d’interface entre l’antenne et le PC. Sa tâche se limite au réglage du VFO. Et en plus, il indique au PC quelle fréquence on veut avoir. Entre le PC et Arduino, les informations circulent dans un câble USB. Le signal utile, après son déplacement en fréquence vers le bas, atteint alors la carte son par câble sté-
Le Si5351 a un oscillateur à quartz de 25 MHz et ses deux PLL peuvent être accordées entre
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
juillet/août 2016
53
créer
découvrir
VDD
XA OSC XB
SDA SCL
partager
VDDO
Si5351A 3-Output
PLL A
MultiSynth 0
R0
CLK0
PLL B
MultiSynth 1
R1
CLK1
MultiSynth 2
R2
CLK2
I2C Interface
10-MSOP
GND
Figure 6. Diagramme fonctionnel dans la fiche technique du Si5351A.
Figure 7. Pilotage du générateur d’horloge avec le terminal Arduino.
600 MHz et 900 MHz. Comme les diviseurs des PLL travaillent avec des nombres fractionnaires, on peut obtenir pratiquement n’importe quelle résolution. Les diviseurs MultiSynth qui suivent utilisent également des fractionnaires. On dispose ainsi de deux possibilités (A ou B) pour produire
arriver à la fréquence voulue. Voyons la méthode A. La fréquence du VFO se situe à quatre fois celle du mélangeur, qui se trouve 12 kHz en dessous de la fréquence de réception. Le programme doit recevoir cette fréquence de réception exprimée en kHz au format texte et la
la fréquence voulue : • régler la PLL sur la fréquence fixe de 900 MHz, par exemple, et ensuite diviser par un nombre fractionnaire ; • régler la PLL par tâtonnements, puis diviser par un nombre entier pour
Listage 1. Programme pour un réglage fixe de PLL //SI5351_vfo
PLL fixed at 900 MHz (si5351vfo2.zip)
#include #include <Wire.h> #include Adafruit_SI5351 clockgen = Adafruit_SI5351(); void setup(void) { Serial.begin(9600); Serial.println("Si5351 Clockgen"); Serial.println("");
/* Initialise the sensor */ if (clockgen.begin() != ERROR_NONE) { Serial.print("Error"); while(1); } Serial.println("OK"); clockgen.enableOutputs(true); clockgen.setupPLL(SI5351_PLL_A, 36, 0, 1000); MHz setfreq (6000); } void setfreq (unsigned long freq) { unsigned long f2; unsigned long f3; unsigned long f4; unsigned long f5; unsigned long div2;
54
juillet/août 2016
//900
unsigned int Divider2; unsigned int rdiv; if (freq > 0) { f2=(freq-12)*4; if (f2<1000) { rdiv = 16; f2 = f2 * 16; } else { rdiv = 1; } div2 = 900000000/f2; f4 = div2/1000; f5=div2-(f4*1000); clockgen.setupMultisynth(1, SI5351_PLL_A, f4, f5, 1000); if (rdiv == 16) { clockgen.setupRdiv(1, SI5351_R_DIV_16); } if (rdiv == 1) { clockgen.setupRdiv(1, SI5351_R_DIV_1); } } } void loop(void) { unsigned long freq; if (Serial.available()) { freq = Serial.parseInt(); setfreq (freq); } }
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs convertir. Pour recevoir sur 3 500 kHz, le Si5351 doit produire une fréquence de 4 × (3 500 − 12) [kHz] = 13 952 kHz sur la sortie 1. Le diviseur de la PLL est mis sur 36 (25 [MHz] × 36 = 900 MHz), le diviseur Multisynth sur 900 000/13 952 = 64,506. De cette manière, on descend jusqu’à 1 MHz. Pour aboutir à des fréquences plus basses, on met en œuvre le diviseur R_DIV réglé sur 16. Le listage 1 montre le logiciel correspondant et la figure 7, la conduite avec le terminal Arduino. La méthode A présente l’avantage de pouvoir mettre au point à tout moment le VFO, sans causer d’interruption pendant le changement de fréquence. La méthode B, en revanche, garantit une meilleure pureté de phase, ce qui suffit aussi pour la DRM. Toutefois, chaque changement de fréquence s’accompagne d’une courte interruption d’environ 1 ms qui se manifeste comme parasite en radio logicielle. Cette méthode demande un calcul du diviseur optimal suivant (listage 2) pour que la PLL reste toujours dans le domaine de 600 à 900 MHz. Tout terminal peut diriger chacun des deux programmes. Pour votre confort, on a écrit un programme VB en Visual Studio 2015. Téléchargement en [3] : SDRshield.zip. Il envoie à Arduino la fréquence souhaitée à 9600 bauds au format texte, par ex. 3500. La glissière de réglage (cf. figure 8) va par pas de 9 kHz jusqu’à 1,6 MHz, puis s’en tient au standard de 5 kHz. Comme moyen subsidiaire, on peut donner directement la fréquence voulue ou cliquer sur les boutons à côté de chaque bande de radiodiffusion ou de radioamateurs. N’oubliez pas, lors du premier accès, de choisir le bon port COM.
Le logiciel SDR Voici un aperçu du logiciel SDR utilisable. Pratiquement tous les programmes utilisés avec l’ancienne radio logicielle d’Elektor peuvent servir, ils fonctionnent encore maintenant. • SDRadio reste encore un bon choix • SoDoRa peut aussi décoder la DRM • DREAM fonctionne encore, mais n’utilise pas le signal IQ et nécessite un récepteur comme un mélangeur direct • HDSDR est un logiciel actuel et très puissant • SDRSharp (SDR#) se signale par un maniement simple et une bonne
projet de lecteur
Figure 8. C’est un petit programme VB qui rend le maniement confortable.
présentation. Dans un prochain article, nous examinerons en détail chaque programme et ses possibilités.
Premières expériences de réception À défaut d’une meilleure antenne, on peut faire ses premiers essais avec un fil d’un à trois mètres de long à brancher à l’entrée d’antenne pour recevoir sans difficulté des émetteurs de radiodiffusion dans toutes les bandes d’ondes courtes. L’expérience
montre que le soir, on capte moins que le jour. Et le phénomène se déplace le soir vers les bandes plus basses de 75 jusqu’à 41 m. On peut aussi recevoir les stations de radioamateurs avec une antenne filaire plus courte. Il s’en trouve plus dans la bande de 40 m et avec un peu de chance, on écoute quelques stations CW (morse) et SSB (BLU). On choisit le mode approprié dans le logiciel SDR, réglage de volume, bande passante, contrôle automatique de niveau et bien d’autres paramètres. Avec les bons réglages, on récolte
Le logiciel pour SDR Les étoiles qui brillent actuellement au firmament du logiciel SDR s’appellent SDR# [4] et HDSDR [5]. Tous deux suivent la nouvelle tendance vers des fréquences toujours plus hautes et il est possible de les utiliser avec une simple clé électronique (dongle) comme récepteurs DVB-T. C’est un bon choix quand on veut écouter les gammes VHF et UHF. Des essais ont cours pour leur permettre de descendre sous les 30 MHz. On pourrait mettre en jeu un mélangeur élévateur qui remonte tout le spectre de 50 MHz. On aurait alors un superhétérodyne multiple accompagné des nombreux soucis bien connus de signaux fantômes et d’interférences, ainsi qu’une perte de dynamique. Une radio logicielle dédiée au spectre sous les 30 MHz ne demande qu’une seule conversion de fréquence et procure ainsi une réception très propre et sans sifflements. Sur le PC, il y a deux programmes qui tournent, celui qui réalise l’accord et le logiciel SDR. Chaque programme SDR a sa propre interface de commande. Les premiers pas sont toujours semblables. D’abord, s’assurer que c’est la bonne entrée qui est utilisée. Puis sélectionner la carte son et activer cette entrée-là (Line In). Le logiciel SDR démarre. On voit qu’on a choisi la bonne entrée par une augmentation significative du bruit de fond, qui grimpe encore avec une antenne. Le plus souvent, il faut régler la carte son sur un niveau plus faible, du fait que le récepteur peut fournir jusqu’à 1 V d’amplitude du signal.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
juillet/août 2016
55
créer
découvrir
partager
Listage 2. Programme pour PLL variable Divider2 = 18;
//SI5351_vfo, variable PLL (si5351vfo3.zip) } #include
if (f2 < 45000) {
#include <Wire.h>
}
#include
if (f2 < 30000) {
Adafruit_SI5351 clockgen = Adafruit_SI5351();
}
Divider2 = 20;
Divider2 = 30; void setup(void)
if (f2 < 20000) { Divider2 = 45;
{
}
Serial.begin(9600);
if (f2 < 15000) {
Serial.println("Si5351 VFO"); Serial.println("");
Divider2 = 60; }
if (clockgen.begin() != ERROR_NONE)
if (f2 < 10000) {
{
Divider2 = 90;
Serial.print("Error");
}
while(1);
if (f2 < 6000) {
}
Divider2 = 150;
Serial.println("OK");
}
clockgen.enableOutputs(true);
if (f2 < 4000) {
setfreq (6000);
Divider2 = 220;
}
} if (f2 < 2700) {
void setfreq (unsigned long freq)
Divider2 = 330;
{
}
unsigned long f2;
if (f2 < 1800) {
unsigned long f3;
Divider2 = 500;
unsigned long f4;
}
unsigned long f5;
if (f2 < 1500) {
unsigned int Divider2;
Divider2 = 600;
unsigned int rdiv;
} if (f2 < 1000) {
if (freq > 0)
Divider2 = 900;
{
}
f2=(freq-12)*4;
f2=f2*Divider2;
// f2=freq;
f2=f2*1000/25;
if (f2>120000) {
f3=f2 /1000;
f2=120000;
f4 = f3/1000;
}
f5=f3-(f4*1000);
if (f2<800) {
clockgen.setupPLL(SI5351_PLL_A, f4, f5, 1000);
rdiv = 16;
clockgen.setupMultisynth(1, SI5351_PLL_A, Divider2,
f2 = f2 * 16;
0, 2);
} else
if (rdiv == 16) {
{
clockgen.setupRdiv(1, SI5351_R_DIV_16);
clockgen.setupRdiv(1, SI5351_R_DIV_1);
}
rdiv = 1;
}
}
}
if (f2 >= 100000) { Divider2 = 6; }
void loop(void)
if (f2 < 90000) {
{ unsigned long freq;
Divider2 = 10;
if (Serial.available()) {
}
freq = Serial.parseInt();
if (f2 < 60000) {
setfreq (freq);
Divider2 = 15; }
}
if (f2 < 50000) {
56
juillet/août 2016
}
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs souvent davantage qu’avec un coûteux récepteur analogique à la mode ancienne. Une caractéristique capitale de tous les mélangeurs à commutation est la production de signaux à des multiples impairs de la fondamentale. Quand on veut recevoir un signal à 1 MHz, des harmoniques à 3 MHz, 5 MHz, 7 MHz, etc. peuvent perturber la réception. Aussi, utilise-t-on souvent des filtres passebas commutables. Le shield SDR n’y a pas recour s, donc il est logique d ’u t i l i s e r d e s antennes sélectives, mais il fonctionne étonnamment bien avec une antenne filaire à large bande. La raison en est qu’en cours de journée, des signaux puissants dominent sur différentes bandes et pourtant n’occasionnent pas de soucis. La réception des grandes ondes et des ondes moyennes fait exception, parce qu’elle peut subir l’influence de signaux provenant des gammes d’ondes courtes. Mais avec une antenne ferrite et un condensateur variable, l’embarras s’en va. Il faudra encore approfondir le sujet des antennes, filtres et préamplificateurs, pas juste pour en tirer le plus fort signal possible, mais surtout se prémunir des parasites. Il ne s’agit pas d’une possible longue antenne filaire tendue à distance de la maison, ce n’est pas réalisable partout, alors il faut chercher des compromis. Et en tête de liste, on trouve l’antenne-cadre magnétique. Héritière de l’antenne-cadre à air des pionniers de la TSF, ce genre d’antenne petite et discrète fonctionne à l’intérieur. Nous y reviendrons. Lors des premiers essais avec ce récepteur, notre attention a été attirée par l’influence d’Arduino : cette carte, si proche de l’entrée, peut-elle produire des parasites dans la réception ? D’origine, elle a été l’objet d’une grande attention au sujet
projet de lecteur à céramique dont la déviation peut s’élever jusqu’à 50 kHz. Et effectivement, il y a bien un signal faible à 15 950 kHz, avec même des signaux de bande latérale auxquels le contrôleur contribue. Et quand on approche la carte Arduino du résonateur céramique, on obtient encore une large modulation de fréquence et une autre contrariété qui montre que le résonateur présente une certaine dépendance à la température. Là, il nous faut d’urgence un SDR pour aller tâter le pouls d’Arduino !
du découplage. Elle bénéficie d’un plan de masse étendu à la face inférieure et ses tensions d’alimentation de 5 V et 3,3 V sont découplées par filtres LC. Dans les faits, ces mesures se révèlent fort efficaces. Normalement, il n’y a pas lieu de soupçonner Arduino.
Quand il reste sans antenne, le SDR augmente normalement son amplification pour rendre visibles les signaux les plus faibles. On voit alors autour de la fréquence moyenne de faibles parasites produits par l’USB d’Arduino. Pour faire la distinction entre les signaux qui proviennent d’Arduino et ceux de l’USB, branchons un bloc secteur sur Arduino et, après syntonisation sur la fréquence voulue, retirons le câble USB pendant le fonctionnement.
Arduino à l’écoute À tout le moins, on devrait pouvoir capter l’oscillateur d’horloge à 16 MHz. Sans aucune antenne, c’est bien le cas. Alors, le shield peut nous servir d’appareil de mesure. En fait, il y a deux oscillateurs. L’un est à quartz de 16 MHz sur la puce USB de l’Uno avec une déviation de moins de 1 kHz. Quand on touche l’endroit où le quartz est soudé sous la carte, on a une petite réaction. On sait donc qu’il s’agit bien de ce signal-là. Avec un petit bout de fil comme antenne, le signal est plus fort, mais le bruit de fond aussi. Et à cette occasion, on remarque encore une bizarrerie. Les signaux qui arrivent par l’entrée d’antenne subissent une bonne atténuation de la fréquence image. Mais pour ceux qui se faufilent par la tension d’alimentation sur le chemin du signal, c’est tout différent. Ils apparaissent en double, quoique nettement plus faibles.
Tous les parasites internes sont très faibles. Dès qu’on branche une antenne, le bruit de fond s’élève au point de couvrir totalement ces parasites. Cela montre la haute sensibilité de la radio logicielle. On peut même recevoir des signaux d’à peine 1 µV. La plupart du temps, pareille sensibilité est inutile, puisque le niveau de bruit sur l’antenne est bien supérieur. Avec une longue antenne, on peut même sursaturer le récepteur. Il faut déjà songer à un atténuateur d’entrée.
Il faut aller chercher le signal d’horloge du Mega328. Il travaille lui, avec oscillateur
[5] http://www.hdsdr.de
(150515 – version française : Robert Grignard)
Liens [1] www.elektormagazine.fr/070039 [2] https://github.com/adafruit/ Adafruit_Si5351_Library [3] www.elektormagazine.fr/150515 [4] http://airspy.com/download
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
juillet/août 2016
57
découvrir
créer
partager
judas connecté avec Raspberry Pi
communiquer avec un visiteur via son ordiphone Luc Lemmens (labo d’Elektor)
Une visite inattendue peut être agréable, mais on peut aussi se retrouver face à une personne indésirable et regretter d’avoir ouvert la porte trop vite. Le visiophone est une solution, mais si vous n’êtes pas à la maison... Avec notre projet, vous pourrez communiquer avec votre visiteur, et même lui ouvrir la porte à distance ; du moins, si vous possédez un ordiphone.
Avec un Raspberry Pi (B+, 2 ou 3, peu importe), un module caméra RPi, et la carte HAT GSM pour RPi conçue par notre labo, nous réalisons un interphone qui prend une photo du visiteur dès qu’il sonne. La photo est envoyée dans un MMS vers votre ordiphone, ce qui vous permet de voir qui est à la porte. Vous pouvez ensuite appeler votre « portier connecté » : le module GSM prendra automatiquement l’appel, et vous communiquerez avec le visiteur par microphone et haut-parleur interposés. Nous avons aussi prévu la possibilité d’actionner une gâche électrique, suite à l’envoi d’un SMS à l’interphone. Le SMS contient un mot de passe, et le numéro de l’appareil qui a envoyé le message est aussi contrôlé, pour plus de sécurité. Le système a été avant tout pensé et conçu pour les personnes absentes de
50
octobre 2016
leur domicile, mais il peut aussi s’avérer utile dans des situations où on n’est pas en mesure d’aller voir qui a sonné. Et pourquoi pas pour « filtrer » vos visiteurs ? Il y a des jours où on n’a pas envie de recevoir n’importe qui... Cette idée nous est venue après avoir fini le projet de carte de liaison GSM [1] qui repose sur le module GSM M95 de Quectel. Nous avions les bases nécessaires pour notre interphone, mais il semblait trop difficile d’en faire un ensemble compact. Nous avons donc préféré réaliser une carte HAT (Hardware Attached on Top) pour RPi avec le matériel additionnel nécessaire à l’interphone ; examinons-en maintenant le schéma.
Schéma L’essentiel du schéma provient de la documentation de Quectel, « M95 hard-
ware design » [2]. Le cœur du circuit (fig. 1) est constitué du module GSM M95 (MOD1) avec son antenne, et d’un connecteur pour carte SIM (SIM1). Les résistances R15 à R17, la barrette de diodes D7, et les condensateurs C19 à C22, constituent un dispositif antiparasites et de protection contre les décharges électrostatiques, pour l’interface de la carte SIM. Les condensateurs C6 à C17 et les diodes D3 à D6 remplissent la même fonction pour l’entrée du microphone à électret et la sortie de l’amplificateur audio du M95. L’UART du M95 est connecté au RPi via K5, la communication se fait avec des commandes AT. Le diviseur de tension constitué par R6 et R7 adapte le niveau du signal TxD aux 3,3 V de l’entrée du RPi. Nous aurions pu alimenter la carte
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs GSM en 3,3 V, pour éviter la différence de niveaux logiques, mais cela provoque un problème inattendu : bien que le M95 soit spécifié pour une tension d’alimentation de 3,3 à 4,6 V, il envoie une alerte en continu via son UART dès que l’on approche à moins de 100 mV du minimum ou du maximum. Outre le fait que cette alerte gêne le décodage d’autres
projet de lecteur
3V3
OUT TAB
C2
1000u 10V
100n
JP1 1
LED1
6
POWER R2
R3
C3
C4
C5
100n
100n
100u 16V
5
6
7
8
9
10
D1
R4
1
TXD
Door Opener
T4
1N4148
EE2-5NU
R10 100R
R7
K2
2
RE2
RXD R6 1k5
Raspberry Pi R5
R11
2N7002
MIC1P
8
MIC1N
9
SPK1N
10
SPK1P
PWR
33p R9
2N7002
4
4V4
C8
10p
PGB1010603
32 33 34 AGND
1
MIC2P
2
MIC2N
3
MIC1P
4
MIC1N
5
1
CTS
SPK1N
6
2
RTS
SPK1P
7
3
DCD
LOUDSPKN
8
4
RI
LOUDSPKP
9
5
VRTC
6
PWRKEY
10
EMOFF
11
SIM2_DATA
16
SIM2_CLK
17
SIM2_VDD
18
7
V+
19 TXD
6
RXD
5
SIM2_VDD
4
SIM2_CLK
3
SIM2_DATA
20
AGND
RF_ANT SIM1_GND SIM1_CLK
MIC2N
SIM1_DATA
MIC1P
SIM1_RST
MIC1N
SIM1_VDD
MOD1 SPK1N
RI/PCM_RST
SPK1P
DCD/SIM2_RST
LOUDSPKN
RTS
LOUDSPKP
CTS
PWRKEY
TXD
EMERG_OFF
RXD
SIM2_DATA
M95 GSM Module
SIM2_CLK
DBG_TXD DBG_RXD
SIM2_VDD
NETLIGHT STATUS/PCM_SYNC
VDD_EXT
SIM1_VDD 2
DTR/SIM1_PRESENCE
PCM_IN PCM_OUT
35 36 37 38 40
100n
Doorbell
T3 EE2-5NU
R13 100R
C22
2N7002
33p
PGB1010603 C19
1
39
MIC2P
GND
7
SMA
3
MIC2P
6
K6
SIM1 SIM Card Holder
VRTC
33p
5
GND
33p
33p C18
22R
C11
10p
2 1
R15
33p
LOUDSPKP
31 30
SIM1_CLK
29
SIM1_DATA
LOUDSPKN
C15
33p
10p
C13
C16
LS1
33p
10p
8Ohm 1W5
SIM1_RST
27
SIM1_VDD
C14
C17
26
RI
33p
10p
25
DCD
24
RTS
23
CTS
22
TXD
21
RXD
15
DTXD
14
DRXD
4V4 LED2 NET
STAT
42
D7
41
D6
PGB1010603
13 12
D5
C12
28
R12 1
3
4
5
6
R14
T2
0R
33p
100n
GND
10p
100u 16V
GND
C7
C26
VBAT
C10
MIC2N
C25
GND
33p
C24
VBAT
10p
C23
VRTC
D4
C6
GND
MIC1
C9
RE1
D2
1N4148
ANT1 D3
C21
R16
1k
AGND
7
R17
SIM_VDD
6
C20
T1
R8 100R
SIM_DATA
PWR
SIM1_RST
5
22R
EMOFF
SIM_RESET
STAT
4
SIM1_CLK
3
V+
22R
DRXD
PGB1010603
K4
4
SIM_CLK
DTXD
2
PWRKEY
1
47k
K1
K3
2
3
PWR
43k
C1
Bell Button
4
1
2k2
3
S1
2k2
GND
110k
V+
3k3
MIC29302
IN
R1
5
1k
2
IC1
ADJ
470R
EN
Le bouton-poussoir S1 est un bouton de sonnette ordinaire. Il commande le relais
V+
K5
4V4
V+ 1
light », pourrait laisser croire que le module s’est connecté à un réseau mobile, mais ce n’est pas le cas. Le M95 se met en fait en mode stand-by, et une impulsion à l’entrée « pwrkey » l’allume ou l’éteint.
messages transmis par le M95 au RPi, le M95 peut aussi s’éteindre soudainement. Quectel n’explique pas les raisons de ce comportement, nous avons donc choisi d’alimenter le circuit en 4,4 V via un MIC29302 (IC1), même si cette tension n’est pas usuelle. LED2 clignote dès que le circuit est alimenté. Le nom de cette sortie, « net-
NETLIGHT
2
2
1
copyright
2N7002
SMF05CT2G
150330 - 11
Figure 1. Les composants les plus importants sont le module GSM M95 et le connecteur pour carte micro-SIM.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
octobre 2016
51
créer
découvrir
RE1, qui peut être utilisé pour alimenter (en courant alternatif) une sonnette existante. Le cavalier JP1, que l’on peut remplacer par un interrupteur marche/ arrêt, détermine si le signal de sonnerie est envoyé vers le RPi, auquel cas le processus d’envoi d’une photo démarre. L’envoi d’un MMS n’est pas gratuit, et si on est à la maison, on peut en principe se contenter de la sonnette. RE2 permet la connexion d’une gâche électrique, qui sera actionnée par le RPi
partager via T4 lors de la réception d’un SMS contenant un mot de passe déterminé, et si le numéro de l’appareil envoyant le message est reconnu. Nous ne sommes pas tout à fait convaincus de l’utilité de cette dernière option : il faudrait de toute manière pas mal de matériel pour sécuriser le relais, et empêcher qu’un malfrat ne parvienne à l’actionner ou à le contourner, et à ouvrir la porte. Il appartient à l’utilisateur de choisir quelles mesures de sécurité il appliquera ou non.
Liste des composants Résistances :
Divers :
(CMS 0603, 1% / 0,1 W) R1 = 110 kΩ R2 = 43 kΩ R3 = 470 Ω R4, R12 = 1 kΩ R5, R11 = 2,2 kΩ R6 = 1,5 kΩ R7 = 3,3 kΩ R8, R10, R13 = 100 Ω R9 = 47 kΩ R14 = 0 Ω R15, R16, R17 = 22 Ω
Mod1 = module GSM Quectel M95 SIM1 = connecteur micro-SIM (Molex 78723-1001) ANT1 = connecteur SMA pour circuit imprimé (Molex 73391-0070) + antenne hélicoïdale (RF Solutions ANT-GHEL2R-SMA) K1 = barrette femelle à 10 broches, pas de 2,54 mm (en option) K2, K6 = barrette femelle à 2 broches, pas de 2,54 mm (en option) K3, K4 = barrette femelle à 7 broches, pas de 2,54 mm (en option) K5 = barrette femelle à 2×5 broches à longues pattes (Samtec ESQ-105-14-G-D) S1 = barrette mâle à 2 broches, pas de 2,54 mm, pour bouton de sonnette JP1 = barrette mâle à 2 broches, pas de 2,54 mm, avec cavalier LS1 = barrette mâle à 2 broches, pas de 2,54 mm, pour le haut-parleur (8 Ω / 1,5 W) Mic1 = barrette mâle à 2 broches, pas de 2,54 mm, pour le microphone à électret (ABM-715-RC) Re1, Re2 = relais CMS, DPDT, 2 A, 5 VDC (Kemet EE2-5NU) Raspberry Pi B+, 2 B ou 3 B Module caméra pour Raspberry Pi (rev 1.3) Circuit imprimé réf. 150400-1 ou circuit imprimé avec composants CMS montés réf. 150400-71 (www.elektor.fr)
Condensateurs : C1 = 1000 µF / 10 V, CMS radial C2, C3, C4, C18, C24 = 100 nF, X7R, CMS 0805 C5, C23 = 100 µF / 16 V, CMS 2312 C6, C7, C8, C12, C13, C14, C19, C20, C21, C22, C26 = 33 pF, X7R, CMS 0805 C9, C10, C11, C15, C16, C17, C25 = 10 pF, X7R, CMS 0805
Semi-conducteurs : D1, D2 = 1N4148, SOD-323 D3, D4, D5, D6 = PGB1010603MR, CMS 0603 D7 = SMF05CT2G, SC-88 LED1, LED2 = LED verte, 50 mcd, 2,1 V @ 20 mA, CMS 0805 T1, T2, T3, T4 = 2N7002, SOT-23 IC1 = MIC29302WU TR, TO-263
Circuit imprimé Le circuit imprimé est en figure 2. Comme le module GSM n’est disponible qu’en version CMS, nous avons décidé de n’utiliser que des composants CMS, à l’exception des connecteurs – dont celui de l’antenne. Cela risque de compliquer la tâche des amateurs les moins expérimentés, mais qu’ils se rassurent ! Elektor propose le circuit imprimé avec tous les CMS montés (150400-71). Les électroniciens chevronnés se procureront le circuit imprimé nu, ou le réaliseront euxmêmes ; le dessin est disponible en [4]. Certains connecteurs sont optionnels, c’est mentionné dans la liste des composants. Attention : il faut insérer K5 côté pistes du circuit imprimé et ensuite souder ses pattes côté composants (fig. 3). Ce connecteur sera ensuite enfiché dans le connecteur GPIO du RPi. Avant de souder, vérifiez s’il faut ajuster la hauteur du connecteur par rapport au RPi. Il faut que la carte HAT reste éloignée de la prise USB du RPi.
Préparation du RPi Avec la version actuelle de Raspbian, appelée Jessie, il est relativement simple d’adapter le RPi à notre montage. Il faut d’abord télécharger l’image de la version la plus récente du système d’exploitation sur le site du RPi [3] (version 4.4 du noyau au moment de la rédaction de cet article). Copiez le fichier image (extension IMG) sur une carte SD, à l’aide de Win32 DiskImager ou d’un programme similaire. Ensuite démarrez le RPi avec cette carte SD, ouvrez une fenêtre de terminal et modifiez la configuration après saisie de la ligne suivante : sudo raspi‑config
Figure 2. Le circuit imprimé de la carte HAT pour RPi comporte essentiellement des CMS.
52
octobre 2016
On sélectionne l’option « 6. Enable Camera » pour connecter la caméra RPi. Ensuite on passe à « 9. Advanced Options », puis « A7 Serial », et « No », pour mettre hors service l’accès au loginshell (première instruction à s’exécuter lors d’une ouverture de session) via le port série. On termine avec « Finish », et on redémarre le RPi. N. B. : avec d’anciennes versions de Raspbian, il faut installer la caméra manuellement, et mettre la console série hors service dans les fichiers de démarrage. Il y a de nombreux exemples et des explications sur l’internet. Il faut cependant effectuer une modifica-
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs tion importante dans le script en Python du portier connecté : à la ligne 45, il faut supprimer le caractère « # » avant « port.open » ! Il y a un certain temps que notre prototype est prêt, et lorsque nous avons refait toute l’installation à partir de la dernière version de Raspbian en vue de cet article, le script nous a renvoyé le message d’erreur « Port already open » à la ligne 45. Il semble qu’avec la dernière version du logiciel la commande « open » soit superflue.
projet de lecteur
Figure 3. Attention au montage du connecteur K5 ; le connecteur lui-même est sous le circuit imprimé, et les broches sont soudées sur le dessus.
Connexion du matériel Le Raspberry Pi est fin prêt, mais il reste encore pas mal de liaisons à établir avant de pouvoir passer à la phase de test. Le plus simple est de commencer par la caméra RPi, la limande (Flex Flat Cable – FFC) peut passer sous la carte HAT. Notre carte s’adapte parfaitement au RPi. Il faut à nouveau vérifier que les entretoises sont de longueur suffisante, et qu’il n’y a aucun contact entre le dessous de notre circuit imprimé – surtout les soudures du connecteur d’antenne – et les prises USB. On peut ensuite assembler les deux cartes avec boulons et écrous (fig.4). Connectez ensuite un bouton-poussoir à S1 pour faire office de bouton de sonnette, et placez le cavalier sur JP1. Raccordez le microphone à MIC1, le hautparleur à LS1, et l’antenne à ANT1. Il nous faut encore insérer une carte microSIM dans SIM1, mais ne courez pas tout de suite en acheter une...
entre 20 et 30 s pour recevoir le message sur l’ordiphone, auxquelles il faut encore ajouter le temps de réaction. Conclusion : le système n’aura guère d’utilité avec des visiteurs pressés...
Script en Python et test initial Après avoir configuré le RPi et installé les bibliothèques Python, nous sommes prêts à exécuter le script de gestion de l’interphone. Ce script en Python est téléchargeable en [4] : « MMSautoSend.py » ; il faut aussi le reconfigurer avant de pouvoir passer aux tests. Il est préférable
de connecter un moniteur, un clavier, et éventuellement une souris pendant cette phase, cela facilitera le travail ; nous n’aurons plus besoin de ces accessoires par la suite. Au début du script, quelques constantes sont définies, il faut les modifier. • « ThisNumber » : numéro d’appel de la carte SIM du M95. • « ThatNumber » : numéro d’appel de l’ordiphone vers lequel le MMS est envoyé.
Carte SIM et MMS Le module GSM M95 ne fonctionnera qu’avec une carte SIM sur laquelle il y a suffisamment de crédit (ou un abonnement, bien sûr). Nous avons utilisé deux cartes SIM prépayées différentes, et un avertissement s’impose : comparez bien avant votre achat ! Les MMS sont apparemment peu utilisés, et les opérateurs ne mentionnent donc pas clairement les tarifs de ce service. D’après nos recherches, le coût d’un MMS est fixe chez la plupart des opérateurs, pour autant que l’annexe, une photo au format JPEG dans notre cas, ne dépasse pas 300 Ko. La taille de ce fichier est également importante dans notre application, puisqu’elle conditionnera le temps de transmission du message. Si vous mettez trop de temps à répondre au coup de sonnette, il y a des chances que votre visiteur n’attende pas ! Au labo, il fallait
Figure 4. Utilisez des entretoises suffisamment hautes entre les deux circuits, pour que les broches soudées sous la carte HAT, notamment celle du connecteur d’antenne, ne touchent pas les prises USB.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
octobre 2016
53
créer
découvrir
partager
le son et l’image, identifiez votre visiteur avant de lui parler Données relatives à l’opérateur de la carte SIM du M95 pour l’emploi du service MMS : • APN : Access Point Name • MMSC : Multimedia Messaging Service Centre • MMSproxy : Multimedia Messaging Service proxy server • MMSport : Multimedia Messaging Service port number Vous trouverez ces données sur le site de l’opérateur. Dans le script originel, nous avons repris les données des deux opérateurs néerlandais avec les cartes SIM desquels nous avons effectué les tests au labo. Nous sommes maintenant fin prêts pour le test initial. Ouvrez une fenêtre de terminal RPi, et tapez la commande sudo su ; c’est nécessaire pour obtenir les droits d’accès à la bibliothèque Python du bus GPIO, autrement dit pour pouvoir gérer les entrées/sorties du RPi. Nous démarrons ensuite le script avec python MMSautoSend.py.
Le script est simple à comprendre. Le RPi envoie des commandes AT au module GSM, suivies à chaque fois de « time. sleep », pour laisser le temps au M95 d’exécuter les commandes. Il y a d’abord quelques configurations, dont les paramètres pour la caméra, la sensibilité du microphone et le volume du hautparleur ; vous pourrez les modifier plus tard en fonction de l’environnement de l’interphone. Nous avons désactivé la saisie du code PIN des cartes SIM utilisées, pour plus de facilité ; il suffit d’insérer les cartes dans un téléphone mobile et de supprimer la protection par code PIN. Si vous
souhaitez conserver le code PIN, il y a dans le script un bloc de quatre lignes (en commentaires) qui permettent d’entrer le code de la carte utilisée. Il faudra aussi supprimer le « # » devant « port.write » et « time.sleep ». Ensuite le script entre dans une boucle sans fin, que l’on interrompra par une pression sur les touches « CTRL+C » pour quitter le script. En fonctionnement normal, le RPi vérifie en permanence si la sonnette est actionnée, ou si un SMS est reçu pour l’ouverture de la porte. Lors de la réception d’un SMS, le script vérifie d’abord le numéro appelant ; si ce numéro est correct (« ThatNumber »), le contenu est ensuite comparé au mot de passe qui a été entré comme constante « Very_Secret ». Si c’est le cas, le relais RE2 est excité durant une seconde ; cette durée peut être modifiée dans le script si nécessaire. Mais n’oublions pas qu’une autre action conditionne la réception du SMS : il faut qu’un visiteur ait sonné à la porte ! Le RPi prend alors une photo, prépare un MMS, et l’envoie à votre ordiphone. En sus de la
Liens [1] www.elektormagazine.fr/labs/gsm-breakout-board-150330 [2] www.quectel.com/UploadImage/Downlad/M95_Hardware_Design_V1.3.pdf [3] www.raspberrypi.org/downloads/raspbian/ [4] www.elektor.fr/150400
54
octobre 2016
photo, un petit texte est aussi transmis, avec entre autres le numéro d’appel de l’interphone dans un lien hypertexte. À vous de décider si vous voulez parler au visiteur, en utilisant le lien hypertexte ; le M95 répondra automatiquement à l’appel, et vous mettra en communication avec ce visiteur. Dès que la conversation est terminée, le M95 « replace le combiné sur son support », et se met en attente d’un SMS ou d’une nouvelle pression sur le bouton de la sonnette.
Montage Les aspects mécaniques du montage final constituent sans doute le plus grand défi de ce projet. L’idéal – et sans doute le plus sûr – est de ne mettre à l’extérieur que le microphone, le haut-parleur et la caméra ; le reste de l’électronique sera placé à l’abri à l’intérieur. La caméra peut aussi effectuer ses prises de vue à travers une fenêtre ou un vasistas. Comme nous l’avons mentionné, quelques paramètres de la caméra peuvent être modifiés dans le script. L’orientation et la luminosité seront adaptées en fonction de l’environnement. La résolution sera la plus basse possible, afin de minimiser la taille du fichier JPEG – et donc le temps de transmission. Pendant les essais, mettez l’envoi de MMS hors service dans le script, vous économiserez de l’argent ; vous pouvez juger de la qualité de la photo en ouvrant le fichier « test1.jpg » stocké dans le RPi. (150400 – version française : Jean-Louis Mehren)
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
DÉCOUVRIR
CRÉER
PARTAGER
Tuto Arduino Uno
45 projets électroniques originaux Alarme silencieuse, détecteur de présence, luxmètre, commande de moteur, accès depuis l’internet, commande sans fil… sont quelques-uns des projets Arduino Uno brillants et passionnants de ce livre, vérifiés et testés par l’auteur. Ces 45 projets sont faciles à réaliser et bien décrits (schémas, photos…). Les explications et la description des composants utilisés facilitent l’adaptation des montages à ses besoins.
www.elektor.fr/tuto-arduino-uno
Domotic avec Zelio Logic Le module programmable compact Zelio Logic avec 12 entrées/sorties est une solution technique bon marché et facile à mettre en œuvre, dans un logement, pour automatiser l’éclairage, piloter le chauffage, optimiser la consommation d’électricité ou encore pour se protéger contre les intrusions. Ce livre montre comment exploiter Zelio Logic avec son outil de programmation graphique en LADDER ou FBD (logiciel pour PC Zelio Soft 2). Le premier projet décrit (station de pompage domestique) permet au lecteur de s’initier à ces deux langages. Le dernier chapitre, conforme au thème « Domotique et confort » et complété par des activités pédagogiques, intéressera particulièrement les professeurs.
www.elektor.fr/domo-zelio
36 Expériences de Physique avec Arduino
Ce livre n’est pas un manuel de physique : pas d’équations différentielles ni de courbes abstraites, mais des phénomènes physiques de la vie quotidienne. C’est une approche nouvelle et créative des leçons de physique grâce aux techniques modernes de mesure et de traitement des données. L’électronique utilisée (Arduino) est simple. Ajoutez-y le logiciel gratuit CoolTerm pour enregistrer les mesures et les retravailler ensuite sous Excel.
www.elektor.fr/arduino-36-experiences
Personal Download for François Cariou | copyright Elektor
découvrir
créer
partager
carte de commande Wi-Fi : le retour reliez des objets à votre ordiphone Roy Aarts (stagiaire, labo d’Elektor) et Clemens Valens (labo d’Elektor)
Tout le monde veut des objets connectés. Tout, à l’exception peut-être de l’humeur du chien, se doit de pouvoir être commandé avec un ordiphone ou une tablette et de plus en plus d’objets doivent être capables d’envoyer des données via l’internet. Vous en rêvez, Elektor exauce vos vœux. Notre carte de commande Wi-Fi nouvelle génération vous permettra de commander des charges électriques via l’internet et de recevoir des informations sur leur état. En juin 2013, nous avons publié une carte Wi-Fi de commande à distance capable d’attaquer un ruban à LED RVB, trois relais ou moteurs, ou d’autres charges [1]. Malheureusement, comme c’est courant dans l’industrie électronique, le module Wi-Fi au cœur de cette carte, le WizFi220 de WIZnet, est
32
novembre 2016
devenu plus ou moins obsolète et nous avons été forcés d’arrêter la production de notre carte. Les modules Wi-Fi vont et viennent et, au deuxième semestre 2014, un nouveau venu est apparu : le premier module Wi-Fi à base d’ESP8266, l’ESP-01 (fig. 1).
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
celui de la version précédente, nous avons étendu le port d’extension K4 à huit bits. Les trois sorties de puissance utilisent des transistors MOSFET (T1, T2 et T3), chacun capable de commuter jusqu’à 4 A (RDS(ON) = 100 mΩ), soit bien plus que le 1 A que nous recommandons de ne pas dépasser. Chacune des sorties est dotée d’une diode de roue libre permettant la commande de charges inductives comme des relais. Le module ESP-01 prend place sur le connecteur K5. Attention à bien orienter le module : le connecteur est symétrique et les broches ne sont pas étiquetées. Pour vous aider, nous avons placé le module en bord de carte : il n’y a donc qu’une seule orientation possible pour que le boîtier ferme. La communication avec le module Wi-Fi se fait via un port série. Un signal additionnel est utilisé pour réinitialiser le module si nécessaire. Les autres broches ne sont pas utilisées. Elles doivent toutefois être reliées afin d’empêcher que l’ESP-01 n’entre dans un des modes de reprogrammation de son micrologiciel.
L’ESP8266 est une puce à bas coût fabriquée par l’entreprise chinoise Espressif. Elle comporte une pile TCP/IP complète ainsi qu’un microcontrôleur. Les modules, très vite devenus populaires, sont fabriqués par AI-Thinker, mais on trouve aussi des clones sans marque. Ces modules sont tellement peu chers que nous n’avons pas pu résister à la tentation de redonner vie à notre carte de commande Wi-Fi avec un module ESP-01.
Le circuit À l’origine, la carte de commande Wi-Fi était un projet Arduino avec un logiciel développé pour l’ATmega328 ; ensuite elle a été portée sur un µC PIC18F14K50 pour ajouter l’USB et réduire le nombre de broches. La carte n’utilisait que des composants traversants. La nouvelle carte renoue avec l’ATmega328, mais en version CMS, tout comme les autres composants. Il n’y a plus de port USB (fig. 2). L’alimentation a également été simplifiée : la tension d’entrée est maintenant limitée à 12 V CC au lieu de 24 V CC et le régulateur à découpage a été remplacé par un modèle linéaire (IC1). Cela améliore la CEM en réduisant les émissions et rend la carte plus compacte. Comme le µC (IC2) a plus de broches que
Le logiciel Pour faire fonctionner le système, il faut du logiciel. Ce sera un croquis Arduino dans le µC et une appli Android pour l’in-
Figure 1. L’ESP-01 est un module série -> Wi-Fi bon marché doté de seulement huit broches. Deux des broches se disputent le rôle de la broche n°1 (pastilles carrées).
terface utilisateur. Le croquis se comporte comme un simple serveur web à l’écoute de commandes. Dès qu’il en reçoit une qu’il peut comprendre, une nouvelle valeur pour les sorties R, V, B ou pour l’une des broches du port d’extension par ex., le programme
+12V +3V3
D1
D2
K2
D3 2
S1A
S1A
S1A
1
R6
5
26
6
25
7
24
8
23
9 7
VCC
MOSI
15 1
MISO
16
4
3
SCK
17
6
5
RESET
2
GND
K6
8
ISP
PD7(AIN1) PC5(ADC5/SCL)
ADC6
PC4(ADC4/SDA)
AREF
PC3(ADC3)
ADC7
PC2(ADC2) PC1(ADC1)
PD0(RXD)
PC0(ADC0)
PD3(INT1)
ATMEGA328P-AU PB6(XTAL1/OSC1)
PD1(TXD)
PB7(XTAL2/OSC2) PB3(MOSI/OC2) PB4(MISO)
PD2(INT0) PD4(XCK/T0)
PB5(SCK)
PD5(T1)
GND GND 3
21
AGND 5
RED
14
BLUE
1
19 R7 R8
20 22 30
K5
R10
R3
R2
LED1
T1...T3 =
R5
R4
NDT3055L
2 GND 4 GPIO2
RST
5
6 GPIO0
+3V3
7
8 RX
+12V
ESP8266
32 9
1
CH–PD 3
31
2
R9
TX
1
K1
T3
10k
27
PB1(OC1A)
PB2(SS/OC1B)
GREEN
13
10k
28
4
IC2
PB0(ICP)
10
10k
11
3
PD6(AIN0)
10k
2
PC6(RESET)
T2
10k
12
AVCC
D4
K3
+3V3
LD1117DT33 IC1
S1A
R1 C4
C1
10u 16V
100n
220R
+3V3
1
VCC VCC
10k
K4
2
18
10k
29
6
220R
10k
T1 4
LED2
C2
C3
10u 16V
100n
150402 - 11
Figure 2. Le circuit de notre carte de commande Wi-Fi : un microcontrôleur ATmega328P, trois MOSFET de puissance et quelques autres composants. C’est le module relié à K5, absent du schéma, qui fait le plus gros du boulot.
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
novembre 2016
33
découvrir
créer
Figure 3. Le formulaire de configuration du point d’accès de l’ESP-01 vous permet de configurer le module pour votre réseau.
Figure 4. L’écran principal de l’appli Android. N’oubliez pas de tapoter le bouton Send pour transmettre vos commandes à la carte de commande Wi-Fi par l’intermédiaire du serveur web.
34
novembre 2016
partager extrait les paramètres et les applique. Il retourne ensuite la nouvelle valeur de la sortie. Les sorties R, V et B produisent des signaux MLI dont le rapport cyclique pourra varier entre 0 et 100 %. Les sorties numériques seront, quant à elles, actives ou non. Lorsque la carte est mise sous tension ou réinitialisée, le croquis exécute sa fonction setup. Cette fonction doit tout d’abord s’occuper des données (les ignorer) provenant du module ESP-01 à travers le port série au débit étrange de 76800 bauds avant que le module ne le change pour 115200 bauds. À partir de là, le module Wi-Fi est prêt à être utilisé. Le débit plutôt élevé des données n’est pas vraiment pratique, la tolérance aux erreurs est très mince. Nous avons constaté que chaque module ESP interprète le débit de 115200 bauds à sa façon et nous avons dû créer un algorithme pour nous y adapter automatiquement. L’algorithme démarre la communication un peu au-dessous de 115200 bauds, envoie une commande AT au module et essaye de comprendre la réponse ; si celle-ci n’est pas claire, le µC augmente légèrement la vitesse et tente à nouveau d’établir la communication. Cette boucle est répétée jusqu’à ce que la communication soit établie. Le croquis est aussi à l’écoute des connexions à destination de l’adresse IP spéciale 192.168.4.1. Il s’agit de l’adresse du point d’accès (AP) du module, nécessaire pour configurer l’intégration du module dans votre réseau. Si une requête de connexion arrive à cette adresse, depuis un ordiphone par ex., le croquis retourne un formulaire de configuration où l’utilisateur pourra saisir le SSID et le mot de passe du réseau à utiliser avec la carte de commande Wi-Fi. Une fois ces informations sauvegardées, le module ESP tente automatiquement de se connecter au réseau configuré. Pour exclure le module du réseau, il suffit de vous reconnecter à l’adresse spéciale et de changer les paramètres. Le code source du croquis et celui de l’appli sont disponibles dans l’archive 150402-11.zip (voir [2]) ; bien entendu, adaptez-les à vos besoins.
courant requis par la charge. Mettez-la sous tension. Si vous ne voyez pas de fumée, c’est bon signe ; continuez. Depuis un appareil Android (2.3 ou sup.) doté d’une connexion à l’internet et de connectivité Wi-Fi, rendez-vous sur le Google Play Store et installez l’appli Wi-Fi control (Elektor Team). Connectez l’appareil Android au point d’accès nommé « ESP8266 [...] ». Si vous n’êtes pas sûr(e) de vous, il s’agit du réseau Wi-Fi avec un signal très fort lorsque vous êtes à proximité du module et qui disparaît lorsque vous mettez ce dernier hors tension. Vous n’aurez pas besoin d’un mot de passe pour la connexion. Sur l’appareil Android, démarrez un navigateur web et dirigez-le vers l’adresse 192.168.4.1. Si tout se passe bien, vous devriez voir un formulaire de saisie de paramètres Wi-Fi (fig. 3) apparaître après quelques secondes. Saisissez-y les paramètres du réseau auquel vous souhaitez vous connecter puis sauvegardez-les. La page affichera ensuite l’adresse IP donnée au module par le réseau. Notez-le. Connectez maintenant l’appareil Android au réseau que le module ESP a rejoint. Lancez l’appli et saisissez l’adresse IP que vous avez notée. Vous devriez pouvoir commander vos charges. N’oubliez pas de cliquer sur le bouton Send à chaque fois que vous changez un paramètre (fig. 4). Si vous avez oublié l’adresse IP de votre carte de commande Wi-Fi, vous pourrez très probablement vous connecter à votre routeur Wi-Fi et lui faire afficher la liste des appareils connectés. Vous pouvez également vous reconnecter à l’adresse du point d’accès du module. L’adresse IP actuelle et le SSID sont affichés en haut du formulaire de configuration.
Utilisation Installez la carte de commande Wi-Fi, reliez-la à sa charge et à une alimentation (5 à 12 V CC) capable de fournir le
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
projet labs
projet de lecteur
Liste des composants Résistances (0805) R3,R4,R5,R6,R7,R8,R9,R10 = 10 kΩ R1,R2 = 220 Ω
Condensateurs (0805) C1,C3 = 100 nF C2,C4 = 10 µF 16 V, boîtier A
Semiconducteurs IC1 = LD1117DT33 IC2 = ATmega328P-AU, programmé, réf. 150402-41 (www.elektor.fr)
Pas d’Android ? Et si je n’ai pas d’appareil Android ? Ou si l’appli ne fonctionne pas sur mon téléphone ou ma tablette ? Pas de soucis. Elektor a pensé à tout ! Nous avons préparé une page web [2] pour votre navi-
T1,T2,T3 = NDT3055L D1,D2,D3,D4 = S1A
Divers LED1 = LED jaune LED2 = LED verte K1,K2 = borniers à vis à 2 voies, au pas de 5,08 mm K3 = embase jack 2,5 mm K4 = barrette sécable femelle à 9 voies, au pas de 2,54 mm K5 = barrette sécable femelle double rangée,
gateur web (il devra prendre en charge HTML 4.01 ou sup.). Affichez la page, saisissez l’adresse IP du module (pas celle de son point d’accès) et commandez vos charges. Cela fonctionne même sur
à 8 voies (2×4), au pas de 2,54 mm K6 = barrette sécable mâle double rangée, à 6 voies (2×3), au pas de 2,54 mm
Autres module Wi-Fi ESP8266, réf. 150445-91 (SKU-17326) (www.elektor.fr) circuit imprimé , réf. 150402-1 (www.elektor.fr) micrologiciel ATmega & réglage des fusibles en [2] appli dans Google Play : Wi-Fi control, Elektor Team [3]
les appareils (un peu) fermés tels que les iPhones et iPads (pour peu que vous puissiez y copier nos fichiers HTML).
Conclusion La carte de commande Wi-Fi décrite ici permet de commander jusqu’à trois charges en MLI. Bien qu’elle soit principalement destinée aux rubans à LED RVB, vous pouvez l’utiliser pour d’autres charges (relais, moteurs…). De plus, huit sorties tout ou rien sont disponibles pour commander de petites charges telles que des optocoupleurs. La carte est commandée à distance, via une connexion Wi-Fi, depuis un appareil Android avec notre appli ou n’importe quel appareil (iPhone ou PC par ex.) capable d’afficher notre page web. Amusez-vous bien ! (150402 – version française : Kévin Petit)
Liens [1] www.elektormagazine.fr/120718 [2] www.elektormagazine.fr/150402 [3] https://play.google.com/store/apps/ details?id=com.elektor.Wi-Ficontrol
www.elektormagazine.fr
Personal Download for François Cariou | copyright Elektor
novembre 2016
35