Go Down

Topic: Motor Shield R3 e problemi di temperatura (Read 5150 times) previous topic - next topic

kurtommy

Sto facendo qualche prova con degli step motor, collego questo motore:
http://robot-italy.com/it/39byg013-nema-17-bipolar-20mm-stepper.html

ad Motor shield rev3 uso il codice sotto.

Tutto funziona correttamente il motore fa un giro in senso orario ed uno antiorario, in accordo con la velocità che specifico nel codice. (myStepper.setSpeed(100);)
Alimento lo shield con un alimentatore esterno a 9V.

L'unica cosa è che scalda terribilmente, in tempo 1/2 minuti il chip non si tocca e scalda TANTISSIMO anche il motore? qualche suggerimento?


Code: [Select]
#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;                             // for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 12,13);           

void setup() {
   myStepper.setSpeed(100);
   Serial.begin(9600);
   pinMode(pwmA, OUTPUT);
   pinMode(pwmB, OUTPUT);
   pinMode(brakeA, OUTPUT);
   pinMode(brakeB, OUTPUT);
   digitalWrite(pwmA, HIGH);
   digitalWrite(pwmB, HIGH);
   digitalWrite(brakeA, LOW);
   digitalWrite(brakeB, LOW);
}

void loop() {
    myStepper.step(200);
    delay(1000);
    myStepper.step(-200);
    delay(1000);
   
    Serial.print("A0:");
    int a0 = analogRead(A0);
    int a1 = analogRead(A1);
    Serial.print(a0);
    Serial.print(" A1:");
    Serial.println(a1);
}

Michele Menniti

Ciao kurtommy, sbaglio o almeno un paio di volte ti è stato gentilmente chiesto di aprire questi Topic nelle specifiche sezioni? Inoltre 3-4gg fa ne hai aperto un'altro sullo stesso argomento, non potevi continuare a scrivere lì? Ognuno di noi deve dare il proprio contributo, non è giusto costringere il MOD a fare questo super-lavoro ogni santo giorno di spostare i Topic perché non stiamo accorti.
Ho da farti un paio di domande sul tuo problma, maaspetto di leggere la domanda nella giusta sezione. Grazie.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

UweFederer


uwefed

kurtommy leggi con attenzione le specifiche del motore:
6,8Ohm e 0,4A per fase.
Tu lo alimenti con 9V. Penso che il L298 sulla motor shield sopravive ma il motore no.
Suggerimento: Attieniti alle specifiche. Alimenta il shield in modo che il motore assorbe 0,4A.

Ciao Uwe

kurtommy


Ciao kurtommy, sbaglio o almeno un paio di volte ti è stato gentilmente chiesto di aprire questi Topic nelle specifiche sezioni? Inoltre 3-4gg fa ne hai aperto un'altro sullo stesso argomento, non potevi continuare a scrivere lì? Ognuno di noi deve dare il proprio contributo, non è giusto costringere il MOD a fare questo super-lavoro ogni santo giorno di spostare i Topic perché non stiamo accorti.
Ho da farti un paio di domande sul tuo problma, maaspetto di leggere la domanda nella giusta sezione. Grazie.

Hai super ragione, ho postato nella sezione sbagliata, non ci ho messo attenzione.
Per il fatto di aprire un nuovo post l'ho fatto perchè la domanda adesso era diversa e pensavo che fosse giusto farlo per non scrivere cose fuori tema! e meglio qundi che scrivo sempre nel solito allora?!
GRAZIE

kurtommy


kurtommy leggi con attenzione le specifiche del motore:
6,8Ohm e 0,4A per fase.
Tu lo alimenti con 9V. Penso che il L298 sulla motor shield sopravive ma il motore no.
Suggerimento: Attieniti alle specifiche. Alimenta il shield in modo che il motore assorbe 0,4A.

Ciao Uwe


Ho letto le specifiche del motore ma avevo anche letto questo nelle specifiche del Motor shield:Operating Voltage: 5V to 12V.
Come devo fare per attuare questo tuo suggerimento? "Alimenta il shield in modo che il motore assorbe 0,4A."
Legge di Ohm? V = R* I -> 6.8 * 0.4 = 2.72 V ? (sicuramente ho detto una bomba!)

Grazie per le risposte

Michele Menniti



Ciao kurtommy, sbaglio o almeno un paio di volte ti è stato gentilmente chiesto di aprire questi Topic nelle specifiche sezioni? Inoltre 3-4gg fa ne hai aperto un'altro sullo stesso argomento, non potevi continuare a scrivere lì? Ognuno di noi deve dare il proprio contributo, non è giusto costringere il MOD a fare questo super-lavoro ogni santo giorno di spostare i Topic perché non stiamo accorti.
Ho da farti un paio di domande sul tuo problma, maaspetto di leggere la domanda nella giusta sezione. Grazie.

Hai super ragione, ho postato nella sezione sbagliata, non ci ho messo attenzione.
Per il fatto di aprire un nuovo post l'ho fatto perchè la domanda adesso era diversa e pensavo che fosse giusto farlo per non scrivere cose fuori tema! e meglio qundi che scrivo sempre nel solito allora?!
GRAZIE

Basta appunto un po' di attenzione in futuro, per ora ci ha pensato UWE. L'argomento è uguale, cambia la problematica, quindi puoi benissimo restare in casi del genere in un Topic aperto in precedenza, ormai è fatta.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Michele Menniti



kurtommy leggi con attenzione le specifiche del motore:
6,8Ohm e 0,4A per fase.
Tu lo alimenti con 9V. Penso che il L298 sulla motor shield sopravive ma il motore no.
Suggerimento: Attieniti alle specifiche. Alimenta il shield in modo che il motore assorbe 0,4A.

Ciao Uwe


Ho letto le specifiche del motore ma avevo anche letto questo nelle specifiche del Motor shield:Operating Voltage: 5V to 12V.
Come devo fare per attuare questo tuo suggerimento? "Alimenta il shield in modo che il motore assorbe 0,4A."
Legge di Ohm? V = R* I -> 6.8 * 0.4 = 2.72 V ? (sicuramente ho detto una bomba!)

Grazie per le risposte

mah, il tuo ragionamento sembra corretto, la prova che puoi fare è appunto alimentare direttamente il motore a 3V e vedere come si comporta, se non scalda e lavor correttamente, a quel punto devi dimensionare correttamente il motor shield che, però, a quanto leggo, vuole minimo 5V.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

kurtommy

questo alimentatore ha tensione variabile, se lo metto a 6V, non so per quale motivo ma invece di fare un giro in un senso ed uno in un altro, continua a farli nel solito verso, se aumento la tensione, riprende a fare come descritto nello sketch.
Idee?

Michele Menniti

ma è un alimentatore SERIO o uno di quegli scatolotti 5€/kg col commutatore rotativo 3-4,5-6-7,5-9-12V dichiarati per 1A (o, peggio, 0.5A) e poi in realtà ne danno meno di un terzo con tensione non stabilizzata?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

kurtommy

Penso sia più versione scatolotto!
Ma se serve una tensione così bassa potrei evitare di dargli quella esterna e fare tutto conquella di arduino.
Anche se adesso che ci penso mi pare di ricordare che eroga massimo 0.040A mentre al motore per fase ne servono 0.4A che è 10  volte di più.
Mi consigli quindi di provare un buon alimentatore?
Altrimenti potrei provare a collegarci una cella lipo da 3.7V Per la corrente quelle non hanno certo problema ho 20C a 2200mAh dovrebbe erogare 44Ampere che stra avanazno.
Dico bene?

Michele Menniti

Allora lo scatolotto buttalo e cerca di non lasciare impronte digitali, in modo che non si possa mai sapere che l'hai messo tu in circolazione :smiley-mr-green: Questi alimentatori erogano tensioni decisamente superiori a quelle nominali, non  stabilizzate, sporche da morire e con correnti ridicole.
L'idea della LiPo è buona, l'alimentazione diretta come prova ti fa capire se il motore smette di riscaldare o comunque se diminuisce tanto.
Arduino come controllore non è in grado di andare oltre 200mA totali e 40mA per pin, quindi niente da fare. Come uscita a 5V invece dovrebbe superare i 300mA, pochi in ogni caso; la tensione esterna ti serve, quindi un buon alimentatore, governato tramite transistor o mosfet da Arduino ed è tutto finito.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

kurtommy

OK, grazie ho capito tutto meno che questa parte:
"governato tramite transistor o mosfet da Arduino ed è tutto finito."
La soluzione più veloce mi pare comunque quella della batteria (fra poco la provo e ti dico come va). Per l'alimentatore mi sai consigliare qualche modello buono da acquistare? Magari con tensioni variabili e con una corrente decente...
Grazie 1000

uwefed

L' idea della LiPo non mi piace. In caso di corto eroga troppa corrente e rischi di fondere qualcosa o incendiare la LiPo. Un alimentatore limita molto prima la corrente.
Il L298 perde un po di tensione sui transistori. Per avere 2,7V sul Motore serve ca 5V di alimentazione.

Ciao Uwe

kurtommy

#14
Aug 21, 2012, 01:22 am Last Edit: Aug 21, 2012, 01:27 am by kurtommy Reason: 1
Ho fatto una prova al volo con una lipo che ne ho molte disponibili.
Una cella che misura ai capi alimentando arduino e motore 3.94V i valori che leggo dagli ingressi analogici A0 ed A1 sono:
124 e 123
quindi a quanto ho letto dovrebbe essere 1024 pari a 2A quindi facendo la proporzione viene 2*124/1024 = 0,24A assorbiti per ogni ponte H
Giusto ?

Ho fatto anche qualche altra prova con il codice, inserendo pause di 1Millisecondo tra un movimento ed un altro vedo che la corrente assorbita è notevolmente inferiore:
Code: [Select]

myStepper.step(200);
  delay(1);
  myStepper.step(-200);
  delay(1);


Leggo sulla seriale
A0:27 A1:84

Ma ancora una domanda, ho sempre letto che le chiamate alle funzioni myStepper.step(); sono bloccanti ovvero fino a quando il movimento non è stato completato il codice non va avanti, ma al momento che effettuo la lettura della corrente assorbita sugli ingressi A0 e A1 il motore è fermo quindi leggo la corrente che passa perchè lo shield tiene comunque alimentato il motore nella fase in cui rimane al compimento dell'ultimo passo? altrimenti sarebbe fermo disalimentato e dovrei leggere corrente = 0 !

Go Up