Go Down

Topic: aide communication série entre Arduino et visual c# (Read 5 times) previous topic - next topic

barbudor

Je n'ai pas d'expérience avec les moteurs pas à pas mais je comprend le principe.
A la fin même si tu fais ce nouveau montage, tu devras donner sur CLOCK un nombre d'impulsion égal au nombre de pas.
On peut peut-être arriver à faire générer à l'Arduino un nombre précis d'impulsions via timer et interruptions...Je vais y réfléchir

Mais ne peux-tu pas commencer par faire moins de pas dans chaque appel à step() ?
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

barbudor

Question subsidiaire : Pourquoi choisir un baudrate non standard de 19254 ?
La valeur standard la plus proche est 19200.

Les valeurs les plus courantes sont :
75, 120, 240, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 256000
Et 31250 pour le MIDI

Certains drivers sur PC, à une lointaine époque :), ne savaient pas générer d'autres valeurs.

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

HadesDT

car je fais en sorte que le pc trouve le port COM de la carte automatiquement, donc je les ai mit a un débit non standard comme ca un périf extérieur du pc ne peux pas venir perturber la détection de la carte :)

HadesDT


Je n'ai pas d'expérience avec les moteurs pas à pas mais je comprend le principe.
A la fin même si tu fais ce nouveau montage, tu devras donner sur CLOCK un nombre d'impulsion égal au nombre de pas.
On peut peut-être arriver à faire générer à l'Arduino un nombre précis d'impulsions via timer et interruptions...Je vais y réfléchir

Mais ne peux-tu pas commencer par faire moins de pas dans chaque appel à step() ?



oui, mais peut être que ca lui fera perdre moins de temps de faire 1 ou 0 très rapidement sur une seule I/O digital ? Mais comment arriver a faire cette clock ?

et pour faire moins de pas dans chaque appel de step je ne sais pas trop comment faire (je n'ai jamais touché au moteur PaP :()

barbudor


car je fais en sorte que le pc trouve le port COM de la carte automatiquement, donc je les ai mit a un débit non standard comme ca un périf extérieur du pc ne peux pas venir perturber la détection de la carte :)


Ca n'a pas de sens ce que tu dis.
Le baudrate c'est toi qui le règle dans l'objet SerialPort, membre baudrate.

Revenons aux moteurs pas à pas.
De ton code je déduit :
- Ton moteur à besoin de 20 pas pour faire un tour complet (cf le constructeur de Serial)
- Tu le règle à la vitesse de 60 tours par minute, donc 1 tour par seconde
- Quand tu appelles myStepper.step(20) tu lui fait faire un tour, en 1 seconde.

Donc tu ne peux revenir sur ton code de liaison série qu'une fois par seconde.

Il faut donc réduire le nombre de pas dans myStepper.step(), en faire moins (1 par 1 par exemple) à chaque tour de loop() jusqu'à atteindre 20.

Essaye quelque chose comme :

1) Déplace le setSpeed(60) dans setup(). Rien a faire dans loop.

2) Change motor() comme çà :

Code: [Select]
int motor_count = 0;
int motor_dir = 1;
void motor()
{
  myStepper( motor_dir );
  if ( ++motor_count >= step )
  {
    motor_dir = - motor_dir;// on change de sens
    motor_count = 0;
  }
}


Le temps d'exécution d'un step passe de 1 seconde à 1/20ème.

Pour aller plus loin, si c'est nécessaire, il va falloir être plus malin. Probablement se passer de la classe Stepper et refaire à la main le séquencement des pas.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Go Up