Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Tout ce qui n'a pas de catégorie !
générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#1 Message par ducran lapoigne » mer. 21 mars 2018 21:05

bonsoir tous,
pour pouvoir tester facilement nos pas a pas, j' ai réalisé un petit générateur d' impulsions a 12f675
La fréquence de sortie est réglable via un potentiomètre et s' étend de 50 HZ a 2,5 KHZ en une seule gamme
.... et c' est linéaire, entendez par la que le potentiomètre réglé a mi-course , c' est 1,25 KHZ
on a le choix entre sortie impulsion positive / négative (10 uS)
On peut aussi passer de sortie d' impulsion en continu / manuel
Dans le cas du mode manuel, chaque appui sur le poussoir sort une impulsion
Si le poussoir est maintenu, les pulses sortent a environ 2 HZ

pulser675.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

générateur d' impulsions pour moteur pas a pas
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#2 Message par F6FCO » mer. 21 mars 2018 21:09

En voilà une idée qu'elle est bonne et originale, je vais te piquer le concept :sifflotte:
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#3 Message par ducran lapoigne » mer. 21 mars 2018 21:22

JC, si tu as un 12F675 à griller ....

Pour le moment, je ne diffuse que le HEX car le projet va passer sur un 16F88 avec en + un switch pour le sens et les sorties seront bufférisées avec un 74LS24*

Code : Tout sélectionner

:020000040000FA
:020000000528D1
:08000800742A8312850183169E
:10001000FF239000FB30850012309F0083120730D1
:10002000990083120D309F00051185191528051EB2
:100030001E28851A17283920552017289F119F142C
:100040009F1820281E08A1005C20A3006821A4009E
:100050000030900023088F0024088E000C103920F7
:100060002130A700A70B3228000010140C1C3628E2
:100070001528051C48280515000000000000000098
:100080000000000000000000000000000511080052
:10009000051100000000000000000000000000004A
:1000A00000000000000005150800A801A701A70B2B
:1000B0005728A80B562808002108A0006830A00780
:1000C00000300318013E8A002008672008008200E3
:1000D000B234BF34C834CF34D434D834DC34DF3411
:1000E000E134E434E634E734E934EA34EB34EC3434
:1000F000ED34EE34EF34EF34F034F134F134F234E3
:10010000F234F334F334F434F434F434F534F534B1
:10011000F534F634F634F634F634F734F734F7348D
:10012000F734F734F834F834F834F834F834F83471
:10013000F934F934F934F934F934F934F934FA3456
:10014000FA34FA34FA34FA34FA34FA34FA34FA343F
:10015000FA34FA34FB34FB34FB34FB34FB34FB3429
:10016000FB34FB34FB34FB34FB34FB34FB34FB3417
:10017000FC34FC34FC34FC34FC34FC34FC34FC34FF
:10018000FC34FC34FC34FC34FC34FC34FC34FC34EF
:10019000FC34FC34FC34FC34FC34FC34FC34FD34DE
:1001A000FD34FD34FD34FD34FD34FD34FD34FD34C7
:1001B000FD34FD34FD34FD34FD34FD34FD34FD34B7
:1001C000FD34FD34FD34FD34FD34FD34FD34FD34A7
:1001D000FD34FD34FD34FD34FD34FD34FD34FD3497
:1001E000FD34FD34FD34FD34FD34FE34FE34FE3484
:1001F000FE34FE34FE34FE34FE34FE34FE34FE346F
:10020000FE34FE34FE34FE34FE34FE34FE34FE345E
:10021000FE34FE34FE34FE34FE34FE34FE34FE344E
:10022000FE34FE34FE34FE34FE34FE34FE34FE343E
:10023000FE34FE34FE34FE34FE34FE34FE34FE342E
:10024000FE34FE34FE34FE34FE34FE34FE34FE341E
:10025000FE34FE34FE34FE34FE34FE34FE34FE340E
:10026000FE34FE34FE34FE34FE34FE34FE34FE34FE
:10027000FE34FE34FE34FE34FE34FE34FE34FE34EE
:10028000FE34FE34FE34FE34FE34FE34FE34FF34DD
:10029000FF34FF34FF34FF34FF34FF34FF34FF34C6
:1002A000FF34FF34FF34FF34FF34FF34FF34FF34B6
:1002B000FF34FF34FF34FF34FF34FF34FF34FF34A6
:1002C000FF34FF34FF34FF34FF34FF34FF34FF3496
:1002D0002108A0007430A00701300318013E8A00F5
:1002E0002008732108008200A8343E345634363486
:1002F0009834EC347B347434FA3425340734AE3417
:10030000233470349A34A634993476344034FA3431
:10031000A4344234D4345C34DA345034BF34263418
:100320008834E3343A348C34D93422346834AA34EF
:10033000E93425345E349434C834FA342A345834D9
:100340008434AE34D634FD34233447346A348B34A9
:10035000AC34CB34E934063423343E34593472346B
:100360008B34A334BB34D134E734FD341234263417
:100370003A344D345F34723483349534A534B63412
:10038000C634D534E534F334023410341E342C34FE
:100390003934463452345F346B34773482348E349B
:1003A0009934A434AF34B934C334CD34D734E134C0
:1003B000EA34F434FD3406340F341734203428344E
:1003C0003034383440344834503457345F34663431
:1003D0006D3474347B34823489348F3496349C3455
:1003E000A234A834AF34B534BB34C034C634CC34B2
:1003F000D134D734DC34E234E734EC34F134F6343D
:10040000FB34003405340A340E34133418341C34ED
:100410002134253429342E34323436343A343E34BF
:10042000423446344A344E34523456345A345D34AD
:100430006134653468346C346F34733476347934B1
:100440007D348034833486348A348D3490349334CC
:10045000963499349C349F34A234A534A834AB34F8
:10046000AD34B034B334B634B834BB34BE34C03435
:10047000C334C534C834CA34CD34CF34D234D43480
:10048000D734D934DB34DE34E034E234E434E734D6
:10049000E934EB34ED34EF34F234F434F634F83438
:1004A000FA34FC34FE3400340234043406340834A4
:1004B0000A340C340E341034113413341534173418
:1004C00019341A341C341E34203421342334253496
:1004D000273428342A342B342D342F34303432341A
:1004E0003434353437343834A600030EA500250ED5
:0804F0008300A60E260E090090
:02400E00843FED
:00000001FF
Modifié en dernier par ducran lapoigne le mer. 21 mars 2018 21:24, modifié 1 fois.

générateur d' impulsions pour moteur pas a pas
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#4 Message par venom » mer. 21 mars 2018 21:24

F6FCO a écrit :En voilà une idée qu'elle est bonne et originale, je vais te piquer le concept :sifflotte:


Ah Charlotte va encore bosser je sent bientôt une photo de pcb :-D







@++
Mon site web
Mon discord : venom#4888

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » jeu. 22 mars 2018 02:09

Bonjour le forum,

Un générateur de fonction, :bravo: ducran lapoigne, bien pensée

Je suis moi aussi dans le pilotage de moteur pas à pas, mais Il me reste un souci, sur le contrôle de l'intensité du moteur pas à pas
et la tension.

Je veux diminuer l'intensité tout en augmentent le tension quand le moteur commence à prendre de la vitesse, et limité l'intensité quand
celui si ne tourne pas.

J'ai déjà fait le principal que voici

Code : Tout sélectionner



 RA0 sortie logique pour moteur pas à pas
 RA1 sortie logique pour moteur pas à pas
 RA2 sortie logique pour moteur pas à pas
 RA3 sortie logique pour moteur pas à pas

 RA4 entrée réglage de vitesse du moteur pas à pas
avec un ajustement de la vitesse sur PWM

 RA5 entrée arrêt du moteur pas à pas 
(MCLR)

 RA6 entrée d’impulsion, pour rotation du moteur ( manuel ou automatique)
 RA7 entrée sens de rotation du moteur pas à pas

*****************************************************************************************************************************************

 RB0 sortie PWM  en cours..................... commande tension

 RB1 entrée bouton de rotation du moteur pas à pas dans le sens d
'une aiguille d'une montre  
 RB2 entrée bouton de rotation du moteur pas à pas en sens inverse d
'une aiguille d'une montre

 RB3 sortie information du nombre de pas du moteur pas à pas
, seulement pour mode manuel (pour info PC ou émetteur) 

 RB4 entrée sélection du mode de pas 
(Mode à pas entier, une phase alimentée à la fois)--------------- 00   
 RB5 entrée sélection du mode de pas 
(Mode à pas entier, deux phases alimentées en même temps--------- 01
                                     
(Mode demi-pas)-------------------------------------------------- 10
                                     
(libre)---------------------------------------------------------- 11
                                         
 RB6 sortie information du sens de rotation du moteur pas à pas
, seulement pour mode manuel (pour info PC ou émetteur)
 RB7 libre 


j'ai testé ça fonctionne déjà, mais il me reste la gestion de la tension avec le pwm. pas si simple :mur:

Il faudrait arrivé à ça :

123.png


En réalité c'est pour refaire toute mon électronique sur ma petite CNC, par la suite je vais utiliser un PIC18F8722 avec
plus de 80 pattes.

Comme j'utilise des moteurs pas à pas unipolaire, quelqu'un connait t 'il des drivers pouvant supporter 3 Ampères sous 48 volts ?

Merci pour les infos ducran lapoigne :wink:

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

générateur d' impulsions pour moteur pas a pas
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#6 Message par F6FCO » jeu. 22 mars 2018 09:27

Bonjour tous,
Pourquoi ne pas utiliser des bipolaires, tu aurais bien plus de couple.

Pont en H, si tu mets des transistors qui tiennent la route tu peux commander ce que tu veux:
http://f6fco.pagesperso-orange.fr/PontH2.htm

Sinon j'en reviens toujours au même, testé et adopté sur CH4RL0TT3. Je l'utilise sur des bipolaires mais tu dois pouvoir le faire tourner avec des unipolaires, mais ne tient que jusqu'à 45v, je les alimente en 36V. Associé à des PAP 57BYGH56-401 c'est une tuerie:
https://fr.aliexpress.com/item/CNC-engr ... c0e3&tpp=1
https://www.ebay.fr/itm/57BYGH56-401A-N ... XQtUxTdcxp

Voici mon banc pour tester les moteurs pap et aussi les drivers (les drivers tombent plus souvent en panne que les pap :furieux: ). Alimenté en 36v le tout est connecté sur mon PC LinuxCNC par la db25 et je peux faire tous les tests que je souhaite, vitesse et accélération. Équipé d'une breakoutboard pour séparer optiquement le banc du PC, d'un régulateur pour le 36->5v et d'un ventilo (rajouté après quelques crâmages de drivers :sifflotte: ). J'ai implanté des connecteurs pour tester jusqu'à 3 couples drivers/pap. Equipé en prises XLR parce que c'est ce qui équipe mes CNC, je peux ainsi faire des tests en direct sur les machines et tester des drivers en charge réelle. Y ajouter un montage comme celui d'Antoine pourrait le rendre autonome et s'affranchir du PC:
DSCN5994.JPG

P1020301.JPG


Pour des tests valables sur un pap il est judicieux de le tester en charge, le tester à vide et l'implanter ensuite sur une CNC par exemple peut apporter quelques surprises, pertes de pas pour cause de faiblesse du moteur, sous-dimensionnement, etc. Une poulie sur l'axe qui soulève un poids peut être une bonne solution et voir a quel moment le moteur décroche.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#7 Message par ducran lapoigne » jeu. 22 mars 2018 13:20

pour tempsx:
Super projet ! réelement ambitieux


Ne prends pas ce qui suit comme une critique négative, mais je suis un peu de l' avis de JC,
j' ai débuté avec les pas a pas unipolaires de récup Jusqu' au jour, toujours en récup, je suis tombé sur des bipolaires
et là, déchetterie les unipolaires (mode humour on; )
Certes l' électronique est un peu plus compliquée au niveau des ponts en H
En optant pour des bipolaires,comme le dit JC, pour quelques Yuans de plus, tu as un driver qui gère la réduction de courant
à l' arrêt, et qui permet le 1/2 - 1/4 - 1/8 ... de pas avec en prime le courant réglable.

Je ne connait pas le programme qui gère ta cnc, normalement, c' est lui qui s' occupe des accélérations / décélerations
ou alors, tu réécris ton propre programme ?

Si tu cherches une source d' inspiration pour ton projet, essaie de mettre linistepper dans ton moteur de recherche favori

bonne continuation et plein succès pour ton programme

PS: cela me fait penser que j' avais acheté cette carte en kit, qui devait piloter 3 moteurs unipolaire.
Elle n' a jamais servi et va certainement être cannibalisée sans férocité

cnx 3 axes.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#8 Message par Temps-x » ven. 23 mars 2018 21:32

Bonjour F6FCO, ducran lapoigne, et tout le forum,

Merci ! à vous deux pour les réponses, mais je veux resté dans les moteurs unipolaire, pour l'instant. :wink:

Parce que j'en possède 6, qui font chacun 0,700 kilo, il est vrai que les moteurs unipolaire n'ont pas la même puissance qu'un bipolaire.

comme énoncé avec la discussion ICI et LA

Mais moteur font 12 volts, mais si je veux les faire tourner plus vite, il faut augmenter la tension en fonction de la vitesse.

Comme j'ai un drivers qui supporte 60 volts sous 2 Ampères STA471A je suis pas limité.

Vu votre expérience je suis d'accord avec je que vous dite, mais d'après certain article que j'ai plus lire il existe maintenant des drivers
spécialisés pour les moteurs unipolaire, qui permets d'avoir autant de couple qu'un bipolaire.

Donc, je tente l'expérience, d'accord avec F6FCO toujours tester un moteur en charge, pour ne pas avoir de surprisse. :wink:

ducran lapoigne a écrit :
Source du message l' électronique est un peu plus compliquée au niveau des ponts en H


Oui c'est sur, faire un pont H demande un savoir, car les transistors chauffe très vite, et pouf ça crame..... :sifflotte:

ducran lapoigne a écrit :
Source du message tu réécris ton propre programme ?


Oui j'ai écrit mon programme, avec mon programme pas besoin de passer par 2 logiciels car il gère son G_CODE, je vais le
normaliser au protocole existant, mais ça demande beaucoup de compréhension.

Si vous voulez vous amuser en programmation PC, essayer de faire le contour d'une figure, vous allez comprendre la dureté
du problème, et là je parle d'une figure, imaginer avec 100 figures. :lol:

ducran lapoigne a écrit :
Source du message essaie de mettre linistepper dans ton moteur de recherche


Merci pour l'info ducran lapoigne effectivement on tombe avec plein de montage, c'est quand même bizarre,
tous les montages que j'ai pu voir se ressemble électroniquement, ça prouve que les gens copie sans réfléchir, c'est triste.

ducran lapoigne a écrit :
Source du message être cannibalisée sans férocité


humour!! n’oublie pas le sel, et le poivre.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#9 Message par ducran lapoigne » dim. 8 avr. 2018 16:59

bonjour tous,pour revenir au post d' origine :sifflotte:
pulser675.JPG


Code : Tout sélectionner

;******************************************************************************
;
 Cette version génère des impulsions pour un driver de moteur pas a pas
; le temps d' impulsion est 10 uS et la fréquence de 50 Hz à 2500 Hz.
; La fréquence est contrôlable via un potentiomètre 
; lu par le convertisseur A / N du microprocesseur.
;******************************************************************************
    
    list      p=12F675        ; list directive to define processor
    #include <p12F675.inc>    ; processor specific variable definitions

    errorlevel  -302          ; enlever le chiant message

 __CONFIG  _CPD_OFF & _BODEN_OFF  & _CP_OFF & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT     

;------------------------------------------------------------------------------
;                   DECLARATIONS DE VARIABLES                        
;------------------------------------------------------------------------------

    CBLOCK    0x20            ;RAM variables used in the program

    VAR_TABLE_OFFSET    :1
    VAR_TEXT_INDEX        :1
    TEMP_S                :1    ;utilisé si interruption en service
    TEMP_W                :1    ;utilisé si interruption en service
    COUNT_1                :1    ;utilisé pour temporisations
    COUNT_2                :1    ;utilisé pour temporisations

    ENDC
;------------------------------------------------------------------------------
;                    DEFINE  
;------------------------------------------------------------------------------

#DEFINE PB_MAN        GPIO,5        ; ON / OFF SWITCH Input
#DEFINE SW_C_M        GPIO,4        ; continu / manuel SWITCH Input
#DEFINE SW_ON_OFF    GPIO,3        ; ON / OFF SWITCH Input
#DEFINE OUT_PIN        GPIO,2        ; Pulse generator output
#DEFINE SW_P_N        GPIO,0        ; SWITCH impulsion positive / negative Input

#DEFINE PAGE0 BCF STATUS,RP0        ; passage en bank 0
#DEFINE PAGE1 BSF STATUS,RP0        ; passage en bank 1

;------------------------------------------------------------------------------
;GP0/AN0    =    SWITCH Impulsion positive / negative
;GP1/AN1     =    Potentiometre frequence
;GP2        =    Pulse generator output
;GP3        =    SWITCH ON / OFF  Input
;GP4/AN3     =    SWITCH continu / manuel 
;GP5        =    BP man_puls
;------------------------------------------------------------------------------
;                      DEMARRAGE SUR RESET                           
;------------------------------------------------------------------------------
    org     0x000             ; Adresse de départ après reset
     GOTO    PROGRAM_START        ; Adresse 0: initialiser
;------------------------------------------------------------------------------
;                     VECTEUR   INTERRUPTION                           
;------------------------------------------------------------------------------
    org 0x004
    GOTO I_SERV                ; interrupt service
;----------------------------------------------------------------------------

;----------------------------------------------------------------------------
;                        Configuration I/O A/D COMP
;----------------------------------------------------------------------------

PROGRAM_START

    PAGE0
    CLRF    GPIO

;Configure I/O pins en entree ou sortie comme nécessaire

    PAGE1
    CALL     3FFh
    MOVWF    OSCCAL
    
    MOVLW    B'
11111011'
    MOVWF    TRISIO


; Set A/D conversion clock to Fosc/8, and 
; configure the necessary pins comme analog inputs.
; Note: The conversion process takes 11 Tad, and Tad will be 2usec for an 4MHz 
; oscillator and these settings, so the conversion
; time will be 22usec (22 instruction cycles).

    MOVLW    b'
00010010'
    MOVWF    ANSEL

    PAGE0                ;Change to Bank0
    MOVLW    H'
07'
    MOVWF    CMCON        ;stop module comparateurs du 12f675

;--------------------------------------------------------------------
; configuration du registre ADCON0 (page0)
; reference voltage = Vdd (5 volts), 
; Configure le convertisseur A/D justification à gauche
; demarrer convertisseur 
;--------------------------------------------------------------------
    PAGE0
    MOVLW b'
00001101'            
    MOVWF ADCON0    
; 0 1 0 0  0 0 0 1  ADCON0 (bank 0)
; | | | |  | | | +-------------- ADON 1=demarrer convertisseur
; | | | |  | | +--------------- unused
; | | | |  | +---------------- GO/DONE
; | | | |  +----------------- CHS0     | 0 1 : chanel 1 (AN1)
; | | | +------------------ CHS1       | 1 1 : chanel 3 (AN3)
; | | +------------------- NC        
; | +-------------------- VCFG 1: ref pin 0: VDD
; +--------------------- ADFM 1: right justified 0: left justified 

;--------------------------------------------------------------------
; configuration etat impulsion sortie
;--------------------------------------------------------------------

    BCF        OUT_PIN

;*******************************************************************************
;                              Main Program Code
;*******************************************************************************

; scanner etat interrupteur mise en route

CHECK_SWITCH

    BTFSC    SW_ON_OFF
    GOTO    CHECK_SWITCH

C_M_TST
    BTFSS    SW_C_M
    GOTO    CONTIN
SIMPLE
    BTFSC    PB_MAN
    GOTO    C_M_TST
    CALL    IMPULSION
    CALL    PAUSE500
    GOTO    C_M_TST

CONTIN
    BCF    ADCON0,CHS1        ; selectionner A/D canal = 1

;-------------------------------------------------------------------------------
; Lire potentiomètre frequence
;-------------------------------------------------------------------------------
    BSF        ADCON0,GO_DONE
POLL_GO_DONE
    BTFSC    ADCON0,GO_DONE
    GOTO    POLL_GO_DONE
;-------------------------------------------------------------------------------
;Lire valeur de la conversion dans ADRESH
;-------------------------------------------------------------------------------
    MOVF    ADRESH,W
    MOVWF    VAR_TEXT_INDEX

; La valeur lue est utilisée pour trouver les valeurs à charger dans le timer1
; pour generer la frequence

; Charger les registres du timer 1

    CALL    SUB_PERIOD_HIGH_LOOKUP    ; Look up the high byte of the Timer1
    MOVWF    TMR1H

    CALL    SUB_PERIOD_LOW_LOOKUP     ; Look up the low byte of the Timer1
    MOVWF    TMR1L

; Desactiver timer 1 selectionner 1:1 prescaler horloge uP    

    MOVLW     B'
00000000'             ;     
    MOVWF    T1CON
    BCF        PIR1,TMR1IF            ; effacer overflow flag     

; generer impulsion

    CALL    IMPULSION
;--------------------------------------------------------------------
; delay ajustement(! 3xn +4) routine pour timing
;--------------------------------------------------------------------    
    MOVLW D'
33'
    MOVWF    COUNT_1
BCL3
    DECFSZ    COUNT_1,f
    GOTO    BCL3
    NOP
;--------------------------------------------------------------------
; doit arriver ici après 200 uS depuis CHECK SWITCH (220 depuis debut)
; 220 dec = DC hex
;--------------------------------------------------------------------
; lancer timer 1 via TMR1ON bit dans T1CON

    BSF        T1CON,TMR1ON
        
; Scanner le Timer 1 interrupt flag pour detecter la fin du comptage

WAIT_OVERFLOW
    BTFSS    PIR1,TMR1IF
    GOTO    WAIT_OVERFLOW

;boucler au test de l'
 interrupteur

    GOTO    CHECK_SWITCH
;------------------------------------------------------------------------------
;
 génération de l' impulsion positive ou negative selon choix par switch
;------------------------------------------------------------------------------
IMPULSION
    BTFSS    SW_P_N
    GOTO    negative
positive
    BSF     OUT_PIN
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF     OUT_PIN
    RETURN

negative
    BCF     OUT_PIN
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BSF     OUT_PIN
    RETURN

;------------------------------------------------------------------------------
; tempo 0,5 sec
;------------------------------------------------------------------------------
PAUSE500
    CLRF    COUNT_2
BCL2
    CLRF    COUNT_1
BCL1
    DECFSZ    COUNT_1,f
    GOTO    BCL1
    DECFSZ    COUNT_2,f
    GOTO    BCL2
    RETURN

;------------------------------------------------------------------------------
SUB_PERIOD_HIGH_LOOKUP

    MOVFW    VAR_TEXT_INDEX
    MOVWF    VAR_TABLE_OFFSET
    MOVLW    LOW    SUB_PERIOD_HIGH_LOOKUP_TABLE + 1
    ADDWF    VAR_TABLE_OFFSET,F
    MOVLW    HIGH SUB_PERIOD_HIGH_LOOKUP_TABLE
    BTFSC    STATUS,C
    ADDLW    1
    MOVWF    PCLATH
    MOVF    VAR_TABLE_OFFSET,W
    CALL    SUB_PERIOD_HIGH_LOOKUP_TABLE
    RETURN                        
;------------------------------------------------------------------------------
SUB_PERIOD_HIGH_LOOKUP_TABLE
        
    MOVWF        PCL    

    RETLW        H'
B2'
    RETLW        H'
BF'
    RETLW        H'
C8'
    RETLW        H'
CF'
    RETLW        H'
D4'
    RETLW        H'
D8'
    RETLW        H'
DC'
    RETLW        H'
DF'
    RETLW        H'
E1'
    RETLW        H'
E4'
    RETLW        H'
E6'
    RETLW        H'
E7'
    RETLW        H'
E9'
    RETLW        H'
EA'
    RETLW        H'
EB'
    RETLW        H'
EC'
    RETLW        H'
ED'
    RETLW        H'
EE'
    RETLW        H'
EF'
    RETLW        H'
EF'
    RETLW        H'
F0'
    RETLW        H'
F1'
    RETLW        H'
F1'
    RETLW        H'
F2'
    RETLW        H'
F2'
    RETLW        H'
F3'
    RETLW        H'
F3'
    RETLW        H'
F4'
    RETLW        H'
F4'
    RETLW        H'
F4'
    RETLW        H'
F5'
    RETLW        H'
F5'
    RETLW        H'
F5'
    RETLW        H'
F6'
    RETLW        H'
F6'
    RETLW        H'
F6'
    RETLW        H'
F6'
    RETLW        H'
F7'
    RETLW        H'
F7'
    RETLW        H'
F7'
    RETLW        H'
F7'
    RETLW        H'
F7'
    RETLW        H'
F8'
    RETLW        H'
F8'
    RETLW        H'
F8'
    RETLW        H'
F8'
    RETLW        H'
F8'
    RETLW        H'
F8'
    RETLW        H'
F9'
    RETLW        H'
F9'
    RETLW        H'
F9'
    RETLW        H'
F9'
    RETLW        H'
F9'
    RETLW        H'
F9'
    RETLW        H'
F9'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FA'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FB'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FC'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FD'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FE'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
    RETLW        H'
FF'
;------------------------------------------------------------------------------
SUB_PERIOD_LOW_LOOKUP
    MOVFW    VAR_TEXT_INDEX
    MOVWF    VAR_TABLE_OFFSET
    MOVLW    LOW    SUB_PERIOD_LOW_LOOKUP_TABLE + 1
    ADDWF    VAR_TABLE_OFFSET,F
    MOVLW    HIGH SUB_PERIOD_LOW_LOOKUP_TABLE
    BTFSC    STATUS,C
    ADDLW    1
    MOVWF    PCLATH
    MOVF    VAR_TABLE_OFFSET,W
    CALL    SUB_PERIOD_LOW_LOOKUP_TABLE
    RETURN
;------------------------------------------------------------------------------
SUB_PERIOD_LOW_LOOKUP_TABLE
        
    MOVWF    PCL    

    RETLW        H'
A8'
    RETLW        H'
3E'
    RETLW        H'
56'
    RETLW        H'
36'
    RETLW        H'
98'
    RETLW        H'
EC'
    RETLW        H'
7B'
    RETLW        H'
74'
    RETLW        H'
FA'
    RETLW        H'
25'
    RETLW        H'
07'
    RETLW        H'
AE'
    RETLW        H'
23'
    RETLW        H'
70'
    RETLW        H'
9A'
    RETLW        H'
A6'
    RETLW        H'
99'
    RETLW        H'
76'
    RETLW        H'
40'
    RETLW        H'
FA'
    RETLW        H'
A4'
    RETLW        H'
42'
    RETLW        H'
D4'
    RETLW        H'
5C'
    RETLW        H'
DA'
    RETLW        H'
50'
    RETLW        H'
BF'
    RETLW        H'
26'
    RETLW        H'
88'
    RETLW        H'
E3'
    RETLW        H'
3A'
    RETLW        H'
8C'
    RETLW        H'
D9'
    RETLW        H'
22'
    RETLW        H'
68'
    RETLW        H'
AA'
    RETLW        H'
E9'
    RETLW        H'
25'
    RETLW        H'
5E'
    RETLW        H'
94'
    RETLW        H'
C8'
    RETLW        H'
FA'
    RETLW        H'
2A'
    RETLW        H'
58'
    RETLW        H'
84'
    RETLW        H'
AE'
    RETLW        H'
D6'
    RETLW        H'
FD'
    RETLW        H'
23'
    RETLW        H'
47'
    RETLW        H'
6A'
    RETLW        H'
8B'
    RETLW        H'
AC'
    RETLW        H'
CB'
    RETLW        H'
E9'
    RETLW        H'
06'
    RETLW        H'
23'
    RETLW        H'
3E'
    RETLW        H'
59'
    RETLW        H'
72'
    RETLW        H'
8B'
    RETLW        H'
A3'
    RETLW        H'
BB'
    RETLW        H'
D1'
    RETLW        H'
E7'
    RETLW        H'
FD'
    RETLW        H'
12'
    RETLW        H'
26'
    RETLW        H'
3A'
    RETLW        H'
4D'
    RETLW        H'
5F'
    RETLW        H'
72'
    RETLW        H'
83'
    RETLW        H'
95'
    RETLW        H'
A5'
    RETLW        H'
B6'
    RETLW        H'
C6'
    RETLW        H'
D5'
    RETLW        H'
E5'
    RETLW        H'
F3'
    RETLW        H'
02'
    RETLW        H'
10'
    RETLW        H'
1E'
    RETLW        H'
2C'
    RETLW        H'
39'
    RETLW        H'
46'
    RETLW        H'
52'
    RETLW        H'
5F'
    RETLW        H'
6B'
    RETLW        H'
77'
    RETLW        H'
82'
    RETLW        H'
8E'
    RETLW        H'
99'
    RETLW        H'
A4'
    RETLW        H'
AF'
    RETLW        H'
B9'
    RETLW        H'
C3'
    RETLW        H'
CD'
    RETLW        H'
D7'
    RETLW        H'
E1'
    RETLW        H'
EA'
    RETLW        H'
F4'
    RETLW        H'
FD'
    RETLW        H'
06'
    RETLW        H'
0F'
    RETLW        H'
17'
    RETLW        H'
20'
    RETLW        H'
28'
    RETLW        H'
30'
    RETLW        H'
38'
    RETLW        H'
40'
    RETLW        H'
48'
    RETLW        H'
50'
    RETLW        H'
57'
    RETLW        H'
5F'
    RETLW        H'
66'
    RETLW        H'
6D'
    RETLW        H'
74'
    RETLW        H'
7B'
    RETLW        H'
82'
    RETLW        H'
89'
    RETLW        H'
8F'
    RETLW        H'
96'
    RETLW        H'
9C'
    RETLW        H'
A2'
    RETLW        H'
A8'
    RETLW        H'
AF'
    RETLW        H'
B5'
    RETLW        H'
BB'
    RETLW        H'
C0'
    RETLW        H'
C6'
    RETLW        H'
CC'
    RETLW        H'
D1'
    RETLW        H'
D7'
    RETLW        H'
DC'
    RETLW        H'
E2'
    RETLW        H'
E7'
    RETLW        H'
EC'
    RETLW        H'
F1'
    RETLW        H'
F6'
    RETLW        H'
FB'
    RETLW        H'
00'
    RETLW        H'
05'
    RETLW        H'
0A'
    RETLW        H'
0E'
    RETLW        H'
13'
    RETLW        H'
18'
    RETLW        H'
1C'
    RETLW        H'
21'
    RETLW        H'
25'
    RETLW        H'
29'
    RETLW        H'
2E'
    RETLW        H'
32'
    RETLW        H'
36'
    RETLW        H'
3A'
    RETLW        H'
3E'
    RETLW        H'
42'
    RETLW        H'
46'
    RETLW        H'
4A'
    RETLW        H'
4E'
    RETLW        H'
52'
    RETLW        H'
56'
    RETLW        H'
5A'
    RETLW        H'
5D'
    RETLW        H'
61'
    RETLW        H'
65'
    RETLW        H'
68'
    RETLW        H'
6C'
    RETLW        H'
6F'
    RETLW        H'
73'
    RETLW        H'
76'
    RETLW        H'
79'
    RETLW        H'
7D'
    RETLW        H'
80'
    RETLW        H'
83'
    RETLW        H'
86'
    RETLW        H'
8A'
    RETLW        H'
8D'
    RETLW        H'
90'
    RETLW        H'
93'
    RETLW        H'
96'
    RETLW        H'
99'
    RETLW        H'
9C'
    RETLW        H'
9F'
    RETLW        H'
A2'
    RETLW        H'
A5'
    RETLW        H'
A8'
    RETLW        H'
AB'
    RETLW        H'
AD'
    RETLW        H'
B0'
    RETLW        H'
B3'
    RETLW        H'
B6'
    RETLW        H'
B8'
    RETLW        H'
BB'
    RETLW        H'
BE'
    RETLW        H'
C0'
    RETLW        H'
C3'
    RETLW        H'
C5'
    RETLW        H'
C8'
    RETLW        H'
CA'
    RETLW        H'
CD'
    RETLW        H'
CF'
    RETLW        H'
D2'
    RETLW        H'
D4'
    RETLW        H'
D7'
    RETLW        H'
D9'
    RETLW        H'
DB'
    RETLW        H'
DE'
    RETLW        H'
E0'
    RETLW        H'
E2'
    RETLW        H'
E4'
    RETLW        H'
E7'
    RETLW        H'
E9'
    RETLW        H'
EB'
    RETLW        H'
ED'
    RETLW        H'
EF'
    RETLW        H'
F2'
    RETLW        H'
F4'
    RETLW        H'
F6'
    RETLW        H'
F8'
    RETLW        H'
FA'
    RETLW        H'
FC'
    RETLW        H'
FE'
    RETLW        H'
00'
    RETLW        H'
02'
    RETLW        H'
04'
    RETLW        H'
06'
    RETLW        H'
08'
    RETLW        H'
0A'
    RETLW        H'
0C'
    RETLW        H'
0E'
    RETLW        H'
10'
    RETLW        H'
11'
    RETLW        H'
13'
    RETLW        H'
15'
    RETLW        H'
17'
    RETLW        H'
19'
    RETLW        H'
1A'
    RETLW        H'
1C'
    RETLW        H'
1E'
    RETLW        H'
20'
    RETLW        H'
21'
    RETLW        H'
23'
    RETLW        H'
25'
    RETLW        H'
27'
    RETLW        H'
28'
    RETLW        H'
2A'
    RETLW        H'
2B'
    RETLW        H'
2D'
    RETLW        H'
2F'
    RETLW        H'
30'
    RETLW        H'
32'
    RETLW        H'
34'
    RETLW        H'
35'
    RETLW        H'
37'
    RETLW        H'
38'
;-------------------------------------------------------------------------------
;                   TRAITEMENT   INTERRUPTION     
;-------------------------------------------------------------------------------        
I_SERV    
    MOVWF TEMP_W        ;push
    SWAPF STATUS ,w
    MOVWF TEMP_S

;traitement interrupt ici

    SWAPF TEMP_S ,w        ;pull
    MOVWF STATUS
    SWAPF TEMP_W ,f
    SWAPF TEMP_W ,w
    RETFIE                ; return w and s restored

;*******************************************************************************
    end        ;End of Program
;*******************************************************************************


Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » lun. 9 avr. 2018 01:40

Bonjour ducran lapoigne, et tout le forum,

En regardant ton code je me pose une question :roll: comment peux tu générer un signal négative à partir d'une tension +5 volts :eek:
explique moi parce que il y a quelque chose qui m'échappe.....

Merci ! pour le partage :wink:

==> A+
Modifié en dernier par Temps-x le lun. 9 avr. 2018 12:26, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot], Jérémy et 50 invités