spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Elettronica > E. di Potenza

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 01-07-2010, 12.49.08
KID1412 KID1412 non è collegato
Robottaro senior
 
Data registrazione: 16-02-2010
Residenza: Venezia
Messaggi: 84
Potenza reputazione: 42
KID1412 E' per ora ancora un mistero
Predefinito Rampe accelerazione/decelerazione

Salve, come alcuni di voi sapranno sto lavorando su un rover 4wd, basato su un dsPIC33F e controllato da remoto tramite XBee.

Interrotto lo sviluppo tempo fa causa maturità, posso ora tornare attivo nel mio progetto e infatti eccomi qua a chiedere un altro consiglio

Il controllo dei motori avviene in modo PWM LAP: dal pc invio i due interi contenenti il valore di dc da impostare (da 0 a 4096) che vengono applicati ai due MCPWM del dsPIC.

Ho letto però che non si può avere un passaggio immediato da fermo (2048) a massima velocità in avanti (4096) perchè si potrebbero danneggiare i motori (e ho sperimentato a mie spese una cosa analoga) ma bisogna prevedere delle rampe di accellerazione e decelerazione in modo da avere una regolazione della velocità graduale.

Ebbene, per l'aspetto pratico come è consigliato procedere? Cioè, mettiamo ad esempio che il robot è fermo (2048) e voglio farlo andare al 25% della velocità in avanti (passo due interi di valore 2048+1024=3072): devo ottenere un incremento pari a 1024.
Io pensavo a fare un ciclo while con incrementi anche di 1 (per il massimo della precisione) separati da brevissimi ritardi software (delay).
In questo modo posso regolarmi la velocità come voglio, nel tempo che voglio, ma è giusto come approccio o mi consigliate qualcos'altro?
Anche perchè, come faccio a conoscere i corretti tempi di incremento?


Altra cosa: pensavo di controllare le 4 ruote a gruppi di due, cioè le due di sinistra e le due di destra.
Se però applico gli stessi segnali pwm a due motori dello stesso lato, sebbene siano identici come marca e modello nella pratica non lo sono e quindi ci sarà quello che gira più lentamente e quello che gira più velocemente, anche se di poco.
Questo può creare significativi problemi a lungo andare? Perchè ad esempio un motore che girerebbe più lentamente è costretto ad andare più forte e viceversa... oppure si tratta di differenze talmente piccole che sono ininfluenti?

Mille grazie in anticipo per le risposte!
Rispondi citando
  #2  
Vecchio 01-07-2010, 15.29.14
L'avatar di calo
calo calo non è collegato
Moderator
 
Data registrazione: 14-06-2006
Residenza: EmiliaSiciliaRomagna
Messaggi: 802
Potenza reputazione: 84
calo E' un faro della comunità
Predefinito

Citazione:
Orginalmente inviato da KID1412 Visualizza messaggio
Io pensavo a fare un ciclo while con incrementi anche di 1 (per il massimo della precisione) separati da brevissimi ritardi software (delay).
In questo modo posso regolarmi la velocità come voglio, nel tempo che voglio, ma è giusto come approccio o mi consigliate qualcos'altro?
Anche perchè, come faccio a conoscere i corretti tempi di incremento?
Quando si tratta di temporizzazioni, il top è usare un timer evitando incrementi a loop o ritardi software. Certo la cosa deve integrarsi bene con tutto il tuo codice, ma se non crea complicazioni meglio un timer.
Personalmente sto alla larga dai cicli while, perchè a causa di qualche baco potrebbero diventare bloccanti.

Citazione:
Orginalmente inviato da KID1412 Visualizza messaggio
....Se però applico gli stessi segnali pwm a due motori dello stesso lato, sebbene siano identici come marca e modello nella pratica non lo sono e quindi ci sarà quello che gira più lentamente e quello che gira più velocemente, anche se di poco.
se vuoi evitare un controllo di velocità fatto con i dovuti sensori, ti conviene usare 4 pwm distinti, avendo così la possibilità di correggere trial&error eventuali disuguaglianze.....alla fine si ottiene un risultato accettabile

Citazione:
Orginalmente inviato da KID1412 Visualizza messaggio
Questo può creare significativi problemi a lungo andare? Perchè ad esempio un motore che girerebbe più lentamente è costretto ad andare più forte e viceversa... oppure si tratta di differenze talmente piccole che sono ininfluenti?
non capisco cosa intendo per "costretto a girare più forte". Il Problema che incontrerai sarà certamente quello della traiettoria imprecisa, che dovrai tentare di aggiustare come appena detto sopra.
Rispondi citando
  #3  
Vecchio 02-07-2010, 07.13.47
KID1412 KID1412 non è collegato
Robottaro senior
 
Data registrazione: 16-02-2010
Residenza: Venezia
Messaggi: 84
Potenza reputazione: 42
KID1412 E' per ora ancora un mistero
Predefinito

Citazione:
Orginalmente inviato da calo Visualizza messaggio
Quando si tratta di temporizzazioni, il top è usare un timer evitando incrementi a loop o ritardi software. Certo la cosa deve integrarsi bene con tutto il tuo codice, ma se non crea complicazioni meglio un timer.
Personalmente sto alla larga dai cicli while, perchè a causa di qualche baco potrebbero diventare bloccanti.
Perfetto, posso gestire tutto con un timer ma la domanda che mi pongo è: quanto deve essere il tempo di esecuzione della rampa?
Cioè ad esempio per far passare il motore dallo stato di fermo a rotazione in un verso al 50% della velocità, in quanto tempo deve avvenire questo passaggio? Sicuramente dipenderà dal motore, ma come ci si deve muovere?

Citazione:
se vuoi evitare un controllo di velocità fatto con i dovuti sensori, ti conviene usare 4 pwm distinti, avendo così la possibilità di correggere trial&error eventuali disuguaglianze.....alla fine si ottiene un risultato accettabile
Anche usando 4 PWM distinti come faccio a far correggere disuguaglianze? (senza usare 4 encoder, come posso prevedere in seguito)
Nel senso, sicuramente ogni motore si comporta in maniera leggermente diversa, anche con lo stesso valore di dc, quindi servirebbe comunque un meccanismo di retroazione (mediante encoder), giusto?

Citazione:
non capisco cosa intendo per "costretto a girare più forte". Il Problema che incontrerai sarà certamente quello della traiettoria imprecisa, che dovrai tentare di aggiustare come appena detto sopra.
Qui ho sbagliato a pensare
Mi immaginavo che se il robot si muovesse dritto (magari fosse così semplice!!) impostando a tutti e 4 i motori lo stesso dc, ci sarebbe stato il motore che magari girava più lento degli altri che sarebbe stato sforzato a girare più forte, per la prevalenza degli altri, o ancora si sarebbero tutti compensati a seconda delle forze in gioco.
Rispondi citando
  #4  
Vecchio 02-07-2010, 07.37.26
L'avatar di calo
calo calo non è collegato
Moderator
 
Data registrazione: 14-06-2006
Residenza: EmiliaSiciliaRomagna
Messaggi: 802
Potenza reputazione: 84
calo E' un faro della comunità
Predefinito

Citazione:
Orginalmente inviato da KID1412 Visualizza messaggio
quanto deve essere il tempo di esecuzione della rampa?
è difficile rispondere a questa domanda...considerando le costanti di tempo in gioco, tempi nell'ordine di una decina di ms dovrebbero essere sufficienti.

Considera che nei miei primi esperimenti io mi divertivo a far impennare il robot (due ruote più rotino) dando 0% 100% del pwm in maniera istantanea e non avevo neanche i condensatori sui motori.....alla fine non credo di aver fatto danni
Le rampe invece sono indispensabili sugli stepper.

Citazione:
Orginalmente inviato da KID1412 Visualizza messaggio
Anche usando 4 PWM distinti come faccio a far correggere disuguaglianze? (senza usare 4 encoder, come posso prevedere in seguito)
infatti come ti ho detto prima, dovresti lavorare per tentativi...lavoro che vale solo per un tipo di suolo, magari il pavimento di casa.
Rispondi citando
  #5  
Vecchio 02-07-2010, 07.54.35
KID1412 KID1412 non è collegato
Robottaro senior
 
Data registrazione: 16-02-2010
Residenza: Venezia
Messaggi: 84
Potenza reputazione: 42
KID1412 E' per ora ancora un mistero
Predefinito

Ok per le rampe, posso fare un aggiustamento di 1/4096 del dc ogni ms, direi che può bastare.

Citazione:
infatti come ti ho detto prima, dovresti lavorare per tentativi...lavoro che vale solo per un tipo di suolo, magari il pavimento di casa.
Qui invece non ho ben capito cosa intendi per lavorare a tentativi, potresti essere più dettagliato, considera che è la prima volta che faccio una cosa seria
Rispondi citando
  #6  
Vecchio 02-07-2010, 09.12.54
L'avatar di calo
calo calo non è collegato
Moderator
 
Data registrazione: 14-06-2006
Residenza: EmiliaSiciliaRomagna
Messaggi: 802
Potenza reputazione: 84
calo E' un faro della comunità
Predefinito

Citazione:
Orginalmente inviato da KID1412 Visualizza messaggio
cosa intendi per lavorare a tentativi, potresti essere più dettagliato, considera che è la prima volta che faccio una cosa seria
avvia i 4 motori in modo da far andare il robot teoricamente diritto. Se vedi che alla lunga va storto, prova a compensare aggiustando di qualche % i pwm (ecco perchè è meglio usarne 4)

Poi prova una rotazione su se stesso di 90° e 180° e la retromarcia. Ripeti le prove per un paio di velocità. Facendo così, memorizzi i pwm per le manovre fondamentali. Ovviamente scordati traiettorie curvilinee.
Rispondi citando
  #7  
Vecchio 02-07-2010, 09.15.48
KID1412 KID1412 non è collegato
Robottaro senior
 
Data registrazione: 16-02-2010
Residenza: Venezia
Messaggi: 84
Potenza reputazione: 42
KID1412 E' per ora ancora un mistero
Predefinito

Capito, grazie per i consigli, appena finisco il pcb finale vedrò di fare qualche aggiustamento!
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum


Tutti gli orari sono GMT. Adesso sono le: 18.24.18.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB