سلام
به علت اینکه یک سری از بچه ها توی تلگرام پیام میدند و درخواست برنامه .... میکنند
به صورت خیلی ساده روش برنامه نویسی این نمونه از موتور ها شرح میدم .
اگه جایی اشتباه کردم دوستان اصلاح کنند
موتوری که من درایو میکنم از نوع سنسور دار هست .
3 تا سیم اول U - V - W و 3 تا سیم دیگه داره که مال سنسور های هال افکت هست که اون هم بسته به وضعیت موتور تغییر میکنه
2 تا سیم دیگه هم که باید به 5 ولت متصل بشه که تغذیه سنسور های هال افکت هست

اول از همه باید 3 تا سیم سنسور ها به 3 تا اینتراپت متصل کنید که من فعلا این کارو انجام نمیدم و فقط با پین ها وضعیت چک میکنم
بعد از اون 6 تا خروجی لازم داریم به گیت درایور
پایه های ورودی گیت درایور که برای درایو ماسفت های UH-VH-WH هستند به پایه هایی از میکرو متصل کنید که میشه ازشون PWM گرفت . و پایه های ورودی گیت درایور که برای درایو ماسفت های UL-VL-WL به هر یک از پین های میکرو که خواستید متصل کنید
تایمر ها و خروجی ها اینجوری خاموش و یا روشن کنید
با زیاد و کم کردن عدد pwm دور موتور کم و زیاد میشه
حالا باید مثل جدول توی عکس ببینید سنسور ها توی چه موقعیتی هستند و خروجی هارو سوئیچ کنید اینجوری
من با اوسکوپ خروجی سنسور های این موتور هارو دیدم . بعضی هاشون مربعی نیست و بعضی وقت ها میکرو نمیتونست درست سنسور ها چک کنه که بعد از اینکه از 40106 سر راه خروجی سنسور ها استفاده کردم مشکل حل شد . دو تا گیت با هم سری کنید . توی ورودی از مقاومت 2.2 کیلو استفاده کنید و پایه های سنسور ها pullup کنید. همین
به علت اینکه یک سری از بچه ها توی تلگرام پیام میدند و درخواست برنامه .... میکنند
به صورت خیلی ساده روش برنامه نویسی این نمونه از موتور ها شرح میدم .
اگه جایی اشتباه کردم دوستان اصلاح کنند
موتوری که من درایو میکنم از نوع سنسور دار هست .
3 تا سیم اول U - V - W و 3 تا سیم دیگه داره که مال سنسور های هال افکت هست که اون هم بسته به وضعیت موتور تغییر میکنه
2 تا سیم دیگه هم که باید به 5 ولت متصل بشه که تغذیه سنسور های هال افکت هست

اول از همه باید 3 تا سیم سنسور ها به 3 تا اینتراپت متصل کنید که من فعلا این کارو انجام نمیدم و فقط با پین ها وضعیت چک میکنم
#define HALLW PINE.6
#define HALLU PINE.5
#define HALLV PINE.7
بعد از اون 6 تا خروجی لازم داریم به گیت درایور
Half-Bridge
مثل IR2103 متصل بشهپایه های ورودی گیت درایور که برای درایو ماسفت های UH-VH-WH هستند به پایه هایی از میکرو متصل کنید که میشه ازشون PWM گرفت . و پایه های ورودی گیت درایور که برای درایو ماسفت های UL-VL-WL به هر یک از پین های میکرو که خواستید متصل کنید
تایمر ها و خروجی ها اینجوری خاموش و یا روشن کنید
unsigned int PWM=0;
[/FONT]#define UH_ON TCCR0=0x69,OCR0=PWM
#define UH_OFF TCCR0=0x00
#define UL_ON PORTB.0=0
#define UL_OFF PORTB.0=1
#define VH_ON TCCR1A=TCCR1A | 0B10000001,TCCR1B=0x09,OCR1A=PWM
#define VH_OFF TCCR1A=TCCR1A & 0B01111111,TCCR1B=0x09
#define VL_ON PORTB.2=0
#define VL_OFF PORTB.2=1
#define WH_ON TCCR1A=TCCR1A | 0B00100001,TCCR1B=0x09,OCR1B=PWM
#define WH_OFF TCCR1A=TCCR1A & 0B11011111,TCCR1B=0x09
#define WL_ON PORTB.3=0
#define WL_OFF PORTB.3=1
با زیاد و کم کردن عدد pwm دور موتور کم و زیاد میشه
حالا باید مثل جدول توی عکس ببینید سنسور ها توی چه موقعیتی هستند و خروجی هارو سوئیچ کنید اینجوری
void start_motor(void){
char I_BLDC=0;
if(HALLU==0 && HALLV==1 && HALLW==0)I_BLDC=3;
else if(HALLU==0 && HALLV==1 && HALLW==1)I_BLDC=4;
else if(HALLU==0 && HALLV==0 && HALLW==1)I_BLDC=5;
else if(HALLU==1 && HALLV==0 && HALLW==1)I_BLDC=0;
else if(HALLU==1 && HALLV==0 && HALLW==0)I_BLDC=1;
else if(HALLU==1 && HALLV==1 && HALLW==0)I_BLDC=2
if(I_BLDC==0)VL_OFF,UH_OFF,WH_OFF,WL_OFF,UL_ON,VH_ON; // 0
else if(I_BLDC==1)VL_OFF,UH_OFF,WH_OFF,UL_OFF,WL_ON,VH_ON; // 1
else if(I_BLDC==2)VL_OFF,WH_OFF,UL_OFF,VH_OFF,WL_ON,UH_ON; // 2
else if(I_BLDC==3)WH_OFF,WL_OFF,UL_OFF,VH_OFF,VL_ON,UH_ON; // 3
else if(I_BLDC==4)UH_OFF,WL_OFF,UL_OFF,VH_OFF,WH_ON,VL_ON; // 4
else if(I_BLDC==5)VL_OFF,UH_OFF,WL_OFF,VH_OFF,WH_ON,UL_ON; // 5
}
من با اوسکوپ خروجی سنسور های این موتور هارو دیدم . بعضی هاشون مربعی نیست و بعضی وقت ها میکرو نمیتونست درست سنسور ها چک کنه که بعد از اینکه از 40106 سر راه خروجی سنسور ها استفاده کردم مشکل حل شد . دو تا گیت با هم سری کنید . توی ورودی از مقاومت 2.2 کیلو استفاده کنید و پایه های سنسور ها pullup کنید. همین
دیدگاه