![]() |
Braccio robot Mi stò organizzando per costruire un piccolo braccio robotizzato con movimenti tramite servi. Su internet è un argomento abbastanza battuto, youtube è pieno di filmati, ma non ho trovato informazioni riguardanti un particolare. In tutti i progetti, il mio compreso, c'è un sw su pc che si occupa di calcolare le posizioni da comandare ai servi, poi di spedirle ad un microprocessore (su serioale o usb) e il micro si occupa di muovere i servi. In questo processo c'è un buco, grande come una casa, ovvero il pc non è in grado di sapere dove si trova realmente il servo in maniera realtime. Alcuni servi digitali, ad esempio gli hitec, una volta ricevuto l'impulso di comando, dopo un piccolo lasso di tempo generano a loro volta un impulso che può essere riletto, per comunicare la vera posizione del servo. Questa caratteristica è interessante, ma purtroppo sui servi normali non credo che ci sia, e no so se è una caratteristica di tutti i digitali (non credo). Per il mio progetto ho acquistato dei servacci su ebay tipo mg945 e mg995, cineseria di bassissimo livello! Sicuramente non hanno caratteristiche simili agli hitec. Dopo tutta questa premessa, la mia domanda era, c'è qualcuno che ha ritirato fuori il feedback da un servo, magari collegandosi al cursore del potenziometro interno? Oppure vi vengono in mente altre idee? |
Citazione:
Michele |
Citazione:
Come diceva Michele il servo è retroazionato di suo, quindi a parità di segnale di pilotaggio,se non è in blocco, ne risulterà un'angolo di rotazione sempre uguale. |
Si questo è vero e all'inizio era quello che pensavo io. Il problema sorge quando vuoi incrementare le velocità dei movimenti, oppure, per esempio, quando vuoi prendere con la pinza un oggetto. La pinza si deve chiudere quando sei arrivato nel punto di presa, se non hai feedback dal movimento degli altri snodi sei costretto a comandarli poi attendere un tempo sufficientemente lungo prima di chiudere la pinza per essere certo di trovarti nella giusta posizione. Se invece hai feedback appena ti accorgi di essere nel punto di presa puoi chiudere la pinza. Mi stò facendo delle pippe mentali o mi sfugge qualcosa? |
Citazione:
Con servi che ti fanno 60°/0.15sec, è proprio necessario avere dei tempi di risposta così veloci? mettiamo anche caso che i servi si muovano uno dopo l'altro e non contemporaneamente....Non è accettabile 1/2 secondo per il posizionamento del braccio? |
Se proprio vuoi complicarti la vita, tieni separata l'alimentazione di tuti i servi e controlla l'andamento della corrente di ciascun servo: puoi capire se il servo è fermo, se si sta muovendo se è bloccato, anche se effettivamente i tempi di posizionamento sono talmente veloci che non credo ne valga la pena! Michele |
Citazione:
|
io ho sempre visto dei sensori sulla pinza, posizionati in modo da riconoscere, per esempio, se l'oggetto da afferrare è all'interno del raggio d'azione. |
Il problema non è solo nella pinza ma in tutti i movimenti. Andare a leggere la corrente mi sembra moooolto macchinoso allora a questo punto mi prendo il centrale del potenziometro e lo leggo con l'AD del pic. Posso trovare il rapporto posizione/tensione oppure per ovviare a problemi di non linearità, posso semplicemente andare a controllora il valore letto, se per più di 30-40ms rimane lo stesso (con una tolleranza +/- da vedere) posso dire che il servo è arrivato a destinazione. Sulla pinza comunque monterò un sensore di forza oppure andrò a leggere la corrente assorbita, anche perchè al variare della grandezza dell'oggetto il servo dovrà fermarsi prima o dopo per non andare a sforzare. |
Ma a te non serve avere un valore ritornato dal servo perchè il servo resta nella sua posizione fintanto che tu gli mandi in maniera continuativa gli impulsi relativi a quella posizione, se tu smettessi di mandargli impulsi (nel senso che metti a massa la pista del segnale) il servo impazzisce, perchè anche per la posizione neutrale vuole un impulso, quindi tu tassativamente saprai sempre dove sta il tuo servo, perchè sei tu che istante dopo istante decidi quanto deve essere largo l'impulso che gli mandi. Il tuo ragionamento filerebbe con i motori passo passo nei quali se magari perdi qualche passo potresti ritrovarti nella condizione in cui il computer pensa che il tuo step sia in una posizione mentre in realtà è in un altra; ma per questo esistono i fine corsa che una volta che il motore raggiunge la fine qualunque offset viene comunque annullato. E poi si suppone che sia tu a gurdare il braccio e controllarlo, quindi non sarebbe necessario nemmeno il fine corsa, come d'altronde è nei progetti di internet. |
Citazione:
Michele |
Marco, non riesco a capire quale sia il problema: i servi si posizionano dove dici tu, la pinza si (dovrebbe) chiudere quando il braccio è arrivato a destinazione e quando un sensore all'interno segnala la presenza dell'oggetto. Un sensore di pressione può dirti 'quanto' stringere. Cosa manca? Vuoi sapere se qualche ostacolo ne ha impedito il movimento? Dovresti usare dei sensori IR, per esempio. Oppure, ma dalla discussione non sono riuscito a capirne le motivazione, puoi usare degli encoder di posizione negli snodi |
|
Tralasciamo per un attimo il discorso pinza, visto che è un caso particolare. Forse mi spiego male, ma ammettiamo che voglio ruotare il robot, poi finita la rotazione stendere il braccio. Comando la rotazione ma non so quando effettivamente è arrivato a fine rotazione per dare il comando per stendere il braccio. Senza feedback sono costretto a dare il comando di rotazione, attendere un tempo suffcientemente lungo per essere sicuro che la rotazione è terminata e poi dare il comando di stendere il braccio. |
Citazione:
I servi non impazziscono se smetti di inviare impulsi. Il braccio non lo guiderò a vista ma stò sviluppando un software per fargli fare movimenti in automatico, come del resto facciamo con i robot industriali. |
Citazione:
Puoi anche costruirtelo partendo da un vecchio mouse a rotella :wink: |
Raga, si sta cercando di trovare soluzioni elettroniche "evolute"... Basta leggere la firma di Marco per capire con chi si sta parlando. :wink: Ritornando al discorso, secondo me andrebbe bene semplicemente avere un feedback di "motore fermo" ( corrente ~0)per far partire il comando successivo, senza utilizzare encoder rotativi.... Inviando un segnale al servo, quello si sposterà in una esatta posizione!! quindi sei sicuro che andrà nella posizione da te desiderata, devi solo controllare il momento in cui ci arriva. |
Citazione:
|
Citazione:
|
oh beh'... allora scusate se mi son permesso di consigliare un semplice encoder :P a questo punto allora spiegatemi perché non va bene ed è troppo poco evoluto :D |
Naturalmente, sia ben chiaro, non volevo offendere nessuno ^_^ |
Citazione:
|
Calma , calma, siamo tutti smanettoni no? Ogni smanettone affronta il problema a propio modo ed è positivo confrontarsi, molte volte si cercano mosche e non ci si accorge che stà passando un elefante, confrontarsi aiuta... |
figuratevi, non ci son problemi, anzi... |
Comunque credo che alla fine farò un doppio controllo. 1° - Feedback dal potenziometro di ogni servo in modo da conoscere di continuo la posizione, letto su AD del pic. 2° - Lettura della corrente assorbita da ogni servo, metto su ogni negativo dei servi una resistenza da 0,1ohm e con il pic leggo la caduta, ogni ampere leggo 100mV. Se la caduta fosse eccessiva riduco la resistenza. In questo modo posso anche controllare se il servo non arriva in posizione a causa di impedimenti meccanici. Usero un bel pic della serie 18, ne dovrei avere qualcuno con 13 AD forse anche a 12 bit. |
Ciao Marco, io credo che se vuoi avere un controllo fatto bene ti conviene utilizzare solo la meccanica ed il potenziometro del servocomando, il pilotaggio del motore ed il feedback li fai usando il PIC, almeno potresti gestire anche le rampe di accelerazione e frenatura come pure la coppia di mantenimento, Il numero di fili che andrebbero al servo non cambierebbe di molto, però guadagneresti in flessibilità e precisione di controllo. IMHO. Buon Lavoro. :yeah: |
Citazione:
Pur non essendo un guru dell'eletttronica o della robotica, resto dell'idea che l'encoder sia quello che alla fine da meno problemi; è fatto per questo, no? L'idea di controllare la corrente assorbita dai servi merita comunque di essere approfondita; ma aggiungo: controllare il potenziometro del servo non è quasi come verificare un encoder? Per spiegarmi meglio, non vorrei che la complessità della gestione del ritorno del servo e dell'assorbimento alla fine sia maggiore dell'introduzione di un encoder. Ma visto che Marco vuole fare da 'cavia' per l'esperimento, alla fine ce lo dirà, no? :fiu: saluti |
Citazione:
Quindi, considerando che gli angoli che compierà il braccio non sono molto ampi, e considerando che ci sono tre errori sui tre servi, si arriva ad un errore a mio parere "grande". Utilizzando invece il potenzionemtro del servo, essendo esso un elemento "continuo", e che quindi non da in uscita un segnale discreto, ma continuo, si ha una precisione maggiore.:wink: |
L'encoder è sicuramente la cosa più precisa per leggere la posizione di un albero, ma poi sorgono problemi meccanici di accoppiamento e peso visto che il braccio è comunque qualcosa di piccolo. X Elnonino : Grazie, ci avevo pensato e quasi sicuramente sarà il secondo passo, non avendo in mano i servi e non conoscendo gli assorbimenti non so come dimensionare il ponte H. Quando arrivano vedo, magari uso un pò di l298 che ho sul cassetto. Il fatto di dover ricevere la seriale, e pilotare i servi cercando di fare le rampe in ppm (se così si possono chiamare perchè faranno schifo!) complica non poco la vita al pic. |
Giusto per dirle tutte... leggere il potenziometro ha un altro innegabile vantaggio rispetto all'encoder perchè restituisce la posizione assoluta, mentre l'encoder dà una posizione relativa! Michele |
| Tutti gli orari sono GMT +2. Adesso sono le 02:02. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002