Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Loco28

Pages: [1] 2
1
Vos projets / Re : Vitesse d'un SERVO
« le: décembre 30, 2022, 08:10:02 pm »
Bonsoir,
Effectivement j'ai oublié cette particularité "delay".
Donc je supprime mais cela ne change pas.
Juste pour être sûr, quand je demande un goTo(1.0) je vais vers la position que j'ai défini comme "max" et goTo(0.0) vers la "min"?
Sinon j'ai déjà testé un servo avec un ESP32 mais les déplacements sont soit "lisses" mais rapides, soit "saccadés" et lent, d'où mon intéret pour SlowMotion

2
Vos projets / Re : Vitesse d'un SERVO
« le: décembre 30, 2022, 05:48:22 pm »
Bonsoir,
J'ai reçu un Arduino donc je peux reprendre mon projet.
J'ai testé la bibliothèque SlowMotionServo: c'est très bien, le mouvement me convient (avec le petit programme proposé).
Par contre, le programme que j'ai fait pour tester les différentes fonctions (position max, min, vitesse, ...) ne fonctionne pas: j'ai droit à un déplacement (vers position initial probablement) puis un petit déplacement à "toute vitesse" puis plus rien.
Je pense que j'ai besoin d'un peu d'aide.
Merci d'avance

#include <Servo.h>
#include <SlowMotionServo.h>
 
  SMSLinear monServo;
 
void setup() {
  Serial.begin(115200); // communication avec le moniteur
  monServo.setPin(10);
  monServo.setMin(700);
  monServo.setMax(1800);
  monServo.setSpeed(1.7);
  monServo.setInitialPosition(0.1);
  monServo.goTo(0.0);
}
void loop() {
 
    SlowMotionServo::update(); /* actualisation de la position */ 
    monServo.goTo(1.0);
    delay(2000);
    monServo.goTo(0.0);
    delay(2000);
}  // fin de loop

3
Vos projets / Re : Vitesse d'un SERVO
« le: décembre 27, 2022, 05:21:26 pm »
Bonjour,
Le problème avec un seul moteur c'est que cela nécessite une mécanique extrêmement précise pour synchroniser parfaitement les barrières et le "jeu", bien qu'étant l'âme de la mécanique, n'est pas forcément le bienvenu dans un montage à cette échelle avec des pièces en 3D. De plus, le mouvement ne peut-être piloté qu'en termes de durée de fermeture ou d'ouverture..
Comme je l'ai dit, cela fonctionne mais je cherche à améliorer, donc déjà avec 2 "moteurs" et pour le pilotage précis, 2 pistes: moteurs pas à pas ou servos.
Pour l'instant je n'ai pas pu tester la bibliothèque "SlowMotionServo" car je n'ai qu'un ESP32 sous la main pour des tests et manifestement cette bibliothèque ne fonctionne pas avec.
Donc passage par la case appro d'un Arduino avant de poursuivre.

4
Vos projets / Re : Vitesse d'un SERVO
« le: décembre 26, 2022, 07:32:55 pm »
Bonsoir,
Merci d'abord pour vos différentes réponses.
Le PN est une fabrication perso (3D) et il est commandé actuellement pas un micro-moteur + vis sans fin.
L'axe des barrières comprend un levier (2mm) et 1 tige descend vers un autre levier solidaire de l'axe relié au moteur (via pignon et vis sans fin). L'axe est commun aux 2 barrières.
J'ai tout calculé pour que le mouvement des barrières se fasse en 4 ou 5s.
Tout fonctionne sauf, qu'avec les jeux, il y a des différences entre les deux barrières dans les positions ouvertes ou fermées.

Mon idée est donc de commander le mouvement par 2 servos eg90, les tiges actuelles étant reliées aux levier des servos.
Pour respecter les temps d'ouverture/fermeture, il me faut une vitesse très lente au niveau des servos. La course est également très petite.
Je fais donc des essais sur un servo posé sur ma table de travail.
Pour avoir le déplacement et la vitesse voulues, je dois mettre speedServo à 150 (voir plus) et limiter le déplacement à 5°.
Sauf que ce déplacement va se faire en 3 ou 4 bonds comme si ce servo avait un problème de résolution, ce qui n'est pas acceptable au niveau du mouvement des barrières.
J'ai fait la même constatation avec "writemicrosecond". Par exemple, je faisais des "+1" à partir de 1500 et le servo bougeait seulement à 1520, 1540, 1560, .....
Le servo est-il la bonne solution pour mon montage?
Y-at-il des servos avec une meilleure résolution (comme pour les moteurs pas à pas)?

5
Vos projets / Vitesse d'un SERVO
« le: décembre 25, 2022, 07:22:12 pm »
Bonjour,
Je veux remplacer une commande de PN à base de moteur par des servos.
Aucun problème pour faire fonctionner le servo comme je le veux, sauf pour ce qui est de la vitesse.
J'ai bien testé ce que j'ai vu sur le site en utilisant la fonction writeMicroseconds(angle)
Si j'obtiens bien le temps souhaité (4s) pour le déplacement voulu (200), le servo se déplace par à coup: (de l'ordre de 10 pas de 20).
Bref, pour bouger une barrière de PN ce n'est pas l'idéal.
Est-ce une limitation du à ce type de servo (9g) ou bien y-a-t-il autre chose à faire?

6
Tout fonctionne parfaitement. Plus de ratés.
Merci pour ton aide.....et ta patience.
Je mets en pièce jointe mon sketch (je l'ai "arrangé" au mieux).

7
c'est bon ça fonctionne mais il a fallut que je mette le LATCH sur la pin A1 (au lieu de 12), alors que sur le site il est dit"generally this one can be any pin".
Maintenant il me faut tout remettre sous le train, recâbler les relais de commande des aiguillages et repasser à une phase de test sous CDM pour voir si mon problème de "ratés" est résolu.

8
OK, je vais essayer de faire au mieux.


Je sais que mon câblage est bon car la carte a fonctionné avec les "SHIFTOUT".
Je vais faire un skectch pour tester un registre en allumant puis éteignant chaque sortie.

9
OK, je vais tester en rajoutant le SPI.begin()

Excuse ma question, mais "re-indente" cela veut dire quoi?

10
J'ai effectué une modification "hard" (changement des pins CLOCK, LATCH, DATA) pour pouvoir tester avec SPI.
Pour le LATCH, j'ai pris la pin 12 (à priori on n'est pas obligé de prendre A1). Comme ça, mes 3 pins sont groupées (11, 12 et 13).
Je me suis assuré que la carte fonctionne toujours en "SHIFTOUT", puis j'ai modifié le programme pour utiliser la fonction SPI.
Problème: je reste "coincé" au premier passage: j'envoi une commande, le la vois bien avec le Serial.print, puis plus rien.
Je ne peux envoyer aucune autre commande.
Je mets mon sketch en pièce jointe.


11

Donc ca donnerait quelque chose comme:

void shiftByte( CDE1, CDE2, CDE3){
PORTC &= B11111101;//Data clock low
   SPI.beginTransaction(SPISettings(16000000, MSBFIRST, SPI_MODE0));
   SPI.transfer(CDE3);
        SPI.transfer(CDE2);
        SPI.transfer(CDE1);
   SPI.endTransaction();
   PORTC |= B00000010;//Data clock high, latch data
}

12
Je sais les chainer sur l'aspect hardware mais je ne vois pas, dans son programme avec le SPI, comment on envoie plusieurs valeurs à la suite surtout qu'il utilise un sous-programme qui ne prends qu'un seul argument. A moins qu'il suffise de passer plusieurs arguments comme value1, value2, value3 et de les envoyer avant la ligne de "fin SPI"?


13
Effectivement cela me semble plus qu'intéressant et relativement simple. Il faut effectivement que je gagne du temps sur l'envoi vers les registres. j'ai refait des essais cet am en enlevant 1 registre et cela marchait presque à tous les coups.
Je sens que je vais ressortir ma platine d'essai.
Par contre, ce que je ne vois pas, c'est comment on fait si on veut envoyer des valeurs vers 2 ou 3 HC595.
J'ai essayé de m'inscrire sur ce site pour poser une question mais je n'y arrive pas ("date de naissance erronée" ??)

14
C'est des 74HC595

15
Le programme principal (LOOP) s'exécute en 500 microsecondes et les 3 SHIFTOUT en 420/424 microsecondes.

D'un autre côté, la commande des aiguillages est censée se faire avec 0,5s entre chaque soit 500 000 microsecondes. Il ne devrait donc pas y avoir de problème.
J'ai déjà signalé à JPP38 sur le forum CDM-rail ce problème et il m'assure que même lors des commandes d'itinéraires les commandes sont cadencées.
Ce qui est bizarre, c'est qu'à l'initialisation du RUN, tous les aiguillages sont mis en place et là, je constate bien ce cadencement à 0,5s et il n'y a aucun ratés.

Pages: [1] 2