Motore passo-passo
con microcontrollore PIC 16F84.
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.
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 |