Motore passo-passo

con microcontrollore PIC 16F84.

Schema elettrico

 

Elenco componenti

Motore passo-passo a 4 fasi unipolare a magnete permanete; 5 Resistenze da 10KΩ; 4 Resistenze da 1.8KΩ; 4 Transistor NPN BD135; 4 Diodi 1N4148.

Descrizione

Si riporta il listato del programma in linguaggio assembly per il PIC 16F84.

La porta A è impostata come ingresso. In particolare lo stato logico sulla linea RA3 consente di invertire il verso di rotazione.

Le linee RA2, RA1 e RA0 modificano la frequenza dei segnali di comando del motore e quindi la velocità di rotazione. Si possono selezionare 8 valori di frequenza partendo da quella più elevata, di 80 Hz, ottenuta impostando le linee RA2 RA1 RA0 = 000 e, per successive divisione per 2, si ottiene la frequenza più bassa pari a 0.625 Hz ottenuta per RA2 RA1 RA0 = 111.

La porta B è impostata come uscita. Le linee RB3 RB2 RB1 RB0 pilotano le fasi del motore in modalità Full-Step secondo la nota sequenza:

ABCD = 1001 – 1010 – 0110 – 0101.


;*MOTORE PASSOPASSO**

PROCESSOR 16F84

RADIX DEC

INCLUDE "P16F84.INC"

ORG 0CH

Count   RES 1

out       RES 1

choose RES 1

ORG 00H

bsf STATUS,RP0

movlw 11110000B

movwf TRISB

movlw 00001111B

movwf TRISA

bcf STATUS,RP0

movlw 00H

movwf PORTB

call scelta

goto INIZIO

scelta

 bcf STATUS,RP0

 movf PORTA,0

 movwf choose

 bcf choose,3

 movf choose,0

 bsf STATUS,RP0

 movwf OPTION_REG

 return

direction

 bcf STATUS,RP0

 movf PORTA,0

 movwf choose

 btfsc choose,3

 swapf out

 return

INIZIO:

 bcf STATUS,RP0

 movlw 01100110B

 movwf out

 call direction

 movf out,0

 movwf PORTB

 call scelta

call delay

 movlw 01011010B

 movwf out

 call direction

 movf out,0

 movwf PORTB

 call scelta

 call delay

 movlw 10011001B

 movwf out

 call direction

 movf out,0

 movwf PORTB

 call scelta

 call delay

 movlw 10100101B

 movwf out

 call direction

 movf out,0

 movwf PORTB

 call scelta

 call delay

 goto INIZIO

 

delay

 bcf STATUS,RP0

 movlw 6

 movwf TMR0

 movlw 125

 movwf Count

delayloop

 movf TMR0,W

 btfss STATUS,Z

 goto delayloop 

 movlw 6

 movwf TMR0

 decfsz Count,1

 goto delayloop

 return

END