Stegmotorstyrning med ramper för Atmel ATMegaXX8-serien.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Agwan
Inlägg: 1617
Blev medlem: 15 september 2009, 09:05:14

Stegmotorstyrning med ramper för Atmel ATMegaXX8-serien.

Inlägg av Agwan »

Hej,

Jag håller på att implementera en stegmotorstyrning i C. Använder mig av en Mega328:a kopplad till TI DRV8818 som styrs via STEP och DIR. Jag använder denna C-kod som bas för mitt program och den koden är baserad på Atmels appnote i frågan, "AVR446 - Linear speed control of stepper motor".
https://code.oregonstate.edu/svn/applie ... eed_cntr.c

Mina moddar är att jag lagt till STEP och DIR-styrningen i C-koden eftersom den saknas där. Bara så att jag ställer in DIR-pinnen rätt när jag får kommandot att starta rörelsen och togglar STEP-pinnen för varje steg som skall tas.

Jag får inte koden att fungera, om jag har så pass hög acceleration att jag når max hastighet så kör motorn väldigt mycket längre än den skall. Men håller jag mig till att bara accelerera och bromsa in så går den rätt.

Har någon använt den koden och fått det att fungera eller har någon ett annat bättre tips på vart jag kan hitta en fungerande kodsnutt för detta?
dannyboy
Inlägg: 31
Blev medlem: 25 maj 2010, 10:39:13
Ort: Uppsala

Re: Stegmotorstyrning med ramper för Atmel ATMegaXX8-serien.

Inlägg av dannyboy »

Hallå!

Nu kanske det inte är aktuellt längre men jag har kört den koden på samma sätt som du gör med step och dir pinnar. Nu funkar det fint efter en del felsökning.

Det som ställde till det en del för mig var castningar vid beräkningarna, där spårade det ur helt. Jag använder iofs en annan compilator (iccavr) så det skiljer sig kanske därför också.

Jag ändrade de aktuella variablerna till signed long istället för signed int. Sedan får man ju tänka på att counter1 bara är på 16 bitar och ändra prescalern till lämpligt värde. Sedan gick det bra.

/Daniel
Agwan
Inlägg: 1617
Blev medlem: 15 september 2009, 09:05:14

Re: Stegmotorstyrning med ramper för Atmel ATMegaXX8-serien.

Inlägg av Agwan »

Tackar för tipsen. Det är lite halvaktuellt fortfarande, jobbar inte på det just nu men kan slänga mig i i det igen här framöver. Kan vara det där med prescalern som jag tänkt fel på, jag hade redan precis som du gjort om alla värden till long istället för int.
dannyboy
Inlägg: 31
Blev medlem: 25 maj 2010, 10:39:13
Ort: Uppsala

Re: Stegmotorstyrning med ramper för Atmel ATMegaXX8-serien.

Inlägg av dannyboy »

Värt att också tänka på är hur fort du vill kunna köra motorn samt AVR:ens klockhastighet.

Jag ville köra min motor i 3000rpm, jag kör i helsteg och har 200steg/varv. Det ger 10kHz. Alltså får inte beräkningarna i interruptet ta mer än 100uSec. För att uppnå det blev jag tvungen att klocka AVR:en i 20MHz.
Men det beror väl lite på kompilator och inställningar samt om man kör med long eller int, mm.

/Daniel
Skriv svar