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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

machine a bobiner
F5OKS
Membre
Membre
Messages : 15
Enregistré en : février 2017

#11 Message par F5OKS » dim. 1 avr. 2018 15:06

Bonjour a tous
J'essai en vain d'inserrer mon code ...
J'espere que cela va s'afficher correctement ?
F5oks

Code : Tout sélectionner

;j'ai utilisé le tmer0 pour créer le signal d'avance du moteur de broche  car la vitesse n'est pas rapide 1 T/S et pendant le découlement du timer on fait une foule de chose. 

    ERRORLEVEL -302            ; suppression du message bank select 
    LIST      p=16F628a            ; Définition de processeur
    #include <p16F628a.inc>        ; fichier include

    __CONFIG   _CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_OFF  & _PWRTE_ON & _WDT_OFF & _HS_OSC 

;*****************************************************************************

; REGISTRE OPTION_REG (configuration)
; -----------------------------------
OPTIONVAL    EQU    B'
000000011'
            ; RBPU      b7 : 1= Résistance rappel +5V hors service
            ; INTEDG    b6 : 1= Interrupt sur front montant de RB0
            ;                0= Interrupt sur front descendant de RB0
            ; TOCS      b5 : 1= source clock = transition sur RA4
            ;                0= horloge interne
            ; TOSE      b4 : 1= Sélection front descendant RA4(si B5=1)
            ;                0= Sélection front montant RA4
            ; PSA       b3 : 1= Assignation prédiviseur sur Watchdog
            ;                0= Assignation prédiviseur sur Tmr0
            ; PS2/PS0   b2/b0 valeur du prédiviseur
                        ;           000 =  1/1 (watchdog) ou 1/2 (tmr0)
            ;           001 =  1/2               1/4
            ;           010 =  1/4             1/8
            ;           011 =  1/8             1/16
            ;           100 =  1/16             1/32
            ;           101 =  1/32             1/64
            ;           110 =  1/64             1/128
            ;           111 =  1/128         1/256


; REGISTRE INTCON (contrôle interruptions standard)
; -------------------------------------------------
INTCONVAL    EQU    B'
00100000'
            ; GIE       b7 : masque autorisation générale interrupt
                        ;                ne pas mettre ce bit à 1 ici
                        ;                sera mis en temps utile
            ; PEIE      b6 : masque autorisation générale périphériques
            ; T0IE      b5 : masque interruption tmr0
            ; INTE      b4 : masque interuption RB0/Int
            ; RBIE      b3 : masque interruption RB4/RB7
            ; T0IF      b2 : flag tmr0
            ; INTF      b1 : flag RB0/Int
            ; RBIF      b0 : flag interruption RB4/RB7

; REGISTRE PIE1 (contrôle interruptions périphériques)
; ----------------------------------------------------
PIE1VAL        EQU    B'
00000000'
            ; EEIE      b7 : masque interrupt écriture EEPROM
            ; CMIE      b6 : masque interrupt comparateur
            ; RCIE      b5 : masque interrupt réception USART
            ; TXIE      b4 : masque interrupt transmission USART
            ; RESERVED  b3 : réservé, laisser à 0
            ; CCP1IE    b2 : masque interrupt CCP1
            ; TMR2IE    b1 : masque interrupt TMR2 = PR2
            ; TMR1IE    b0 : masque interrupt débordement tmr1


; REGISTRE CMCON (COMPARATEURS)
; ------------------------------------
CMCONVAL    EQU    B'
00000111
            ; C2OUT        b7 :sortie comparateur2
            ; C1OUT     b6 :sortie comparateur1
            ; C2INV     b5 :inverseur comparateur2
            ; C1INV     b4 :inverseur comparateur1
            ; CIS       b3 :selection entree des comparateurs
            ; CM2-CM0   b2-0 :mode des comparateurs
            ;configurer le mode 111 pour utiliser RA0 RA1 RA2 RA3 en I/O

; REGISTRE VRCON (voltage reference module)
; ------------------------------------
VRCONVAL    EQU    B'
00000000'
            ; VREN      b7 :Validation du module
            ; VROE      b6 :Sortie sur RA2
            ; VRR       b5 :Choix de la plage 
            ; RESERVED  b4 : réservé, laisser à 0
            ; VR3-VR0   b3-0 :Choix de la valeur dans la plage 
                    ; si VRR=1 VREF=(VR[3:0]/24)*Vdd
                    ; si VRR=0 VREF=Vdd/4(VR[3:0]/32)*Vdd

; DIRECTION DES PORTS I/O
; -----------------------

DIRPORTA    EQU    B'
11110000'    ; Direction PORTA (1=entrée)
DIRPORTB    EQU    B'
11110000'    ; Direction PORTB


;*****************************************************************************
;                           ASSIGNATIONS PROGRAMME                           *
;*****************************************************************************

; exemple
; -------
;MASQUE        EQU    H'
00FF'


;*****************************************************************************
;                                  DEFINE                                    *
;*****************************************************************************

; exemple
; -------
#DEFINE SENS1   PORTA,0            ;MOTEUR BOBINE L298
#DEFINE CLK1     PORTA,1    
#DEFINE RST1     PORTA,2
#DEFINE DEMI1   PORTA,3

#DEFINE SENS2    PORTB,0            ;MOTEUR CHARIOT L298
#DEFINE CLK2    PORTB,1        
#DEFINE RST2    PORTB,2        
#DEFINE DEMI2    PORTB,3
            
#DEFINE bobineav    PORTB,7            ;POUSSOIR    
#DEFINE bobinear    PORTB,6             
#DEFINE chariotd    PORTB,5        
#DEFINE chariotg    PORTB,4    

#DEFINE ETATIRQ  ETAT,0            

#DEFINE mode    PORTA,4      ;axes individuel ou couplés
#DEFINE avar    PORTA,5         ;avance chariot droite ou gauche  
#DEFINE IRQTE   INTERCON,TOIE     
#DEFINE IRQTF   INTERCON,TOIF
#DEFINE IRQG    INTERCON,GIE
 
     


;*****************************************************************************
;                             MACRO                                          *
;*****************************************************************************
            ; Changement de banques


BANK0    macro                ; passer en banque0
        bcf    STATUS,RP0
        bcf    STATUS,RP1
   endm

BANK1    macro                ; passer en banque1
        bsf    STATUS,RP0
        bcf    STATUS,RP1
    endm

BANK2    macro                ; passer en banque2
        bcf    STATUS,RP0
        bsf    STATUS,RP1
    endm

BANK3    macro                ; passer en banque3
        bsf    STATUS,RP0
        bsf    STATUS,RP1
    endm


    

;*****************************************************************************
;                      VARIABLES ZONE COMMUNE                                *
;*****************************************************************************

; Zone de 16 bytes
; ----------------

    CBLOCK 0x70            ; Début de la zone (0x70 à 0x7F)
    w_temp : 1            ; Sauvegarde registre W
    status_temp : 1            ; sauvegarde registre STATUS
    FSR_temp : 1            ; sauvegarde FSR (si indirect en interrupt)
    ETAT:1
    etatirq:1
    Npass:1   ;nombre de passage TO
    CMPTIMPULS :1
    CMPTIMPULS1 :1 
    CMPTIMPULS2:1
    Ntour :1 
    demtour :1
 ;   Npas:1    
    npas:1    ;nombre de pas des chariots (fil) 
;    avar:1    ;sens du chariot
     loop1:1
     loop2:1
     loop3:1
;     mode:1   ; impulsion ou marche continue
    ENDC

;*****************************************************************************
;                        VARIABLES BANQUE 0                                  *
;*****************************************************************************

; Zone de 80 bytes
; ----------------

    CBLOCK    0x20            ; Début de la zone (0x20 à 0x6F)

;Exemples
;--------
    ;test :1                ; Zone de 1 byte
    ;table : 10            ; zone de 10 bytes

        ENDC                ; Fin de la zone                        

;var1     EQU H'
006E'            ; adresse imposée


;*****************************************************************************
;                        VARIABLES BANQUE 1                                  *
;*****************************************************************************

; Zone de 80 bytes
; ----------------

    CBLOCK    0xA0            ; Début de la zone (0xA0 à 0xEF)

    ENDC                ; Fin de la zone                        

;*****************************************************************************
;                        VARIABLES BANQUE 2                                  *
;*****************************************************************************

; Zone de 48 bytes
; ----------------

    CBLOCK    0x120            ; Début de la zone (0x120 à 0x14F)

    ENDC                ; Fin de la zone                        

       

;*****************************************************************************
;                      DEMARRAGE SUR RESET                                   *
;*****************************************************************************

    org 0x000             ; Adresse de départ après reset
      goto    init            ; Initialiser

; ////////////////////////////////////////////////////////////////////////////

;                         I N T E R R U P T I O N S

; ////////////////////////////////////////////////////////////////////////////

;*****************************************************************************
;                     ROUTINE INTERRUPTION                                   *
;*****************************************************************************
;-----------------------------------------------------------------------------
; Si on n'
utilise pas l'adressage indirect dans les interrupts, on se passera
; de sauvegarder FSR
;-----------------------------------------------------------------------------
            ;sauvegarder registres    
            ;---------------------
    org 0x004            ; adresse d'
interruption
    movwf   w_temp          
sauver registre W
    swapf    STATUS
,w        swap status avec résultat dans w
    movwf    status_temp        
sauver status swappé
    movf    FSR 
w            charger FSR
    movwf    FSR_temp        
sauvegarder FSR
    BANK0                
passer en banque0

            
; switch vers différentes interrupts
            
inverser ordre pour modifier priorités
            
mais attention alors au test PEIE
            
effacer les inutiles
            
;----------------------------------------
    
            ; 
Interruption TMR0
            
; -----------------

    
btfsc    INTCON,T0IE        tester si interrupt timer autorisée
    btfss    INTCON
,T0IF        ouitester si interrupt timer en cours
;    goto     intsw1            non test suivant
    call    inttmr0            
ouitraiter interrupt tmr0
    bcf    INTCON
,T0IF        effacer flag interrupt tmr0.
    
BSF  ETATIRQ
;    GOTO SUITE
    
goto    restorereg        et fin d'interruption
                ; SUPPRIMER CETTE LIGNE POUR
                ; TRAITER PLUSIEURS INTERRUPT
                ; EN 1 SEULE FOIS

            ; Interruption RB0/INT

            ;restaurer registres
            ;-------------------
restorereg
    movf    FSR_temp , w        ; charger FSR sauvé
    movwf    FSR            ; restaurer FSR
    swapf    status_temp,w        ; swap ancien status, résultat dans w
    movwf   STATUS            ; restaurer status
    swapf   w_temp,f        ; Inversion L et H de l'
ancien W
                                   
sans modifier Z
    swapf   w_temp
,w          Réinversion de L et H dans W
                    
W restauré sans modifier status
    retfie              
; return from interrupt

;*****************************************************************************
;                        
INTERRUPTION TIMER 0                                *
;*****************************************************************************
inttmr0
    
return                ; fin d'interruption timer
                    ; peut être remplacé par 
                    ; retlw pour retour code d'
erreur

;*****************************************************************************

////////////////////////////////////////////////////////////////////////////

;                           P R O G R A M M E

////////////////////////////////////////////////////////////////////////////

;*****************************************************************************
;                          
INITIALISATIONS                                   *
;*****************************************************************************
init

            
initialisation PORTS (banque 0 et 1)
            ; ------------------------------------
    
BANK0                sélectionner banque0
    clrf    PORTA            
Sorties PORTA à 0
    clrf    PORTB            
sorties PORTB à 0
    CLRF    Npass
    CLRF    CMPTIMPULS
    BANK1                
passer en banque1
    movlw    DIRPORTA        
Direction PORTA
    movwf    TRISA            
écriture dans registre direction
    movlw    DIRPORTB        
Direction PORTB
    movwf    TRISB            
écriture dans registre direction

            
Registre d'options (banque 1)
            ; -----------------------------
    movlw    OPTIONVAL        ; charger masque
    movwf    OPTION_REG        ; initialiser registre option

            ; registres interruptions (banque 1)
            ; ----------------------------------
    movlw    INTCONVAL        ; charger valeur registre interruption
    movwf    INTCON            ; initialiser interruptions
    movlw    PIE1VAL            ; Initialiser registre 
    movwf    PIE1            ; interruptions périphériques 1
    movlw    VRCONVAL        ; charger valeur registre interruption
    movwf    VRCON            ; initialiser interruptions
    BANK0                ; sélectionner banque 0
    movlw    CMCONVAL        ; charger valeur registre interruption
    movwf    CMCON            ; initialiser interruptions

            ; Effacer RAM banque 0
            ; ---------------------
    BANK0                ; sélectionner banque 0
    movlw    0x20            ; initialisation pointeur
    movwf    FSR             ; d'
adressage indirect
init1
    clrf    INDF            
effacer ram
    incf    FSR
,f            pointer sur suivant
    btfss    FSR
,7            tester si fin zone atteinte (>7F)
    goto    
init1            nonboucler

            
autoriser interruptions (banque 0)
            ; ----------------------------------
    
clrf    PIR1            effacer flags 1
    bsf    INTCON
,GIE        valider interruptions
    
goto    start            programme principal


;*****************************************************************************
;                      
PROGRAMME PRINCIPAL                                   *
;*****************************************************************************

start      
 
;pour simuler je force CMPTIMPULS a 0X64  et btfsc en action de poussoir,TO a FF
             
                 MOVLW   0XFF          
;nombre de tours a bobiner
                 MOVWF   Ntour
             BSF     CLK2                                          
DEBUT            BTFSS   ETATIRQ
                 
GOTO    DEBUT
SUITE            BCF     ETATIRQ
                 BTFSC    Ntour
,;apres 2 tours on accellere
                 
GOTO     touche1
    BANK1
                 MOVLW  
B'000000010'  ;1 tour seconde environ
                 movwf   OPTION_REG  
        BANK0      
  touche1                       
;btfsc pour simuler
      btfsC PORTB
,7                      
      
goto touche2                        
      btfsc PORTB
,7           btfsc car on garde l'appui             
      goto $+D'
2'                         
      goto $+D'
3'                         
      call anti_rebond                    
      goto $-D'
4
   
      goto    bobav

touche2
      btfsC PORTB,6                       ; si le bit RB6 est à 1 on va à la ligne 1 
      goto touche3                          ; pas d'
appuie sur le bouton pousoir 
      btfsc PORTB
,6                       si le bit RB6 est à 0 on va à la ligne 1
      
goto $+D'2'                         appuie sur le bouton pousoir 
      
goto $+D'3'                         appuie relaché sur le bouton pousoir
      call anti_rebond                    
gestion anti rebond
      
goto $-D'4' 
   
       
goto   bobar    rotation inverse uniquement en mode individuel pour l'instant                   

touche3
      btfsc PORTB,5                       ; si le bit RB5 est à 1 on va à la ligne 1 
      goto touche4                        ; pas d'
appuie sur le bouton pousoir 
      btfsc PORTB
,5                       si le bit RB5 est à 0 on va à la ligne 1
      
goto $+D'2'                         appuie sur le bouton pousoir 
      
goto $+D'3'                         appuie relaché sur le bouton pousoir
      call anti_rebond                    
gestion anti rebond
      
goto $-D'4'
    
      
goto   charav

touche4
      btfss PORTB
,4     ;au repos a 1 scan et dem appui et fonction si 0 
      
goto touch4
      movlw 0XFF        
;on repasse en vitesse lente si pas d'action
      movwf  Ntour      ; cmpteur de demarrage lent 
    BANK1
      MOVLW  B'
000000011'    ;remettre le prediviseur a 11 pour le prochain démarrage , car pas d'action
      movwf   OPTION_REG  
       BANK0          
      
goto touche1 
                              
;
touch4 btfsc PORTB,4                       
      
goto $+D'2'                         ;
      goto $+
D'3'                         
      
call anti_rebond                    
      
goto $-D'4' 
   
      
goto charar

bobav   
       movf      CMPTIMPULS
,w
       SUBLW      D
'100'   ;1 tour de broche 2OOpas(clock down400 passages TM0 ,donc dans ce cas on avance de 4 pas par tour soit 4 x 0,070,28 .Le fil                            ;d'essai mesure 0,30 .Je prévois donc une correction en ajoutant un pas tous les 15 tours pour ce diametre ... 
       btfsC     STATUS,Z
      
       GOTO     apres     ;on a fait 1/4 tour de bobine ,on va tester si on est en mode couplé ou indivi
       incf     CMPTIMPULS,F       
     
       BSF        SENS1
       BcF        DEMI1 ;pas entier
       BsF        RST1 
       BTFSC        CLK1  ;porta,2           ;
       GOTO       IMPULSL1
       BsF        CLK1      ;front montant
       goto       DEBUT 
apres  
       CLRF      CMPTIMPULS
       DECF      Ntour       ;sera exploité pour nombres de tours et ajustement de position quand le pas n'
est une division juste du diametre du filavec                              E/S suplémentaires clavier ou codeuses 

       
;INCF   demtour

       BTFSS      mode       
axes individuels  ou couplés
       
GOTO       DEBUT
       btfsC      avar       
;le chariot va vers la droite ou vers la gauche ?
       goto       
charav
       
goto       charar 
      
bobar  
en rotation inversée on ne syncronise pas le chariot le bobinage se fait dans un seul sens
       
DECF       CMPTIMPULS,f  
       btfsc      STATUS
,Z
       
GOTO      DEBUT
       BCF        SENS1  
;sens inversé
       BSF        DEMI1   
;pas entier
       BsF        RST1
         
      
       BTFSC      CLK1    
;porta,2
       
GOTO       IMPULSL1

       BSF        CLK1
     
       
GOTO       DEBUT
   

charav                      
       clrf    CMPTIMPULS   
;on a fait une fraction de tour maintenant on positionne le fil
       BSF      avar
       BsF     SENS2 
       BSF     DEMI2       
;demi pas
       BsF        RST2
       BTFSc   CLK2
       
goto     IMPULSL2av
       BSF        CLK2
       BTFSC      mode      
;indivi ou couplé
       
GOTO       DEBUT
       call      tempochariot
       
goto   charav

charar
       clrf      CMPTIMPULS
       bcf        avar 
       BCF        SENS2
       BCF        DEMI2  
       BsF        RST2
       BTFSC      CLK2
       
GOTO       IMPULSL2ar
       BSF        CLK2 
       BTFSC      mode
       
goto       DEBUT
       call      tempochariot
       
goto   charar

        

IMPULSL1  
           BCF  CLK1 
          
          
GOTO  DEBUT

IMPULSL2av 
         BCF  CLK2       
;clock down fait avancer le fil
         call   tempochariot  
temps de maintient
         BSF    CLK2          
         
GOTO DEBUT

IMPULSL2ar
       BCF  CLK2 
       call   tempochariot
       BSF    CLK2 
       
GOTO DEBUT

 
anti_rebond
                                
      movlw D
'2'                         
      
movwf loop1                           
                                            
      decfsz loop1
,F                        
      
goto $-D'1'                          

      
return      

tempochariot 
     movlw  D
'100'  
     
movwf  loop3

enc  decfsz  loop3
,f
     
goto   enc
     
return
    
        
    
END                 directive fin de programme

;1 tour a la seconde soit 200pas ou (400demi)  2 passages TM0 =255 cycles soit un peu moin d'un tour seconde     
 
;DEFINE SENS1    PORTA,0            ;MOTEUR BOBINE
;DEFINE CLK1    PORTA,1    
;DEFINE RST1    PORTA,2
;DEFINE DEMI1    PORTA,3

;DEFINE SENS2    PORTB,0            ;MOTEUR CHARIOT
;DEFINE CLK2    PORTB,1        
;DEFINE RST2    PORTB,2        
;DEFINE DEMI2    PORTB,3
            
;DEFINE bobineav    PORTB,7            ;POUSSOIR    
;DEFINE bobinear    PORTA,6             
;DEFINE chariotd    PORTB,5        
;DEFINE chariotg    PORTB,4            
        
;#DEFINE mode    PORTA,4      ;axes individuel ou couplés
;#DEFINE avar    PORTA,5         ;avance chariot droite ou gauche

machine a bobiner
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#12 Message par ducran lapoigne » dim. 1 avr. 2018 21:18

Bonsoir tous,
si ce n' est déja fait, inclure dans le projet un petit codeur qui permettera le décomptage des spires si retour en arrière

superbe projet que je vais suivre

antoine

machine a bobiner
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#13 Message par Temps-x » lun. 2 avr. 2018 00:51

Bonjour F5OKS, ducran lapoigne, et tout le forum,

Donc, si j'ai bien compris ça fonctionne ?

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

machine a bobiner
F5OKS
Membre
Membre
Messages : 15
Enregistré en : février 2017

#14 Message par F5OKS » lun. 2 avr. 2018 09:48

Bonjour Tempx bonjour Ducran bonjour a tous
Cela fonctionne ,essai effectué avec du fil 0.30 sur quelques centimetres de longueur,mais beaucoup de chose reste a améliorer.
Je prépare un programme avec 16f877a afin d'avoir plus de port;
Le mode de vitesse variable en modifiant le registre option n'est pas tres élégant donc a voir avec un pwm;
les poussoirs sont en impulsion,a modifier apres la mise au point mécanique .
L'écrou de la vis est en bronze ,il faut donc un rattrappage de jeu au changement de direction au moin aux extremités de course du chariot (peut etre al'aide des fins de course;
Une correction de pas par addition ou soustration apres un certain nombre de tour est en cours et fonctionne mais n'est pas pratique a l'utilisation car cela se fait dans le programme,donc je prévoir des roues codeuses pour entrer un pas principal + une correction en interval nombre de tour ... si quelqu'un a d'autres idées;
Voila,a plus avec de nouvelles idées
F5oks

machine a bobiner
F5OKS
Membre
Membre
Messages : 15
Enregistré en : février 2017

#15 Message par F5OKS » lun. 2 avr. 2018 09:53

j'ai oublié,ok pour le codeur sur la broche ,et en dehors du repèrage programme bien sur;
merci Antoine

machine a bobiner
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#16 Message par paulfjujo » lun. 2 avr. 2018 11:49

Temps-x a écrit :
F5OKS a écrit :
Source du message un 18F avec usb serai peut être intéressant également ?


Gestion de l'usb avec un 18F, ni pense même pas, car il y a du progrès à faire chez Microchip de ce coté là, surtout avec
un microcontrôleur 8 bits.




En asm , probablementy, mais en C (mikroC) ,il n'y a pas de probleme.
On peut meme avoir un bootloader HID dans le 18F4550, et donc programmer (envoi du HEX) directement via l' USB
et utiliser le HID Terminal (laision COM vrtuelle).

Dans tous les cas , un 18F ne peut pas etre USB HOST .. sinon il faut passer au PIC24F ou PIC32
mais pour une telle appli , le mode USB client doit etre suffisant.
Le PC pouvant envoyer des ordres via l'USB.

meme si on peut faire la meme chose avec un PIC classic et UART + cordon TTL/USB
(UART maitrisable en ASM .)
Aide toi, le ciel ou FantasPic t'aidera

machine a bobiner
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#17 Message par Temps-x » lun. 2 avr. 2018 13:22

Bonjour F5OKS, ducran lapoigne, paulfjujo, et tout le forum,

paulfjujo a écrit :
Source du message En asm , problématique, mais en C (mikroC) ,il n'y a pas de probleme.


Je suis allergique au C :furieux: et pour l'instant et vu le temps que je dispose :cry: je reste dans les microcontrôleurs 8 bits. :wink:

Merci ! paulfjujo pour l'info sur l'USB 8-)


Pour rester dans le sujet de F5OKS

F5OKS a écrit :
Source du message Je prépare un programme avec Pic16f877A afin d'avoir plus de port;


Ok, maintenant que j'ai compris ce que tu veux ça sera plus simple, le Pwm n'est pas forcément une bonne solution.

Comme le dit paulfjujo coté PC RS232(UART) version ASM.

F5OKS tu as quoi comme encodeur rotatif ?

Dans ton montage de la bobineuse, as tu un moteur pas à pas qui doit avoir une vitesse constante ?

Pas si simple que ça pour organisé l'organigramme de cette bobineuse, avec tous les infos que vient nous donner F5OKS oops

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

machine a bobiner
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#18 Message par F6FCO » mer. 4 avr. 2018 18:03

Bonjour tous,
Pour ton rattrapage de jeu du peux le faire mécaniquement, il y a plein d'exemples sur le net., Je peux te faire des photos de mon systeme si tu veux.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

machine a bobiner
F5OKS
Membre
Membre
Messages : 15
Enregistré en : février 2017

#19 Message par F5OKS » mer. 4 avr. 2018 21:42

Bonsoir a tous
Oui f6fco,explique moi comment tu fait .A mon avis l'intérêt du rattrapage n'est que dans le sens de la charge donc au changement de direction.
A moins d'utiliser une vis a bille;je ne souhaite pas de contrainte sur le pas de vis par écrou et contre écrou.
Mon idée est de remettre le positionnement a 0 a chaque extremité de course des que le jeu a été rattrappé et que le chariot quitte le contact de fin de course ;l'info sera donnée par ce contact qui aura 2 fonctions :une pour la sécurité et l'autre pour le 0 du positionnement.
F5oks

machine a bobiner
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#20 Message par F6FCO » mer. 4 avr. 2018 23:42

J'avais fais çà sur ma première cnc en médium, la plaque réglable est percée/taraudée au pas de la vis. Si c'est bien construit et bien réglé il n'y a pas de contraintes et un jeu zéro avant/arrière. Bien sur il faut graisser la vis. J'avais fais çà avec de la récup mais si tu choisis une tige filetée et des écrous en laiton (filetage usiné) il y a moins de jeu que sur de l'acier (filetage roulé), donc le travail est déjà à moitié fait.
Cliques sur la photo pour l'agrandir.

4L2.JPG


En cherchant sur le net tu trouveras plein d'autres idées avec des noix en plastique, POMC, etc.
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:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : F6FCO et 40 invités