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 ---
- 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 ---
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
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
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
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
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
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*
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
F6FCO a écrit :En voilà une idée qu'elle est bonne et originale, je vais te piquer le concept
Ah Charlotte va encore bosser je sent bientôt une photo de pcb
@++
générateur d' impulsions pour moteur pas a pas
Bonjour le forum,
Un générateur de fonction, 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
j'ai testé ça fonctionne déjà, mais il me reste la gestion de la tension avec le pwm. pas si simple
Il faudrait arrivé à ça :
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
A+
Un générateur de fonction, 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
Il faudrait arrivé à ça :
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
A+
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
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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 ). 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 ). 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:
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.
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 ). 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 ). 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:
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.
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
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é
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é
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
Bonjour F6FCO, ducran lapoigne, et tout le forum,
à vous deux pour les réponses, mais je veux resté dans les moteurs unipolaire, pour l'instant.
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.
Oui c'est sur, faire un pont H demande un savoir, car les transistors chauffe très vite, et pouf ça crame.....
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.
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.
n’oublie pas le sel, et le poivre.
A+
à vous deux pour les réponses, mais je veux resté dans les moteurs unipolaire, pour l'instant.
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.
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.....
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.
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é
n’oublie pas le sel, et le poivre.
A+
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
bonjour tous,pour revenir au post d' origine
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
Bonjour ducran lapoigne, et tout le forum,
En regardant ton code je me pose une question comment peux tu générer un signal négative à partir d'une tension +5 volts
explique moi parce que il y a quelque chose qui m'échappe.....
pour le partage
A+
En regardant ton code je me pose une question comment peux tu générer un signal négative à partir d'une tension +5 volts
explique moi parce que il y a quelque chose qui m'échappe.....
pour le partage
A+
Modifié en dernier par Temps-x le lun. 9 avr. 2018 12:26, modifié 1 fois.
Retourner vers « Coin Fourre-tout »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 39 invités