Merge branch 'dev_blackpill' into 'main'
Dev blackpill See merge request imia/dji-gimbal-foc!1
This commit is contained in:
commit
c2faec0432
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
.pio
|
||||
.vscode
|
||||
/.*/
|
||||
/Kicad/Breakout_board/Breakout_DJI_Gimbal-backups
|
||||
/Kicad/STM32_DJI_Gimbal/STM32_DJI_Gimbal-backups
|
||||
|
BIN
Kicad/STM32_DJI_Gimbal/DCDC boost/TI_Design.pdf
Normal file
BIN
Kicad/STM32_DJI_Gimbal/DCDC boost/TI_Design.pdf
Normal file
Binary file not shown.
63
Kicad/STM32_DJI_Gimbal/DGI_Gimbal.pretty/TPS61088.kicad_mod
Normal file
63
Kicad/STM32_DJI_Gimbal/DGI_Gimbal.pretty/TPS61088.kicad_mod
Normal file
@ -0,0 +1,63 @@
|
||||
(footprint "TPS61088" (version 20211014) (generator pcbnew)
|
||||
(layer "F.Cu")
|
||||
(tedit 0)
|
||||
(descr "RHL (R-PVQFN-N20) FFW")
|
||||
(tags "Integrated Circuit")
|
||||
(attr smd)
|
||||
(fp_text reference "IC**" (at 0 -0.15) (layer "F.SilkS")
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
(tstamp 16c306e9-e442-40b3-877f-c797d356ff0e)
|
||||
)
|
||||
(fp_text value "TPS61088" (at 0 -0.15) (layer "F.SilkS") hide
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
(tstamp 2a31e99f-1567-4f7f-ae66-6831c74be055)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 0 -0.15) (layer "F.Fab")
|
||||
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||
(tstamp 289ff8d3-2318-42c5-8b7c-3417f6fc6136)
|
||||
)
|
||||
(fp_line (start 1 -2.25) (end 1.65 -2.25) (layer "F.SilkS") (width 0.1) (tstamp 224a4508-b903-4bec-bffe-a329e8e427f1))
|
||||
(fp_line (start -1.65 2.25) (end -1 2.25) (layer "F.SilkS") (width 0.1) (tstamp 2a3bfb9e-092a-4ee6-aa15-b3a5c34c7e69))
|
||||
(fp_line (start -0.8 -2.7) (end -0.8 -2.7) (layer "F.SilkS") (width 0.1) (tstamp 55ab3813-9643-496d-b4e1-570f63a0ae80))
|
||||
(fp_line (start -1 -2.25) (end -1.65 -2.25) (layer "F.SilkS") (width 0.1) (tstamp 7b40331a-5007-44fc-9897-6670f326a16e))
|
||||
(fp_line (start -0.5 2.25) (end 0.5 2.25) (layer "F.SilkS") (width 0.1) (tstamp 7e15bb82-3533-45a3-8c8e-da54a22e66c0))
|
||||
(fp_line (start 1 2.25) (end 1.65 2.25) (layer "F.SilkS") (width 0.1) (tstamp 9fb0fd85-c202-461c-b11b-b36d0a60786e))
|
||||
(fp_line (start -0.5 -2.25) (end 0.5 -2.25) (layer "F.SilkS") (width 0.1) (tstamp b9307b9b-bb22-4fb4-9f5a-a13256690faa))
|
||||
(fp_line (start -0.7 -2.7) (end -0.7 -2.7) (layer "F.SilkS") (width 0.1) (tstamp c9d1b597-d1f3-4e37-8495-7bbc1fa6fd76))
|
||||
(fp_arc (start -0.7 -2.7) (mid -0.75 -2.65) (end -0.8 -2.7) (layer "F.SilkS") (width 0.1) (tstamp 0461202c-9c8d-47bf-945b-b6dcdce4dbec))
|
||||
(fp_arc (start -0.8 -2.7) (mid -0.75 -2.75) (end -0.7 -2.7) (layer "F.SilkS") (width 0.1) (tstamp 2ea84639-1539-4604-ac1d-7fe5d2437052))
|
||||
(fp_line (start -2.95 -3.75) (end 2.95 -3.75) (layer "F.CrtYd") (width 0.1) (tstamp 38f89fba-1e33-4006-a1b7-19ec49668db0))
|
||||
(fp_line (start 2.95 3.45) (end -2.95 3.45) (layer "F.CrtYd") (width 0.1) (tstamp 5ba94818-cbf9-4290-b41f-3bdd4f163875))
|
||||
(fp_line (start 2.95 -3.75) (end 2.95 3.45) (layer "F.CrtYd") (width 0.1) (tstamp 8c2033a9-6a19-49d1-839f-5572e58a9b26))
|
||||
(fp_line (start -2.95 3.45) (end -2.95 -3.75) (layer "F.CrtYd") (width 0.1) (tstamp fc004a83-678b-4c4a-a9fc-68643b8ee356))
|
||||
(fp_line (start 1.75 -2.25) (end 1.75 2.25) (layer "F.Fab") (width 0.2) (tstamp 033710eb-92ba-4600-bb82-8e997072988d))
|
||||
(fp_line (start 1.75 2.25) (end -1.75 2.25) (layer "F.Fab") (width 0.2) (tstamp 4bbdb673-b689-4644-bbdb-e581cabe560e))
|
||||
(fp_line (start -1.75 2.25) (end -1.75 -2.25) (layer "F.Fab") (width 0.2) (tstamp 59646334-2178-4696-8863-721f0654095d))
|
||||
(fp_line (start -1.75 -2.25) (end 1.75 -2.25) (layer "F.Fab") (width 0.2) (tstamp ad8f967f-3c5d-4478-a436-f12f3279e8cf))
|
||||
(pad "1" smd rect (at -0.75 -2.15) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 60b4fd16-dcc1-4930-9fa0-1fda4139e4f0))
|
||||
(pad "2" smd rect (at -1.65 -1.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a8d58e60-213b-450e-8bee-78da989739be))
|
||||
(pad "3" smd rect (at -1.65 -1.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp db904b6f-3240-4d84-9b6e-68b54c07f86e))
|
||||
(pad "4" smd rect (at -1.65 -0.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 03d6a208-31bc-43cf-9fd0-f36430b4e780))
|
||||
(pad "5" smd rect (at -1.65 -0.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9b5bdf68-1815-4c5e-94af-51cc65beee39))
|
||||
(pad "6" smd rect (at -1.65 0.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 149981ef-2517-42ac-bf33-e93347b849b6))
|
||||
(pad "7" smd rect (at -1.65 0.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8fc051f5-fb72-4101-ae26-6dfa34384097))
|
||||
(pad "8" smd rect (at -1.65 1.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e1b97812-4166-49f7-8c06-b71966a6466f))
|
||||
(pad "9" smd rect (at -1.65 1.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b39fde77-c7b4-449e-a85f-6238b876c269))
|
||||
(pad "10" smd rect (at -0.75 2.15) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp cc843ce3-9034-4010-9b1a-e045e758f8c4))
|
||||
(pad "11" smd rect (at 0.75 2.15) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a7317140-c392-48ee-a4ab-b3e918620e77))
|
||||
(pad "12" smd rect (at 1.65 1.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 83436220-4624-45f5-8a48-6778c0814bb1))
|
||||
(pad "13" smd rect (at 1.65 1.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp be122c1c-61bb-41e3-8a85-54ba707e3e48))
|
||||
(pad "14" smd rect (at 1.65 0.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 78c9d886-bcd4-47ce-a965-bf6e24ff7e41))
|
||||
(pad "15" smd rect (at 1.65 0.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp cb79a967-140b-4164-9ee5-8405e4d37a1b))
|
||||
(pad "16" smd rect (at 1.65 -0.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f0991022-eac4-48f5-b547-c16b32523226))
|
||||
(pad "17" smd rect (at 1.65 -0.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 78ca2947-0aa6-4f53-873c-1f1b95128d4a))
|
||||
(pad "18" smd rect (at 1.65 -1.25 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2d315cae-3ea0-4621-b40a-48ab3623bb86))
|
||||
(pad "19" smd rect (at 1.65 -1.75 90) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 866f1a69-0927-45db-b090-aae2563d5bf6))
|
||||
(pad "20" smd rect (at 0.75 -2.15) (size 0.24 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1a7468dd-6294-4005-ae0b-7f13eac5c7eb))
|
||||
(pad "21" smd rect (at 0 0) (size 2.19 3.19) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 267f2e26-878f-4d4a-b1de-bfadbdf79253))
|
||||
(model "C:\\Users\\lurenaud\\Documents\\KiCad\\SamacSys\\SamacSys_Parts.3dshapes\\TPS61088RHLT.stp"
|
||||
(offset (xyz 0 0 0.02999999888))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz -90 0 0))
|
||||
)
|
||||
)
|
@ -588,6 +588,140 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(symbol "TPS61088RHLT" (pin_names (offset 0.762)) (in_bom yes) (on_board yes)
|
||||
(property "Reference" "IC" (id 0) (at 26.67 22.86 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left))
|
||||
)
|
||||
(property "Value" "TPS61088RHLT" (id 1) (at 26.67 20.32 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left))
|
||||
)
|
||||
(property "Footprint" "BQ24031IRHLRQ1" (id 2) (at 26.67 17.78 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Datasheet" "http://www.ti.com/lit/ds/symlink/tps61088.pdf" (id 3) (at 26.67 15.24 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Description" "Texas Instruments TPS61088RHLT, 3, Boost Converter, Synchronous Boost Converter 10A 4.5 12.6 V, 2.2 MHz 20-Pin" (id 4) (at 26.67 12.7 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Height" "1" (id 5) (at 26.67 10.16 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Mouser Part Number" "595-TPS61088RHLT" (id 6) (at 26.67 7.62 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Mouser Price/Stock" "https://www.mouser.co.uk/ProductDetail/Texas-Instruments/TPS61088RHLT?qs=MiqG6Kq1qKOeAwvWtl5eUw%3D%3D" (id 7) (at 26.67 5.08 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Manufacturer_Name" "Texas Instruments" (id 8) (at 26.67 2.54 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "Manufacturer_Part_Number" "TPS61088RHLT" (id 9) (at 26.67 0 0)
|
||||
(effects (font (size 1.27 1.27)) (justify left) hide)
|
||||
)
|
||||
(property "ki_description" "Texas Instruments TPS61088RHLT, 3, Boost Converter, Synchronous Boost Converter 10A 4.5 12.6 V, 2.2 MHz 20-Pin" (id 10) (at 0 0 0)
|
||||
(effects (font (size 1.27 1.27)) hide)
|
||||
)
|
||||
(symbol "TPS61088RHLT_0_0"
|
||||
(pin passive line (at 12.7 8.89 270) (length 5.08)
|
||||
(name "VCC" (effects (font (size 1.27 1.27))))
|
||||
(number "1" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 12.7 -25.4 90) (length 5.08)
|
||||
(name "SS" (effects (font (size 1.27 1.27))))
|
||||
(number "10" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 15.24 -25.4 90) (length 5.08)
|
||||
(name "NC_1" (effects (font (size 1.27 1.27))))
|
||||
(number "11" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -17.78 180) (length 5.08)
|
||||
(name "NC_2" (effects (font (size 1.27 1.27))))
|
||||
(number "12" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -15.24 180) (length 5.08)
|
||||
(name "MODE" (effects (font (size 1.27 1.27))))
|
||||
(number "13" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -12.7 180) (length 5.08)
|
||||
(name "VOUT_1" (effects (font (size 1.27 1.27))))
|
||||
(number "14" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -10.16 180) (length 5.08)
|
||||
(name "VOUT_2" (effects (font (size 1.27 1.27))))
|
||||
(number "15" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -7.62 180) (length 5.08)
|
||||
(name "VOUT_3" (effects (font (size 1.27 1.27))))
|
||||
(number "16" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -5.08 180) (length 5.08)
|
||||
(name "FB" (effects (font (size 1.27 1.27))))
|
||||
(number "17" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 -2.54 180) (length 5.08)
|
||||
(name "COMP" (effects (font (size 1.27 1.27))))
|
||||
(number "18" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 30.48 0 180) (length 5.08)
|
||||
(name "ILIM" (effects (font (size 1.27 1.27))))
|
||||
(number "19" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 0 0) (length 5.08)
|
||||
(name "EN" (effects (font (size 1.27 1.27))))
|
||||
(number "2" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 17.78 8.89 270) (length 5.08)
|
||||
(name "AGND" (effects (font (size 1.27 1.27))))
|
||||
(number "20" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 15.24 8.89 270) (length 5.08)
|
||||
(name "EP_(PGND)" (effects (font (size 1.27 1.27))))
|
||||
(number "21" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -2.54 0) (length 5.08)
|
||||
(name "FSW" (effects (font (size 1.27 1.27))))
|
||||
(number "3" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -5.08 0) (length 5.08)
|
||||
(name "SW_1" (effects (font (size 1.27 1.27))))
|
||||
(number "4" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -7.62 0) (length 5.08)
|
||||
(name "SW_2" (effects (font (size 1.27 1.27))))
|
||||
(number "5" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -10.16 0) (length 5.08)
|
||||
(name "SW_3" (effects (font (size 1.27 1.27))))
|
||||
(number "6" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -12.7 0) (length 5.08)
|
||||
(name "SW_4" (effects (font (size 1.27 1.27))))
|
||||
(number "7" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -15.24 0) (length 5.08)
|
||||
(name "BOOT" (effects (font (size 1.27 1.27))))
|
||||
(number "8" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
(pin passive line (at 0 -17.78 0) (length 5.08)
|
||||
(name "VIN" (effects (font (size 1.27 1.27))))
|
||||
(number "9" (effects (font (size 1.27 1.27))))
|
||||
)
|
||||
)
|
||||
(symbol "TPS61088RHLT_0_1"
|
||||
(polyline
|
||||
(pts
|
||||
(xy 5.08 3.81)
|
||||
(xy 25.4 3.81)
|
||||
(xy 25.4 -20.32)
|
||||
(xy 5.08 -20.32)
|
||||
(xy 5.08 3.81)
|
||||
)
|
||||
(stroke (width 0.1524) (type default) (color 0 0 0 0))
|
||||
(fill (type background))
|
||||
)
|
||||
)
|
||||
)
|
||||
(symbol "WeAct_BlackPill_Part_Like" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (id 0) (at -12.7 27.94 0)
|
||||
(effects (font (size 1.27 1.27)))
|
||||
|
5436
Kicad/STM32_DJI_Gimbal/DJI_Gimbal_PCB_TransmiterVideo.DXF
Normal file
5436
Kicad/STM32_DJI_Gimbal/DJI_Gimbal_PCB_TransmiterVideo.DXF
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,226 +0,0 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
|
||||
%TF.CreationDate,2022-08-11T15:59:35+02:00*%
|
||||
%TF.ProjectId,STM32_DJI_Gimbal,53544d33-325f-4444-9a49-5f47696d6261,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Bot*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-08-11 15:59:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,1.700000X1.700000*%
|
||||
%ADD11O,1.700000X1.700000*%
|
||||
%ADD12C,0.800000*%
|
||||
%ADD13C,6.400000*%
|
||||
%ADD14C,0.700000*%
|
||||
%ADD15C,4.400000*%
|
||||
%ADD16C,1.700000*%
|
||||
%ADD17C,1.050000*%
|
||||
%ADD18R,1.050000X1.050000*%
|
||||
%ADD19R,0.300000X0.750000*%
|
||||
%ADD20R,0.230000X0.420000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J2*%
|
||||
X164000000Y-127125000D03*
|
||||
D11*
|
||||
X164000000Y-129665000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,H6*%
|
||||
X165250000Y-82350000D03*
|
||||
X166947056Y-86447056D03*
|
||||
X166947056Y-83052944D03*
|
||||
X167650000Y-84750000D03*
|
||||
D13*
|
||||
X165250000Y-84750000D03*
|
||||
D12*
|
||||
X165250000Y-87150000D03*
|
||||
X163552944Y-83052944D03*
|
||||
X163552944Y-86447056D03*
|
||||
X162850000Y-84750000D03*
|
||||
%TD*%
|
||||
%TO.C,H5*%
|
||||
X165250000Y-112850000D03*
|
||||
X166947056Y-116947056D03*
|
||||
X166947056Y-113552944D03*
|
||||
X167650000Y-115250000D03*
|
||||
D13*
|
||||
X165250000Y-115250000D03*
|
||||
D12*
|
||||
X165250000Y-117650000D03*
|
||||
X163552944Y-113552944D03*
|
||||
X163552944Y-116947056D03*
|
||||
X162850000Y-115250000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,H4*%
|
||||
X172166726Y-147666726D03*
|
||||
X171000000Y-144850000D03*
|
||||
X169833274Y-145333274D03*
|
||||
X169350000Y-146500000D03*
|
||||
X172166726Y-145333274D03*
|
||||
X169833274Y-147666726D03*
|
||||
X171000000Y-148150000D03*
|
||||
D15*
|
||||
X171000000Y-146500000D03*
|
||||
D14*
|
||||
X172650000Y-146500000D03*
|
||||
%TD*%
|
||||
%TO.C,H3*%
|
||||
X172166726Y-140666726D03*
|
||||
X171000000Y-137850000D03*
|
||||
X169833274Y-138333274D03*
|
||||
X169350000Y-139500000D03*
|
||||
X172166726Y-138333274D03*
|
||||
X169833274Y-140666726D03*
|
||||
X171000000Y-141150000D03*
|
||||
D15*
|
||||
X171000000Y-139500000D03*
|
||||
D14*
|
||||
X172650000Y-139500000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,H2*%
|
||||
X134750000Y-112850000D03*
|
||||
X136447056Y-116947056D03*
|
||||
X136447056Y-113552944D03*
|
||||
X137150000Y-115250000D03*
|
||||
D13*
|
||||
X134750000Y-115250000D03*
|
||||
D12*
|
||||
X134750000Y-117650000D03*
|
||||
X133052944Y-113552944D03*
|
||||
X133052944Y-116947056D03*
|
||||
X132350000Y-115250000D03*
|
||||
%TD*%
|
||||
%TO.C,H1*%
|
||||
X134750000Y-82350000D03*
|
||||
X136447056Y-86447056D03*
|
||||
X136447056Y-83052944D03*
|
||||
X137150000Y-84750000D03*
|
||||
D13*
|
||||
X134750000Y-84750000D03*
|
||||
D12*
|
||||
X134750000Y-87150000D03*
|
||||
X133052944Y-83052944D03*
|
||||
X133052944Y-86447056D03*
|
||||
X132350000Y-84750000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,U1*%
|
||||
X142380000Y-75870000D03*
|
||||
D16*
|
||||
X142380000Y-78410000D03*
|
||||
X142380000Y-80950000D03*
|
||||
X142380000Y-83490000D03*
|
||||
X142380000Y-86030000D03*
|
||||
X142380000Y-88570000D03*
|
||||
X142380000Y-91110000D03*
|
||||
X142380000Y-93650000D03*
|
||||
X142380000Y-96190000D03*
|
||||
X142380000Y-98730000D03*
|
||||
X142380000Y-101270000D03*
|
||||
X142380000Y-103810000D03*
|
||||
X142380000Y-106350000D03*
|
||||
X142380000Y-108890000D03*
|
||||
X142380000Y-111430000D03*
|
||||
X142380000Y-113970000D03*
|
||||
X142380000Y-116510000D03*
|
||||
X142380000Y-119050000D03*
|
||||
X142380000Y-121590000D03*
|
||||
X142380000Y-124130000D03*
|
||||
X157620000Y-124130000D03*
|
||||
X157620000Y-121590000D03*
|
||||
X157620000Y-119050000D03*
|
||||
X157620000Y-116510000D03*
|
||||
X157620000Y-113970000D03*
|
||||
X157620000Y-111430000D03*
|
||||
X157620000Y-108890000D03*
|
||||
X157620000Y-106350000D03*
|
||||
X157620000Y-103810000D03*
|
||||
X157620000Y-101270000D03*
|
||||
X157620000Y-98730000D03*
|
||||
X157620000Y-96190000D03*
|
||||
X157620000Y-93650000D03*
|
||||
X157620000Y-91110000D03*
|
||||
X157620000Y-88570000D03*
|
||||
X157620000Y-86030000D03*
|
||||
X157620000Y-83490000D03*
|
||||
X157620000Y-80950000D03*
|
||||
X157620000Y-78410000D03*
|
||||
X157620000Y-75870000D03*
|
||||
%TD*%
|
||||
D17*
|
||||
%TO.C,P2*%
|
||||
X161000000Y-91000000D03*
|
||||
X161000000Y-93000000D03*
|
||||
X161000000Y-95000000D03*
|
||||
X161000000Y-97000000D03*
|
||||
X161000000Y-99000000D03*
|
||||
X161000000Y-101000000D03*
|
||||
X161000000Y-103000000D03*
|
||||
X161000000Y-105000000D03*
|
||||
X161000000Y-107000000D03*
|
||||
D18*
|
||||
X161000000Y-109000000D03*
|
||||
%TD*%
|
||||
%TO.C,P1*%
|
||||
X139000000Y-109000000D03*
|
||||
D17*
|
||||
X139000000Y-107000000D03*
|
||||
X139000000Y-105000000D03*
|
||||
X139000000Y-103000000D03*
|
||||
X139000000Y-101000000D03*
|
||||
X139000000Y-99000000D03*
|
||||
X139000000Y-97000000D03*
|
||||
X139000000Y-95000000D03*
|
||||
X139000000Y-93000000D03*
|
||||
X139000000Y-91000000D03*
|
||||
%TD*%
|
||||
D19*
|
||||
%TO.C,J1*%
|
||||
X139090000Y-140575000D03*
|
||||
X139090000Y-142425000D03*
|
||||
X147910000Y-142425000D03*
|
||||
X147910000Y-140575000D03*
|
||||
D20*
|
||||
X140300000Y-140410000D03*
|
||||
X140300000Y-142590000D03*
|
||||
X140700000Y-140410000D03*
|
||||
X140700000Y-142590000D03*
|
||||
X141100000Y-140410000D03*
|
||||
X141100000Y-142590000D03*
|
||||
X141500000Y-140410000D03*
|
||||
X141500000Y-142590000D03*
|
||||
X141900000Y-140410000D03*
|
||||
X141900000Y-142590000D03*
|
||||
X142300000Y-140410000D03*
|
||||
X142300000Y-142590000D03*
|
||||
X142700000Y-140410000D03*
|
||||
X142700000Y-142590000D03*
|
||||
X143100000Y-140410000D03*
|
||||
X143100000Y-142590000D03*
|
||||
X143500000Y-140410000D03*
|
||||
X143500000Y-142590000D03*
|
||||
X143900000Y-140410000D03*
|
||||
X143900000Y-142590000D03*
|
||||
X144300000Y-140410000D03*
|
||||
X144300000Y-142590000D03*
|
||||
X144700000Y-140410000D03*
|
||||
X144700000Y-142590000D03*
|
||||
X145100000Y-140410000D03*
|
||||
X145100000Y-142590000D03*
|
||||
X145500000Y-140410000D03*
|
||||
X145500000Y-142590000D03*
|
||||
X145900000Y-140410000D03*
|
||||
X145900000Y-142590000D03*
|
||||
X146300000Y-140410000D03*
|
||||
X146300000Y-142590000D03*
|
||||
X146700000Y-140410000D03*
|
||||
X146700000Y-142590000D03*
|
||||
%TD*%
|
||||
M02*
|
@ -1,59 +0,0 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
|
||||
%TF.CreationDate,2022-08-11T15:59:35+02:00*%
|
||||
%TF.ProjectId,STM32_DJI_Gimbal,53544d33-325f-4444-9a49-5f47696d6261,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-08-11 15:59:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,0.300000X0.750000*%
|
||||
%ADD11R,0.230000X0.420000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J1*%
|
||||
X139090000Y-140575000D03*
|
||||
X139090000Y-142425000D03*
|
||||
X147910000Y-142425000D03*
|
||||
X147910000Y-140575000D03*
|
||||
D11*
|
||||
X140300000Y-140410000D03*
|
||||
X140300000Y-142590000D03*
|
||||
X140700000Y-140410000D03*
|
||||
X140700000Y-142590000D03*
|
||||
X141100000Y-140410000D03*
|
||||
X141100000Y-142590000D03*
|
||||
X141500000Y-140410000D03*
|
||||
X141500000Y-142590000D03*
|
||||
X141900000Y-140410000D03*
|
||||
X141900000Y-142590000D03*
|
||||
X142300000Y-140410000D03*
|
||||
X142300000Y-142590000D03*
|
||||
X142700000Y-140410000D03*
|
||||
X142700000Y-142590000D03*
|
||||
X143100000Y-140410000D03*
|
||||
X143100000Y-142590000D03*
|
||||
X143500000Y-140410000D03*
|
||||
X143500000Y-142590000D03*
|
||||
X143900000Y-140410000D03*
|
||||
X143900000Y-142590000D03*
|
||||
X144300000Y-140410000D03*
|
||||
X144300000Y-142590000D03*
|
||||
X144700000Y-140410000D03*
|
||||
X144700000Y-142590000D03*
|
||||
X145100000Y-140410000D03*
|
||||
X145100000Y-142590000D03*
|
||||
X145500000Y-140410000D03*
|
||||
X145500000Y-142590000D03*
|
||||
X145900000Y-140410000D03*
|
||||
X145900000Y-142590000D03*
|
||||
X146300000Y-140410000D03*
|
||||
X146300000Y-142590000D03*
|
||||
X146700000Y-140410000D03*
|
||||
X146700000Y-142590000D03*
|
||||
%TD*%
|
||||
M02*
|
@ -1,66 +0,0 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
|
||||
%TF.CreationDate,2022-08-11T15:59:35+02:00*%
|
||||
%TF.ProjectId,STM32_DJI_Gimbal,53544d33-325f-4444-9a49-5f47696d6261,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Legend,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-08-11 15:59:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.500000*%
|
||||
%ADD11C,0.150000*%
|
||||
%ADD12C,0.250000*%
|
||||
%ADD13C,0.200000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X136800001Y-76000000D02*
|
||||
G75*
|
||||
G03*
|
||||
X136800001Y-76000000I-1J0D01*
|
||||
G01*
|
||||
D11*
|
||||
X137300000Y-78500000D02*
|
||||
X136800000Y-79000000D01*
|
||||
X136300000Y-78500000D02*
|
||||
X136800000Y-79000000D01*
|
||||
X136800000Y-79000000D02*
|
||||
X136800000Y-77118033D01*
|
||||
X137918034Y-76000000D02*
|
||||
G75*
|
||||
G03*
|
||||
X137918034Y-76000000I-1118034J0D01*
|
||||
G01*
|
||||
D12*
|
||||
%TO.C,J1*%
|
||||
X143633333Y-137552380D02*
|
||||
X143633333Y-138266666D01*
|
||||
X143680952Y-138409523D01*
|
||||
X143776190Y-138504761D01*
|
||||
X143919047Y-138552380D01*
|
||||
X144014285Y-138552380D01*
|
||||
X142633333Y-138552380D02*
|
||||
X143204761Y-138552380D01*
|
||||
X142919047Y-138552380D02*
|
||||
X142919047Y-137552380D01*
|
||||
X143014285Y-137695238D01*
|
||||
X143109523Y-137790476D01*
|
||||
X143204761Y-137838095D01*
|
||||
D13*
|
||||
X147500000Y-142650000D02*
|
||||
X147100000Y-142650000D01*
|
||||
X147500000Y-140350000D02*
|
||||
X147100000Y-140350000D01*
|
||||
X138860000Y-141900000D02*
|
||||
X138860000Y-141300000D01*
|
||||
X139900000Y-140350000D02*
|
||||
X139500000Y-140350000D01*
|
||||
X148140000Y-141700000D02*
|
||||
X148140000Y-141300000D01*
|
||||
X139900000Y-142650000D02*
|
||||
X139500000Y-142650000D01*
|
||||
%TD*%
|
||||
M02*
|
@ -1,154 +0,0 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
|
||||
%TF.CreationDate,2022-08-11T15:59:35+02:00*%
|
||||
%TF.ProjectId,STM32_DJI_Gimbal,53544d33-325f-4444-9a49-5f47696d6261,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Profile,NP*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-08-11 15:59:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%TA.AperFunction,Profile*%
|
||||
%ADD10C,0.250000*%
|
||||
%TD*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X167500000Y-146000000D02*
|
||||
G75*
|
||||
G03*
|
||||
X169500000Y-146000000I1000000J0D01*
|
||||
G01*
|
||||
X169500000Y-140000000D02*
|
||||
G75*
|
||||
G03*
|
||||
X167500000Y-140000000I-1000000J0D01*
|
||||
G01*
|
||||
X176000000Y-138500000D02*
|
||||
G75*
|
||||
G03*
|
||||
X174000000Y-136500000I-2000000J0D01*
|
||||
G01*
|
||||
X170071798Y-135964100D02*
|
||||
G75*
|
||||
G03*
|
||||
X172071797Y-136500000I2000002J3464100D01*
|
||||
G01*
|
||||
X165999959Y-131303848D02*
|
||||
G75*
|
||||
G03*
|
||||
X168000000Y-134767949I4000041J48D01*
|
||||
G01*
|
||||
X167269235Y-118108801D02*
|
||||
G75*
|
||||
G03*
|
||||
X166000000Y-120559190I1730765J-2450399D01*
|
||||
G01*
|
||||
X167269231Y-118108795D02*
|
||||
G75*
|
||||
G03*
|
||||
X167269231Y-112391205I-2019231J2858795D01*
|
||||
G01*
|
||||
X165999992Y-109940810D02*
|
||||
G75*
|
||||
G03*
|
||||
X167269231Y-112391205I3000008J10D01*
|
||||
G01*
|
||||
X167269235Y-87608801D02*
|
||||
G75*
|
||||
G03*
|
||||
X166000000Y-90059190I1730765J-2450399D01*
|
||||
G01*
|
||||
X167269231Y-87608795D02*
|
||||
G75*
|
||||
G03*
|
||||
X167269231Y-81891205I-2019231J2858795D01*
|
||||
G01*
|
||||
X165999992Y-79440810D02*
|
||||
G75*
|
||||
G03*
|
||||
X167269231Y-81891205I3000008J10D01*
|
||||
G01*
|
||||
X166000000Y-76500000D02*
|
||||
G75*
|
||||
G03*
|
||||
X163000000Y-73500000I-3000000J0D01*
|
||||
G01*
|
||||
X137000000Y-73500000D02*
|
||||
G75*
|
||||
G03*
|
||||
X134000000Y-76500000I0J-3000000D01*
|
||||
G01*
|
||||
X132730765Y-81891199D02*
|
||||
G75*
|
||||
G03*
|
||||
X134000000Y-79440810I-1730765J2450399D01*
|
||||
G01*
|
||||
X132730769Y-81891205D02*
|
||||
G75*
|
||||
G03*
|
||||
X132730769Y-87608795I2019231J-2858795D01*
|
||||
G01*
|
||||
X134000008Y-90059190D02*
|
||||
G75*
|
||||
G03*
|
||||
X132730769Y-87608795I-3000008J-10D01*
|
||||
G01*
|
||||
X132730765Y-112391199D02*
|
||||
G75*
|
||||
G03*
|
||||
X134000000Y-109940810I-1730765J2450399D01*
|
||||
G01*
|
||||
X132730769Y-112391205D02*
|
||||
G75*
|
||||
G03*
|
||||
X132730769Y-118108795I2019231J-2858795D01*
|
||||
G01*
|
||||
X134000008Y-120559190D02*
|
||||
G75*
|
||||
G03*
|
||||
X132730769Y-118108795I-3000008J-10D01*
|
||||
G01*
|
||||
X134000004Y-139685045D02*
|
||||
G75*
|
||||
G03*
|
||||
X138840602Y-148251294I9999996J-5D01*
|
||||
G01*
|
||||
X138840604Y-148251290D02*
|
||||
G75*
|
||||
G03*
|
||||
X143679492Y-149500000I4838896J8751290D01*
|
||||
G01*
|
||||
X174000000Y-149500000D02*
|
||||
G75*
|
||||
G03*
|
||||
X176000000Y-147500000I0J2000000D01*
|
||||
G01*
|
||||
X167500000Y-140000000D02*
|
||||
X167500000Y-146000000D01*
|
||||
X169500000Y-146000000D02*
|
||||
X169500000Y-140000000D01*
|
||||
X176000000Y-147500000D02*
|
||||
X176000000Y-138500000D01*
|
||||
X174000000Y-136500000D02*
|
||||
X172071797Y-136500000D01*
|
||||
X170071797Y-135964102D02*
|
||||
X168000000Y-134767949D01*
|
||||
X166000000Y-131303848D02*
|
||||
X166000000Y-120559190D01*
|
||||
X166000000Y-109940810D02*
|
||||
X166000000Y-90059190D01*
|
||||
X166000000Y-79440810D02*
|
||||
X166000000Y-76500000D01*
|
||||
X163000000Y-73500000D02*
|
||||
X137000000Y-73500000D01*
|
||||
X134000000Y-76500000D02*
|
||||
X134000000Y-79440810D01*
|
||||
X134000000Y-90059190D02*
|
||||
X134000000Y-109940810D01*
|
||||
X134000000Y-120559190D02*
|
||||
X134000000Y-139685045D01*
|
||||
X143679492Y-149500000D02*
|
||||
X174000000Y-149500000D01*
|
||||
M02*
|
File diff suppressed because it is too large
Load Diff
@ -1,333 +0,0 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
|
||||
%TF.CreationDate,2022-08-11T15:59:35+02:00*%
|
||||
%TF.ProjectId,STM32_DJI_Gimbal,53544d33-325f-4444-9a49-5f47696d6261,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Top*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-08-11 15:59:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 Aperture macros list*
|
||||
%AMRoundRect*
|
||||
0 Rectangle with rounded corners*
|
||||
0 $1 Rounding radius*
|
||||
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
|
||||
0 Add a 4 corners polygon primitive as box body*
|
||||
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
|
||||
0 Add four circle primitives for the rounded corners*
|
||||
1,1,$1+$1,$2,$3*
|
||||
1,1,$1+$1,$4,$5*
|
||||
1,1,$1+$1,$6,$7*
|
||||
1,1,$1+$1,$8,$9*
|
||||
0 Add four rect primitives between the rounded corners*
|
||||
20,1,$1+$1,$2,$3,$4,$5,0*
|
||||
20,1,$1+$1,$4,$5,$6,$7,0*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10R,1.600000X0.410000*%
|
||||
%ADD11RoundRect,0.135000X0.135000X0.185000X-0.135000X0.185000X-0.135000X-0.185000X0.135000X-0.185000X0*%
|
||||
%ADD12RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||
%ADD13R,0.800000X2.700000*%
|
||||
%ADD14R,0.700000X0.600000*%
|
||||
%ADD15RoundRect,0.225000X0.250000X-0.225000X0.250000X0.225000X-0.250000X0.225000X-0.250000X-0.225000X0*%
|
||||
%ADD16RoundRect,0.250000X-0.787500X-0.925000X0.787500X-0.925000X0.787500X0.925000X-0.787500X0.925000X0*%
|
||||
%ADD17RoundRect,0.250000X0.787500X0.925000X-0.787500X0.925000X-0.787500X-0.925000X0.787500X-0.925000X0*%
|
||||
%ADD18RoundRect,0.225000X-0.225000X-0.250000X0.225000X-0.250000X0.225000X0.250000X-0.225000X0.250000X0*%
|
||||
%ADD19RoundRect,0.225000X0.225000X0.250000X-0.225000X0.250000X-0.225000X-0.250000X0.225000X-0.250000X0*%
|
||||
%ADD20R,1.700000X1.700000*%
|
||||
%ADD21O,1.700000X1.700000*%
|
||||
%ADD22C,0.800000*%
|
||||
%ADD23C,6.400000*%
|
||||
%ADD24C,0.700000*%
|
||||
%ADD25C,4.400000*%
|
||||
%ADD26C,1.700000*%
|
||||
%ADD27R,1.500000X1.000000*%
|
||||
%ADD28C,0.950000*%
|
||||
%ADD29RoundRect,0.150000X-0.150000X0.587500X-0.150000X-0.587500X0.150000X-0.587500X0.150000X0.587500X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,U2*%
|
||||
X155808600Y-132115000D03*
|
||||
X155808600Y-132750000D03*
|
||||
X155808600Y-133385000D03*
|
||||
X155808600Y-134020000D03*
|
||||
X155808600Y-134655000D03*
|
||||
X155808600Y-135290000D03*
|
||||
X155808600Y-135925000D03*
|
||||
X155808600Y-136560000D03*
|
||||
X150500000Y-136560000D03*
|
||||
X150500000Y-135925000D03*
|
||||
X150500000Y-135290000D03*
|
||||
X150500000Y-134655000D03*
|
||||
X150500000Y-134020000D03*
|
||||
X150500000Y-133385000D03*
|
||||
X150500000Y-132750000D03*
|
||||
X150500000Y-132115000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R3*%
|
||||
X148914300Y-134000000D03*
|
||||
X147894300Y-134000000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,R2*%
|
||||
X147894300Y-135087500D03*
|
||||
X148914300Y-135087500D03*
|
||||
%TD*%
|
||||
%TO.C,R1*%
|
||||
X148846000Y-136250000D03*
|
||||
X147826000Y-136250000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,L1*%
|
||||
X151650000Y-129500000D03*
|
||||
X153850000Y-129500000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,D1*%
|
||||
X157800000Y-132900000D03*
|
||||
X157800000Y-131500000D03*
|
||||
%TD*%
|
||||
D15*
|
||||
%TO.C,C5*%
|
||||
X143750000Y-140275000D03*
|
||||
X143750000Y-138725000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,C4*%
|
||||
X160962500Y-129000000D03*
|
||||
X156037500Y-129000000D03*
|
||||
%TD*%
|
||||
D17*
|
||||
%TO.C,C3*%
|
||||
X148962500Y-129337500D03*
|
||||
X144037500Y-129337500D03*
|
||||
%TD*%
|
||||
D18*
|
||||
%TO.C,C2*%
|
||||
X152379300Y-137837500D03*
|
||||
X153929300Y-137837500D03*
|
||||
%TD*%
|
||||
D19*
|
||||
%TO.C,C1*%
|
||||
X148679300Y-132837500D03*
|
||||
X147129300Y-132837500D03*
|
||||
%TD*%
|
||||
D20*
|
||||
%TO.C,J2*%
|
||||
X164000000Y-127125000D03*
|
||||
D21*
|
||||
X164000000Y-129665000D03*
|
||||
%TD*%
|
||||
D22*
|
||||
%TO.C,H6*%
|
||||
X165250000Y-82350000D03*
|
||||
X166947056Y-86447056D03*
|
||||
X166947056Y-83052944D03*
|
||||
X167650000Y-84750000D03*
|
||||
D23*
|
||||
X165250000Y-84750000D03*
|
||||
D22*
|
||||
X165250000Y-87150000D03*
|
||||
X163552944Y-83052944D03*
|
||||
X163552944Y-86447056D03*
|
||||
X162850000Y-84750000D03*
|
||||
%TD*%
|
||||
%TO.C,H5*%
|
||||
X165250000Y-112850000D03*
|
||||
X166947056Y-116947056D03*
|
||||
X166947056Y-113552944D03*
|
||||
X167650000Y-115250000D03*
|
||||
D23*
|
||||
X165250000Y-115250000D03*
|
||||
D22*
|
||||
X165250000Y-117650000D03*
|
||||
X163552944Y-113552944D03*
|
||||
X163552944Y-116947056D03*
|
||||
X162850000Y-115250000D03*
|
||||
%TD*%
|
||||
D24*
|
||||
%TO.C,H4*%
|
||||
X172166726Y-147666726D03*
|
||||
X171000000Y-144850000D03*
|
||||
X169833274Y-145333274D03*
|
||||
X169350000Y-146500000D03*
|
||||
X172166726Y-145333274D03*
|
||||
X169833274Y-147666726D03*
|
||||
X171000000Y-148150000D03*
|
||||
D25*
|
||||
X171000000Y-146500000D03*
|
||||
D24*
|
||||
X172650000Y-146500000D03*
|
||||
%TD*%
|
||||
%TO.C,H3*%
|
||||
X172166726Y-140666726D03*
|
||||
X171000000Y-137850000D03*
|
||||
X169833274Y-138333274D03*
|
||||
X169350000Y-139500000D03*
|
||||
X172166726Y-138333274D03*
|
||||
X169833274Y-140666726D03*
|
||||
X171000000Y-141150000D03*
|
||||
D25*
|
||||
X171000000Y-139500000D03*
|
||||
D24*
|
||||
X172650000Y-139500000D03*
|
||||
%TD*%
|
||||
D22*
|
||||
%TO.C,H2*%
|
||||
X134750000Y-112850000D03*
|
||||
X136447056Y-116947056D03*
|
||||
X136447056Y-113552944D03*
|
||||
X137150000Y-115250000D03*
|
||||
D23*
|
||||
X134750000Y-115250000D03*
|
||||
D22*
|
||||
X134750000Y-117650000D03*
|
||||
X133052944Y-113552944D03*
|
||||
X133052944Y-116947056D03*
|
||||
X132350000Y-115250000D03*
|
||||
%TD*%
|
||||
%TO.C,H1*%
|
||||
X134750000Y-82350000D03*
|
||||
X136447056Y-86447056D03*
|
||||
X136447056Y-83052944D03*
|
||||
X137150000Y-84750000D03*
|
||||
D23*
|
||||
X134750000Y-84750000D03*
|
||||
D22*
|
||||
X134750000Y-87150000D03*
|
||||
X133052944Y-83052944D03*
|
||||
X133052944Y-86447056D03*
|
||||
X132350000Y-84750000D03*
|
||||
%TD*%
|
||||
D20*
|
||||
%TO.C,U1*%
|
||||
X142380000Y-75870000D03*
|
||||
D26*
|
||||
X142380000Y-78410000D03*
|
||||
X142380000Y-80950000D03*
|
||||
X142380000Y-83490000D03*
|
||||
X142380000Y-86030000D03*
|
||||
X142380000Y-88570000D03*
|
||||
X142380000Y-91110000D03*
|
||||
X142380000Y-93650000D03*
|
||||
X142380000Y-96190000D03*
|
||||
X142380000Y-98730000D03*
|
||||
X142380000Y-101270000D03*
|
||||
X142380000Y-103810000D03*
|
||||
X142380000Y-106350000D03*
|
||||
X142380000Y-108890000D03*
|
||||
X142380000Y-111430000D03*
|
||||
X142380000Y-113970000D03*
|
||||
X142380000Y-116510000D03*
|
||||
X142380000Y-119050000D03*
|
||||
X142380000Y-121590000D03*
|
||||
X142380000Y-124130000D03*
|
||||
X157620000Y-124130000D03*
|
||||
X157620000Y-121590000D03*
|
||||
X157620000Y-119050000D03*
|
||||
X157620000Y-116510000D03*
|
||||
X157620000Y-113970000D03*
|
||||
X157620000Y-111430000D03*
|
||||
X157620000Y-108890000D03*
|
||||
X157620000Y-106350000D03*
|
||||
X157620000Y-103810000D03*
|
||||
X157620000Y-101270000D03*
|
||||
X157620000Y-98730000D03*
|
||||
X157620000Y-96190000D03*
|
||||
X157620000Y-93650000D03*
|
||||
X157620000Y-91110000D03*
|
||||
X157620000Y-88570000D03*
|
||||
X157620000Y-86030000D03*
|
||||
X157620000Y-83490000D03*
|
||||
X157620000Y-80950000D03*
|
||||
X157620000Y-78410000D03*
|
||||
X157620000Y-75870000D03*
|
||||
%TD*%
|
||||
D27*
|
||||
%TO.C,P2*%
|
||||
X162600000Y-91000000D03*
|
||||
D28*
|
||||
X161000000Y-91000000D03*
|
||||
X161000000Y-93000000D03*
|
||||
D27*
|
||||
X159400000Y-93000000D03*
|
||||
X162600000Y-95000000D03*
|
||||
D28*
|
||||
X161000000Y-95000000D03*
|
||||
X161000000Y-97000000D03*
|
||||
D27*
|
||||
X159400000Y-97000000D03*
|
||||
X162600000Y-99000000D03*
|
||||
D28*
|
||||
X161000000Y-99000000D03*
|
||||
X161000000Y-101000000D03*
|
||||
D27*
|
||||
X159400000Y-101000000D03*
|
||||
D28*
|
||||
X161000000Y-103000000D03*
|
||||
D27*
|
||||
X162600000Y-103000000D03*
|
||||
D28*
|
||||
X161000000Y-105000000D03*
|
||||
D27*
|
||||
X159400000Y-105000000D03*
|
||||
D28*
|
||||
X161000000Y-107000000D03*
|
||||
D27*
|
||||
X162600000Y-107000000D03*
|
||||
X159400000Y-109000000D03*
|
||||
D28*
|
||||
X161000000Y-109000000D03*
|
||||
%TD*%
|
||||
D27*
|
||||
%TO.C,P1*%
|
||||
X137400000Y-109000000D03*
|
||||
D28*
|
||||
X139000000Y-109000000D03*
|
||||
D27*
|
||||
X140600000Y-107000000D03*
|
||||
D28*
|
||||
X139000000Y-107000000D03*
|
||||
D27*
|
||||
X137400000Y-105000000D03*
|
||||
D28*
|
||||
X139000000Y-105000000D03*
|
||||
X139000000Y-103000000D03*
|
||||
D27*
|
||||
X140600000Y-103000000D03*
|
||||
D28*
|
||||
X139000000Y-101000000D03*
|
||||
D27*
|
||||
X137400000Y-101000000D03*
|
||||
D28*
|
||||
X139000000Y-99000000D03*
|
||||
D27*
|
||||
X140600000Y-99000000D03*
|
||||
X137400000Y-97000000D03*
|
||||
D28*
|
||||
X139000000Y-97000000D03*
|
||||
X139000000Y-95000000D03*
|
||||
D27*
|
||||
X140600000Y-95000000D03*
|
||||
D28*
|
||||
X139000000Y-93000000D03*
|
||||
D27*
|
||||
X137400000Y-93000000D03*
|
||||
D28*
|
||||
X139000000Y-91000000D03*
|
||||
D27*
|
||||
X140600000Y-91000000D03*
|
||||
%TD*%
|
||||
D29*
|
||||
%TO.C,IC1*%
|
||||
X164450000Y-121562500D03*
|
||||
X162550000Y-121562500D03*
|
||||
X163500000Y-123437500D03*
|
||||
%TD*%
|
||||
M02*
|
@ -1,144 +0,0 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.4)*%
|
||||
%TF.CreationDate,2022-08-11T15:59:35+02:00*%
|
||||
%TF.ProjectId,STM32_DJI_Gimbal,53544d33-325f-4444-9a49-5f47696d6261,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Top*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.4)) date 2022-08-11 15:59:35*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 Aperture macros list*
|
||||
%AMRoundRect*
|
||||
0 Rectangle with rounded corners*
|
||||
0 $1 Rounding radius*
|
||||
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
|
||||
0 Add a 4 corners polygon primitive as box body*
|
||||
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
|
||||
0 Add four circle primitives for the rounded corners*
|
||||
1,1,$1+$1,$2,$3*
|
||||
1,1,$1+$1,$4,$5*
|
||||
1,1,$1+$1,$6,$7*
|
||||
1,1,$1+$1,$8,$9*
|
||||
0 Add four rect primitives between the rounded corners*
|
||||
20,1,$1+$1,$2,$3,$4,$5,0*
|
||||
20,1,$1+$1,$4,$5,$6,$7,0*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10R,1.600000X0.410000*%
|
||||
%ADD11RoundRect,0.135000X0.135000X0.185000X-0.135000X0.185000X-0.135000X-0.185000X0.135000X-0.185000X0*%
|
||||
%ADD12RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||
%ADD13R,0.800000X2.700000*%
|
||||
%ADD14R,0.700000X0.600000*%
|
||||
%ADD15RoundRect,0.225000X0.250000X-0.225000X0.250000X0.225000X-0.250000X0.225000X-0.250000X-0.225000X0*%
|
||||
%ADD16RoundRect,0.250000X-0.787500X-0.925000X0.787500X-0.925000X0.787500X0.925000X-0.787500X0.925000X0*%
|
||||
%ADD17RoundRect,0.250000X0.787500X0.925000X-0.787500X0.925000X-0.787500X-0.925000X0.787500X-0.925000X0*%
|
||||
%ADD18RoundRect,0.225000X-0.225000X-0.250000X0.225000X-0.250000X0.225000X0.250000X-0.225000X0.250000X0*%
|
||||
%ADD19RoundRect,0.225000X0.225000X0.250000X-0.225000X0.250000X-0.225000X-0.250000X0.225000X-0.250000X0*%
|
||||
%ADD20R,1.500000X1.000000*%
|
||||
%ADD21RoundRect,0.150000X-0.150000X0.587500X-0.150000X-0.587500X0.150000X-0.587500X0.150000X0.587500X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,U2*%
|
||||
X155808600Y-132115000D03*
|
||||
X155808600Y-132750000D03*
|
||||
X155808600Y-133385000D03*
|
||||
X155808600Y-134020000D03*
|
||||
X155808600Y-134655000D03*
|
||||
X155808600Y-135290000D03*
|
||||
X155808600Y-135925000D03*
|
||||
X155808600Y-136560000D03*
|
||||
X150500000Y-136560000D03*
|
||||
X150500000Y-135925000D03*
|
||||
X150500000Y-135290000D03*
|
||||
X150500000Y-134655000D03*
|
||||
X150500000Y-134020000D03*
|
||||
X150500000Y-133385000D03*
|
||||
X150500000Y-132750000D03*
|
||||
X150500000Y-132115000D03*
|
||||
%TD*%
|
||||
D11*
|
||||
%TO.C,R3*%
|
||||
X148914300Y-134000000D03*
|
||||
X147894300Y-134000000D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.C,R2*%
|
||||
X147894300Y-135087500D03*
|
||||
X148914300Y-135087500D03*
|
||||
%TD*%
|
||||
%TO.C,R1*%
|
||||
X148846000Y-136250000D03*
|
||||
X147826000Y-136250000D03*
|
||||
%TD*%
|
||||
D13*
|
||||
%TO.C,L1*%
|
||||
X151650000Y-129500000D03*
|
||||
X153850000Y-129500000D03*
|
||||
%TD*%
|
||||
D14*
|
||||
%TO.C,D1*%
|
||||
X157800000Y-132900000D03*
|
||||
X157800000Y-131500000D03*
|
||||
%TD*%
|
||||
D15*
|
||||
%TO.C,C5*%
|
||||
X143750000Y-140275000D03*
|
||||
X143750000Y-138725000D03*
|
||||
%TD*%
|
||||
D16*
|
||||
%TO.C,C4*%
|
||||
X160962500Y-129000000D03*
|
||||
X156037500Y-129000000D03*
|
||||
%TD*%
|
||||
D17*
|
||||
%TO.C,C3*%
|
||||
X148962500Y-129337500D03*
|
||||
X144037500Y-129337500D03*
|
||||
%TD*%
|
||||
D18*
|
||||
%TO.C,C2*%
|
||||
X152379300Y-137837500D03*
|
||||
X153929300Y-137837500D03*
|
||||
%TD*%
|
||||
D19*
|
||||
%TO.C,C1*%
|
||||
X148679300Y-132837500D03*
|
||||
X147129300Y-132837500D03*
|
||||
%TD*%
|
||||
D20*
|
||||
%TO.C,P2*%
|
||||
X162600000Y-91000000D03*
|
||||
X159400000Y-93000000D03*
|
||||
X162600000Y-95000000D03*
|
||||
X159400000Y-97000000D03*
|
||||
X162600000Y-99000000D03*
|
||||
X159400000Y-101000000D03*
|
||||
X162600000Y-103000000D03*
|
||||
X159400000Y-105000000D03*
|
||||
X162600000Y-107000000D03*
|
||||
X159400000Y-109000000D03*
|
||||
%TD*%
|
||||
%TO.C,P1*%
|
||||
X137400000Y-109000000D03*
|
||||
X140600000Y-107000000D03*
|
||||
X137400000Y-105000000D03*
|
||||
X140600000Y-103000000D03*
|
||||
X137400000Y-101000000D03*
|
||||
X140600000Y-99000000D03*
|
||||
X137400000Y-97000000D03*
|
||||
X140600000Y-95000000D03*
|
||||
X137400000Y-93000000D03*
|
||||
X140600000Y-91000000D03*
|
||||
%TD*%
|
||||
D21*
|
||||
%TO.C,IC1*%
|
||||
X164450000Y-121562500D03*
|
||||
X162550000Y-121562500D03*
|
||||
X163500000Y-123437500D03*
|
||||
%TD*%
|
||||
M02*
|
File diff suppressed because it is too large
Load Diff
@ -1,13 +0,0 @@
|
||||
M48
|
||||
; DRILL file {KiCad (6.0.4)} date Thu Aug 11 15:56:58 2022
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2022-08-11T15:56:58+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.4)
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
INCH
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T0
|
||||
M30
|
@ -1,201 +0,0 @@
|
||||
M48
|
||||
; DRILL file {KiCad (6.0.4)} date Thu Aug 11 15:56:58 2022
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2022-08-11T15:56:58+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.4)
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
INCH
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T1C0.0157
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T2C0.0157
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T3C0.0197
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T4C0.0315
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T5C0.0394
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T6C0.0866
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T7C0.1260
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X5.3268Y-3.0669
|
||||
X5.3268Y-3.5394
|
||||
X5.3268Y-3.8543
|
||||
X5.3268Y-4.8386
|
||||
X5.3307Y-5.2598
|
||||
X5.46Y-4.44
|
||||
X5.4921Y-5.4764
|
||||
X5.5315Y-5.5807
|
||||
X5.5512Y-5.4724
|
||||
X5.5709Y-5.5807
|
||||
X5.6Y-5.03
|
||||
X5.6Y-5.15
|
||||
X5.6181Y-5.4921
|
||||
X5.622Y-5.8465
|
||||
X5.6772Y-5.2756
|
||||
X5.7106Y-3.4902
|
||||
X5.7106Y-4.2185
|
||||
X5.7598Y-2.9488
|
||||
X5.79Y-5.17
|
||||
X5.84Y-4.99
|
||||
X5.8661Y-5.4567
|
||||
X5.87Y-5.59
|
||||
X5.9291Y-3.811
|
||||
X5.96Y-3.48
|
||||
X6.0039Y-5.2854
|
||||
X6.0079Y-3.9055
|
||||
X6.0079Y-3.9882
|
||||
X6.0079Y-4.0906
|
||||
X6.0079Y-4.185
|
||||
X6.0079Y-4.2874
|
||||
X6.0079Y-4.3858
|
||||
X6.0138Y-5.0787
|
||||
X6.0748Y-2.9488
|
||||
X6.1142Y-5.8465
|
||||
X6.1417Y-4.0394
|
||||
X6.1417Y-4.1417
|
||||
X6.1417Y-5.1732
|
||||
X6.1811Y-5.502
|
||||
X6.2106Y-5.3445
|
||||
X6.2992Y-4.8898
|
||||
X6.3386Y-5.5118
|
||||
X6.45Y-2.97
|
||||
X6.4685Y-3.5
|
||||
X6.4685Y-4.3661
|
||||
X6.4685Y-4.7205
|
||||
X6.5079Y-5.311
|
||||
X6.5079Y-5.5669
|
||||
X6.5079Y-5.8465
|
||||
X6.8701Y-5.4331
|
||||
X6.8701Y-5.8268
|
||||
X6.8898Y-5.6299
|
||||
T2
|
||||
X6.6673Y-5.4921
|
||||
X6.6673Y-5.7677
|
||||
X6.6863Y-5.4462
|
||||
X6.6863Y-5.5381
|
||||
X6.6863Y-5.7218
|
||||
X6.6863Y-5.8137
|
||||
X6.7323Y-5.4272
|
||||
X6.7323Y-5.5571
|
||||
X6.7323Y-5.7028
|
||||
X6.7323Y-5.8327
|
||||
X6.7782Y-5.4462
|
||||
X6.7782Y-5.5381
|
||||
X6.7782Y-5.7218
|
||||
X6.7782Y-5.8137
|
||||
X6.7972Y-5.4921
|
||||
X6.7972Y-5.7677
|
||||
T3
|
||||
X5.2106Y-3.3366
|
||||
X5.2106Y-4.5374
|
||||
X5.2383Y-3.2698
|
||||
X5.2383Y-3.4034
|
||||
X5.2383Y-4.4706
|
||||
X5.2383Y-4.6042
|
||||
X5.3051Y-3.2421
|
||||
X5.3051Y-3.4311
|
||||
X5.3051Y-4.4429
|
||||
X5.3051Y-4.6319
|
||||
X5.3719Y-3.2698
|
||||
X5.3719Y-3.4034
|
||||
X5.3719Y-4.4706
|
||||
X5.3719Y-4.6042
|
||||
X5.3996Y-3.3366
|
||||
X5.3996Y-4.5374
|
||||
X6.4114Y-3.3366
|
||||
X6.4114Y-4.5374
|
||||
X6.4391Y-3.2698
|
||||
X6.4391Y-3.4034
|
||||
X6.4391Y-4.4706
|
||||
X6.4391Y-4.6042
|
||||
X6.5059Y-3.2421
|
||||
X6.5059Y-3.4311
|
||||
X6.5059Y-4.4429
|
||||
X6.5059Y-4.6319
|
||||
X6.5727Y-3.2698
|
||||
X6.5727Y-3.4034
|
||||
X6.5727Y-4.4706
|
||||
X6.5727Y-4.6042
|
||||
X6.6004Y-3.3366
|
||||
X6.6004Y-4.5374
|
||||
T4
|
||||
X5.4724Y-3.5827
|
||||
X5.4724Y-3.6614
|
||||
X5.4724Y-3.7402
|
||||
X5.4724Y-3.8189
|
||||
X5.4724Y-3.8976
|
||||
X5.4724Y-3.9764
|
||||
X5.4724Y-4.0551
|
||||
X5.4724Y-4.1339
|
||||
X5.4724Y-4.2126
|
||||
X5.4724Y-4.2913
|
||||
X6.3386Y-3.5827
|
||||
X6.3386Y-3.6614
|
||||
X6.3386Y-3.7402
|
||||
X6.3386Y-3.8189
|
||||
X6.3386Y-3.8976
|
||||
X6.3386Y-3.9764
|
||||
X6.3386Y-4.0551
|
||||
X6.3386Y-4.1339
|
||||
X6.3386Y-4.2126
|
||||
X6.3386Y-4.2913
|
||||
T5
|
||||
X5.6055Y-2.987
|
||||
X5.6055Y-3.087
|
||||
X5.6055Y-3.187
|
||||
X5.6055Y-3.287
|
||||
X5.6055Y-3.387
|
||||
X5.6055Y-3.487
|
||||
X5.6055Y-3.587
|
||||
X5.6055Y-3.687
|
||||
X5.6055Y-3.787
|
||||
X5.6055Y-3.887
|
||||
X5.6055Y-3.987
|
||||
X5.6055Y-4.087
|
||||
X5.6055Y-4.187
|
||||
X5.6055Y-4.287
|
||||
X5.6055Y-4.387
|
||||
X5.6055Y-4.487
|
||||
X5.6055Y-4.587
|
||||
X5.6055Y-4.687
|
||||
X5.6055Y-4.787
|
||||
X5.6055Y-4.887
|
||||
X6.2055Y-2.987
|
||||
X6.2055Y-3.087
|
||||
X6.2055Y-3.187
|
||||
X6.2055Y-3.287
|
||||
X6.2055Y-3.387
|
||||
X6.2055Y-3.487
|
||||
X6.2055Y-3.587
|
||||
X6.2055Y-3.687
|
||||
X6.2055Y-3.787
|
||||
X6.2055Y-3.887
|
||||
X6.2055Y-3.987
|
||||
X6.2055Y-4.087
|
||||
X6.2055Y-4.187
|
||||
X6.2055Y-4.287
|
||||
X6.2055Y-4.387
|
||||
X6.2055Y-4.487
|
||||
X6.2055Y-4.587
|
||||
X6.2055Y-4.687
|
||||
X6.2055Y-4.787
|
||||
X6.2055Y-4.887
|
||||
X6.4567Y-5.0049
|
||||
X6.4567Y-5.1049
|
||||
T6
|
||||
X6.7323Y-5.4921
|
||||
X6.7323Y-5.7677
|
||||
T7
|
||||
X5.3051Y-3.3366
|
||||
X5.3051Y-4.5374
|
||||
X6.5059Y-3.3366
|
||||
X6.5059Y-4.5374
|
||||
T0
|
||||
M30
|
@ -1,127 +0,0 @@
|
||||
{
|
||||
"Header": {
|
||||
"GenerationSoftware": {
|
||||
"Vendor": "KiCad",
|
||||
"Application": "Pcbnew",
|
||||
"Version": "(6.0.4)"
|
||||
},
|
||||
"CreationDate": "2022-08-11T15:59:35+02:00"
|
||||
},
|
||||
"GeneralSpecs": {
|
||||
"ProjectId": {
|
||||
"Name": "STM32_DJI_Gimbal",
|
||||
"GUID": "53544d33-325f-4444-9a49-5f47696d6261",
|
||||
"Revision": "rev?"
|
||||
},
|
||||
"Size": {
|
||||
"X": 45.0,
|
||||
"Y": 76.25
|
||||
},
|
||||
"LayerNumber": 2,
|
||||
"BoardThickness": 1.6,
|
||||
"Finish": "None"
|
||||
},
|
||||
"DesignRules": [
|
||||
{
|
||||
"Layers": "Outer",
|
||||
"PadToPad": 0.15,
|
||||
"PadToTrack": 0.15,
|
||||
"TrackToTrack": 0.15,
|
||||
"MinLineWidth": 0.2,
|
||||
"TrackToRegion": 0.25,
|
||||
"RegionToRegion": 0.25
|
||||
}
|
||||
],
|
||||
"FilesAttributes": [
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-F_Cu.gbr",
|
||||
"FileFunction": "Copper,L1,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-B_Cu.gbr",
|
||||
"FileFunction": "Copper,L2,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-F_Paste.gbr",
|
||||
"FileFunction": "SolderPaste,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-B_Paste.gbr",
|
||||
"FileFunction": "SolderPaste,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-F_Silkscreen.gbr",
|
||||
"FileFunction": "Legend,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-B_Silkscreen.gbr",
|
||||
"FileFunction": "Legend,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-F_Mask.gbr",
|
||||
"FileFunction": "SolderMask,Top",
|
||||
"FilePolarity": "Negative"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-B_Mask.gbr",
|
||||
"FileFunction": "SolderMask,Bot",
|
||||
"FilePolarity": "Negative"
|
||||
},
|
||||
{
|
||||
"Path": "STM32_DJI_Gimbal-Edge_Cuts.gbr",
|
||||
"FileFunction": "Profile",
|
||||
"FilePolarity": "Positive"
|
||||
}
|
||||
],
|
||||
"MaterialStackup": [
|
||||
{
|
||||
"Type": "Legend",
|
||||
"Name": "Top Silk Screen"
|
||||
},
|
||||
{
|
||||
"Type": "SolderPaste",
|
||||
"Name": "Top Solder Paste"
|
||||
},
|
||||
{
|
||||
"Type": "SolderMask",
|
||||
"Thickness": 0.01,
|
||||
"Name": "Top Solder Mask"
|
||||
},
|
||||
{
|
||||
"Type": "Copper",
|
||||
"Thickness": 0.035,
|
||||
"Name": "F.Cu"
|
||||
},
|
||||
{
|
||||
"Type": "Dielectric",
|
||||
"Thickness": 1.51,
|
||||
"Material": "FR4",
|
||||
"Name": "F.Cu/B.Cu",
|
||||
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
|
||||
},
|
||||
{
|
||||
"Type": "Copper",
|
||||
"Thickness": 0.035,
|
||||
"Name": "B.Cu"
|
||||
},
|
||||
{
|
||||
"Type": "SolderMask",
|
||||
"Thickness": 0.01,
|
||||
"Name": "Bottom Solder Mask"
|
||||
},
|
||||
{
|
||||
"Type": "SolderPaste",
|
||||
"Name": "Bottom Solder Paste"
|
||||
},
|
||||
{
|
||||
"Type": "Legend",
|
||||
"Name": "Bottom Silk Screen"
|
||||
}
|
||||
]
|
||||
}
|
BIN
Kicad/STM32_DJI_Gimbal/Gerber/STM32_DJI_Gimbal_Transmitter.zip
Normal file
BIN
Kicad/STM32_DJI_Gimbal/Gerber/STM32_DJI_Gimbal_Transmitter.zip
Normal file
Binary file not shown.
BIN
Kicad/STM32_DJI_Gimbal/Gerber/STM32_DJI_Gimbal_V2.0.zip
Normal file
BIN
Kicad/STM32_DJI_Gimbal/Gerber/STM32_DJI_Gimbal_V2.0.zip
Normal file
Binary file not shown.
@ -445,19 +445,19 @@ $SKPOLY
|
||||
9
|
||||
$TDCREATE
|
||||
40
|
||||
2459786.689388692
|
||||
2459860.72133081
|
||||
9
|
||||
$TDUCREATE
|
||||
40
|
||||
2459786.606055359
|
||||
2459860.637997477
|
||||
9
|
||||
$TDUPDATE
|
||||
40
|
||||
2459786.689427303
|
||||
2459860.721388206
|
||||
9
|
||||
$TDUUPDATE
|
||||
40
|
||||
2459786.60609397
|
||||
2459860.638054873
|
||||
9
|
||||
$TDINDWG
|
||||
40
|
||||
@ -505,7 +505,7 @@ $SPLINESEGS
|
||||
9
|
||||
$HANDSEED
|
||||
5
|
||||
C8
|
||||
CC
|
||||
9
|
||||
$SURFTAB1
|
||||
70
|
||||
@ -885,7 +885,7 @@ $PSTYLEMODE
|
||||
9
|
||||
$FINGERPRINTGUID
|
||||
2
|
||||
{89ba04fc-ac94-4044-8963-20492f950a77}
|
||||
{2329590a-49b4-444d-ac96-2db2d5f6239a}
|
||||
9
|
||||
$VERSIONGUID
|
||||
2
|
||||
@ -1871,7 +1871,7 @@ AcDbCircle
|
||||
0
|
||||
CIRCLE
|
||||
5
|
||||
94
|
||||
92
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -1897,7 +1897,7 @@ AcDbCircle
|
||||
0
|
||||
CIRCLE
|
||||
5
|
||||
95
|
||||
93
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -1923,7 +1923,7 @@ AcDbCircle
|
||||
0
|
||||
CIRCLE
|
||||
5
|
||||
96
|
||||
94
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -1949,7 +1949,7 @@ AcDbCircle
|
||||
0
|
||||
CIRCLE
|
||||
5
|
||||
97
|
||||
95
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -1975,7 +1975,7 @@ AcDbCircle
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A0
|
||||
A2
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -1991,7 +1991,7 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
-6.3205080757
|
||||
-6.0
|
||||
20
|
||||
-49.5
|
||||
30
|
||||
@ -2005,7 +2005,7 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A1
|
||||
A3
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2029,13 +2029,13 @@ AcDbLine
|
||||
11
|
||||
-16.0
|
||||
21
|
||||
-39.6850454238
|
||||
-39.5
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A2
|
||||
A4
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2065,7 +2065,7 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A3
|
||||
A5
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2095,7 +2095,7 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A4
|
||||
A6
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2125,7 +2125,7 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A5
|
||||
A7
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2155,7 +2155,7 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A6
|
||||
A8
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2185,66 +2185,6 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A7
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
16.0
|
||||
20
|
||||
-31.3038475773
|
||||
30
|
||||
0.0
|
||||
11
|
||||
16.0
|
||||
21
|
||||
-20.5591901454
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A8
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
20.0717967697
|
||||
20
|
||||
-35.9641016151
|
||||
30
|
||||
0.0
|
||||
11
|
||||
18.0
|
||||
21
|
||||
-34.7679491924
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
A9
|
||||
330
|
||||
1F
|
||||
@ -2261,15 +2201,15 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
24.0
|
||||
16.0
|
||||
20
|
||||
-36.5
|
||||
-29.5717967697
|
||||
30
|
||||
0.0
|
||||
11
|
||||
22.0717967697
|
||||
16.0
|
||||
21
|
||||
-36.5
|
||||
-20.5591901454
|
||||
31
|
||||
0.0
|
||||
0
|
||||
@ -2289,6 +2229,36 @@ Continuous
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
23.3305466007
|
||||
20
|
||||
-36.1134908997
|
||||
30
|
||||
0.0
|
||||
11
|
||||
18.0
|
||||
21
|
||||
-33.0358983849
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
AB
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
26.0
|
||||
@ -2305,36 +2275,6 @@ AcDbLine
|
||||
0
|
||||
LINE
|
||||
5
|
||||
AB
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
19.5
|
||||
20
|
||||
-46.0
|
||||
30
|
||||
0.0
|
||||
11
|
||||
19.5
|
||||
21
|
||||
-40.0
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
AC
|
||||
330
|
||||
1F
|
||||
@ -2351,15 +2291,15 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
17.5
|
||||
19.5
|
||||
20
|
||||
-40.0
|
||||
-45.5
|
||||
30
|
||||
0.0
|
||||
11
|
||||
17.5
|
||||
19.5
|
||||
21
|
||||
-46.0
|
||||
-40.5
|
||||
31
|
||||
0.0
|
||||
0
|
||||
@ -2381,15 +2321,15 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
-1.5
|
||||
17.5
|
||||
20
|
||||
-40.5
|
||||
30
|
||||
0.0
|
||||
11
|
||||
-11.5
|
||||
17.5
|
||||
21
|
||||
-40.5
|
||||
-45.5
|
||||
31
|
||||
0.0
|
||||
0
|
||||
@ -2411,15 +2351,15 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
-11.5
|
||||
2.5
|
||||
20
|
||||
-40.5
|
||||
-46.5
|
||||
30
|
||||
0.0
|
||||
11
|
||||
-11.5
|
||||
2.5
|
||||
21
|
||||
-43.0
|
||||
-41.5
|
||||
31
|
||||
0.0
|
||||
0
|
||||
@ -2441,15 +2381,15 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
-11.5
|
||||
0.5
|
||||
20
|
||||
-43.0
|
||||
-41.5
|
||||
30
|
||||
0.0
|
||||
11
|
||||
-1.5
|
||||
0.5
|
||||
21
|
||||
-43.0
|
||||
-46.5
|
||||
31
|
||||
0.0
|
||||
0
|
||||
@ -2471,13 +2411,103 @@ Continuous
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
-1.5
|
||||
15.0
|
||||
20
|
||||
-40.5
|
||||
30
|
||||
0.0
|
||||
11
|
||||
5.0
|
||||
21
|
||||
-40.5
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
B1
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
5.0
|
||||
20
|
||||
-40.5
|
||||
30
|
||||
0.0
|
||||
11
|
||||
5.0
|
||||
21
|
||||
-43.0
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
B2
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
5.0
|
||||
20
|
||||
-43.0
|
||||
30
|
||||
0.0
|
||||
11
|
||||
-1.5
|
||||
15.0
|
||||
21
|
||||
-43.0
|
||||
31
|
||||
0.0
|
||||
0
|
||||
LINE
|
||||
5
|
||||
B3
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbLine
|
||||
10
|
||||
15.0
|
||||
20
|
||||
-43.0
|
||||
30
|
||||
0.0
|
||||
11
|
||||
15.0
|
||||
21
|
||||
-40.5
|
||||
31
|
||||
@ -2485,7 +2515,7 @@ AcDbLine
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B1
|
||||
B4
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2517,39 +2547,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B2
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbCircle
|
||||
10
|
||||
-6.3205080757
|
||||
20
|
||||
-39.5
|
||||
30
|
||||
0.0
|
||||
40
|
||||
9.999999999999883
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
241.0602926965
|
||||
51
|
||||
270.0
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B3
|
||||
B5
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2567,21 +2565,21 @@ AcDbCircle
|
||||
10
|
||||
-6.0
|
||||
20
|
||||
-39.6850454238
|
||||
-39.5
|
||||
30
|
||||
0.0
|
||||
40
|
||||
10.0
|
||||
9.999999999999972
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
180.0
|
||||
51
|
||||
238.9397073035
|
||||
270.0
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B4
|
||||
B6
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2613,7 +2611,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B5
|
||||
B7
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2645,7 +2643,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B6
|
||||
B8
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2677,7 +2675,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B7
|
||||
B9
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2709,7 +2707,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B8
|
||||
BA
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2741,7 +2739,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
B9
|
||||
BB
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2763,7 +2761,7 @@ AcDbCircle
|
||||
30
|
||||
0.0
|
||||
40
|
||||
2.999999999999979
|
||||
2.999999999999986
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
@ -2773,7 +2771,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
BA
|
||||
BC
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2795,7 +2793,7 @@ AcDbCircle
|
||||
30
|
||||
0.0
|
||||
40
|
||||
3.000000000000005
|
||||
3.0
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
@ -2805,7 +2803,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
BB
|
||||
BD
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2827,7 +2825,7 @@ AcDbCircle
|
||||
30
|
||||
0.0
|
||||
40
|
||||
3.000000000000007
|
||||
2.999999999999996
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
@ -2837,7 +2835,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
BC
|
||||
BE
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2859,7 +2857,7 @@ AcDbCircle
|
||||
30
|
||||
0.0
|
||||
40
|
||||
2.999999999999986
|
||||
2.999999999999982
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
@ -2869,7 +2867,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
BD
|
||||
BF
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2901,7 +2899,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
BE
|
||||
C0
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2933,7 +2931,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
BF
|
||||
C1
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2965,7 +2963,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C0
|
||||
C2
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -2997,7 +2995,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C1
|
||||
C3
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -3029,7 +3027,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C2
|
||||
C4
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -3047,11 +3045,11 @@ AcDbCircle
|
||||
10
|
||||
20.0
|
||||
20
|
||||
-31.3038475773
|
||||
-29.5717967697
|
||||
30
|
||||
0.0
|
||||
40
|
||||
4.000000000000004
|
||||
3.999999999999989
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
@ -3061,7 +3059,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C3
|
||||
C5
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -3077,23 +3075,23 @@ Continuous
|
||||
100
|
||||
AcDbCircle
|
||||
10
|
||||
22.0717967697
|
||||
25.3305466007
|
||||
20
|
||||
-32.5
|
||||
-32.6493892846
|
||||
30
|
||||
0.0
|
||||
40
|
||||
3.999999999999886
|
||||
3.999999999999445
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
240.0
|
||||
51
|
||||
270.0
|
||||
257.1877039013
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C4
|
||||
C6
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -3115,17 +3113,17 @@ AcDbCircle
|
||||
30
|
||||
0.0
|
||||
40
|
||||
2.000000000000004
|
||||
2.000000000000007
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
0.0
|
||||
51
|
||||
90.0
|
||||
77.1877039013
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C5
|
||||
C7
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -3143,7 +3141,7 @@ AcDbCircle
|
||||
10
|
||||
18.5
|
||||
20
|
||||
-40.0
|
||||
-40.5
|
||||
30
|
||||
0.0
|
||||
40
|
||||
@ -3157,7 +3155,7 @@ AcDbArc
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C6
|
||||
C8
|
||||
330
|
||||
1F
|
||||
100
|
||||
@ -3175,12 +3173,76 @@ AcDbCircle
|
||||
10
|
||||
18.5
|
||||
20
|
||||
-46.0
|
||||
-45.5
|
||||
30
|
||||
0.0
|
||||
40
|
||||
1.0
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
180.0
|
||||
51
|
||||
0.0
|
||||
0
|
||||
ARC
|
||||
5
|
||||
C9
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbCircle
|
||||
10
|
||||
1.5
|
||||
20
|
||||
-41.5
|
||||
30
|
||||
0.0
|
||||
40
|
||||
1.000000000000001
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
0.0
|
||||
51
|
||||
180.0
|
||||
0
|
||||
ARC
|
||||
5
|
||||
CA
|
||||
330
|
||||
1F
|
||||
100
|
||||
AcDbEntity
|
||||
8
|
||||
0
|
||||
6
|
||||
Continuous
|
||||
62
|
||||
7
|
||||
370
|
||||
25
|
||||
100
|
||||
AcDbCircle
|
||||
10
|
||||
1.5
|
||||
20
|
||||
-46.5
|
||||
30
|
||||
0.0
|
||||
40
|
||||
1.000000000000002
|
||||
100
|
||||
AcDbArc
|
||||
50
|
||||
180.0
|
||||
@ -3229,7 +3291,7 @@ ACAD_SCALELIST
|
||||
3
|
||||
DWGPROPS
|
||||
350
|
||||
C7
|
||||
CB
|
||||
0
|
||||
DICTIONARY
|
||||
5
|
||||
@ -3485,7 +3547,7 @@ D2
|
||||
0
|
||||
XRECORD
|
||||
5
|
||||
C7
|
||||
CB
|
||||
102
|
||||
{ACAD_REACTORS
|
||||
330
|
||||
@ -3537,9 +3599,9 @@ lurenaud
|
||||
40
|
||||
0.0
|
||||
41
|
||||
2459786.606055359
|
||||
2459860.637997477
|
||||
42
|
||||
2459786.60609397
|
||||
2459860.638054873
|
||||
1
|
||||
|
||||
90
|
||||
|
@ -1,56 +1,25 @@
|
||||
"Source:","D:\lulu\Documents\Inria\DJI Gimbal\Kicad\STM32_DJI_Gimbal\STM32_DJI_Gimbal.kicad_sch"
|
||||
"Date:","11/08/2022 17:08:12"
|
||||
"Tool:","Eeschema (6.0.4)"
|
||||
"Generator:","C:\Program Files\KiCad\6.0\bin\scripting\plugins/bom_csv_grouped_by_value.py"
|
||||
"Component Count:","23"
|
||||
|
||||
"Individual Components:"
|
||||
|
||||
"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet","Description","Height","MFR","MPN","Manufacturer_Name","Manufacturer_Part_Number","Mouser Part Number","Mouser Price/Stock"
|
||||
"","","C1","220n","Device:C","Capacitor_SMD:C_0603_1608Metric","~","","","Yageo","CC0603KRX7R6BB224","","","",""
|
||||
"","","C2","1u","Device:C","Capacitor_SMD:C_0603_1608Metric","~","","","Yageo","CC0603ZRY5V7BB105","","","",""
|
||||
"","","C3","47u","Device:C_Polarized","Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C","~","","","AVX","TPSC476K010T0350 ","","","",""
|
||||
"","","C4","220u","Device:C_Polarized","Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C","~","","","AVX","TPSC227M006R0125","","","",""
|
||||
"","","C5","220n","Device:C","Capacitor_SMD:C_0603_1608Metric","~","","","Yageo","CC0603KRX7R6BB224","","","",""
|
||||
"","","D1","MBR0520","Diode:MBR0520","Diode_SMD:D_SOD-523","http://www.mccsemi.com/up_pdf/MBR0520~MBR0580(SOD123).pdf","","","Onsemi","NSR05T30XV2T5G ","","","",""
|
||||
"","","H1","M3","Mechanical:MountingHole","MountingHole:MountingHole_3.2mm_M3_Pad_Via","~","","","","","","","",""
|
||||
"","","H2","M3","Mechanical:MountingHole","MountingHole:MountingHole_3.2mm_M3_Pad_Via","~","","","","","","","",""
|
||||
"","","H3","CAM_M2","Mechanical:MountingHole","MountingHole:MountingHole_2.2mm_M2_Pad_Via","~","","","","","","","",""
|
||||
"","","H4","CAM_M2","Mechanical:MountingHole","MountingHole:MountingHole_2.2mm_M2_Pad_Via","~","","","","","","","",""
|
||||
"","","H5","M3","Mechanical:MountingHole","MountingHole:MountingHole_3.2mm_M3_Pad_Via","~","","","","","","","",""
|
||||
"","","H6","M3","Mechanical:MountingHole","MountingHole:MountingHole_3.2mm_M3_Pad_Via","~","","","","","","","",""
|
||||
"","","IC1","DS28E05R+T","DJI_Gimbal:DS28E05R+T","Package_TO_SOT_SMD:SOT-23","","","","","","","","",""
|
||||
"","","J1","BM20B_0.8_-34DS-0.4V_53_","DJI_Gimbal:BM20B_0.8_-34DS-0.4V_53_","DGI_Gimbal:BM20B0834DS04V53","https://www.hirose.com/en/product/document?clcode=CL0684-9020-0-53&productname=BM20B(0.8)-34DS-0.4V(53)&series=BM20&documenttype=2DDrawing&lang=en&documentid=0001372404","Board to Board & Mezzanine Connectors 34P DR RCP B2B/B2FPC 0.8mm H 0.4mm P VSMT","0.9","","","Hirose","BM20B(0.8)-34DS-0.4V(53)","798-BM20B0834DS04V53","https://www.mouser.co.uk/ProductDetail/Hirose-Connector/BM20B08-34DS-04V53?qs=AAveGqk956HKBDZ2sUIWMg%3D%3D"
|
||||
"","","J2","Conn_01x02","Connector_Generic:Conn_01x02","Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical","~","","","","","","","",""
|
||||
"","","L1","1.5uH","Device:L","Inductor_SMD:L_Taiyo-Yuden_NR-30xx","~","","","Taiyo\ Yuden","NR3015T1R5N ","","","",""
|
||||
"","","P1","CF_EXP_LEFT","DJI_Gimbal:CF_EXP_LEFT","DGI_Gimbal:BF090-10-X-B2","","","","","","","","",""
|
||||
"","","P2","CF_EXP_RIGHT","DJI_Gimbal:CF_EXP_RIGHT","DGI_Gimbal:BF090-10-X-B2","","","","","","","","",""
|
||||
"","","R1","4.7","Device:R","Resistor_SMD:R_0402_1005Metric","~","","","Yageo","AC0402FR-074R7L","","","",""
|
||||
"","","R2","82k","Device:R","Resistor_SMD:R_0402_1005Metric","~","","","Yageo","AC0402FR-0782KL ","","","",""
|
||||
"","","R3","27k","Device:R","Resistor_SMD:R_0402_1005Metric","~","","","Yageo","AC0402FR-0727KL ","","","",""
|
||||
"","","U1","WeAct_BlackPill_Part_Like","DJI_Gimbal:WeAct_BlackPill_Part_Like","DGI_Gimbal:YAAJ_WeAct_BlackPill_2","","","","","","","","",""
|
||||
"","","U2","MAX1763","DJI_Gimbal:MAX1763","Package_SO:QSOP-16_3.9x4.9mm_P0.635mm","https://datasheets.maximintegrated.com/en/ds/MAX1763.pdf","","","","","","","",""
|
||||
|
||||
|
||||
|
||||
"Collated Components:"
|
||||
|
||||
"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet","Description","Height","MFR","MPN","Manufacturer_Name","Manufacturer_Part_Number","Mouser Part Number","Mouser Price/Stock"
|
||||
"1","2","C1, C5","220n","Device:C","Capacitor_SMD:C_0603_1608Metric","~","","","Yageo","CC0603KRX7R6BB224","","","",""
|
||||
"2","1","C2","1u","Device:C","Capacitor_SMD:C_0603_1608Metric","~","","","Yageo","CC0603ZRY5V7BB105","","","",""
|
||||
"3","1","C3","47u","Device:C_Polarized","Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C","~","","","AVX","TPSC476K010T0350 ","","","",""
|
||||
"4","1","C4","220u","Device:C_Polarized","Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C","~","","","AVX","TPSC227M006R0125","","","",""
|
||||
"5","1","D1","MBR0520","Diode:MBR0520","Diode_SMD:D_SOD-523","http://www.mccsemi.com/up_pdf/MBR0520~MBR0580(SOD123).pdf","","","Onsemi","NSR05T30XV2T5G ","","","",""
|
||||
"6","4","H1, H2, H5, H6","M3","Mechanical:MountingHole","MountingHole:MountingHole_3.2mm_M3_Pad_Via","~","","","","","","","",""
|
||||
"7","2","H3, H4","CAM_M2","Mechanical:MountingHole","MountingHole:MountingHole_2.2mm_M2_Pad_Via","~","","","","","","","",""
|
||||
"8","1","IC1","DS28E05R+T","DJI_Gimbal:DS28E05R+T","Package_TO_SOT_SMD:SOT-23","","","","","","","","",""
|
||||
"9","1","J1","BM20B_0.8_-34DS-0.4V_53_","DJI_Gimbal:BM20B_0.8_-34DS-0.4V_53_","DGI_Gimbal:BM20B0834DS04V53","https://www.hirose.com/en/product/document?clcode=CL0684-9020-0-53&productname=BM20B(0.8)-34DS-0.4V(53)&series=BM20&documenttype=2DDrawing&lang=en&documentid=0001372404","Board to Board & Mezzanine Connectors 34P DR RCP B2B/B2FPC 0.8mm H 0.4mm P VSMT","0.9","","","Hirose","BM20B(0.8)-34DS-0.4V(53)","798-BM20B0834DS04V53","https://www.mouser.co.uk/ProductDetail/Hirose-Connector/BM20B08-34DS-04V53?qs=AAveGqk956HKBDZ2sUIWMg%3D%3D"
|
||||
"10","1","J2","Conn_01x02","Connector_Generic:Conn_01x02","Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical","~","","","","","","","",""
|
||||
"11","1","L1","1.5uH","Device:L","Inductor_SMD:L_Taiyo-Yuden_NR-30xx","~","","","Taiyo\ Yuden","NR3015T1R5N ","","","",""
|
||||
"12","1","P1","CF_EXP_LEFT","DJI_Gimbal:CF_EXP_LEFT","DGI_Gimbal:BF090-10-X-B2","","","","","","","","",""
|
||||
"13","1","P2","CF_EXP_RIGHT","DJI_Gimbal:CF_EXP_RIGHT","DGI_Gimbal:BF090-10-X-B2","","","","","","","","",""
|
||||
"14","1","R1","4.7","Device:R","Resistor_SMD:R_0402_1005Metric","~","","","Yageo","AC0402FR-074R7L","","","",""
|
||||
"15","1","R2","82k","Device:R","Resistor_SMD:R_0402_1005Metric","~","","","Yageo","AC0402FR-0782KL ","","","",""
|
||||
"16","1","R3","27k","Device:R","Resistor_SMD:R_0402_1005Metric","~","","","Yageo","AC0402FR-0727KL ","","","",""
|
||||
"17","1","U1","WeAct_BlackPill_Part_Like","DJI_Gimbal:WeAct_BlackPill_Part_Like","DGI_Gimbal:YAAJ_WeAct_BlackPill_2","","","","","","","","",""
|
||||
"18","1","U2","MAX1763","DJI_Gimbal:MAX1763","Package_SO:QSOP-16_3.9x4.9mm_P0.635mm","https://datasheets.maximintegrated.com/en/ds/MAX1763.pdf","","","","","","","",""
|
||||
Reference(s),Value,Footprint,DNP,MFR,MPN,Qty
|
||||
C1,47u,Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C,,AVX,TPSC476K010T0350 ,1
|
||||
"C2, C5",100n,Capacitor_SMD:C_0402_1005Metric,,Murata,GRM155R71A104KA01J,2
|
||||
"C3, C10",220n,Capacitor_SMD:C_0603_1608Metric,,Yageo,CC0603KRX7R6BB224,2
|
||||
C4,1u,Capacitor_SMD:C_0603_1608Metric,,Yageo,CC0603ZRY5V7BB105,1
|
||||
C6,8.2n,Capacitor_SMD:C_0402_1005Metric,,Murata,GRM155R71C822KA01D,1
|
||||
C7,27p,Capacitor_SMD:C_0402_1005Metric,,Murata,GRM1555C1H270JA01D,1
|
||||
C8,560p,Capacitor_SMD:C_0402_1005Metric,,Murata,GRM155R71H561KA01D,1
|
||||
C9,220u,Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C,,AVX,TPSC227M006R0125,1
|
||||
"H1, H2, H5, H6",M3,MountingHole:MountingHole_3.2mm_M3_Pad_Via,DNP,,,4
|
||||
"H3, H4",CAM_M2,MountingHole:MountingHole_2.2mm_M2_Pad_Via,DNP,,,2
|
||||
IC1,DS28E05R+T,Package_TO_SOT_SMD:SOT-23,,Maxim,DS28E05R+T ,1
|
||||
IC2,TPS61088RHLT,DGI_Gimbal:TPS61088,,Texas Instruments,TPS61088RHLT,1
|
||||
J1,BM20B_0.8_-34DS-0.4V_53_,DGI_Gimbal:BM20B0834DS04V53,,Hirose,BM20B(0.8)-34DS-0.4V(53),1
|
||||
J2,Conn_01x02,Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical,,Amphenol,10129378-910002BLF,1
|
||||
JP1,Jumper,Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm,DNP,,,1
|
||||
L1,1u,Inductor_SMD:L_Coilcraft_XxL4020,,Coilcraft,XAL4020-102MEC,1
|
||||
P1,CF_EXP_LEFT,DGI_Gimbal:BF090-10-X-B2,,,,1
|
||||
P2,CF_EXP_RIGHT,DGI_Gimbal:BF090-10-X-B2,,,,1
|
||||
R1,255k,Resistor_SMD:R_0402_1005Metric,,Vishay,CRCW0402255KFKED,1
|
||||
R2,133k,Resistor_SMD:R_0402_1005Metric,,Yageo,RC0402FR-07133KL,1
|
||||
R3,36.5k,Resistor_SMD:R_0402_1005Metric,,Yageo,AC0402FR-0736K5L,1
|
||||
R4,470k,Resistor_SMD:R_0402_1005Metric,,Yageo,RC0402FR-07470KL,1
|
||||
R5,97.6k,Resistor_SMD:R_0402_1005Metric,,Vishay,CRCW040297K6FKED,1
|
||||
U1,WeAct_BlackPill_Part_Like,DGI_Gimbal:YAAJ_WeAct_BlackPill_2,,,,1
|
||||
|
Can't render this file because it has a wrong number of fields in line 7.
|
File diff suppressed because it is too large
Load Diff
@ -10,7 +10,7 @@
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
"zones": 1.0
|
||||
},
|
||||
"ratsnest_display_mode": 0,
|
||||
"selection_filter": {
|
||||
@ -18,7 +18,7 @@
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
@ -63,7 +63,7 @@
|
||||
36
|
||||
],
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
"zone_display_mode": 1
|
||||
},
|
||||
"meta": {
|
||||
"filename": "STM32_DJI_Gimbal.kicad_prl",
|
||||
|
@ -381,7 +381,6 @@
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Power",
|
||||
"nets": [
|
||||
"+3V3",
|
||||
"+5V"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,3 @@
|
||||
(fp_lib_table
|
||||
(lib (name "DGI_Gimbal")(type "KiCad")(uri "${KIPRJMOD}/DGI_Gimbal.pretty")(options "")(descr ""))
|
||||
(lib (name "SamacSys_Parts")(type "KiCad")(uri "D:/lulu/Documents/Kicad/SamacSys_Parts.pretty")(options "")(descr ""))
|
||||
)
|
||||
|
@ -29,11 +29,11 @@ Connected directly to a MCU (here a STM32 Nucleo F401RE) and with the Simple FOC
|
||||
## Position estimation with the integrated linear hall sensors
|
||||
|
||||
### 1. Setup
|
||||
Each motor is composed of two ratiometric linear hall sensors. (Texas Instrument DRV5053 Analog-Bipolar Hall Effect Sensor) They are placed at around 120º from each other (eyes measured) and measure the magnetic field of the rotor.
|
||||
Each motor is composed of two linear hall sensors. (Texas Instrument DRV5053 Analog-Bipolar Hall Effect Sensor) They are placed at around 120º from each other (eyes measured) and measure the magnetic field of the rotor.
|
||||
|
||||
<img src="docs/Hallmotor.jpg" height=300>
|
||||
|
||||
Ratiometric means that the output signal is proportional to the voltage supply to the sensor. In this setup, with 5V supply, the output measured is between 520mV and 1.5V, so a 1V amplitude signal.
|
||||
They are linear sensor, the output voltage correspond to a magnetic fields, regardless of the voltage supplied. In our case the output signal is between 1V and 1.65V.
|
||||
|
||||
### 2. Measures
|
||||
|
||||
|
@ -1,98 +0,0 @@
|
||||
# DJI Gimbal Retro-Engineering
|
||||
|
||||
The aim of this project is to be able to use the 3-axis DJI gimbal with a custom open source controller. This high quality gimbal is very tiny and easy to find as replacement part which makes it very suitable for DIY projects.
|
||||
|
||||
## Description
|
||||
|
||||
todo
|
||||
|
||||
## Pinout identification
|
||||
The Gimbal is composed of a flex PCB with a main connector and 3 smaller for each motor. The main end connector is a 40-pin mezzanine board to board connectors. In order to work easily I have designed a breakout board which open to a 2.54" header.
|
||||
Here is the strategy I followed to find the pinout:
|
||||
1. Find all equipotential pins:
|
||||
With a multimeter set to continuity tests, and test all the combinations
|
||||
2. Group remaining pins by motor
|
||||
With the multimeter find all the pins connected to the motor connector. (Reapeat 3 times)
|
||||
3.
|
||||
|
||||
### Open-loop control
|
||||
|
||||
Each motor has its own drivers a MP6536. Which makes it easy as no additional hardware is necessary to drive the motors.
|
||||
There are 4 pins from the MP6536:
|
||||
1. PWM1
|
||||
2. PWM2
|
||||
3. PWM3
|
||||
4. Fault : Output. When low, indicates overtemperature, over-current, or under-voltage.
|
||||
|
||||
Connected directly to a MCU and with the Simple FOC Library, open-loop control works quite well. However due to open-loop control, it cannot know when a "step" is missed so misalignment can occur. Also, the motor tends to become quite hot due to the continuous current sent to the coils.
|
||||
|
||||
## Position estimation with the integrated linear hall sensors
|
||||
|
||||
### 1. Setup
|
||||
Each motor is composed of two ratiometric linear hall sensors. (Texas Instrument DRV5053 Analog-Bipolar Hall Effect Sensor) They are placed at around 120º from each other (eyes measured) and measure the magnetic field of the rotor.
|
||||
|
||||
![Photo of the stator](Hallmotor.jpg)
|
||||
|
||||
Ratiometric means that the output signal is proportional to the voltage supply to the sensor. In this setup, with 5V supply, the output measured is between 520mV and 1.5V, so a 1V amplitude.
|
||||
|
||||
### 2. Measures
|
||||
|
||||
These oscilloscope traces are the sensor output when rotating the rotor forth and back. (a bit less than 180º on the 3rd motor)
|
||||
The channel 0 (Yellow) is the Hall 1 and the Channel 1 (Green) is the Hall 2
|
||||
![hall sensors traces](courbes.png)
|
||||
|
||||
We can see that in the first movement (positive rotation), the green is out of phase of π/2.`
|
||||
|
||||
![Sinwave figure](cosSinEncoderDiagram.png)
|
||||
### 3. Encoding the position
|
||||
1. Get the absolute angle within a period
|
||||
|
||||
Since the 2 signals correspond to a cos and sin signals, it is possible to compute the angle inside the period using arctan2 function. However, we have more than one period, it is so necessary to increment a position.
|
||||
$$\theta= atan2(a,b)$$
|
||||
|
||||
2. Incremental position
|
||||
|
||||
To increment the position, it is necessary to start from 0 at a known postion. For that the motor is moved in open loop to one end and the position is set to 0.
|
||||
Then we need to sum all the delta of movement at each measure sample.
|
||||
$$\phi_t=\phi_{t-1} + (\theta_t - \theta_{t-1})mod(-\pi;\pi)$$
|
||||
|
||||
## Coding the solution
|
||||
1. Get the angle in the perdiod
|
||||
|
||||
In order to compute the angle from the cos and sin with atan, it is necessary to remap the values of the analog readings from -1 to 1.
|
||||
Beforehand, the maximum and minimum peak of the signals need to be found. It can be done by swiping the motor on startup in open-loop mode.
|
||||
Then the arctan function can be applied. It is preferable to use arctan2 as it will give an angle within the 4 quadrants (-π,π). Whereas arctan give an angle between (-π/2,π/2). [Wikipedia](https://en.wikipedia.org/wiki/Atan2)
|
||||
|
||||
```C++
|
||||
|
||||
float LinearHallSensor::Callback() // Return the estimated position of the sensor
|
||||
{
|
||||
A = norm(analogRead(CH1),minCh1, maxCh1); //read analog values and normalise between [-1;1]
|
||||
B = norm(analogRead(CH2),minCh2, maxCh2);
|
||||
|
||||
theta = atan2(A,B); // Compute the absolute angle in the period
|
||||
|
||||
phi = phi + dist_angle(theta, theta_prev); // increment the difference
|
||||
|
||||
theta_prev = theta; // save fot nex time
|
||||
|
||||
return phi;
|
||||
}
|
||||
|
||||
float norm(float x, float in_min, float in_max) //return the input value normalised between [-1;1]
|
||||
{
|
||||
return (float)(x + 1.0) * (2.0) / (float)(in_max - in_min) -1.0;
|
||||
}
|
||||
|
||||
float dist_angle(float newAngle, float prevAngle) // return the difference modulo [-pi;pi]
|
||||
{
|
||||
float diff = newAngle - prevAngle;
|
||||
while (diff < (-M_PI))
|
||||
diff += 2 * M_PI;
|
||||
while (diff > M_PI)
|
||||
diff -= 2 * M_PI;
|
||||
return diff;
|
||||
}
|
||||
|
||||
```
|
||||
|
@ -16,3 +16,21 @@ monitor_port = COM3
|
||||
monitor_speed = 115200
|
||||
lib_archive = no
|
||||
lib_deps = askuric/Simple FOC@^2.2.2
|
||||
|
||||
[env:Blackpill]
|
||||
platform = ststm32
|
||||
board = blackpill_f401cc
|
||||
upload_protocol = dfu
|
||||
framework = arduino
|
||||
lib_archive = no
|
||||
lib_deps =
|
||||
askuric/Simple FOC@^2.2.2
|
||||
Wire
|
||||
SPI
|
||||
monitor_port = COM5
|
||||
monitor_speed = 115200
|
||||
build_flags =
|
||||
-D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC
|
||||
-D USBCON
|
||||
; -D SIMPLEFOC_STM32_DEBUG
|
||||
monitor_dtr = 1
|
||||
|
43
pythonGUI/gimbal_gui.py
Normal file
43
pythonGUI/gimbal_gui.py
Normal file
@ -0,0 +1,43 @@
|
||||
import pygame
|
||||
import serial
|
||||
import time
|
||||
|
||||
ser = serial.Serial('COM5',115200, timeout=0.01)
|
||||
print(ser.name)
|
||||
|
||||
pygame.init()
|
||||
pygame.joystick.init()
|
||||
pad = pygame.joystick.Joystick(0)
|
||||
pad.init()
|
||||
print(pad.get_name())
|
||||
|
||||
def remap(x, in_min, in_max, out_min, out_max):
|
||||
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
|
||||
|
||||
|
||||
while(True):
|
||||
pygame.event.pump()
|
||||
|
||||
X_axis = round(pad.get_axis(2),4)
|
||||
Y_axis = round(pad.get_axis(3),4)
|
||||
Z_axis = round(pad.get_axis(0),4)
|
||||
|
||||
# print(f'Axis 2: {X_axis}\tAxis 3: {Y_axis} \tAxis 0: {Z_axis}')
|
||||
|
||||
X_axis = round(remap(X_axis,-1,1,0,1000))
|
||||
Y_axis = round(remap(Y_axis,-1,1,0,1000))
|
||||
Z_axis = round(remap(Z_axis,-1,1,0,1000))
|
||||
|
||||
# print(f'Axis X: {X_axis}\tAxis Y: {Y_axis} \tAxis Z: {Z_axis}')
|
||||
|
||||
|
||||
|
||||
ser.write(('X'+str(X_axis)+'\n').encode())
|
||||
ser.write(('Y'+str(Y_axis)+'\n').encode())
|
||||
ser.write(('Z'+str(Z_axis)+'\n').encode())
|
||||
|
||||
income = ser.readline()
|
||||
if (len(income)>0):
|
||||
print(income)
|
||||
|
||||
# time.sleep(0.1)
|
149
pythonGUI/joystickTest.py
Normal file
149
pythonGUI/joystickTest.py
Normal file
@ -0,0 +1,149 @@
|
||||
import pygame
|
||||
|
||||
pygame.init()
|
||||
# This is a simple class that will help us print to the screen.
|
||||
# It has nothing to do with the joysticks, just outputting the
|
||||
# information.
|
||||
class TextPrint:
|
||||
def __init__(self):
|
||||
self.reset()
|
||||
self.font = pygame.font.Font(None, 25)
|
||||
|
||||
def tprint(self, screen, text):
|
||||
text_bitmap = self.font.render(text, True, (0, 0, 0))
|
||||
screen.blit(text_bitmap, (self.x, self.y))
|
||||
self.y += self.line_height
|
||||
|
||||
def reset(self):
|
||||
self.x = 10
|
||||
self.y = 10
|
||||
self.line_height = 15
|
||||
|
||||
def indent(self):
|
||||
self.x += 10
|
||||
|
||||
def unindent(self):
|
||||
self.x -= 10
|
||||
|
||||
|
||||
def main():
|
||||
# Set the width and height of the screen (width, height), and name the window.
|
||||
screen = pygame.display.set_mode((500, 700))
|
||||
pygame.display.set_caption("Joystick example")
|
||||
|
||||
# Used to manage how fast the screen updates.
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
# Get ready to print.
|
||||
text_print = TextPrint()
|
||||
|
||||
# This dict can be left as-is, since pygame will generate a
|
||||
# pygame.JOYDEVICEADDED event for every joystick connected
|
||||
# at the start of the program.
|
||||
joysticks = {}
|
||||
|
||||
done = False
|
||||
while not done:
|
||||
# Event processing step.
|
||||
# Possible joystick events: JOYAXISMOTION, JOYBALLMOTION, JOYBUTTONDOWN,
|
||||
# JOYBUTTONUP, JOYHATMOTION, JOYDEVICEADDED, JOYDEVICEREMOVED
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
done = True # Flag that we are done so we exit this loop.
|
||||
|
||||
if event.type == pygame.JOYBUTTONDOWN:
|
||||
print("Joystick button pressed.")
|
||||
if event.button == 0:
|
||||
joystick = joysticks[event.instance_id]
|
||||
if joystick.rumble(0, 0.7, 500):
|
||||
print(f"Rumble effect played on joystick {event.instance_id}")
|
||||
|
||||
if event.type == pygame.JOYBUTTONUP:
|
||||
print("Joystick button released.")
|
||||
|
||||
# Handle hotplugging
|
||||
if event.type == pygame.JOYDEVICEADDED:
|
||||
# This event will be generated when the program starts for every
|
||||
# joystick, filling up the list without needing to create them manually.
|
||||
joy = pygame.joystick.Joystick(event.device_index)
|
||||
joysticks[joy.get_instance_id()] = joy
|
||||
print(f"Joystick {joy.get_instance_id()} connencted")
|
||||
|
||||
if event.type == pygame.JOYDEVICEREMOVED:
|
||||
del joysticks[event.instance_id]
|
||||
print(f"Joystick {event.instance_id} disconnected")
|
||||
|
||||
# Drawing step
|
||||
# First, clear the screen to white. Don't put other drawing commands
|
||||
# above this, or they will be erased with this command.
|
||||
screen.fill((255, 255, 255))
|
||||
text_print.reset()
|
||||
|
||||
# Get count of joysticks.
|
||||
joystick_count = pygame.joystick.get_count()
|
||||
|
||||
text_print.tprint(screen, f"Number of joysticks: {joystick_count}")
|
||||
text_print.indent()
|
||||
|
||||
# For each joystick:
|
||||
for joystick in joysticks.values():
|
||||
jid = joystick.get_instance_id()
|
||||
|
||||
text_print.tprint(screen, f"Joystick {jid}")
|
||||
text_print.indent()
|
||||
|
||||
# Get the name from the OS for the controller/joystick.
|
||||
name = joystick.get_name()
|
||||
text_print.tprint(screen, f"Joystick name: {name}")
|
||||
|
||||
guid = joystick.get_guid()
|
||||
text_print.tprint(screen, f"GUID: {guid}")
|
||||
|
||||
power_level = joystick.get_power_level()
|
||||
text_print.tprint(screen, f"Joystick's power level: {power_level}")
|
||||
|
||||
# Usually axis run in pairs, up/down for one, and left/right for
|
||||
# the other. Triggers count as axes.
|
||||
axes = joystick.get_numaxes()
|
||||
text_print.tprint(screen, f"Number of axes: {axes}")
|
||||
text_print.indent()
|
||||
|
||||
for i in range(axes):
|
||||
axis = joystick.get_axis(i)
|
||||
text_print.tprint(screen, f"Axis {i} value: {axis:>6.3f}")
|
||||
text_print.unindent()
|
||||
|
||||
buttons = joystick.get_numbuttons()
|
||||
text_print.tprint(screen, f"Number of buttons: {buttons}")
|
||||
text_print.indent()
|
||||
|
||||
for i in range(buttons):
|
||||
button = joystick.get_button(i)
|
||||
text_print.tprint(screen, f"Button {i:>2} value: {button}")
|
||||
text_print.unindent()
|
||||
|
||||
hats = joystick.get_numhats()
|
||||
text_print.tprint(screen, f"Number of hats: {hats}")
|
||||
text_print.indent()
|
||||
|
||||
# Hat position. All or nothing for direction, not a float like
|
||||
# get_axis(). Position is a tuple of int values (x, y).
|
||||
for i in range(hats):
|
||||
hat = joystick.get_hat(i)
|
||||
text_print.tprint(screen, f"Hat {i} value: {str(hat)}")
|
||||
text_print.unindent()
|
||||
|
||||
text_print.unindent()
|
||||
|
||||
# Go ahead and update the screen with what we've drawn.
|
||||
pygame.display.flip()
|
||||
|
||||
# Limit to 30 frames per second.
|
||||
clock.tick(30)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
# If you forget this line, the program will 'hang'
|
||||
# on exit if running from IDLE.
|
||||
pygame.quit()
|
BIN
requirements.txt
Normal file
BIN
requirements.txt
Normal file
Binary file not shown.
@ -1,16 +1,65 @@
|
||||
#include "linearHallSensor.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
float norm(float x, float in_min, float in_max, float out_min = -1.0, float out_max = 1.0)
|
||||
{
|
||||
return (float)(x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min;
|
||||
}
|
||||
|
||||
LinearHallSensor::LinearHallSensor(uint8_t ch1, uint8_t ch2, float minPos, float maxPos)
|
||||
LinearHallSensor::LinearHallSensor(uint8_t ch1, uint8_t ch2)
|
||||
{
|
||||
_analogPin1 = ch1;
|
||||
_analogPin2 = ch2;
|
||||
_minPositionEndValue = minPos;
|
||||
_maxPositionEndValue = maxPos;
|
||||
}
|
||||
|
||||
inline uint32_t min(uint32_t arr[], int n)
|
||||
{
|
||||
uint32_t m = 0;
|
||||
for (int i = 0; i < n; i++)
|
||||
m = arr[i] < m ? arr[i] : m;
|
||||
return m;
|
||||
}
|
||||
|
||||
inline uint32_t max(uint32_t *arr, int n)
|
||||
{
|
||||
uint32_t m = 0;
|
||||
for (int i = 0; i < n; i++)
|
||||
m = arr[i] > m ? arr[i] : m;
|
||||
return m;
|
||||
}
|
||||
|
||||
inline uint32_t mean(uint32_t *arr, int n)
|
||||
{
|
||||
uint32_t m = 0;
|
||||
for (int i = 0; i < n; i++)
|
||||
m += arr[i];
|
||||
return m / n;
|
||||
}
|
||||
|
||||
inline uint32_t std_var(uint32_t *arr, int n)
|
||||
{
|
||||
uint32_t s = 0;
|
||||
uint32_t m = mean(arr, n);
|
||||
for (int i = 0; i < n; i++)
|
||||
s += (arr[i] - m) * (arr[i] - m);
|
||||
s /= (uint32_t)n;
|
||||
s = sqrt(s);
|
||||
return s;
|
||||
}
|
||||
|
||||
void init_arr(uint32_t *arr, int n, uint32_t val)
|
||||
{
|
||||
for (int i = 0; i < n; i++)
|
||||
arr[i] = val;
|
||||
}
|
||||
|
||||
void print_arr(uint32_t *arr, int n)
|
||||
{
|
||||
Serial.printf("[");
|
||||
for (int i = 0; i < n; i++)
|
||||
Serial.printf("%lu,", arr[i]);
|
||||
Serial.printf("]");
|
||||
}
|
||||
|
||||
void LinearHallSensor::init(BLDCMotor motor)
|
||||
@ -18,81 +67,131 @@ void LinearHallSensor::init(BLDCMotor motor)
|
||||
MotionControlType prevController = motor.controller;
|
||||
motor.controller = MotionControlType::angle_openloop;
|
||||
float prevVoltageLimit = motor.voltage_limit;
|
||||
motor.voltage_limit = 0.8;
|
||||
motor.voltage_limit = 2.0;
|
||||
|
||||
uint32_t senseA = analogRead(_analogPin1);
|
||||
uint32_t senseB = analogRead(_analogPin2);
|
||||
// Swipe motor to search hard end and find max analog values of sensors
|
||||
bool endFound = false;
|
||||
const float step = 0.005;
|
||||
const uint8_t epsilon = 3;
|
||||
float currentPosition = 0.0;
|
||||
|
||||
_minCh1 = senseA;
|
||||
_maxCh1 = senseA;
|
||||
_minCh2 = senseB;
|
||||
_maxCh2 = senseB;
|
||||
const uint8_t N = 20;
|
||||
uint32_t senseA[N];
|
||||
uint32_t senseB[N];
|
||||
|
||||
// Swipe motor
|
||||
for (float i = _minPositionEndValue; i <= _maxPositionEndValue; i = i + 0.005)
|
||||
int ptr = 0;
|
||||
|
||||
init_arr(senseA, N, 0);
|
||||
init_arr(senseB, N, 0);
|
||||
|
||||
senseA[ptr] = analogRead(_analogPin1);
|
||||
senseB[ptr] = analogRead(_analogPin2);
|
||||
|
||||
_minCh1 = senseA[ptr];
|
||||
_minCh2 = senseB[ptr];
|
||||
_maxCh1 = _minCh1;
|
||||
_maxCh2 = _minCh2;
|
||||
|
||||
Serial.println("\t- Finding end stops");
|
||||
while (!endFound)
|
||||
{
|
||||
motor.move(i);
|
||||
delay(1);
|
||||
senseA = analogRead(_analogPin1);
|
||||
senseB = analogRead(_analogPin2);
|
||||
if (senseA > _maxCh1)
|
||||
_maxCh1 = senseA;
|
||||
else if (senseA < _minCh1)
|
||||
_minCh1 = senseA;
|
||||
if (senseB > _maxCh1)
|
||||
_maxCh1 = senseB;
|
||||
else if (senseB < _minCh2)
|
||||
_minCh2 = senseB;
|
||||
senseA[ptr] = analogRead(_analogPin1);
|
||||
senseB[ptr] = analogRead(_analogPin2);
|
||||
|
||||
// Check if new extremes sensor values
|
||||
if (senseA[ptr] > _maxCh1)
|
||||
_maxCh1 = senseA[ptr];
|
||||
else if (senseA[ptr] < _minCh1)
|
||||
_minCh1 = senseA[ptr];
|
||||
|
||||
if (senseB[ptr] > _maxCh2)
|
||||
_maxCh2 = senseB[ptr];
|
||||
else if (senseB[ptr] < _minCh2)
|
||||
_minCh2 = senseB[ptr];
|
||||
|
||||
if (std_var(senseA, N) < epsilon && std_var(senseB, N) < epsilon)
|
||||
endFound = true;
|
||||
|
||||
ptr = (ptr + 1) % N;
|
||||
|
||||
// Move to new position
|
||||
currentPosition += step;
|
||||
motor.move(currentPosition);
|
||||
delay(3);
|
||||
}
|
||||
_maxPositionEndValue = currentPosition - (step * (ptr > N ? N : ptr));
|
||||
currentPosition = _maxPositionEndValue - M_PI / 16;
|
||||
delay(100);
|
||||
motor.move(currentPosition);
|
||||
Serial.println("\t- Found first end stop : Max position = " + String(_maxPositionEndValue));
|
||||
delay(100);
|
||||
for (float i = _maxPositionEndValue; i >= _minPositionEndValue; i = i - 0.005)
|
||||
{
|
||||
motor.move(i);
|
||||
delay(1);
|
||||
senseA = analogRead(_analogPin1);
|
||||
senseB = analogRead(_analogPin2);
|
||||
if (senseA > _maxCh1)
|
||||
_maxCh1 = senseA;
|
||||
else if (senseA < _minCh1)
|
||||
_minCh1 = senseA;
|
||||
if (senseB > _maxCh1)
|
||||
_maxCh1 = senseB;
|
||||
else if (senseB < _minCh2)
|
||||
_minCh2 = senseB;
|
||||
}
|
||||
|
||||
// Min offset with 50 values average
|
||||
// Swipe motor to search other hard end, and find eventually new max analog values of sensors
|
||||
endFound = false;
|
||||
|
||||
init_arr(senseA, N, 0);
|
||||
init_arr(senseB, N, 0);
|
||||
ptr = 0;
|
||||
|
||||
while (!endFound)
|
||||
{
|
||||
senseA[ptr] = analogRead(_analogPin1);
|
||||
senseB[ptr] = analogRead(_analogPin2);
|
||||
|
||||
// Check if new extremes sensor values
|
||||
if (senseA[ptr] > _maxCh1)
|
||||
_maxCh1 = senseA[ptr];
|
||||
else if (senseA[ptr] < _minCh1)
|
||||
_minCh1 = senseA[ptr];
|
||||
|
||||
if (senseB[ptr] > _maxCh2)
|
||||
_maxCh2 = senseB[ptr];
|
||||
else if (senseB[ptr] < _minCh2)
|
||||
_minCh2 = senseB[ptr];
|
||||
|
||||
if (std_var(senseA, N) < epsilon && std_var(senseB, N) < epsilon)
|
||||
endFound = true;
|
||||
|
||||
ptr = (ptr + 1) % N;
|
||||
|
||||
// Move to new position
|
||||
currentPosition -= step;
|
||||
motor.move(currentPosition);
|
||||
delay(3);
|
||||
}
|
||||
_minPositionEndValue = currentPosition + (step * (ptr > N ? N : ptr));
|
||||
Serial.println("\t- Found second end stop : Min position = " + String(_minPositionEndValue));
|
||||
delay(100);
|
||||
|
||||
// Set min offset with 50 values average
|
||||
float sum = 0.0;
|
||||
_offset = 0.0;
|
||||
for (uint8_t i = 0; i <= 49; i++)
|
||||
{
|
||||
_offset = 0.0;
|
||||
sum += readSensorCallback();
|
||||
}
|
||||
_offset = -sum / 50.0;
|
||||
_offset = sum / 50.0;
|
||||
|
||||
Serial.println("\n\rmaxA: " + String(_maxCh1) + "\tminA: " + String(_minCh1) + "\tmaxB: " + String(_maxCh2) + "\tminB: " + String(_minCh2));
|
||||
Serial.println("Offset: " + String(_offset));
|
||||
Serial.println("\t- maxA: " + String(_maxCh1) + "\tminA: " + String(_minCh1) + "\tmaxB: " + String(_maxCh2) + "\tminB: " + String(_minCh2));
|
||||
Serial.println("\t- Offset: " + String(_offset));
|
||||
|
||||
// Detect max angle
|
||||
for (float i = _minPositionEndValue; i <= _maxPositionEndValue; i = i + 0.01)
|
||||
// Read max angle
|
||||
for (float i = _minPositionEndValue; i <= _maxPositionEndValue; i = i + 0.0025)
|
||||
{
|
||||
motor.move(i);
|
||||
delay(1);
|
||||
_maxSensor = readSensorCallback();
|
||||
}
|
||||
Serial.println("current motor angle: " + String(motor.electricalAngle()));
|
||||
delay(250);
|
||||
|
||||
// take average value of 50 values
|
||||
// Set max take average value of 50 values
|
||||
sum = 0.0;
|
||||
for (uint8_t i = 0; i <= 49; i++)
|
||||
sum += readSensorCallback();
|
||||
_maxSensor = sum / 50.0;
|
||||
|
||||
Serial.println("Max sensor: " + String(_maxSensor));
|
||||
Serial.println("\t- Max angle: " + String(_maxSensor));
|
||||
|
||||
// Recovering previous controller type and go in the middle
|
||||
for (float i = _maxPositionEndValue; i >= _minPositionEndValue / 2.0; i = i - 0.01)
|
||||
// Recovering previous controller type and go to 0
|
||||
for (float i = _maxPositionEndValue; i >= (0); i = i - 0.005)
|
||||
{
|
||||
motor.move(i);
|
||||
delay(1);
|
||||
@ -126,5 +225,10 @@ float LinearHallSensor::readSensorCallback()
|
||||
_estimatePosition += dist_angle(_currentPosition, _prevPosition);
|
||||
|
||||
_prevPosition = _currentPosition;
|
||||
return (_estimatePosition + _offset) / 4.0;
|
||||
return (_estimatePosition / 4.0 - _offset);
|
||||
}
|
||||
|
||||
float LinearHallSensor::getMaxAngle()
|
||||
{
|
||||
return _maxSensor;
|
||||
}
|
@ -15,10 +15,8 @@ class LinearHallSensor
|
||||
Linear Hall Sensor class constructor
|
||||
@param ch1 Analog pin for channel 1
|
||||
@param ch2 Analog pin for channel 2
|
||||
@param minPos Minimum position in Openloop
|
||||
@param maxPos Maximum position in Openloop
|
||||
*/
|
||||
LinearHallSensor(uint8_t ch1, uint8_t ch2, float minPos, float maxPos);
|
||||
LinearHallSensor(uint8_t ch1, uint8_t ch2);
|
||||
|
||||
|
||||
/**
|
||||
@ -37,6 +35,14 @@ class LinearHallSensor
|
||||
|
||||
float readSensorCallback();
|
||||
|
||||
/**
|
||||
* @brief retrun the max angle of the motor
|
||||
*
|
||||
* @return max angle in rad
|
||||
*/
|
||||
float getMaxAngle();
|
||||
|
||||
|
||||
private:
|
||||
uint32_t _analogPin1;
|
||||
uint32_t _analogPin2;
|
||||
@ -51,7 +57,7 @@ class LinearHallSensor
|
||||
float _currentPosition;
|
||||
float _estimatePosition; // current position + offset
|
||||
float _offset; // offset angle measured at init
|
||||
float _maxSensor; // Max angle value measured (so command from 0 to that value)
|
||||
float _maxSensor; // Max range angle value measured (so command from 0 to that value)
|
||||
|
||||
float _minPositionEndValue; // min pos in open loop mode
|
||||
float _maxPositionEndValue;
|
||||
|
206
src/main.cpp
206
src/main.cpp
@ -1,98 +1,176 @@
|
||||
#include <Arduino.h>
|
||||
#include <SimpleFOC.h>
|
||||
#include <linearHallSensor.h>
|
||||
#include <pinout.h>
|
||||
|
||||
BLDCMotor motor = BLDCMotor(4);
|
||||
BLDCDriver3PWM driver = BLDCDriver3PWM(7, 8, 9);
|
||||
BLDCMotor motor[3] =
|
||||
{
|
||||
BLDCMotor(4),
|
||||
BLDCMotor(4),
|
||||
BLDCMotor(4)};
|
||||
|
||||
LinearHallSensor linearSensor = LinearHallSensor(A0, A1, -0.75, 2.35);
|
||||
BLDCDriver3PWM driver[3] =
|
||||
{
|
||||
BLDCDriver3PWM(M1_PWM1, M1_PWM2, M1_PWM3),
|
||||
BLDCDriver3PWM(M2_PWM1, M2_PWM2, M2_PWM3),
|
||||
BLDCDriver3PWM(M3_PWM1, M3_PWM2, M3_PWM3)};
|
||||
|
||||
void initSensor()
|
||||
LinearHallSensor linearSensor[3] =
|
||||
{
|
||||
LinearHallSensor(M1_Hall1, M1_Hall2),
|
||||
LinearHallSensor(M2_Hall1, M2_Hall2),
|
||||
LinearHallSensor(M3_Hall1, M3_Hall2)};
|
||||
|
||||
void initSensor0()
|
||||
{
|
||||
linearSensor.init(motor);
|
||||
linearSensor[0].init(motor[0]);
|
||||
}
|
||||
float callback0()
|
||||
{
|
||||
return linearSensor[0].readSensorCallback();
|
||||
}
|
||||
|
||||
float callback()
|
||||
void initSensor1()
|
||||
{
|
||||
return linearSensor.readSensorCallback();
|
||||
linearSensor[1].init(motor[1]);
|
||||
}
|
||||
float callback1()
|
||||
{
|
||||
return linearSensor[1].readSensorCallback();
|
||||
}
|
||||
|
||||
GenericSensor sensor = GenericSensor(callback, initSensor);
|
||||
void initSensor2()
|
||||
{
|
||||
linearSensor[2].init(motor[2]);
|
||||
}
|
||||
float callback2()
|
||||
{
|
||||
return linearSensor[2].readSensorCallback();
|
||||
}
|
||||
|
||||
float targetX = 0.0;
|
||||
float targetY = 0.0;
|
||||
GenericSensor sensor[3] =
|
||||
{
|
||||
GenericSensor(callback0, initSensor0),
|
||||
GenericSensor(callback1, initSensor1),
|
||||
GenericSensor(callback2, initSensor2)};
|
||||
|
||||
float target = 0.0;
|
||||
float target[3] = {0.5, 0.5, 0.5};
|
||||
|
||||
String str;
|
||||
|
||||
void serialLoop()
|
||||
{
|
||||
static String received_chars;
|
||||
while (Serial.available())
|
||||
{
|
||||
char inChar = (char)Serial.read();
|
||||
received_chars += inChar;
|
||||
if (inChar == '\n')
|
||||
static String received_chars;
|
||||
while (Serial.available())
|
||||
{
|
||||
target = received_chars.toFloat();
|
||||
Serial.print("Target = ");
|
||||
Serial.print(target);
|
||||
received_chars = "";
|
||||
char inChar = (char)Serial.read();
|
||||
received_chars += inChar;
|
||||
if (inChar == '\n')
|
||||
{
|
||||
target[0] = received_chars.toFloat();
|
||||
Serial.print("Target = ");
|
||||
Serial.print(target[0]);
|
||||
received_chars = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
|
||||
{
|
||||
return (float)(x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min;
|
||||
return (float)(x - in_min) * (out_max - out_min) / (float)(in_max - in_min) + out_min;
|
||||
}
|
||||
|
||||
void initMotor(u_int8_t m)
|
||||
{
|
||||
Serial.printf("\n\t\t### MOTOR %d ###\n\n", m + 1);
|
||||
driver[m].voltage_power_supply = 7.0;
|
||||
driver[m].pwm_frequency = 50000;
|
||||
Serial.printf("Driver%d init: %d\n", m + 1, driver[m].init());
|
||||
motor[m].linkDriver(&driver[m]);
|
||||
motor[m].useMonitoring(Serial);
|
||||
motor[m].controller = MotionControlType::angle;
|
||||
motor[m].foc_modulation = FOCModulationType::SinePWM;
|
||||
motor[m].voltage_limit = 2.0;
|
||||
motor[m].voltage_sensor_align = 2.0;
|
||||
motor[m].PID_velocity.P = 0.05f;
|
||||
motor[m].PID_velocity.I = 0.008;
|
||||
motor[m].PID_velocity.D = 0.0;
|
||||
motor[m].LPF_velocity.Tf = 0.02f;
|
||||
motor[m].P_angle.P = 150.0;
|
||||
motor[m].P_angle.I = 5.0;
|
||||
motor[m].velocity_limit = 20;
|
||||
|
||||
// Init sensor
|
||||
motor[m].init();
|
||||
Serial.println("calibrating sensor in open loop...");
|
||||
sensor[m].init();
|
||||
Serial.printf("Sensor %d done\n", m + 1);
|
||||
|
||||
motor[m].linkSensor(&sensor[m]);
|
||||
motor[m].init();
|
||||
if (m == 2)
|
||||
motor[m].initFOC(3.0, CW);
|
||||
else if (m == 1)
|
||||
motor[m].initFOC(3.79, CW);
|
||||
// motor[m].initFOC();
|
||||
else
|
||||
motor[m].initFOC(0.18, CW);
|
||||
Serial.printf("Motor %d Done\n", m + 1);
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
_delay(100);
|
||||
Serial.println("INIT");
|
||||
pinMode(3, OUTPUT);
|
||||
pinMode(5, OUTPUT);
|
||||
pinMode(6, OUTPUT);
|
||||
digitalWrite(3, LOW);
|
||||
digitalWrite(5, LOW);
|
||||
digitalWrite(6, LOW);
|
||||
Serial.begin(115200);
|
||||
delay(3000);
|
||||
Serial.println("INIT");
|
||||
|
||||
driver.voltage_power_supply = 6.0;
|
||||
driver.init();
|
||||
motor.linkDriver(&driver);
|
||||
motor.useMonitoring(Serial);
|
||||
motor.controller = MotionControlType::angle;
|
||||
motor.foc_modulation = FOCModulationType::SinePWM;
|
||||
motor.voltage_limit = 1.5;
|
||||
motor.voltage_sensor_align = 0.8;
|
||||
motor.PID_velocity.P = 0.075f;
|
||||
motor.PID_velocity.I = 0.01;
|
||||
motor.PID_velocity.D = 0.0;
|
||||
motor.LPF_velocity.Tf = 0.01f;
|
||||
motor.P_angle.P = 120.0;
|
||||
motor.P_angle.I = 10.0;
|
||||
motor.velocity_limit = 50;
|
||||
pinMode(LED_BUILTIN, OUTPUT); // Lightup LED
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
|
||||
motor.useMonitoring(Serial);
|
||||
|
||||
// Init sensor
|
||||
motor.init();
|
||||
Serial.println("calibrating sensor in open loop...");
|
||||
sensor.init();
|
||||
Serial.println("Done");
|
||||
delay(1000);
|
||||
|
||||
motor.linkSensor(&sensor);
|
||||
motor.init();
|
||||
// motor.initFOC(5.48, CCW);
|
||||
motor.initFOC();
|
||||
motor[1].useMonitoring(Serial);
|
||||
initMotor(2);
|
||||
initMotor(1);
|
||||
initMotor(0);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
serialLoop();
|
||||
motor.move(target);
|
||||
motor.loopFOC();
|
||||
motor.monitor();
|
||||
int len = Serial.available();
|
||||
if (len > 0)
|
||||
{
|
||||
str = Serial.readStringUntil('\n'); // get new targets from serial (target are from 0 to 1000)
|
||||
char axis = str[0];
|
||||
str.remove(0, 1);
|
||||
str.remove(len,1);
|
||||
switch (axis)
|
||||
{
|
||||
case 'X':
|
||||
target[1] = str.toFloat();
|
||||
// Serial.println("Target X: " + String(target[1]));
|
||||
target[1] = mapfloat(target[1], 0.0, 1000.0, 0.0, linearSensor[1].getMaxAngle()); // remap targets to motor angles
|
||||
break;
|
||||
case 'Y':
|
||||
target[0] = str.toFloat();
|
||||
// Serial.println("Target Y: " + String(target[0]));
|
||||
target[0] = mapfloat(target[0], 0.0, 1000.0, 0.0, linearSensor[0].getMaxAngle()); // remap targets to motor angles
|
||||
break;
|
||||
case 'Z':
|
||||
target[2] = str.toFloat();
|
||||
// Serial.println("Target Z: " + String(target[2]));
|
||||
target[2] = mapfloat(target[2], 0.0, 1000.0, 0.0, linearSensor[2].getMaxAngle()); // remap targets to motor angles
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (u_int8_t i = 0; i < 3; i++) // update motor target and Run FOC
|
||||
{
|
||||
|
||||
// serialLoop();
|
||||
// Serial.println("Target" + String(i) + ": " + String(target[i]));
|
||||
motor[i].move(target[i]);
|
||||
motor[i].loopFOC();
|
||||
// motor[i].monitor();
|
||||
}
|
||||
}
|
29
src/pinout.h
Normal file
29
src/pinout.h
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef pinout_h
|
||||
#define pinout_h
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
// PCB board : STM32 DJI Gimbal V1.0
|
||||
|
||||
#define M1_PWM1 PA10
|
||||
#define M1_PWM2 PA9
|
||||
#define M1_PWM3 PA8
|
||||
#define M1_Fault PB12
|
||||
#define M1_Hall1 PB1
|
||||
#define M1_Hall2 PA5
|
||||
|
||||
#define M2_PWM1 PB9
|
||||
#define M2_PWM2 PB8
|
||||
#define M2_PWM3 PB7
|
||||
#define M2_Fault PB10
|
||||
#define M2_Hall1 PA4
|
||||
#define M2_Hall2 PA3
|
||||
|
||||
#define M3_PWM1 PB0
|
||||
#define M3_PWM2 PA7
|
||||
#define M3_PWM3 PA6
|
||||
#define M3_Fault PA0
|
||||
#define M3_Hall1 PA2
|
||||
#define M3_Hall2 PA1
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user