站内搜索
发作品签到
专业版

基于梁山派的双路Foc无刷驱动板设计

工程标签

3.3k
0
0
5

简介

以DRV8313PWPR为驱动芯片,配合梁山派开发板,实现无刷电机Foc驱动电路。

简介:以DRV8313PWPR为驱动芯片,配合梁山派开发板,实现无刷电机Foc驱动电路。

开源协议

GPL 3.0

创建时间:2022-11-20 18:06:20更新时间:2022-12-26 14:01:46

描述

项目简介:

本驱动板以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

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
转起来了.mp4
39
2
I2C.mp4
18
3
7综合功能演示.rar
145
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航