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).
Réponses:
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:
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
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.
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
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
la source
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:
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.
la source