基于梁山派的双路Foc无刷驱动板设计
简介
以DRV8313PWPR为驱动芯片,配合梁山派开发板,实现无刷电机Foc驱动电路。
简介:以DRV8313PWPR为驱动芯片,配合梁山派开发板,实现无刷电机Foc驱动电路。开源协议
:GPL 3.0
描述
项目简介:
本驱动板以DRV8313PWPR为驱动芯片,利用板对板连接器连接到梁山派开发板,目的是实现小电流云台无刷电机的控制。

电源模块:
电源采用TPS5430DDA + AMS1117制造 5V和 3.3V电压,5v电源通过排针与梁山派相连。

驱动模块:
驱动模块采用DRV8313驱动芯片,配合INA240两路电流采样,实现Foc驱动电路。

实物模型展示:


驱动板接口
LCD
板载1.1.4寸屏幕,驱动芯片ST7789,使用协议spi4传输。
端口分配
SDA <-> LCD_MOSI <-> PC9
SCL <-> LCD_SCLK <-> PC10
RESET<-> LCD_RST <-> PA15
RS <-> LCD_DC <-> PA14
CS <-> LCD_CS <-> PC11
按键
板载3个按键,加入电容消抖处理。端口需要内部上拉
SW1 <-> PC6
SW2 <-> PD1
SW3 <-> PD5
电机端口
电机1
使用 TIMER1 定时器
U1 <-> PA0 <-> TIMER1_CH0
V1 <-> PA1 <-> TIMER1_CH1
W1 <-> PA2 <-> TIMER1_CH2
EN1 <-> PC1
电机2
使用 TIMER0 定时器
U2 <-> PB13 <-> TIMER0_CH0_ON
V2 <-> PB14 <-> TIMER0_CH1_ON
W2 <-> PB15 <-> TIMER0_CH2_ON
EN2 <-> PG7
编码器
板载两个编码器接口,使用 I2C协议
接口1
PB6 <-> I2C0_SCL
PB7 <-> I2C0_SDA
接口2
PA8 <-> I2C2_SCL
PC9 <-> I2C2_SDA
电流采样ADC
M1_U_ADC <-> PF9 <-> ADC2_IN7
M1_V_ADC <-> PF7 <-> ADC2_IN5
M2_U_ADC <-> PA4 <-> ADC01_IN4
M2_V_ADC <-> PA6 <-> ADC01_IN6
无刷开环程序
实现简单的开环控制,让电机转起来。程序使用SIMPLE FOC开源代码,附简单注释
void setPhaseVoltage(float Uq, float Ud, float angle_el)
{
float Uout;
uint32_t sector;
float T0,T1,T2; //直接控制电机的三相pwm占空比参数
float Ta,Tb,Tc;
float U_alpha,U_beta;
angle_el =_normalizeAngle(angle_el);
U_alpha=Ud*_cos(angle_el)-Uq*_sin(angle_el); //park逆变换
U_beta=Ud*_sin(angle_el)+Uq*_cos(angle_el);
Uout=_sqrt(U_alpha*U_alpha + U_beta*U_beta) / voltage_power_supply;
if(Uout> 0.577)Uout= 0.577;
if(Uout<-0.577)Uout=-0.577;
sector = (angle_el / _PI_3) + 1;
T1 = _SQRT3*_sin(sector*_PI_3 - angle_el) * Uout;
T2 = _SQRT3*_sin(angle_el - (sector-1.0)*_PI_3) * Uout;
T0 = 1 - T1 - T2;
switch(sector)
{
case 1:
Ta = T1 + T2 + T0/2;
Tb = T2 + T0/2;
Tc = T0/2;
break;
case 2:
Ta = T1 + T0/2;
Tb = T1 + T2 + T0/2;
Tc = T0/2;
break;
case 3:
Ta = T0/2;
Tb = T1 + T2 + T0/2;
Tc = T2 + T0/2;
break;
case 4:
Ta = T0/2;
Tb = T1+ T0/2;
Tc = T1 + T2 + T0/2;
break;
case 5:
Ta = T2 + T0/2;
Tb = T0/2;
Tc = T1 + T2 + T0/2;
break;
case 6:
Ta = T1 + T2 + T0/2;
Tb = T0/2;
Tc = T1 + T0/2;
break;
default: // possible error state
Ta = 0;
Tb = 0;
Tc = 0;
}
timer_channel_output_pulse_value_config(BSP_PWM_TIMER,BSP_PWM_UCHANNEL,Ta*10000);
timer_channel_output_pulse_value_config(BSP_PWM_TIMER,BSP_PWM_VCHANNEL,Tb*10000);
timer_channel_output_pulse_value_config(BSP_PWM_TIMER,BSP_PWM_WCHANNEL,Tc*10000);
}
实现的功能
程序成功运行的模块
lcd 显示
as5600角度获取
电机开环转动
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。




评论