Driva bipolära stegmotorer

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Driva bipolära stegmotorer

Inlägg 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.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: Driva bipolära stegmotorer

Inlägg 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?
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg 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;
}

Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Driva bipolära stegmotorer

Inlägg 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.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: Driva bipolära stegmotorer

Inlägg av victor_passe »

Har du 3:50 utväxling så ta dina (0,4Nm * 50 / 3) = 8,333...Nm
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Driva bipolära stegmotorer

Inlägg 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...
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg 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
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg av bearing »

4ms kan vara för kort tid för att kunna starta.

Hur är det kopplat?
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Driva bipolära stegmotorer

Inlägg 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!
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg 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?
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Driva bipolära stegmotorer

Inlägg 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?
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg 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...
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: Driva bipolära stegmotorer

Inlägg 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.
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg 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.
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Driva bipolära stegmotorer

Inlägg 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.
Skriv svar