Shield moteur Nucleo et arduino Uno

Bonjour,

Je suis nouveau dans le monde de la programmation Arduino et je crois que j’ai besoin de quelques précieux conseils… merci d’avance.

Je souhaite utiliser un moteur pas à pas pour faire tourner un système pendant le cours d’une journée.

Voici mon matériel :

Moteur pas-à-pas de type : QSH6018-65-28-210

Microcontrolleur de type : Arduino Uno (pas besoin de lien j’imagine)

Shield Moteur de type : X-Nucleo - IHM05A1

Shield moteur arduino R3
https://www.distrelec.ch/fr/arduino-motor-shield-r3-arduino-a00079/p/11038926?ext_cid=gpgooaqchfr-co-CHFR+|+DSA+|+Search&kw=&gclid=EAIaIQobChMI_9TAhMrt4gIVQ4fVCh2OcQdpEAAYASAAEgJqhvD_BwE

Alimentation de type : TRACO POWER TXM - 035 - 112
https://www.distrelec.ch/de/netzteil-35-12v-3a-traco-power-txm-035-112/p/11050163

Une boite à vitesse récupérer sur un malaxeur à pâte Kenwood, démultiplié environ 1:200

Mon objectif :

Faire pivoter d’environ 230 degrés mon système sur une période de 14 heures, et ensuite le faire revenir dans sa position de base dans une période de 2 heures. Ensuite pause et rédémarrage le jour suivant. (ceci pour orienter des panneaux solaires).

Mon problème :

Avec le shield arduino et la librairie Stepper, cela fonctionne plus ou moins, mais je n’ai aucune précision dans les pas effectués par le moteur. Des fois il tourne par saccade, des fois il ne fait qu’une partie des pas demandés etc…
Voici le code utilisé pour le contrôle avec shield Arduino et librairie Stepper :

#include <Stepper.h>

const int stepsPerRevolution = 200;

const int dirA = 7;
const int dirB = 8;


Stepper myStepper(stepsPerRevolution, dirA, dirB);

const int pwmA = 3;
const int pwmB = 9;
//const int brakeA = 5; //en place de 9
//const int brakeB = 4; // en place de 8



void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);

pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
//pinMode(brakeA, OUTPUT);//
//pinMode(brakeB, OUTPUT);//
digitalWrite(pwmA, LOW);
digitalWrite(pwmB, LOW);
//digitalWrite(brakeA, LOW);//
//digitalWrite(brakeB, LOW);//


Serial.begin(9600);

myStepper.setSpeed(1);
}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(pwmA,HIGH);
digitalWrite(pwmB,HIGH);



Serial.println();

myStepper.step(10);



digitalWrite(pwmA,LOW);
digitalWrite(pwmB,LOW);

delay(1000);

//delay(1000);//

}

Toutefois, je pense que mon moteur est trop gourmand en courant et le Shield ne suit pas, ce qui provoque ces manques de précision. J’ai essayé de travaillé en micro pas, mais je crois que la librairie Stepper n’est pas adaptée pour ce genre de mode.

J’ai donc décidé d’utiliser mon deuxième Shield, X-NUCELEO IHM05A1, qui lui est muni d’un condensateur et d’une plus grande capacité en tension et courant. Sachant que mon moteur ne doit tourner que de 10 pas environ tous les 20 à 30 secondes, j’estime que le condensateur va me permettre de générer les démarrages moteur.

Par contre le souci avec ce Shield, est que je ne trouve aucune librairie valable et aucun exemple déjà réalisé.

J’ai déjà cherché longuement sur les forums et testé quelques librairies trouvées, mais sans succès à ce jour.

Auriez-vous peut-être un conseil pour piloter ce type de moteur avec le Shield X-NUCLEO ?

Je me suis inscrit sur le site www.st.com mais je ne trouve pas d’information concernant l’utilisation du Shield couplé avec un microcontrôleur Arduino. Tout est basé sur la technologie STM32.

D’avance merci pour vos réponses qui me seront certainement très précieuses…

A bientôt

Johann Maître

Tout est basé sur la technologie STM32.

Ne serait-ce pas un peu normal ?

ST a créé les cartes Nucléo pour faciliter la vente de ses microcontrôleurs.
ST interdit l'intégration de ses cartes dans des produits destinés à être vendus.
Ses cartes ne sont là que pour pouvoir tester aisément ses différents microcontrôleurs et si tu représentes un marché potentiel les cartes te seront offertes, exactement comme Atmel avec les cartes Xplained

Arduino vend des cartes assemblées.
Les constructeurs de microcontroleurs du projet Mbed se fichent complètement de savoir qui assemble les cartes, eux il ne vendent que des microcontrôleurs.

68tjs:
Ne serait-ce pas un peu normal ?

Merci pour les infos.

Oui mais alors pourquoi ils fournissent des informations sur la compatibilité avec le arduino uno, et la correspondance entre les broches arduino et x-nucleo ?

Ne peut-on pas envoyer un signal dans les portes logiques du L6208 intégré dans la carte x-nucleo (avec enable je pense) et haché ce signal avec la fonction clock pour effectuer les séquences du pas à pas ?

Et que pensez-vous du shield moteur arduino R3 pour ce type de moteur, est-il trop faible ? En sachant que ce n'est que 10 pas environ tous les 20 à 30 secondes... est-il possible de travailler en micro pas avec ce shield, car je n'ai rien trouvé dans les librairies... ?

D'avance merci.

Oui mais alors pourquoi ils fournissent des informations sur la compatibilité avec le arduino uno, et la correspondance entre les broches arduino et x-nucleo ?

Pour que les clients aient le plus grand choix possible de cartes additionnelles. Autant pouvoir utiliser ce qui se fait ailleurs.
Dis toi bien que pas un de leur client achètera des cartes arduino, les cartes les clients se les font eux même.

Ici individuellement nous ne représentons rien pour eux, passe une commande de 10 000 microcontroleurs et tu sera écouté.

Ok merci je comprend.

Donc première étape rebrancher mon shield Arduino R3 et trouver un moyen de faire fonctionner mon pas à pas sans accros ?

Du coup peut-on optimiser la librairie Stepper pour effectuer des micro pas ?

Les moteurs ne sont pas mon sujet d’intérêt.

Il doit bien exister des bibliothèques MBed pour cette carte, MBed c'est du Cpp comme Arduino, la transposition ne devrait pas être impossible.
Ce que je peux dire c'est qu'une bibliothèque n'est pas attachée à une référence de carte mais principalement à un circuit intégré.
Ce qui est important c'est les CI qui sont sur la carte X-NUCLEO IHM05A1. Si tu fais une recherche sur les CI plutôt que sur le nom de la carte tu trouveras d'autres réponses. Tu paraitront-elle satisfaisantes je n'en sais rien.

Des bibliothèques qui font des micro pas existent dans le monde arduino il me semble.

Ok super merci beaucoup, je vais voir ce que je trouve :wink:

Bonjour à vous deux, on m'a donné exactement le même projet à réaliser : contrôler un moteur pas à pas avec une carte Arduino Uno sur laquelle on empile une extension X-Nucleo-IHM05A1.

Mon objectif est de faire tourner un moteur pas à pas à une vitesse de 12tr/min.
(datasheet : https://datasheet4u.com/datasheet-pdf/Busheng/17HD48002-22B/pdf.php?id=1147974)

J'ai également cherché des exemples mais je n'ai rien trouvé pour piloter directement le L6208 comme l'auteur le disait "Ne peut-on pas envoyer un signal dans les portes logiques du L6208 intégré dans la carte x-nucleo (avec enable je pense) et haché ce signal avec la fonction clock pour effectuer les séquences du pas à pas ?".

Je me suis posé les mêmes questions
"Oui mais alors pourquoi ils fournissent des informations sur la compatibilité avec le arduino uno, et la correspondance entre les broches arduino et x-nucleo ?"

Depuis le temps, aurais-tu (l'auteur) des pistes sur le sujet ?
J'ai l'impression qu'il n'y a que nous deux essayant de travailler de cette façon? :wink: