Sahanwa
Newbie level 1
Dear all,
Im a student who'd doing electrical and electronics engineering. Im currently doing my final project which is a quadcopter. One of my objectives in that is to make a electronic speed controller (ESC) for the brushless motors that are being used.
I made a design for the ESC using proteus and I made the PCB also. I have attached the schematic with this. I used PIC16F628A for the ESC and wrote a small code in mikroC for the ESC to work when powered up. Unfortunately it didnt work properly. I tried sensorless control of brushless motors without getting any feedback.
Can I know how much of current that I should provide for the motor? According to some articles that I read the brushless DC (BLDC) motor requires around 10A at the startup for around 20 ms. I have posted the code also. I used two codes to run the motor. One with PWM and other without PWM (100% duty cycle).
I am a rookie to the subject of BLDC motor controlling. I am very greatful if anybopdy can help me to clear out the doubts and figure out the mistakes in my design to make it work properly.
Below given is the codes that I tried. Please help me to figure out the right way to program the chip.
When I uploaded the above given code and when I set the delay to around 3000 us, the motor spun but at each time one of the mosfets got heated up until i cannot touch it anymore. the video of this scenario is given below in the link.
[video]https://drive.google.com/open?id=0B1RZn2DqIRNuSjBROGk4QXFJR3c[/video]
this is the other code (PWM);
thank you very much for your time!
Im a student who'd doing electrical and electronics engineering. Im currently doing my final project which is a quadcopter. One of my objectives in that is to make a electronic speed controller (ESC) for the brushless motors that are being used.
I made a design for the ESC using proteus and I made the PCB also. I have attached the schematic with this. I used PIC16F628A for the ESC and wrote a small code in mikroC for the ESC to work when powered up. Unfortunately it didnt work properly. I tried sensorless control of brushless motors without getting any feedback.
Can I know how much of current that I should provide for the motor? According to some articles that I read the brushless DC (BLDC) motor requires around 10A at the startup for around 20 ms. I have posted the code also. I used two codes to run the motor. One with PWM and other without PWM (100% duty cycle).
I am a rookie to the subject of BLDC motor controlling. I am very greatful if anybopdy can help me to clear out the doubts and figure out the mistakes in my design to make it work properly.
Below given is the codes that I tried. Please help me to figure out the right way to program the chip.
Code:
const delay = 7000;
void main() {
TRISB = 0x00;
PORTB = 0x00;
while(1)
{
PORTB = 0x24;
delay_us(delay);
PORTB = 0x36;
delay_us(delay);
PORTB = 0x12;
delay_us(delay);
PORTB = 0x1B;
delay_us(delay);
PORTB = 0x09;
delay_us(delay);
PORTB = 0x2D;
delay_us(delay);
}
}
When I uploaded the above given code and when I set the delay to around 3000 us, the motor spun but at each time one of the mosfets got heated up until i cannot touch it anymore. the video of this scenario is given below in the link.
[video]https://drive.google.com/open?id=0B1RZn2DqIRNuSjBROGk4QXFJR3c[/video]
this is the other code (PWM);
Code:
const delay1 = 2000;
const delay2 = 1000;
int count = 0;
int cnt;
int arr[6] = {0x24, 0x36, 0x12, 0x1B, 0x09, 0x2D};
int i = 0;
int x = 0x32;
void init(void)
{
TRISB = 0x00;
PORTB = 0x00;
//OPTION_REG = 0x87;
//INTCON = 0xA0;
CCP1CON = 0;
CMCON = 0x07;
}
void main() {
init();
while(1){
for (cnt = 0; cnt < 10; cnt++)
{
PORTB = arr[i];
delay_us(2);
PORTB = 0x07;
delay_us(2);
}
i++;
if (i == 6)
{
i =0;
}
};
}
thank you very much for your time!