En travaillant avec un capteur et un moteur, puis-je utiliser les deux ou dois-je utiliser un bouclier moteur?


11

Mise à jour: je modifie actuellement certaines choses avec le projet. J'ai suivi certains de vos conseils. Je suis passé d'un moteur pas à pas à un servo RC (contrôlé par PWM) et si je rencontre des problèmes et que je ne peux pas les résoudre, je vais demander. Merci pour l'aide!

Je travaille sur un projet avec un ami et c'est notre première utilisation d'un Arduino. Nous utilisons un Arduino pour prendre les données d'un capteur (accéléromètre) et ensuite allumer le moteur (6V, DC).

J'ai creusé et il semble que la puissance de sortie de l'Arduino ne soit pas suffisante pour le moteur et le capteur en même temps. Peut-être qu'un retard pourrait fonctionner (serait-ce possible?).

J'envisage d'utiliser un bouclier moteur . Pourrai-je toujours contrôler l'accéléromètre avec le moteur?

J'essaie d'utiliser une seule source d'alimentation externe (max: 6 piles AA; j'essaie de limiter la quantité de piles car nous essayons de la garder portable), donc existe-t-il un moyen d'utiliser une seule source depuis le Arduino et le blindage du moteur ont besoin de deux alimentations différentes (à ma connaissance).


Vous devriez toujours pouvoir utiliser vos autres broches. Ce bouclier moteur agira comme un puissant frère et écoutera ce que dit la broche et fera exactement cela, bien sûr, avec beaucoup de puissance, il est le grand frère! Pourriez-vous modifier votre question afin d'être plus précis sur la quantité de piles AA que vous allez utiliser?
abdullah kahraman

D'accord, j'ai mis à jour le nombre de batteries. Pensez-vous qu'un moteur pas à pas serait un meilleur substitut puisque j'ai entendu dire qu'il fonctionnait très bien avec Arduinos.
Om23

@ Om23 Le choix du moteur pas à pas, du servo, du courant continu brossé ou du courant continu sans balai serait déterminé par le but que le moteur doit remplir et (par exemple pour les moteurs BLDC) le matériel disponible pour contrôler le moteur. Cela pourrait poser une nouvelle question intéressante, pour déterminer quel moteur est le mieux utilisé pour lequel de plusieurs objectifs possibles vous pouvez penser. Je ne suis pas sûr qu'une telle question soit idéale pour le site Arduino, peut-être que quelqu'un d'autre peut y répondre.
Anindo Ghosh

Réponses:


12

Problème 1 : Conduire un moteur directement à partir d'un Arduino

Conduire un moteur directement hors des broches Arduino n'est pas recommandé pour plusieurs raisons:

  • Courant de charge , en particulier au démarrage du moteur et aux conditions de décrochage. Comme indiqué à juste titre dans la question, les broches Arduino peuvent tout simplement ne pas être conçues pour fournir un courant suffisant. L'Arduino peut chauffer ou même être endommagé par une consommation de courant élevée et soutenue.
    Bien que chaque broche Arduino pour Arduinos basé sur ATmega soit évaluée à 40 mA, je préfère personnellement garder toute charge soutenue à moins de 30 mA, votre appétit pour le risque peut différer. Sans voir la fiche technique du moteur en question, il est impossible de supposer la quantité de courant requise par le moteur
  • Retour-EMF du moteur, à la fois lors de l'arrêt du moteur et éventuellement lors de la commutation du moteur - Lorsqu'un moteur à courant continu tourne, les brosses de contact "commutent" entre les bagues fendues, au moins dans les types traditionnels de moteurs à courant continu à balais, générant très peu des étincelles à chaque fois.
    L'EMF arrière est essentiellement une tension inverse générée par les bobines du moteur (ou toute charge inductive à l'arrêt), des transitoires (pointes) qui peuvent momentanément dépasser de loin la plage de tension acceptable que les broches du microcontrôleur peuvent tolérer.
    L'EMF arrière reste un risque, quoique atténué, même si une diode rapide est connectée en polarisation inverse sur les fils du moteur, une pratique fortement recommandée.
  • Ainsi, une isolation quelconque entre l'Arduino et le moteur est fortement recommandée. Pour la simplicité de mise en œuvre, ce serait un bouclier moteur.
    Si vous êtes à l'aise avec l'électronique de base, cela peut également être obtenu en câblant directement un CI de pilote de moteur approprié et des diodes de retour. ( Edit : Ceci est parfaitement décrit dans la réponse de Manishearth )
    Le pilote du moteur, qu'il s'agisse d'un blindage ou d'un IC, doit être alimenté indépendamment de l'Arduino, mais avec les deux lignes de terre de la source d'alimentation connectées ensemble. Voir plus bas.

Problème 2 : Contrôle simultané de l'accéléromètre et du bouclier moteur

  • Oui, l'accéléromètre peut être contrôlé et lu depuis l'Arduino avec le blindage du moteur en place, en s'assurant que les broches sélectionnées pour accéder à l'accéléromètre ne sont pas réellement utilisées par le blindage du moteur. Ils seraient tous connectés au bouclier, mais sans fonction interne ni connexion au sein du bouclier. La documentation du bouclier sélectionné fournira généralement ces informations.
    Pour plus de commodité, recherchez un blindage de moteur avec des en- têtes empilables, c'est-à-dire avec les broches d'en-tête Arduino répliquées sur le blindage du moteur pour fixer du matériel supplémentaire, dans votre cas l'accéléromètre. Tous les boucliers ne fournissent pas d'en-têtes empilables. Cela complique donc l'utilisation des broches non utilisées par le blindage, nécessitant que les fils soient soudés aux plots d'en-tête appropriés sur le PCB, ou une telle disposition.
    Si le blindage du moteur que vous sélectionnez utilise toutes les broches GPIO, comme cela peut être le cas avec les blindages pour piloter plusieurs moteurs, vous pouvez avoir un problème. Étant donné qu'un seul moteur doit être entraîné, évitez les blindages multimoteurs qui ne laissent pas suffisamment de broches GPIO inutilisées.

Problème 3 : Distribution d'énergie entre Arduino et le bouclier du moteur

  • Le problème avec l'arrangement 6 x AA suggéré (9 volts nominaux maximum) est que même s'il fournit une tension suffisante pour la prise d'entrée CC disponible sur de nombreux Arduinos (généralement nominale pour une entrée de 7 à 12 volts), elle est trop élevée pour que le moteur être chassé directement hors de lui.
  • Il existe cependant plusieurs blindages de moteur qui acceptent une entrée d'alimentation directe (par exemple 7 à 25 Volts), puis fournissent un 5 Volts bien régulé à l'Arduino auquel ils sont connectés. L'Arduino n'a donc pas du tout besoin d'être alimenté séparément et ne devrait pas l'être non plus. C'est absolument le seul type de blindage moteur à acheter .
  • Les alternatives Kludgier incluent le tapotement sur 4 des 6 cellules AA pour alimenter le moteur et les 6 cellules pour alimenter la prise DC (PWRIN) de l'Arduino, ou en utilisant un régulateur abaisseur 6 Volt distinct pour l'alimentation du moteur, tout en alimentant les 9 Volts directement sur la prise Arduino DC.
  • Tenter d'alimenter l'Arduino avec la batterie, puis d'alimenter le moteur à partir de la broche Vin de l'Arduino est une mauvaise idée car
    • La diode M7 entre la prise DC et la broche Vin sur plusieurs conceptions de référence Arduino est évaluée à 1 ampère, le moteur pourrait en tirer plus, au moins momentanément
    • Tous les bruits électromagnétiques générés par le moteur, le bruit de commutation et les transitoires de retour en arrière, seront réinjectés dans la carte Arduino à moins qu'un découplage très rigide ne soit mis en œuvre, ce n'est pas une question simple. Cette rétroaction EMI entraînera des problèmes intermittents et difficiles à déboguer avec le fonctionnement de l'Arduino.

10

La plupart des boucliers occupent quelques broches et laissent le reste pour vous (c'est pourquoi beaucoup ont une réplique du système de broches Arduino au-dessus d'eux en utilisant des en-têtes empilables). Ils sont conçus pour être aussi faciles que possible, donc obtenir un bouclier est le moyen le plus simple de contourner cela.

Personnellement, je n'alimente pas directement les moteurs de la carte; à la place, j'utilise des pilotes de moteur comme le L293D pour cela. Les broches ne sont pas vraiment bonnes pour extraire le courant, et il est généralement préférable d'alimenter les capteurs directement plutôt que via les broches Arduino. N'oubliez pas que les broches ont une limite de courant et que si vous les surchargez, elles s'épuisent.

L'utilisation d'un L293D est simple:

entrez la description de l'image ici

Connectez les broches 1,9,16 à votre source Vcc (borne positive de la source 5V avec laquelle vous alimentez l'Arduino. Pour moi, c'est généralement une ligne tirée d'un LM7805). Connectez maintenant les broches 4,5,13,12 à votre GND (borne négative). Maintenant, connectez la broche 8 à une source de tension plus élevée (6 V, 12 V ou tout ce que vous souhaitez alimenter vos moteurs). Notez que les bornes négatives de toutes les sources de tension doivent être court-circuitées à GND.

Maintenant, connectez votre moteur entre les deux broches de sortie sur un seul site (3,4 à gauche). Connectez les broches d'entrée (2,7) à deux broches différentes sur l'Arduino. Lorsque vous donnez le même signal (HIGH ou LOW) aux deux broches, le moteur s'arrête. Si vous donnez HIGH sur une broche et LOW sur l'autre, le moteur ira dans le sens horaire ou antihoraire, selon la broche qui a reçu le signal.

Si vous voulez un moteur unidirectionnel et que vous souhaitez enregistrer les broches, court-circuitez une des broches d'entrée sur GND. Maintenant, lorsque l'autre broche d'entrée est FAIBLE, le moteur sera éteint et lorsqu'il est ÉLEVÉ, le moteur sera allumé.

Vous pouvez attacher un autre moteur en utilisant la même procédure à l'extrémité opposée de la puce si vous le souhaitez.

Le L293D tire une petite quantité de courant de l'Arduino et alimente le moteur à partir du courant tiré via la broche 8, et est généralement idéal pour de telles situations.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.