爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
某型运动相机第三轴配件改造教程 一、简介 此配件为RedFox/红狐狸运动相机O2的第三轴配件。这家公司在淘宝有店铺,这个配件标价399元。可以360度旋转,自带红色和蓝色LED灯,一个按键。买的二手货,超便宜。 对于DIYers来说,这就是一个完美的机器人或者机械狗的关节啊!
二、拆解 这里借用淘宝卖家的几张图。
画圈的地方拆5个螺丝,即可看到电路板。
电路板用料很好,至少是3层板。主控芯片使用的是STM32F103T8U6,无刷电机驱动是MPS的MP6536,角度传感器是英飞凌的TLE5012B-E1000,无刷电机是12N14P的2606电机,还有三个运放用于电流采样,用料十分豪华。
与运动相机连接部分的拆解同样需要拆掉5个螺丝,不过有两个在背面。这里面就是一个转接板,负责转接电源、控制信号和相机的USB连接。
三、驱动方法 驱动无刷电机最简单的方法是使用开源的SimpleFOC库,现在已经支持电流采样,虽然是in-line模式,与此驱动板上的低端采样不一样,但是正在开发中,很快就可以支持了。得益于ST官方的stm32duino项目,适用于STM32 MCUs 的Arduino 内核已经非常成熟,故此可以使用 Arduino开发环境,与SimpleFOC库完美配合,上手更快。 四、开发环境搭建 之后你的ArduinoIDE开发板菜单里会出现: 不过暂时不会出现“RedFoxGimabal Driver Borad”选项。需要进行下一步。 2.添加云台驱动板。打开ArduinoIDE的boards.txt文件,位置一般在“C:\Users\你的用户名\AppData\Local\arduino15\packages\STM32\hardware\stm32\1.9.0”里,添加下面内容:
################################################################################ # RedFox Gimbal Driver Borad RedFox.name=RedFox Gimbal Driver Borad
RedFox.build.core=arduino RedFox.build.board=RedFox RedFox.build.mcu=cortex-m3 RedFox.build.series=STM32F1xx RedFox.build.cmsis_lib_gcc=arm_cortexM3l_math RedFox.build.extra_flags=-D{build.product_line}{build.xSerial} #RedFox.build.extra_flags=-D{build.product_line}{build.xSerial} {build.bootloader_flags}
# Special STM32F103Tx boards
RedFox.menu.pnum.RedFox_Gimbal_Driver_Board=SpecialF103T8 RedFox.menu.pnum.RedFox_Gimbal_Driver_Board.upload.maximum_size=65536 RedFox.menu.pnum.RedFox_Gimbal_Driver_Board.upload.maximum_data_size=20480 RedFox.menu.pnum.RedFox_Gimbal_Driver_Board.build.board=SPECIAL_F103T8 RedFox.menu.pnum.RedFox_Gimbal_Driver_Board.build.product_line=STM32F103xB RedFox.menu.pnum.RedFox_Gimbal_Driver_Board.build.variant=RedFox_Gimbal_Driver_Board
# Upload menu RedFox.menu.upload_method.swdMethod=STM32CubeProgrammer(SWD) RedFox.menu.upload_method.swdMethod.upload.protocol=0 RedFox.menu.upload_method.swdMethod.upload.options=-g RedFox.menu.upload_method.swdMethod.upload.tool=stm32CubeProg 重新启动ArduinoIDE,你的开发板菜单就会跟上图一致了。 3.添加云台驱动板配置文件。在“C:\Users\你的用户名\AppData\Local\arduino15\packages\STM32\hardware\stm32\1.9.0\variants”下面创建新的文件夹“RedFox_Gimbal_Driver_Board”,名称必须一致,将文件解压到这里。
4.刷机工具准备。需要使用SWD接口进行下载和调试,如果你有ST-Link V2.1 或者V3,那么就简单多了。关键是制作刷机线。到网上买“测试针P50探针可伸缩弹簧顶针”,要伞型头的那种,焊上杜邦线,用胶粘在一个板上,保持间距是1.27mm,参见下图:
注意驱动板的SWD接口顺序:
如果你只有ST-LINK V2版本的编程器,如下图这种:
那么需要做一些手脚,欺骗ArduinoIDE,才能下载程序。首先安装STM32 ST-LINK Utility软件,再安装STM32CubeProgrammer软件,备份STM32_Programmer_CLI.exe所在的bin文件夹,将STM32 ST-LINK Utility中ST-LINK_CLI.exe所在的ST-LINK Utility文件夹里文件全部拷贝到STM32CubeProgrammer软件bin安装文件夹下面,将ST-LINK_CLI.exe改名为STM32_Programmer_CLI.exe。再到“C:\Users\你的用户名\AppData\Local\arduino15\packages\STM32\tools\STM32Tools\1.4.0\tools\win”文件夹下面用记事本打开stm32CubeProg.bat文件,使用下面的内容替换全部,记得先备份。
set ERROR=0 setSTM32CP_CLI=STM32_Programmer_CLI.exe setADDRESS=0x8000000 set ERASE= set MODE= set PORT= set OPTS=
:: Check tool where /Q %STM32CP_CLI% if %errorlevel%==0goto :param ::Check withdefault path setSTM32CP=%ProgramW6432%\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin setSTM32CP86=%ProgramFiles(X86)%\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin set PATH=%PATH%;%STM32CP%;%STM32CP86% where /Q%STM32CP_CLI% if %errorlevel%==0goto :param echo %STM32CP_CLI%not found. echo Pleaseinstall it or add ^<STM32CubeProgrammer path^>\bin' to your PATHenvironment: echo Aborting! exit 1
:param :: Parse options if"%~1"=="" echo Not enough arguments! & set ERROR=2& goto :usage if"%~2"=="" echo Not enough arguments! & set ERROR=2& goto :usage
set PROTOCOL=%~1 set FILEPATH=%~2
:: Protocol :: 1x: Erase allsectors if %~1 lss 10 goto:proto set ERASE=-ME set /aPROTOCOL-=10
:: 0: SWD :: 1: Serial :: 2: DFU :proto if %PROTOCOL%==0goto :SWD if %PROTOCOL%==1goto :SERIAL if %PROTOCOL%==2goto :DFU echo Protocolunknown! set ERROR=4 goto :usage
:SWD set PORT=SWD set MODE=UR goto :opt
:SERIAL if"%~3"=="" set ERROR=3 & goto :usage set PORT=%~3 shift goto :opt
:DFU set PORT=USB1 goto :opt
:opt shift shift if"%~1"=="" goto :prog ::set OPTS=%1 %2%3 %4 %5 %6 %7 %8 %9 set OPTS=-Rst goto :prog
:prog %STM32CP_CLI% -c%PORT% %MODE% %ERASE% -Q -P %FILEPATH% %ADDRESS% %OPTS% exit 0
:usage echo %0 ^<protocol^>^<file_path^> [OPTIONS] echo. echo protocol: echo 0: SWD echo 1: Serial echo 2: DFU echo Note: prefix it by 1 to erase all sectors echo Ex: 10 erase all sectors using SWD interface echo file_path: file path name to bedownloaded: (bin, hex) echo Options: echo For SWD and DFU: no mandatory options echo For Serial: ^<com_port^> echo com_port: serial identifier (mandatory). Ex: COM15 echo. echo Note: all trailing arguments will bepassed to the %STM32CP_CLI% echo They have to be valid commands for STM32 MCU echo Ex: -g: Run the code at the specified address echo -rst: Reset system echo -s: start automatically (optional) exit %ERROR% 至此,软硬件更改完毕。注意:这种修改后不能再使用STM32CubeProgrammer软件给stm32 mcu上传程序了。 也可以使用Jlink等进行上传,就是比较麻烦,每次等ArduinoIDE编译好程序后,到“C:\Users\你的用户名\AppData\Local\Temp\arduino_build_xxxxxx”里找到bin文件(在ArduinoIDE首选项里选中显示详细输出:编译,就可以在提示信息里找到xxxxxx具体的数字),再使用Jlink Flash软件上传。 这时,你可以打开ArduinoIDE的blink示例,编译上传,就可以看见配件的灯会闪了。 开发板相关选项如下图:
五、驱动无刷电机 1.在ArduinoIDE中添加simplefoc库。这个比较简单,就不再重复了。 2.添加TLE5012B的驱动文件。由于TLE5012B又是三线SPI,比较特殊,和stm32duino的SPI库不兼容,所以使用GPIO模拟的SPI,比特率也能到达500k,完全不影响使用。将两个代码文件拷贝到“C:\Users\你的用户名\Documents\Arduino\libraries\Simple_FOC\src\sensors”下面。 4.硬件连线。配件的接口定义如图:
可以直接焊上线,不过考虑到以后拆卸方便,可以按照下图用洞洞板自制一块转接板,因为触针间距是2.54,非常完美,用热熔胶粘住,防止接触不良。有能力的可以绘制一块电路板,实现抽插安装和锁扣功能。
电源供电为7.4伏即可,此时电机力矩已经不错了。没有试过12伏供电,理论上没问题,驱动芯片能力为5A。 串口波特率设置为115200。 至此,驱动方法讲解完毕,剩下的就是发挥你的想象力。 六、改造过程中注意事项 1.尽量不要将电路板拆下来,因为它的LED灯和按键板是垂直安装的,很脆弱,容易脱焊,造成灯不亮、按键失灵。本人就被此困扰了很长时间,很不容易发现。
2.每个板子的角度传感器的初始偏移都不一样,请自行试验得到具体值,在代码中修改或在程序中实现存储功能。
|