positionnement avec un moteur pas à pas

PieM

Senior Member
Je m'attends à une floppée de questions !!
et désolé si ça coince car je n'ai rien testé bien sûr !

Code:
[color=Green]#rem
###########################################
#  Programme de gestion de pont tournant  #  
#  Moteur PaP 200pas - driver EasyDriver  #
#  Date 20141221 revision 1               #
###########################################
#ENDREM[/color]

[color=Navy]#picaxe [/color][color=Black]40X2[/color]

[color=Green]'*********** E/S ********************************[/color]
[color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%01100000       [/color][color=Green]' positionne B.5 et B.6 en sorties

'entrées ------------------------------[/color]
[color=Blue]symbol [/color][color=Purple]FC_opto [/color][color=DarkCyan]=  [/color][color=Purple]pinB.4   [/color][color=Green]'Fin de course opto

'sorties ------------------------------[/color]
[color=Blue]symbol [/color][color=Purple]dir     [/color][color=DarkCyan]=  [/color][color=Purple]pinB.5   [/color][color=Green]'sortie direction[/color]
[color=Blue]symbol pas     [/color][color=DarkCyan]=  [/color][color=Blue]B.6      [/color][color=Green]'sortie pas

'*********** variables **************************[/color]
[color=Blue]symbol [/color][color=Purple]var_temp      [/color][color=DarkCyan]= [/color][color=Purple]w13 [/color][color=Green]'variable temporaire[/color]
[color=Blue]symbol [/color][color=Purple]Pos_actuelle  [/color][color=DarkCyan]= [/color][color=Purple]w12 [/color][color=Green]'position courante[/color]
[color=Blue]symbol [/color][color=Purple]Pos_cible     [/color][color=DarkCyan]= [/color][color=Purple]w11 [/color][color=Green]'position cible[/color]
[color=Blue]symbol [/color][color=Purple]Nb_de_pas     [/color][color=DarkCyan]= [/color][color=Purple]w10 [/color][color=Green]'nombre de pas à realiser

'reserve bits = b0[/color]
[color=Blue]symbol [/color][color=Purple]Sens [/color][color=DarkCyan]= [/color][color=Purple]bit0[/color]

[color=Green]'*********** constantes **************************[/color]
[color=Blue]symbol CW [/color][color=DarkCyan]= [/color][color=Navy]1              [/color][color=Green]'sens horaire[/color]
[color=Blue]symbol CCW [/color][color=DarkCyan]= [/color][color=Navy]0             [/color][color=Green]'sens anti horaire (arbitraire)[/color]
[color=Blue]symbol Vit_lente  [/color][color=DarkCyan]=  [/color][color=Navy]100   [/color][color=Green]'predefini vitesse lente[/color]
[color=Blue]symbol Vit_rapide [/color][color=DarkCyan]=  [/color][color=Navy]20    [/color][color=Green]'et vitesse rapide

'*********** memorisation en EEPROM **************
'*****Table des positions des voies mémorisees ***[/color]
[color=Blue]eeprom  [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]0[/color][color=Black],[/color][color=Navy]125[/color][color=Black],[/color][color=Navy]256[/color][color=Black],[/color][color=Navy]125[/color][color=Black],[/color][color=Navy]0[/color][color=Black],[/color][color=Navy]126[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Navy]162[/color][color=Blue])[/color]

[color=Green]'*********** Macros ******************************
'definition macro avec paramètres; Nb de pas, sens, période entre pas.[/color]
[color=Navy]#MACRO [/color][color=Black]PaP[/color][color=Blue]([/color][color=Black]Nb,[/color][color=Purple]Sens[/color][color=Black],Per[/color][color=Blue])
   [/color][color=Purple]dir [/color][color=DarkCyan]= [/color][color=Purple]Sens        [/color][color=Green]'affecte 1 ou 0 à dir donc à B.5
   [/color][color=Blue]for [/color][color=Purple]var_temp [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Black]Nb  [/color][color=Green]'envoie Nb pulses au circuit
      [/color][color=Blue]pulsout pas[/color][color=Black],[/color][color=Navy]1        [/color][color=Green]'driver
      [/color][color=Blue]pause [/color][color=Black]Per   [/color][color=Green]' pause en X fois 0.5ms
   [/color][color=Blue]next
   [/color][color=Purple]Pos_actuelle [/color][color=DarkCyan]= [/color][color=Purple]sens [/color][color=DarkCyan]* [/color][color=Navy]2 [/color][color=DarkCyan]* [/color][color=Black]Nb [/color][color=DarkCyan]+ [/color][color=Purple]Pos_actuelle [/color][color=DarkCyan]- [/color][color=Black]Nb [/color][color=Green]'actualisation position du pont
   'si sens =1 on ajoute Nb pas à Pos_actuelle sinon on lui retranche Nb pas ;-)[/color]
[color=Navy]#ENDMACRO[/color]

[color=Green]'************  initialisation   *******************[/color]
[color=Blue]setfreq m16             [/color][color=Green]'fréquence 16MHz interne

'##############   Programme principal   ############################[/color]
[color=Black]Prog_princ:

   [/color][color=Blue]gosub [/color][color=Black]Init_PaP[/color]
[color=Blue]do
   [/color][color=Purple]pos_cible [/color][color=DarkCyan]= [/color][color=Navy]32800
   [/color][color=Blue]gosub [/color][color=Black]Mise_en_position
   [/color][color=Purple]pos_cible [/color][color=DarkCyan]= [/color][color=Navy]30000
   [/color][color=Blue]pause [/color][color=Navy]6000
   [/color][color=Blue]gosub [/color][color=Black]Mise_en_position
   [/color][color=Purple]pos_cible [/color][color=DarkCyan]= [/color][color=Navy]35000
   [/color][color=Blue]gosub [/color][color=Black]Mise_en_position
   [/color][color=Blue]pause [/color][color=Navy]10000[/color]
[color=Blue]loop[/color]
[color=Green]'################### SOUS PROGRAMMES ################################
'####################################################################[/color]
[color=Black]Init_PaP:   [/color][color=Green]'s/Programme initialisation du moteur pas a pas

   [/color][color=Purple]sens [/color][color=DarkCyan]= [/color][color=Blue]cw
   do while [/color][color=Purple]FC_opto [/color][color=DarkCyan]= [/color][color=Navy]1    [/color][color=Green]'tout pendant que l'opto est oculte
      [/color][color=Blue]pulsout pas[/color][color=Black],[/color][color=Navy]1        [/color][color=Green]'on tourne en grande vitesse sens cw
      [/color][color=Blue]pause Vit_rapide
   loop

   [/color][color=Black]PaP[/color][color=Blue]([/color][color=Navy]50[/color][color=Black],[/color][color=Blue]cw[/color][color=Black],[/color][color=Blue]Vit_rapide)   [/color][color=Green]'la fente detectee, on passe au-dela - normalement 26 pas suffisent pour 1mm

   [/color][color=Purple]sens [/color][color=DarkCyan]= [/color][color=Blue]ccw              [/color][color=Green]'puis on revient en arrière
   [/color][color=Blue]Do while [/color][color=Purple]FC_opto [/color][color=DarkCyan]= [/color][color=Navy]1    [/color][color=Green]'en vitesse très lente jusqu'a detection du bord de fente.
      [/color][color=Blue]pulsout pas[/color][color=Black],[/color][color=Navy]1
      [/color][color=Blue]pause Vit_lente
   loop
   [/color][color=Purple]Pos_actuelle [/color][color=DarkCyan]= [/color][color=Navy]32000    [/color][color=Green]'la détection faite, on initialise le compteur de pas à 32000[/color]
[color=Blue]return[/color]

[color=Green]'#####################################################################[/color]
[color=Black]Mise_en_position:  [/color][color=Green]'s/Programme calcul du nombre de pas a faire et commande du moteur. 

   [/color][color=Blue]If [/color][color=Purple]pos_cible [/color][color=DarkCyan]> [/color][color=Purple]pos_actuelle [/color][color=Blue]then          [/color][color=Green]'si la future position est dans le sens positif
      [/color][color=Purple]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Purple]pos_cible [/color][color=DarkCyan]- [/color][color=Purple]pos_actuelle   [/color][color=Green]'calcul du nombre de pas
      [/color][color=Purple]sens [/color][color=DarkCyan]= [/color][color=Blue]cw                              [/color][color=Green]'et du sens
   [/color][color=Blue]else
      [/color][color=Purple]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Purple]pos_actuelle [/color][color=DarkCyan]-  [/color][color=Purple]pos_cible  [/color][color=Green]'sinon , on fait l'inverse
      [/color][color=Purple]sens [/color][color=DarkCyan]= [/color][color=Blue]ccw
   endif
   [/color][color=Green]'optimisation du sens
   [/color][color=Blue]if [/color][color=Purple]Nb_de_pas [/color][color=DarkCyan]> [/color][color=Navy]4800 [/color][color=Blue]then            [/color][color=Green]'Si on depasse 1/2 tour
         [/color][color=Purple]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Navy]9600 [/color][color=DarkCyan]- [/color][color=Purple]Nb_de_pas  [/color][color=Green]'on prends le complement 
         [/color][color=Purple]sens [/color][color=DarkCyan]= [/color][color=Purple]sens [/color][color=DarkCyan]+ [/color][color=Navy]1               [/color][color=Green]'et on inverse le sens 
   [/color][color=Blue]endif
   [/color][color=Black]PaP[/color][color=Blue]([/color][color=Purple]Nb_de_pas[/color][color=Black],[/color][color=Purple]sens[/color][color=Black],[/color][color=Blue]vit_lente)       [/color][color=Green]'Action du moteur[/color]
[color=Blue]return[/color]
 
Last edited:

zeltron

Senior Member
aie voila le retour de la gifle:D
pour la floppée de questions je vais attendre de digérer!
une indigestion avant le foie gras ça commence bien ;)
je souhaite un joyeux noel à tous les membres de ce sympathique forum!

ça ne marche pas comme ça devrait
le pont ne tourne que dans un sens à la vitesse d'un escargot anémique...
au passage de la fente mon voltmetre placé en b4 passe bien de 5v à 0v mais le pont continue à tourner....
 

zeltron

Senior Member
j'ai parlé trop vite peut être que ça marche finalement
le pb c'est que les vitesses de déplacements pour la recherche 0 sont tellement longue que c'est tres penible de suivre aussi longtemps
avec le voltmetre j'ai du tomber dans une phase sans recherche 0
il faut augmenter la vitesse d'initialisation même si ce n'est pas réaliste
ensuite pour le déplacement en mode normale les vitesses sont ok
 

PieM

Senior Member
j'ai parlé trop vite peut être que ça marche finalement
le pb c'est que les vitesses de déplacements pour la recherche 0 sont tellement longue que c'est tres penible de suivre aussi longtemps
avec le voltmetre j'ai du tomber dans une phase sans recherche 0
il faut augmenter la vitesse d'initialisation même si ce n'est pas réaliste
ensuite pour le déplacement en mode normale les vitesses sont ok
Oui, alors remplacer la vitesse par ça:

Code:
[color=Black]Init_PaP:   [/color][color=Green]'s/Programme initialisation du moteur pas a pas

   [/color][color=Purple]sens [/color][color=DarkCyan]= [/color][color=Blue]cw
   do while [/color][color=Purple]FC_opto [/color][color=DarkCyan]= [/color][color=Navy]1    [/color][color=Green]'tout pendant que l'opto est oculte
      [/color][color=Blue]pulsout pas[/color][color=Black],[/color][color=Navy]1        [/color][color=Green]'on tourne en grande vitesse sens cw
      [/color][color=Blue][COLOR="#FF0000"]pause 1[/COLOR]
   loop[/color]
 

PieM

Senior Member
ça ne pouvait pas marcher, j'avais un bug avec un sens de rotation...
celui ci devrait marcher, aux vitesses près à ajuster.

Code:
[color=Green]#rem
###########################################
#  Programme de gestion de pont tournant  #  
#  Moteur PaP 200pas - driver EasyDriver  #
#  Date 20141221 revision 2               #
###########################################
#ENDREM[/color]

[color=Navy]#picaxe [/color][color=Black]40X2[/color]

[color=Green]'*********** E/S ********************************[/color]
[color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%01100000       [/color][color=Green]' positionne B.5 et B.6 en sorties

'entrées ------------------------------[/color]
[color=Blue]symbol [/color][color=Black]FC_opto [/color][color=DarkCyan]=  [/color][color=Purple]pinB.4   [/color][color=Green]'Fin de course opto

'sorties ------------------------------[/color]
[color=Blue]symbol [/color][color=Black]dir     [/color][color=DarkCyan]=  [/color][color=Purple]pinB.5   [/color][color=Green]'sortie direction[/color]
[color=Blue]symbol [/color][color=Black]pas     [/color][color=DarkCyan]=  [/color][color=Blue]B.6      [/color][color=Green]'sortie pas

'*********** variables **************************[/color]
[color=Blue]symbol [/color][color=Black]var_temp      [/color][color=DarkCyan]= [/color][color=Purple]w13 [/color][color=Green]'variable temporaire[/color]
[color=Blue]symbol [/color][color=Black]Pos_actuelle  [/color][color=DarkCyan]= [/color][color=Purple]w12 [/color][color=Green]'position courante[/color]
[color=Blue]symbol [/color][color=Black]Pos_cible     [/color][color=DarkCyan]= [/color][color=Purple]w11 [/color][color=Green]'position cible[/color]
[color=Blue]symbol [/color][color=Black]Nb_de_pas     [/color][color=DarkCyan]= [/color][color=Purple]w10 [/color][color=Green]'nombre de pas à realiser

'reserve bits = b0[/color]
[color=Blue]symbol [/color][color=Black]Sens [/color][color=DarkCyan]= [/color][color=Purple]bit0[/color]

[color=Green]'*********** constantes **************************[/color]
[color=Blue]symbol [/color][color=Black]CW [/color][color=DarkCyan]= [/color][color=Navy]1              [/color][color=Green]'sens horaire[/color]
[color=Blue]symbol [/color][color=Black]CCW [/color][color=DarkCyan]= [/color][color=Navy]0             [/color][color=Green]'sens anti horaire (arbitraire)[/color]
[color=Blue]symbol [/color][color=Black]Vit_lente  [/color][color=DarkCyan]=  [/color][color=Navy]100   [/color][color=Green]'predefini vitesse lente[/color]
[color=Blue]symbol [/color][color=Black]Vit_rapide [/color][color=DarkCyan]=  [/color][color=Navy]20    [/color][color=Green]'et vitesse rapide

'*********** memorisation en EEPROM **************
'*****Table des positions des voies mémorisees ***[/color]
[color=Blue]eeprom  [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]0[/color][color=Black],[/color][color=Navy]125[/color][color=Black],[/color][color=Navy]256[/color][color=Black],[/color][color=Navy]125[/color][color=Black],[/color][color=Navy]0[/color][color=Black],[/color][color=Navy]126[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Navy]162[/color][color=Blue])[/color]

[color=Green]'*********** Macros ******************************
'definition macro avec paramètres; Nb de pas, sens, période entre pas.[/color]
[color=Navy]#MACRO [/color][color=Black]PaP[/color][color=Blue]([/color][color=Black]Nb,Sens,Per[/color][color=Blue])
   [/color][color=Black]dir [/color][color=DarkCyan]= [/color][color=Black]Sens        [/color][color=Green]'affecte 1 ou 0 à dir donc à B.5
   [/color][color=Blue]for [/color][color=Black]var_temp [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Black]Nb  [/color][color=Green]'envoie Nb pulses au circuit
      [/color][color=Blue]pulsout [/color][color=Black]pas,[/color][color=Navy]1        [/color][color=Green]'driver
      [/color][color=Blue]pause [/color][color=Black]Per   [/color][color=Green]' pause en X fois 5µs
   [/color][color=Blue]next
   [/color][color=Black]Pos_actuelle [/color][color=DarkCyan]= [/color][color=Black]sens [/color][color=DarkCyan]* [/color][color=Navy]2 [/color][color=DarkCyan]* [/color][color=Black]Nb [/color][color=DarkCyan]+ [/color][color=Black]Pos_actuelle [/color][color=DarkCyan]- [/color][color=Black]Nb [/color][color=Green]'actualisation position du pont
   'si sens =1 on ajoute Nb pas à Pos_actuelle sinon on lui retranche Nb pas ;-)[/color]
[color=Navy]#ENDMACRO[/color]

[color=Green]'************  initialisation   *******************[/color]
[color=Blue]setfreq m16             [/color][color=Green]'fréquence 16MHz interne

'##############   Programme principal   ############################[/color]
[color=Black]Prog_princ:

   [/color][color=Blue]gosub [/color][color=Black]Init_PaP[/color]
[color=Blue]do
   [/color][color=Black]pos_cible [/color][color=DarkCyan]= [/color][color=Navy]32800
   [/color][color=Blue]gosub [/color][color=Black]Mise_en_position
   pos_cible [/color][color=DarkCyan]= [/color][color=Navy]30000
   [/color][color=Blue]pause [/color][color=Navy]6000
   [/color][color=Blue]gosub [/color][color=Black]Mise_en_position
   pos_cible [/color][color=DarkCyan]= [/color][color=Navy]35000
   [/color][color=Blue]gosub [/color][color=Black]Mise_en_position
   [/color][color=Blue]pause [/color][color=Navy]10000[/color]
[color=Blue]loop[/color]
[color=Green]'#####################################################################[/color]

[color=Black]Init_PaP:   [/color][color=Green]'s/Programmes initialisation du moteur pas a pas

   [/color][color=Black]dir [/color][color=DarkCyan]= [/color][color=Black]cw
   [/color][color=Blue]do while [/color][color=Black]FC_opto [/color][color=DarkCyan]= [/color][color=Navy]1    [/color][color=Green]'tout pendant que l'opto est oculte
      [/color][color=Blue]pulsout [/color][color=Black]pas,[/color][color=Navy]1        [/color][color=Green]'on tourne en grande vitesse sens cw
      [/color][color=Blue]pause [/color][color=Black]Vit_rapide
   [/color][color=Blue]loop

   [/color][color=Black]PaP[/color][color=Blue]([/color][color=Navy]100[/color][color=Black],cw,Vit_rapide[/color][color=Blue])  [/color][color=Green]'la fente detectee, on passe au-dela - normalement 26 pas suffisent pour 1mm

   [/color][color=Black]dir [/color][color=DarkCyan]= [/color][color=Black]ccw               [/color][color=Green]'puis on revient en arrière
   [/color][color=Blue]Do while [/color][color=Black]FC_opto [/color][color=DarkCyan]= [/color][color=Navy]1    [/color][color=Green]'en vitesse très lente jusqu'a detection du bord de fente.
      [/color][color=Blue]pulsout [/color][color=Black]pas,[/color][color=Navy]1
      [/color][color=Blue]pause [/color][color=Black]Vit_lente
   [/color][color=Blue]loop
   [/color][color=Black]Pos_actuelle [/color][color=DarkCyan]= [/color][color=Navy]32000    [/color][color=Green]'la détection faite, on initialise le compteur de pas à 32000[/color]
[color=Blue]return   [/color]
[color=Green]'#####################################################################[/color]

[color=Black]Mise_en_position:  [/color][color=Green]'s/Programme calcul du nombre de pas a faire et commande du moteur. 

   [/color][color=Blue]If [/color][color=Black]pos_cible [/color][color=DarkCyan]> [/color][color=Black]pos_actuelle [/color][color=Blue]then          [/color][color=Green]'si la future position est dans le sens positif
      [/color][color=Black]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Black]pos_cible [/color][color=DarkCyan]- [/color][color=Black]pos_actuelle   [/color][color=Green]'calcul du nombre de pas
      [/color][color=Black]sens [/color][color=DarkCyan]= [/color][color=Black]cw                              [/color][color=Green]'et du sens
   [/color][color=Blue]else
      [/color][color=Black]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Black]pos_actuelle [/color][color=DarkCyan]-  [/color][color=Black]pos_cible  [/color][color=Green]'sinon , on fait l'inverse
      [/color][color=Black]sens [/color][color=DarkCyan]= [/color][color=Black]ccw
   [/color][color=Blue]endif
   [/color][color=Green]'optimisation du sens
   [/color][color=Blue]if [/color][color=Black]Nb_de_pas [/color][color=DarkCyan]> [/color][color=Navy]4800 [/color][color=Blue]then            [/color][color=Green]'Si on depasse 1/2 tour
         [/color][color=Black]Nb_de_pas [/color][color=DarkCyan]= [/color][color=Navy]9600 [/color][color=DarkCyan]- [/color][color=Black]Nb_de_pas  [/color][color=Green]'on prends le complement 
         [/color][color=Black]sens [/color][color=DarkCyan]= [/color][color=Black]sens [/color][color=DarkCyan]+ [/color][color=Navy]1               [/color][color=Green]'et on inverse le sens 
   [/color][color=Blue]endif
   [/color][color=Black]PaP[/color][color=Blue]([/color][color=Black]Nb_de_pas,sens,vit_lente[/color][color=Blue])       [/color][color=Green]'Action du moteur[/color]
[color=Blue]return[/color]
 

zeltron

Senior Member
ah là oui c'est ok! c'est conforme à votre description
recherche du o sens horaire puis retour lent
puis rotation horaire à 30°
puis anti horaire 120°
Et encore anti horaire 30°
Super même avec des années de recherches je n'aurais pas trouvé un code pareil...
 

PieM

Senior Member
ah là oui c'est ok! c'est conforme à votre description
C'est bien. Maintenant il faut absorber le code déjà fait avant l'indigestion de foie gras.
Et réfléchir à la suite du cahier des charges...

Commander le moteur pour programmer les différentes voies,et les mettre en mémoire dans l'ordre ou pas (?).
Commander la rotation du pont : quelle info donner , comment, sur pupitre, par programme préenregistré (?) .
Mise sous tension/hors tension des voies sélectionnées.

etc ...

PS: les angles indiqués 30, 120, 30 sont réels ? si oui, à part le premier 30°, il y a un problème...
 
Last edited:

zeltron

Senior Member
je commence à comprendre le code
pour être plus précis en vocabulaire sur le déplacement après la détection du 0
le pont fait +30° ,-240°,-330 ° c'est des mesures à l'oeil pas au rapporteur
normalement ça doit être 30°, 75°, 112° Si j'ai compris non?
pour la suite je pense câbler un potentiometre en entrée analogique
quelques boutons poussoirs sur une autre entrée analogique
comme nous avions vu précédement
je verrai bien un menu special en appuyant sur 2 boutons poussoirs en même temps
pour une acquisition semi-automatique des emplacements des voies
car une programmation directement dans le programme des emplacements pas/voies,
si en ce moment en étant dans le mouvement c'est possible, par la suite un autre manipulateur que moi doit pouvoir reprogrammer les positions en cas par exemple de dévissage poulie ou changement courroie etc...
exemple le pont tourne à basse vitesse quand la position d'un voie est en face on appuie sur un boutons on rentre le numéro de voie soit par la rotation du potentiometre (qui allume une led placé à coté de la voie) soit par un clavier (je ne pense pas pouvoir echapper au clavier car il sera bien pratique pour commander les aiguillages par leurs numeros en manuel par exemple) puis on valide la mémorisation
pour ce qui est de la vitesse de rotation les vrais plaques tournantes sont à 1 tour pour 4 minutes!
 
Last edited:

PieM

Senior Member
normalement ça doit être 30°, 75°, 112° Si j'ai compris non?
tout à fait !

ce que je fais couramment:

1 potard et un BP; on appuie sur le BP Et on sélectionne un item du menu avec le potard
relâchement du BP: validation du menu
> l'action sur le pot ou sur le BP séparément ne provoque aucune action (par sécurité)
dans ce sous menu, on change les valeurs avec le potard, et on valide avec le BP.

le pont tourne à basse vitesse quand la position d'une voie est en face on appuie sur un boutons
difficile d'être précis si on fait ça à la volée !

Pour ce qui est du déplacement du pont pour mémorisation, le potard serait utilisé pour le déplacer plus ou moins rapidement dans un sens ou l'autre :
à mi course, une zone neutre avec arrêt du moteur. de part et d'autre, action du PaP à vitesse variable pour positionnement précis.
une fois la voie en position, on definit le N° de voie par le potard et l'afficheur ou au clavier; on valide et ça mémorise en eeprom.
Attention qu'à ce moment si la visu se fait par led, il sera nécessaire d'avoir une multitude de sorties affectées uniquement à ces leds, contrairement à la fonction normale ou les leds peuvent être commandées par les sorties liées au relais de mises sous tension des voies.

Suite au changement de courroie ou un démontage, il est possible également de regénérer par calcul, tous les emplacements par décalage de l'origine, en recalant juste une voie.
 

zeltron

Senior Member
ok c'est bien comme ça
mais je ne pense pas que les leds peuvent être alimentées par les relais par quel technomogie? il n'y a qu'un contact par relais
en effet admettons 25 voies autour du pont
les 25 relais ne peuvent être qu'une prédisposition à l'alimentation des voies
quand le pont est en face de la position choisie il doit commuter un relais alimentation général placé en série avec ces 25 relais
de prédisposition pour faire passer une alimentation train pwm dans la voie
et il faut encore un second relais (voire 2 relais en // car malheureusement 1 rt ) en serie sur le relais alimentation général
qui servira à l'inversion de l'alimentation pwm pour faire sortie ou entrer le train...
bien compliqué tout ça...
 

PieM

Senior Member
mais je ne pense pas que les leds peuvent être alimentées par les relais par quel technomogie? il n'y a qu'un contact par relais
A partir du moment ou un circuit, picaxe ou expandeur est capable d'alimenter une led en sortie, il est capable d'alimenter une led plus un opto coupleur en série, si la somme des Vf est inférieure à la tension de sortie sous le courant demandé (5 à 15 mA)
Pas besoin d'un contact de relais pour ça.

et il faut encore un second relais (voire 2 relais en // car malheureusement 1 rt ) en serie sur le relais alimentation général
qui servira à l'inversion de l'alimentation pwm pour faire sortie ou entrer le train...
Merci de préciser en quoi consiste la commande des moteurs des locos... en particulier tension courant car il y a d'autres solutions que des relais.
 

zeltron

Senior Member
l'alimentation généralement se fait en tension continue par les rails
en echelle z c'est de 0v à 8v max mais c'est mieux de pouvoir monter un peu plus jusqu'a 15v pour dégripper les moteurs endormie par un non fonctionnement pendant plusieurs années
l'intensité et en dessous de 500mA pour une loco mais il peut y en avoir 2 ou 3 sur la voie pour tracter en serie les longs convoies

sinon le must c'est les alimentations pulsées (des hacheurs MLI)
pour les fréquences c'est la foire à la saucisse de 25hz à 50Khz
l'essentiel et d'avoir une bonne force de traction à basse vitesse et de ne pas trop entendre la fréquence dans le moteur
ne pas oublier que le moteur mesure moins 1 cm2
perso j'ai réalisé cette alimentation y'a tres longtemps elle est vraiment sympa
http://gayam.perso.neuf.fr/electro2.html
évidement maintenant avec les picaxes y'a moyen de dépoussierer le schéma...
ne 555 et u 741...
l'essentiel est de pouvoir varier le rapport cyclique en auto pour accelerer ou ralentir et d'avoir aussi le rélage en manuel
ce qui est sympa aussi c'est d'avoir une info presence loco sur la voie
par détection de consommation courant moteur
parceque les portions de voies peuvent être isolées entre elles par des eclisses isolantes il peut donc y avoir plusieurs cantons et train sur une seule lignes
finalement les trains électrique ce n'est pas pour les enfants mais pour les papys gaga!
 
Last edited:

PieM

Senior Member
D'où l'intérêt d'avoir toutes les infos le plus tôt possible!
Car le problème se résume à alimenter de 1 à 3 moteurs en // donc 0.5 à 1.5A, sous 15V maxi, avec inversion de la tension pour le sens de rotation, en PWM variable avec feed back du courant consommé.

Alors tout cela se fait sans aucun relais avec un seul composant piloté directement par un picaxe: le L298, capable d'alimenter deux voies simultanément.
C'est un double pont en H avec une entrée permettant le PWM et une connexion pour une R de mesure du courant sur chaque voie. voir ICI

L'alim réalisée auparavant, aujourd'hui se traduirait par un simple MosFet en remplacement du 3055 , attaqué directement par une sortie PWM du picaxe.
 

zeltron

Senior Member
décidement vous avez encore beaucoup des ces friandises amuse gueule? ;)

ok super ça c'est pour l'alimentation des voies principales!
mais il faut bien un relais par voies de garage autour du pont non?
 

PieM

Senior Member
décidement vous avez encore beaucoup des ces friandises amuse gueule? ;)

ok super ça c'est pour l'alimentation des voies principales!
mais il faut bien un relais par voies de garage autour du pont non?
Mais les voies de garage, il faut bien les alimenter aussi en marche avant/arrière et en vitesse, non ?

Avec des relais pour chaque voie, il faut 2 relais 1RT (un par rail) ou un 2 RT , plus une alim puissance en PWM.
 

zeltron

Senior Member
oui il faut alimenter les voies de garages en marche/arret/sens/vitesse

je deviens accro au picaxe :rolleyes:
je ne comprends absolument pas la ligne 49 du programme...
Pos_actuelle = sens * 2 * Nb + Pos_actuelle - Nb
 
Last edited:

PieM

Senior Member
je ne comprends absolument pas la ligne 49 du programme...
Pos_actuelle = sens * 2 * Nb + Pos_actuelle - Nb
C'est vrai que c'est un peu vicieux de ma part!

la nouvelle position est l'ancienne à laquelle on ajoute ou soustrait le nombre de pas en fonction du sens qui est 1 ou 0.
1er truc :

quand on écrit valeur = valeur + x en basic, le calcul fait d'abord valeur + x puis l'affecte à valeur . il n'est pas utile de passer par une variable intermédiaire, si on en a pas besoin.
ensuite la logique voudrait qu'on écrive:

if sens = 0 then
Pos_actuelle = Pos_actuelle - Nb
else
Pos_actuelle = Pos_actuelle + Nb
endif

pour éviter des tests j'écris : Pos_actuelle = sens * 2 * Nb + Pos_actuelle - Nb
Il faut savoir qu'en basic picaxe toutes les opérations se font strictement de gauche à droite.
Donc le calcul fait d'abord sens * 2 * Nb soit 2 Nb ou 0 selon que que sens est à 1 ou a 0
puis on ajoute à la valeur courante de la position
et enfin on soustrait Nb
Donc si sens est 0 on soustrait Nb, sinon on ajoute 1Nb.

Voilou.
 

zeltron

Senior Member

PieM

Senior Member
je pensais avoir trouver le bug mais non snif
sur le précedent programme la macro pap c'était marqué "pauseus Per" pour la période
et le dernier programme "pause per " mais ça ne change rien...
Pause est une pause en ms pour la fréquence de 8MHz sur un 40X2
pauseus est une pause en 10µs pour la fréquence de 8MHz sur un 40X2
ça n'a rien changé car les valeurs Vitesse rapide et lente ont été divisées par 100 entre les deux programmes!

par contre la vitesse lors de la recherche de l'opto au début, est lente alors qu'elle devrait être rapide.

Code:
   do while FC_opto = 1    'tout pendant que l'opto est oculte
      pulsout pas,1        'on tourne en grande vitesse sens cw
      [COLOR="#FF0000"]pause Vit_rapide[/COLOR]
et là elle est bonne ! :confused:
Code:
 PaP(100,cw,Vit_rapide)  'la fente detectee, on passe au-dela
 

PieM

Senior Member
?? le code est déjà celui la...
Ben je le sais, et c'est ce qui m'étonne car les vitesses ne sont pas les mêmes dans ces deux cas ...

Je viens de faire le même montage avec un moteur sur un 28X2.
La séquence de recherche de l'opto est conforme:
avance à vitesse rapide suivi d'un saut après la fente toujours à vitesse rapide, et retour à vitesse lente...
 
Last edited:

zeltron

Senior Member
avec la même carte?
et les angles contrairement à moi sont ok?
c'est peut être encore le quartz ou un manque de condensateur autour?
voila mon montage et la position des cavaliers


sinon c'est peut être mon alimentation de la carte easydriver elle est de 8 volts alors que mon moteur pas à pas est de 12v?
 

PieM

Senior Member
la carte ou le quartz n'ont rien à voir avec le problème.
ça fonctionnait correctement au post #126.

envoyez le programme tel que vous l'avez rentré.
 

zeltron

Senior Member
:D hey bé ce n'est pas gagné...
je pense que vous avez raison doit y avoir des bugs dans le copier coller...
je vais tout recopier à la main....
car j'ai essayé de bidouiller votre programme pour afficher
"serout B.7,N2400,(nb_de_pas,sens) ou w10... à chaque fin d'étape pos_cible puis suivie d'une pause
en modifiant dirsB = %11100000
je ne récupere aucune infos... mais les vitesses je pense sont devenues correctes la vitesse recherche 0 n'est pas plus rapide mais se sont les autres vitesses qui sont plus lentes, par contre les angles sont toujours mauvais...
d'autre part je n'ai pas d'idée comment récupérer la vitesse car c'est une constante...
quel boulet je suis!
 

zeltron

Senior Member
je ne comprend plus rien snif
j'ai retapé le code sans commentaire
Code:
#picaxe 40X2
setfreq m16
dirsB=%11100000
symbol FC_opto=pinB.5
symbol dir=pinB.5
symbol pas=B.6
symbol var_temp=w13
symbol pos_actuelle=w12
symbol pos_cible=W11
symbol Nb_de_pas=w10
symbol Sens=bit0
symbol cw=1
symbol ccw=0
symbol Vit_lente=100
symbol Vit_rapide=20
eeprom 0,(0,125,256,125,0,126,128,162)
#macro Pap(Nb,sens,Per)
dir=Sens
for var_temp=0 to Nb
	pulsout pas,1
	pause Per
next
pos_actuelle=sens*2*Nb+Pos_actuelle-Nb
#ENDMACRO

Prog_princ:
gosub Init_pap
do
	pos_cible=32800
	gosub Mise_en_position
	pos_cible=3000
	pause 6000
	gosub Mise_en_position
	pos_cible=35000
	gosub Mise_en_position
	pause 10000
loop
Init_pap:
sens = cw
do while FC_opto=1
	pulsout pas,1
	pause Vit_rapide
loop
pap(50,cw,Vit_rapide)
pause 1000
sens = ccw
do while FC_opto=1
	pulsout pas,1
	pause Vit_lente
loop
pos_actuelle=3200
return
Mise_en_position:
if pos_cible>pos_actuelle then
	Nb_de_pas=pos_cible-pos_actuelle
	sens=cw
else
	Nb_de_pas=pos_actuelle-pos_cible
	sens=ccw
endif
if Nb_de_pas>4800 then
	Nb_de_pas=9600-Nb_de_pas
	sens=sens+1
	endif
et la la recherche 0 se fait en vitesse lente...
et le zero n'est pas détecté c'est à devenir chèvre ce truc:mad:
 

PieM

Senior Member
Pour afficher des valeurs:
serout B.7,N2400,(254,1) 'efface l'écran
serout B.7,N2400,(254,128, "Nb: ",#nb_de_pas," sens: ",#sens) écrit en 1ere ligne
serout B.7,N2400,(254,192, "Nb: ",#nb_de_pas," sens: ",#sens) écrit en 2eme ligne

Il faut essayer de comprendre ce problème de vitesse qui varie sans raison

Il manque la dernière ligne à votre programme.

Pour copier un programme à partir de PE6, se mettre dans l'éditeur, et appuyer sur Ctrl A : ça sélectionne tout.
sur la barre de menu, onglet Principal, Cliquer sur forum
revenir sur le post et au lieu d'insertion faire Ctrl V.
 
Last edited:

zeltron

Senior Member
j'utilise la version 6.0.7.5 beta je n'ai pas l'option forum...
le programme que j'ai retappé ci dessus fonctionne encore moins bien que le votre (vitesse non conforme, pas de détection zero et j'ai créer un bug j'ai entré 3200 en position actuel pour 32000 mais ce n'est pas ça...)
donc je suis revenu à votre programme avec vos commandes afficheur en plus
comme précédement les vitesses sont ok et j'ai gagné un autre bon déplacement ( recherche 0 vite,retour lent, +30°,et -70!! en vitesse lente, ensuite ça va plus -240°...
c'est depuis que j'ai mis des pauses que les vitesse sont ok je pense...voir programme ci dessous....
mais l'afficheur affiche n'importe quoi voir la photo

Code:
Code:
#rem
###########################################
#  Programme de gestion de pont tournant  #  
#  Moteur PaP 200pas - driver EasyDriver  #
#  Date 20141221 revision 2               #
###########################################
#ENDREM

#picaxe 40X2

'*********** E/S ********************************
dirsB = %11100000       ' positionne B.5 et B.6 B.7 en sorties

'entr?es ------------------------------
symbol FC_opto =  pinB.4   'Fin de course opto

'sorties ------------------------------
symbol dir     =  pinB.5   'sortie direction
symbol pas     =  B.6      'sortie pas

'*********** variables **************************
symbol var_temp      = w13 'variable temporaire
symbol Pos_actuelle  = w12 'position courante
symbol Pos_cible     = w11 'position cible
symbol Nb_de_pas     = w10 'nombre de pas ? realiser

'reserve bits = b0
symbol Sens = bit0

'*********** constantes **************************
symbol CW = 1              'sens horaire
symbol CCW = 0             'sens anti horaire (arbitraire)
symbol Vit_lente  =  100   'predefini vitesse lente
symbol Vit_rapide =  20    'et vitesse rapide

'*********** memorisation en EEPROM **************
'*****Table des positions des voies memorisees ***
eeprom  0,(0,125,256,125,0,126,128,162)

'*********** Macros ******************************
'definition macro avec parametres; Nb de pas, sens, periode entre pas.
#MACRO PaP(Nb,Sens,Per)
   dir = Sens        'affecte 1 ou 0 ? dir donc ? B.5
   for var_temp = 0 to Nb  'envoie Nb pulses au circuit
      pulsout pas,1        'driver
      pause Per   ' pause en X fois 5?s
   next
   Pos_actuelle = sens * 2 * Nb + Pos_actuelle - Nb 'actualisation position du pont
   'si sens =1 on ajoute Nb pas ? Pos_actuelle sinon on lui retranche Nb pas ;-)
#ENDMACRO

'************  initialisation   *******************
setfreq m16             'frequence 16MHz interne

'##############   Programme principal   ############################
Prog_princ:
init:pause 500;initialise l'ecran
serout B.7,N2400,(254,1) 'efface l'écran


   gosub Init_PaP
do
   pos_cible = 32800
   serout B.7,N2400,(254,128,"Nb:",#Nb_de_pas,"sens:",#sens)
   pause 50000
   gosub Mise_en_position
   pos_cible = 30000
   serout B.7,N2400,(254,129,"Nb:",#Nb_de_pas,"sens:",#sens)
   pause 50000
   gosub Mise_en_position
   pos_cible = 35000
   serout B.7,N2400,(254,128,"Nb:",#Nb_de_pas,"sens:",#sens)
   pause 50000
   gosub Mise_en_position
   pause 10000
loop
'#####################################################################

Init_PaP:   's/Programmes initialisation du moteur pas a pas

   dir = cw
   do while FC_opto = 1    'tout pendant que l'opto est oculte
      pulsout pas,1        'on tourne en grande vitesse sens cw
      pause Vit_rapide
   loop

   PaP(100,cw,Vit_rapide)  'la fente detectee, on passe au-dela - normalement 26 pas suffisent pour 1mm

   dir = ccw               'puis on revient en arri?re
   Do while FC_opto = 1    'en vitesse tres lente jusqu'a detection du bord de fente.
      pulsout pas,1
      pause Vit_lente
   loop
   Pos_actuelle = 32000    'la detection faite, on initialise le compteur de pas ? 32000
return   
'#####################################################################

Mise_en_position:  's/Programme calcul du nombre de pas a faire et commande du moteur. 

   If pos_cible > pos_actuelle then          'si la future position est dans le sens positif
      Nb_de_pas = pos_cible - pos_actuelle   'calcul du nombre de pas
      sens = cw                              'et du sens
   else
      Nb_de_pas = pos_actuelle -  pos_cible  'sinon , on fait l'inverse
      sens = ccw
   endif
   'optimisation du sens
   if Nb_de_pas > 4800 then            'Si on depasse 1/2 tour
         Nb_de_pas = 9600 - Nb_de_pas  'on prends le complement 
         sens = sens + 1               'et on inverse le sens 
   endif
   PaP(Nb_de_pas,sens,vit_lente)       'Action du moteur
return
 

PieM

Senior Member
Mais si, c'est sous : Couper - Copier - Forum !

se mettre dans l'éditeur, et appuyer sur Ctrl A : ça sélectionne tout.
sur la barre de menu, onglet Principal, Cliquer sur forum
revenir sur le post et au lieu d'insertion faire Ctrl V.

C'est quoi votre afficheur ? vous n'avez pas de doc ?
 

zeltron

Senior Member
axe 133 la doc fait que 4 pages il n'y a presque aucun programme dedans
ok je vais en chercher une autre
j'ai ajouté des pauses 500 comme sur la doc et la l'afficheur ne marche plus ;)
ça commence à m'enerver ce truc!:mad:
 
Last edited:

PieM

Senior Member
Si c'est un AXE133Y alors les commandes sont bonnes. Inutile d'aller chercher une autre doc si vous ne pouvez même pas afficher un caractère.
La pause est nécessaire en début de programme uniquement pour laisser le temps à l'afficheur de s'initialiser.
Je commence à être perplexe !
Essayez d'afficher les exemples donnés dans la doc. Si vous n'y arrivez pas, inutile d'aller plus loin. Il faut vérifier !
vos 14 soudures connecteur sont bonnes ?
Comment avez vous fait pour afficher un message en #101 ??
 

zeltron

Senior Member
le pb n'est pas l'afficheur il est bien câblé comme sur la doc et il fonctionne
pour afficher en 101 j'ai utilisé les maigres infos de la doc et ça marche voici le code
Code:
[color=Black]init: [/color][color=Blue]pause [/color][color=Navy]500 [/color][color=Green];  initialise l'?cran[/color]
[color=Blue]SerOut B.7[/color][color=Black], [/color][color=Blue]N2400[/color][color=Black], [/color][color=Blue]( [/color][color=Navy]254[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Blue]) [/color][color=Green]' efface l'?cran[/color]
[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Blue]) [/color][color=Green]; d?place le curseur ? la 1er ligne[/color]
[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400[/color][color=Black],[/color][color=Blue]([/color][color=Red]"appuis bp1 si ok"[/color][color=Blue]) [/color][color=Green];  texte 1er ligne[/color]
[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]192[/color][color=Blue]) [/color][color=Green]; d?place le curseur ? la seconde ligne[/color]
[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400[/color][color=Black],[/color][color=Blue]([/color][color=Red]"recherche du 0"[/color][color=Blue]) [/color][color=Green];exte seconde ligne[/color]
[color=Blue]end[/color]
la seule évolution c'est que je ne savais pas qu'il fallait utiliser le # pour récupérer la variable
mon câblage est bon je pense à un pb de fréquence?...
j'ai rechargé le programme ci dessus ça marche bien!
 
Last edited:

zeltron

Senior Member
c'est bon ! ça commence à marcher!!!
l'afficheur s'éfface, puis les vitesses sont ok sauf qu'a la vitesse basse le son du moteur est pulsé...(mais pas le déplacement)
de toute façon je vais changer cette vitesse car elle est trop lente

vitesse rapide, puis lente
l'afficheur indique nb 800 à +30° sens 1
nb 2800 sens 0 vers -70
puis apres ça déconne...-240
pour cela j'ai d'abord déplace setfreq m16 en début programme sans éffet
puis j'ai placé un point ; pour mettre setfreq en remarque
et c'est bon
 

PieM

Senior Member
c'est bon ! ça commence à marcher!!!
l'afficheur s'éfface, puis les vitesses sont ok sauf qu'a la vitesse basse le son du moteur est pulsé...(mais pas le déplacement)
de toute façon je vais changer cette vitesse car elle est trop lente

vitesse rapide, puis lente
l'afficheur indique nb 800 à +30° sens 1
nb 2800 sens 0 vers -70
puis apres ça déconne...-240
pour cela j'ai d'abord déplace setfreq m16 en début programme sans éffet
puis j'ai placé un point ; pour mettre setfreq en remarque
et c'est bon
Mettez setfreq m16 car sinon ça va être encore plus lent.
Par contre si vous êtes à 16 MHz, il faut ecrire serout B.7,N2400_16 ...

Code:
serout B.7,N2400,(254,128) ; déplace le curseur a la 1er ligne
serout B.7,N2400,("appuis bp1 si ok") ;  texte 1er ligne
c'est exactement pareil que serout B.7,N2400,(254,128,"appuis bp1 si ok")
 

zeltron

Senior Member
ok ça marche aussi comme ça (avec remise de la fréquence setfreq et _16 pour l'afficheur)
et la vitesse est ok et je n'ai plus le bruit de pulsation!!
apres le positionnement et affichage nb 2800 sens 0 vers -75 °
j'éfface l'écran car les 2 lignes sont completes
ensuite ce n'est plus bon...
la position va vers -240 ° et je ne recupere aucune info sur l'afficheur... malgré ma demande identique nb pas etc....
pfff il faut luter à chaque fois! mais y'a déjà du progrés!
 

PieM

Senior Member
ok ça marche aussi comme ça (avec remise de la fréquence setfreq et _16 pour l'afficheur)
et la vitesse est ok et je n'ai plus le bruit de pulsation!!
apres le positionnement et affichage nb 2800 sens 0 vers -75 °
j'éfface l'écran car les 2 lignes sont completes
ensuite ce n'est plus bon...
la position va vers -240 ° et je ne recupere aucune info sur l'afficheur... malgré ma demande identique nb pas etc....
pfff il faut luter à chaque fois! mais y'a déjà du progrés!
Bon c'est OK , ça.

d'abord 800 pas donc +30°
ensuite -2800 pas donc -105° soit position à -75°
ensuite +5000 pas mais c'est supérieur à 1/2 tour donc calcul : 9600 - 5000 soit -4600 pas donc -175° d'ou nouvelle position à -250°

normal de ne pas récupérer d'info sur le dernier car les serout sont mal placés !
il faut les mettre après le retour du calcul... donc après les gosub Mise_en_position


le plus simple, mettre un seul serout B.7,N2400_16,(254,128,"Nb:",#Nb_de_pas," sens:",#sens," ") avant le return du s/p Mise_en_position
 

zeltron

Senior Member
ok! je récupere 4600 pas et ensuite 2200!
ouf l'année se termine bien!
champagne!
bonne fête de fin d'année à vous et vos proche! et encore merci pour votre patience!
 

zeltron

Senior Member
Bonjour, bonjour, suite et vogue la galere comme d'hab...
j'ai trouvé dans mes fonds de tiroirs un clavier matriciel que j'ai câblé comme dans le post clavier à code du forum
puis j'ai programmé le picaxe en m'inspirant du programme décris avec le cablâge..
que voici
Code:
[color=Blue]symbol [/color][color=Black]clavier [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]setfreq m16             [/color][color=Green]'frequence 16MHz interne


;sp_lecture_clavier :[/color]
[color=Black]Prog_princ:
init:[/color][color=Blue]pause [/color][color=Navy]500[/color]
[color=Blue]SerOut B.7[/color][color=Black], [/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]( [/color][color=Navy]254[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Blue]) [/color][color=Green]' efface l'eran[/color]
[color=Blue]readadc a.0 [/color][color=Black], clavier[/color]
[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Red]"touche"[/color][color=Black],#clavier[/color][color=Blue])

select [/color][color=Purple]b0[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]170 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]10[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]155 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]7[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]145 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]4[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]135 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]1[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]125 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]11[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]118 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]8[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]111 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]5[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]106 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]2[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]99 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]12[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]95 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]9[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]90 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]6[/color]
[color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]85 [/color][color=Black]: clavier [/color][color=DarkCyan]= [/color][color=Navy]3[/color]

[color=Blue]endselect
return[/color]
c'était un 1er essais mais je n'ai pas eu le temps d'aller plus loin...
non seulement ça ne marche pas mais plus moyen de reprogrammer le picaxe....!!!
j'ai redemarrer le pc, le picaxe etc etc...
il n'y a plus de communication depuis ce téléchargement...
si je fais refresh com ports, le com 4 axe027 picaxe est bien détecté mais quand je demande un téléchargement
la petite barre verte de telechargement en bas à droite ne communique pas...
 

dje8269

Senior Member
Bonjour ,

Il faudrait que tu effectué un hard "reset" . comment faire ?

Déjà tu fais un autre programme qui bloque pas ton picaxe . et fais le commencer par quelques choses comme ca : #picaxe 28X2 par exemple . ensuite tu met ce que tu veut genre :

Code:
do
pause 1000
loop
ensuite dans l'ordre :

tu éteins tu picaxe
tu lance la programmation
pendant qu'il cherche a se connecter tu allume ton picaxe . et le tour est joué !

Ton programme est entier ? ou il vient à la suite d'un autre ? car tu n'as pas de boucle ? donc il lit qu'une seul fois ?
 
Top