Sida 1 av 2

Driva bipolära stegmotorer

Postat: 26 april 2009, 20:09:08
av Pajn
Hej!

Jag tänkte bygga en liten robotarm m.h.a. stegmotorer som jag har fått tag i gratis (= många blandade modeller) två av dessa är bipoära och vägrar röra sig ett steg.
Jag försöker driva dem med en driver (som jag också har fått tag i gratis) märkt RIFA u238 P8D 3538-13, kan det vara så att drivern endast klarar att driva unipolära
stegmotorer? Jag har ej lyckats hitta något datablad för dem men dem verkar vara pinkompatibla med uln2803. Koden jag försöker köra med är

Kod: Markera allt

void main() {
     PORTA = 0;
     TRISA = 0;
     CMCON = 7;
     PORTA = 1;
     PORTB = 0;
     TRISB = 0;
     PORTB = 1;
     while(1) {                                                                   //          1A 1B 2A 2B
              PORTA.F0 = 0;                                                       //  Steg 11: 1  0  0  0   0
              PORTB.F0 = 0;                                                       //  Steg 21: 1  0  0  0
              delay_ms(4);
              PORTA.F3 = 1;                                                       //  Steg 18: 1  0  0  1   3
              PORTB.F3 = 1;                                                       //  Steg 28: 1  0  0  1
              delay_ms(4);
              PORTA.F1 = 0;                                                       //  Steg 12: 1  1  0  0   1
              PORTB.F1 = 0;                                                       //  Steg 22: 1  1  0  0
              delay_ms(4);
              PORTA.F0 = 1;                                                       //  Steg 13: 0  1  0  0   0
              PORTB.F0 = 1;                                                       //  Steg 23: 0  1  0  0
              delay_ms(4);
              PORTA.F2 = 0;                                                       //  Steg 14: 0  1  1  0   2
              PORTB.F2 = 0;                                                       //  Steg 24: 0  1  1  0
              delay_ms(4);
              PORTA.F1 = 1;                                                       //  Steg 15: 0  0  1  0   1
              PORTB.F1 = 1;                                                       //  Steg 25: 0  0  1  0
              delay_ms(4);
              PORTA.F3 = 0;                                                       //  Steg 16: 0  0  1  1   3
              PORTB.F3 = 0;                                                       //  Steg 26: 0  0  1  1
              delay_ms(4);
              PORTA.F2 = 1;                                                       //  Steg 17: 0  0  0  1   2
              PORTB.F2 = 1;                                                       //  Steg 27: 0  0  0  1
              delay_ms(4);
     }
}
Dessutom skulle det vara bra med lite formler för hur mycket motorn måste klara att lyfta om jag tex vill ha en tvådelad arm (armbåge) på 40cm och vill klara att lyfta 100g + armens vikt.

Re: Driva bipolära stegmotorer

Postat: 26 april 2009, 22:51:02
av victor_passe
40cm 100g ger:

40cm=0,4m
100g=0,1kg=1N(typ)
alltså 1N*0,4m=0,4Nm
Motorn måste alltså klara av 0,4Nm

Och stegmotorer är fel motor att göra detta med, de är snarare till för att växlas ut och driva något ganska exakt.
Eller driva något lätt snabbt och exakt.

Inte driva något tungt utan ut växling.


Skaffa några servon eller bygg en robot med några hjul.
En RHex kanske?

Re: Driva bipolära stegmotorer

Postat: 26 april 2009, 23:38:07
av bearing

Kod: Markera allt

              PORTA.F0 = 0;                                                       //  Steg 11: 1  0  0  0   0
              PORTB.F0 = 0;                                                       //  Steg 21: 1  0  0  0
...
Det är ju samma utgång på båda raderna. Borde det inte stå F1 på andra raden? och även i alla andra kombinationer.

Ett mer flexibelt sätt:

Kod: Markera allt

char i;
char sequence[]={0b0000.01.01,0b0000.10.01,0b0000.10.10,0b0000.01.10};
...

i=0;
while(1)
{
delay(4)
PORTB=sequence[i++];
i&=sizeof(sequence)-1;
}


Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 07:28:01
av Pajn
bearing skrev: Det är ju samma utgång på båda raderna. Borde det inte stå F1 på andra raden? och även i alla andra kombinationer.
PORTA
PORTB ;) Jag testar två motorer samtidigt.
Koden ser ut som den gör bara för att få en bättre översikt och för att jag lättare ska hitta fel när dem inte snurrar.

Jag hade tänkt växla ut motorerna för att få högre exakthet viket även gör att dem även blir starkare.

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 11:00:03
av victor_passe
Har du 3:50 utväxling så ta dina (0,4Nm * 50 / 3) = 8,333...Nm

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 16:42:55
av Pajn
Ursäkta om jag verkar dum, men det kan väll inte krävas ett högra moment för att jag växlar den? Om jag nu inte växlar åt fel håll...

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 18:23:45
av bearing
Stegsekvensen är fel. Jag antar att det är halvsteg som önskas.

Det tog mig båda gångerna lång tid att försöka förstå hur ni tänkt. Hur kommer det sig att ni inte såg över sekvensen redan efter förra inlägget?

Kod: Markera allt

              PORTA.F0 = 0;                                                       //  Steg 11: 1  0  0  0   0
              PORTA.F3 = 1;                                                       //  Steg 18: 1  0  0  1   3
              PORTA.F1 = 0;                                                       //  Steg 12: 1  1  0  0   1
              PORTA.F0 = 1;                                                       //  Steg 13: 0  1  0  0   0
              PORTA.F2 = 0;                                                       //  Steg 14: 0  1  1  0   2
              PORTA.F1 = 1;                                                       //  Steg 15: 0  0  1  0   1
              PORTA.F3 = 0;                                                       //  Steg 16: 0  0  1  1   3
              PORTA.F2 = 1;                                                       //  Steg 17: 0  0  0  1   2

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 20:00:24
av bearing
4ms kan vara för kort tid för att kunna starta.

Hur är det kopplat?

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 20:49:14
av Pajn
Jag ursäktar mina paint skills, men det går att se iaf så det får duga.
[img=http://img141.imageshack.us/img141/7118/koppling.th.png]
Även om det är förkort tid för att starta borde den ju få lite ryck?

Inlägg 42!

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 21:09:54
av bearing
Om motorn inte hänger med kommer den vibrera lite och ge ifrån sig en ton. Tonen borde vara 250Hz i ert fall med 4ms delay.

Om inget alls händer så har ju de här inget med koden att göra, utan att drivkretsen inte driver alls, och det borde ju vara enkelt att mäta om det nu inte märks på motorn. Kolla om det finns en pinne som heter "enable" eller liknande.

ULN2803 kostar ju bara några kronor. Vad är anledningen till att använda den okända kretsen?

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 21:16:29
av Pajn
bearing skrev: ULN2803 kostar ju bara några kronor. Vad är anledningen till att använda den okända kretsen?
Jag slipper ta reda på vad den kostar, åka till bhiab och köpa den. Det är lättare att gå till hyllan öppna skrotlådan och plocka upp en. ;)
Men visst köper jag en ny, ville bara testa. Den driver mina två unipolära stegmotorer jättefint :D

Men ULN2803 klarar väll bara unipolära (den också) kan du/någon annan tipsa om en som klara bipolära?

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 21:20:30
av bearing
Jaha, så den driver alltså unipolära...

I så fall har du väl helt enkelt kopplat de bipolära fel... och tråden borde endast handlat om hur bipolära stegmotorer ska kopplas i en drivare för unipolära stegmotorer...

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 21:26:41
av Pajn
Jag antar att den gör det, eftersom att motorn inte rör sig ö.h.t.

Går det att köra en bipolär motor med en unipolär drivare? kan du beskriva det lite närmare?
Skulle vara kul att se att det är lite liv i motorn iaf.

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 21:33:24
av bearing
EDIT: glöm det jag skrivit, jag blandade ihop bipolärt och unipolärt :oops:

Antar du att motorn driver unipolära stegmotor bara för att bipolära stegmotorer inte rör sig? eller har du drivit unipolära stegmotorer med kopplingen?

Det står säkert på många ställen på forumet. Om motorn har 5 sladdar måste den kopplas om till 6 eller 8.
I fall den har 6 sladdar ska den kopplas som om den vore unipolär, med mittensladden lös.
I fall den har 8 sladdar ska den kopplas som om den vore unipolär, med spolarna i serie eller parallellt.

Re: Driva bipolära stegmotorer

Postat: 27 april 2009, 21:42:23
av bearing
Det kan gå att testköra bipolära stegmotorer med två stycken (eller en dubbel) gate drivare. Annars gör t.ex. Allegro och ST drivkretsar. Jag såg en säljtråd med kretsar från ST i köp/sälj-forumet.