1、原理图按照数据手册推荐的电路画的,电机为无霍尔BLDC。
2、现在想法是通过控制HIN1、HIN2、HIN3、LIN1、LIN2、LIN3,输入高低电平,控制HO1、HO2、HO3、LO1、LO2、LO3输出高低电平。只是验证硬件是否正常,能驱动电机转动。代码见下面,只是设定普通的IO输出驱动,未用到PWM。代码是根据下面两个图来编写。 3、现出现如下现象:MOS管供电24V,IR2136供电12V。LO输出12V的高低电平变化,HO输出36V的高低电平变化。 量电机的相线,有24V高低电平变化,电机滋滋滋响,但没有转动。现在无法确认电机转动原因。 如果按照下面两张图顺序写,电机应该可以转动,但不知道为什么电机不动。 希望各位大侠指点。
代码: #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" void Set_UVW(unsigned char nHIN1,unsignedchar nLIN1,unsigned char nHIN2,unsigned char nLIN2,unsigned char nHIN3,unsignedchar nLIN3) { U_H=nHIN1;//A+ U_L=nLIN1;//A- V_H=nHIN2;//B+ V_L=nLIN2;//B- W_H=nHIN3;//C+ W_L=nLIN3;//C- } intmain(void) { delay_init(); LED_Init(); LED0=0; Set_UVW(1,1,1,1,1,1);//HO1=0 ,LO1=0 ,HO2=0 ,LO2=0 ,HO3=0 ,LO3=0,所有桥臂置低 delay_ms(100); Set_UVW(1,0,1,0,1,0);//HO1=0 ,LO1=1 ,HO2=0 ,LO2=1 ,HO3=0 ,LO3=1,所有下桥臂置高,给自举电容充电 delay_ms(100); Set_UVW(1,1,1,1,1,1);//HO1=0 ,LO1=0 ,HO2=0 ,LO2=0 ,HO3=0 ,LO3=0,所有桥臂置低 delay_ms(1); while(1) { Set_UVW(1,0,1,1,0,1);//HO1=0 ,LO1=1 ,HO2=0 ,LO2=0 ,HO3=1 ,LO3=0 delay_us(10); Set_UVW(1,0,0,1,1,1);//HO1=0 ,LO1=1 ,HO2=1 ,LO2=0 ,HO3=0 ,LO3=0 delay_us(10); Set_UVW(1,1,0,1,1,0);//HO1=0 ,LO1=0 ,HO2=1 ,LO2=0 ,HO3=0 ,LO3=1 delay_us(10); Set_UVW(0,1,1,1,1,0);//HO1=1 ,LO1=0 ,HO2=0 ,LO2=0 ,HO3=0 ,LO3=1 delay_us(10); Set_UVW(0,1,1,0,1,1);//HO1=1 ,LO1=0 ,HO2=0 ,LO2=1 ,HO3=0 ,LO3=0 delay_us(10); Set_UVW(1,1,1,0,0,1);//HO1=0 ,LO1=0 ,HO2=0 ,LO2=1 ,HO3=1 ,LO3=0 delay_us(10); } }
|