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 ---
Modérateur : mazertoc
RUB1K
RUB1K
- F6FCO

Expert- Messages : 2846
- Âge : 99
- Enregistré en : décembre 2017
- Localisation : Banlieue sud de Klyntar
- Contact :
C'est bien çà, j'ai coupé les pistes pour isoler les TCS, çà fonctionne super bien et j'ai un signal propre. En // ils se contrariaient, j'ai du mal comprendre le datasheet et leur histoire de haute-impédance. Ce datasheet est très (trop) succinct.
Je vais refaire un PCB nouvelle version.
L'aventure continue. Je suis heureux d'être content
Je vais refaire un PCB nouvelle version.
L'aventure continue. Je suis heureux d'être content
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
RUB1K
On en a parlé longuement sur ce fil : viewtopic.php?style=1&f=37&t=1326&hilit=table
Si tu te lances dans le bricolage : surtout pas de thermocouple chemisé chinois. Trop d'inertie thermique, ce qui rend la régulation plus qu'hasardeuse. Avec un TC nu bien en contact avec la table c'est parfait (en fait je l'ai tout de même isolé avec un pad silicone pour TO220 plié en 2, et une épingle en corde à piano vient le plaquer contre l'alu).
Si tu te lances dans le bricolage : surtout pas de thermocouple chemisé chinois. Trop d'inertie thermique, ce qui rend la régulation plus qu'hasardeuse. Avec un TC nu bien en contact avec la table c'est parfait (en fait je l'ai tout de même isolé avec un pad silicone pour TO220 plié en 2, et une épingle en corde à piano vient le plaquer contre l'alu).
RUB1K
- F6FCO

Expert- Messages : 2846
- Âge : 99
- Enregistré en : décembre 2017
- Localisation : Banlieue sud de Klyntar
- Contact :
Hello le monde,
Après l'épisode CNC je n'ai pas lâché l'affaire, la partie hardware et son soft avance bien. Il faut attendre de recevoir les TCS3200 pour finaliser l'analyse des couleurs, rajouter un servo qui placera/déplacera un cache noir sur les carrés à analyser.
La partie manipulation du cube est opérationnelle, le dialogue maître (18F4525) vers esclave (18F2525) fonctionne très bien avec mon protocole simplifié.
Le maître s'occupera de faire tourner les moteurs par 1/4 de tour, l'analyse du cube mélangé et la résolution finale.
L'esclave s'occupe de la gestion des servomoteurs et plus tard du LCD.
En attendant je vais pouvoir réfléchir aux pinces de préhension, un gros morceau sur lequel j'avais déjà calé sur mes précédents essais.
Voici le protocole entre les deux pic, il occupe 5 pins du portB sur chaque PIC mais pas important, il en restera plein de non utilisées sur les deux. Servo4 servira à la lecture des couleurs, placer un cache pour éviter les réfections des couleurs adjacentes qui déformeraient les valeurs analysées, le TCS3200 analyse large.
D'autres ordres seront rajoutés plus tard pour la gestion des messages du LCD. Pour les jets d'eau je n'ai pas eu l'autorisation de ma femme.
Le bazar à l'arrière du châssis
Et le machin en démo
https://www.youtube.com/watch?v=iPv90sAjFI0
Le code coté maître
Le code coté esclave:
Après l'épisode CNC je n'ai pas lâché l'affaire, la partie hardware et son soft avance bien. Il faut attendre de recevoir les TCS3200 pour finaliser l'analyse des couleurs, rajouter un servo qui placera/déplacera un cache noir sur les carrés à analyser.
La partie manipulation du cube est opérationnelle, le dialogue maître (18F4525) vers esclave (18F2525) fonctionne très bien avec mon protocole simplifié.
Le maître s'occupera de faire tourner les moteurs par 1/4 de tour, l'analyse du cube mélangé et la résolution finale.
L'esclave s'occupe de la gestion des servomoteurs et plus tard du LCD.
En attendant je vais pouvoir réfléchir aux pinces de préhension, un gros morceau sur lequel j'avais déjà calé sur mes précédents essais.
Voici le protocole entre les deux pic, il occupe 5 pins du portB sur chaque PIC mais pas important, il en restera plein de non utilisées sur les deux. Servo4 servira à la lecture des couleurs, placer un cache pour éviter les réfections des couleurs adjacentes qui déformeraient les valeurs analysées, le TCS3200 analyse large.
D'autres ordres seront rajoutés plus tard pour la gestion des messages du LCD. Pour les jets d'eau je n'ai pas eu l'autorisation de ma femme.
Le bazar à l'arrière du châssis
Et le machin en démo
https://www.youtube.com/watch?v=iPv90sAjFI0
Le code coté maître
Code : Tout sélectionner
;**********************************************************************
;
; Résolution du Rubik-cube
; F6FCO - juin 2024
;
;**********************************************************************
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
list p=18f4525 ; processeur utilisé
#include <p18f4525.inc> ; Définitions des constantes PIC
CONFIG OSC = INTIO67 ; Oscillateur interne 8MHz
;CONFIG OSC = XT ; Oscillateur xtal externe
CONFIG IESO = OFF ; Délai au démarrage (ON/OFF)
CONFIG BOREN = OFF ; Reset si chute de tension (ON/OFF)
CONFIG PWRT = ON ; Délai au démarrage (ON/OFF)
CONFIG BORV = 0 ; Tension de reset en 1/10ème Volts
CONFIG WDT = OFF ; Mise hors service du watchdog (ON/OFF)
CONFIG PBADEN = OFF ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
CONFIG LPT1OSC = OFF ; Timer1 configuré pour un fonctionnement plus puissant
CONFIG MCLRE = ON ; Mclr configuré comme entrée
CONFIG STVREN = ON ; Reset sur débordement de pile (ON/OFF)
CONFIG LVP = OFF ; Programmation basse tension autorisée (ON/OFF)
CONFIG XINST = OFF ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
CONFIG DEBUG = OFF ; Debugger hors service
CONFIG CP0 = OFF ; Code protection sur block 0 (ON/OFF)
CONFIG CP1 = OFF ; Code protection sur block 1 (ON/OFF)
CONFIG CP2 = OFF ; Code protection sur block 2 (ON/OFF)
CONFIG CPB = OFF ; Code protection sur bootblock (ON/OFF)
CONFIG CPD = OFF ; Code protection sur eeprom (ON/OFF)
CONFIG WRT0 = OFF ; Protection écriture block 0 (ON/OFF)
CONFIG WRT1 = OFF ; Protection écriture block 1 (ON/OFF)
CONFIG WRT2 = OFF ; Protection écriture block 2 (ON/OFF)
CONFIG WRTB = OFF ; Protection écriture bootblock (ON/OFF)
CONFIG WRTC = OFF ; Protection écriture configurations (ON/OFF)
CONFIG WRTD = OFF ; Protection écriture zone eeprom (ON/OFF)
CONFIG EBTR0 = OFF ; Protection lecture de table block 0 (ON/OFF)
CONFIG EBTR1 = OFF ; Protection lecture de table block 1 (ON/OFF)
CONFIG EBTR2 = OFF ; Protection lecture de table block 2 (ON/OFF)
CONFIG EBTRB = OFF ; Protection lecture de table bootblock (ON/OFF)
; ---------------------- moteurs pas à pas
#define pap1clk PORTD,1
#define pap1cw PORTD,2
#define pap2clk PORTD,3
#define pap2cw PORTD,4
#define pap3clk PORTD,5
#define pap3cw PORTD,6
; ---------------------- TCS3200
#define TCS1s2 PORTA,0
#define TCS1s3 PORTA,1
#define TCS1out PORTA,2
#define TCS1oe PORTA,3
#define TCS2s2 PORTA,4
#define TCS2s3 PORTA,5
#define TCS2out PORTE,0
#define TCS2oe PORTE,1
#define TCS3s2 PORTE,2
#define TCS3s3 PORTC,0
#define TCS3out PORTC,1
#define TCS3oe PORTC,2
; ---------------------- poussoir
#define pous1 PORTD,0
CBLOCK 0x00C
w_temp :1 ; Sauvegarde du registre W
status_temp :1 ; Sauvegarde du registre STATUS
Reg_1 :1
Reg_2 :1
Reg_3 :1
conchita :2 ; variable bonne à tout faire
cycle :1 ; sert aux servos
rouge :2
vert :2
bleu :2
ptr :1
Nami_ptr :2 ; pointeur de ticks moteur Namiki
ENDC
org 0x000 ; Adresse de départ après reset
bra init ; Adresse 0: initialiser
; ------------------------ Routines Interruptions
;sauvegarder registres
org 0x008 ; 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é
; Interrupt TIMER0
btfsc INTCON,TMR0IE ; bit5. interrupt timer0 autorisée ?
btfss INTCON,TMR0IF ; bit2. si oui, tester si interrupt timer en cours
bra restorereg
call inttimer0 ; vers routine interrupt timer0
bcf INTCON,TMR0IF ; effacer flag interrupt timer0
;restaurer registres
restorereg
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
; Routine d'interruption TIMER 0
inttimer0 return
; ------------------------ Init
init
clrf EEADR ; diminue la consommation
; init oscillateur
movlw 0xff
movwf OSCCON
; init Timer0
movlw h'A8' ; compteur 16bits sur pin TOCKI sans prescaler
movwf T0CON
; init TMR0
clrf TMR0L
clrf TMR0
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
; inti ports
movlw 0Fh
movwf ADCON1 ; mode digital
movlw b'00000100'
movwf TRISA
movlw b'00000000'
movwf TRISB
movlw b'00000010'
movwf TRISC
movlw b'0000001'
movwf TRISD
movlw b'00000001'
movwf TRISE
movlw b'10100000' ; masque interruption
movwf INTCON ; charger interrupt control
clrf rouge
clrf rouge+1
clrf vert
clrf vert+1
clrf bleu
clrf bleu+1
; -----------------------------------
Code : Tout sélectionner
#include<Rub1k_Init.asm>
; -----------------------------------
main
Démo movlw 0x0A ; les 3 servos en arrière
movwf PORTB
call tempo0.5s
nop
s1 movlw 0x01 ; servo1 avant
movwf PORTB
call tempo0.5s
nop
call Pap1_QuartDeTourAvant
call tempo0.5s
call Pap1_QuartDeTourArrière
nop
movlw 0x02 ; servo1 arrière
movwf PORTB
call tempo0.5s
nop
s2 movlw 0x03 ; servo2 avant
movwf PORTB
call tempo0.5s
nop
call Pap2_QuartDeTourAvant
call tempo0.5s
call Pap2_QuartDeTourArrière
nop
movlw 0x04 ; servo2 arrière
movwf PORTB
call tempo0.5s
nop
s3 movlw 0x05 ; servo3 avant
movwf PORTB
call tempo0.5s
nop
call Pap3_QuartDeTourAvant
call tempo0.5s
call Pap3_QuartDeTourArrière
nop
movlw 0x06 ; servo3 arrière
movwf PORTB
call tempo0.5s
nop
s23 movlw 0x07 ; servos 2 et 3 avant
movwf PORTB
call tempo0.5s
nop
call Pap2_QuartDeTourAvant
call Pap3_QuartDeTourAvant
call tempo0.5s
call Pap2_QuartDeTourArrière
call Pap3_QuartDeTourArrière
nop
movlw 0x08 ; servos 2 et 3 arrière
movwf PORTB
call tempo0.5s
nop
s123 movlw 0x09 ; servos 1,2 et 3 avant
movwf PORTB
call tempo0.5s
nop
call Pap1_QuartDeTourAvant
call Pap2_QuartDeTourAvant
call Pap3_QuartDeTourAvant
call tempo0.5s
call Pap1_QuartDeTourArrière
call Pap2_QuartDeTourArrière
call Pap3_QuartDeTourArrière
nop
movlw 0x0A ; servos 1,2 et 3 arrière
movwf PORTB
call tempo0.5s
nop
tournelibre
movlw d'24'
movwf conchita
tl1 call Pap1_QuartDeTourAvant
decfsz conchita
bra tl1
bra main
#include <Rub1k_routines.asm>
#include <Rub1k_tempos.asm>
END
Code : Tout sélectionner
Pap1_QuartDeTourAvant
bsf pap1cw
movlw d'200'
movwf ptr
pp1av bsf pap1clk
call tempoPap
bcf pap1clk
call tempoPap
decfsz ptr
bra pp1av
return
Pap1_QuartDeTourArrière
bcf pap1cw
movlw d'200'
movwf ptr
pp1ar bsf pap1clk
call tempoPap
bcf pap1clk
call tempoPap
decfsz ptr
bra pp1ar
return
Pap2_QuartDeTourAvant
bsf pap2cw
movlw d'200'
movwf ptr
pp2av bsf pap2clk
call tempoPap
bcf pap2clk
call tempoPap
decfsz ptr
bra pp2av
return
Pap2_QuartDeTourArrière
bcf pap2cw
movlw d'200'
movwf ptr
pp2ar bsf pap2clk
call tempoPap
bcf pap2clk
call tempoPap
decfsz ptr
bra pp2ar
return
Pap3_QuartDeTourAvant
bsf pap3cw
movlw d'200'
movwf ptr
pp3av bsf pap3clk
call tempoPap
bcf pap3clk
call tempoPap
decfsz ptr
bra pp3av
return
Pap3_QuartDeTourArrière
bcf pap3cw
movlw d'200'
movwf ptr
pp3ar bsf pap3clk
call tempoPap
bcf pap3clk
call tempoPap
decfsz ptr
bra pp3ar
return
Code : Tout sélectionner
tempoPap
; Délai 400 Cycles de la machine
; Durée du délai 200 microsecond
; Fréquence de l'oscillateur 8 MHZ
movlw .133
movwf Reg_1,1
decfsz Reg_1,F,1
bra $-2
return
tempo1s
; Délai 2 000 000 Cycles de la machine
; Durée du délai 1 seconde
; Fréquence de l'oscillateur 8 MHZ
movlw .93
movwf Reg_1,1
movlw .38
movwf Reg_2
movlw .11
movwf Reg_3
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
decfsz Reg_3
bra $-.10
nop
nop
return
tempo0.5s
; Délai 1 000 000 Cycles de la machine
; Durée du délai 0.5 seconde
; Fréquence de l'oscillateur 8 MHZ
movlw .173
movwf Reg_1,1
movlw .19
movwf Reg_2
movlw .6
movwf Reg_3
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
decfsz Reg_3
bra $-.10
nop
nop
return
tempo0.3s
; Délai 600 000 Cycles de la machine
; Durée du délai 0.3 seconde
; Fréquence de l'oscillateur 8 MHZ
movlw .51
movwf Reg_1,1
movlw .12
movwf Reg_2
movlw .4
movwf Reg_3
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
decfsz Reg_3
bra $-.10
nop
nop
return
Le code coté esclave:
Code : Tout sélectionner
;******************************************************************************
; F6FCO - juin 2024
; Rub1k esclave
; Horloge interne 8MHz
;
; NOTE: - Ce code à été mis au point avec un servomoteur MG996R Tower Pro et n'a pas
; été testé avec d'autres servomoteurs.
; Il est possible que les valeurs duty-cycle ne soient pas adaptées pour
; un autre type, dans ce cas il faudra recalculer les tempos.
; - Pour un positionnement correct j'ai du adapter les valeurs de tempo
; par rapport à celles données par le datasheet.
; - Le PWM est calculé pour une horloge de 8Mhz. Pour une autre fréquence
; d'horloge il faudra recalculer les tempos.
; - Pour des valeurs d'angles intermédiaires, recalculer les tempos.
;
;******************************************************************************
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
list p=18f2525 ; processeur utilisé
#include <p18f2525.inc> ; Définitions des constantes PIC
CONFIG OSC = INTIO67 ; Oscillateur interne 8MHz
;CONFIG OSC = XT ; Oscillateur xtal externe
CONFIG IESO = OFF ; Délai au démarrage (ON/OFF)
CONFIG BOREN = OFF ; Reset si chute de tension (ON/OFF)
CONFIG PWRT = ON ; Délai au démarrage (ON/OFF)
CONFIG BORV = 0 ; Tension de reset en 1/10ème Volts
CONFIG WDT = OFF ; Mise hors service du watchdog (ON/OFF)
CONFIG PBADEN = OFF ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
CONFIG LPT1OSC = OFF ; Timer1 configuré pour un fonctionnement plus puissant
CONFIG MCLRE = ON ; Mclr configuré comme entrée
CONFIG STVREN = ON ; Reset sur débordement de pile (ON/OFF)
CONFIG LVP = OFF ; Programmation basse tension autorisée (ON/OFF)
CONFIG XINST = OFF ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
CONFIG DEBUG = OFF ; Debugger hors service
CONFIG CP0 = OFF ; Code protection sur block 0 (ON/OFF)
CONFIG CP1 = OFF ; Code protection sur block 1 (ON/OFF)
CONFIG CP2 = OFF ; Code protection sur block 2 (ON/OFF)
CONFIG CPB = OFF ; Code protection sur bootblock (ON/OFF)
CONFIG CPD = OFF ; Code protection sur eeprom (ON/OFF)
CONFIG WRT0 = OFF ; Protection écriture block 0 (ON/OFF)
CONFIG WRT1 = OFF ; Protection écriture block 1 (ON/OFF)
CONFIG WRT2 = OFF ; Protection écriture block 2 (ON/OFF)
CONFIG WRTB = OFF ; Protection écriture bootblock (ON/OFF)
CONFIG WRTC = OFF ; Protection écriture configurations (ON/OFF)
CONFIG WRTD = OFF ; Protection écriture zone eeprom (ON/OFF)
CONFIG EBTR0 = OFF ; Protection lecture de table block 0 (ON/OFF)
CONFIG EBTR1 = OFF ; Protection lecture de table block 1 (ON/OFF)
CONFIG EBTR2 = OFF ; Protection lecture de table block 2 (ON/OFF)
CONFIG EBTRB = OFF ; Protection lecture de table bootblock (ON/OFF)
#define servo1 LATA,1
#define servo2 LATA,2 ; servos 1, 2 et 3
#define servo3 LATA,3
#define cycle d'20' ; décompte durée d'envoi des impulsions 20ms sur les servos
CBLOCK 0x00C
w_temp :1 ; Sauvegarde du registre W
status_temp :1 ; Sauvegarde du registre STATUS
Reg_1 :1
Reg_2 :1
Reg_3 :1
conchita_slave :2 ; variable bonne à tout faire
mot_binaire :1 ; mot binaire reçu du maître
ptr :1
ENDC
org 0x000 ; Adresse de départ après reset
bra init ; Adresse 0: initialiser
; ------------------------ Routines Interruptions
;sauvegarder registres
org 0x008 ; 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é
; Interrupt TIMER0
btfsc INTCON,TMR0IE ; bit5. interrupt timer0 autorisée ?
btfss INTCON,TMR0IF ; bit2. si oui, tester si interrupt timer en cours
bra restorereg
call inttimer0 ; vers routine interrupt timer0
bcf INTCON,TMR0IF ; effacer flag interrupt timer0
;restaurer registres
restorereg
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
; Routine d'interruption TIMER 0
inttimer0 return
; ------------------------ Init
init
clrf PORTA
clrf PORTB
clrf PORTC
clrf EEADR ; diminue la consommation
; init oscillateur
movlw 0xff
movwf OSCCON
; init Timer0
movlw h'A8' ; compteur 16bits sur pin TOCKI sans prescaler
movwf T0CON
; init TMR0
clrf TMR0L
clrf TMR0
; inti ports
movlw 0Fh
movwf ADCON1 ; mode digital
movlw b'00000000'
movwf TRISA
movlw b'00011111'
;movlw b'00000000'
movwf TRISB
movlw b'00000000'
movwf TRISC
clrf PORTA
clrf PORTB
clrf PORTC
movlw b'10100000' ; masque interruption
movwf INTCON ; charger interrupt control
;bsf PORTB,0
;bcf PORTB,1
;bsf PORTB,2
;bcf PORTB,3
;bcf PORTB,4
; -----------------------------------
Code : Tout sélectionner
#include <Rub1k_esclave_init.asm>
main
; lecture du mot_binaire reçu du maître
nop
call Lecture_mot_binaire_sur_PORTB
;
movff mot_binaire,conchita_slave
movlw 0x01
subwf conchita_slave,f
bz s1av
movff mot_binaire,conchita_slave
movlw 0x02
subwf conchita_slave,f
bz s1ar
movff mot_binaire,conchita_slave
movlw 0x03
subwf conchita_slave,f
bz s2av
movff mot_binaire,conchita_slave
movlw 0x04
subwf conchita_slave,f
bz s2ar
movff mot_binaire,conchita_slave
movlw 0x05
subwf conchita_slave,f
bz s3av
movff mot_binaire,conchita_slave
movlw 0x06
subwf conchita_slave,f
bz s3ar
movff mot_binaire,conchita_slave
movlw 0x07
subwf conchita_slave,f
bz s23av
movff mot_binaire,conchita_slave
movlw 0x08
subwf conchita_slave,f
bz s23ar
movff mot_binaire,conchita_slave
movlw 0x09
subwf conchita_slave,f
bz s123av
movff mot_binaire,conchita_slave
movlw 0x0A
subwf conchita_slave,f
bz s123ar
bra main
s1av call servo1_AV
bra main
s1ar call servo1_AR
bra main
s2av call servo2_AV
bra main
s2ar call servo2_AR
bra main
s3av call servo3_AV
bra main
s3ar call servo3_AR
bra main
s23av call servo23_AV
bra main
s23ar call servo23_AR
bra main
s123av call servo123_AV
bra main
s123ar call servo123_AR
bra main
;Lecture_mot_binaire_sur_PORTB
clrf mot_binaire
btfsc PORTB,0
bsf mot_binaire,0
btfsc PORTB,1
bsf mot_binaire,1
btfsc PORTB,2
bsf mot_binaire,2
btfsc PORTB,3
bsf mot_binaire,3
btfsc PORTB,4
bsf mot_binaire,4
return
Lecture_mot_binaire_sur_PORTB
clrf PORTC
clrf mot_binaire
btfsc PORTB,0
bsf mot_binaire,0
btfsc PORTB,1
bsf mot_binaire,1
btfsc PORTB,2
bsf mot_binaire,2
btfsc PORTB,3
bsf mot_binaire,3
btfsc PORTB,4
bsf mot_binaire,4
movff mot_binaire,PORTC
return
#include <Routines_servo.asm>
END
Code : Tout sélectionner
servo1_AV
movlw cycle
movwf ptr
p11 bsf servo1
call tempo0.6ms
bcf servo1
call tempo19.4ms
decfsz ptr
goto p11
return
;
servo1_AR
movlw cycle
movwf ptr
p21 bsf servo1
call tempo1.2ms
bcf servo1
call tempo18.8ms
decfsz ptr
goto p21
return
;
servo2_AV
movlw cycle
movwf ptr
p12 bsf servo2
call tempo0.6ms
bcf servo2
call tempo19.4ms
decfsz ptr
goto p12
return
;
servo2_AR
movlw cycle
movwf ptr
p22 bsf servo2
call tempo1.2ms
bcf servo2
call tempo18.8ms
decfsz ptr
goto p22
return
;
servo3_AV
movlw cycle
movwf ptr
p13 bsf servo3
call tempo0.6ms
bcf servo3
call tempo19.4ms
decfsz ptr
goto p13
return
servo3_AR
movlw cycle
movwf ptr
p23 bsf servo3
call tempo1.2ms
bcf servo3
call tempo18.8ms
decfsz ptr
goto p23
return
;
servo23_AV
movlw cycle
movwf ptr
p23a bsf servo2
bsf servo3
call tempo0.6ms
bcf servo2
bcf servo3
call tempo19.4ms
decfsz ptr
goto p23a
return
;
servo23_AR
movlw cycle
movwf ptr
p23r bsf servo2
bsf servo3
call tempo1.2ms
bcf servo2
bcf servo3
call tempo18.8ms
decfsz ptr
goto p23r
return
;
servo123_AV
movlw cycle
movwf ptr
p123a bsf servo1
bsf servo2
bsf servo3
call tempo0.6ms
bcf servo1
bcf servo2
bcf servo3
call tempo19.4ms
decfsz ptr
goto p123a
return
;
servo123_AR
movlw cycle
movwf ptr
p123r bsf servo1
bsf servo2
bsf servo3
call tempo1.2ms
bcf servo1
bcf servo2
bcf servo3
call tempo18.8ms
decfsz ptr
goto p123r
return
; ------------------------------ tempos
tempo0.6ms
; Délai 1 200 Cycles de la machine
; Durée du délai 0.6 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .141
movwf Reg_1,1
movlw .2
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
nop
nop
return
tempo19.4ms
; Délai 38 800 Cycles de la machine
; Durée du délai 19.4 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .98
movwf Reg_1,1
movlw .51
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
nop
return
tempo1.2ms
; Délai 2 400 Cycles de la machine
; Durée du délai 1.2 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .28
movwf Reg_1,1
movlw .4
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
nop
return
tempo18.8ms
; Délai 37 600 Cycles de la machine
; Durée du délai 18.8 millisecond
; Fréquence de l'oscillateur 8 MHZ
movlw .211
movwf Reg_1,1
movlw .49
movwf Reg_2
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
nop
nop
return
tempo1s
; Délai 2 000 000 Cycles de la machine
; Durée du délai 1 seconde
; Fréquence de l'oscillateur 8 MHZ
movlw .93
movwf Reg_1,1
movlw .38
movwf Reg_2
movlw .11
movwf Reg_3
decfsz Reg_1,F,1
bra $-2
decfsz Reg_2
bra $-6
decfsz Reg_3
bra $-.10
nop
nop
return
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
RUB1K
Bonjour.
Rooo je suis jaloux tu avance super bien. Bravo a toi.
J'ai bien fait de lancer le sujet on dirait bien
Vivement la suite.
PS: le facteur viens tout juste de déposé le dernier élément pour moi (le moteur PAP)
Reste a fouiller pour retrouver un pic et le matos pour faire les premiers tests
J'ai néanmoins commencé a modéliser la pièce qui ira du moteur au cube. J'ai sacrifier un cobaye de ma collection
@++
Rooo je suis jaloux tu avance super bien. Bravo a toi.
J'ai bien fait de lancer le sujet on dirait bien
Vivement la suite.
PS: le facteur viens tout juste de déposé le dernier élément pour moi (le moteur PAP)
Reste a fouiller pour retrouver un pic et le matos pour faire les premiers tests
J'ai néanmoins commencé a modéliser la pièce qui ira du moteur au cube. J'ai sacrifier un cobaye de ma collection
@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
RUB1K
RUB1K
Oui mais c'est de l'ASM...
néanmoins pour les tests tu as raison ça peut être utile et voire comment fonctionne le monde le la mécanique 
Voilà le cobaye.
Pour le moment je me suis concentrée sur la partie qui rentre dans le cube. Je pense allongé la pièce blanche pour arriver jusqu'à l'arbre de rotation du moteur. En plus j'ai remarqué qu'il y a une partie plate sur l'arbre
Après je fais peut être fausse route.
D'ailleurs le moteur est arrivé avec une prise au bout des 4 fils. Je dois la supprimer pour relier au driver ? Car sur le driver c'est des connecteurs a visser.
@++
Voilà le cobaye.
Pour le moment je me suis concentrée sur la partie qui rentre dans le cube. Je pense allongé la pièce blanche pour arriver jusqu'à l'arbre de rotation du moteur. En plus j'ai remarqué qu'il y a une partie plate sur l'arbre
Après je fais peut être fausse route.
D'ailleurs le moteur est arrivé avec une prise au bout des 4 fils. Je dois la supprimer pour relier au driver ? Car sur le driver c'est des connecteurs a visser.
@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
RUB1K
- F6FCO

Expert- Messages : 2846
- Âge : 99
- Enregistré en : décembre 2017
- Localisation : Banlieue sud de Klyntar
- Contact :
venom a écrit :Oui mais c'est de l'ASM...![]()
Pas compliqué à transposer en C ou en basic, on en parle quand ce sera le moment.
venom a écrit :Voilà le cobaye.
Assassin de cobayes
Mais tu veux faire quoi exactement ? 6 moteurs fixes sur le cube ou bien tu vas entrer et sortir du centre ? dans ce dernier cas il faudra que ton montage soit précis.
venom a écrit :D'ailleurs le moteur est arrivé avec une prise au bout des 4 fils. Je dois la supprimer pour relier au driver ? Car sur le driver c'est des connecteurs a visser
Coupe.
RUB1K
F6FCO a écrit :Mais tu veux faire quoi exactement ? 6 moteurs fixes sur le cube
C'est l'idée oui. C'est pour ça que j'ai dit "sacrifier"
Plus sérieusement. Oui j'imagine que l'ossature doit être bien conçu, mais pour mettre mes mains dans le monde des moteurs, je ne pense pas commencer a ajouter des glissière etc....
F6FCO a écrit :Coupe.
@++
RUB1K
- F6FCO

Expert- Messages : 2846
- Âge : 99
- Enregistré en : décembre 2017
- Localisation : Banlieue sud de Klyntar
- Contact :
Dans le colis tu as du avoir un petit carton avec le schéma de branchement suivant les couleurs des enroulements.
Tu as raison, il faut commencer simple mais tu verras, rien de bien compliqué.
mais pour mettre mes mains dans le monde des moteurs, je ne pense pas commencer a ajouter des glissière etc....
Tu as raison, il faut commencer simple mais tu verras, rien de bien compliqué.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités
