Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A

Démarré par ucino, Janvier 01, 2019, 09:54:30 pm

« précédent - suivant »

ucino

Pull request faite, et pour le tuto github j'avais en fait déjà intégré les nouveautés pour pouvoir faire la pull request.

ucino

Je suis en train d'essayer de faire le bloc pour permettre à l'enfant de dire qu'il veut avancer le moteur pas à pas en tours (ex. 2 tours) au lieu de pas (ex. 2048x2) qui est plutôt difficile pour des maternels...

Mais ce n'est peut-être pas possible. Est-ce que quelqu'un sait s'il est possible d'aller chercher la valeur définit dans un autre bloc de config qui a le même nom de variable ? (cf. l'image pour comprendre plus facilement). Si c'est possible et si quelqu'un connait un bloc dans blocky@arduino qui fait ça je suis preneur...

En fait on dirait qu'il faudrait faire la même chose qu'avec le nom du moteur, mais que cela soit considéré comme un nombre et non des caractères (si je renomme le moteur en 123 blockly m'ajoute un my_123). J'essaie de creuser dans la doc... https://developers.google.com/blockly/guides/create-custom-blocks/variables

Bzhtitude

Réponse rapide sans test :

Dans le bloc de configuration du moteur, on doit pouvoir créer une variable "int nbpasmoteur_X = 2048" et ensuite dans y faire appel dans le bloc permettant de saisir le nombre de tour.
2048 pas par tour pour un PAP... c'est avec un réducteur non ?


ucino

Bien vu... merci beaucoup ! Je viens de l'intégrer en local, demain j'essaie de tester sur le moteur.

Pour 2048 pas par tour pour un PAP, je dois refaire des tests. Il m'a semblé que ce moteur 28BYJ-48 pouvait étrangement fonctionner avec 2048 ou 4096, et il fallait réajuster la vitesse (l'un pouvait monter jusqu'à 8 ou 10 l'autre bien plus haut pour set speed). Je ne me souviens plus de ce qu'il en était des tours : faisait-il en 1 tour ou un demi tour ?

S'il a un réducteur, je ne sais pas trop, il est comme ça : https://browse.startpage.com/do/show_picture.pl?l=francais&rais=1&oiu=https%3A%2F%2Fimg.fasttechcdn.com%2F398%2F3982900%2F3982900-1.jpg&sp=141187c82972ff223c120a5e88d0fff5&t=default à priori non ?

J'avais regardé pas mal de vidéos, tutos et articles sur le 28BYJ-48, il y avait pas mal de recommandations différentes pour le nombre de pas par tour. Maintenant que les blocs fonctionnent bien, je vais un mieux tester  ça. Je vous tiens au courant.

Bzhtitude

bah vu que  l'arbre de sortie n'est pas dans l'axe du moteur... aucun doute, il y a un réducteur.

une petite recherche me donne

Caractéristique du moteur:
Diamètre: 28 mm
Tension: 5V
Angle de pas: 5.625°  c'est donc un 64 pas de base
Rapport de réduction: 1/64  donc des pas de 5.625/64 = 0.08789°... et il en faut 4096 pour faire un tour.

Tu as quoi comme driver pour le commander ? ça ressemble sur la photo à un  ULN2003, il y a de quoi "s'amuser" beaucoup plus avec des modes "1/2 pas" "double bobines" voir même du microstepping... ceci dit avec un réducteur , l'intérêt est assez limité. 

L'arbre de sortie ne tournera jamais bien vite par contre il aura une grande précision et un bon couple.

Bon courage pour tes améliorations

ucino

Bien vu pour le réducteur.

Précisément c'est ce moteur, j'ai retrouvé le lien, les données que tu as indiquées correspondent : https://fr.aliexpress.com/item/5V-Stepper-Motor-28BYJ-48-With-Drive-Test-Module-Board-ULN2003-5-Line-4-Phase/32608569300.html

En fait 4096 fait 2 tours sur mon moteur, bizarre, du coup par défaut je lui mets donc 2048.

Pour le driver en effet c'est un ULN2003.

Citeril y a de quoi "s'amuser" beaucoup plus avec des modes "1/2 pas" "double bobines" voir même du microstepping


Ah tu titilles ma curiosité, c'est à dire ? Pour s'amuser je suis preneur :)

Ma fille a pu tester les blocs, elle s'en est bien sortie, ça a pu l'entraîner à la lecture et l'écriture des chiffres. Du coup ça l'air de tenir la route les blocs dans la config actuelle, je vais le pousser dans sa nouvelle config. Avec plus de tests, je pense que d'autres idées d'améliorations viendront.

Bzhtitude

Pour s'amuser... on passe à un tout autre calibre,  la librairie "classique" stepper.h ne suffit pas, il faut se coder ces propres fonctions.

Voici un article qui m'a bien inspiré lorsque j'ai commencé à jouer avec ça. il y a un code fournit en fin d'article pour se donner une idée.
http://www.jangeox.be/2013/12/microstepping-with-arduino.html

Pour que ce soit "agréable" à utiliser avec Blockly, il faudrait mettre tous ça en fonction, faire une bibliothèque puis créer des blocs...  très formateur mais très chronophage.

J'ai vérifié mes calculs pour les 4096 pas... j'avoue ne pas comprendre pourquoi 2048 suffisent ?!?



SebCanet


ucino

Ah ok Bzhtitude merci pour ces infos.

Oui, je ne comprends pas non plus pourquoi 2048 suffisent... peut-être qu'en vrai le modèle que j'ai sous la main n'est pas un 1/64 mais 1/32 ? Si jamais je perce le mystère je reviendrai en faire part dans ce fil de discussion.

Ok merci Seb pour l'avoir intégré :)

jbe

Bonjour.
Y a t il les opérateurs de décalage de bit dans Blockly@rduino ?
En tout cas je ne l'ai pas trouvé.

Il faudrait quelque chose du genre :
lire une variable ( variable := variable << 1 de la broche X)
écrire une trame sur une broche : broche X = variable << 1  ou quelque chose d'approchant.

En fait je veut faire fonctionner le circuit TLC1543, qui est un multiplexeur.
Il fait envoyer une trame (adresse de la voie, puis on lit la trame reçue par la voie sélectionnée)
Ce circuit permet de mesurer l'état des capteurs de ligne sur le robot WaveShare Alphabot AR.

Cordialement.

SebCanet

Hélas rien de tel pour l'instant.
Merci d'essayer de les créer !  ;D