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;
}
Stichwort Anfahrrampe. Die Umpolvorgänge am Anfang recht langsam, dann zunehmend schneller machen bis die gewünschte Geschwindigkeit erreicht ist. :-)
Jo, also ich hab hier grad eine Ansteuerung am laufen für einen sensorlosen BLDC ausm Diskettenlaufwerk. (So als Machbarkeitsstufe) Programmaufbau: Ein Timerinterrupt mit CTC-Einstellung, in dem die Umpolungen anhand einer Statusvariablen erledigt werden. Der CTC-Wert wird dabei vom anlaufen an kontinuierlich kleiner, das gibt dann die Anfahrtrampe :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.