Différences entre versions de « Mini Kit Moteur Hobbyiste »
(13 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== Introduction == | == Introduction == | ||
Dans le précédent article [[Moteur Hobbyiste]], nous avons abordé la problématique de commander un moteur à l'aide d'un transistor NPN P2N2222AG. | Dans le précédent article [[Moteur Hobbyiste]], nous avons abordé la problématique de commander un moteur à l'aide d'un transistor NPN P2N2222AG. | ||
− | Cet article va se concentrer sur l'usage des transistor | + | Cet article va se concentrer sur l'usage des transistor MOSFET nettement plus performant mais aussi mieux adapté à la commande en puissance. |
− | === Avantages du | + | === Avantages du MOSFET === |
− | Un transistor NPN est avant tout un amplificateur en courant (en fonction du courant de base). Les transistors | + | Un transistor NPN est avant tout un amplificateur en courant (en fonction du courant de base). Les transistors MOSFET sont des amplificateurs en tension. |
− | Du coup, ils sont aussi plus faciles à utiliser. Il suffit d'appliquer une différence de potentiel sur la Gate et HOP... le | + | Du coup, ils sont aussi plus faciles à utiliser. Il suffit d'appliquer une différence de potentiel sur la Gate et HOP... le MOSFET commute :-) |
Rien avoir avec le transistor NPN ou il faut calculer le courant de base avec soin pour saturer le transistor (pour qu'il commute). | Rien avoir avec le transistor NPN ou il faut calculer le courant de base avec soin pour saturer le transistor (pour qu'il commute). | ||
− | Un autre avantage du | + | Un autre avantage du MOSFET, c'est qu'il a moins de perte... et qui dit moins de perte dit aussi moins de dissipation en chaleur et aussi moins de chute de tension :-). |
Quel candidat! | Quel candidat! | ||
− | === Désavantage du | + | === Désavantage du MOSFET === |
Son seul désavantage est d'être beaucoup plus cher d'un simple transistor NPN. | Son seul désavantage est d'être beaucoup plus cher d'un simple transistor NPN. | ||
=== Inconvénient du montage NPN === | === Inconvénient du montage NPN === | ||
− | <font color="red">...et pourquoi il faut utiliser un | + | <font color="red">...et pourquoi il faut utiliser un MOSFET!</font> |
Si ce type de montage à base de transistor est fonctionnel, il présente un énorme désavantage... la perte de tension au borne du transistor (VCE). | Si ce type de montage à base de transistor est fonctionnel, il présente un énorme désavantage... la perte de tension au borne du transistor (VCE). | ||
− | Cette perte de tension est généralement assez importante (1.2 Volts en moyenne), ce qui est très élevé face à la tension d'alimentation d'un montage de type Arduino (souvent 5 Volts). Plus cette chute de tension est important et moins il en reste pour le matériel raccordé sur le transistor (relais ou moteur). | + | Cette perte de tension est généralement assez importante (1.2 Volts en moyenne), ce qui est très élevé face à la tension d'alimentation d'un montage de type Arduino (souvent 5 Volts). Plus cette chute de tension du transistor est important et moins il en reste pour le matériel (moteur) raccordé sur le transistor (relais ou moteur). |
Cette chute de tension (VCE) à également tendance à augmenter avec le courant qui passe au travers du transistor. Dans le cadre d'un montage moteur c'est une véritable catastrophe. | Cette chute de tension (VCE) à également tendance à augmenter avec le courant qui passe au travers du transistor. Dans le cadre d'un montage moteur c'est une véritable catastrophe. | ||
− | En effet, lorsque l'on commute un transistor NPN pour alimenter le moteur, deux cas de figures se présentent: | + | En effet, lorsque l'on commute un transistor NPN pour alimenter le moteur, deux cas de figures se présentent régulièrement: |
# '''Sous l'impulsion, le moteur décolle''' (démarre) et se met à tourner. Le courant d'appel (assez grand au démarrage) diminue rapidement... et donc la chute de tension au transistor aussi (puisque le courant diminue dans le transistor). La tension disponible aux bornes du moteur augmente jusqu'à un maximum... et le moteur atteint aussi un régime maximale. Cool... tout ce passe bien. | # '''Sous l'impulsion, le moteur décolle''' (démarre) et se met à tourner. Le courant d'appel (assez grand au démarrage) diminue rapidement... et donc la chute de tension au transistor aussi (puisque le courant diminue dans le transistor). La tension disponible aux bornes du moteur augmente jusqu'à un maximum... et le moteur atteint aussi un régime maximale. Cool... tout ce passe bien. | ||
# '''Malgré l'impulsion, le moteur ne décolle pas''' (cela arrive 1 à 2 fois sur 10). Le courant reste donc à son maximum (celui du démarrage). Comme ce courant passe aussi à travers le transistor, et que ce courant est assez important, chute de tension au borne du transistor NPN augmente rapidement. Résultat: la tension disponible aux bornes du moteur diminue... et le moteur n'a aucune chance de démarrer. HAARFF! | # '''Malgré l'impulsion, le moteur ne décolle pas''' (cela arrive 1 à 2 fois sur 10). Le courant reste donc à son maximum (celui du démarrage). Comme ce courant passe aussi à travers le transistor, et que ce courant est assez important, chute de tension au borne du transistor NPN augmente rapidement. Résultat: la tension disponible aux bornes du moteur diminue... et le moteur n'a aucune chance de démarrer. HAARFF! | ||
+ | |||
+ | Avec de telles conséquences, il est difficile d'imaginer raccorder une charge sur notre moteur Hobbyiste :-( | ||
+ | Décidément, le transistor standard n'est pas notre meilleur amis.... Heureusement, il y a le MOSFET! | ||
L'idéal serait que la tension reste stable aux bornes du moteur au moment du démarrage. Même s'il ne décolle pas immédiatement, maintenir la tension malgré le courant de démarrage assurerait le démarrage du moteur. | L'idéal serait que la tension reste stable aux bornes du moteur au moment du démarrage. Même s'il ne décolle pas immédiatement, maintenir la tension malgré le courant de démarrage assurerait le démarrage du moteur. | ||
− | C'est là ou le transistor | + | C'est là ou le transistor MOSFET nous sauve :-) |
− | == Le | + | == Le MOSFET == |
− | === A quoi ressemble un | + | === A quoi ressemble un MOSFET === |
− | Un | + | Un MOSFET ressemble à un... "transistor". |
Seul les caractéristiques sont vraiment différentes (comme le dessin et le nom des broches). | Seul les caractéristiques sont vraiment différentes (comme le dessin et le nom des broches). | ||
− | Tous comme les transistors, il y a des | + | Tous comme les transistors, il y a des MOSFET de Type N (dit "N Channel") et de type P (P Channel). |
− | === | + | === MOSFET Channel N - En quelques mots === |
− | Pendant du transistor NPN, voici un | + | Pendant du transistor NPN, voici un MOSFET Channel N. |
Utiliser un Channel-N est pratique et fort courant... comme l'usage des transistor NPN est également plus courant que le l'usage du PNP. | Utiliser un Channel-N est pratique et fort courant... comme l'usage des transistor NPN est également plus courant que le l'usage du PNP. | ||
Ligne 60 : | Ligne 63 : | ||
* Id : 16A<br />Courant du Drain maximum... courant maximum supporté par le transistor. | * Id : 16A<br />Courant du Drain maximum... courant maximum supporté par le transistor. | ||
− | === | + | === MOSFET Channel N - Montage type === |
− | Le schéma-ci dessous présente un montage type du | + | Le schéma-ci dessous présente un montage type du MOSFET Channel N. |
[[Fichier:STP16NF06 - N Channel - Montage Type.jpg]] | [[Fichier:STP16NF06 - N Channel - Montage Type.jpg]] | ||
+ | |||
+ | La résistance de 100 KOhms est une résistance pull-down. Elle permet de drainer les électrons vers la masse lorsque le bouton poussoir est relâché. Cette résistance est essentielle pour le MOSFET "décommute". | ||
[[Fichier:STP16NF06 - N Channel - Montage Type2.jpg]] | [[Fichier:STP16NF06 - N Channel - Montage Type2.jpg]] | ||
Ces deux graphiques proviennent de l'excellente référence de [http://www.bristolwatch.com/ele/transistor_drivers.htm Basic Transistor Drivers for Micro-Controllers] de Lewis Loflin | Ces deux graphiques proviennent de l'excellente référence de [http://www.bristolwatch.com/ele/transistor_drivers.htm Basic Transistor Drivers for Micro-Controllers] de Lewis Loflin | ||
+ | |||
+ | == Mini Kit Moteur Hobbyiste == | ||
+ | Le Mini Kit Moteur Hobbyiste proposé par MC Hobby est une application typique de MOSFET Channel N. | ||
+ | |||
+ | Le MOSFET sélectionné est un STP16NF06, il est sur-calibré pour un moteur Hobbyiste mais vous pourrez sans mal l'utiliser avec un moteur plus puissant, un strip led, etc. Pas besoin de modifier le montage de base, il conviendra à de nombreux cas d'utilisation. | ||
+ | |||
+ | [[Fichier:MKIT-MOTEUR contenu.jpg|250px]] | ||
+ | |||
+ | {{pl|116|Ce kit est disponible chez MCHobby}}. | ||
+ | |||
+ | === Plan de montage === | ||
+ | Voici le schéma de montage pour un Arduino correspondant au schéma Channel-N présenté ci-dessus. | ||
+ | |||
+ | [[Fichier:MKIT-MOTEUR schema.jpg|350px]] | ||
+ | |||
+ | ''Oups, désolé pour la mauvaise orthographe sur le dessin!'' | ||
+ | |||
+ | === Montage en pratique === | ||
+ | Voici le montage sur un platine de prototypage. | ||
+ | |||
+ | [[Fichier:MKIT-MOTEUR montage.jpg]] | ||
+ | |||
+ | En guise d'alimentation externe, vous pouvez utiliser une pile de 9V pour alimenter votre Arduino et raccorder le <font color="red">(+) de l'alimentation externe</font> sur la broche Vin d'Arduino. | ||
+ | |||
+ | === Code d'exemple === | ||
+ | |||
+ | Le plus simple des exemple est encore le BlinkWithoutDelay ( File > Examples > Digital > BlinkWithoutDelay ) qui active et désactive régulièrement la Pin 13. | ||
+ | |||
+ | Pour un résultat plus évident, changer la valeur de "interval" de 1000 à 5000 ms. | ||
+ | |||
+ | En guise d'exemple, voici l'exemple BlinkWithoutDelay avec la ligne modifiée... | ||
+ | <nowiki> | ||
+ | /* Blink without Delay | ||
+ | |||
+ | Turns on and off a light emitting diode(LED) connected to a digital | ||
+ | pin, without using the delay() function. This means that other code | ||
+ | can run at the same time without being interrupted by the LED code. | ||
+ | |||
+ | The circuit: | ||
+ | * LED attached from pin 13 to ground. | ||
+ | * Note: on most Arduinos, there is already an LED on the board | ||
+ | that's attached to pin 13, so no hardware is needed for this example. | ||
+ | |||
+ | |||
+ | created 2005 | ||
+ | by David A. Mellis | ||
+ | modified 8 Feb 2010 | ||
+ | by Paul Stoffregen | ||
+ | |||
+ | This example code is in the public domain. | ||
+ | |||
+ | |||
+ | http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay | ||
+ | */ | ||
+ | |||
+ | // constants won't change. Used here to | ||
+ | // set pin numbers: | ||
+ | const int ledPin = 13; // the number of the LED pin | ||
+ | |||
+ | // Variables will change: | ||
+ | int ledState = LOW; // ledState used to set the LED | ||
+ | long previousMillis = 0; // will store last time LED was updated | ||
+ | |||
+ | // the follow variables is a long because the time, measured in miliseconds, | ||
+ | // will quickly become a bigger number than can be stored in an int. | ||
+ | long interval = 5000; // interval at which to blink (milliseconds) | ||
+ | |||
+ | void setup() { | ||
+ | // set the digital pin as output: | ||
+ | pinMode(ledPin, OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | // here is where you'd put code that needs to be running all the time. | ||
+ | |||
+ | // check to see if it's time to blink the LED; that is, if the | ||
+ | // difference between the current time and last time you blinked | ||
+ | // the LED is bigger than the interval at which you want to | ||
+ | // blink the LED. | ||
+ | unsigned long currentMillis = millis(); | ||
+ | |||
+ | if(currentMillis - previousMillis > interval) { | ||
+ | // save the last time you blinked the LED | ||
+ | previousMillis = currentMillis; | ||
+ | |||
+ | // if the LED is off turn it on and vice-versa: | ||
+ | if (ledState == LOW) | ||
+ | ledState = HIGH; | ||
+ | else | ||
+ | ledState = LOW; | ||
+ | |||
+ | // set the LED with the ledState of the variable: | ||
+ | digitalWrite(ledPin, ledState); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
== Sources == | == Sources == | ||
Cette section reprend quelques ressources vraiment utiles. | Cette section reprend quelques ressources vraiment utiles. | ||
* [http://www.bristolwatch.com/ele/transistor_drivers.htm Basic Transistor Drivers for Micro-Controllers] de Lewis Loflin | * [http://www.bristolwatch.com/ele/transistor_drivers.htm Basic Transistor Drivers for Micro-Controllers] de Lewis Loflin | ||
+ | |||
+ | == Où Acheter == | ||
+ | * Le {{pl|116|mini kit Moteur est disponible chez MC Hobby}}. |
Version actuelle datée du 19 janvier 2014 à 10:45
Introduction
Dans le précédent article Moteur Hobbyiste, nous avons abordé la problématique de commander un moteur à l'aide d'un transistor NPN P2N2222AG. Cet article va se concentrer sur l'usage des transistor MOSFET nettement plus performant mais aussi mieux adapté à la commande en puissance.
Avantages du MOSFET
Un transistor NPN est avant tout un amplificateur en courant (en fonction du courant de base). Les transistors MOSFET sont des amplificateurs en tension.
Du coup, ils sont aussi plus faciles à utiliser. Il suffit d'appliquer une différence de potentiel sur la Gate et HOP... le MOSFET commute :-) Rien avoir avec le transistor NPN ou il faut calculer le courant de base avec soin pour saturer le transistor (pour qu'il commute).
Un autre avantage du MOSFET, c'est qu'il a moins de perte... et qui dit moins de perte dit aussi moins de dissipation en chaleur et aussi moins de chute de tension :-).
Quel candidat!
Désavantage du MOSFET
Son seul désavantage est d'être beaucoup plus cher d'un simple transistor NPN.
Inconvénient du montage NPN
...et pourquoi il faut utiliser un MOSFET!
Si ce type de montage à base de transistor est fonctionnel, il présente un énorme désavantage... la perte de tension au borne du transistor (VCE).
Cette perte de tension est généralement assez importante (1.2 Volts en moyenne), ce qui est très élevé face à la tension d'alimentation d'un montage de type Arduino (souvent 5 Volts). Plus cette chute de tension du transistor est important et moins il en reste pour le matériel (moteur) raccordé sur le transistor (relais ou moteur).
Cette chute de tension (VCE) à également tendance à augmenter avec le courant qui passe au travers du transistor. Dans le cadre d'un montage moteur c'est une véritable catastrophe.
En effet, lorsque l'on commute un transistor NPN pour alimenter le moteur, deux cas de figures se présentent régulièrement:
- Sous l'impulsion, le moteur décolle (démarre) et se met à tourner. Le courant d'appel (assez grand au démarrage) diminue rapidement... et donc la chute de tension au transistor aussi (puisque le courant diminue dans le transistor). La tension disponible aux bornes du moteur augmente jusqu'à un maximum... et le moteur atteint aussi un régime maximale. Cool... tout ce passe bien.
- Malgré l'impulsion, le moteur ne décolle pas (cela arrive 1 à 2 fois sur 10). Le courant reste donc à son maximum (celui du démarrage). Comme ce courant passe aussi à travers le transistor, et que ce courant est assez important, chute de tension au borne du transistor NPN augmente rapidement. Résultat: la tension disponible aux bornes du moteur diminue... et le moteur n'a aucune chance de démarrer. HAARFF!
Avec de telles conséquences, il est difficile d'imaginer raccorder une charge sur notre moteur Hobbyiste :-( Décidément, le transistor standard n'est pas notre meilleur amis.... Heureusement, il y a le MOSFET!
L'idéal serait que la tension reste stable aux bornes du moteur au moment du démarrage. Même s'il ne décolle pas immédiatement, maintenir la tension malgré le courant de démarrage assurerait le démarrage du moteur.
C'est là ou le transistor MOSFET nous sauve :-)
Le MOSFET
A quoi ressemble un MOSFET
Un MOSFET ressemble à un... "transistor".
Seul les caractéristiques sont vraiment différentes (comme le dessin et le nom des broches).
Tous comme les transistors, il y a des MOSFET de Type N (dit "N Channel") et de type P (P Channel).
MOSFET Channel N - En quelques mots
Pendant du transistor NPN, voici un MOSFET Channel N.
Utiliser un Channel-N est pratique et fort courant... comme l'usage des transistor NPN est également plus courant que le l'usage du PNP.
Nous allons nous concentrer sur le STP16NF06... fort répandu et capable de supporter des courants vraiment très importants (pratique pour la commande de moteurs mais aussi de strip Led).
- 1 = G = GATE : broche de commande
- 2 = D = DRAIN : broche qui draine le courant (la charge quoi... comme le moteur)
- 3 = S = SOURCE : broche source de courant (ou le courant est collecté pour être envoyé vers la charge... dans notre cas, il s'agit de la masse)
Parmi les caractéristiques de bases du STP16NF06, nous relèverons:
- Vds: 60 Volts!
Drain-source Voltage est tension maximale supportée par le transistor. - Id : 16A
Courant du Drain maximum... courant maximum supporté par le transistor.
MOSFET Channel N - Montage type
Le schéma-ci dessous présente un montage type du MOSFET Channel N.
La résistance de 100 KOhms est une résistance pull-down. Elle permet de drainer les électrons vers la masse lorsque le bouton poussoir est relâché. Cette résistance est essentielle pour le MOSFET "décommute".
Ces deux graphiques proviennent de l'excellente référence de Basic Transistor Drivers for Micro-Controllers de Lewis Loflin
Mini Kit Moteur Hobbyiste
Le Mini Kit Moteur Hobbyiste proposé par MC Hobby est une application typique de MOSFET Channel N.
Le MOSFET sélectionné est un STP16NF06, il est sur-calibré pour un moteur Hobbyiste mais vous pourrez sans mal l'utiliser avec un moteur plus puissant, un strip led, etc. Pas besoin de modifier le montage de base, il conviendra à de nombreux cas d'utilisation.
Ce kit est disponible chez MCHobby.
Plan de montage
Voici le schéma de montage pour un Arduino correspondant au schéma Channel-N présenté ci-dessus.
Oups, désolé pour la mauvaise orthographe sur le dessin!
Montage en pratique
Voici le montage sur un platine de prototypage.
En guise d'alimentation externe, vous pouvez utiliser une pile de 9V pour alimenter votre Arduino et raccorder le (+) de l'alimentation externe sur la broche Vin d'Arduino.
Code d'exemple
Le plus simple des exemple est encore le BlinkWithoutDelay ( File > Examples > Digital > BlinkWithoutDelay ) qui active et désactive régulièrement la Pin 13.
Pour un résultat plus évident, changer la valeur de "interval" de 1000 à 5000 ms.
En guise d'exemple, voici l'exemple BlinkWithoutDelay avec la ligne modifiée...
/* Blink without Delay Turns on and off a light emitting diode(LED) connected to a digital pin, without using the delay() function. This means that other code can run at the same time without being interrupted by the LED code. The circuit: * LED attached from pin 13 to ground. * Note: on most Arduinos, there is already an LED on the board that's attached to pin 13, so no hardware is needed for this example. created 2005 by David A. Mellis modified 8 Feb 2010 by Paul Stoffregen This example code is in the public domain. http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay */ // constants won't change. Used here to // set pin numbers: const int ledPin = 13; // the number of the LED pin // Variables will change: int ledState = LOW; // ledState used to set the LED long previousMillis = 0; // will store last time LED was updated // the follow variables is a long because the time, measured in miliseconds, // will quickly become a bigger number than can be stored in an int. long interval = 5000; // interval at which to blink (milliseconds) void setup() { // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { // here is where you'd put code that needs to be running all the time. // check to see if it's time to blink the LED; that is, if the // difference between the current time and last time you blinked // the LED is bigger than the interval at which you want to // blink the LED. unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledState == LOW) ledState = HIGH; else ledState = LOW; // set the LED with the ledState of the variable: digitalWrite(ledPin, ledState); } }
Sources
Cette section reprend quelques ressources vraiment utiles.
- Basic Transistor Drivers for Micro-Controllers de Lewis Loflin