Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Electronic speed controller - Brushless motor- Quadcopter

Status
Not open for further replies.

Sahanwa

Newbie level 1
Joined
Jul 5, 2015
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Location
Sri Lanka
Activity points
17
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.

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!
 

Attachments

  • esc Schem.JPG
    esc Schem.JPG
    140.7 KB · Views: 145
  • esc_scehm_1.JPG
    esc_scehm_1.JPG
    161.6 KB · Views: 141
  • esc_schem_2.JPG
    esc_schem_2.JPG
    169.6 KB · Views: 142

Can I know how much of current that I should provide for the motor?

From my experience flying radio controlled airplanes, I think at 5V you can expect each prop to need several Amperes, to lift its share of the aircraft. Probably under 10A.

You need to turn your mosfets fully on and fully off. If they spend much time in a middle state (conducting partially), they are likely to overheat.

As for the waveform, think in terms of turning on a coil so it attracts a magnet when it's, say 1/2 inch distant. At closest approach turn off the coil.

To increase prop speed, increase frequency chiefly. Increase duty cycle slightly.

The prop will obey your coil waveforms. Air is a smooth load. That permits you to get by with sensorless.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top