Buggfix Plus
Aktuellt datum och tid: 08.57 2020-06-06

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 83 inlägg ]  Gå till sida Föregående  1, 2, 3, 4, 5, 6  Nästa
Författare Meddelande
InläggPostat: 16.33 2019-10-17 
Användarvisningsbild

Blev medlem: 17.51 2007-12-13
Inlägg: 810
Ort: Stockholm
TMCn är dessutom väldigt mycket tystare. Bytte till dessa i min prusa i3 PRO och den är nu som en viskning. Jag bytte till tmc2130


.


Upp
 Profil  
 
InläggPostat: 18.35 2019-10-17 

Blev medlem: 13.50 2012-07-24
Inlägg: 69
test


Senast redigerad av basekson 15.44 2019-11-09, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 19.01 2019-10-17 

Blev medlem: 10.02 2009-05-08
Inlägg: 813
Ort: Lund
säter skrev:
Kan du förklara vad du ska ha grejen till?


Upp
 Profil  
 
InläggPostat: 19.43 2019-10-17 

Blev medlem: 13.50 2012-07-24
Inlägg: 69
Test


Senast redigerad av basekson 17.53 2019-12-04, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 20.18 2019-10-17 
Användarvisningsbild

Blev medlem: 11.56 2004-05-08
Inlägg: 3891
Ort: Stockholm
basekson skrev:
void loop(){
for (int i = 0; i <= 6000 ; i+=100) {
Serial.println(i);
spd = i;
stepper.setSpeed(dirr * spd);
stepper.runSpeed();
delay(2000);

}

}

basekson: Du kan inte använda delay() tillsammans med AccelStepper, och .runSpeed() är antagligen inte heller rätt funktion att anropa. Läs dokumentationen för .run() och .runSpeed().

Som du ser ska funktionerna anropas så ofta som möjligt, så delay() i loop() funkar inte alls!


Upp
 Profil  
 
InläggPostat: 22.10 2019-10-17 

Blev medlem: 10.02 2009-05-08
Inlägg: 813
Ort: Lund
basekson skrev:
Snurra en axel, allt är ju beskrivet i tråden

?

Det sitter tydligen något med en betydande massa i änden av axeln. Flera har frågat hur denna massa är fördelad. Men du verkar inte vilja svara på den frågan heller.

Whatever...


Upp
 Profil  
 
InläggPostat: 22.19 2019-10-17 

Blev medlem: 13.50 2012-07-24
Inlägg: 69
test


Senast redigerad av basekson 15.44 2019-11-09, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 22.31 2019-10-17 

Blev medlem: 01.01 2006-03-02
Inlägg: 8512
Ort: Vänersborg
Du gör ett misstag som många nybörjare gör när de programmerar realtidsprogram. Man får aldrig anropa delay, helt enkelt. Det blir aldrig bra. Ibland kan det funka ändå, om programmet inte är så avancerat. Typ för korta test o.s.v.

Lägg de nödvändiga anropen i mainloopen, så att de alltid anropas varje varv. (Förutom möjligtvis ifall du vill gå över i ett läge där motorn inte drivs.)

Använd ett villkår som jämför aktuell tid med en sparad tidpunkt (istället för delay()). När skillnaden är större än ett valt intervall blir villkoret sant. Ändra då varvtalet med accelerationen. T.ex. speed = speed + acceleration. Där acceleration både kan vara positivt och negativt beroende på om du vill öka varvtalet eller sakta ned.
https://learn.adafruit.com/multi-taskin ... for-timing


Upp
 Profil  
 
InläggPostat: 06.46 2019-10-18 

Blev medlem: 11.20 2009-05-26
Inlägg: 6521
Ort: Kristinehamn
Dessutom så är void loop(){} lika med mainloop i Arduino. Lägg stegmotorkörningen i en egen rutin och att skriva till serieporten varje lopvarvarv är lika illa som delay. Skriv bara när du inte kör stegmotorn.


Upp
 Profil  
 
InläggPostat: 12.45 2019-10-18 

Blev medlem: 13.50 2012-07-24
Inlägg: 69
test


Senast redigerad av basekson 15.44 2019-11-09, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 12.48 2019-10-18 
Användarvisningsbild

Blev medlem: 21.16 2009-02-22
Inlägg: 19936
Ort: Säter
Har du tandremshjul tillsammans med kilremmar?


Upp
 Profil  
 
InläggPostat: 12.52 2019-10-18 

Blev medlem: 13.50 2012-07-24
Inlägg: 69
Test


Senast redigerad av basekson 17.54 2019-12-04, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 13.47 2019-10-18 
Användarvisningsbild

Blev medlem: 11.56 2004-05-08
Inlägg: 3891
Ort: Stockholm
basekson skrev:
Har dock tappat lite i toppfart, har någon tips där?

Du anropar .setAcceleration() och .move() varje loop efter den första sekunden (och förutom den millisekund när millis() == 30000). Varför? Från dokumentationen om .setAcceleration(): "This is an expensive call since it requires a square root to be calculated. Dont call more ofthen than needed". Kanske det gör att Arduinon inte hinner skicka pulser lika ofta så att du tappar toppfart?


Upp
 Profil  
 
InläggPostat: 13.52 2019-10-18 

Blev medlem: 13.50 2012-07-24
Inlägg: 69
test


Senast redigerad av basekson 17.54 2019-12-04, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 13.56 2019-10-18 
Användarvisningsbild

Blev medlem: 11.56 2004-05-08
Inlägg: 3891
Ort: Stockholm
Anropa .setAcceleration() en enda gång (alltså i setup() istället)?


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 83 inlägg ]  Gå till sida Föregående  1, 2, 3, 4, 5, 6  Nästa

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: JohnGalt, Ontop, pstrand, Repen, Rubberduck och 12 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010