数码之家

 找回密码
 立即注册
搜索
查看: 2581|回复: 9

[外设] 红狐狸运动相机第三轴配件改造教程

[复制链接]
发表于 2021-4-24 18:37:17 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
某型运动相机第三轴配件改造教程
一、简介
此配件为RedFox/红狐狸运动相机O2的第三轴配件。这家公司在淘宝有店铺,这个配件标价399元。可以360度旋转,自带红色和蓝色LED灯,一个按键。买的二手货,超便宜。
对于DIYers来说,这就是一个完美的机器人或者机械狗的关节啊!
111.jpg

二、拆解
     这里借用淘宝卖家的几张图。
22.png

画圈的地方拆5个螺丝,即可看到电路板。
33.jpg

电路板用料很好,至少是3层板。主控芯片使用的是STM32F103T8U6,无刷电机驱动是MPS的MP6536,角度传感器是英飞凌的TLE5012B-E1000,无刷电机是12N14P的2606电机,还有三个运放用于电流采样,用料十分豪华。

44.jpg

55.jpg
66.jpg

与运动相机连接部分的拆解同样需要拆掉5个螺丝,不过有两个在背面。这里面就是一个转接板,负责转接电源、控制信号和相机的USB连接。

77.png
88.jpg


三、驱动方法
驱动无刷电机最简单的方法是使用开源的SimpleFOC库,现在已经支持电流采样,虽然是in-line模式,与此驱动板上的低端采样不一样,但是正在开发中,很快就可以支持了。得益于ST官方的stm32duino项目,适用于STM32 MCUs 的Arduino 内核已经非常成熟,故此可以使用 Arduino开发环境,与SimpleFOC库完美配合,上手更快。
四、开发环境搭建
     1.在ArduinoIDE中添加开发板。首先在“文件”菜单里选择“首选项”,将“https://raw.fastgit.org/stm32dui ... kage_stm_index.json”粘贴到附件开发板管理器网址里。选择“工具”菜单,“开发板”“开发板管理器”,搜索stm32,选择最新版安装。
99.png
之后你的ArduinoIDE开发板菜单里会出现:
991.png
不过暂时不会出现“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”,名称必须一致,将文件解压到这里。
990.png

4.刷机工具准备。需要使用SWD接口进行下载和调试,如果你有ST-Link V2.1 或者V3,那么就简单多了。关键是制作刷机线。到网上买“测试针P50探针可伸缩弹簧顶针”,要伞型头的那种,焊上杜邦线,用胶粘在一个板上,保持间距是1.27mm,参见下图:
992.jpg

注意驱动板的SWD接口顺序:
993.jpg

         如果你只有ST-LINK V2版本的编程器,如下图这种:
994.jpg

那么需要做一些手脚,欺骗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文件,使用下面的内容替换全部,记得先备份。
@echo off

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示例,编译上传,就可以看见配件的灯会闪了。
开发板相关选项如下图:
995.png

五、驱动无刷电机
1.在ArduinoIDE中添加simplefoc库。这个比较简单,就不再重复了。
2.添加TLE5012B的驱动文件。由于TLE5012B又是三线SPI,比较特殊,和stm32duino的SPI库不兼容,所以使用GPIO模拟的SPI,比特率也能到达500k,完全不影响使用。将两个代码文件拷贝到“C:\Users\你的用户名\Documents\Arduino\libraries\Simple_FOC\src\sensors”下面。
3.新建arduino程序。添加#include <SimpleFOC.h>,就可以使用了。SimpleFOC的文档可以在https://docs.simplefoc.com/找到,使用很简单。自带控制指令,使用串口即可实现无刷马达的全面控制和参数调试。
4.硬件连线。配件的接口定义如图:
996.png

可以直接焊上线,不过考虑到以后拆卸方便,可以按照下图用洞洞板自制一块转接板,因为触针间距是2.54,非常完美,用热熔胶粘住,防止接触不良。有能力的可以绘制一块电路板,实现抽插安装和锁扣功能。
997.png

电源供电为7.4伏即可,此时电机力矩已经不错了。没有试过12伏供电,理论上没问题,驱动芯片能力为5A。
串口波特率设置为115200。
至此,驱动方法讲解完毕,剩下的就是发挥你的想象力。
六、改造过程中注意事项
1.尽量不要将电路板拆下来,因为它的LED灯和按键板是垂直安装的,很脆弱,容易脱焊,造成灯不亮、按键失灵。本人就被此困扰了很长时间,很不容易发现。
998.jpg

2.每个板子的角度传感器的初始偏移都不一样,请自行试验得到具体值,在代码中修改或在程序中实现存储功能。

打赏

参与人数 3家元 +48 收起 理由
cutter + 18
rallyezhang + 20 優秀文章
guangqu + 10

查看全部打赏

发表于 2021-4-24 20:12:17 | 显示全部楼层
撸主牛屁了,我看得都头大...
回复 支持 反对

使用道具 举报

发表于 2021-4-25 06:18:49 来自手机浏览器 | 显示全部楼层
我除了看图片,其他都看不懂
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-29 08:57:07 | 显示全部楼层
字都认识     就是放一块就看不懂了
回复 支持 反对

使用道具 举报

发表于 2021-4-29 09:46:43 | 显示全部楼层
楼主你好。3.添加云台驱动板配置文件。在“C:\Users\你的用户名\AppData\Local\arduino15\packages\STM32\hardware\stm32\1.9.0\variants”下面创建新的文件夹“RedFox_Gimbal_Driver_Board”,名称必须一致,将文件解压到这里。
这个配置文件从哪里来?
回复 支持 反对

使用道具 举报

发表于 2021-4-29 13:25:55 | 显示全部楼层
没看懂是啥,惭愧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-30 08:48:59 来自手机浏览器 | 显示全部楼层
naja 发表于 2021-4-29 09:46
楼主你好。3.添加云台驱动板配置文件。在“C:%users\你的用户名\AppData\Local\arduino15\packages\STM32\h ...

闲鱼有硬件出售,送全套资料
https://www.mydigit.cn/thread-303559-1-1.html

回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-6 14:17:37 | 显示全部楼层
楼主淘宝链接可以发一下嘛?或者发一下关键字也可以,谢谢
回复 支持 反对

使用道具 举报

发表于 2021-5-7 11:37:25 | 显示全部楼层
实拍效果呢,前后对比一下
回复 支持 反对

使用道具 举报

发表于 2022-3-20 18:36:21 | 显示全部楼层
楼主能给份驱动代码学些吗,最近有项目要用到MP6536驱动无刷电机的项目
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-28 17:06 , Processed in 0.218400 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表