Jag har börjat rita på en driver och "skissa" på koden. Målet är en generisk, diy driver som klarar upp till 150V och 20A och kostar 250-300 kr per enhet.
Delarna för en enhet (exklusive FETar) kostar kring 400 kr från elfa.
Köper man delar för 10 enheter kostar dom ca 300 kr styck. Elfa är ju inte direkt känt för att vara billigt så jag tror man kan komma en bit lägre utan större problem! Transistorer går att få tag riktigt billigt! Jag köpte t.ex. 200 st IRFP460LC för 5 kr styck! (dom går på 190 spänn på Elfa)
Jag tänkte att man får anpassa FETar och laminattjocklek beroende på vilken ström man vill drivern ska klara. Strömbegränsningen ska ställas in via mjukvara och gå upp till 20A
Detta är lite kod jag knapprat ihop för PID loopen:
Kod: Markera allt
void PID()
{
OCR0A = 0;
OCR0B = 0;
if(!Fault)
{
PWM = 0;
Error = Target - Position;
Derivate = Error - PreviousError;
PreviousError = Error;
Integration += Error;
if(Integration > IntegrationLimit) Integration = IntegrationLimit;
if(Integration < (0 - IntegrationLimit)) Integration = 0 - IntegrationLimit);
if((Error > DeadBand) || (Error < (0 - DeadBand)))
{
float Result = 0;
Result = Kp * Error;
Result += Ki * Integration;
if((Derivate > DerivateDeadBand) || (Derivate < (0 - DerivateDeadBand)))
Result -= Kd * Derivate;
PWM = int(Result);
}
//Direction A, negative error
if(PWM < 0)
{
PWM = abs(PWM);
PWM += Offset;
if(PWM > MaxPWM) PWM = MaxPWM;
OCR0A = PWM;
}
//Direction B, positive error
if(PWM > 0)
{
PWM += Offset;
if(PWM > MaxPWM) PWM = MaxPWM;
OCR0B = PWM;
}
}
}
Variablerna som ej är initierade är globala och påverkas av andra funktioner som t.ex. step/dir input, enkoder input, USART för inställningar osv.
Edit: Här är Kopplingschemat
Har inte ritat in step/dir och enkoderingångarna ännu.
Edit: Fixat koden lite