Tips på mellanhand till PC<->Stegmotorkontrollerkort

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Luff
Inlägg: 46
Blev medlem: 20 oktober 2003, 12:32:58

Tips på mellanhand till PC<->Stegmotorkontrollerkort

Inlägg av Luff »

Köpte nyligen en stegmotorkontroller för tre stycken stegmotorer. Kortet fungerar bra, men tycker det är lite tråkigt att ha 100% cpuload under tiden stegmotorn rör på sig.

(Problemet ligger i pausen på ~0.5-2ms som behövs mellan varje steg. I nuläget finns inget vettigt sätt för varken windows eller linux att pausa så korta stunder. Kommandot usleep har en minsta noggrannhet på ~10ms och kommandot udelay sätter datorn i en loop(dvs. 100% cpuload) tills tiden har passerat.)

Misstänker att jag behöver någon slags enchipdator emellan. Det jag hoppas åstadkomma är att den enda informationen min PC behöver förse är vilken koordinat stegmotorn ska till, sen håller microprocessorn reda på vart den är och sköter accelerationen så att den kommer fram så snabbt som möjligt.

Hur har ni andra löst det? Finns det andra alternativ?
Vilken mikroprocessor rekomenderar ni? Vilken är billigast, lättast att lära sig, lämpligast för ändamålet?
Användarvisningsbild
Greensilver
Inlägg: 1305
Blev medlem: 21 januari 2005, 21:24:57
Ort: Sverige
Kontakt:

Inlägg av Greensilver »

Ja, detta undrar jag med. Frågan är dock om det finns (bra) mjukvara som trivs med att skicka koordinater istället för step/direction pulser. Sen är det väl fint om breakout-kortet skötte rampning med mera på något bra sätt - något som väl normalt sker i mjukvaran?

Någon CNC-guru som skulle vilja berätta lite?
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det är nog ganska klart att det sker i mjukvaran,
t.ex i mjukvaran på "breakout-kortet"...
Användarvisningsbild
Luff
Inlägg: 46
Blev medlem: 20 oktober 2003, 12:32:58

Inlägg av Luff »

Frågan är dock om det finns (bra) mjukvara som trivs med att skicka koordinater istället för step/direction pulser.
Just det är ingen problem i mitt fall då jag inte bygger en CNC och skriver mitt eget program.

Här är en som gjort något liknande med en AVR tror jag.
http://micromouse.cannock.ac.uk/motors/ ... riving.htm

Är en AVR ett bra alternativ?
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Luff, håller själv på att lattja med en USB stegmotorkontroller som ska sköta stegningen åt mig. Den bygger på CY7C68013A kretsen.
Projektet går sakta men säkert i en bestämd riktning....

...framåt! :wink:

Förresten, vad är det du ska styra?
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Re: Tips på mellanhand till PC<->Stegmotorkontrollerk

Inlägg av cyr »

Luff skrev: (Problemet ligger i pausen på ~0.5-2ms som behövs mellan varje steg. I nuläget finns inget vettigt sätt för varken windows eller linux att pausa så korta stunder. Kommandot usleep har en minsta noggrannhet på ~10ms och kommandot udelay sätter datorn i en loop(dvs. 100% cpuload) tills tiden har passerat.)
EMC2 (www.linuxcnc.org) använder Linux med realtidsfunktioner, där kan man schedulera trådar med en exakhet på åtminstone 10-20 us (utan busy-wait).
Användarvisningsbild
Luff
Inlägg: 46
Blev medlem: 20 oktober 2003, 12:32:58

Inlägg av Luff »

Intressant, kanske något för Greensilver eller Andax. Men det hjälper tyvärr inte mig, då min linuxburk är lite av en specialare. Maskinen jag ska köra från är en router, Asus WL-500gD(som har två USB portar) som kör en version av linux, OpenWRT. Att kompilera in stöd för realtid till den disten och sätta mig i hur man ska skriva progammet tror jag blir jobbigare än att att lära mig använda microprocessorer(?).
Senast redigerad av Luff 2 oktober 2006, 23:02:41, redigerad totalt 1 gång.
Användarvisningsbild
Greensilver
Inlägg: 1305
Blev medlem: 21 januari 2005, 21:24:57
Ort: Sverige
Kontakt:

Inlägg av Greensilver »

sodjan>>>Det är nog ganska klart att det sker i mjukvaran,
t.ex i mjukvaran på "breakout-kortet"...

Ok. Skall förtydliga vad jag menade. Med mjukvaran avsåg jag även i andra stycket den programvara som körs i PC'n. Hade jag menat programvaran i breakoutkortet hade jag skrivit firmware eller något i den stilen. :o

Andax>>>Det där lät intressant, har du lagt upp någon projekttråd?
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Greensilver>>>Har inte lagt upp någon projekttråd än... Ska göra det när jag får tid att sammanfatta något klokt. Här är en liten sammanfattning av vilka delprojekt jag labbat med (ursäkta lånet av tråden)

1) Ideal stegning (dvs minimalt avvikelse) vid "linjear" och "arc" interpolation. Har tagit fram ett program som räknar fram detta.
Problemet är att det blir mycket komplicerat om man ska lägga in hastighets och accelerationsbegränsningar och backlash-kompensering.
Kommer att i första skedet använda en enklare interpolering, kanske utförd nere i USB kontrollern.

2) G-kod tolkare... Har gjort en egen tolk som klarar G00-G03 mm.
Kommer dock att ge mig på en annan lösning för att klara hela RS274 (NGC-dialekten, dvs samma EMC2)

3) Kommunikation med en CY7C68013A USB kontroller som sedan ska implementera själva stegningen. Kör kommunikationen via PyUSB som är ett tillägg till Python. Har implementerat och testat ett väldigt enkelt protokoll. Behöver jobbas en del på.

4) Grafiskt interface till hela klabbet i Python/wxPython/PyOpenGL. Precis påbörjat.
Skriv svar