Consiglio per alimentare stepper [A4988, pag.3]

Il pacchettino svalutato regge :smiley:
Ho messo due kg di piombi sul carrello con tutta l'elettronica e sono riuscito a fare almeno 3-4 volte avanti e indietro, disabilitando l'L298 quando necessario.. il motore dovrebbe richiedere 3,4A(1,7 per fase), contro i 2,5 del mio pacco!

Un codice per questo schema non sono ancora riuscito a trovarlo, ho visto solo che le configurazioni high e low dei pin ms1 ms2 ed ms3 danno solo la risoluzione del microstepping.. niente di più :\

a occhio, dato che usa STEP e DIR, la logica e' la stessa del L297+L298
http://it.emcelettronica.com/external?url=http://reprap.org/bin/view/Main/Stepper_Motor_Driver_1_1

Grazie brunello, non sembra difficile allora :slight_smile:
Facciamo che se ho bisogno di una durata maggiore provo a fare questo. Delle domande però:
-Gli input step e dir a quanto ho capito vanno: il primo ad impulsi per fare un passo(millisecondi?) e il secondo tenuto fisso HIGH per farlo ruotare in un senso piuttosto che in un altro?
-Ho già una [scheda di controllo l298](http://www.ebay.it/itm/Dual-H-Bridge-DC-Stepper-Motor-Drive-Controller-Module-Board-Arduino-L298N-
236-/200749390267?pt=AU_B_I_Electrical_Test_Equipment&hash=item2ebd9899bb#ht_5450wt_949) di cui però non trovo lo schema, se volessi ricostruire il circuito devo mettere solo la R da 22 e il C da 33 sull'L297?
-Le resistenze di sense vanno messe obbligatoriamente?

Altrimenti prendo un A4988 e dovrei solo dare gli input della prima domanda no? :smiley:

brunello:
a occhio, dato che usa STEP e DIR, la logica e' la stessa del L297+L298
http://it.emcelettronica.com/external?url=http://reprap.org/bin/view/Main/Stepper_Motor_Driver_1_1

Scusami, perché non metti subito il link alla pagina ma fai un giro per emcelettronica?
http://reprap.org/wiki/Stepper_Motor_Driver_1_1
Ciao Uwe

sciorty:
Grazie brunello, non sembra difficile allora :slight_smile:
Facciamo che se ho bisogno di una durata maggiore provo a fare questo. Delle domande però:
-Gli input step e dir a quanto ho capito vanno: il primo ad impulsi per fare un passo(millisecondi?) e il secondo tenuto fisso HIGH per farlo ruotare in un senso piuttosto che in un altro?
-Ho già una [scheda di controllo l298](http://www.ebay.it/itm/Dual-H-Bridge-DC-Stepper-Motor-Drive-Controller-Module-Board-Arduino-L298N-
236-/200749390267?pt=AU_B_I_Electrical_Test_Equipment&hash=item2ebd9899bb#ht_5450wt_949) di cui però non trovo lo schema, se volessi ricostruire il circuito devo mettere solo la R da 22 e il C da 33 sull'L297?
-Le resistenze di sense vanno messe obbligatoriamente?
Altrimenti prendo un A4988 e dovrei solo dare gli input della prima domanda no? :smiley:

  • cosa intendi "per fare un passo(millisecondi?)" quanto é la frequenza massima o quanto é la durata minima del impulso H? La durata minima del L é 0,5µs (SGS Thomson Microelectronics mXryyss datasheet pdf pagina 7).
  • Devi mettere la R da 10kOhm e C da 33nF. Inoltre le resistenze Rsense e Vref.
    Dovresti studiarti gli datasheet del L297 e del L298 perché stai facendo tutte domande di cose che vengono spiegate lí.

Ciao Uwe

uwefed:
La durata minima del L é 0,5µs

  • Devi mettere la R da 10kOhm e C da 33nF. Inoltre le resistenze Rsense e Vref.
    Dovresti studiarti gli datasheet del L297 e del L298 perché stai facendo tutte domande di cose che vengono spiegate lí.

Ciao Uwe

Sì, per l'impulso volevo sapere quello, la resistenza da 10K invece non capisco dov'è!
Chiedevo se dovrei mettere solo quei componenti perchè quelli che vanno sul 298 magari sono già integrati nella scheda che ho io, anche se non ne trovo lo schema.

Comunque a questo punto direi che se proprio devo fare un pilotaggio in corrente prenderei un A4988. Ho visto che il L297 costa intorno ai 3 euro, una volta che ordino da internet tanto vale spenderne un po' di più, dal venditore in zona un L293B me lo faceva pagare 8euro, immagino il 297..sempre se ce l'ha !

Un codice del genere potrebbe andare per l'A4988?

#define stepPin 4
#define dirPin 5

void setup()
{
  Serial.begin(9600);
  Serial.println("Starting stepper exerciser.");

  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

  digitalWrite(dirPin, HIGH);
  digitalWrite(stepPin, LOW);
}

void loop()
{
    int i, j;
    
    for (i=1650; i>=600; i-=150)
    {
      Serial.print("Speed: ");
      Serial.println(i);
      
      for (j=0; j<800; j++)
      {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(2);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(i);
      }

      delay(500);
      Serial.println("Switching directions.");
      digitalWrite(dirPin, !digitalRead(dirPin));

      for (j=0; j<800; j++)
      {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(2);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(i);
      }

      delay(1000);
      Serial.println("Switching directions."); 
      digitalWrite(dirPin, !digitalRead(dirPin));
  }
}

Perchè sto avendo dei problemi alimentando tutto solo con 2500mAh, forse dovrei passare ad altro..

il A4988 ce la fa; non so se lo stepper si muove visto che lo stai pilotando con una frequenza di ca 300kHz.

Perchè sto avendo dei problemi alimentando tutto solo con 2500mAh, forse dovrei passare ad altro..

Mi rendete la mia sfera di cristallo, che devo indovinare cosa vuole dire. :wink: :wink: :wink:

Ciao Uwe

La frequenza di 300kHz l'hai calcolata dai delay?(2+1 uSec?) In ogni caso intendevo al livello di logica :slight_smile:

Per il discorso dei 2500mAh.. ahah
Sopra ho detto che per il momento utilizzo un pacco batterie 3,6V 2500mAh e inizialmente non avevo problemi. Ora che la meccanica è finita e il motore è ben fissato ho fatto altre prove e mi sono reso conto che più di 2Kg il carrello non li porta, dovrebbe essere proprio a causa di questa sottoalimentazione no? (La coppia del motore è di 4,8Kg)

Perciò batteria piombo 12V (o vanno bene anche 6?) xAh(12..?) + A4988+ codice sopra.. funziona?

Se ho capito bene il motore é a 3,06V 1,7A/fase.
Allora A4988 e accumulatore da 12V. per la capacitá:
Quanti motori hai? E quanto tempo deve funzionare?
Ciao Uwe

Il motore è uno al momento e volevo arrivare anche ad una notte magari. A parte il costo, che cambierebbe a prenderne una con abbastanza capacità? (12Ah)

La capacitá determina il tempo di funzionamento, il peso, il costo e i caricabatteria.
Ciao Uwe

Scusate ma un regolatore che porti 3.4 A non c'è?

EDIT: Trovato, ma per 7 euro.. :sweat_smile:
L'ultima strada da prendere prima del microstepping era di trovare una batteria magari più adatta.. tipo 5V e dai 3A in su, da abassare con qualche diodo che regga sti beneamati 3,4A!

Allora non vuoi usare il microstepping?
Risparmiati i soldi per il LM338K e usa subito un driver microstepping col A4988

Il LM338K ha un dropout di 2,2V a 3A se vuoi portare i 12V di un accumulatore al piombo a 5V ( tensione motore piú perdite sui transietori se usi un L298) hai una potenza da dissipare di 21W percui ti serve un bel disipatore.

Ciao Uwe

Dai mi hai convinto!

Ma una domanda:

uwefed:
Se ho capito bene il motore é a 3,06V 1,7A/fase.
Allora A4988 e accumulatore da 12V. per la capacitá:
Quanti motori hai? E quanto tempo deve funzionare?
Ciao Uwe

Se alimento il motore a 12V e l'A4988 lo pilota in corrente.. quanti A si prenderà? 6,8? No perchè mi sembrerebbe un po' assurdo, come si fa il calcolo?

Dai basta questa è l'ultima giuro ahaha prendo questo con il dissipatore (che non saprei come attaccare) oppure quella normale?
Appunto perchè non ho capito come fare il calcolo, non so quanta potenza va dissipata..

Rieccomi!

Ho tutto l'occorrente, batteria 12V 12Ah, a4988, stepper e codice:

#define stepPin 4
#define dirPin 5

void setup()
{
  Serial.begin(9600);
  Serial.println("Starting stepper exerciser.");

  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

  digitalWrite(dirPin, HIGH);
  digitalWrite(stepPin, LOW);
}

void loop()
{
    int i, j;
    i=1650;
      
      for (j=0; j<800; j++)
      {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(4);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(i);
      }

      delay(500);
      Serial.println("Switching directions.");
      digitalWrite(dirPin, !digitalRead(dirPin));

      for (j=0; j<800; j++)
      {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(4);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(i);
      }

      delay(1000);
      Serial.println("Switching directions."); 
      digitalWrite(dirPin, !digitalRead(dirPin));
}

Ho collegato tutto così, all'inizio sembrava non funzionare ma poi mi sono accorto che si dovevano collegare tra di loro i pin reset e sleep. Quindi lo stepper parte e regolo il trimmer per la corrente.
Poi inizio a smanettare con il pin enable che se collegato a 5v pare disabilitare driver, dopodichè il tutto inizia a funzionare a tratti.
Dopo che stacco l'alimentazione dell'arduino lo stepper non si muove (e non è neanche bloccato) e cerco di collegare e scollegare i pin reset e sleep, dopo un po' torna a funzionare sempre fino allo spegnimento..

Che problema può essere? Avevo pensato al fatto che i pin per lo stepper sono 1B-1A-2A-2B e io li ho messi come 1A-1B-2A-2B.. ma se fosse per questo non dovrebbe funzionare mai, non a tratti, giusto?
Avevo pensato a problemi legati alla vicinanza delle piste..

P.S: per spostare il topic in hardware?