spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica Avanzata > Motori e azionamenti

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #11  
Vecchio 05-10-2015, 09.59.07
L'avatar di Extar
Extar Extar non è collegato
Robottaro senior
 
Data registrazione: 11-10-2011
Residenza: lucca
Messaggi: 76
Potenza reputazione: 38
Extar E' per ora ancora un mistero
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
i caratteri trasmessi via seriale sono tutti lunghi 8bit.
Emh, si... Corretto. Chiedo venia

Fra l'altro così peggiorano le cose, e il tempo di invio dei dati diventa di 3300 microsecondi.

Saluti.
__________________
Le cronache di un laboratorio tormentato: T.S Labs


Store Tindie
Rispondi citando
  #12  
Vecchio 05-10-2015, 21.23.34
potter potter non è collegato
Nuovo robottaro
 
Data registrazione: 12-09-2015
Residenza: lombardia
Messaggi: 11
Potenza reputazione: 0
potter E' per ora ancora un mistero
Predefinito

Ciao a tutti , grazie per le risposte .

Extar volevo solo dirti che non potevi essere più chiaro di così ,
non mi hai assolutamente ingarbugliato le idee ……anzi ,
ti sei espresso in maniera veramente molto semplice e ho afferrato appieno il concetto ,
ne farò tesoro per i prossimi progetti . Grazie di cuore .



Citazione:
Semplice, se il potenziometro è a zero, la variabile sensor assume il valore massimo, ovvero 900. La pausa fra un passo e l'altro è di 900, e il motore gira comunque
Vero ………potrei sfruttare il comando Enable del pololu . Se inserisco una
comparazione :quando sensor ==900 disabilita la marcia del
motore .

Codice:
int sensorValue=analogRead(A1);
  sensor= map(sensorValue,0,1023,900,0);
   Serial.println(sensor);

     if (sensor==900)
{
            digitalWrite (EN,HIGH); //disabilito la marcia quando il pot e' a zero

 
 }
Peccato che non funziona , mi ero illuso troppo ...........
Rispondi citando
  #13  
Vecchio 05-10-2015, 22.24.02
potter potter non è collegato
Nuovo robottaro
 
Data registrazione: 12-09-2015
Residenza: lombardia
Messaggi: 11
Potenza reputazione: 0
potter E' per ora ancora un mistero
Predefinito

Risolto !!!

Ricordo di aver letto da qualche parte che
un programma viene letto in modo ciclico , dall ‘alto verso il basso .
Per cui inserendo il comando all'inizio del loop:

if (sensor==900){

digitalWrite (EN,HIGH);

disabilito si la marcia ,
ma , essendo premuto il pulsante di avanti (o indietro) , la riabilito immediatamente al passo successivo .

Quindi ho spostato il comando della comparazione subito dopo quello dei pulsanti :

Codice:
void loop(){
    int sensorValue=analogRead(A1);
  sensor= map(sensorValue,0,1023,900,0);
   Serial.println(sensor);
    
 digitalWrite(EN,HIGH);//alla prima alimentazione tiene spento il motore
  puls1State=digitalRead(4);
  puls2State=digitalRead(5);
  if (puls1State==1){
    
  digitalWrite(EN,LOW);  
  digitalWrite(Dir,HIGH);
  }
  if (puls2State==1){
    
   digitalWrite(EN,LOW);  
  digitalWrite(Dir,LOW);
  }
               if (sensor==900){
      
           digitalWrite (EN,HIGH);//disabilito la marcia quando il pot e' a zero
 
                                   }     
   
  
        
  digitalWrite (Step,HIGH);
  delayMicroseconds(sensor);

  digitalWrite (Step,LOW);
  delayMicroseconds(sensor);

}
……….e funziona pure .........
Ciaooooooo
Rispondi citando
  #14  
Vecchio 08-10-2015, 16.30.39
L'avatar di Extar
Extar Extar non è collegato
Robottaro senior
 
Data registrazione: 11-10-2011
Residenza: lucca
Messaggi: 76
Potenza reputazione: 38
Extar E' per ora ancora un mistero
Predefinito

Esagerato Di nulla!

Sono contento che tutto funzioni, alla prossima!
Saluti
__________________
Le cronache di un laboratorio tormentato: T.S Labs


Store Tindie
Rispondi citando
  #15  
Vecchio 11-10-2015, 00.27.12
potter potter non è collegato
Nuovo robottaro
 
Data registrazione: 12-09-2015
Residenza: lombardia
Messaggi: 11
Potenza reputazione: 0
potter E' per ora ancora un mistero
Predefinito Accelerazione stepper

Ciao a tutti ,
rieccomi a rompervi le scatole .
Non ho voluto aprire un nuovo thread visto che l’argomento riguarda sempre il mio famigerato stepper .
Ho girovagato un po’ in rete ma non ho trovato nulla che rispondesse alle mie esigenze .
Ora che il motore va alla grande , come velocità e regolazione , mi sono accorto che gli manca un parametro abbastanza importante per un corretto funzionamento : l’accelerazione .
In pratica quando ho il massimo riferimento di velocità dal potenziometro , e do’ un comando di marcia , il motore tende a perdere i passi ( credo sia anche abbastanza normale…... povero motore !)
Mi servirebbe giusto quella lieve accelerazione in partenza quando mi trovo nella condizione di velocità massima .
Ho già fatto qualche tentativo .....purtroppo senza buoni risultati .....

Avete qualche idea in proposito ?

Come sempre un Grazie e un Saluto
Rispondi citando
  #16  
Vecchio 11-10-2015, 07.35.45
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 58
Messaggi: 5,458
Potenza reputazione: 424
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

hai una velocità che conosci del motore.
hai un comando che ti fornisce una nuova velocità
invece di assegnare istantaneamente il nuovo valore lo fai per passaggi successivi, il tempo dei vari passaggi sarà la pendenza della tua rampa
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #17  
Vecchio 11-10-2015, 11.53.53
potter potter non è collegato
Nuovo robottaro
 
Data registrazione: 12-09-2015
Residenza: lombardia
Messaggi: 11
Potenza reputazione: 0
potter E' per ora ancora un mistero
Predefinito

Ciao marnic ,
so di avere tutti i parametri che mi servono , ma non so quale istruzione
di arduino usare .
Ho fatto un tentativo con questo IF :


Codice:
void loop(){
  
  int sensorValue=analogRead(A1);
  int sensor= map(sensorValue,0,1024,1100,30);
  
  if (sensor<50){
  digitalWrite (lowSpeed, HIGH);//con velocità alta abilito pin M0 (micropasso pololu)
  delay (50);
  digitalWrite(lowSpeed,LOW);
  }
in pratica volevo settare una bassa velocità per tot millis quando il riferimento del potenziometro è massimo .
Però ogni volta che inserisco nel codice un qualsiasi delay mi influisce sul funzionamento del motore perchè va a rallentare tutto il loop .
Sono in standby ...........
bye
Rispondi citando
  #18  
Vecchio 11-10-2015, 13.25.18
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 58
Messaggi: 5,458
Potenza reputazione: 424
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

il delay è la sconfitta del programmatore, dovrebbero eliminare quella istruzione.

il delay ferma il micro e tutto perde di significato, come si fa allora?
E' un approccio diverso alla programmazione, non più "sequenziale" come fai tu dove appunto se ti serve inserire qualcosa che necessità di un tempo questo va ad inficiare tutto il loop.
Si lavora per stati, un timer "veloce", interrupt e tanti contatori

In sostanta hai un timer che ad esempio ogni 1mS genera un interrupt, la routine di interrupt incrementa una serie di contatori.
Nel loop main vai solo a vedere quale contatore è arrivato al limite che ti serve e, nel caso, richiami la routine o funzione che devi attivare.

Esempio, devi far lampeggiare un led a 1secondo
il tuo metodo prevede:
loop
led on
pausa 1s
led off
pausa 1s
ripeti loop

è chiaro che così, qualsiasi cosa infili nel loop viene eseguito ogni 2s, lentino...

se invece hai:
loop
se contatore led>=1000
azzera contatore
toggle led
fine se
.....
.....
ripeti loop

e ovviamente contatore led viene incrementato ogni 1ms da interrupt, tu puoi:
cambiare la frequenza di lampeggio senza incidere sul resto del programma
avere un'esecuzione veloce

non so se sono stato chiaro, di solito trovi esempi in C dove si spiega appunto l'uso dell'interrupt
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #19  
Vecchio 11-10-2015, 14.08.58
potter potter non è collegato
Nuovo robottaro
 
Data registrazione: 12-09-2015
Residenza: lombardia
Messaggi: 11
Potenza reputazione: 0
potter E' per ora ancora un mistero
Predefinito

Supponevo che ci voleva un qualcosa che svincolasse i ritardi dall'intero programma . L'interrupt appunto ....dovro' studiarmelo un po' .
Rispondi citando
  #20  
Vecchio 12-10-2015, 08.50.57
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 305
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Ricorda che la loop viene chiamata in modo ciclico.
Ogni giro è un nuovo giro...

se ad esempio vel_act = 10 e vel_des = 18
ad ogni loop posso fare
inc = 1;
if(vel_act < vel_des)
inc = -1;
if(vel_act != vel des)
vel_act += inc

ed applicare vel_act che prima o poi raggiungerà vel_des
bau
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
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

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Help arduino ---> Motore stepper linux177 E. Digitale 3 19-07-2010 11.23.26
Controllo Motore Stepper con micro Gotta89 E. di Potenza 0 11-03-2009 13.33.24
Gestione fine corsa motore stepper linuxdrake Elettronica 9 23-01-2009 17.11.15
Motore stepper controllo coals Motori e azionamenti 5 23-02-2005 15.17.58
Come posso dimensionare un motore Stepper??? elia Motori e azionamenti 4 10-09-2003 11.34.06


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


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