Différences entre versions de « ARDX-Montages-CIRC03 »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 67 : Ligne 67 :
  
 
{{ARDX-composant-end}}
 
{{ARDX-composant-end}}
 +
Tous ces éléments sont disponibles dans [http://shop.mchobby.be/product.php?id_product=11 le Kit Ardx proposé sur shop.mchobby.be].
  
 
=== Schéma ===
 
=== Schéma ===

Version du 20 septembre 2015 à 10:25


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que faisons nous

Les sorties d'Arduino sont géniales pour contrôler directement de petits éléments électriques tels que des LEDs.

Cependant, lorsque l'on s'attaque à de plus gros composants (tels qu'un moteur de jouet ou de machine à laver), un transistor complémentaire est alors nécessaire. Un transistor est incroyablement utile. Il commute une grande quantité de courant en utilisant une quantité de courant bien plus petite.

Un transistor à 3 broches. Pour un transistor de type négatif (NPN), vous connectez la charge au collecteur et l'émetteur à la masse. Alors, lorsqu'un petit courant circulera de la base à l'émetteur, un courant circulera à travers le transistor et votre moteur tournera (cela se produira lorsque nous mettrons la pin de notre Arduino à HIGH).

Il y a littéralement des centaines de type de transistors, permettant de répondre à la perfection à chaque situation. Nous avons choisit le P2N2222AG, un transistor communément utilisé dans de nombreuses applications. Les facteurs importants dans notre cas sont la tension maximale (40 volts) et le courant maximum (600 milliampères) qui sont tous deux largement suffisant pour notre moteur de jouet (plus de détails sur sa fiche technique ardx.org/2222).

La diode 1N4001 est utilisé comme diode anti-retour (aussi dit "en roue libre") pour plus de détails sur la raison de sa présence, visitez: ardx.org/4001(anglais)

Le montage

Le matériel nécessaire

ARDX-circ-sheet.png

Fiche de montage CIRC-03
x1

ARDX-pin-header.png

2 Pin header
x4

ARDX-p2n2222ag.png

Transistor P2N2222AG (TO92)
x1

ARDX-Moteur.png

Moteur de jouet
x1

ARDX-DIODE.png

Diode (1N4001)
x1

ARDX-R2200.png

Résistance de 2.2 KOhms (rouge-rouge-rouge)
x1

 

Tous ces éléments sont disponibles dans le Kit Ardx proposé sur shop.mchobby.be.

Schéma

Circ03-schema.png

Montage

Cir03-montage.png
.: NOTE: Si votre Arduino se réinitialise, vous aurez alors besoin de placer la capacité optionnelle :.

Le code

Pas besoin de taper tout le code, vous pouvez le télécharger depuis ardx.org/CODE03 et faire un copier/coller dans votre croquis.


int motorPin = 9; //Pin de raccordement du moteur
void setup() //Exécuté une seule fois
{
   void setup() //Exécuté une seule fois
}

void loop() // Exécuté encore et encore
{
   motorOnThenOff();
   //motorOnThenOffWithSpeed();
   //motorAcceleration();
}

/*
 * motorOnThenOff() - allume puis éteint le moteur
 * (note : ce code est identique à celui de la
 * LED clignotant)
 */
void motorOnThenOff(){
   int onTime = 2500;  //temps allumé
   int offTime = 1000; //temps éteint

   digitalWrite(motorPin, HIGH); // Allume le moteur
   delay(onTime);               // Attend onTime ms
   digitalWrite(motorPin, LOW); // Eteind le moteur
   delay(offTime);              // Attend offTime ms
}

/*
 * motorOnThenOffWithSpeed() - contrôle du moteur 
 * avec gestion de la vitesse.
 */
void motorOnThenOffWithSpeed(){
   int onSpeed = 200;// Nombre de 0 (arrêt) à 255
   int onTime = 2500;
   int offSpeed = 50;// Nombre de 0 (arrêt) à 255
   int offTime = 1000;

   analogWrite(motorPin, onSpeed);  // Alimenter le moteur
   delay(onTime);                   // Attend onTime millisecondes
   analogWrite(motorPin, offSpeed); // Eteint le moteur
   delay(offTime);                  // Attend offTime ms
}

/*
 * motorAcceleration() - Accélération/décélération du  
 * moteur.
 */
void motorAcceleration(){
   int delayTime = 50; // temps entre deux modification de vitesse

   //boucle toutes les vitesses de 0 à 255
   for(int i = 0; i < 256; i++){
      //assigne la nouvelle vitesse
      analogWrite(motorPin, i);

      delay(delayTime);   // attends delayTime ms
   }

   //boucle toutes les vitesses de 255 à 0
   for(int i = 255; i >= 0; i--){
      //assigne la nouvelle vitesse
      analogWrite(motorPin, i);

      delay(delayTime);   //Attend delayTime ms
   }
}

Cela ne fonctionne pas?

Voici 3 choses à essayer.

Le moteur ne tourne pas?

Si vous avez utilisé votre propre transistor, vérifiez à l'aide de sa fiche technique que le brochage est compatible avec le P2N2222AG (beaucoup utilisent des brochages inversés)

Toujours pas de chance?

Si vous avez utilisé votre propre transistor, vérifiez à l'aide de sa fiche technique que le brochage est compatible avec le P2N2222AG (beaucoup utilisent des brochages inversés)

Cela ne fonctionne toujours pas?

Il arrive que la carte Arduino se déconnecte de votre ordinateur.

Essayez de déconnecter et de reconnecter la prise USB.

Faire encore mieux

Contrôler la vitesse

Précédemment, nous avons joué avec la possibilité qu'Arduino avait de contrôler la luminosité d'une LED.

Maintenant, nous allons utiliser cette même capacité pour contrôler la vitesse de notre moteur. Arduino fait cela en utilisant une technique appelée « modulation de longueur d'impulsion » (PWM). Cela s'appuie sur la capacité qu'à Arduino à fonctionner vraiment-vraiment rapidement.

Plutôt que de contrôler directement la tension de sortie d'une broche, Arduino va activer et désactiver la broche très rapidement. Dans le monde informatique c'est passer de 0 à 5 volts plusieurs fois par secondes, mais dans notre monde humain, nous percevons cela comme une tension.

Par exemple si un Arduino module à 50% nous voyons la LED éclairée à 50% parce que nos yeux ne sont pas assez rapides pour voir qu'elle s'allume et s'éteint constamment.

Vous ne le croyez pas ? Alors essayez le.

Changer la fonction loop() comme suit

// motorOnThenOff();
motorOnThenOffWithSpeed();
// motorAcceleration();

Ensuite charger le programme. Vous pouvez modifier les vitesses en modifiant les variables onSpeed et offSpeed.

Accélérer et décélérer

Pourquoi s'arrêter à deux vitesses ? Pourquoi ne pas accélérer et décélérer la vitesse du moteur ?

Pour ce faire, il suffit de changer la fonction loop() pour y lire ;

// motorOnThenOff();
// motorOnThenOffWithSpeed();
motorAcceleration();

Chargez ensuite le programme et regardez votre moteur accélérer lentement jusqu'à plein régime puis ralentir.

Si vous voulez modifier l'accéleration, modifiez la variable delayTime (une plus grande valeur implique une accélération plus lente)

Plus, plus et encore plus

Plus d'information, où poser vos autres questions: ardx.org/CIRC03 (anglais)

Internet

.:téléchargement:.

LA fiche de montage est disponible sur ardx.org/BBLS03

.: Vidéo :.

La vidéo du montage est disponible sur ardx.org/VIDE03 (anglais)


Tutoriel/Manuel traduit par Meurisse D. pour MCHobby.be licence Creative Commons BY-SA.

Crédit de traduction
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (shop.MCHobby.be) - Vente de kit et composants » et ce quelque soit le média utilisé.

Utilisation commerciale
L'utilisation commercial de cette traduction (y compris sur site produisant des revenus par l'intermédiaire de publicité), même partielle, est soumise à redevance (license fee).


Le présent manuel a été traduit et autorisé à la vente avec l'aimable autorisation conjointe de Oomlout (www.oomlout.com) et d'AdaFruit (www.adafruit.com).

Produit sous licence Creative Commons BY-SA License and available for download: ardx.org/src/