Gast
#1869605
Hallo
Ich möchte ein Brushless Regler selbst bauen den Hardware teil hab ich
Provisorisch auf einer Streifplatine bereits aufgebaut funktioniert
einwandfrei. Mit dem Softwareteil komm ich aber irgendwie nicht klar.
Ich hab bereits alle Foren und alles was bei google zu dem Thema gab
durchforsten aber keine Lösung gefunden ich lese überall über eine
ungeregelte Anlaufphase um eine bestimmte Drehzahl zu erreichen bei der
die Lage des Rotors bestimmt werden kann um in geregelten Normalbetrieb
zu schalten. Aber ich krieg den Motor gar nicht dazu einen
vollständigen 360 Grad Drehung zu machen ich hab mit dem Programm
versucht nach einer bestimmten zeit immer weiter zu schalten aber tut
sich irgendwie nichts die Signale kann ich aber mit dem Oszilloskop aber
sehen die kommen schon in 120° Abständen ich hab auch versucht die
Case-Struktur mit den knöpfen Manuel weiterzuschalten dann dreht sich
der Läufer immer um ein paar grad aber der läuft nicht automatisch ein.
Kann mir vielleicht jemand ein paar Tipps geben??
while(1){
switch(x)
{
case 0:
TCD1.CCA = 0x000; // Aus
TCD1.CCB = 0x000; // Aus
TCD0.CCB = 0x000; // Aus
TCD0.CCD = 0x000; // Aus
TCD0.CCA = i; // Phase A Plus
TCD0.CCC = i; // Phase B Minus
_delay_ms(10);
x++;
break;
case 1:
TCD1.CCA = 0x000; // Aus
TCD1.CCB = 0x000; // Aus
TCD0.CCB = 0x000; // Aus
TCD0.CCC = 0x000; // Aus
TCD0.CCA = i; // Phase A Plus
TCD0.CCD = i; // Phase C Minus
_delay_ms(10);
x++;
break;
case 2:
TCD1.CCB = 0x000; // Aus
TCD0.CCA = 0x000; // Aus
TCD0.CCB = 0x000; // Aus
TCD0.CCC = 0x000; // Aus
TCD1.CCA = i; // Phase B Plus
TCD0.CCD = i; // Phase C Minus
_delay_ms(10);
x++;
break;
case 3:
TCD1.CCB = 0x000; // Aus
TCD0.CCA = 0x000; // Aus
TCD0.CCC = 0x000; // Aus
TCD0.CCD = 0x000; // Aus
TCD1.CCA = i; // Phase B Plus
TCD0.CCB = i; // Phase A Minus
_delay_ms(10);
x++;
break;
case 4:
TCD1.CCA = 0x000; // Aus
TCD0.CCA = 0x000; // Aus
TCD0.CCC = 0x000; // Aus
TCD0.CCD = 0x000; // Aus
TCD1.CCB = i; // Phase C Plus
TCD0.CCB = i; // Phase A Minus
_delay_ms(10);
x++;
break;
case 5:
TCD1.CCA = 0x000; // Aus
TCD0.CCA = 0x000; // Aus
TCD0.CCB = 0x000; // Aus
TCD0.CCD = 0x000; // Aus
TCD1.CCB = i; // Phase C Plus
TCD0.CCC = i; // Phase B Minus
_delay_ms(10);
x=0;
break;
}
}
return 0;
}