-
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
Ciao a tutti. Ho da poco completato la realizzazione meccanica di una avvolgitrice
con motori passo passo e del relativo controllo Arduino che pilota due driver A4988.
Adesso devo fare il programma. il primo scoglio è che i motori vanno a 1/2 passo
anche se i tre pin del A4988 dedicati sono tutti scollegati e quindi il motore dovrebbe andare a passo intero.
Qualcuno può aiutarmi. Poi avrò bisogno anche per proseguire con il programma eh eh !!. -
.
Ciao, non sono molto pratico dei vari controller di arduino, ma cercando in rete ho trovato qualche informazione in piu. Il datasheet dell' A4988 mi sembra abbastanza leggibile. L'integrato monta anche il doppio ponte per pilotare direttamente un piccolo motore passo passo. Probabilmente sfruttando tutta la corrente max (output drive capacity of up to 35 V and ±2 A) bisogna raffreddarlo con dissipatore e ventilatore. . -
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
Non è una questione di potenza è che va a 1/2 step invece che uno step intero.
Mi spiego meglio. Il motore è da 200 passi giro ma per fare un giro completo
devo dare 400 impulsi.
const int pinDir = 6;
const int pinStep = 7;
const int pinDir_1 = 8;
const int pinStep_1 = 9;
const int numStepMotore = 200; //E' il numero di step per rotazione del motore
const float razio = 10.36;// E' il rapporto di riduzione del riduttore IL RAPPORTO REALE DEL RIDUTTORE E'5,18
const int rapporto = 6;// E' il rapporto dei giri del secondo albero rispetto al mandrino
const int numGiri = 50;// Numero di giri impostati per ogno strato
const int velIni = 3000;// velocità iniziale per la rampa
const int velFin = 180;// velocità finale per la rampa
const int rampa = 20;// incremento rampa
const long numPassi = numStepMotore * numGiri * razio;// numero passi totali occorrenti per il n.giri impostato
long passiFatti = 0;
int dir = HIGH;
int stato = HIGH;
int stato_1 = HIGH;
int app = 0;
int velRampa = velIni;
void setup() {
//inizializzo i PIN come OUTPUT
passiFatti = 0;
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);
pinMode(pinStep_1, OUTPUT);
pinMode(pinDir_1, OUTPUT);
//direzione dei motori
digitalWrite(pinDir, HIGH);
digitalWrite(pinDir_1, LOW);
velRampa = velIni;
}
void loop() {
//Fino al raggiungimento del numero di giri impostato
while (passiFatti < numPassi) {
// //esegue i passi del motore mandrino determinati dal rapporto delle velocità
// for (int x = 0; x < rapporto; x++) {
//delayMicroseconds(velocita);
// Rampa di avvio
if (velRampa > velFin) {
velRampa = velRampa - rampa;
}
digitalWrite(pinStep, stato);
app = app + 1;
if (app == rapporto) {
digitalWrite(pinStep_1, stato_1 );
stato_1 = !stato_1;
app = 0;
}
delayMicroseconds(velRampa);
//delay(1);
stato = !stato;
passiFatti = passiFatti + 1;// incrementa il numero di passi eseguiti
}
//aspetto 3 secondi
delay(3000);
passiFatti = 0;
dir = digitalRead(10);
dir = !dir;
digitalWrite(10, dir);
velRampa = velIni;
}. -
.
Scusa Tonino, premetto che non capisco molto di microcontrollori, ma sul driver A4988 c'è la possibilità di farlo funzionare in FULL ( che dovrebbe essere a passo intero ), mettendo gli ingressi MS1, MS2, MS3 in low come da tabella sul datasheet.
Scusatemi sin da ora se ho detto una cavolata.. -
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
No non è una cavolata è proprio questo che non funziona. Ho lasciato scollegati i tre pin
di impostazione passi che dovrebbero essere a 0V perchè hanno resistenze interne verso massa
come spiegato sul manuale. con questa configurazione (tutti e tre bassi) deve andare a passo intero
però va a 1/2 passo.. -
.Scusa Tonino, premetto che non capisco molto di microcontrollori, ma sul driver A4988 c'è la possibilità di farlo funzionare in FULL ( che dovrebbe essere a passo intero ), mettendo gli ingressi MS1, MS2, MS3 in low come da tabella sul datasheet.
Scusatemi sin da ora se ho detto una cavolata.
Mi sembra corretto Dalle tabelle del datasheet :
Ma anche sul sito del modulo :
Ne deduco che bisogna impostare i pin al livello logico adeguato. (MS1 = HIGH)
Probabilmente dipende anche da che modulo e' stato acquistato. Magari i pin sono gia' preimpostati sull' smd con delle resistenze.. -
.
Secondo quello che capisco io Tonino devi collegarli a massa. . -
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
Fatto non cambia nulla . -
.
Probabilmente si risolve da programma o impostando con resistenza di pull up il terminale MS1. Certo che non sapendo ne' che board si utilizza ne' il modello di motore.. qui ci vorrebbe Pasqualina di Civitanova Marche.
. -
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
La board è Arduino uno R3 e il motore è un nema 17 cinese di cui non conosco la marca
MS1 MS2 MS3 sono tutti collegati a massa. -
.La board è Arduino uno R3 e il motore è un nema 17 cinese di cui non conosco la marca
MS1 MS2 MS3 sono tutti collegati a massa
Eventualmente si può tentare un esperimento collegando MS1 al livello logico alto. Ok x la board adruino R3, ma sarebbe utile soprattutto conoscere la board su cui è installato il controller A4988.. -
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
La board l'ho costruita io con una basetta millefori. Ma è semplicissima solo i collegamenti necessari
la marca del controller è Pololu. -
.
Arcturus
- Group
- Mastro Avvolgitore and Peer
- Posts
- 5,612
- Location
- San Lorenzo in Campo marche
- Status
- Offline
Ho riscritto un nuovo schech praticamente uguale ed adesso i motori vanno a passo intero.
Chissà perchè. primo ostacolo superato ora c'è tutto il resto. Ci provo se mi date una mano.... -
.
Ecco sono queste le cose che mi fanno stare lontano dal software, che apparentemente le cose sono giuste e non funziona niente.
A volte nello scrivere un listato basta uno spazio in più e non funziona niente.
Comunque Antonio complimenti hai trovato l'inghippo, avanti così.. -
.Ho riscritto un nuovo schech praticamente uguale ed adesso i motori vanno a passo intero.
Chissà perchè. primo ostacolo superato ora c'è tutto il resto. Ci provo se mi date una mano...
Il problema sarebbe che per revisionare il software dovrei montare un circuito con lo stesso controller e lo stesso motore. Da remoto posso solo simulare i segnali sulla board di arduino e visualizzarli sull' oscilloscopio. Come dicono gli infornatici, un piccola svista nella scrittura si trasformano in ore per trovare l'eventuale bug del programma.
Edited by SalvatoreX - 11/15/2022, 12:39 PM.