[TUTORIEL] Contrôler un composant externe à partir d'un GPIO

Un lieu pour discuter des composants et de leur utilisation. Un passage obligé si vous devez interfacer votre Raspberry Pi avec le monde extérieur. On y trouvera aussi les cartes type commande de moteur pas à pas, continu, servo...

Modérateurs : Francois, smba38

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

[TUTORIEL] Contrôler un composant externe à partir d'un GPIO

Message par vague nerd » sam. 20 déc. 2014 17:58

Contrôler un composant externe à partir d'un GPIO : adapter la tension de contrôle

De nombreux composants et autres circuit externes peuvent être contrôlés par le PI, comme un servomoteur, une carte contrôleur de moteurs, ou même une simple led.
Ces cartes ou composants présentent des "ports de contrôles" pour les commander.

Deux questions se posent alors :
1. Comment alimenter le composant ?
2. Comment le commander ?

Premier réflexe : on lit le datasheet du composant !

1. Alimentation
Le datasheet fournit tension et intensité d’alimentation. Si le besoin dépasse les possibilités du PI, il faut avoir recourt à une alimentation adaptée, séparée.

2. Contrôle
Le contrôle du composant est lui aussi spécifié dans le datasheet. Il pourra (entre autre, mais c'est le plus courant) s'agir de :
-envoyer frais ou faux sous forme d'une tension présente (vrais) ou non (faux), pour par exemple allumer ou éteindre le composant.
-envoyer une "pulsation" sur le port, selon une certaine fréquence, pour contrôler la position d'un servomoteur par exemple.

Dans les deux cas, il faudra s'assurer (toujours avec le datasheet) que le pi peut :
-fournir la tension nécessaire
-fournir l’intensité nécessaire

Si la tension de commande est supérieure à la tension que peut fournir le pi (3.3V sur un GPIO), comment adapter la tension ? Quelques composants passifs et une alimentation externe à la bonne tension va nous le permettre.
Les deux images ci-dessous montrent un même circuit. Les cercles verts représentent des voltmetres. A gauche est mesurée la tension fournie par le GPIO, à droite la tension obtenue.
L'exemple permet de produire une tension de contrôle de 9V à partir d'un GPIO.

Image
Ici, le GPIO envoie "faux" sous la forme de 0V (quelques micro-volts mesurées), et la tension de contrôle restituée reste de 0V (quelques millivolts mesurés).

Image
Ici, le GPIO envoie "vrais" sous la forme de 3.3V (3.3V mesurés), et la tension de contrôle restituée est de 9V (9V mesurés).

Le choix des transistors se fait en lisant leurs datasheet respectif. Les 2N2222 font l'affaire jusque 30V.
Ces transistors "s'ouvent" et se "ferment" à priori assez vite (il faudra le vérifier par la pratique) pour permettre la pulsation type PWM.

PS : un grand merci evotk pour son aide (c'est un euphémisme !) à la mise au point !
Cordialement,

Vague Nerd

Avatar du membre
EVOTk
Modérateur
Messages : 802
Enregistré le : sam. 20 sept. 2014 02:36

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par EVOTk » mar. 23 déc. 2014 18:01

Hello,

Voici comment contrôler un relais 12V via un GPIO :

Image

Nomenclature :
Transistor NPN : 2N2222
Résistances : 1x 4,7kohms / 1x 10kohms
Diode : 1N4148
NAS : DS3615xs Xpenology - 8To + 2x 3To + 2x 4To WD Red - APC Back-UPS Pro 900
Imprimante 3D : Dagoma DiscoEasy 200
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Arcade : Raspberry Pi 3 sous RecalBox

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par vague nerd » mar. 23 déc. 2014 22:40

Salu evo.

Pourquoi il a fallu mettre une porte Non dans le premier montage alors ?
Je regarderai ça à tête reposée... barre dans le crane !

Cdt.

EDIT : Ben oui, je suis c**, le relais a des ports "normalement ouvert" et "normalement fermé"... Bonne soirée!
Cordialement,

Vague Nerd

Avatar du membre
EVOTk
Modérateur
Messages : 802
Enregistré le : sam. 20 sept. 2014 02:36

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par EVOTk » mar. 23 déc. 2014 23:09

Sur le 1er exemple tu récupère un niveau logique ( inversé ) au niveau du transistor

Sur mon exemple on active un relais via le transistor
NAS : DS3615xs Xpenology - 8To + 2x 3To + 2x 4To WD Red - APC Back-UPS Pro 900
Imprimante 3D : Dagoma DiscoEasy 200
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Arcade : Raspberry Pi 3 sous RecalBox

phlag
Messages : 1
Enregistré le : dim. 18 janv. 2015 10:55

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par phlag » dim. 18 janv. 2015 11:03

Bonjour,

J'utilise le composant ULN2803APG http://phlag.info/download/uln2003apg.pdf pour commander des relais
Image

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par vague nerd » dim. 18 janv. 2015 14:17

@phlag : merci pour votre contribution

@tous : phlag nous montre l'utilisation d'un module relais associé à l'ULN2803APG , quand evo nous montre une solution pour contrôler un relais seul à l'aide de composants 'simples'.
Mon premier post montre comment contrôler par exemple un module relais (reste à alimenter le module relais).
Cordialement,

Vague Nerd

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par vague nerd » mer. 11 févr. 2015 08:19

Bonjour.
Je commute un module relais à l'aide du schéma du premier post (repris ci dessous, avec pin gpio à vrais - 3,3V) :
Image
L’alimentation n'est pas du 9V mais du 5V, fournis par une alimentation externe.

Justement, cette alimentation est elle nécessaire ? Le pin 5V du pi ne ferait-il pas l'affaire ? La consommation du petit montage est très faible, non ?
Cdt.
Cordialement,

Vague Nerd

Avatar du membre
EVOTk
Modérateur
Messages : 802
Enregistré le : sam. 20 sept. 2014 02:36

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par EVOTk » mer. 11 févr. 2015 17:07

Sur mon a+ j'utilise un gpio pour contrôler un relais 5v directement avec le 5v du pi sans probleme
NAS : DS3615xs Xpenology - 8To + 2x 3To + 2x 4To WD Red - APC Back-UPS Pro 900
Imprimante 3D : Dagoma DiscoEasy 200
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Arcade : Raspberry Pi 3 sous RecalBox

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [TUTORIEL] Contrôler un composant externe à partir d'un

Message par vague nerd » mer. 11 févr. 2015 20:28

Mouais, j'aurai pu y penser plus tôt ! Tu me l'as peut-être dit ailleurs, en plus...
Et le plus drôle, c'est que même le pi est inutile pour l'utilisation actuelle (bon, ça va changer): un module PIR détecte le mouvement, pour activer un module relais relais ! :lol: Et on ne se moque pas !

Cdt.
Cordialement,

Vague Nerd

Ghislain
Raspinaute
Messages : 315
Enregistré le : jeu. 12 nov. 2015 17:39
Localisation : Bourges (18)

Re: [TUTORIEL] Contrôler un composant externe à partir d'un GPIO

Message par Ghislain » mar. 24 janv. 2017 21:49

Une petite confirmation mais on est bien d'accord que l'on relie la masse du Pi avec la masse du 5V sur ces schéma ?

Répondre

Retourner vers « L'électronique et le Raspberry Pi »