Simulation d'un MPAP sur Isis proteus

Bonjour
Je souhaiterais reproduire le montage que j'ai obtenu dans un sujet précédent pour le simuler sur le logiciel isis proteus:

#include "AccelStepper.h"
#define CONTINUE 0x7FFFFFFF

const bool boutonPinEtatOn = LOW;

const byte boutonMarcheAvant = 8;
const byte boutonMarcheArriere = 9;
const byte boutonArret = 10;

const byte mpapDirPin = 4;     // Pour driver MPAP pin pas
const byte mpapStepPin = 5;     // Pour driver MPAP pin direction

AccelStepper MPAP1(1, mpapStepPin, mpapDirPin);     // 1 pour A4988

void setup()
{
  MPAP1.setMaxSpeed(400);
  MPAP1.setAcceleration(500);
 
  pinMode(boutonMarcheAvant, INPUT_PULLUP);
  pinMode(boutonMarcheArriere, INPUT_PULLUP);
  pinMode(boutonArret, INPUT_PULLUP);
  
  //mpap1.setEnablePin(mpapEnaPin);
  //                    DIR    STEP  ENA
  MPAP1.setPinsInverted(false, false, true);
  MPAP1.enableOutputs();     // Activer les signaux du MPAP
  // // // // // // // // // // // // // // // 
  Serial.begin(115200);
}

void loop(){
  //marche avant
  boolean etatBoutonMarcheAvant=digitalRead(boutonMarcheAvant);
  if(etatBoutonMarcheAvant == boutonPinEtatOn){
    Serial.println("Marche avant");
    MPAP1.move(CONTINUE);
  }
  //marche arrière
  boolean etatBoutonMarcheArriere=digitalRead(boutonMarcheArriere);
  if(etatBoutonMarcheArriere == boutonPinEtatOn){
    Serial.println("Marche arriere");
    MPAP1.move(-CONTINUE);
  }
  //Bouton d'arrêt
  boolean etatBoutonArret=digitalRead(boutonArret);//variable booléenne du bouton d'arrêt d'urgence
  if(etatBoutonArret == boutonPinEtatOn){
    Serial.println("Arrêt du moteur");
    MPAP1.stop();   
  }
  MPAP1.run();
}

Ce montage composé d'un arduino mega sert à faire tourner un moteur pas à pas nema 17 dans un sens lorsqu'on appuie sur le bouton poussoir dédié, à le faire tourner dans l'autre sens quand on appuie sur un deuxième bouton poussoir dédié et à l'arrêter quand on appuie sur un troisième et dernier bouton poussoir dédié.

Il semble que le driver A4988 n'existe pas par défaut dans le logiciel qu'il faille le créer soit même. Voici la manière dont je l'ai reproduit avec un L297 et un L298 que j'ai encapsulés:
image
Le montage se présente à la fin comme cela:


Le fichier isis proteus:
nema solo rotation continue.zip (19,8 Ko)

J'arrive bien à lancer la simulation mais le problème est que le moteur à l'air de ne pas tourner alors que le montage physique tourne bien. Quelqu'un s'y connaîtrait-il dans le logiciel isis proteus ?

Cordialement

C'est peut être le câblage du moteur? Essaie d'inverser les fils 1A et 2A du A4988.

Bonsoir
J'ai inverser les fils 1A et 2A mais le moteur refuse de tourner. J'ai également essayer le câblage suivant en inversant les fils 2B et 2A mais toujours rien:
image

Cordialement

Bonsoir

De mémoire PROTEUS VSM disose d'un analyseur logique qui permettrait de visualiser les chronogrammes de signaux importants en entre et sortie du bloc A4988 que tu as créé par assemblage d'un L297 et un L298.
Ces chronogrammes faciliteraient le débuggage

(Remarque : peu d'entre nous ont accès à ce logiciel coûteux, pas open source et restreint à WIndows)

Juste comme ça : dans la simulation l'entrée Enable est en l'air : c'est bon ? Le circuit intégré a-t-il en interne une résistance de tirage au bon potentiel, ou elle est sur le module ?

Bonsoir @68tjs

Enable est relié en interne à Vcc , (voir la structure interne du pseudo A4988 remplacé par l'association d'un L297 et un L298)

Je ne vois pas sur la datasheet du L297 la pullup sur /RESET.
Essaie alors de mettre Enable au 5V

Essaie alors de mettre Enable au 5V

c'est le cas .

Enable est relié à Vcc sur le schéma suivant

Qui représente , si j'ai bien compris, la vue interne du bloc hierarchique ci dessous créé par @enash..... pas par Proteus (recatngle bleu et non brun)
image

la laison ENABLE-VCC est interne à ce bloc, qu'il faut ouvrir pour la rendre visisble.

Non l'autre, celui du A4988 qui correspond au Reset:
image
Qui est sur le bloc A4988:

image

Bonjour
J'ai changé le nom de VMOT_Y en VMOT du A4988 et refait le câblage plus proprement. Cette fois il y a eu une réaction du moteur mais qui se met à tourner directement sans que l'on est appuyé sur aucun des boutons puis aucune autre réaction ne suit après que l'on est appuyé sur n'importe quel bouton:

J'ai ensuite tester la suggestion de @vileroi de mettre le ENABLE à 5V mais les réactions du moteur ont été les mêmes:
image

Cordialement

Bonjour

@vileroi
Enable est relié à Vcc au niveau du 'contenu' (assemblage L297+L298) , il n'est pas indispensable de faire de même au niveau du 'contenant' .... si mes souvenirs de la gestion des 'macros' dans Proteus sont valides.....(15 ans déjà...)

@enash

  1. Comme suggéré plus haut utilser le diverses possibiliéts offertes par Proteus ISIS et VSM pour connaître l'état logique d'une liaison et son évolution (led témoin, analyseur logique, oscilloscope....)
    Les signaux STEP et DIR sont-ls comme attendu ?

  2. Vous avez créé un bloc 'encapsulant' un L297 et un L298. Avez vous validé ce bloc avant de l'utiliser ? Reproduit-il -il correctement le fonctionnement d'un A4988 ? L'idée atant de valider ls sous-ensembles avant de les utiliser.

  3. Wokvi , simulateur en ligne utilsable par toutes et tous, semble avoir tout ce qu'il faut (A4988 inclus) pour tester le programme...

Pour moi, le Enable du A4988 est appelé /Reset sur le L297 qui lui est en l'air.

@vileroi
tu as raison , je suis tombé dans le piège !

1 Like

Bonsoir

@al1fch J'ai omis de préciser que le but de la reproduction virtuel de ce projet pour moi est de reproduire le A4988 car je risque d'en avoir besoin et qu'il est absent sur isis proteus malgré les nombreux composants qu'il possède.

Aucun chronogramme ne s'affiche sur l'analyseur logique lorsque je le branche sur le DIR et le STEP

Ce branchement de l'analyseur logique est-il convenable ?

@vileroi Mon ajout au niveau du ENABLE est-il suffisant ou bien doit-je m'y prendre autrement pour reproduire le A4988 ?

Cordialement

Bonsoir @enash

je comprend donc que la création d'u modèle pour le A4988 est l'objectif et le code ici ptésenté le moyen pour tester le modèle créé

N'ayant pas touché depuis 15 ans à Proteus dans son ensemble, ISIS et VSM en particulier je ne peux pas être d'un grand secours. L'anayseur logique ne se présente d'ailleusr pas comme dans mes souvenirs.

juste une impression

-l'analyseur serait bien câblé : sa voie A0 sur STEP et A1 sur DIR

-pour le déclenchement j'aurai 'sélectionné' front montant pour STEP et 'indifférent' pour DIR (autres positions donc pour le deux curseurs de A0 et A1 qui me paraissent actuellment imposer comme condition de déclenchentr un niveau bas pour STEP et haut pour DIR

Bonjour
Voici le nouveau branchement et paramétrage suivant les instructions mais aucun chronogramme ne s'est affiché.

Sans doute est-ce moi qui manipule mal l'outil ou est mal conçu le A4988.

Cordialement

Bonjour @enash

Les signaux STEP et DIR sont générés par le programme exécuté par la carte Mega, ils doivent même apparaître, selon les actions sur les boutons, en l'absence de l'A4988 sur le schéma ..... si le code correct a été 'injecté' dans l'Arduino Mega 2560 virtuel

N.B : je n'ai pas accès à PROTEUS depuis 2008......

Je ne connais pas du tout Proteus, mais si l'analyse est correcte, il doit s'afficher un chronogramme. Pa forcément celui que l'on voudrait, mais soit Proteus ne comprend pas et il devrait le dire, soit il affiche quelque chose, par exemple 0V.

Il y a une solution pour voir le signal: en utilisant des testeurs faits avec une résistance de 1000Ω en série avec une led. Il est possible aussi de remplacer un enroulement du moteur par une résistance en série avec deux leds en tête bêche (une rouge et une verte). Et pour y voir, il faut diminuer les fréquences pour être de l'ordre de 1Hz.

Bonsoir

PROTEUS prose ( si cela n'a pas changé depuis 2008 ) un élément testeur nommé LOGICPROBE à associer aux signaux qu'on veut surveiller .

Lors de la simulation il passe du bleu au rouge selon niveau logique sur le fil et montre un point d'interrogation pour un niveau indeterminé, ça évite de câbler une DEL et sa résistance.

image

Bonsoir
@al1fch En tout cas sur wokwi le montage fonctionne parfaitement. Apparemment le driver fonctionne avec un condensateur invisible
Untitled project.zip (4,5 Ko)

J'ai tenté d'utiliser l'élément testeur LOGICPROBE mais je ne suis pas sûr de l'avoir correctement brancher. Voici le branchement qui n'a eu aucun résultat lors de la simulation:
image
@vileroi Je voulais éventuellement tester les testeurs mais à combien d'ohm la résistance avec les deux led en bêche doit-elle être ?
image
L'un des testeurs doit-il être placé comme ceci ?
image

Cordialement