اطلاعیه

Collapse
No announcement yet.

ساخت درایور موتور براشلس

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #61
    پاسخ : ساخت درایور موتور براشلس

    نوشته اصلی توسط نو رسیده نمایش پست ها
    قطعا اگه از میکرو استفاده بشه امکانات و قابلیتهای زیادی قابل افزودن به سیستم هست و با یه طرح سخت افزاری ساده قابل مقایسه نیست.
    اما این طرح که گفتم اولا برای افرادی که به هر دلیلی قصد استفاده از میکرو رو ندارن و ثانیا در سرعتهای بالا که البته نمیدونم چقدر سرعت مورد نیاز هست بکار میاد.
    طبعا هر چه حجم محاسبات بیشتر بشه وقت بیشتری از میکرو میگیره و در سرعت محدودیت ایجاد میکنه.
    من اینورتر سه فاز سینوسی ساختم برای ACIM ها ساختم و الان دارم به تولید میرسونمش. در مجموع شما هر شکل موجی که تولید کنین و به درایور بدین ماسفتتون هم عین همون سوئیچ میشه.
    بحث حفاظت شورت خروجی و یا آرم شات که باید حتما سخت افزاری باشه و میکرو اصلا بهش نمیرسه. اون تایمها هم همه شون سخت افزاری قابل تنظیمه اما عملا درایور جنرال نمیشه و برای هر موتور باید تیون بشه.
    اون مدار که گفتم های ساید و لو سایدش مشابهه. برای هر فرمان یه فلیپ فلاپ RS نیازه که سنسور هر فاز به ست و سنسور فاز بعدی به ریستش وصل بشه. خروجی این سه تا با PWM اند AND میشن و مثلا میرن به درایور های ساید.
    برای لو ساید هم همین مداره اما بجای سیگنال سنسورها از ناتشون استفاده میشه. تاخیرهای مورد نیاز تو بخش سیگنال کاندیشن سنسورها با یه فیلتر RC و گیت های اشمیت تریگر مثل 7414 یا 40106 ساخته میشه.
    و البته دد تایم هم در صورتی که درایور خودش نداشته باشه به همین روش اعمال میشه.
    همیشه درگیری ها بین طرفداران استفاده از آیسی و میکرو بوده قطعا اگه یروز بخوام یک کار جدی و حساس انجام بدم خودم هم استفاده از آیسی ها رو به استفاده از میکرو ترجیح میدم.
    شما اینورترتون رو با آیسی ساختین؟(حتی اگه به کاری که میکرو برای تولید پالس و محاسبات و ... انجام میده هم دقت کنین به بیان ساده داره چینش آیسی ها و امپ ها و حساسیتشون و ... رو تغییر میده و مثل آیسی ها عمل میکنه) شما در عمل با این کار دارین یک کار بسیار پیشرفته تر رو انجام میدین در واقع یک پردازشگر ساده ساختین که دقیقا کارایی که ازش میخواین رو انجام میده و انرژی صرف چیزایی که میتونه انجام بده ولی نباید انجام بده نمیکنه! و بهتر از همه! هنگ نمیکنه! صد در صد استفاده از آیسی ها ترجیح همه هست در طراحی/ ولی پیچیدگی کار شاید عمل به این عقیده رو از بین ببره






    امیرحسین ضیا

    دیدگاه


      #62
      پاسخ : ساخت درایور موتور براشلس

      نوشته اصلی توسط Amir Zia نمایش پست ها
      همیشه درگیری ها بین طرفداران استفاده از آیسی و میکرو بوده قطعا اگه یروز بخوام یک کار جدی و حساس انجام بدم خودم هم استفاده از آیسی ها رو به استفاده از میکرو ترجیح میدم.
      شما اینورترتون رو با آیسی ساختین؟(حتی اگه به کاری که میکرو برای تولید پالس و محاسبات و ... انجام میده هم دقت کنین به بیان ساده داره چینش آیسی ها و امپ ها و حساسیتشون و ... رو تغییر میده و مثل آیسی ها عمل میکنه) شما در عمل با این کار دارین یک کار بسیار پیشرفته تر رو انجام میدین در واقع یک پردازشگر ساده ساختین که دقیقا کارایی که ازش میخواین رو انجام میده و انرژی صرف چیزایی که میتونه انجام بده ولی نباید انجام بده نمیکنه! و بهتر از همه! هنگ نمیکنه! صد در صد استفاده از آیسی ها ترجیح همه هست در طراحی/ ولی پیچیدگی کار شاید عمل به این عقیده رو از بین ببره

      نه. مگه میشه اینورتر رو با گیت ساخت؟؟ با همین میکروهای STM.
      ولی یه سری دستگاه تراش CNC سوئدی قدیمی دیده بودم که همش با گیت ساخته شده بود.تمام محاسبات و ذخیره ساریها و تولید پالسها و ارتباطهای سریال و غیره با گیت بود.

      پی نوشت: یکی از مزایای روش گیتی اینه که وقتی چند تا موتور بخوان همزمان کار کنن مثلا تو کوادها یا هگزاها یا بیشتر، میشه این گیتها و فلیپ فلاپها رو برای تمامشون بسادگی تو یه CPLD پیاده سازی کرد و بعدش فقط با یه میکرو همه شون رو کنترل کرد. PWM ها که اتوماتیک تولید میشن و میکرو هم فرصت کافی برای انجام محاسبات پروازی و ارتباط با مبدا و کنترل باتری و جریان مصرفی و غیره رو داره.
      جدیدترین ویرایش توسط نو رسیده; ۱۲:۵۴ ۱۳۹۸/۰۶/۱۹.
      کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

      دیدگاه


        #63
        پاسخ : ساخت درایور موتور براشلس

        سلام دوستان!
        برای برنامه نویسی این درایور به کمکتون نیاز دارم!
        میکروکنترلر STM32
        ;کمپایلر keil






        امیرحسین ضیا

        دیدگاه


          #64
          پاسخ : ساخت درایور موتور براشلس

          نوشته اصلی توسط Amir Zia نمایش پست ها
          سلام دوستان!
          برای برنامه نویسی این درایور به کمکتون نیاز دارم!
          میکروکنترلر STM32
          ;کمپایلر keil
          سلام دوست عزیز.
          من هم در نظر دارم یک نمونه درایور BLDC بسازم و روی بهبودش کار کنم تا کم کم برسم به اون چیزی که مد نظرم هست. یعنی کنترل بدون سنسور این موتورها در توان های بالا و rpm های بالا. فعلا هم میکروکنترلر و کامپایلری که مدنظرم هست همین STM32 و Keil هستش.منتها اینا رو خیلی مقدماتی بلدم و در این زمینه باید بیشتر کار کنم. اگر مایل بودین میتونیم در این تاپیک با هم پیش بریم.

          دیدگاه


            #65
            پاسخ : ساخت درایور موتور براشلس

            نوشته اصلی توسط Mohammad.Zivari نمایش پست ها
            سلام دوست عزیز.
            من هم در نظر دارم یک نمونه درایور BLDC بسازم و روی بهبودش کار کنم تا کم کم برسم به اون چیزی که مد نظرم هست. یعنی کنترل بدون سنسور این موتورها در توان های بالا و rpm های بالا. فعلا هم میکروکنترلر و کامپایلری که مدنظرم هست همین STM32 و Keil هستش.منتها اینا رو خیلی مقدماتی بلدم و در این زمینه باید بیشتر کار کنم. اگر مایل بودین میتونیم در این تاپیک با هم پیش بریم.
            سلام. من دارم روی سنسور دارش کار میکنم/ میکرویی که دارم بکار میبرم stm32f103c8t6 هست/ و اینکه از تایمر یک استفاده میکنم برا pwm / سه تا سنسور هم اینتراپت ایجاد میکنن طبق وقفه ها سوییچ صورت میگیره.






            امیرحسین ضیا

            دیدگاه


              #66
              پاسخ : ساخت درایور موتور براشلس

              نوشته اصلی توسط Amir Zia نمایش پست ها
              سلام. من دارم روی سنسور دارش کار میکنم/ میکرویی که دارم بکار میبرم stm32f103c8t6 هست/ و اینکه از تایمر یک استفاده میکنم برا pwm / سه تا سنسور هم اینتراپت ایجاد میکنن طبق وقفه ها سوییچ صورت میگیره.
              سلام من اینو دارم ولی کمی دقتش پایینه علتش چیه؟!

              دیدگاه


                #67
                پاسخ : ساخت درایور موتور براشلس

                سلام
                من برای درایو موتور براشلس 250وات ازاین برد استفاده کردم فقط وقتی بار بیش از 1.5 امپر ازش میگیرم درایور گیت فاز اول گرم میشه کسی میتونه کمک کنه اقا امیر اگه امکان داره کمک کنید ممنون

                دیدگاه


                  #68
                  پاسخ : ساخت درایور موتور براشلس

                  سلام دوستان
                  چند سالیه که دارم تجربه کسب میکنم در ساخت یک درایور ماشین های الکتریکی BLDC ، در ابتدای تاپیک اشتباهاتی بوده که مهلت ویرایشش تموم شده ،
                  ورژن ابتدایی با STM32f103C8T6 بوده که از یک فرموار اوپن سورس استفاده شده
                  مشکلات نسخه ابتدایی با STM32F103:
                  1-نبود فیلتر پایین گذر در ورودی سنسور اثر هال
                  2-عدم وجود خازن های سرامیکی ( یا مولتی لیر ) در بازو های اینورتر ( بهتره خازن با کیفیت استفاده بشه تا اسپایک به حداقل برسه)
                  3- گرون شدن و نایاب شدن stm32f103
                  / ورژن دوم هم با میکرو های اتمگا بوده (ATMEGA 48/88/328) که قیمت تموم شده کمی کمتر شده براتون pcb و sch رو قرار میدم (آلتیوم دیزاینر) این هم مشکلاتی داره که باید رفع بشه (دید من به پروژه کلا به عنوان سرگرمی بوده)


                  [FONT=Yekan]/*[/FONT] * OxaESC_36V_500W_IR2104.c
                  *
                  * Created: 7/12/2020 2:49:20 PM
                  * Author : Amir Zia
                  */






                  #define F_CPU 16000000UL
                  #include <avr/io.h>
                  #include <avr/interrupt.h>
                  #include <util/delay.h>
                  volatile int F=0b0; //timer 0 OverFlow Flag
                  volatile int FADC=0b0; //ADC Flag
                  volatile int FH=0b0; //Hall Flag


                  //volatile int FCMB0=0b0; //Compare Match Flag
                  //volatile int FCMB1=0b0; //Compare Match Flag
                  //volatile int FCMB2=0b0; //Compare Match Flag
                  volatile float T=0; //Time
                  volatile float W=0; //Omega
                  volatile float OW=128; //Old Omega
                  volatile int AC=0; //adc counter
                  volatile unsigned char H=0; //Hall Sensor
                  volatile unsigned char OH=0; //old Hall Sensor
                  volatile unsigned char Mode=0; //Hall Sensor
                  volatile signed int VE=0; //Voltage Error
                  volatile int CE=0; //Current Error
                  volatile int PE=0; //Pot Error
                  volatile int OP=0; //Old Pot
                  volatile int OC=0; //Old Current
                  volatile float C=0; //Current
                  volatile unsigned int BV=0; //battery voltage
                  volatile unsigned int OBV=0; //old battery voltageCurrent
                  volatile float RBV=0; //Raw BV
                  volatile float R2BV=0; //Raw BV 2
                  volatile float R3BV=0; //Raw BV 3
                  volatile float FR2BV=30; //Filtered BV 2
                  volatile int P=0; //Pot
                  volatile float RPot=0; //Raw pot
                  volatile float RCu=0; //Raw current
                  volatile float R2Cu=0; //Raw current 2
                  volatile float R3Cu=0; //Raw current 3
                  volatile int SumP=0; //sum pot
                  volatile long int FilteredP=0; //filtered pot
                  volatile unsigned int DC=128; //DutyCycle
                  volatile unsigned int OHO=250; //DutyCycle
                  volatile unsigned int IDC=128; //Invert DutyCycle
                  volatile float Y=0; //This Will Be DutyCycle
                  volatile float kI=50;
                  volatile float kP=0.0005;




                  int main(void)
                  {

                  DDRC= 0b00100000;
                  PORTC=0b00100000;

                  DDRD= 0b11111000;
                  PORTD=0b00000000;

                  DDRB= 0b11111111;
                  PORTB=0b00000000;


                  DIDR0=0b00011111;

                  TIMSK0=0b00000001; //– – – – – OCIE0B OCIE0A TOIE0
                  TIMSK1=0b00000000; //– – – – – OCIE0B OCIE0A TOIE0
                  TIMSK2=0b00000000; //– – – – – OCIE0B OCIE0A TOIE0

                  //PCMSK2=0b00000111;//pin change int PCINT23 PCINT22 PCINT21 PCINT20 PCINT19 PCINT18 PCINT17 PCINT16
                  //PCICR= 0b00000100;//– – – – – PCIE2 PCIE1 PCIE0


                  TCCR0A=0b00000001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  TCCR1A=0b00000001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  TCCR2A=0b00000001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20

                  ADMUX= 0b01000010; //ADC Part
                  ADCSRB=0b00000000; //adc
                  ADCSRA=0b11001111; //adc ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
                  _delay_ms(100);
                  TCCR0B=0b00000001;//foc0a-foc0b-0-0-wgm02-cs02-cs01-cs00
                  TCCR1B=0b00000001;//icnc1-ices1-0-wgm13-wgm12-cs12-cs11-cs10
                  TCCR2B=0b00000001;//foc2a-foc2b-0-0-wgm22-cs22-cs21-cs20
                  GTCCR = (1<<TSM)|(1<<PSRASY)|(1<<PSRSYNC); //yes u have to set timer settings FIRST and then 0 them all at the same time IF DONT U WANNA HAVE PROBLEMS
                  TCNT0 = 0; // set timer0 to 0
                  TCNT1H= 0; // set timer1 high byte to 0
                  TCNT1L= 0; // set timer1 low byte to 0
                  TCNT2 = 0; // set timer2 to 0
                  GTCCR = 0; // release all timers
                  sei();


                  H=PIND & 0b00000111; //Reads the Hall Sensors For the first Time




                  while (1)
                  {

                  if(F==0b1)
                  { // start of period

                  H=PIND & 0b00000111; //Reads the Hall Sensor
                  OCR0A=255;
                  OCR1A=255;
                  OCR2A=255;
                  OCR0B=DC;
                  OCR1B=DC;
                  OCR2B=DC;
                  switch (H)
                  {//switch BLDC commutation
                  case 0b110:
                  //PORTD=0b01000000; //arm 0 and 1 is on arm 2 is off
                  //PORTB=0b00000010;
                  TCCR2A=0b00000001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20
                  TCCR1A=0b10100001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  TCCR0A=0b10110001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  break;

                  case 0b100:
                  //PORTD=0b01000000; //arm 0 and 2 is on arm 1 is off
                  //PORTB=0b00001000;
                  TCCR1A=0b00000001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  TCCR2A=0b10100001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20
                  TCCR0A=0b10110001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  break;

                  case 0b101:
                  //PORTD=0b00000000; //arm 1 and 2 is on arm 0 is off
                  //PORTB=0b00001010;
                  TCCR0A=0b00000001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  TCCR2A=0b10100001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20
                  TCCR1A=0b10110001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  break;

                  case 0b1:
                  //PORTD=0b01000000; //arm 0 and 1 is on arm 2 is off
                  //PORTB=0b00000010;
                  TCCR2A=0b00000001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20
                  TCCR0A=0b10100001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  TCCR1A=0b10110001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  break;

                  case 0b11:
                  //PORTD=0b01000000; //arm 0 and 2 is on arm 1 is off
                  //PORTB=0b00001000;
                  TCCR1A=0b00000001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  TCCR0A=0b10100001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  TCCR2A=0b10110001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20
                  break;

                  case 0b10:
                  //PORTD=0b00000000; //arm 1 and 2 is on arm 0 is off
                  //PORTB=0b00001010;
                  TCCR0A=0b00000001;//com0a1-com0a0-com0b1-com0b0-0-0-wgm01-wgm00
                  TCCR1A=0b10100001;//com1a1-com1a0-com1b1-com1b0-0-0-wgm11-wgm10
                  TCCR2A=0b10110001;//com2a1-com2a0-com2b1-com2b0-0-0-wgm21-wgm20
                  break;
                  }//Switch BLDC com







                  if(FADC==0b1)
                  { //if adc is ready
                  //PI part
                  RPot=P/4; //pot
                  RPot=(RPot/2)+127; //now 0 is 127 and 255 is 255

                  if(RPot>250) {RPot=250;}
                  if(RPot<5) {RPot=5;}
                  VE=RPot-DC; //Error
                  W=(kI*0.000032*VE)+OW; //PI
                  OW=W; //PI
                  Y=(kP*VE)+W; //PI
                  DC=Y;
                  if(DC>250) {DC=250;}
                  if(DC<5) {DC=5;}
                  //now dutycycle is between 127-245_
                  // 128 is zero speed 245 is full speed

                  //Battery Voltage Part_ 50v is 2.61 0v is 0
                  RBV=BV*0.0049;
                  R2BV=19.15*RBV; //Real Voltage!
                  if(FR2BV<40) {if(FR2BV>=0) {PORTC=0b00100000;}} //Normal Voltage
                  tf=tf+1;
                  if(tf>100) {FR2BV=R2BV; tf=0;}
                  if(FR2BV>=40) {PORTC=0b00000000;} //RESET Overvoltage
                  if(FR2BV<10) {PORTC=0b00000000;} //RESET Undervoltage
                  IDC=DC;
                  FADC=0b0;
                  ADCSRA=0b11001111; //adc
                  }




                  T=T+0.000032; //discrete time step

                  F=0b0;

                  } //end of discrete
                  }//while(1)
                  }//main






                  ISR(TIMER0_OVF_vect)
                  {//isr
                  F=0b1;

                  }//isr




                  ISR(ADC_vect)
                  {




                  switch (ADMUX)
                  {
                  case 0b01000010:
                  OP = P;
                  P = ADC;
                  ADMUX = 0b01000000; // Clear MUXn
                  ADMUX = 0b01000001; // Set MUXn
                  break;

                  case 0b01000001:
                  OC = C;
                  C = ADC;
                  ADMUX = 0b01000000; // Clear MUXn
                  ADMUX = 0b01000011; // Set MUXn
                  break;

                  case 0b01000011:
                  BV = OBV;
                  BV = ADC;
                  ADMUX = 0b01000000; // Clear MUXn
                  ADMUX = 0b01000010; // Set MUXn
                  break;
                  }
                  FADC=0b1; //ADC is Ready!
                  }



                  خب همونطور که واضح هست تو برنامه نویسی هم نوب هستم.اما تلاش زیادی صورت گرفته و همه چیز بدون مشکل کار میکنه. این نسخه از درایور IR2104 استفاده میکنه که خب بصورت کمپلمنتری ماسفت هارو درایو میکنه (دد تایم توسط آیسی ایجاد میشه) و ماشین الکتریکی میتونه در چهار ربع کاری کار کنه
                  مشکلات نسخه دوم ATMEGA48/88/328
                  1-عدم وجودخازن های مولتی لیر و خازن الکترولیت در بازو های اینورتر(حتما باید رعایت بشه)
                  2-عدم وجود فیلتر پایین گذر برای سنسور جریان ( اگر نیاز به سنسور جریان ندارید میتوانید ورودی و خروجی شانت سنسور رو لحیم کنین به هم (شورت سرکت کنین) ضمن اینکه در برنامه نویسی نیز باید لحاظ شود.
                  در نسخه سوم هم دارم رو یک درایور ماشین القایی - PMSM - BLDC کار میکنم بر پایه ی STM8S903K3T6 که اگه خوب پیش رفت میذارم
                  جدیدترین ویرایش توسط Amir Zia; ۲۱:۰۵ ۱۳۹۹/۱۲/۲۹.






                  امیرحسین ضیا

                  دیدگاه


                    #69
                    پاسخ : ساخت درایور موتور براشلس

                    نوشته اصلی توسط Amir Zia نمایش پست ها
                    در نسخه سوم هم دارم رو یک درایور ماشین القایی - PMSM - BLDC کار میکنم بر پایه ی STM8S903K3T6 که اگه خوب پیش رفت میذارم
                    درود بر شما
                    برای فاز سوم اگه منظورتون روش وکتور کنترل یا foc هست بعیده این میکرو جواب بده.
                    کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                    دیدگاه


                      #70
                      پاسخ : ساخت درایور موتور براشلس

                      نوشته اصلی توسط نو رسیده نمایش پست ها
                      درود بر شما
                      برای فاز سوم اگه منظورتون روش وکتور کنترل یا foc هست بعیده این میکرو جواب بده.
                      تشکر از شما.
                      نه برای روش FOC قصد دارم از stm32 استفاده کنم.
                      در فاز سوم قصد اینه که کمی بیشتر با این میکروی کم قیمت آشنا شم.
                      براین پایه هست :
                      جدیدترین ویرایش توسط Amir Zia; ۱۷:۳۰ ۱۳۹۹/۱۲/۲۹.






                      امیرحسین ضیا

                      دیدگاه


                        #71
                        پاسخ : ساخت درایور موتور براشلس

                        ممنون امیر آقا بابت فایل ها و زحماتی که کشیدین

                        سه تا سوال در مورد ورژن اول (1.1):

                        1. توی ورودی ولتاژ مدار نوشته شده 15v ، با توجه به این که شما فرمودین ورودی 50v دادین، پس مشکلی از این بابت برای ما مبتدی ها نداره؟ ما هم می تونیم 50 ولت بدیم؟

                        2. چیزی باید به INV وصل بشه؟

                        3. برای مطمئن شدن میپرسم: VS1, VS2, VS3 می شن فاز های موتور؟ درسته؟


                        دمت گرم

                        دیدگاه


                          #72
                          پاسخ : ساخت درایور موتور براشلس

                          نوشته اصلی توسط AliHemmati نمایش پست ها
                          ممنون امیر آقا بابت فایل ها و زحماتی که کشیدین

                          سه تا سوال در مورد ورژن اول (1.1):

                          1. توی ورودی ولتاژ مدار نوشته شده 15v ، با توجه به این که شما فرمودین ورودی 50v دادین، پس مشکلی از این بابت برای ما مبتدی ها نداره؟ ما هم می تونیم 50 ولت بدیم؟

                          2. چیزی باید به INV وصل بشه؟

                          3. برای مطمئن شدن میپرسم: VS1, VS2, VS3 می شن فاز های موتور؟ درسته؟


                          دمت گرم
                          سلام تشکر. ابتدا در نظر بگیرید پروژه یک پروژه ی کاملا حرفه ای نیست و یک پروژه هابی و آماتور هست.
                          1-به ریل 15 ولت باید ولتاژی بین 12 تا 17 ولت داده بشه(مدار گیت درایور)
                          اون ریل 50 ولت هم بسته به ولتاژ مدار قدرتتون (ماسفت ها درایور و خازن ها و ..) داره.
                          اگر از IRF3205 استفاده میکنین بالای 40 ولت بهتره بهش ندید. (خازن ها بهتره 63 ولت یا 50 ولت انتخاب بشن)( درایور رو یک درایور 24 یا 36 ولت در نظر بگیرید. در این محدوده ولتاژ میتونین از یک مبدل باک استفاده کنین تا ولتاژ 15 ولت رو هم براتون بسازه چون در مدار مبدل ولتاژ 36 به 15 ولت در نظر گرفته نشده است)
                          2-ورژن 1.1 پر از ایراد هست اون زمان من تجربه کمی داشتم ( مثلا خازن های مربوط تغذیه نزدیک آیسی داریور در نظر گرفته نشه! برا بازو های اینورتر خازن مناسب انتخاب نشده.دارم یه ورژن خیلی بهتر با stm32 میسازم که با ST Motor Control Workbench میتونه کار کنه )
                          3-(بله VS ها در واقع سورس ماسفت های ساید یا همون فاز هست. بهتره بین ولتاژ فاز و پین VS آیسی داریور یک مفاومت در حد 10 اهم در نظر گرفته بشه)
                          جدیدترین ویرایش توسط Amir Zia; ۱۵:۲۷ ۱۳۹۹/۱۲/۳۰.






                          امیرحسین ضیا

                          دیدگاه


                            #73
                            پاسخ : ساخت درایور موتور براشلس

                            ممنون از توضیحات عالی

                            اگه درست متوجه شده باشم:
                            اون ریل INV تعیین کننده هست که ما می خوایم چه ولتاژی به موتور بدیم، مثلا" اگه قصد داریم 36 ولت به موتو بدیم، باید از IRF3205 و چیزهایی که فرمودین استفاده کنیم
                            ولی همچنان به ریل 15v باید ولتاژ 15 ولت اعمال بشه که با یه Buck converter می تونیم ولتاژ 36 ولت رو به 15 تبدیل کرده و به ریل 15v متصل کنیم.

                            درسته؟



                            جدیدترین ویرایش توسط AliHemmati; ۱۰:۱۰ ۱۴۰۰/۰۱/۰۱.

                            دیدگاه


                              #74
                              پاسخ : ساخت درایور موتور براشلس

                              نوشته اصلی توسط AliHemmati نمایش پست ها
                              ممنون از توضیحات عالی

                              اگه درست متوجه شده باشم:
                              اون ریل INV تعیین کننده هست که ما می خوایم چه ولتاژی به موتور بدیم، مثلا" اگه قصد داریم 36 ولت به موتو بدیم، باید از IRF3205 و چیزهایی که فرمودین استفاده کنیم
                              ولی همچنان به ریل 15v باید ولتاژ 15 ولت اعمال بشه که با یه Buck converter می تونیم ولتاژ 36 ولت رو به 15 تبدیل کرده و به ریل 15v متصل کنیم.

                              درسته؟



                              بله درسته. بسته به انتخاب سوییچ و خازن میتونه متغیر باشه این ولتاژ.
                              ولی 15 ولت و 5 ولت سر جای خودش هست.
                              من از همه عذر خواهی میکنم که پروژه رو ناقص گذاشتم
                              بازم تاکید میکنم که این پروژه پر از ایراد هست! صرفا یک ایده کلی و روشن سازی راه پیش رو هست و برای چندین سال پیش هست.
                              الان پروژه های اوپن سورسی مثل VESC و BLUEESC و ..... وجود داره.
                              اون پروژه که با ATMEGA48 زدم یکمی بهتره و کم ایراد تر.






                              امیرحسین ضیا

                              دیدگاه


                                #75
                                پاسخ : ساخت درایور موتور براشلس

                                بسیار عالی
                                بله، بنده هم برای روشن شدن قضیه می خواهم.
                                مداری که طراحی کردید، خیلی واضح و قابل فهمه...ممنون از شما

                                خواستم بپرسم که اگه امکانش هست، pdf شماتیک ورژن دوم رو قرار بدین لطفا.
                                (نمی دونم مشکل کجاست ولی فایلها باز نشدند، روی آلتیوم و به صورت آنلاین تست کردم).


                                تشکر فراوان

                                دیدگاه

                                لطفا صبر کنید...
                                X