micro pico-api - scan78.free.frscan78.free.fr/elektor/elektor 2002 fr/f02b020.pdf · pico-api (api...

5
MICRO CONTRÔLEUR 20 Elektor 11/2002 Il n’en reste pas moins que l’on fait souvent la différence entre les automates program- mables (aussi connus sous l’acronyme PLC pour 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 de ce type de matériel destiné à l’in- dustrie est qu’il travaille, en règle générale, à une tension de 24 V. À cela s’ajoute que ces installations sont extrêmement robustes et pro- tégées contre une inversion malen- contreuse de polarité de la tension d’alimentation, les crêtes de tension et les courts-circuits. Il existe une autre différence, au niveau du logiciel cette fois : un API est piloté par un programme moni- teur chargé de la coordination des processus internes. On a, entre autres, traitement d’interruptions, suivi des temporisateurs logiciels et pilotage des protocoles des diffé- rentes interfaces (souvent RS-232 ou bus CAN). L’exécution du programme d’appli- cations (le programme utilisateur) se fait de façon cyclique à intervalles réguliers. Il est possible, de ce fait, de projeter le comportement de l’au- tomate dans le temps et ainsi de le pré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-API Microcontrô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 plus floues. Pico-API (API pour Automate Programmable Industriel) ne requiert que des composants standard, les outils de développement de programme nécessaires sont disponibles gratuitement au téléchargement depuis Internet pour une utilisation non-commerciale.

Upload: lenhan

Post on 15-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MICRO Pico-API - scan78.free.frscan78.free.fr/Elektor/Elektor 2002 FR/f02b020.pdf · Pico-API (API pour Automate Programmable Industriel) ne requiert que des composants standard,

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.

Page 2: MICRO Pico-API - scan78.free.frscan78.free.fr/Elektor/Elektor 2002 FR/f02b020.pdf · Pico-API (API pour Automate Programmable Industriel) ne requiert que des composants standard,

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.

Page 3: MICRO Pico-API - scan78.free.frscan78.free.fr/Elektor/Elektor 2002 FR/f02b020.pdf · Pico-API (API pour Automate Programmable Industriel) ne requiert que des composants standard,

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.

Page 4: MICRO Pico-API - scan78.free.frscan78.free.fr/Elektor/Elektor 2002 FR/f02b020.pdf · Pico-API (API pour Automate Programmable Industriel) ne requiert que des composants standard,

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)

Page 5: MICRO Pico-API - scan78.free.frscan78.free.fr/Elektor/Elektor 2002 FR/f02b020.pdf · Pico-API (API pour Automate Programmable Industriel) ne requiert que des composants standard,

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