Go Down

Topic: Progetto Tesi (Read 7162 times) previous topic - next topic

Calamaro

e come pensi di pilotare 50 motori cc e ricevere dati da 50 encoder?  ;D

kokiua

#76
May 14, 2010, 07:21 pm Last Edit: May 14, 2010, 07:29 pm by kokiua Reason: 1
In un modo piuttosto simile a quello usato per pilotare 50 motori passo passo?  ;)

--- aggiunta:

un PWM per la velocità, una linea logica per la direzione, un ingresso su interrupt per l'encoder, un ingresso per il sensore di home.
Totale 4 linee...   :o

(se poi vuoi ti mando un piccolo spezzone di codice in ASM per leggere un encoder in entrambe le direzioni di marcia con acquisizione di fronte di salita e discesa dell'encoder, dovrei averlo da qualche parte per un progettino di riga metrica di precisione fatto con un PIC fatto tanti anni fa... ::) )

gbm

Beh l'accelerazione e decelerazione nei movimenti secondo me è fondamentale, visto che questa tesi mi sembra rivoluzionaria, proprio perchè applica il movimento in un concetto architettonico,  io lavorerei principalmente sulla qualità e finezza nel movimento della matrice.
Community robotica / programmazione Arduino
www.gioblu.com

Calamaro

usiamo gli stepper per il semplice motivo che calibrandoli 1 a 1 poi commettermo un piccolissimo errore se diamo il numero di steps da percorrere senza avere bisogno di un encoder. avere un encorde porterebbe a dover implementare un numero di ingressi analogici assurdo, senza contare che dovrei leggermi un monte di misure contemporaneamente dai gpio port expander. la soluzione più elegante è creare dei moduli con motori cc o servomotori con relativo encoder e con un micro controllore embedded che comunica tramite un protocollo con l'arduino master. In questo modo potrei mandare a ogni singola unità una misura di lunghezza e una velocità comunque avendo la certezza che questa posizione venga occupata. Solo che 50 board con 50 micro 50 quarzi ecc ecc viene a costare veramente un fottio anche se semplificherebbe tantissimo le cose. la nostra soluzione è low cost. postalo ugualmente il codice asm magari mi potrebbe servire per altro .D

kokiua

Scusa Calamaro, ma non capisco la tua affermazione: «avere un encoder porterebbe a dover implementare un numero di ingressi analogici assurdo»
E' chiaro che non servono certo degli encoder assoluti e magari pure resistivi (di fatto un potenziometro, metodo tra l'altro molto poco preciso) ma solo encoder relativi (vedi qui: http://www.manualihoepli.it/media/doc/pr325.pdf), e per questo è sufficiente una semplice lettura ad esempio di una serie di "segni" praticati sulla stessa puleggia che serve per avvolgere/svolgere il filo. Utilizzando poi un ingresso logico che generi un interrupt sul quale scrivere la routine che gestisce la lettura dell'encoder.

Tra l'altro un algoritmo molto semplice gestito interamente dall'Arduino che controlla il motore.

Con un Arduino si dovrebbe poter gestire contemporaneamente almeno sino a 4 motori (collegati e gestiti in questo modo: http://www.arduino.cc/playground/Main/DirectionalMotorControlWithAL293D), nel qual caso, per il problema dei soli due ingressi interrupt disponibili, occorre una semplice logica esterna che attiva la routine di lettura dello stato di tutti e 4 gli encoder (non credo siano necessarie velocità tali da mettere in crisi un sistema del genere).

In questo modo servirebbero solo 13 Arduino con relativa elettronica di gestione per 4 motori ( in realtà sarebbero 12 arduini e mezzo ;) ) tutti quanti collegati in seriale "in ascolto" sulla stessa linea.

Per gestire l'intera matrice dovrebbe essere possibile inviare:
- un comando "generale" che dice a tutti gli Arduini di portare i motori in posizione iniziale (home) ovvero con l'intero filo riavvolto;
- poi, ad ogni "nodo" (4 indirizzi per ogni arduino) il valore desiderato e la velocità con la quale deve essere raggiunto.

Così a fare tutto il lavoro ci pensa l'Arduino in rete che risponde a tale indirizzo (senza alcuna necessità di leggere "un monte di misure contemporaneamente" da parte di alcun dispositivo esterno);

Per i motori poi, se serve vera "forza", è sempre possibile ricorrere ai motori utilizzati negli alza cristalli elettrici delle auto recuperandoli dagli sfascia carrozze...

Credo che questa sia una soluzione veramente low cost, o no?


Calamaro

eh si 13 arduino mi sembrano una soluzione veramente economica  ;)

tommy16013

Ciao a tutti,
stava andando tutto bene quando un problemino non da poco mi si è presentato, gli stepper una volta aggiunto una carrucola e un peso attacato ad un filo collegato alla carrucola peso (anche leggero) il più delle volte in fase di avvolgimento fa sfrizionare lo stepper :( penso dipenda dal tipo di stepper, perchè mi sembra impossibile che anche con pochi grammi sfrizioni come un dannato, cioè fa tipo un lamento di sforzo   :-/ con una bandierina non fa nessun problema.

kokiua

#82
Jun 08, 2010, 09:15 am Last Edit: Jun 08, 2010, 09:18 am by kokiua Reason: 1
Esperienza insegna...  ::)

Mi spiace dover fare questo discorso, ma il mio consiglio di utilizzare motori cc non era fatto per complicare ma proprio per evitare questo problema (non a caso i bracci dei robot industriali non li fanno con i motori pp, o stepper che dir si voglia, che invece sono utilizzati per lavori dove sia richiesta la massima precisione).

Stesso ragionamento vale per i servo, anch'essi fatti con motori cc.

Un motore di un alzacristalli, che è opportunamente rapportato per avere la necessaria forza, non ti si sarebbe mai bloccato (sempre che tu non voglia alzarci una persona  ;) )

Ora, a meno che tu non metta dei rapporti rallentando però pesantemente tutto il movimento (o sostituisca i motori con costosissimi pp di maggiore forza e relativa gestione elettronica), credo tu abbia come unica soluzione quella di rivedere il tutto mettendo motori cc.

Per quel che concerne il posizionamento, se il progetto che stai facendo non dovrà avere una vita molto lunga, puoi sempre pensare a montare dei potenziometri (chiaramente in rapporto) che ti indicano la posizione leggendo il tutto semplicemente con un'entrata analogica (e questo ti evita anche il sensore di inizio corsa).

P.S. comunque: prima di buttare il tutto una prova la puoi ancora fare, ovvero aumentare la potenza per pilotare il motore. Ma fai attenzione a non esagerare perchè potresti bruciarlo facilmente (basta sentire il calore che eroga per rendersene conto).

Calamaro

per la potenza abbiamo un atx, ma mi sa che non lo ha collegato!

BrainBooster

kokiua ha ragione, solitamente in campo industriale per avere un ottimo rapporto potenza/precisione si utilizzano dei motori brushless dotati di encoder.

Calamaro

si oh ma ormai si laurea a luglio, ci vorrebbe tempo per rifare tutto da capo!

kokiua

@calamaro:
Quote
si oh ma ormai si laurea a luglio, ci vorrebbe tempo per rifare tutto da capo!

non è con queste esternazioni che si risolvono i problemi, io credo...  :-?
L'unica cosa che si può fare è quella di tentare di dargli una mano almeno per il software. Ma se procede senza condividere come ha fatto sino ad ora, il tempo passa e i problemi non si risolvono...

tommy16013

#87
Jun 09, 2010, 08:46 pm Last Edit: Jun 09, 2010, 08:50 pm by tommy16013 Reason: 1
risolto, basta usare 12v. ho sollevato 400 gr :) grazie a tutti per la continua collaborazione  :) mi ci è voluto un po per capirlo ::)

tommy16013

Mai mai mai cantare vittoria troppo presto  :'( adesso il solito stepper non mi alza più quel peso (circa 400 gr) con la solita alimentazione...forse si è fuso. Ho provato con un altro ma nulla...qualcuno ha un idea di quale tipo di stepper devo usare? sapevo che quelli per le stampanti erano abbastanza potenti, non so se sbaglio qualcosa all'alimentazione...

BrainBooster

che tipo di motore era quello che sospetti che sia morto? ::)
hai controllato il driver?

Go Up