positionnement avec un moteur pas à pas

PieM

Senior Member
eh comment dire dans le bout du val d'oise, pres de mantes la jolie (78)
il faut décomposer les instructions
je sais que vous avez les bonnes valeurs mais visiblement la théorie est différente de la pratique...
en envoyant simplement hi2cout %01000000, ($00,$FF) je ne vois pas ce qu'on peut décomposer ! On ne passe pas par la macro là !
 

zeltron

Senior Member
j'espere vous mettre sur la piste des indiens
avec cette remarque
j'arrive à faire la boucle que vous voulez à savoir
https://www.youtube.com/watch?v=wB6oBs4d3LE&feature=youtu.be
avec ce code certe lourding mais qui fonctionne
Code:
do
let dat = 255 
hi2cout (b0,b1)
pause 1000
let dat = 65535 
hi2cout (b0,b1) 
pause 1000
let dat = 65280 
hi2cout (b0,b1)
pause 1000
let dat = 65535 
hi2cout (b0,b1) 
pause 1000


loop
je vous laisse décortiquer le truc parce que l'informatique et moi ça fait 2!
 

PieM

Senior Member
lol:D vous avez raison ça commence à me rendre chévre ce truc!:mad:
dernier test

Code:
[color=Navy]#picaxe [/color][color=Black]40X2[/color]
[color=Blue]setfreq m16

hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%01000000[/color][color=Black], [/color][color=Blue]i2cslow_16[/color][color=Black], [/color][color=Blue]i2cbyte 
do
hi2cout [/color][color=Navy]%01000000[/color][color=Black], [/color][color=Blue]([/color][color=Navy]$FF[/color][color=Black],[/color][color=Navy]$00[/color][color=Blue])
pause [/color][color=Navy]1000[/color]
[color=Blue]hi2cout [/color][color=Navy]%01000000[/color][color=Black], [/color][color=Blue]([/color][color=Navy]$00[/color][color=Black],[/color][color=Navy]$FF[/color][color=Blue])
pause [/color][color=Navy]1000[/color]
[color=Blue]loop[/color]
Si ça ne marche pas, je tire l'échelle ....
 

PieM

Senior Member
j'espere vous mettre sur la piste des indiens
avec cette remarque
j'arrive à faire la boucle que vous voulez à savoir
https://www.youtube.com/watch?v=wB6oBs4d3LE&feature=youtu.be
avec ce code certe lourding mais qui fonctionne
Code:
do
let dat = 255 
hi2cout (b0,b1)
pause 1000
let dat = 65535 
hi2cout (b0,b1) 
pause 1000
let dat = 65280 
hi2cout (b0,b1)
pause 1000
let dat = 65535 
hi2cout (b0,b1) 
pause 1000


loop
je vous laisse décortiquer le truc parce que l'informatique et moi ça fait 2!
oui mais il manque au début
symbol dat = w0 (c'est b0 et b1)

c'est exactement pareil que d'envoyer $FF, $00 (traduction de 255)
puis $FF, $FF (traduction de 65535)
puis, $00, $FF (65280)
puis $FF, $FF
 

PieM

Senior Member
Euh... grosse fatigue !

l'adresse de l'esclave doit être entre crochet! sinon c'est considéré comme adresse de registre de l'esclave.
on efface tout :

la macro:
Code:
[color=Navy]#MACRO [/color][color=Black]act_aiguille[/color][color=Blue]([/color][color=Purple]N[/color][color=Black],[/color][color=Purple]sens[/color][color=Blue])

   [/color][color=Purple]dat [/color][color=DarkCyan]= [/color][color=Navy]$FFFF 
   [/color][color=Purple]adr_pcf [/color][color=DarkCyan]= [/color][color=Purple]N[/color][color=DarkCyan]/[/color][color=Navy]8 [/color][color=DarkCyan]+ [/color][color=Navy]$20 [/color][color=DarkCyan]<<[/color][color=Navy]1
   [/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]N[/color][color=DarkCyan]//[/color][color=Navy]8 [/color][color=DarkCyan]- [/color][color=Navy]1 [/color][color=DarkCyan]max [/color][color=Navy]7
   [/color][color=Purple]adr_mem [/color][color=DarkCyan]= [/color][color=Navy]100 [/color][color=DarkCyan]+ [/color][color=Purple]adr_pcf [/color][color=Green]'calcul de l'adresse memoire en RAM
   [/color][color=Purple]bit0 [/color][color=DarkCyan]= [/color][color=Purple]sens
   [/color][color=Blue]peek [/color][color=Purple]adr_mem[/color][color=Black], [/color][color=Purple]var_temp [/color][color=Green]'on va chercher le byte d'?tat
   [/color][color=Blue]if [/color][color=Purple]bit0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then 
      setbit [/color][color=Purple]var_temp [/color][color=Black], [/color][color=Purple]adr_bit [/color][color=Green]'on met ? 1 (droite) le bon bit adr_bit
   [/color][color=Blue]else
      clearbit [/color][color=Purple]var_temp [/color][color=Black], [/color][color=Purple]adr_bit [/color][color=Green]'on met ? 0 (gauche) le bon bit adr_bit
      [/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]adr_bit [/color][color=DarkCyan]+ [/color][color=Navy]8 [/color][color=Green]'et on change l'adresse du bit de cde pour etre dans b45 
   [/color][color=Blue]endif
   poke [/color][color=Purple]adr_mem[/color][color=Black], [/color][color=Purple]var_temp [/color][color=Green]' on enregistre le nouvel ?tat dans la variable du byte d'?tat
   [/color][color=Blue]clearbit [/color][color=Purple]dat[/color][color=Black],[/color][color=Purple]adr_bit [/color][color=Green]'on met a 0 le bit de dat pour la cde. Il sera dans b44 ou b45 selon le sens.
   [/color][color=Blue]hi2cout [PLAIN][[/PLAIN][/color][color=Purple]adr_pcf[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]([/color][color=Purple]b44[/color][color=Black],[/color][color=Purple]b45[/color][color=Blue]) [/color][color=Green]' commande la bobine N a droite ou ? gauche
   [/color][color=Blue]pause pause_aig
   hi2cout [PLAIN][[/PLAIN][/color][color=Purple]adr_pcf[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]([/color][color=Navy]$FF[/color][color=Black],[/color][color=Navy]$FF[/color][color=Blue]) [/color][color=Green]'RAZ cde bobine[/color]
[color=Navy]#ENDMACRO[/color]
penser à remplacer hi2csetup par
hi2csetup i2cmaster, %01000000, i2cslow_16, i2cbyte
 

zeltron

Senior Member
oui mais il manque au début
symbol dat = w0 (c'est b0 et b1)
oui mais ça c'est ok je n'ai pas copier coller cette phrase mais elle se trouve dans le programme
c'est exactement pareil que d'envoyer $FF, $00 (traduction de 255)
puis $FF, $FF (traduction de 65535)
puis, $00, $FF (65280)
puis $FF, $FF
je ne vois pas de difference entre cette boucle et la précedente
sauf pour la fréquence
mais non apres essais ce code ne marche pas c'est identique à l'autre boucle
c'est exactement pareil que d'envoyer
ça n'a pas l'air...
il faut en conclure que l'exa n'est pas accepté alors que le decimale vi....
 

zeltron

Senior Member
ah vi la y'a un trés gros progrès!
ça marche!
y'a 2 trucs de bizarres
lors de la 1er commande aiguillage apres un démarrage picaxe le 1er ordre n'est pas pris en compte
et les bits d'un des ports sont inversés par rapport à l'autre port
exemple si le relais 1 et l'aiguillage 1 à gauche
le relais 9 est l'aiguillage 1 à droite
alors que je crois qu'il est convenu que ce soit le relais opposé en face
mais ça ce n'est rien c'est juste à prendre en compte dans le câblage
bravo topchef
 

zeltron

Senior Member
bé non je dis encore des conneries
je viens de tester la boucle en hexa et ça marche
comprends plus rien moi vais faire un tour dehors avant que tout péte!:mad:
 

PieM

Senior Member
lors de la 1er commande aiguillage apres un démarrage picaxe le 1er ordre n'est pas pris en compte
bizarre. me repasser le prog dans son intégralité. De toute façon il y aura maintenant d'autres trucs à simplifier
plutôt que d'envoyer un fichier txt, envoyez directement le fichier .bas

alors que je crois qu'il est convenu que ce soit le relais opposé en face
Oui mais ça , ça dépend de l'ordre des relais sur la carte par rapport au connecteur.
Avec ce programme, il faut dans l'ordre : bobine 1dte .... bobine 8dte bobine 1gauche .... bobine 16gauche

Bon on a économisé l'exorciste et le voyage à Lourdes. c'est déjà ça.
 

zeltron

Senior Member
bonjour, bonjour
pas tres present ce jour, gros pb de refroidissement moteur
j'ai changé ma pompe à eau, le calorstat, verifier que le radiateur n'est pas bouché et ça chauffe toujours!
bref il faut absolument aller à lourdes!
enfin... j'ai cablé une seconde carte relais et pcf pour voir le basculement magique de la macro
elle se fait apres le relais 7 et non pas 8...
je demande le 8 c'est le relais 8 carte 2 qui est alimenté
et le 9 c'est le relais 1 carte 2...
je vous livre le code
moi je vais me pendre....
View attachment reseau_i2c3.1.bas
 

PieM

Senior Member
enfin... j'ai cablé une seconde carte relais et pcf pour voir le basculement magique de la macro
elle se fait apres le relais 7 et non pas 8...
je demande le 8 c'est le relais 8 carte 2 qui est alimenté
et le 9 c'est le relais 1 carte 2...
je vous livre le code
moi je vais me pendre....
C'est normal: y a un bug. Je cherche ce soir.
Attendez avant d'abîmer une corde !

Trouvé: remplacer adr_pcf = N/8 + $20 <<1 par adr_pcf = N-1/8 + $20 <<1
 
Last edited:

zeltron

Senior Member
nickel! super merci! heureusement que la corde à cassée
ça ma permis de voir cette merveille
la macro doit pouvoir aussi servir pour les relais je pense non?
il suffit de refaire la même sans la pause aiguillage?

je ne vais pas passer au plan B: le gaz!
c'est toujours désagréable pour les voisins....
 

PieM

Senior Member
nickel! super merci! heureusement que la corde à cassée
ça ma permis de voir cette merveille
la macro doit pouvoir aussi servir pour les relais je pense non?
il suffit de refaire la même sans la pause aiguillage?
Ben oui même punition pour les relais.
Mais sans la pause et sans la RAZ à $FFFF et sans perdre l'état de ceux qui sont actionnés!
faudra voir aussi pour les leds.
Mais elles doivent être directement conformes à l'état des pcf stocké dans la RAM.

Vais vérifier.
 

PieM

Senior Member
petit bilan:

42 bobines ça fait 3 pcf
80 leds ça fait 40 sorties donc 3pcf
sur le bus I2C il reste la place pour 2 pcf soit 16 relais

c'est ça ?
 

zeltron

Senior Member
alors je pensais mettre 3 leds par aiguillages une pour chaque position droite ou gauche
et la 3em pour visualisation du temps de commutation pour chaque aiguillage
donc déjà 63 mais avec votre super idée d'opto sur la ligne d'alimentation
cette 3em led n'est plus nécessaire donc 21 leds en moins
et le signal opto peut être récupéré pour une securité qui va couper cette même alimentation aiguillage
le second picaxe pourrait même s'en occuper
comme ça si le 1er picaxe est planté y'a redondance...?

je pensais mettre une led pour visualiser les voies d'arret en gare (qui sont gérées par les relais comme les voies de garages,
les relais coupant une section de pleine voies, coupées apres le ralentissement pwm)
mais la encore pas besoin de carte pcf je vais directement récupéré l'alimentation des leds sur les cartes sainsmart
en // avec les leds cms existantes

il y a aussi 5 dételeurs dont je n'ai pas parlé car ils se comportent comme des aiguillages
sauf qu'ils ne possedent qu'une bobine

et il y a aussi la détection des trains dans certaine portions de voies
arret en gare, boucle de retournement, et voies d'évitement
je pense que le préferable c'est une détection à des endroits stratégique (une dizaine d'endroit max)
par opto coupleur, (j'ai déjà équipé les voies avec des pédales de détection mais je n'ai aucune confiance sur ces systemes,même neuf ils sont déjà hs...)

je pense qu'il est préférable de garder et de se servir de l'information conso de courant pour mettre en place
la sécurité dont vous m'avez parlé en cas de cour-circuit plutot que la mettre oeuvre pour la presence train
sinon il faudrait autant de l298 que de portion de voie à détecter...

comme il reste de nombreuse entré/sortie de libre sur picaxe je pense que les 2 picaxes pourront s'occuper de ces 2 derniers paragraphes

donc je pense que les 8 cartes pcf suffiront
 
Last edited:

PieM

Senior Member
Donc 3 pcf utilisés pour les aiguillages , adresse i2c 0,1,et 2 pour 24 aiguillages possibles
ensuite 1.5 pcf utilisés pour les leds d'aiguillage soit 48 leds possibles adresse i2c, 3 et 4

il reste adresse 4 un 1/2 pcf utilisable.

ajouter dans les variables:

Code:
[color=Blue]Symbol [/color][color=Purple]lsB_temp      [/color][color=DarkCyan]= [/color][color=Purple]b52 [/color][color=Green]'composante de Var_temp[/color]
[color=Blue]Symbol [/color][color=Purple]msB_temp      [/color][color=DarkCyan]= [/color][color=Purple]b53 [/color][color=Green]'composante de Var_temp[/color]
ce ne sont que des variables dejà utilisée par Var_temp (même bytes)

modifier la macro!

Code:
[color=Navy]#MACRO [/color][color=Black]act_aiguille[/color][color=Blue]([/color][color=Purple]N[/color][color=Black],[/color][color=Purple]sens[/color][color=Blue])

   [/color][color=Purple]dat [/color][color=DarkCyan]= [/color][color=Navy]$FFFF 
   [/color][color=Purple]adr_pcf [/color][color=DarkCyan]= [/color][color=Purple]N[/color][color=DarkCyan]-[/color][color=Navy]1[/color][color=DarkCyan]/[/color][color=Navy]8 [/color][color=DarkCyan]+ [/color][color=Navy]$20 [/color][color=DarkCyan]<<[/color][color=Navy]1
   [/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]N[/color][color=DarkCyan]//[/color][color=Navy]8 [/color][color=DarkCyan]- [/color][color=Navy]1 [/color][color=DarkCyan]max [/color][color=Navy]7
   [/color][color=Purple]adr_mem [/color][color=DarkCyan]= [/color][color=Purple]adr_pcf[/color][color=DarkCyan]/[/color][color=Navy]2 [/color][color=DarkCyan]+ [/color][color=Navy]28 [/color][color=Green]'calcul de l'adresse memoire en RAM
   [/color][color=Purple]bit0 [/color][color=DarkCyan]= [/color][color=Purple]sens
   [/color][color=Blue]peek [/color][color=Purple]adr_mem[/color][color=Black], [/color][color=Purple]var_temp [/color][color=Green]'on va chercher le byte d'etat
   [/color][color=Blue]if [/color][color=Purple]bit0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then 
      setbit [/color][color=Purple]var_temp [/color][color=Black], [/color][color=Purple]adr_bit [/color][color=Green]'on met a 1 (droite) le bon bit adr_bit
   [/color][color=Blue]else
      clearbit [/color][color=Purple]var_temp [/color][color=Black], [/color][color=Purple]adr_bit [/color][color=Green]'on met a 0 (gauche) le bon bit adr_bit
      [/color][color=Purple]adr_bit [/color][color=DarkCyan]= [/color][color=Purple]adr_bit [/color][color=DarkCyan]+ [/color][color=Navy]8 [/color][color=Green]'et on change l'adresse du bit de cde pour etre dans b45 
   [/color][color=Blue]endif
   poke [/color][color=Purple]adr_mem[/color][color=Black], [/color][color=Purple]var_temp [/color][color=Green]' on enregistre le nouvel etat dans la variable du byte d'?tat
   [/color][color=Blue]clearbit [/color][color=Purple]dat[/color][color=Black],[/color][color=Purple]adr_bit [/color][color=Green]'on met a 0 le bit de dat pour la cde. Il sera dans b44 ou b45 selon le sens.
   [/color][color=Blue]hi2cout [PLAIN][[/PLAIN][/color][color=Purple]adr_pcf[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]([/color][color=Purple]b44[/color][color=Black],[/color][color=Purple]b45[/color][color=Blue]) [/color][color=Green]' commande la bobine N a droite ou a gauche
   [/color][color=Blue]pause pause_aig
   hi2cout [PLAIN][[/PLAIN][/color][color=Purple]adr_pcf[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]([/color][color=Navy]$FF[/color][color=Black],[/color][color=Navy]$FF[/color][color=Blue]) [/color][color=Green]'RAZ cde bobine
   [/color][color=Blue]gosub [/color][color=Black]act_led:[/color]
[color=Navy]#ENDMACRO[/color]
ajouter ce petit s/prog à la fin:

Code:
[color=Black]act_led:[/color]
[color=Blue]peek [/color][color=Navy]60[/color][color=Black], [/color][color=Purple]lsB_temp [/color][color=Green]'adresse byte d'etat du groupe aig 1 a 8[/color]
[color=Blue]peek [/color][color=Navy]61[/color][color=Black], [/color][color=Purple]msB_temp [/color][color=Green]'adresse byte d'etat du groupe aig 9 a 16[/color]
[color=Blue]hi2cout [PLAIN][[/PLAIN][/color][color=Navy]%01000110[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]([/color][color=Purple]lsB_temp[/color][color=Black],[/color][color=Purple]msB_temp[/color][color=Blue]) [/color][color=Green]'mise à jour bloc led 3e pcf[/color]
[color=Blue]peek [/color][color=Navy]62[/color][color=Black], [/color][color=Purple]lsB_temp [/color][color=Green]'adresse byte d'etat du groupe aig 17 a 24[/color]
[color=Blue]peek [/color][color=Navy]63[/color][color=Black], [/color][color=Purple]msB_temp [/color][color=Green]'non utilisé pour l'instant[/color]
[color=Blue]hi2cout [PLAIN][[/PLAIN][/color][color=Navy]%01001000[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]([/color][color=Purple]lsB_temp[/color][color=Black],[/color][color=Purple]msB_temp[/color][color=Blue]) [/color][color=Green]'mise à jour bloc led 4e pcf[/color]
[color=Blue]return[/color]

j'ai optimisé les emplacements mémoire en RAM;
l'enregistrement du 1er groupe d'aiguille se fait en mem 60

le s/prog met à jour l'état des leds à chaque changement d'aiguillage.

au départ toutes les leds seront forcément dans un état ne correspondant pas à la pos aiguille.

donc il est peut être interessant tout de même de mettre tout dans un état connu. par exemple tout à droite.

par :
Code:
[color=Blue]for [/color][color=Purple]boucle [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]21[/color]
[color=Black]act_aiguille[/color][color=Blue]([/color][color=Purple]boucle[/color][color=Black],[/color][color=Blue]droite)
next[/color]
 

zeltron

Senior Member
eh bé vous êtes productif!
j'ai du boulo pour demain et plusieurs jours même! le temps de faire un synoptique
j'en ai déjà la langue qui bave de tester ça! merci!
 

zeltron

Senior Member
ensuite 1.5 pcf utilisés pour les leds d'aiguillage soit 48 leds possibles adresse i2c, 3 et 4
bé non chef la il faut 3 cartes pcf pour 48 leds ?
ce qui reste 2 cartes pcf pour 32 relais ça doit être juste mais ça va aller
 

PieM

Senior Member
bé non chef la il faut 3 cartes pcf pour 48 leds ?
ce qui reste 2 cartes pcf pour 32 relais ça doit être juste mais ça va aller
Ben non chef puisque pour 24 aiguillages il y a 48 leds mais deux à deux opposées; donc une seule sortie pour deux leds !

Et s'il y a deux picaxes, il faut savoir ce que chacun va faire car ça peut doubler les possibilités si on a deux bus I2C en //
Un petit schéma serait bien ...
 

zeltron

Senior Member
ah vi j"avais oublié le coup stratégique des leds
si les bus sont en // il n'y as pas de communication possible entre les 2 picaxes un ?
je n'en vois pas l'utilité de toutes façon
 

PieM

Senior Member
ah vi j"avais oublié le coup stratégique des leds
si les bus sont en // il n'y as pas de communication possible entre les 2 picaxes un ?
je n'en vois pas l'utilité de toutes façon
Il y a toujours la communication possible par d'autres moyens que l'I2C, si c'est nécessaire.
 

zeltron

Senior Member
voici le tco que j'ai mitonné depuis 2 jours...
le tracé du circuit est plus clair comme ça...
à l'echelle sur une carte cablage rapide de 14x10 cm
ensuite ferai un petit crobar synoptique-toto2.jpg
en bleu les leds 3 mm aiguillages
en rouge les led de détection opto position train
en vert les led d'isolation des voies
au milieu la led rouge 5 mm de temps de commutation aiguillage
 
Last edited:

PieM

Senior Member
en bleu les leds 3 mm aiguillages
en rouge les led de détection opto position train
en vert les led d'isolation des voies
au milieu la led rouge 5 mm de temps de commutation aiguillage
Superbe ! un vrai pro...
ça serait bien sur une tablette ...
bon on verra plus tard !
 

zeltron

Senior Member
alors il y 2 logiciels
le 1er pour les voies c'est anyrail 5 utilisation en version gratuite limité à 50 rails
le second pour les couleurs et la mise en forme c'est photoshop
photoshop je maitrise depuis 15 ans alors je préfere utiliser ça même pour le schéma de l'usine à gaz que voici
schema_principe1.jpg
 

BESQUEUT

Senior Member
alors il y 2 logiciels
le 1er pour les voies c'est anyrail 5 utilisation en version gratuite limité à 50 rails
le second pour les couleurs et la mise en forme c'est photoshop
photoshop je maitrise depuis 15 ans alors je préfere utiliser ça même pour le schéma de l'usine à gaz que voici
View attachment 17949
Autant je suis partisant de limiter au minimum le nombre de Picaxes pour des fonctions en interaction, ceci de façon à limiter ou à supprimer les problèmes de communication, autant je ne comprends pas pourquoi les alim PWM seraient sur ces mêmes Picaxes :
- à ma connaissance, il n'y a strictement aucune interaction entre ces alims et le reste de la gestion,
- par contre, il me semble opportun de pouvoir régler la vitesse sans tenir compte des tâches en cours et surtout sans avoir à passer par le menu ad hoc...
Ces alim auront fort à faire en temps réel pour détecter les courts-circuits et si nécessaire couper le courant. je ne vois pas comment un Picaxe occupé à faire autre chose pourrait faire ça en parallèle.
 

zeltron

Senior Member
Autant je suis partisant de limiter au minimum le nombre de Picaxes pour des fonctions en interaction, ceci de façon à limiter ou à supprimer les problèmes de communication, autant je ne comprends pas pourquoi les alim PWM seraient sur ces mêmes Picaxes :
- à ma connaissance, il n'y a strictement aucune interaction entre ces alims et le reste de la gestion,
- par contre, il me semble opportun de pouvoir régler la vitesse sans tenir compte des tâches en cours et surtout sans avoir à passer par le menu ad hoc...
Ces alim auront fort à faire en temps réel pour détecter les courts-circuits et si nécessaire couper le courant. je ne vois pas comment un Picaxe occupé à faire autre chose pourrait faire ça en parallèle.
ok pourquoi pas pour l'instant il n'y a rien d'arreter à ce sujet
 

PieM

Senior Member
ok pourquoi pas pour l'instant il n'y a rien d'arreter à ce sujet
Je ne suis pas un pro des réseaux ferrés, mais je pensais que la gestion de la marche des trains faisait partie de la gestion du réseau ...
sinon le 40X2 va s'occuper des aiguillages à plein temps ?
Il me semblait qu'il avait été dit que le réglage de vitesse en manuel se faisait par potentiomètre en sens et vitesse avec des trimmers numériques. mais j'ai peut être zappé quelque chose.
La détection de courant peut se faire très simplement en utilisant les comparateurs et une interruption, ce qui ne consomme pas beaucoup de ressources du picaxe.
 

zeltron

Senior Member
Je ne suis pas un pro des réseaux ferrés,
.
A ce rythme vous allez le devenir!
mais je pensais que la gestion de la marche des trains faisait partie de la gestion du réseau ...
sinon le 40X2 va s'occuper des aiguillages à plein temps ?
oui pour les 2 phrases
les trains circulent sur les voies par alternance
voici un scenario possiblesynoptique-toto2.jpg
un train est en gare le nez arreté sur le chiffre 11 en noir, il demarre lentement prend la ligne l1
il passe sur la detection point rouge positionné avant l'aiguillage 18 en position tout droit
le relais coupe la ligne en 14 chiffre noir le train est arreté apres ralentissement
un second train arréte en position chiffre 13 noir demarre alors apres ciommutation du bon relais , il peut être garé nez en sens inverse et repartir vers l'aiguillage 18 parce que le pwm s'est inversé
et venir se garer en gare sur le chiffre 12 noir ce qui pourrait déclencher
le train en 14 apres inversion de polarité pour pour passer sur l'aiguillage 21 dévie c'est une boucle de retournement (il faut un peu de gestion électrique la sinon ya court-circuit de l'alim voir explication sur le liens ci dessous, quelque soit le sens de polaritée le train continue dans le même sens car cette portion est isolé du reste et cablée avec l'equivalent d'un pont de graetz)
il doit s'arreter sur cette boucle l'alimentation doit inverser les polaritées de la voie pendant ce temps
son nez est maintenant vers l'aiguillage 18 mais y'a déjà un train stationné en 12 noir (le quai doit se trouver à sa droite convention des teutons...) il vient se stationner en 10 noir
pendant ce temps un autre train sur la ligne 2 secondes alims pwm tourne et jongle d'autre façon sur des itinéraires possibles

ce tracé offre déjà beaucoup de possibilité
un vrai casse tête comme vous l'aimez!

maintenant je ne sais pas si le second picaxe peut gérer les différents aiguillages et les pwm en même temps?
de toute façon pas de pb s'il faut ajouter d'autre truc ou en retirer...

il va me faloir un peu de temps pour le synoptique, je vous propose de passer sur le pwm sur l'autre post, y'a déjà le cahier des charges
et il ne fait pas 60 pages.... et j'ai le matos...

http://www.beuret.net/question-6_boucle/
j'utilise la variante 1
 

BESQUEUT

Senior Member
Je ne suis pas un pro des réseaux ferrés, mais je pensais que la gestion de la marche des trains faisait partie de la gestion du réseau ...
sinon le 40X2 va s'occuper des aiguillages à plein temps ?
Il me semblait qu'il avait été dit que le réglage de vitesse en manuel se faisait par potentiomètre en sens et vitesse avec des trimmers numériques. mais j'ai peut être zappé quelque chose.
La détection de courant peut se faire très simplement en utilisant les comparateurs et une interruption, ce qui ne consomme pas beaucoup de ressources du picaxe.
Voir ici ; post #18
A priori le Picaxe ne s'occupe que de la commutation des voies, la vitesse et le sens étant réglés en manuel.
Mais ça a peut être changé ?
Si tout automatique, il faut savoir s'il y a une seule configuration figée par programme ou si plusieurs modes de fonctionnement doivent être mémorisés, y compris peut-être un mode "manuel"...
 

PieM

Senior Member
Si le train démarre ou ralenti, ou s'arrête , c'est bien en fonction de l'état des voies et de leur mise sous tension et de la détection de présence ...
donc la commande marche arrêt sens et vitesse par les l298 est bien liée.
gérer les aiguillages ce n'est qu'envoyer des commandes de temps en temps et de s'assurer de la cohérence de leur état en fonction du circuit choisi je pense.

maintenant je ne sais pas si le second picaxe peut gérer les différents aiguillages et les pwm en même temps?
Commander un pwm c'est une ligne de code et une action qui est en tâche de fond, donc sans effet sur le programme.
 

BESQUEUT

Senior Member
Commander un pwm c'est une ligne de code et une action qui est en tâche de fond, donc sans effet sur le programme.
Résumons : ce 40X2 N°2 :
- gère les frappes au clavier,
- mets à jour l'afficheur,
- lit les potentiomètres pour les PWM,
- gère deux pwm en tâche de fond,
- détecte les courts-circuits par interruption et si nécessaire, après temporisation coupe le courant,
- écrit en I2C pour commander les aiguillages, les relais et les LEDs,
- reçoit en background les ordres venant de l'autre Picaxe.
- détecte le passage des convois par barrière photo-électrique (ou pédale)
 

BESQUEUT

Senior Member
Je pense même qu'il va faire bien plus...
quel est le problème ? le temps de cycle est de combien ?
Non pas de soucis : ça doit le faire.
Pour le temps de cycle, outre la réactivité du clavier et des potars, il faudrait savoir en combien de temps on doit arrêter une loco qui franchi une barrière photo-électrique. A vue de nez, un dizième de s ça doit le faire.
oui ok avec ça sauf cette ligne il ne recoit pas d'ordre
est ce trop lui demander?
C'est bien le diable s'il n'y a pas une config à faire ou au moins à vérifier quand une loco sort de la plaque tournante, et probablement aussi des choses à synchroniser dans l'autre sens. Autant se réserver un port série au cas où.
 

PieM

Senior Member
C'est bien le diable s'il n'y a pas une config à faire ou au moins à vérifier quand une loco sort de la plaque tournante, et probablement aussi des choses à synchroniser dans l'autre sens. Autant se réserver un port série au cas où.
C'est bien mon avis. Je crois que dans ce projet il faut laisser pas mal d'ouvertures, car j'en connais un qui ne va pas tarder à y prendre goût...
 
Top