Général Tension de commande STEP

  • Auteur de la discussion Guy69
  • Date de début
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #1
Bonjour à vous, reines et rois de l'Arduino.

Sur mon montage en cours d'élaboration, je réutilise un driver et un PAP existants.

J'ai donc besoin d'envoyer les instructions STEP et DIR et je pensais le faire en TTL (tension de 0 à 5V), mais je m'aperçois en testant sur une planche que le driver sature si j'envoie des carrés (depuis un géné de signaux carrés) de plus de 1,5V sur le STEP.


Au dessous de 1V, les steps ne passent pas (normal)
Entre 1V et 1,5V tout marche nickel
Au-dessus de 1,5V, le stepper grogne, et visiblement le driver sature, les carrés se brouillent sur l'oscillo.

Que me conseillez vous pour sortir une tension correcte sur les pins de l'Arduino? Un bête diviseur de tension avec 2 résistances? ou un paramétrage particulier des pins de sortie?

Merci de vos avis
Cordialement
Guy
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
Bonjour à vous, reines
Ahhhh! il y a des Reines de l'Arduino sur ce forum:smt079

Plus sérieusement, quel est ton driver, un petit schéma?

Cordialement
jpbbricole
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #3
J'espère qu'il y a des reines :)

(En tout cas moi je suis le roi des branques parce que je viens de cramer un Leonardo... grr... un court-jus stupide)

Je n'ai pas le schéma de ce driver qui vient d'une récup. Il est à base de L297 (et L298). Il était équipé d'un SN74HCT573N que j'ai enlevé de son support pour attaquer directement;
· broche 10 : 0v (GND)
· broche 20 : +5V
· broche 19 : DIR : selon que l’on connecte cette broche au 0V (LOW) ou 5V (HIGH), le moteur tourne dans un sens ou l’autre
· broche 18 : CLOCK (ou STEP): c'est le fameux signal carré qui fait avancer le moteur d’un pas
· broche 11 : ENABLE : quand cette broche est HIGH (5V), le moteur est actif. Quand elle est LOW (0V), le moteur est débrayé

MERCI de ton intérêt!
Guy
 
P
psemel
Ouvrier
21 Mar 2009
403
oise
Bonsoir,
la carte Arduino fonctionne t'elle en 5 volts ou 3 volt au pin de sortie??
perso j'ai 2 cartes à base de L298 et cela fonctionne sans problèmes sur les UNO et MEGA en 5 volts.
regarde le datasheet des composants pour avoir une réponse sur la tension et le site : http://www.otocoup.com/CarteL6208.htm
Pierre
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
je suis le roi des branques parce que je viens de cramer un Leonardo... grr... un court-jus stupide
Alors ça, ça ne m'est JAMAIS arrivé:smt021 Rassures-toi tu n'est pas tout seul!

Malheureusement, je n'ai aucune expérience avec ce type d'interface:sad:
Mais il y aura surement quelqu'un qui va passer...

Cordialement
jpbbricole
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #6
Merci Pierre, je vais étudier de près tes schémas.
Pour ma part, je n'ai pas encore connecté l'Arduino, donc ni en 3V ni en 5V pour l'instant. Comme je le disais j'ai juste testé avec un géné de signaux carrés et le scope en vérification. Avec le driver que j'ai, même 3V seront trop en sortie.
J'ai donc le choix entre:
- utiliser ce driver tel qu'il est et me débrouiller pour lui donner 1,5V max (je pense à un potar en pont diviseur, mais si vous avez une meilleure idée je prends)
- ou bien jeter ce driver et en faire (ou acheter) un autre.

Bonne soirée... qui sera tendue pour certains....
A+
Guy
 
toff
toff
Compagnon
1 Nov 2008
886
FR-60 Elincourt ste Marguerite
Bonsoir,
je n'ai jamais mis en œuvre de couple L297/298 mais il me semble qu'il sont bien en TTL. Que dit le datasheet du L297 ?
 
J
JMe87
Nouveau
5 Avr 2015
47
Bonsoir,
je ne connais pas de technologie contemporaine du L298 qui soit saturee avec 1V5.
A mon avis, il y a un coupleur optique a l'entree de ton driver et tu es en train d'alimenter la Led sans resistance serie.
Pourrais-tu publier une photo de ton driver ?

Jacques
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #10
Bon, je ne vois pas d'optocoupleur.
Le signal que j'envoie sur le fil orange (rond bleu sur la photo) est bien strictement celui qui arrive sur la patte 18 (Clock) du L297 (rond rouge sur la photo).

WP_20170504_002.gif

Je pressens que la réutilisation/bidouillage du driver existant n'est pas une bonne idée.
Cordialement
Guy
 
Dernière édition:
J
JMe87
Nouveau
5 Avr 2015
47
Bonjour
le datasheet du L297 dit :
Vs(tension alimentation) compris entre 4.75V et 7V
Vi (input voltage) max 0.6V pour niveau 0 et min 2V pour niveau 1
Je sais rien dire d'autre
Jacques
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #12
oui merci Jacques.
En fait plutôt qu'une saturation je pense qu'il s'agit d'une entrée en oscillation.
Je laisse tomber ce driver.

Bonne journée à tous
Guy
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #13
Bonsoir
je reviens :)
Encore une question SVP bête m'sieurs dames.

J'ai un compte-tour avec 2 fourches (encodeur en quadrature) qui attaquent 2 entrées Arduino (Digital IO 0 et 1) mais je passe par un trigger de schmitt (4093) pour fournir un signal 5V bien propre.
L'affichage se fait sur un LCD 16x2.
Ca marche... presque. PARFOIS, mon affichage part en vrac (compte tour bloqué ou signaux cabalistiques).
J'ai remarqué que quand je laisse mon scope sur les entrées 0 et 1 pour visualiser les carrés, CA MARCHE NICKEL, je ne constate aucun pb.
Je me dis donc que l'entrée du scope en // doit corriger mon signal, du genre baisser l'impédance ou faire pull-up ou pull-down.
En effet, actuellement, je connecte directement la pin 0 (ou 1) de l'arduino à la pin de sortie du Schmitt (4093). Il faut peut-être que je mette une résistance pull-up ou pull-down?
Des idées?

MERCI!
Guy
 
toff
toff
Compagnon
1 Nov 2008
886
FR-60 Elincourt ste Marguerite
Bonjour,
Pour moi, il faut gérer les entrées via une interruption, qui est la seule garantie de prise en compte de tes entrées à temps.

A+
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
@toff +1
sur les entrées 0 et 1
Je suppose que tu utilises un UNO?
Ces pin sont ceux de la transmission série:

Serial.println("Je sors sur la pin 1 et reçoit sur la 0");

Le mieux est d'utiliser pour la fourche 1 la pin 2 et pour l'autre fourche, la 3.

Mets un petit schéme et éventuellement le programme

Cordialement
jpbbricole
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #16
Bonsoir


Bonjour,
Pour moi, il faut gérer les entrées via une interruption, qui est la seule garantie de prise en compte de tes entrées à temps.
Oui, c'est ce que fait la library "encoder.h". Elle utilise les interruptions.


Je suppose que tu utilises un UNO?
Non, un LEONARDO mais c'est pareil je pense.


Ces pin sont ceux de la transmission série
Le mieux est d'utiliser pour la fourche 1 la pin 2 et pour l'autre fourche, la 3.
Je pensais qu'ils pouvaient être utilisés comme tout pin digital "interrupt". Mais pourquoi pas passer sur 2 et 3, c'est faisable bien sûr.


Mets un petit schéme et éventuellement le programme
Voici
Image1.png




Programme:

/* Encoder Library - TwoKnobs Example
* http://www.pjrc.com/teensy/td_libs_Encoder.html
*
* This example code is in the public domain.
*/
#include <Encoder.h>

Encoder CompteurBroche(0, 1); //capteur compte-tours sur pins 0 et 1

#include <Wire.h> // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
void setup() {
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
lcd.backlight(); // finish with backlight on
lcd.clear();
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print(" Tours");
}
int positionCompteur=0;
int newCompteur=0;
float Compteur=0;

void loop() {

// on surveille surtout le Compteur BROCHE (sur Pins Interrupt capable)
newCompteur=CompteurBroche.read();
if (newCompteur != positionCompteur){
Compteur=(float)newCompteur/80; //40 trous dans disque donc 80 impulsions par tour
positionCompteur=newCompteur;

} // fin de l'événement avance BROCHE

//...


//Mise à jour des Affichages
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(Compteur,1);
}


Cordialement
Guy
 
Dernière édition:
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #17
(suite)
et sur la doc de la library Encoder, je comprends que les pins 0 et 1 sont OK (mais 2 et 3 aussi). C'est une des différences avec le UNO.

Capture.GIF

Cordialement
Guy
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
Bonsoir

Pour les interrupt, avec le Leonardo, c'est OK, mais ça bloque serial1.print.
Dans ton schéma, est-ce-que le gnd des fourches est connecté au gnd de l'Arduino?
Parce que, si tu connectes to scope et que ça fonctionne, c'est typiquement un problème de masse (gnd).

Cordialement
jpbbricole
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #19
Merci JPB,
oui le GND des fourches est relié à celui de l'Arduino mais peut-être un fil un peu long.
Je vais raccourcir le cablage.
Tu ne penses pas qu'il faille ajouter une pull-up de 3K sur les pins Arduino?

A suivre demain pour ma part. Merci à vous tous
Bonne nuit
Guy
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
Tu ne penses pas qu'il faille ajouter une pull-up de 3K sur les pins Arduino?
Si le fil est long, tu risques rien d'essayer, ne pas lésiné sur la section du fil de masse.

Cordialement
jpbbricole
 
toff
toff
Compagnon
1 Nov 2008
886
FR-60 Elincourt ste Marguerite
tu peux, pour tester, virer le 4093 et activer le pullup des entrées
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
activer le pullup des entrées
Malheureusement, d'après le programme, les 2 entrées sont gérées par la bibliothèque, mais, de toute façon, dans un environnement perturbé, les pull-up sont trop hautes, entre 20 et 50k.

Cordialement
jpbbricole
 
Dernière édition:
toff
toff
Compagnon
1 Nov 2008
886
FR-60 Elincourt ste Marguerite
Merci pour ces précisions :wink:
 
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 875
FR-28360
Bonsoir
je reviens :)
Encore une question SVP bête m'sieurs dames.

J'ai un compte-tour avec 2 fourches (encodeur en quadrature) qui attaquent 2 entrées Arduino (Digital IO 0 et 1) mais je passe par un trigger de schmitt (4093) pour fournir un signal 5V bien propre.
L'affichage se fait sur un LCD 16x2.
Ca marche... presque. PARFOIS, mon affichage part en vrac (compte tour bloqué ou signaux cabalistiques).
J'ai remarqué que quand je laisse mon scope sur les entrées 0 et 1 pour visualiser les carrés, CA MARCHE NICKEL, je ne constate aucun pb.
Je me dis donc que l'entrée du scope en // doit corriger mon signal, du genre baisser l'impédance ou faire pull-up ou pull-down.
En effet, actuellement, je connecte directement la pin 0 (ou 1) de l'arduino à la pin de sortie du Schmitt (4093). Il faut peut-être que je mette une résistance pull-up ou pull-down?
Des idées?

MERCI!
Guy
Sur l'Arduino on peut avoir l'entrée en pullup mais pas pulldown. Dans le cas de tes fourches il faut rajouter des résistances pulldown.
C'est vrai que normalement avec le 4093, il ne devrait pas y en avoir besoin.

Les pins 0 et 1 sont aussi utilisés pour la liaison série avec le PC. Tu ne peux pas utiliser le 2 et 3 ? Je viens de voir que l'usb est directement gérer par ATMega du Leonardo
 
Dernière édition:
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
Bonjour @toff
Je viens de revoir ton schéma
upload_2017-5-10_9-34-44.png


Tu n'as pas laissé les entrées libres du 4093 en l'air :guitou59:
Si oui, c'est aussi une cause de problème, il faut la ponter avec l'entrée d'à côte.

Je viens de voir que l'usb est directement gérer par ATMega du Leonardo
C'est le gros avantage du Léonardo, ainsi on dispose d'un port communication indépendant, sans devoir passer par une bibliothèque, et ainsi disposer du mode interruption pour gérer les comm.

Cordialement
jpbbricole
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
il vaut mieux la mettre à 1 plutôt que la double
Oui, c'est vrai, mais la fainéantise aidant, il est plus facile de ponter 2 pin proches:smt021, les courants impliqués ne sont pas critiques.

Bonne journée
jpbbricole
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #28
et si j'avais laissé en l'air :wink:
Je m'en vais corriger cela (mais ça m'oblige à démonter mon capteur grr...)

Par ailleurs, j'ai aussi l'impression que la qualité de l'alimentation joue beaucoup.
Quand j'alimente l'arduino par l'USB du PC je suis beaucoup plus fiable (pas d'erreur constatée) que lorsque j'alimente depuis une alim à découpage de PC (avec des fils un peu longs). Quels sont vos conseils sur le blindage (?) ferritage (?) de l'alim.

A tout à l'heure
MERCI
Guy
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 249
Corsier-sur-Vevey (Vaud)
et si j'avais laissé en l'air
C'est la pire des choses à faire avec ce genre de circuits (CMOS):grilled:

Est-ce-que les fourches sont alimentées depuis le 5v. de l'Arduino ou de façon indépendante?
Quel est la distance entre l'Arduino et les fourches?
Si éloigné et alimenté par l'Arduino, prévoire un condo tentale de 10 ou 20uF.

Perso, sur mes montages à base d'Arduino, je l'alimente en 9V. sur Vin depuis une petite alimentation aux yeux bridés
upload_2017-5-10_10-35-3.png

Qu peut, elle même, etre alimentée depuis ton alim PC.
Je n'alimente pas l'Arduino avev 12v. sur Vin parceque il y a trop de risque de surchauffe du régulateur 5v.
Si ton montage externe ne "tire" pas trop, tu peux l'alimenter depuis le 5v. de l'Arduino, sinon ajoute une petite alim pour faire du 5v. plus puissant.

C'est ainsi que je fais tout mes montages.

Mais pour résumer, corrige déjà les entrées en l'air du 4093 et vois si ça améliore la stabilité

Cordialement
jpbbricole
 
G
Guy69
Compagnon
3 Mar 2009
1 255
FR-71170
  • Auteur de la discussion
  • #30
hello

C'est la pire des choses à faire avec ce genre de circuits (CMOS):grilled:
pardon chef, je le ferai plus :wink: Merci du rappel!

Est-ce-que les fourches sont alimentées depuis le 5v. de l'Arduino ou de façon indépendante?
Quel est la distance entre l'Arduino et les fourches?
20cm environ, alimentation des fourches depuis le 5V de l'Arduino

Mais pour résumer, corrige déjà les entrées en l'air du 4093 et vois si ça améliore la stabilité
Voilà c'est fait, je croyais que c'était mieux mais j'ai quand même eu un blocage.
Retour à l'alim via USB et là plusieurs "run" sans blocage.
Je vais donc travailler l'alim, merci de ton expérience.

Cordialement
Guy
 
Haut