Ce stuff est délicat ..

P

piersuk

Guest
Désolé d'être un débutant et d'avoir aucune idée de ce que je fais, mais je tente de travailler à travers les choses.

Ce que
j'essaie de faire est de conduire un moteur à courant continu à des tensions différentes avec 2 secondes de retard Entre chaque étape.J'ai essayé ci-dessous qui, je l'espère, sera à deux pas 3.8v et 6v mais hélas pas.

Toute aide de ce code serait appréciée.En outre, je voudrais savoir quoi et où pour ajouter chaque étape de tension morceau de code.

Ceci est mon code
Code:

LIST P = PIC16F819, r = hex, f = INHX8MINCLUDE "p16f819.inc"__CONFIG 3909H;********* Bon programme commence ici ************************************ *ORG 00H; vecteur reset

GOTO STARTORG 010HSTART

; Ces 3 lignes de la période de pulsation (39 kHz)

MOVLW 01FH

BSF STATUS, RP0

MOVWF PR2; Faire tous les ports de sorties (B1 seulement est utilisé)

CLRF TRISB

BCF STATUS, RP0; Configurer comme mode PWM

MOVLW B'00001100 '

MOVWF CCP1CON, La valeur de CCPRIL fixe le cycle et, par conséquent, la tension

; MOVLW 010H; donne 2,52 V

MOVLW 018H; donne 3,8 V

; MOVLW 022H; 6v

MOVWF CCPR1L, Tourner sur le PWM

BSF T2CON, TMR2ON et démarrer la minuterie marche; Delay = 2 secondes

, La fréquence d'horloge = 4 MHz; Réelles delay = 2 secondes = 2000000 cycles

; Erreur = 0%cblock

d1

d2

d3

ENDCRetard

; 1999996 cycles

movlw 0x11

movwf d1

movlw 0x5D

movwf d2

movlw 0x05

movwf d3

Delay_0

decfsz d1, f

goto $ 2

decfsz d2, f

goto $ 2

decfsz d3, f

goto Delay_04 cycles (y compris l'appel); Ces 3 lignes de la période de pulsation (39 kHz)

MOVLW 01FH

BSF STATUS, RP0

MOVWF PR2; Faire tous les ports de sorties (B1 seulement est utilisé)

CLRF TRISB

BCF STATUS, RP0; Configurer comme mode PWM

MOVLW B'00001100 '

MOVWF CCP1CON, La valeur de CCPRIL fixe le cycle et, par conséquent, la tension

; MOVLW 010H; donne 2,52 V

; MOVLW 018H; donne 3,8 V

MOVLW 022H; donne 6.0v

MOVWF CCPR1L, Tourner sur le PWM

BSF T2CON, TMR2ON et démarrer la minuterie marcheFIN NOP

GOTO FINFIN
 
Vous pouvez faire le retard d'une sous-routine.
Vous avez besoin de mettre une adresse de départ dans la mémoire de données sur la fin de votre cblock directive.
Utilisez MPLAB oui, il est très bon.Activer Trace de tous les paramètres de débogage et d'utiliser l'analyseur logique fenêtre.
La sortie est pwm sur Pin RB2.Code:LIST P = PIC16F819, r = hex, f = INHX8MINCLUDE "p16f819.inc"__CONFIG 3909H;********* Bon programme commence ici ************************************ *cblock 0x20

d1

d2

d3

ENDCORG 00H; vecteur reset

GOTO STARTORG 010HSTART

; Ces 3 lignes de la période de pulsation (39 kHz)

MOVLW 01FH

BSF STATUS, RP0

MOVWF PR2; Faire tous les ports de sorties (B1 seulement est utilisé)

CLRF TRISB

BCF STATUS, RP0; Configurer comme mode PWM

MOVLW B'00001100 '

MOVWF CCP1CON

clrf CCPR1L

BSF T2CON, TMR2ON et démarrer la minuterie marcheLoop

, La valeur de CCPRIL fixe le cycle et, par conséquent, la tension

MOVLW 010H; donne 2,52 V

MOVWF CCPR1L

Délai d'appelMOVLW 018H; donne 3,8 V

MOVWF CCPR1L

Délai d'appelgoto Loop; --- 2 secondes de retardDelay movlw 0xff

movwf d1

movlw 0xff

movwf d2

movlw 0x0B

movwf d3Delay_0 decfsz d1, f

goto Delay_0

decfsz d2, f

goto Delay_0

decfsz d3, f

goto Delay_0

retourFIN

 
Merci - je suis complet débutant avec ce genre de choses, un ami a écrit le PWM peu pour moi et
j'ai eu un retard à l'aller.

Si je voulais ajouter une troisième tension après deux secondes de retard que le site où serait dans la version révisée du code?

Merci

 
Dans la boucle bit
Code:Loop

, La valeur de CCPRIL fixe le cycle et, par conséquent, la tension

MOVLW 010H; donne 2,52 V

MOVWF CCPR1L

Délai d'appelMOVLW 018H; donne 3,8 V

MOVWF CCPR1L

Délai d'appelMOVLW? H; nouvelle tension ici

MOVWF CCPR1L

Délai d'appelgoto Loop

 
Merci,
j'ai eu un jeu et essayé, était sur le point de publier une mise à jour lorsque vous avez répondu.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

Merci d'avoir pris le temps de bien.

L'étape suivante est de conduire deux moteurs de la même manière, en même temps (mais avec des tensions différentes à des moments différents).

Est-ce possible avec le 16F819?

En fin de compte, je tiens à trois moteurs de lecteurs de cette façon, en utilisant à nouveau des tensions différentes, indépendantes les unes des autres ...

Ce sont de bonnes choses.

Piers

 
Le Pic 819 a 1 seul module pwm pwm et 1 sortie.
Pour conduire de 3 moteurs indépendamment les uns des autres avec les différents pouvoirs, vous aurez besoin d'utiliser un micro pour le contrôle moteur.
Vous serez à la recherche Pic18 ou le 16-bit dsPics.
Le dsPic30f2010 est un bon micro pour le contrôle moteur, et assez bon marché.
Vous pouvez télécharger le compilateur gratuit (version étudiant) et de passer dans la programmation en C. Le 2010 est un vrai 16-bit micro, un bond en avant dans le pouvoir.
Un tout nouveau jeu de balle.

 
Merci pour l'info ...

Un tout nouveau jeu de balle, tout cela est une saison de jeux de ballon

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Peut-être que je
vais rester avec le contrôle de cette tension avec une connexion série en premier.

Je doute, il sera trop longtemps avant que je poste pour les détails.

Merci encore

Piers

 

Welcome to EDABoard.com

Sponsor

Back
Top