Vai al contenuto
PLC Forum


Ciclo motore DC con Pic e sensori Hall


spippolone

Messaggi consigliati

Ciao a tutti, ho un motore DC 12 Volt con 2 sensori hall, che realizzano un encoder in quadratura.

VORREI, dato un comando di start, che il motore facesse X giri e si fermasse. Al nuovo comando ripartire in senso contrario per tornare alla posizione di origine

Tutto ciò utilizzando un pic, e l'encoder con i sensori hall che possiede il motore. So di cosa si parla, ma non ho molta esperienza.. davanti a uno schema e un file HEX .. ce la posso fare !

Non vorrei utilizzare arduino, per dimensioni e completa inutilità, credo che un pic e un ponte H siamo più che sufficenti.. il motore assorbe 100 mA a 12 V, ecco il mio motore in link,

https://postimg.cc/gallery/guhtaqdg/

 

GRAZIE !!!

Modificato: da spippolone
Link al commento
Condividi su altri siti


7 ore fa, spippolone scrisse:

So di cosa si parla, ma non ho molta esperienza.. davanti a uno schema e un file HEX .. ce la posso fare !

 

La prima domanda è: sai programmare i PIC?

la seconda domanda è: quanto ne sai di elettronica circuitale?

Solo consocendo esattamente le tue capicità si può ipotizzare il tipo di risposta da darti.

Link al commento
Condividi su altri siti

Bisogna comunque sapere il rapporto del riduttore, suppongo voglia X giri del albero e non del motore, ma i sensori sono sul motore. 

Link al commento
Condividi su altri siti

So programmare il PIC con il file pronto, ho fatto anche piccoli ma piccoli programmi sul Pic Axe.. vorrei fare da solo sono autodidatta da 40 anni l mie esperienze.. riparo tutto quello che mi passa per le mani, mi diletto in questo angolo... giusto per rispondere a Livio,

https://postimg.cc/gallery/losq641w/

sulla seconda immagine, i due segnali dall'encoder del motore che gira...

 

Dunque, il motore è ridotto 1 a 30 quindi partirei con 2 giri sull'albero lento vediamo se il movimento è corretto..  mi date una mano ?

 

Grazie ..

Modificato: da spippolone
Link al commento
Condividi su altri siti

9 ore fa, spippolone scrisse:

So programmare il PIC con il file pronto,

 

Per prima cosa, se quello delle foto è il tuo laboratorio, complimenti per la strumentazione! Tanta e di classe. Ottimo l'oscilloscopio che, con Tecktronix, rappresenta lo stato dell'arte in fatto di oscilloscopi.

 

Comunque questo non è programmare, questo è caricare un programma.

Programmare significa progettare sia la strategia che permette di risolvere un problema, sia la sequemza di istruzioni che permette di realizzarla.

 

La funzione che chiedi, anche se in apparenza è semplice, richiede una conoscenza abbastanza approfondita sia del microcontrollore che vai ad usare, sia delle tecniche di programmazione.

 

Per prima cosa devi devi calcolarti quale sarà la massima frequenza degli impulsi che genera il trasduttore del motore. In base a quasta si determina il tempo in cui il processore dovrà risolvere l'algoritmo.

 

Per contare gli impulsi usando solo il processore dovrai basarti sugli interrupt del micro e verificare la sequenza tra i 2 impulsi dei 2 trasduttori per determinare il senso, poi vanno contati.

Poi ci dovrà essere una funzione, anche se rozza, di accelerazione e decelerazione che agisca sull'uscita PWM, supponendo di usare poi un driver che lavori con ingresso in PWM.

 

Quindi o sei in grado di studiare e realizzare tutto questo, oppure ..... bisogna che te lo faccia chi è capace.

 

Io ti consiglierei, prima di cimentarti con cose abbastanza complesse, di studiarti il micro che vuoi usare ed imparare a risolvere problemi semplici prima, poi èpian piano afrontre problemi più complessi.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Questo angolo fa concorrenza al mio angolo...anche nel disordine :thumb_yello:

 

10 ore fa, Livio Orsini scrisse:

Io ti consiglierei, prima di cimentarti con cose abbastanza complesse, di studiarti il micro che vuoi usare ed imparare a risolvere problemi semplici prima, poi èpian piano afrontre problemi più complessi.

Condivido!

 

20 ore fa, spippolone scrisse:

Dunque, il motore è ridotto 1 a 30 quindi partirei con 2 giri sull'albero lento

Misura quanti impulsi ottieni per ogni giro di carico (o albero lento come lo chiami tu)

 

La funzione che richiedi è apparentemente semplice e si potrebbe affidare a quello che considero (sarà perché ne ho acquistati 50) il mio cavallo di battaglia:  PIC12F1572 - E' specificatamente nato per questo genere di funzioni -

 

Ha 3 pwm hardware e soprattutto un bel CWG (complementary waveform generator) , oscillatore interno fino a 32MHz e molto altro, il tutto in case DIP8.   Per quanto hai descritto  avanzerebbero pure dei pins.

 

Gli steps che si percorrono partendo dall'idea alla realizzazione dovrebbero essere ben definiti.

(purtroppo quasi mai lo sono)

 

1) Raccogli i dati di ciò che devi controllare

   (specs motore - n° impulsi x giri di carico - velocità - accelerazione/decelerazione max ammissibili)

 

1) Scrivi le specifiche di quello che vuoi ottenere onde evitare modifiche in corsa

2) Scegli la mcu più adatta e studiane il datasheet

3) Disegna lo schema

4) Scrivi il firmware

5) Collaudo 

6) Perfezionamento

 

Considerazioni

1) il motore ce l'hai tu - difficile sviluppare un firmware che vada bene senza avere e poter provare l'attuatore

2) Il feedback potrà fare capo a qualsiasi  ingresso perché ciascuno può generare IOC (interrupt on change)

    tramite i quali si discriminerà la direzione di rotazione e spostamento

3) lo stadio che piloterà il motore dovrà far capo ai pins relativi ai PWM

4) 2 pins sono sempre impegnati per l'alimentazione Vdd/Vss

5) rimangono 2 pins liberi compreso MRES che può essere configurato come input all'occorrenza, sfruttando il wacth dog per resettare il tutto in caso di impazzimento....Ma se progetti bene e realizzi un buon layout non impazzirà

6) in un posizionamento incrementale, se si ha la necessità di ottenere posizioni univoche, è necessario un sistema di azzeramento(Homing)

 

 

 

 

 

Modificato: da dott.cicala
Link al commento
Condividi su altri siti

Grazie per le risposte, si .. quello è il mio laboratorio, hobbistico, non sono un professionista, ma semplicemente un appassionato autocostruttore e radiamatore.

Con programmare intendevo caricare un programma.. :😁

Diciamo che alla la frequenza è quella che si legge nell'oscilloscopio, siamo con 12 Volt, e la velocità è giusta, non pretendevo un PWM, mi accontentavo di un ponte H, senza rampa, partenza in senso orario 60 impulsi e arresto, oppure antiorario 60 impulsi e arresto. Non chiedo di più.. la mano che chiedevo era proprio e scrivere il firmware.. sapendo quali pin del PIC vengono considerati in fase di scruttura, per il segnale "Pulse" e il segnale "Dir" quali pin verranto messi alti quando parte il comando in senso "orario" o "antiorario" e le uscite andranno alte in base alla direzione richiesta, l'hardware me lo faccio.. il software lo posso caricare nel pic .. ma riuscivo a scriverlo.. non chiedevo !

Credo che un firmware del genere per uno che sa scriverlo non sia particolarmente complesso.. ma per uno che non lo sa scrivere.. se mi metto a studiarlo, forse il motore lo monto fra 8 mesi !  o sbaglio ?

 

Modificato: da spippolone
Link al commento
Condividi su altri siti

7 ore fa, spippolone scrisse:

non pretendevo un PWM, mi accontentavo di un ponte H,

 

Però il ponte ad "H" va pilotato. Se lo piloti in continua i 60 impulsi previsti saranno, nella migliore delle ipotesi, un numero variabile compreso, per esempio, tra 57 e 63. Questo perchè il motore non si arresta subito ma impiega un tempo che può anche essere abbastanza variabile (dipende dalle condizioni meccaniche).

 

Poi gli impulsi li devi contare e prima di contarli devi capire il senso di rotazione del motore.

Ci si può risparmiare la disciminazione software usando un circuito fatto, ad esempio, con un doppio flip-flop "D".Però alla fine qualcuno li deve pur contare questi impulsi. Anche qui ti puoi fare un contatore up/down esterno, ma devi anche leggerlo ed anche abbastanza velocemente.

8 ore fa, spippolone scrisse:

Diciamo che alla la frequenza è quella che si legge nell'oscilloscopio,

 

Son poco più di 1 kHz, diciamo che il micro dve fare un conteggio ogni 900µs circa. Se fai la discriminazione del senso in Hw ed al micro dai 2 segnali: direzione e impulsi, dovrebbe aver abbastanza tempo per fare tutto ed anche qualche cosa d'altro.

 

8 ore fa, spippolone scrisse:

Credo che un firmware del genere per uno che sa scriverlo non sia particolarmente complesso..

 

Si non è molto complesso, però bisogna farlo, provarlo e metterlo a punto.

Circa 15 anni fa avevvo fatto qualche cosa di simile proprio per il forum con un pic 786 (credo); era un progetto didattico, c'erano schemi Hw e firmware. Purtroppo nei vari cambi di piattaforma del forum questi dati si sono persi. Io forse dovrei avere memorizzato il tutto su qualche CD, ma andarlo a riprendere ..... è come strapparsi i peli con un guanto da boxe.:smile:

Link al commento
Condividi su altri siti

ci provo a lavorare un po sopra.. poi vi faro sapere dove sono arrivato... mi piace cercare di fare qualcosa che non so fare.. aumenta sempre le proprie conoscenze !

Link al commento
Condividi su altri siti

2 ore fa, spippolone scrisse:

mi piace cercare di fare qualcosa che non so fare..

 

Fare solo quello che si sa fare non da soddisfazione, specialmente se il lavoro lo si fa per diletto.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...