[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 de l’utilisateur
vague nerd
Modérateur
Messages : 1391
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

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

Messagepar vague nerd » sam. 20 déc. 2014 18: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 de l’utilisateur
EVOTk
Modérateur
Messages : 735
Enregistré le : sam. 20 sept. 2014 02:36

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

Messagepar EVOTk » mar. 23 déc. 2014 19: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 : DS213 - 2x 3To WD Red - APC Back-UPS Pro 900
Boitier Multimédia : Rasp. B / OpenElec
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Chauffage : Raspberry A+ Wifi, Interface web

Projet en cours : Testeur d'Accu Li-ion et NiHM

Avatar de l’utilisateur
vague nerd
Modérateur
Messages : 1391
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

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

Messagepar vague nerd » mar. 23 déc. 2014 23: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 de l’utilisateur
EVOTk
Modérateur
Messages : 735
Enregistré le : sam. 20 sept. 2014 02:36

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

Messagepar EVOTk » mer. 24 déc. 2014 00: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 : DS213 - 2x 3To WD Red - APC Back-UPS Pro 900
Boitier Multimédia : Rasp. B / OpenElec
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Chauffage : Raspberry A+ Wifi, Interface web

Projet en cours : Testeur d'Accu Li-ion et NiHM

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

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

Messagepar phlag » dim. 18 janv. 2015 12:03

Bonjour,

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

Avatar de l’utilisateur
vague nerd
Modérateur
Messages : 1391
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

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

Messagepar vague nerd » dim. 18 janv. 2015 15: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 de l’utilisateur
vague nerd
Modérateur
Messages : 1391
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

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

Messagepar vague nerd » mer. 11 févr. 2015 09: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 de l’utilisateur
EVOTk
Modérateur
Messages : 735
Enregistré le : sam. 20 sept. 2014 02:36

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

Messagepar EVOTk » mer. 11 févr. 2015 18:07

Sur mon a+ j'utilise un gpio pour contrôler un relais 5v directement avec le 5v du pi sans probleme
NAS : DS213 - 2x 3To WD Red - APC Back-UPS Pro 900
Boitier Multimédia : Rasp. B / OpenElec
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Chauffage : Raspberry A+ Wifi, Interface web

Projet en cours : Testeur d'Accu Li-ion et NiHM

Avatar de l’utilisateur
vague nerd
Modérateur
Messages : 1391
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

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

Messagepar vague nerd » mer. 11 févr. 2015 21: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 : 313
Enregistré le : jeu. 12 nov. 2015 18:39
Localisation : Bourges (18)

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

Messagepar Ghislain » mar. 24 janv. 2017 22: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 ?


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

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité