Code de l’interrupteur de fin de course pas à pas d’Arduino
Ceci semble être un callback. Qu’est-ce qui le déclenche ? Vous ne faites pas de boucle dans ce code. Que signifie la valeur 0, 1 ou autre de D11 ? Où se trouve la documentation dans le code ? Si une valeur particulière représente “le commutateur de limite a été atteint”, est-ce une impulsion ou un signal continu ? S’il s’agit d’une impulsion, la prochaine fois que la fonction de rappel est déclenchée, elle ne sera plus vraie et vous redémarrerez le mouvement, ce qui pourrait entraîner un comportement de démarrage et d’arrêt.
Il semble s’agir d’un callback. Qu’est-ce qui la déclenche ? Vous ne faites pas de boucle dans ce code. Que signifie le fait que D11 soit 0, 1 ou autre chose ? Où se trouve la documentation dans le code sur la signification des valeurs des broches pour D11, D8 et D9 ? Si une valeur particulière représente “le commutateur de limite a été atteint”, est-ce une impulsion ou un signal continu ? S’il s’agit d’une impulsion, la prochaine fois que la fonction de rappel est déclenchée, elle ne sera plus vraie et vous recommencerez le mouvement, ce qui pourrait entraîner de nombreux comportements de démarrage et d’arrêt.
Arduino est pressé
Tout semble câblé correctement et en imprimant des messages simples (interrupteur est cliqué/interrupteur n’est pas cliqué), il semble que le code fonctionne. Lorsque j’utilise le joystick et que je clique sur l’interrupteur, le message correct est imprimé. Néanmoins, le moteur ne tourne pas et ne bouge pas. Il émet un son bizarre mais reste immobile. Connaissez-vous les raisons possibles de ce phénomène ?
Une raison possible est que vous envoyez des pas trop rapides pour le moteur. La fonction runSpeed() n’utilise pas l’accélération, donc la vitesse maximale avec laquelle vous pouvez démarrer le moteur est limitée. J’imprimerais la valeur de setSpeed() à chaque fois qu’elle est calculée.
L’interrupteur de fin de course est bien câblé. La broche 9 est pour X+ et X-. Mais vous avez besoin d’une résistance pullup sur la broche de l’interrupteur. Cela peut être une résistance pullup externe (10K) ou, mieux encore, activer la résistance pullup interne avec pinMode(pin, INPUT_PULLUP) ;.
Je ne vois pas dans votre code où vous activez les steppers. La CNC shield V3 désactive les steppers par défaut, du moins ceux que j’ai. La broche 8 est la broche d’activation. Faites de la broche 8 une sortie et mettez-la à l’état bas (dans setup()).
Interrupteur de fin de course pour moteur à courant continu Arduino
Bien que l’interrupteur de fin de course ait 3 broches, une application normale n’utilise généralement que deux broches : La broche C et l’une des deux broches restantes. Par conséquent, il y a quatre façons d’utiliser l’interrupteur de fin de course. Vous trouverez ci-dessous le tableau de câblage de l’interrupteur de fin de course et l’état de lecture sur Arduino pour les quatre façons :
Tout comme un bouton, un interrupteur de fin de course doit également être débité (voir plus loin Pourquoi faut-il débiter pour le bouton/interrupteur de fin de course ?) Le débouclage rend le code compliqué. Heureusement, la bibliothèque ezButton supporte la fonction de débouclage. La bibliothèque utilise également un registre de pull-up interne. Cela nous permet de programmer facilement
Interrupteur de fin de course de l’accelstepper
Actuellement, les limites sont toutes dans le logiciel. Nous avons une méga version du firmware actuellement en test qui a des limites souples réglables par l’utilisateur qui arrêteront l’axe z à une position présélectionnée que vous définissez à partir de webcontrol (également une version bêta).
Le démarrage/arrêt de la broche est AUX 1 sur votre shield et fonctionne avec le gcode M3 / M5 pour ON/OFF. (Je pense que j’ai un shield 1.2b et il n’a pas de broches auxiliaires, donc vous aurez soit besoin d’un shield empilable pour libérer plus de broches, ou souder sur votre méga sur la face arrière (j’aime les fils fins de câble réseau pour ce type de travail).
Vous pouvez obtenir un champignon e-stop d’amazon et le câbler à la sortie d’alimentation de votre arduino en utilisant un simple relais 12V d’amazon ou aliexpress. Depuis la sortie d’alimentation de votre moteur 12V, allez vers l’interrupteur d’urgence, puis divisez-le et allez vers l’interrupteur de réinitialisation et ensuite vers le côté normalement ouvert du relais. Continuez de l’interrupteur de réinitialisation à la bobine et de la bobine au pôle central du relais. Depuis le pôle central du relais, connectez-le à l’écran du moteur Arduino. Lorsque le courant est coupé, le relais s’éteint et ne se rallume pas tant que le bouton de réinitialisation n’est pas pressé.