home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


PIC + Encoder...
     
Autore Messaggio opzioni
spippolo





postato il:
26.03.2019, alle ore 23:39
urca non c'è l'edit sul forum, aggiungo, meglio sarebbe capire a che lato si trova il motore, quindi con 2 led che indicano la posizione di fine corsa nei due lati. Non sono esperto di programmazione ma per poco di logica penso... premo il pulsante e avvio il ciclo, il pic abbassa l'uscita che teneva acceso il led verde, alza l'uscita 1 e parte il motore, il pic attende un impulso sui due input, secondo quale dei due va alto prima, capisce la direzione, e da li ne conta 60 a quel punto abbasta l'uscita del motore. e alza quella del led rosso indicando l'altro fine corsa. A dirlo a voce è facile.. per voi debugger è facile no ? :-)
picmicro675




una ogni 10 livelli


postato il:
27.03.2019, alle ore 05:41
spippolo:
dunque, a 12 volt la frequenza è 1000 Hz

Dovresti capire che dipende da che hardware vuoi usare. Questo già mi dice che ci vuole qualcosa di abbastanza veloce. Le opzioni possono andare a un micro quarzato a 20 MHz o della famiglia ehnanced a 32 MHz-

spippolo:
Non sono un amante della pappa scodellata
8<----------8<----------8<----------8<----------8<----------8<----------
io mi limiterei almeno in questo caso a caricare il programma nel pic e realizzare la parte hardware..

Alquanto contraddittorio.
Il fatto prevede che se qualcuno prepara un firmware da caricare deve poter verificare le condizioni allo stesso modo di chi lo vuole utilizzare.

Ancora non hai definito come deve funzionare.
Il funzionamento, se capisco dovrebbe essere che se la posizione non è già al limite della corsa, far partire il moto in una direzione di difetto. Altrimenti dovrà andare dalla parte opposta. Durante il moto un LED segnala la direzione.
Solo ora si capisce che l' uscita deve essere a livello basso. Non ho capito se si vuole usare i relè.

Se usi questo tipo di disponibilità, che sei sempre in vacanza, allora la realizzazione non ho idea se potrà avere un contesto serio.
Vedi che ho scritto in privato, spero che dopo le vacanza, trovi il tempo di rispondere . Salvo l' indirizzo fornito è fasullo.

PS. grix usa un tipo ostico di software per gestire i messaggi. Non c'è anteprima, e alcuni caratteri (anche quelli accentati) non sono digeriti.



Anno nuovo, forum nuovo.
Mi sa che lascio.
rcc.roberto



[pagine pubblicate]

postato il:
27.03.2019, alle ore 09:02
spippolo:
... perchè mi dici che la parte finale la devo fare io ? Mi piacerebbe imparare a programmare.. ma no si fa di punto in bianco.. e onestamente mi servirebbe di vederlo girare questo motore. Non sono un amante della pappa scodellata, ma qui .. siamo un po troppo nel difficile per questo chiedevo a qualcuni di voi se mi sviluppava qualche riga,....


spippolo, questo è un sito amatoriale, nato proprio per permettere, a chi inizia, di imparare aiutato dai più esperti.

Amatorialmente non esiste fretta per veder funzionare una apparecchiatura senza saperne il perché e il come funziona.

Se invece la tua è una applicazione industriale, è giusto che richiedi un intervento a pagamento, logicamente in forma privata.
marsram




una ogni 100 livelli
una ogni 10 livelli


postato il:
27.03.2019, alle ore 09:50
Questo è il mio parere:

- prima di tutto non è definita l'applicazione. Se ci limitiamo a far girare in un senso o nell'altro il motore, va bene qualunque cosa.
Se il motore è collegato a una meccanica, è tutto da vedere, in quanto potranno esistere limiti nella corsa e quin di la necessità di qualcosa di aggiunto, hardware o software.

- in ogni caso l'analisi dell'encoder non serve in nessun caso a completare n giri completi: basta un solo target.
La direzione di un motore cc del genere con in più il motoriduttore è determinata solo ed esclusivamente dalla tensione applicata e non esiste possibilità di rotazione inversa alla polarità.
Quindi, a meno che l'applicazione contenga elementi random, la direzione la impone il programma e non ha nessuna necessità di essere verificata dall'encoder.
Se si tratta di posizionamento, la cosa è ovviamente diversa
Piuttosto, il segnale dell'encoder potrà servire a tenere sotto controllo la rotazione nel caso in cui esista la possibilità di blocco (cosa che si può fare benissimo anche con un controllo della corrente - i uC recenti contengono comparatori e tensioni di riferimento programmabili).

- per 1000Hz basta un PIC da 4MHz. 1MIPS sono 1M istruzioni al secondo.
A 1000Hz passa 1ms tra un evento e il successivo. @ 1MIPS si eseguono teoricamente 1000 istruzioni in questo millisecondo. In 1000 istruzioni assembly si fa proprio molto.
E nel caso in cui si volesse tracciare un encoder veloce (10kHz in su...) si usa un PIC con il QEI o più semplicemente un LSI che abbatte qualsiasi problema software al costo di un paio di dollari.

- quanto a led verdi, rossi o gialli, o pulsanti o altro, queste aggiunte sono parte integrante delle specifiche del progetto e non possono apparire a sorpresa: cambia, anche se di poco, il firmware e riscrivere non è mai piacevole, oltre che impegnare tempo.

Ending, concordo con rcc.roberto:

Se si tratta di hobby, basta un arducoso qualunque, un paio di relè e i i soliti sketch. Esempi per far girare un motore ce ne sono a iosa.
Se non lo so fare, almeno provo a qualcosa , sottopongo il pastrocchio e avrò ogni genere di aiuto. E' un hobby


Se si tratta di lavoro (pochi hobbisti hanno a disposizione un LeCroy), si parla di lavoro e il lavoro solitamente si paga il giusto. Se lo so fare, lo faccio da me, se non lo so fare, richiedo l'intervento di chi lo sa fare. E' un lavoro.
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
27.03.2019, alle ore 13:36
spippolo:
capisce la direzione, e da li ne conta

Alcune MCU (non so i Pic, sicuramente i dsPic) hanno dei moduli hardware che tengono continuamente aggiornato in un registro il numero dei passi compiuti, sia esso positivo o negativo. In questo caso non c'è bisogno di affaticare il processore, comunque rimane sempre la possibilità di fare tutto in SW (lodevole).



anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
picmicro675




una ogni 10 livelli


postato il:
27.03.2019, alle ore 16:19
Io lo sto facendo per mia curiosità. Ora vorrei provare con un 16F84A.
@marsram
Forse un MIPS ci passa, ma da prove che facevo non reggeva oltre i 220 Hz. La routine magari non è scritta bene e rileva gli IOC su tutt'e due le fasi.
Quindi penso che faccio anche per trovare una ottimizzazione alla routine di lettura. Che poi voglio tenere conto se il motore gira dal verso giusto è importante.

Perché c'è da tenere conto della inerzia del medesimo e su che albero è montato l' encoder. Infatti c'è anche il fatto che il motore continua a girare dopo averlo spento, ma non si ha il riferimento se non si vede le due fasi. Immagina che spengo ed il motore gira ancora 200 impulsi. Dove si calcola la posizione dell'albero?
C'è da dire che una parte si risolve quando si usa il timer come contatore di impulsi, non perde un colpo anche a centinaia di kHz. Rimane che si deve sapere da che parte continua a girare. Altrimenti sarebbe un continuo a ri-tarare la posizione dell'encoder.

Considerandolo come un gioco, per semplicità, non tengo conto di quanto rimane nell'area di oltre-corsa. Per il momento preferisco arrestare in anticipo, impostando un valore di anticipo da compilare col programma, Con 83% del 16F84A ho impostato anche la comunicazione seriale, per tarare i valori di finecorsa e vederli.

Alla fine farò anche le prove di abbassare i MIPS, come mio apprendimento empirico. Infatti si rifletterà sul progetto iniziato con 12F675.



Anno nuovo, forum nuovo.
Mi sa che lascio.
picmicro675




una ogni 10 livelli


postato il:
27.03.2019, alle ore 16:21
Poi come si può vedere dalla figura dell'oscilloscopio, la quadratura non è perfettamente sfasata di 90° e magari neanche il segnali in ingresso al micro.


Anno nuovo, forum nuovo.
Mi sa che lascio.
marsram




una ogni 100 livelli
una ogni 10 livelli


postato il:
27.03.2019, alle ore 17:29
Con il motoriduttore si ferma subito.
E anche se tu sapessi quanto è andato avanti, come lo riporteresti al target se non si fermasse quando togli corrente ?

Un posizionamento di precisione si fa in modo diverso.

Il problema è: NON si sa esattamente cosa si vuole ottenere, come al solito.
Quindi di conseguenza non si possono fare null'altro che illazioni che lasciano il tempo che trovano. Vale la pena di seguire queste richieste?

Comunque la dissimmetria dei segnali è normale negli encoder di basso livello, ma non influisce molto. Piuttosto vorrei vedere cosa succede al cambio di direzione e se c'è pendolamento da fermo. Questi si che sono problemi.

Comunque, prova per curiosità uno degli enhanced, tipo 12F1572 o 16F1509, che non sono gli ultimissimi, ma sono già tutt'altra cosa rispetto ai vecchi midrange per i quali non vale la pena di scrivere niente di nuovo. Prova, costano anche poco e, nonostante l'antipatico MPLABX, vale la pena.
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
27.03.2019, alle ore 21:22
I moduli QEI leggono gli ingressi un certo numero di volte prima di validarli, per prevenire i rimbalzi o le incertezze sui fronti, fare anche questo in SW comporta un ulteriore notevole aggravio.


anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
spippolo





postato il:
27.03.2019, alle ore 22:28
Ciao a tutti e grazie per le risposte, mi avete divorato...
Ho detto che non mi piace la pappa scodellata, ma vorrei vedere girare questo motore, perchè e un mese che ci giro intorno da solo e non ho cavato un ragno dal buco, ecco perchè ho chiesto aiuto. Sono un po impaziente di realizzare il mio progetto, e per questo forse mio dire vorrei veder girare il motore sono stato frainteso.. e mi scuso.

Dunque l'applicazione è dover far girare il perno di una serratura a doppia mandata. Quindi al momento che l'encoder dice basta sono stati fatti 60 giri stacca l'alimentazione, che poi l'uscita vada alta in marcia o bassa in marcia poco importa, ovviamente io azionerò due un rele con due transistor, secondo il senso di marcia. Il motore non potrà mai trovarsi a metà corsa, in quanto nessuno lo ferma fino alla fine dei 60 impulsi, i due led rossi verdi o turchini, servono solo per capire se la serratura è aperta o chiusa, li avevo denominati con un colore per cercare di spiegarmi meglio.
Il riduttore del motore è 1/30 quindi una inerzia minima non incide e comunque a fine corsa c'è la battuta meccanica.. importante è che il conteggio si interrompa prima del fermo meccanico, e non è da scartare la soluzione che se l'encoder si ferma prima della fine del conteggio entri in gioco una protezione, evitando di dover montare un limitatore di corrente.
Perchè non metto un raspberry.. perchè è una serratura di una porta, e un pic occupa meno spazio.. in fondo non deve fare molto.. infatti pensavo al 16F84
E infine perchè ho un Lecroy.. perchè me lo sono comprato usato, è uno strumento che ha i suoi anni..
Spero di aver risposto a tutto

e sopratutto GRAZIE a tutti
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale