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 !
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: