Upload
lenhan
View
215
Download
0
Embed Size (px)
Citation preview
MICROCONTRÔLEUR
20 Elektor 11/2002
Il n’en reste pas moins que l’on fait souventla différence entre les automates program-mables (aussi connus sous l’acronyme PLCpour Programmable Logic Controller et en
RFA sous celui de SPS pour Spei-cherProgrammierbar Steuerung =automate à mémoire programmable)industriels et ceux qui ne le sont
pas. La première caractéristique dece type de matériel destiné à l’in-dustrie est qu’il travaille, en règlegénérale, à une tension de 24 V. Àcela s’ajoute que ces installationssont extrêmement robustes et pro-tégées contre une inversion malen-contreuse de polarité de la tensiond’alimentation, les crêtes de tensionet les courts-circuits.Il existe une autre différence, auniveau du logiciel cette fois : un APIest piloté par un programme moni-teur chargé de la coordination desprocessus internes. On a, entreautres, traitement d’interruptions,suivi des temporisateurs logiciels etpilotage des protocoles des diffé-rentes interfaces (souvent RS-232 oubus CAN).L’exécution du programme d’appli-cations (le programme utilisateur) sefait de façon cyclique à intervallesréguliers. Il est possible, de ce fait,de projeter le comportement de l’au-tomate dans le temps et ainsi de leprévoir. L’une des conditions primor-diales est alors de ne pas faire appelà des attentes actives -la seule pos-sibilité de l’utilisateur est de s’assu-rer, au cours de chaque cycle du pro-gramme, si un événement donné a
Pico-APIMicrocontrôleur ou automate programmable ?
Prof. Dr.-Ing. Hermann Gebhard, DF2DS
Depuis toujours ces 2 modes de pilotage ont été très proches l’un de l’autre.Avec la variante proposée dans cet article les différences deviennent encore plusfloues. Pico-API (API pour Automate Programmable Industriel) ne requiertque des composants standard, les outils de développement de programmenécessaires sont disponibles gratuitement au téléchargement depuis Internetpour une utilisation non-commerciale.
MICROCONTRÔLEUR
2111/2002 Elektor
12
34
56
78
910
K1
C1
100n
R18
10k
+5
V
+5
VD
17
1N
41
48
+5
V
D1
R9680Ω
R11k8
D2
R10
680Ω
R21k8
D3
R11
680Ω
R31k8
D4
R12
680Ω
R41k8
D5
R13
680Ω
R51k8
D6
R14
680Ω
R61k8
D7
R15
680Ω
R71k8
D8
R16
680Ω
R81k8
R1910k
R2010k
R2110k
R2310k
R2210k
R2410k
R2510k
R261k
IC5.D
109
78IC5.C
1211
56IC5.B
1413
34IC5.A
1615
12IC6.D
109
78IC6.C
1211
56IC6.B
1413
34IC6.A
1615
12
IC7.D
109
78IC7.C
1211
56IC7.B
1413
34IC8.D
109
78 IC7.A
1615
12IC8.C
1211
56IC8.B
1413
34IC8.A
1615
12
PIC
16F84
OS
C2
IC1
OS
C1
MC
LR
RA
4
RA
1
RA
0
RA
2
RA
3
RB
0
RB
1
RB
2
RB
3
RB
4
RB
5
RB
6
RB
7
18 17
13 12 11 10
1615
14
13
9876
2 4
5
+1
2V
+1
2V
7x 10k1
23
45
67
8
R27
74
LS
15
1
IC2
MU
X1110
12 13 14 15
EN
16
7
321
6 5 9
4
3 2 1 0
2 0
7 6 5 4
G07
8
RE
1D
25
1N
41
48
D20
R31
4k7
+1
2V
RE
2D
26
1N
41
48
D21
R32
4k7
+1
2V
RE
3D
27
1N
41
48
D22
R33
4k7
+1
2V
D9
D10
D11
D12
D13
D14
D15
D16
RE
4D
28
1N
41
48
D23
R34
4k7
+1
2V
RE
5D
29
1N
41
48
D24
R35
4k7
+1
2V
T1
TIP
125
R283k3
R29
330Ω
+1
2V
D19
1N
54
07
R30
30
V
B1
C6
47µ3
5V
C5
47µ1
6V
C3
100n
C4
100n
78L05A
CIC
4
+5
V
010059 - 11
U-S
EN
SO
R
*
zie tekst*
see text*
voir texte
*sieh
e Text*
+5
V
K3
K10
K2
K4
K5
K6
K7
K8
K9
K11
K12
K13
K14
+12V
C7
100n
UL
N2003
IC3
GN
D
DS
10 1112 1314 1516I4 I3I7 I2I6 I1I5
O4
O3
O7
O2
O6
O1
O5
9
1 23 67 45
8
R17
4x 4k71
23
45
R36
4x 4k71
23
45
+5
V
D1...D
8 = 1N
4148
R37
10kC2
22p
K15
K16
IC7 = LT
V847
IC8 = LT
V847
IC5 = LT
V847
IC6 = LT
V847
D20 ... D
24 = LE
D 2m
A
Figure 1. Un microcontrôleur à entrées et sorties isolées.
bien eu lieu.La programmation d’un API peut faire appelà diverses méthodes telles que les plans decâblage (technique d’interconnexion de sché-mas) ou listes d’instructions (qui ressemblebeaucoup à un fichier-source en assembleur).Le programme utilisateur est transféré dansla mémoire Flash de l’API, son exécutiondémarrant automatiquement dès la mise soustension de l’automate.
Microcontrôleur plutôt qu’API ?Il est difficile de donner une réponse univer-selle à cette question. Si les systèmes àmicrocontrôleur sont sensiblement plusflexibles ils requièrent également en règlegénérale une certaine expérience de la pro-grammation et plus de discipline si on veutles utiliser en tant qu’automate program-mable. Ils offrent alors indubitablement plusde possibilités vu que l’on dispose alors detoutes les instructions en assembleur. On aen outre, presque toujours, à sa dispositionun compilateur pour langage de haut niveau,pour C ou BASIC, voire dans certains caspour Pascal ou un autre langage de program-mation exotique.Nous ne pensons pas qu’il faille apprendre àun concepteur-développeur que de par l’uti-lisation d’un compilateurpour langage de hautniveau il devient quasi-ment impossible de fairedonner au microcontrô-leur le maximum de cha-cun de ses cycles d’hor-loge. Il n’en reste pasmoins que l’on devra pré-férer la programmationen langage de hautniveau vu que larecherche d’erreur et lesmodifications de pro-gramme ultérieures et lesadaptations en devien-nent bien plus simplesqu’en assembleur.
Le Pico-APIPico-API est un systèmepouvant s’adresser auxdeux domaines d’applica-tion évoqués. Le coeur de
cette réalisation est un microcontrô-leur de l’écurie Microchip [1], unclassique PIC16F84. Ce contrôleurpossède 13 ports numériques, dis-pose de 64 octets d’EEPROM etd’une mémoire de programme enFlash de 1 024 mots de 14 bits. Cettequantité peut sembler dérisoire àpremière vue lorsque l’on connaît lesquantités de mémoire dont dispo-sent les PC actuels, mais elle suffitpour de nombreuses applications vula structure spécifique et extrême-
ment efficace des instructions de ceprocesseur.Si le contrôleur n’a pas à remplir detâches à la chronologie « pointue »on pourra même se passer de quartzet générer le signal d’horloge à l’aidede l’oscillateur RC interne du pro-cesseur (épaulé par la paire RCR37/C2).Un coup d’oeil au schéma de lafigure 1 permet de constater que lesous-ensemble centré sur le proces-seur ne cache pas de secret. Les
MICROCONTRÔLEUR
22 Elektor 11/2002
(C) ELEKTOR010059-1
B1
C1
C2
C3
C4C5
C6C7
D1
D2
D3
D4
D5
D6
D7
D8
D9 D10 D11 D12 D13 D14 D15 D16
D17
D19
D20D21D22D23D24
D25
D26
D27
D28
D29
H1
H2
H3
H4
H5H6
H7 H8
IC1
IC2
IC3
IC4
IC5 IC6
IC7
IC8
K1
K2 K3 K4 K5 K6 K7 K8 K9
K10K11K12K13K14
K15
K16
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
R15
R16
R17
R18
R19
R20
R21
R22
R23
R24
R25
R26
R27
R28R29
R30
R31
R32
R33
R34
R35
R36
R37
RE1
RE2
RE3
RE4
RE5
T1
010059-1
+12V
0
~
~
+12V
Liste des composants
Résistances :R1 à R8 = 1kΩ8R9 à R16 = 680 ΩR17,R36 = réseau SIL de
4 résistances de 4kΩ7R18 à R25 = 10 kΩR26 = 1 kΩR27 = réseau SIL de 7 résistances de
10 kΩ SIL (voire à 8 résistances)R28 = 3kΩ3R29 = 330 ΩR30 = Varistor 30 V/600 mW
diamètre 15 à 17 mm tel que, parexemple, BC-Components 23225953006
R31 à R35 = 4kΩ7R37 = 10 kΩ (4kΩ7)*
Condensateurs :C1,C3,C4,C7 = 100 nF céramiqueC2 = 22 pC5 = 47 µF/16 V axialC6 = 47 µF/35 V axial
Semi-conducteurs :B1 = B80C1500 modèle rond
Figure 2. La partie réservéeaux relais pourra êtredétachée de l’APIproprement dit.
ou LTV847), ce qui les fragilise face à unemanipulation erronée.La ligne U-SENSOR (au bas du schéma), unesortie pilotée par le microcontrôleur, mériteque l’on s’y intéresse de plus près. Cette sor-tie permet de ne fournir de courant aux cap-teurs que si cela est nécessaire. Cette mesured’économie d’énergie est sensible en parti-culier dans le cas d’applications alimentéespar pile.De même, les circuits de commande (driver)de sortie sont isolés de l’API proprement ditpar le biais d’opto-coupleurs. La tension desortie désirée pourra être appliquée sansautre forme de procès ou arrière-pensée.Cette tension est en règle générale de 12 oude 24 V. De par la présence de IC3, unULN2003, la tension de sortie peut atteindrejusqu’à 50 V, sachant cependant que l’inten-sité de courant totale au travers des sortiesne doit pas dépasser 500 mA.Le fait qu’il faille pouvoir commuter descharges plus importantes et travailler avec latension du secteur explique la présence, enaval du circuit de commande, de relais encar-tables capables de commuter jusqu’à 16 Asous 250 V en alternatif. Ceci devrait suffirepour la quasi-totalité des applications,sachant que rien ne vous oblige à implanterles relais si vous vous satisfaites de la puis-
sance du ULN2003.
Le logicielTout matériel piloté parprocesseur ne sauraitfaire mieux que ce que luipermet de faire son pro-gramme, programmedont la qualité dépendindubitablement descapacités des outils dedéveloppement mis enoeuvre. L’une des princi-pales raisons du choix duPIC16F84 est l’existencede très bons outils dedéveloppement au prix leplus abordable possible(gratuit de préférence).Le fabricant propose,comme la plupart de cesconcurrents, un set delogiciels pour le dévelop-pement de programmes.Le MPLAB [4] de Micro-chip puisque c’est de luiqu’il s’agit, comprend unassembleur, un éditeurde lien (linker) et unsimulateur qui permet devérifier sur un PC la cor-
entrées attaquent, par le biais dumultiplexeur IC2, l’une après l’autrele port RA3 programmé en entrée. Lasélection des entrées se fait par l’in-termédiaire des ports RA0 à RA3. Lasortie inverseuse du multiplexeurcompense l’inversion introduite parl’opto-coupleur.Les entrées proprement dites sontensuite, en concordance avec lesnormes de conception d’API, miseshors-potentiel par le biais d’opto-coupleurs. Les diviseurs de tension
évitent la circulation d’un couranttrop élevé au travers des opto-cou-pleurs en cas d’application d’unetension d’entrée élevée (entre 10 et30 V dans le cas présent). La diodeprise en tête-bêche par rapport à ladiode intégrée dans l’opto-coupleurremplit une fonction importante. Elleprotège la LED de l’opto-coupleur encas d’inversion de la polarité de l’en-trée, sachant que les LED IR ont unetension inverse maximale faible (6 Vau maximum dans le cas du PC847
MICROCONTRÔLEUR
2311/2002 Elektor
(C) ELEKTOR010059-1
D1 à D8,D17,D25 à D29 = 1N4148D9 à D16,D20 à D24 = LED faible
courantD19 = 1N5407IC1 = PIC16F84A-04/PIC2 = 74LS151IC3 = ULN2003IC4 = 78L05ACIC5 à C8 = LTV847 (Liteon), ILQ621
(Infinion) ou PC847 (Sharp)
Divers :K1 = embase mâle à 2 rangées de
5 contacts (HE-10)
K2 à K9 = bornier à vis encartable à3 contacts au pas de 5 mm (RM5)
K10 à K14 = bornier à vis encartable à3 contacts au pas de 7,5 mm (RM7,5)
K15 = embase autosécable mâle SIL à1 rangée de 9 contacts
K16 = embase autosécable mâle SIL à1 rangée de 6 contacts
RE1 à RE5 = relais 16 A/250 V~(Finder 40.61 bobine 12 V CC220 Ω, Omron G2R-1-E 12 V CC ouSchrack RP310012)
rection logique du programme. Ce set de pro-grammes permet de réaliser nombre de pro-jets, nous n’en voulons pour preuve que lenombre impressionnant d’applications pro-posées sur le site de Microchip.Si vous voulez programmer le PIC en langagede haut niveau il vous faudra disposer d’uncompilateur adéquat. Il existe heureusement2 bons compilateurs C pour les PIC, à savoirC2C de Pavel Baranov [5] et CC5X de Knud-sen Data [6]. Ces 2 compilateurs se différen-cient à peine au niveau des instructions spé-cifiques au contrôleur mais sont à part celade même intérêt. À partir du code-source en C,on produit un fichier-source en assembleurqui est ensuite assemblé automatiquementavant d’être converti en un fichier binaire (auformat Intel-Hex). Il ne reste plus qu’un pro-blème à résoudre :
Comment transférer le programme dans le PIC ?La popularité des microcontrôleurs PIC tientpour une bonne part à son excellente « pro-grammabilité ». Le processus de programma-tion des PIC étant sériel, l’interface requise àcet effet est relativement simple, sachantqu’il était même possible, en principe, de secontenter d’un simple câble. Même si vous
êtes habitué à plus de luxe, la com-plexité du matériel nécessaire restetrès acceptable.Dans son numéro double de 1998 [7],Elektor a décrit un système de déve-loppement à faible coût. La petitecarte de développement décritedans cet article met à dispositionune alimentation stable, un oscilla-teur d’horloge commutable à fré-quence variable ainsi qu’un champd’expérimentation à pastilles surlequel pourront prendre place, parexemple, des LED servant à la visua-lisation de l’état des lignes de port.Le repère [3] de la bibliographiedonne les références d’une autreminuscule platine de programmationavec toute la documentation requise.On trouvera sur le site Internet lesprogrammes (DOS) correspondants.
Réalisation et mise enoeuvreGrâce à la platine dont on retrouve ledessin des pistes et la sérigraphie del’implantation des composants enfigure 2, la réalisation de Pico-APIdevrait être une affaire rapidement
menée à bien. La platine est du typesimple face sans composant CMS. Sivous n’avez pas besoin des relais,vous pourrez, à la hauteur desconnecteurs K15 et K16, découper laplatine qui leur est réservée etmettre l’API dans un boîtier dedimensions plus compactes. On peutégalement fort bien envisager deplacer la platine des relais dans unboîtier distinct. Il faudra alors réta-blir l’interconnexion des 2 platinespar le biais des embases K15 et K16.Il faudra, en cas de mise en oeuvredes relais, que les sorties respectentles normes fixées pour les appareilsde classe II.On pourra bien entendu monter lescircuits intégrés sur supports àcondition que ces derniers soient debonne qualité. Il faudra, pour éviterque les câbles ne puissent se déta-cher, placer des brides anti-arrache-ment au niveau des borniers desentrées et des sorties.Elektor ne propose pas de pro-gramme spécifique pour la program-mation de Pico-API, mais un petitprogramme de test. Le dit pro-gramme a été créé à l’aide des outilsgratuits CC5X et MPLAB et trans-forme, si le montage fonctionne cor-rectement, Pico-API, au niveau desLED D20 à D24, en une sorte de che-nillard aller-retour. On a ensuite cli-gnotement de D24 et visualisation del’état des entrées. Si D24 est éteinte,les LED D20 à D23 représentent les4 bits de poids faible des entrées, siD24 est allumée, ces LED correspon-dent aux 4 bits de poids fort.On peut imaginer nombre de possi-bilités d’application du Pico-API.L’exemplaire « original » sert à pilo-ter le système de rotation d’un mâtd’antenne de réception radio-ama-teur. On pourrait, dans le mêmeordre d’idées, penser à la commandede volets roulants ou de rideaux devitrine, voire l’automatisation demodèles techniques ou de jouets.
(010059)
MICROCONTRÔLEUR
24 Elektor 11/2002
Bibliographie et liens[1] Microchip www. microchip. com
[2] Fiche de caractéristiques disponible, entre autres souswww.sharpmeg.com/products/opto/pdf/pc847x.pdf
[3] Adaptateur pour programmateur Madsen www.jdm.homepage.dk/newpic.htm
[4] Environnement de développement pour microcontrôleurs de Microchip, MPLAB :www.microchip.com/1010/pline/tools/picmicro/devenv/mplabi/plab5x/9019/index.htm
[5] Baranov, Pavel : C2C-Compilerwww.geocities.com/SiliconValley/Network/3656/c2c/c.html
[6] B Knudsen Data CC5X www.bknd.com/cc5x/index.shtml
[7] Système de développement à faible coût pour PIC, Elektor n° 241, juillet/août 1998,page 64 et suivante