Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Il Sig.Pierin PIC18 e stepper motor.

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

1
voti

[1] Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto Utentebladeblaze » 9 apr 2014, 22:23

Salve a tutti baldi giovani :-P
Finalmente mi è arrivato il pacchettino dalla Cina e volevo iniziare a lavorare un po'.
Premetto che attualmente non mi trovo molto bene ancora con il C pertanto userò Asm.
Detto questo, per domani sera volevo far iniziare a girare lo stepper motor, nulla di strabiliante, semplicemente vederlo ruotare.
Pensavo di utilizzare 4 pin digitali del pierin per comandare un ULN2003AN (Array di transistor Darlington) a cui sarà collegato lo stepper. (Il motore è un 28byj-48 5 volt 64 step giro).

Procedendo con la grazia di un elefante l'idea di base era quella di programmare il pierin affinchè viaggi a 48 MHz, programmare il TMR0 con postscaler a 256 che generi un interrupt ad ogni overflow, e ad ogni "chiamata" modificare il livello di uscita dei pin dedicati al comando dell'IC.
In questo bruttissimo modo dovrei riuscire a fare girare lo stepper a circa 3 giri al secondo.

So che come progetto fa abbastanza schifo e definirlo grezzo sarebbe quasi un complimento, ma vorrei iniziare raso terra e via via implementare altre funzioni che andrò via via a scrivere qui e poi magari in un articolo.

Secondo voi potrebbe funzionare?
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 1 dic 2011, 0:42
Località: Trento

0
voti

[2] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto UtenteTardoFreak » 9 apr 2014, 22:44

Io sto facendo la stessa cosa con un ARM (stessi motori cinesi :mrgreen: ).
Vedi qui e qui.
L' idea sarebbe di portare tutto sul Pierin ma la cosa mi serve per lavoro e non ho tempo per farlo. :(

Quindi un plauso a Foto Utentebladeblaze che lo sta facendo con il pierino. :ok:
>-O-< >-O-< >-O-<
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[3] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto UtenteTardoFreak » 9 apr 2014, 23:42

Ah, dimenticavo.
Se vuoi fare andare il Pierin a 48MHz leggi gli articoli che ho scritto nel blog. Trovi le poche istruzioni che servono per metterci il turbo.
Per quanto riguarda la temporizzazione, sempre nei miei articoli trovi l' implementazione dell' interrupt ciclica. Puoi anche mettere la gestione del motore sotto interrupt ma, a mio avviso, non è necessario. Piuttosto implementa un timer software (nell' interrupt ciclica) con risoluzione 100us e con quello, nel main, ti gestisci i ritardi.
Lavoro pulito, semplice ed efficace.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[4] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto Utentebladeblaze » 9 apr 2014, 23:48

Intanto grazie per i link. Devo dire che quei 2 documenti Foto Utentesimo85 ce li ho da tempo sul desktop, così ce li ho a portata di mano :-P .
Anche i tuoi topic li seguo sempre Foto UtenteTardoFreak, ti marco stretto stretto :mrgreen: . In ogni caso, pensa tranquillamente al tuo lavoro, e lascia l'onore a me di creare il codice per il pierin, oltre a farmi piacere mi sarebbe molto utile per imparare.
Il progetto che ho è di ampio respiro, solo mi servirà un po' di tempo via via per imparare, implementare le varie funzioni possibili e creare a mano a mano le guide.
Comunque vi tengo aggiornati, e ad ogni step di rilievo scriverò la guida.
:D :D :D
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 1 dic 2011, 0:42
Località: Trento

1
voti

[5] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto UtenteTardoFreak » 9 apr 2014, 23:53

Quando avrò un buon sorgente per il pilotaggio degli stepper lo posterò.
Ovviamente è adattato per macchine a 32 bit (ahò, sono complicate ma non costano e sono potenti, non ho scelta :( ) quindi dovrà essere adattato.
In ogni caso se vuoi fare un buon lavoro cerca di implementare un' accelerazione costante, magari con tabelle come suggerito da Foto UtenteDirtyDeeds (sono veloci) per le rampe.
Poter pilotare i motori è come dotare i micro di braccia e gambe.
Io devo solo far girare ruote e lancette (immagina la gioia :roll: ) ma con i motori si può fare molto e divertirsi parecchio.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[6] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto Utentebladeblaze » 13 apr 2014, 1:00

#-o ||O Sti malefici cipanghi, tutt'e 2 i driver per i passo passo sono cannati, uno è in corto, l'altro non è collegato..fortuna che l'ic è su zoccolo, tocca fare qualcosa su millefori.
comunque nonostante tutto sono riuscito a scrivere il primissimo firmware e a farlo funzionare.
Niente di speciale, ho messo quattro porte come logiche in uscita che ciclicamente vanno alte a due a due, e tra un bcf ed un bsf faccio conteggiare; il motorino così avanza a 15 rpm.
Questo è un semplice firmware per testare, e così ho visto che c'è da lavorare sull'hardware.

Domanda, mi pare di notare che anche il pierin su breadboard fa un po' di bizze, i pinstripe conviene saldarle così da avere dei contatti migliori?

A Presto Prestissimo O_/
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 1 dic 2011, 0:42
Località: Trento

3
voti

[7] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto UtenteTardoFreak » 13 apr 2014, 1:09

Mah, la stri DEVE essere saldata.
Mi stupisco che funzioni da non saldata! :shock:

Io non uso driver ma un bel po' di mosfettini SMD cablati su una millefori.
stepper&driver.jpg

La discussione dove ne parlo è questa
Senza PWM funziona da Dio, anche con il PWM ma non è semplice da utilizzare come potrebbe apparire a prima vista.
La funzione che fa muovere lo stepper la trovi qui al post [26]
Non uso il Pierina ma non dovrebbero problemi ad utilizzarlo per far muovere il motore.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[8] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto Utentebladeblaze » 13 apr 2014, 1:35

Molto bene, provvederò alle modifiche. Devo mettere via pure un po' di soldi per prendermi una stazione saldante decente, magari usata.

Ci sto mettendo tanto, ma piano piano ci arrivo...e ci sto prendendo gusto :mrgreen: :mrgreen:

Adesso 5 minuti di relax e poi nanna.

Grazie Foto UtenteTardoFreak!!

Domanda un po' personale... ....sei vegetariano?
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 1 dic 2011, 0:42
Località: Trento

0
voti

[9] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto UtenteTardoFreak » 13 apr 2014, 2:13

No, sono un carnivorous vulgaris. :mrgreen:
Che carne, birra e pane non manchino mai!
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

2
voti

[10] Re: Il Sig.Pierin PIC18 e stepper motor.

Messaggioda Foto Utentebladeblaze » 13 apr 2014, 20:25

Molto bene :mrgreen: .

Ho eseguito le saldature e sistemato l'hardware dell'IC temporaneamente, e devo dire che funziona meglio.

Qui metto il source versione 0.1
Codice: Seleziona tutto
    TITLE="STEPPER_0.1"
    #include p18f47j53.inc
    processor pic18f47j53
    radix DEC

; First working attempt to run a stepper motor with pierin PIC 18,
; motor it's controlled with sigle step trough PORTB (7:4), with
; a delay Loop. With 8Mhz oscillator it will perform 1 round every
; 4 second (64 steps round).

; configuration bit
; CONFIG1L
  CONFIG  WDTEN = OFF           ; Watchdog Timer (Disabled - Controlled by
                                ; SWDTEN bit)
  CONFIG  PLLDIV = 1            ; PLL Prescaler Selection (No prescale (4
                                ; MHz oscillator input drives PLL directly))
  CONFIG  CFGPLLEN = OFF        ; PLL Enable Configuration Bit
                                ; (PLL Disabled)
  CONFIG  STVREN = OFF          ; Stack Overflow/Underflow Reset (Disabled)
  CONFIG  XINST = OFF           ; Extended Instruction Set (Disabled)

; CONFIG1H
  CONFIG  CPUDIV = OSC1         ; CPU System Clock Postscaler (No CPU
                                ; system clock divide)
  CONFIG  CP0 = OFF             ; Code Protect (Program memory is not
                                ; code-protected)

; CONFIG2L
  CONFIG  OSC = INTOSC          ; Oscillator (INTOSC)
  CONFIG  SOSCSEL = LOW         ; T1OSC/SOSC Power Selection Bits (Low Power
                                ; T1OSC/SOSC circuit selected)
  CONFIG  CLKOEC = OFF          ; EC Clock Out Enable Bit  (CLKO output
                                ; disabled on the RA6 pin)
  CONFIG  FCMEN = OFF           ; Fail-Safe Clock Monitor (Disabled)
  CONFIG  IESO = OFF            ; Internal External Oscillator Switch Over
                                ; Mode (Disabled)

; CONFIG2H
  CONFIG  WDTPS = 32768         ; Watchdog Postscaler (1:32768)

; CONFIG3L
  CONFIG  DSWDTOSC = INTOSCREF  ; DSWDT Clock Select (DSWDT uses INTRC)
  CONFIG  RTCOSC = T1OSCREF     ; RTCC Clock Select (RTCC uses T1OSC/T1CKI)
  CONFIG  DSBOREN = OFF         ; Deep Sleep BOR (Disabled)
  CONFIG  DSWDTEN = OFF         ; Deep Sleep Watchdog Timer (Disabled)
  CONFIG  DSWDTPS = G2          ; Deep Sleep Watchdog Postscaler
                                ; (1:2,147,483,648 (25.7 days))

; CONFIG3H
  CONFIG  IOL1WAY = OFF         ; IOLOCK One-Way Set Enable bit (The IOLOCK bit
                                ; (PPSCON<0>) can be set and cleared as needed)
  CONFIG  ADCSEL = BIT10        ; ADC 10 or 12 Bit Select
                                ; (10 - Bit ADC Enabled)
  CONFIG  MSSP7B_EN = MSK7      ; MSSP address masking
                                ; (7 Bit address masking mode)

; CONFIG4L
  CONFIG  WPFP = PAGE_127       ; Write/Erase Protect Page Start/End Location
                                ;(Write Protect Program Flash Page 127)
  CONFIG  WPCFG = OFF           ; Write/Erase Protect Configuration Region
                                ; (Configuration Words page not
                                ; erase/write-protected)

; CONFIG4H
  CONFIG  WPDIS = OFF           ; Write Protect Disable bit
                                ;(WPFP<6:0>/WPEND region ignored)
  CONFIG  WPEND = PAGE_WPFP     ; Write/Erase Protect Region Select bit
                                ; (valid when WPDIS = 0) (Pages WPFP<6:0> through
                                ; Configuration Words erase/write protected)
  CONFIG  LS48MHZ = SYS48X8     ; Low Speed USB mode with 48 MHz system clock
                                ; bit (System clock at 48 MHz USB CLKEN
                                ; divide-by is set to 8)

; memory for Delay routine
    cblock
   d1
   d2
   endc
   
    org 0x0000

; Configuration Pin
    clrf PORTA
    clrf TRISA
    movlw B'11111111'
    movwf TRISA

    clrf PORTB
    clrf TRISB
    movlw B'00001111'
    movwf TRISB

    clrf PORTC
    clrf TRISC
    movlw B'11111111'
    movwf TRISC

    clrf PORTD
    clrf TRISD
    movlw B'00111111'           ; Pin 4:7 Drive stepper
    movwf TRISD

; Setting PIC oscillator @ 8 MHz
    bsf OSCCON,4
    call Delay

    ;Main routine for motor controlling (AB-BC-CD-DA)
Motorgo
    bsf PORTB,7
    bsf PORTB,6
    call Delay
    bcf PORTB,7
    bsf PORTB,5
    call Delay
    bcf PORTB,6
    bsf PORTB,4
    call Delay
    bcf PORTB,5
    bsf PORTB,7
    call Delay
    bcf PORTB,4
    goto Motorgo

Delay
         ;124993 cycles
   movlw   0x6B
   movwf   d1
   movlw   0x62
   movwf   d2
Delay_0
   nop
    nop
    decfsz   d1, f
   goto Delay_0
   decfsz   d2, f
    goto   Delay_0

         ;3 cycles
   nop
    nop
   nop

         ;4 cycles (including call)
   return

    end
Avatar utente
Foto Utentebladeblaze
503 5 11
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 1 dic 2011, 0:42
Località: Trento

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti