Merge pull request #6 from cumhuronat/main

General improvements
This commit is contained in:
Willem Pennings
2024-06-22 21:52:41 +02:00
committed by GitHub
18 changed files with 52612 additions and 50037 deletions

View File

@@ -16,7 +16,6 @@ A YouTube video demonstrating the balancing cube is available [here](https://you
This repository should contain everything you need to order and/or build parts for this cube. Take into account the following:
* The Molex cable assemblies which deliver power to the motors (part number [215325-1081](https://mouser.com/ProductDetail/Molex/215325-1081?qs=DuoOggApuK9vh2w3ntfmSQ%3D%3D)) need to be modified. The design requires that each pin is mapped to the same pin number on the other end (1-1, 2-2, etc) but this is by default not the case, as can be seen in the [datasheet](https://www.molex.com/content/dam/molex/molex-dot-com/products/automated/en-us/salesdrawingpdf/215/215325/2153251081_sd.pdf). You can remove the circuits from their housing using [this](https://www.digikey.nl/nl/products/detail/molex/0011030044/210947) tool. Cheaper (generic) "terminal removal kits" are available too. I made a small tool myself from two folded pieces of sheet metal which I cut from a SMT soldering stencil. Alternatively, you can modify the motherboard schematic to compensate for the default circuit arrangement of the cable assembly, or build your own cable assembly from scratch using Molex part numbers [39012085](https://www.molex.com/en-us/products/part-detail/39012085) and [39000077](https://www.molex.com/en-us/products/part-detail/39000077). This is the cheapest and arguably best (from a technical point of view) option!
* I replaced four of the eight 16AWG wires in each cable assembly by 22AWG wires since only four wires carry large currents. The others carry +5V and hall sensor signals. This reduces weight and makes the cables easier to handle, as well as reducing strain on the mating connectors. The motor connection is rather fragile and might break if stressed too much.
* The ESP32 board does not go into flashing mode automatically. I fixed this by adding a 10 uF capacitor between the enable and reset pin, as described [here](https://randomnerdtutorials.com/solved-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header/).
* In my blog post, I describe some errors in the design of the motherboard. These have been resolved in the files that are available in this repository.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +0,0 @@
The ESCON configuration files are identical except that the hall sensor analog output port is swapped for M3.
This was done because ADC2 cannot be used reliably when WiFi is also active on the ESP32, supposedly.
A future revision of the motherboard will connect analog out 1 of each motor controller to ADC1 to resolve this.

View File

@@ -203,7 +203,7 @@
(footprint "kibuzzard-656351D2" (layer "B.Cu")
(tstamp 505afe1a-f491-4e0c-b013-74a89374e89f)
(at 54.75 32 90)
(at 80.25 32 90)
(descr "Generated with KiBuzzard")
(tags "kb_params=eyJBbGlnbm1lbnRDaG9pY2UiOiAiQ2VudGVyIiwgIkNhcExlZnRDaG9pY2UiOiAiKCIsICJDYXBSaWdodENob2ljZSI6ICIpIiwgIkZvbnRDb21ib0JveCI6ICJVYnVudHVNb25vLUIiLCAiSGVpZ2h0Q3RybCI6ICIzIiwgIkxheWVyQ29tYm9Cb3giOiAiRi5TaWxrUyIsICJNdWx0aUxpbmVUZXh0IjogIk9GRiIsICJQYWRkaW5nQm90dG9tQ3RybCI6ICI1IiwgIlBhZGRpbmdMZWZ0Q3RybCI6ICI1IiwgIlBhZGRpbmdSaWdodEN0cmwiOiAiNSIsICJQYWRkaW5nVG9wQ3RybCI6ICI1IiwgIldpZHRoQ3RybCI6ICIifQ==")
(attr board_only exclude_from_pos_files exclude_from_bom)
@@ -448,7 +448,7 @@
(footprint "kibuzzard-656351E7" (layer "B.Cu")
(tstamp 57018c46-760c-4313-a581-de6930691519)
(at 80.25 32 90)
(at 54.75 32 90)
(descr "Generated with KiBuzzard")
(tags "kb_params=eyJBbGlnbm1lbnRDaG9pY2UiOiAiQ2VudGVyIiwgIkNhcExlZnRDaG9pY2UiOiAiKCIsICJDYXBSaWdodENob2ljZSI6ICIpIiwgIkZvbnRDb21ib0JveCI6ICJVYnVudHVNb25vLUIiLCAiSGVpZ2h0Q3RybCI6ICIzIiwgIkxheWVyQ29tYm9Cb3giOiAiRi5TaWxrUyIsICJNdWx0aUxpbmVUZXh0IjogIk9OIiwgIlBhZGRpbmdCb3R0b21DdHJsIjogIjUiLCAiUGFkZGluZ0xlZnRDdHJsIjogIjUiLCAiUGFkZGluZ1JpZ2h0Q3RybCI6ICI1IiwgIlBhZGRpbmdUb3BDdHJsIjogIjUiLCAiV2lkdGhDdHJsIjogIiJ9")
(attr board_only exclude_from_pos_files exclude_from_bom)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,799 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('STEP AP214'),'1');
FILE_NAME('IND_SRP1050_BRN','2024-06-20T10:01:59',(''),(''),'','','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN'));
ENDSEC;
DATA;
#1=SHAPE_DEFINITION_REPRESENTATION(#2,#3);
#2=PRODUCT_DEFINITION_SHAPE('',$,#4);
#3=SHAPE_REPRESENTATION('',(#188,#244,#541,#975,#19),#11);
#4=PRODUCT_DEFINITION('design','example product_definition',#6,#5);
#5=PRODUCT_DEFINITION_CONTEXT('3D Mechanical Parts',#10,'design');
#6=PRODUCT_DEFINITION_FORMATION('1.0','first version',#8);
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2003,#10);
#8=PRODUCT('product','part','',(#9));
#9=PRODUCT_CONTEXT('3D Mechanical Parts',#10,'mechanical');
#10=APPLICATION_CONTEXT('Core Data for Automotive Mechanical Design Process');
#11=(GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#12)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#13,#14,#18)) REPRESENTATION_CONTEXT('ID1','3D'));
#12=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-005),#13,'DISTANCE_ACCURACY_VALUE','Maximum model space distance between geometric entities at asserted connectivities');
#13=(LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.));
#14=(CONVERSION_BASED_UNIT('degree',#16) NAMED_UNIT(#15) PLANE_ANGLE_UNIT());
#15=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
#16=MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.01745329252),#17);
#17=(NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.));
#18=(NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT());
#19=AXIS2_PLACEMENT_3D('',#20,#21,#22);
#20=CARTESIAN_POINT('',(0.0,0.0,0.0));
#21=DIRECTION('',(0.0,0.0,1.0));
#22=DIRECTION('',(1.0,0.0,0.0));
#25=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION($,(#240,#241,#242,#246,#295,#344,#393,#442,#491,#543,#612,#681,#730,#779,#828,#877,#926,#977,#1046,#1115,#1164,#1213,#1262,#1311,#1360),#11);
#26=PRODUCT_CATEGORY_RELATIONSHIP('','',#27,#28);
#27=PRODUCT_CATEGORY('part','');
#28=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#8));
#34=PRESENTATION_STYLE_ASSIGNMENT((#35,#40));
#35=SURFACE_STYLE_USAGE(.BOTH.,#36);
#36=SURFACE_SIDE_STYLE('',(#37));
#37=SURFACE_STYLE_FILL_AREA(#38);
#38=FILL_AREA_STYLE('',(#39));
#39=FILL_AREA_STYLE_COLOUR('',#41);
#40=CURVE_STYLE('',#42,POSITIVE_LENGTH_MEASURE(0.1),#41);
#41=COLOUR_RGB('Aluminum',0.725,0.725,0.725);
#42=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#43=PRESENTATION_STYLE_ASSIGNMENT((#44,#49));
#44=SURFACE_STYLE_USAGE(.BOTH.,#45);
#45=SURFACE_SIDE_STYLE('',(#46));
#46=SURFACE_STYLE_FILL_AREA(#47);
#47=FILL_AREA_STYLE('',(#48));
#48=FILL_AREA_STYLE_COLOUR('',#50);
#49=CURVE_STYLE('',#51,POSITIVE_LENGTH_MEASURE(0.1),#50);
#50=COLOUR_RGB('Black',0.196,0.196,0.196);
#51=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#52=PRESENTATION_STYLE_ASSIGNMENT((#53,#58));
#53=SURFACE_STYLE_USAGE(.BOTH.,#54);
#54=SURFACE_SIDE_STYLE('',(#55));
#55=SURFACE_STYLE_FILL_AREA(#56);
#56=FILL_AREA_STYLE('',(#57));
#57=FILL_AREA_STYLE_COLOUR('',#59);
#58=CURVE_STYLE('',#60,POSITIVE_LENGTH_MEASURE(0.1),#59);
#59=COLOUR_RGB('Pin1',0.588,0.588,0.588);
#60=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#61=PRESENTATION_STYLE_ASSIGNMENT((#62,#67));
#62=SURFACE_STYLE_USAGE(.BOTH.,#63);
#63=SURFACE_SIDE_STYLE('',(#64));
#64=SURFACE_STYLE_FILL_AREA(#65);
#65=FILL_AREA_STYLE('',(#66));
#66=FILL_AREA_STYLE_COLOUR('',#68);
#67=CURVE_STYLE('',#69,POSITIVE_LENGTH_MEASURE(0.1),#68);
#68=COLOUR_RGB('HeatTab',0.588,0.588,0.588);
#69=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#70=PRESENTATION_STYLE_ASSIGNMENT((#71,#76));
#71=SURFACE_STYLE_USAGE(.BOTH.,#72);
#72=SURFACE_SIDE_STYLE('',(#73));
#73=SURFACE_STYLE_FILL_AREA(#74);
#74=FILL_AREA_STYLE('',(#75));
#75=FILL_AREA_STYLE_COLOUR('',#77);
#76=CURVE_STYLE('',#78,POSITIVE_LENGTH_MEASURE(0.1),#77);
#77=COLOUR_RGB('Gold',0.843,0.686,0.0);
#78=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#79=PRESENTATION_STYLE_ASSIGNMENT((#80,#85));
#80=SURFACE_STYLE_USAGE(.BOTH.,#81);
#81=SURFACE_SIDE_STYLE('',(#82));
#82=SURFACE_STYLE_FILL_AREA(#83);
#83=FILL_AREA_STYLE('',(#84));
#84=FILL_AREA_STYLE_COLOUR('',#86);
#85=CURVE_STYLE('',#87,POSITIVE_LENGTH_MEASURE(0.1),#86);
#86=COLOUR_RGB('Brown',0.459,0.345,0.176);
#87=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#88=PRESENTATION_STYLE_ASSIGNMENT((#89,#94));
#89=SURFACE_STYLE_USAGE(.BOTH.,#90);
#90=SURFACE_SIDE_STYLE('',(#91));
#91=SURFACE_STYLE_FILL_AREA(#92);
#92=FILL_AREA_STYLE('',(#93));
#93=FILL_AREA_STYLE_COLOUR('',#95);
#94=CURVE_STYLE('',#96,POSITIVE_LENGTH_MEASURE(0.1),#95);
#95=COLOUR_RGB('Tan',0.784,0.686,0.51);
#96=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#97=PRESENTATION_STYLE_ASSIGNMENT((#98,#103));
#98=SURFACE_STYLE_USAGE(.BOTH.,#99);
#99=SURFACE_SIDE_STYLE('',(#100));
#100=SURFACE_STYLE_FILL_AREA(#101);
#101=FILL_AREA_STYLE('',(#102));
#102=FILL_AREA_STYLE_COLOUR('',#104);
#103=CURVE_STYLE('',#105,POSITIVE_LENGTH_MEASURE(0.1),#104);
#104=COLOUR_RGB('Gray',0.431,0.431,0.431);
#105=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#106=PRESENTATION_STYLE_ASSIGNMENT((#107,#112));
#107=SURFACE_STYLE_USAGE(.BOTH.,#108);
#108=SURFACE_SIDE_STYLE('',(#109));
#109=SURFACE_STYLE_FILL_AREA(#110);
#110=FILL_AREA_STYLE('',(#111));
#111=FILL_AREA_STYLE_COLOUR('',#113);
#112=CURVE_STYLE('',#114,POSITIVE_LENGTH_MEASURE(0.1),#113);
#113=COLOUR_RGB('Red',0.6,0.0,0.0);
#114=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#115=PRESENTATION_STYLE_ASSIGNMENT((#116,#121));
#116=SURFACE_STYLE_USAGE(.BOTH.,#117);
#117=SURFACE_SIDE_STYLE('',(#118));
#118=SURFACE_STYLE_FILL_AREA(#119);
#119=FILL_AREA_STYLE('',(#120));
#120=FILL_AREA_STYLE_COLOUR('',#122);
#121=CURVE_STYLE('',#123,POSITIVE_LENGTH_MEASURE(0.1),#122);
#122=COLOUR_RGB('Blue',0.157,0.157,0.588);
#123=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#124=PRESENTATION_STYLE_ASSIGNMENT((#125,#130));
#125=SURFACE_STYLE_USAGE(.BOTH.,#126);
#126=SURFACE_SIDE_STYLE('',(#127));
#127=SURFACE_STYLE_FILL_AREA(#128);
#128=FILL_AREA_STYLE('',(#129));
#129=FILL_AREA_STYLE_COLOUR('',#131);
#130=CURVE_STYLE('',#132,POSITIVE_LENGTH_MEASURE(0.1),#131);
#131=COLOUR_RGB('Maroon',0.294,0.0,0.0);
#132=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#133=PRESENTATION_STYLE_ASSIGNMENT((#134,#139));
#134=SURFACE_STYLE_USAGE(.BOTH.,#135);
#135=SURFACE_SIDE_STYLE('',(#136));
#136=SURFACE_STYLE_FILL_AREA(#137);
#137=FILL_AREA_STYLE('',(#138));
#138=FILL_AREA_STYLE_COLOUR('',#140);
#139=CURVE_STYLE('',#141,POSITIVE_LENGTH_MEASURE(0.1),#140);
#140=COLOUR_RGB('Green',0.0,0.294,0.0);
#141=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#142=PRESENTATION_STYLE_ASSIGNMENT((#143,#148));
#143=SURFACE_STYLE_USAGE(.BOTH.,#144);
#144=SURFACE_SIDE_STYLE('',(#145));
#145=SURFACE_STYLE_FILL_AREA(#146);
#146=FILL_AREA_STYLE('',(#147));
#147=FILL_AREA_STYLE_COLOUR('',#149);
#148=CURVE_STYLE('',#150,POSITIVE_LENGTH_MEASURE(0.1),#149);
#149=COLOUR_RGB('Pin1Wrap',0.98,0.706,0.176);
#150=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#151=PRESENTATION_STYLE_ASSIGNMENT((#152,#157));
#152=SURFACE_STYLE_USAGE(.BOTH.,#153);
#153=SURFACE_SIDE_STYLE('',(#154));
#154=SURFACE_STYLE_FILL_AREA(#155);
#155=FILL_AREA_STYLE('',(#156));
#156=FILL_AREA_STYLE_COLOUR('',#158);
#157=CURVE_STYLE('',#159,POSITIVE_LENGTH_MEASURE(0.1),#158);
#158=COLOUR_RGB('Pin1Rad',0.588,0.588,0.588);
#159=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#160=PRESENTATION_STYLE_ASSIGNMENT((#161,#166));
#161=SURFACE_STYLE_USAGE(.BOTH.,#162);
#162=SURFACE_SIDE_STYLE('',(#163));
#163=SURFACE_STYLE_FILL_AREA(#164);
#164=FILL_AREA_STYLE('',(#165));
#165=FILL_AREA_STYLE_COLOUR('',#167);
#166=CURVE_STYLE('',#168,POSITIVE_LENGTH_MEASURE(0.1),#167);
#167=COLOUR_RGB('Pin1Axial',0.98,0.706,0.176);
#168=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#169=PRESENTATION_STYLE_ASSIGNMENT((#170,#175));
#170=SURFACE_STYLE_USAGE(.BOTH.,#171);
#171=SURFACE_SIDE_STYLE('',(#172));
#172=SURFACE_STYLE_FILL_AREA(#173);
#173=FILL_AREA_STYLE('',(#174));
#174=FILL_AREA_STYLE_COLOUR('',#176);
#175=CURVE_STYLE('',#177,POSITIVE_LENGTH_MEASURE(0.1),#176);
#176=COLOUR_RGB('Pin1Tant',0.459,0.345,0.176);
#177=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#178=PRESENTATION_STYLE_ASSIGNMENT((#179,#184));
#179=SURFACE_STYLE_USAGE(.BOTH.,#180);
#180=SURFACE_SIDE_STYLE('',(#181));
#181=SURFACE_STYLE_FILL_AREA(#182);
#182=FILL_AREA_STYLE('',(#183));
#183=FILL_AREA_STYLE_COLOUR('',#185);
#184=CURVE_STYLE('',#186,POSITIVE_LENGTH_MEASURE(0.1),#185);
#185=COLOUR_RGB('Shroud',0.235,0.235,0.235);
#186=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#188=MANIFOLD_SOLID_BREP($,#189);
#189=CLOSED_SHELL('',(#190,#191,#192));
#190=ADVANCED_FACE($,(#196,#195),#213,.T.);
#191=ADVANCED_FACE($,(#197),#193,.F.);
#192=ADVANCED_FACE($,(#198),#194,.T.);
#193=PLANE($,#218);
#194=PLANE($,#219);
#195=FACE_BOUND($,#200,.T.);
#196=FACE_OUTER_BOUND($,#199,.T.);
#197=FACE_OUTER_BOUND($,#201,.T.);
#198=FACE_OUTER_BOUND($,#202,.T.);
#199=EDGE_LOOP($,(#209));
#200=EDGE_LOOP($,(#210));
#201=EDGE_LOOP($,(#211));
#202=EDGE_LOOP($,(#212));
#203=CIRCLE($,#216,0.259715);
#204=CIRCLE($,#217,0.259715);
#205=VERTEX_POINT('',#234);
#206=VERTEX_POINT('',#236);
#207=EDGE_CURVE($,#205,#205,#203,.T.);
#208=EDGE_CURVE($,#206,#206,#204,.T.);
#209=ORIENTED_EDGE($,*,*,#207,.F.);
#210=ORIENTED_EDGE($,*,*,#208,.F.);
#211=ORIENTED_EDGE($,*,*,#208,.T.);
#212=ORIENTED_EDGE($,*,*,#207,.T.);
#213=CYLINDRICAL_SURFACE($,#215,0.259715);
#214=AXIS2_PLACEMENT_3D('placement',#232,#220,#221);
#215=AXIS2_PLACEMENT_3D($,#233,#222,#223);
#216=AXIS2_PLACEMENT_3D($,#235,#224,#225);
#217=AXIS2_PLACEMENT_3D($,#237,#226,#227);
#218=AXIS2_PLACEMENT_3D($,#238,#228,#229);
#219=AXIS2_PLACEMENT_3D($,#239,#230,#231);
#220=DIRECTION('axis',(0.,1.,0.));
#221=DIRECTION('refdir',(1.,0.,0.));
#222=DIRECTION('',(0.,0.,1.));
#223=DIRECTION('',(1.,0.,0.));
#224=DIRECTION('',(0.,0.,1.));
#225=DIRECTION('',(1.,0.,0.));
#226=DIRECTION('',(0.,0.,-1.));
#227=DIRECTION('',(1.,0.,0.));
#228=DIRECTION('',(0.,0.,1.));
#229=DIRECTION('',(0.,1.,0.));
#230=DIRECTION('',(0.,0.,1.));
#231=DIRECTION('',(0.,1.,0.));
#232=CARTESIAN_POINT('',(0.,0.,0.));
#233=CARTESIAN_POINT('',(-4.155,0.0,5.41));
#234=CARTESIAN_POINT('',(-4.415,0.0,5.413));
#235=CARTESIAN_POINT('',(-4.155,0.0,5.413));
#236=CARTESIAN_POINT('',(-4.415,0.0,5.41));
#237=CARTESIAN_POINT('',(-4.155,0.0,5.41));
#238=CARTESIAN_POINT('',(-4.155,0.0,5.41));
#239=CARTESIAN_POINT('',(-4.155,0.0,5.413));
#240=STYLED_ITEM('color',(#52),#190);
#241=STYLED_ITEM('color',(#52),#191);
#242=STYLED_ITEM('color',(#52),#192);
#244=MANIFOLD_SOLID_BREP($,#245);
#245=CLOSED_SHELL('',(#247,#296,#345,#394,#443,#492));
#246=STYLED_ITEM('',(#43),#247);
#247=ADVANCED_FACE('',(#253),#248,.T.);
#248=PLANE('',#249);
#249=AXIS2_PLACEMENT_3D('',#250,#251,#252);
#250=CARTESIAN_POINT('',(-5.194,-5.156,0.051));
#251=DIRECTION('',(0.0,-1.0,0.0));
#252=DIRECTION('',(0.,0.,1.));
#253=FACE_OUTER_BOUND('',#254,.T.);
#254=EDGE_LOOP('',(#255,#265,#275,#285));
#258=CARTESIAN_POINT('',(5.194,-5.156,0.051));
#257=VERTEX_POINT('',#258);
#260=CARTESIAN_POINT('',(-5.194,-5.156,0.051));
#259=VERTEX_POINT('',#260);
#256=EDGE_CURVE('',#257,#259,#261,.T.);
#261=LINE('',#258,#263);
#263=VECTOR('',#264,10.3886);
#264=DIRECTION('',(-1.0,0.0,0.0));
#255=ORIENTED_EDGE('',*,*,#256,.F.);
#268=CARTESIAN_POINT('',(5.194,-5.156,5.41));
#267=VERTEX_POINT('',#268);
#266=EDGE_CURVE('',#267,#257,#271,.T.);
#271=LINE('',#268,#273);
#273=VECTOR('',#274,5.3593746);
#274=DIRECTION('',(0.0,0.0,-1.0));
#265=ORIENTED_EDGE('',*,*,#266,.F.);
#278=CARTESIAN_POINT('',(-5.194,-5.156,5.41));
#277=VERTEX_POINT('',#278);
#276=EDGE_CURVE('',#277,#267,#281,.T.);
#281=LINE('',#278,#283);
#283=VECTOR('',#284,10.3886);
#284=DIRECTION('',(1.0,0.0,0.0));
#275=ORIENTED_EDGE('',*,*,#276,.F.);
#286=EDGE_CURVE('',#259,#277,#291,.T.);
#291=LINE('',#260,#293);
#293=VECTOR('',#294,5.3593746);
#294=DIRECTION('',(0.0,0.0,1.0));
#285=ORIENTED_EDGE('',*,*,#286,.F.);
#295=STYLED_ITEM('',(#43),#296);
#296=ADVANCED_FACE('',(#302),#297,.T.);
#297=PLANE('',#298);
#298=AXIS2_PLACEMENT_3D('',#299,#300,#301);
#299=CARTESIAN_POINT('',(5.194,-5.156,0.051));
#300=DIRECTION('',(1.0,0.0,0.0));
#301=DIRECTION('',(0.,0.,1.));
#302=FACE_OUTER_BOUND('',#303,.T.);
#303=EDGE_LOOP('',(#304,#314,#324,#334));
#307=CARTESIAN_POINT('',(5.194,5.156,0.051));
#306=VERTEX_POINT('',#307);
#305=EDGE_CURVE('',#306,#257,#310,.T.);
#310=LINE('',#307,#312);
#312=VECTOR('',#313,10.3124);
#313=DIRECTION('',(0.0,-1.0,0.0));
#304=ORIENTED_EDGE('',*,*,#305,.F.);
#317=CARTESIAN_POINT('',(5.194,5.156,5.41));
#316=VERTEX_POINT('',#317);
#315=EDGE_CURVE('',#316,#306,#320,.T.);
#320=LINE('',#317,#322);
#322=VECTOR('',#323,5.3593746);
#323=DIRECTION('',(0.0,0.0,-1.0));
#314=ORIENTED_EDGE('',*,*,#315,.F.);
#325=EDGE_CURVE('',#267,#316,#330,.T.);
#330=LINE('',#268,#332);
#332=VECTOR('',#333,10.3124);
#333=DIRECTION('',(0.0,1.0,0.0));
#324=ORIENTED_EDGE('',*,*,#325,.F.);
#334=ORIENTED_EDGE('',*,*,#266,.T.);
#344=STYLED_ITEM('',(#43),#345);
#345=ADVANCED_FACE('',(#351),#346,.T.);
#346=PLANE('',#347);
#347=AXIS2_PLACEMENT_3D('',#348,#349,#350);
#348=CARTESIAN_POINT('',(5.194,5.156,0.051));
#349=DIRECTION('',(0.0,1.0,0.0));
#350=DIRECTION('',(0.,0.,1.));
#351=FACE_OUTER_BOUND('',#352,.T.);
#352=EDGE_LOOP('',(#353,#363,#373,#383));
#356=CARTESIAN_POINT('',(-5.194,5.156,0.051));
#355=VERTEX_POINT('',#356);
#354=EDGE_CURVE('',#355,#306,#359,.T.);
#359=LINE('',#356,#361);
#361=VECTOR('',#362,10.3886);
#362=DIRECTION('',(1.0,0.0,0.0));
#353=ORIENTED_EDGE('',*,*,#354,.F.);
#366=CARTESIAN_POINT('',(-5.194,5.156,5.41));
#365=VERTEX_POINT('',#366);
#364=EDGE_CURVE('',#365,#355,#369,.T.);
#369=LINE('',#366,#371);
#371=VECTOR('',#372,5.3593746);
#372=DIRECTION('',(0.0,0.0,-1.0));
#363=ORIENTED_EDGE('',*,*,#364,.F.);
#374=EDGE_CURVE('',#316,#365,#379,.T.);
#379=LINE('',#317,#381);
#381=VECTOR('',#382,10.3886);
#382=DIRECTION('',(-1.0,0.0,0.0));
#373=ORIENTED_EDGE('',*,*,#374,.F.);
#383=ORIENTED_EDGE('',*,*,#315,.T.);
#393=STYLED_ITEM('',(#43),#394);
#394=ADVANCED_FACE('',(#400),#395,.T.);
#395=PLANE('',#396);
#396=AXIS2_PLACEMENT_3D('',#397,#398,#399);
#397=CARTESIAN_POINT('',(-5.194,5.156,0.051));
#398=DIRECTION('',(-1.0,0.0,0.0));
#399=DIRECTION('',(0.,0.,1.));
#400=FACE_OUTER_BOUND('',#401,.T.);
#401=EDGE_LOOP('',(#402,#412,#422,#432));
#403=EDGE_CURVE('',#259,#355,#408,.T.);
#408=LINE('',#260,#410);
#410=VECTOR('',#411,10.3124);
#411=DIRECTION('',(0.0,1.0,0.0));
#402=ORIENTED_EDGE('',*,*,#403,.F.);
#412=ORIENTED_EDGE('',*,*,#286,.T.);
#423=EDGE_CURVE('',#365,#277,#428,.T.);
#428=LINE('',#366,#430);
#430=VECTOR('',#431,10.3124);
#431=DIRECTION('',(0.0,-1.0,0.0));
#422=ORIENTED_EDGE('',*,*,#423,.F.);
#432=ORIENTED_EDGE('',*,*,#364,.T.);
#442=STYLED_ITEM('',(#43),#443);
#443=ADVANCED_FACE('',(#449),#444,.T.);
#444=PLANE('',#445);
#445=AXIS2_PLACEMENT_3D('',#446,#447,#448);
#446=CARTESIAN_POINT('',(-5.194,5.156,0.051));
#447=DIRECTION('',(0.0,0.0,-1.0));
#448=DIRECTION('',(0.,1.,0.));
#449=FACE_OUTER_BOUND('',#450,.T.);
#450=EDGE_LOOP('',(#451,#461,#471,#481));
#451=ORIENTED_EDGE('',*,*,#354,.T.);
#461=ORIENTED_EDGE('',*,*,#305,.T.);
#471=ORIENTED_EDGE('',*,*,#256,.T.);
#481=ORIENTED_EDGE('',*,*,#403,.T.);
#491=STYLED_ITEM('',(#43),#492);
#492=ADVANCED_FACE('',(#498),#493,.T.);
#493=PLANE('',#494);
#494=AXIS2_PLACEMENT_3D('',#495,#496,#497);
#495=CARTESIAN_POINT('',(-5.194,-5.156,5.41));
#496=DIRECTION('',(0.0,0.0,1.0));
#497=DIRECTION('',(0.,1.,0.));
#498=FACE_OUTER_BOUND('',#499,.T.);
#499=EDGE_LOOP('',(#500,#510,#520,#530));
#500=ORIENTED_EDGE('',*,*,#276,.T.);
#510=ORIENTED_EDGE('',*,*,#325,.T.);
#520=ORIENTED_EDGE('',*,*,#374,.T.);
#530=ORIENTED_EDGE('',*,*,#423,.T.);
#541=MANIFOLD_SOLID_BREP($,#542);
#542=CLOSED_SHELL('',(#544,#613,#682,#731,#780,#829,#878,#927));
#543=STYLED_ITEM('',(#34),#544);
#544=ADVANCED_FACE('',(#550),#545,.T.);
#545=PLANE('',#546);
#546=AXIS2_PLACEMENT_3D('',#547,#548,#549);
#547=CARTESIAN_POINT('',(5.651,2.4,0.0));
#548=DIRECTION('',(0.0,1.0,0.0));
#549=DIRECTION('',(0.,0.,1.));
#550=FACE_OUTER_BOUND('',#551,.T.);
#551=EDGE_LOOP('',(#552,#562,#572,#582,#592,#602));
#555=CARTESIAN_POINT('',(3.061,2.4,0.0));
#554=VERTEX_POINT('',#555);
#557=CARTESIAN_POINT('',(5.651,2.4,0.0));
#556=VERTEX_POINT('',#557);
#553=EDGE_CURVE('',#554,#556,#558,.T.);
#558=LINE('',#555,#560);
#560=VECTOR('',#561,2.5908);
#561=DIRECTION('',(1.0,0.0,0.0));
#552=ORIENTED_EDGE('',*,*,#553,.F.);
#565=CARTESIAN_POINT('',(3.061,2.4,0.051));
#564=VERTEX_POINT('',#565);
#563=EDGE_CURVE('',#564,#554,#568,.T.);
#568=LINE('',#565,#570);
#570=VECTOR('',#571,0.0508);
#571=DIRECTION('',(0.0,0.0,-1.0));
#562=ORIENTED_EDGE('',*,*,#563,.F.);
#575=CARTESIAN_POINT('',(5.194,2.4,0.051));
#574=VERTEX_POINT('',#575);
#573=EDGE_CURVE('',#574,#564,#578,.T.);
#578=LINE('',#575,#580);
#580=VECTOR('',#581,2.1336);
#581=DIRECTION('',(-1.0,0.0,0.0));
#572=ORIENTED_EDGE('',*,*,#573,.F.);
#585=CARTESIAN_POINT('',(5.194,2.4,2.705));
#584=VERTEX_POINT('',#585);
#583=EDGE_CURVE('',#584,#574,#588,.T.);
#588=LINE('',#585,#590);
#590=VECTOR('',#591,2.6542873);
#591=DIRECTION('',(0.0,0.0,-1.0));
#582=ORIENTED_EDGE('',*,*,#583,.F.);
#595=CARTESIAN_POINT('',(5.651,2.4,2.705));
#594=VERTEX_POINT('',#595);
#593=EDGE_CURVE('',#594,#584,#598,.T.);
#598=LINE('',#595,#600);
#600=VECTOR('',#601,0.4572);
#601=DIRECTION('',(-1.0,0.0,0.0));
#592=ORIENTED_EDGE('',*,*,#593,.F.);
#603=EDGE_CURVE('',#556,#594,#608,.T.);
#608=LINE('',#557,#610);
#610=VECTOR('',#611,2.7050873);
#611=DIRECTION('',(0.0,0.0,1.0));
#602=ORIENTED_EDGE('',*,*,#603,.F.);
#612=STYLED_ITEM('',(#34),#613);
#613=ADVANCED_FACE('',(#619),#614,.T.);
#614=PLANE('',#615);
#615=AXIS2_PLACEMENT_3D('',#616,#617,#618);
#616=CARTESIAN_POINT('',(3.061,-2.4,0.0));
#617=DIRECTION('',(0.0,-1.0,0.0));
#618=DIRECTION('',(0.,0.,1.));
#619=FACE_OUTER_BOUND('',#620,.T.);
#620=EDGE_LOOP('',(#621,#631,#641,#651,#661,#671));
#624=CARTESIAN_POINT('',(5.651,-2.4,0.0));
#623=VERTEX_POINT('',#624);
#626=CARTESIAN_POINT('',(3.061,-2.4,0.0));
#625=VERTEX_POINT('',#626);
#622=EDGE_CURVE('',#623,#625,#627,.T.);
#627=LINE('',#624,#629);
#629=VECTOR('',#630,2.5908);
#630=DIRECTION('',(-1.0,0.0,0.0));
#621=ORIENTED_EDGE('',*,*,#622,.F.);
#634=CARTESIAN_POINT('',(5.651,-2.4,2.705));
#633=VERTEX_POINT('',#634);
#632=EDGE_CURVE('',#633,#623,#637,.T.);
#637=LINE('',#634,#639);
#639=VECTOR('',#640,2.7050873);
#640=DIRECTION('',(0.0,0.0,-1.0));
#631=ORIENTED_EDGE('',*,*,#632,.F.);
#644=CARTESIAN_POINT('',(5.194,-2.4,2.705));
#643=VERTEX_POINT('',#644);
#642=EDGE_CURVE('',#643,#633,#647,.T.);
#647=LINE('',#644,#649);
#649=VECTOR('',#650,0.4572);
#650=DIRECTION('',(1.0,0.0,0.0));
#641=ORIENTED_EDGE('',*,*,#642,.F.);
#654=CARTESIAN_POINT('',(5.194,-2.4,0.051));
#653=VERTEX_POINT('',#654);
#652=EDGE_CURVE('',#653,#643,#657,.T.);
#657=LINE('',#654,#659);
#659=VECTOR('',#660,2.6542873);
#660=DIRECTION('',(0.0,0.0,1.0));
#651=ORIENTED_EDGE('',*,*,#652,.F.);
#664=CARTESIAN_POINT('',(3.061,-2.4,0.051));
#663=VERTEX_POINT('',#664);
#662=EDGE_CURVE('',#663,#653,#667,.T.);
#667=LINE('',#664,#669);
#669=VECTOR('',#670,2.1336);
#670=DIRECTION('',(1.0,0.0,0.0));
#661=ORIENTED_EDGE('',*,*,#662,.F.);
#672=EDGE_CURVE('',#625,#663,#677,.T.);
#677=LINE('',#626,#679);
#679=VECTOR('',#680,0.0508);
#680=DIRECTION('',(0.0,0.0,1.0));
#671=ORIENTED_EDGE('',*,*,#672,.F.);
#681=STYLED_ITEM('',(#34),#682);
#682=ADVANCED_FACE('',(#688),#683,.T.);
#683=PLANE('',#684);
#684=AXIS2_PLACEMENT_3D('',#685,#686,#687);
#685=CARTESIAN_POINT('',(5.651,2.4,2.705));
#686=DIRECTION('',(0.0,0.0,1.0));
#687=DIRECTION('',(0.,1.,0.));
#688=FACE_OUTER_BOUND('',#689,.T.);
#689=EDGE_LOOP('',(#690,#700,#710,#720));
#690=ORIENTED_EDGE('',*,*,#593,.T.);
#701=EDGE_CURVE('',#643,#584,#706,.T.);
#706=LINE('',#644,#708);
#708=VECTOR('',#709,4.8006);
#709=DIRECTION('',(0.0,1.0,0.0));
#700=ORIENTED_EDGE('',*,*,#701,.F.);
#710=ORIENTED_EDGE('',*,*,#642,.T.);
#721=EDGE_CURVE('',#594,#633,#726,.T.);
#726=LINE('',#595,#728);
#728=VECTOR('',#729,4.8006);
#729=DIRECTION('',(0.0,-1.0,0.0));
#720=ORIENTED_EDGE('',*,*,#721,.F.);
#730=STYLED_ITEM('',(#34),#731);
#731=ADVANCED_FACE('',(#737),#732,.T.);
#732=PLANE('',#733);
#733=AXIS2_PLACEMENT_3D('',#734,#735,#736);
#734=CARTESIAN_POINT('',(5.194,2.4,0.051));
#735=DIRECTION('',(0.0,0.0,1.0));
#736=DIRECTION('',(0.,1.,0.));
#737=FACE_OUTER_BOUND('',#738,.T.);
#738=EDGE_LOOP('',(#739,#749,#759,#769));
#739=ORIENTED_EDGE('',*,*,#573,.T.);
#750=EDGE_CURVE('',#663,#564,#755,.T.);
#755=LINE('',#664,#757);
#757=VECTOR('',#758,4.8006);
#758=DIRECTION('',(0.0,1.0,0.0));
#749=ORIENTED_EDGE('',*,*,#750,.F.);
#759=ORIENTED_EDGE('',*,*,#662,.T.);
#770=EDGE_CURVE('',#574,#653,#775,.T.);
#775=LINE('',#575,#777);
#777=VECTOR('',#778,4.8006);
#778=DIRECTION('',(0.0,-1.0,0.0));
#769=ORIENTED_EDGE('',*,*,#770,.F.);
#779=STYLED_ITEM('',(#34),#780);
#780=ADVANCED_FACE('',(#786),#781,.T.);
#781=PLANE('',#782);
#782=AXIS2_PLACEMENT_3D('',#783,#784,#785);
#783=CARTESIAN_POINT('',(5.651,-2.4,0.0));
#784=DIRECTION('',(1.0,0.0,0.0));
#785=DIRECTION('',(0.,0.,1.));
#786=FACE_OUTER_BOUND('',#787,.T.);
#787=EDGE_LOOP('',(#788,#798,#808,#818));
#789=EDGE_CURVE('',#556,#623,#794,.T.);
#794=LINE('',#557,#796);
#796=VECTOR('',#797,4.8006);
#797=DIRECTION('',(0.0,-1.0,0.0));
#788=ORIENTED_EDGE('',*,*,#789,.F.);
#798=ORIENTED_EDGE('',*,*,#603,.T.);
#808=ORIENTED_EDGE('',*,*,#721,.T.);
#818=ORIENTED_EDGE('',*,*,#632,.T.);
#828=STYLED_ITEM('',(#34),#829);
#829=ADVANCED_FACE('',(#835),#830,.T.);
#830=PLANE('',#831);
#831=AXIS2_PLACEMENT_3D('',#832,#833,#834);
#832=CARTESIAN_POINT('',(3.061,2.4,0.0));
#833=DIRECTION('',(-1.0,0.0,0.0));
#834=DIRECTION('',(0.,0.,1.));
#835=FACE_OUTER_BOUND('',#836,.T.);
#836=EDGE_LOOP('',(#837,#847,#857,#867));
#838=EDGE_CURVE('',#625,#554,#843,.T.);
#843=LINE('',#626,#845);
#845=VECTOR('',#846,4.8006);
#846=DIRECTION('',(0.0,1.0,0.0));
#837=ORIENTED_EDGE('',*,*,#838,.F.);
#847=ORIENTED_EDGE('',*,*,#672,.T.);
#857=ORIENTED_EDGE('',*,*,#750,.T.);
#867=ORIENTED_EDGE('',*,*,#563,.T.);
#877=STYLED_ITEM('',(#34),#878);
#878=ADVANCED_FACE('',(#884),#879,.T.);
#879=PLANE('',#880);
#880=AXIS2_PLACEMENT_3D('',#881,#882,#883);
#881=CARTESIAN_POINT('',(5.194,2.4,0.051));
#882=DIRECTION('',(-1.0,0.0,0.0));
#883=DIRECTION('',(0.,0.,1.));
#884=FACE_OUTER_BOUND('',#885,.T.);
#885=EDGE_LOOP('',(#886,#896,#906,#916));
#886=ORIENTED_EDGE('',*,*,#770,.T.);
#896=ORIENTED_EDGE('',*,*,#652,.T.);
#906=ORIENTED_EDGE('',*,*,#701,.T.);
#916=ORIENTED_EDGE('',*,*,#583,.T.);
#926=STYLED_ITEM('',(#34),#927);
#927=ADVANCED_FACE('',(#933),#928,.T.);
#928=PLANE('',#929);
#929=AXIS2_PLACEMENT_3D('',#930,#931,#932);
#930=CARTESIAN_POINT('',(5.651,-2.4,0.0));
#931=DIRECTION('',(0.0,0.0,-1.0));
#932=DIRECTION('',(0.,1.,0.));
#933=FACE_OUTER_BOUND('',#934,.T.);
#934=EDGE_LOOP('',(#935,#945,#955,#965));
#935=ORIENTED_EDGE('',*,*,#622,.T.);
#945=ORIENTED_EDGE('',*,*,#838,.T.);
#955=ORIENTED_EDGE('',*,*,#553,.T.);
#965=ORIENTED_EDGE('',*,*,#789,.T.);
#975=MANIFOLD_SOLID_BREP($,#976);
#976=CLOSED_SHELL('',(#978,#1047,#1116,#1165,#1214,#1263,#1312,#1361));
#977=STYLED_ITEM('',(#34),#978);
#978=ADVANCED_FACE('',(#984),#979,.T.);
#979=PLANE('',#980);
#980=AXIS2_PLACEMENT_3D('',#981,#982,#983);
#981=CARTESIAN_POINT('',(-5.651,-2.4,0.0));
#982=DIRECTION('',(0.0,-1.0,0.0));
#983=DIRECTION('',(0.,0.,1.));
#984=FACE_OUTER_BOUND('',#985,.T.);
#985=EDGE_LOOP('',(#986,#996,#1006,#1016,#1026,#1036));
#989=CARTESIAN_POINT('',(-3.061,-2.4,0.0));
#988=VERTEX_POINT('',#989);
#991=CARTESIAN_POINT('',(-5.651,-2.4,0.0));
#990=VERTEX_POINT('',#991);
#987=EDGE_CURVE('',#988,#990,#992,.T.);
#992=LINE('',#989,#994);
#994=VECTOR('',#995,2.5908);
#995=DIRECTION('',(-1.0,0.0,0.0));
#986=ORIENTED_EDGE('',*,*,#987,.F.);
#999=CARTESIAN_POINT('',(-3.061,-2.4,0.051));
#998=VERTEX_POINT('',#999);
#997=EDGE_CURVE('',#998,#988,#1002,.T.);
#1002=LINE('',#999,#1004);
#1004=VECTOR('',#1005,0.0508);
#1005=DIRECTION('',(0.0,0.0,-1.0));
#996=ORIENTED_EDGE('',*,*,#997,.F.);
#1009=CARTESIAN_POINT('',(-5.194,-2.4,0.051));
#1008=VERTEX_POINT('',#1009);
#1007=EDGE_CURVE('',#1008,#998,#1012,.T.);
#1012=LINE('',#1009,#1014);
#1014=VECTOR('',#1015,2.1336);
#1015=DIRECTION('',(1.0,0.0,0.0));
#1006=ORIENTED_EDGE('',*,*,#1007,.F.);
#1019=CARTESIAN_POINT('',(-5.194,-2.4,2.705));
#1018=VERTEX_POINT('',#1019);
#1017=EDGE_CURVE('',#1018,#1008,#1022,.T.);
#1022=LINE('',#1019,#1024);
#1024=VECTOR('',#1025,2.6542873);
#1025=DIRECTION('',(0.0,0.0,-1.0));
#1016=ORIENTED_EDGE('',*,*,#1017,.F.);
#1029=CARTESIAN_POINT('',(-5.651,-2.4,2.705));
#1028=VERTEX_POINT('',#1029);
#1027=EDGE_CURVE('',#1028,#1018,#1032,.T.);
#1032=LINE('',#1029,#1034);
#1034=VECTOR('',#1035,0.4572);
#1035=DIRECTION('',(1.0,0.0,0.0));
#1026=ORIENTED_EDGE('',*,*,#1027,.F.);
#1037=EDGE_CURVE('',#990,#1028,#1042,.T.);
#1042=LINE('',#991,#1044);
#1044=VECTOR('',#1045,2.7050873);
#1045=DIRECTION('',(0.0,0.0,1.0));
#1036=ORIENTED_EDGE('',*,*,#1037,.F.);
#1046=STYLED_ITEM('',(#34),#1047);
#1047=ADVANCED_FACE('',(#1053),#1048,.T.);
#1048=PLANE('',#1049);
#1049=AXIS2_PLACEMENT_3D('',#1050,#1051,#1052);
#1050=CARTESIAN_POINT('',(-3.061,2.4,0.0));
#1051=DIRECTION('',(0.0,1.0,0.0));
#1052=DIRECTION('',(0.,0.,1.));
#1053=FACE_OUTER_BOUND('',#1054,.T.);
#1054=EDGE_LOOP('',(#1055,#1065,#1075,#1085,#1095,#1105));
#1058=CARTESIAN_POINT('',(-5.651,2.4,0.0));
#1057=VERTEX_POINT('',#1058);
#1060=CARTESIAN_POINT('',(-3.061,2.4,0.0));
#1059=VERTEX_POINT('',#1060);
#1056=EDGE_CURVE('',#1057,#1059,#1061,.T.);
#1061=LINE('',#1058,#1063);
#1063=VECTOR('',#1064,2.5908);
#1064=DIRECTION('',(1.0,0.0,0.0));
#1055=ORIENTED_EDGE('',*,*,#1056,.F.);
#1068=CARTESIAN_POINT('',(-5.651,2.4,2.705));
#1067=VERTEX_POINT('',#1068);
#1066=EDGE_CURVE('',#1067,#1057,#1071,.T.);
#1071=LINE('',#1068,#1073);
#1073=VECTOR('',#1074,2.7050873);
#1074=DIRECTION('',(0.0,0.0,-1.0));
#1065=ORIENTED_EDGE('',*,*,#1066,.F.);
#1078=CARTESIAN_POINT('',(-5.194,2.4,2.705));
#1077=VERTEX_POINT('',#1078);
#1076=EDGE_CURVE('',#1077,#1067,#1081,.T.);
#1081=LINE('',#1078,#1083);
#1083=VECTOR('',#1084,0.4572);
#1084=DIRECTION('',(-1.0,0.0,0.0));
#1075=ORIENTED_EDGE('',*,*,#1076,.F.);
#1088=CARTESIAN_POINT('',(-5.194,2.4,0.051));
#1087=VERTEX_POINT('',#1088);
#1086=EDGE_CURVE('',#1087,#1077,#1091,.T.);
#1091=LINE('',#1088,#1093);
#1093=VECTOR('',#1094,2.6542873);
#1094=DIRECTION('',(0.0,0.0,1.0));
#1085=ORIENTED_EDGE('',*,*,#1086,.F.);
#1098=CARTESIAN_POINT('',(-3.061,2.4,0.051));
#1097=VERTEX_POINT('',#1098);
#1096=EDGE_CURVE('',#1097,#1087,#1101,.T.);
#1101=LINE('',#1098,#1103);
#1103=VECTOR('',#1104,2.1336);
#1104=DIRECTION('',(-1.0,0.0,0.0));
#1095=ORIENTED_EDGE('',*,*,#1096,.F.);
#1106=EDGE_CURVE('',#1059,#1097,#1111,.T.);
#1111=LINE('',#1060,#1113);
#1113=VECTOR('',#1114,0.0508);
#1114=DIRECTION('',(0.0,0.0,1.0));
#1105=ORIENTED_EDGE('',*,*,#1106,.F.);
#1115=STYLED_ITEM('',(#34),#1116);
#1116=ADVANCED_FACE('',(#1122),#1117,.T.);
#1117=PLANE('',#1118);
#1118=AXIS2_PLACEMENT_3D('',#1119,#1120,#1121);
#1119=CARTESIAN_POINT('',(-5.651,-2.4,2.705));
#1120=DIRECTION('',(0.0,0.0,1.0));
#1121=DIRECTION('',(0.,1.,0.));
#1122=FACE_OUTER_BOUND('',#1123,.T.);
#1123=EDGE_LOOP('',(#1124,#1134,#1144,#1154));
#1124=ORIENTED_EDGE('',*,*,#1027,.T.);
#1135=EDGE_CURVE('',#1077,#1018,#1140,.T.);
#1140=LINE('',#1078,#1142);
#1142=VECTOR('',#1143,4.8006);
#1143=DIRECTION('',(0.0,-1.0,0.0));
#1134=ORIENTED_EDGE('',*,*,#1135,.F.);
#1144=ORIENTED_EDGE('',*,*,#1076,.T.);
#1155=EDGE_CURVE('',#1028,#1067,#1160,.T.);
#1160=LINE('',#1029,#1162);
#1162=VECTOR('',#1163,4.8006);
#1163=DIRECTION('',(0.0,1.0,0.0));
#1154=ORIENTED_EDGE('',*,*,#1155,.F.);
#1164=STYLED_ITEM('',(#34),#1165);
#1165=ADVANCED_FACE('',(#1171),#1166,.T.);
#1166=PLANE('',#1167);
#1167=AXIS2_PLACEMENT_3D('',#1168,#1169,#1170);
#1168=CARTESIAN_POINT('',(-5.194,-2.4,0.051));
#1169=DIRECTION('',(0.0,0.0,1.0));
#1170=DIRECTION('',(0.,1.,0.));
#1171=FACE_OUTER_BOUND('',#1172,.T.);
#1172=EDGE_LOOP('',(#1173,#1183,#1193,#1203));
#1173=ORIENTED_EDGE('',*,*,#1007,.T.);
#1184=EDGE_CURVE('',#1097,#998,#1189,.T.);
#1189=LINE('',#1098,#1191);
#1191=VECTOR('',#1192,4.8006);
#1192=DIRECTION('',(0.0,-1.0,0.0));
#1183=ORIENTED_EDGE('',*,*,#1184,.F.);
#1193=ORIENTED_EDGE('',*,*,#1096,.T.);
#1204=EDGE_CURVE('',#1008,#1087,#1209,.T.);
#1209=LINE('',#1009,#1211);
#1211=VECTOR('',#1212,4.8006);
#1212=DIRECTION('',(0.0,1.0,0.0));
#1203=ORIENTED_EDGE('',*,*,#1204,.F.);
#1213=STYLED_ITEM('',(#34),#1214);
#1214=ADVANCED_FACE('',(#1220),#1215,.T.);
#1215=PLANE('',#1216);
#1216=AXIS2_PLACEMENT_3D('',#1217,#1218,#1219);
#1217=CARTESIAN_POINT('',(-5.651,2.4,0.0));
#1218=DIRECTION('',(-1.0,0.0,0.0));
#1219=DIRECTION('',(0.,0.,1.));
#1220=FACE_OUTER_BOUND('',#1221,.T.);
#1221=EDGE_LOOP('',(#1222,#1232,#1242,#1252));
#1223=EDGE_CURVE('',#990,#1057,#1228,.T.);
#1228=LINE('',#991,#1230);
#1230=VECTOR('',#1231,4.8006);
#1231=DIRECTION('',(0.0,1.0,0.0));
#1222=ORIENTED_EDGE('',*,*,#1223,.F.);
#1232=ORIENTED_EDGE('',*,*,#1037,.T.);
#1242=ORIENTED_EDGE('',*,*,#1155,.T.);
#1252=ORIENTED_EDGE('',*,*,#1066,.T.);
#1262=STYLED_ITEM('',(#34),#1263);
#1263=ADVANCED_FACE('',(#1269),#1264,.T.);
#1264=PLANE('',#1265);
#1265=AXIS2_PLACEMENT_3D('',#1266,#1267,#1268);
#1266=CARTESIAN_POINT('',(-3.061,-2.4,0.0));
#1267=DIRECTION('',(1.0,0.0,0.0));
#1268=DIRECTION('',(0.,0.,1.));
#1269=FACE_OUTER_BOUND('',#1270,.T.);
#1270=EDGE_LOOP('',(#1271,#1281,#1291,#1301));
#1272=EDGE_CURVE('',#1059,#988,#1277,.T.);
#1277=LINE('',#1060,#1279);
#1279=VECTOR('',#1280,4.8006);
#1280=DIRECTION('',(0.0,-1.0,0.0));
#1271=ORIENTED_EDGE('',*,*,#1272,.F.);
#1281=ORIENTED_EDGE('',*,*,#1106,.T.);
#1291=ORIENTED_EDGE('',*,*,#1184,.T.);
#1301=ORIENTED_EDGE('',*,*,#997,.T.);
#1311=STYLED_ITEM('',(#34),#1312);
#1312=ADVANCED_FACE('',(#1318),#1313,.T.);
#1313=PLANE('',#1314);
#1314=AXIS2_PLACEMENT_3D('',#1315,#1316,#1317);
#1315=CARTESIAN_POINT('',(-5.194,-2.4,0.051));
#1316=DIRECTION('',(1.0,0.0,0.0));
#1317=DIRECTION('',(0.,0.,1.));
#1318=FACE_OUTER_BOUND('',#1319,.T.);
#1319=EDGE_LOOP('',(#1320,#1330,#1340,#1350));
#1320=ORIENTED_EDGE('',*,*,#1204,.T.);
#1330=ORIENTED_EDGE('',*,*,#1086,.T.);
#1340=ORIENTED_EDGE('',*,*,#1135,.T.);
#1350=ORIENTED_EDGE('',*,*,#1017,.T.);
#1360=STYLED_ITEM('',(#34),#1361);
#1361=ADVANCED_FACE('',(#1367),#1362,.T.);
#1362=PLANE('',#1363);
#1363=AXIS2_PLACEMENT_3D('',#1364,#1365,#1366);
#1364=CARTESIAN_POINT('',(-5.651,2.4,0.0));
#1365=DIRECTION('',(0.0,0.0,-1.0));
#1366=DIRECTION('',(0.,1.,0.));
#1367=FACE_OUTER_BOUND('',#1368,.T.);
#1368=EDGE_LOOP('',(#1369,#1379,#1389,#1399));
#1369=ORIENTED_EDGE('',*,*,#1056,.T.);
#1379=ORIENTED_EDGE('',*,*,#1272,.T.);
#1389=ORIENTED_EDGE('',*,*,#987,.T.);
#1399=ORIENTED_EDGE('',*,*,#1223,.T.);
ENDSEC;
END-ISO-10303-21;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"high_contrast_mode": 2,
"net_color_mode": 1,
"opacity": {
"images": 0.6,

View File

@@ -412,7 +412,9 @@
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_footprint_libs": [
"cube-motherboard"
],
"pinned_symbol_libs": []
},
"meta": {

File diff suppressed because it is too large Load Diff

View File

@@ -297,4 +297,68 @@
)
)
)
(symbol "SMBJ33A" (pin_numbers hide) (pin_names (offset 0) hide) (in_bom yes) (on_board yes)
(property "Reference" "D" (at 0 5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "SMBJ33A" (at 0 -5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "cube-motherboard:SMB_L4.4-W3.6-LS5.4-RD" (at 0 -7.62 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "SMBJ33A_0_1"
(polyline
(pts
(xy -1.27 0)
(xy -2.54 0)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy 2.54 0)
(xy 1.27 0)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy 1.27 1.78)
(xy -1.27 0)
(xy 1.27 -1.78)
(xy 1.27 1.78)
)
(stroke (width 0) (type default))
(fill (type background))
)
(polyline
(pts
(xy -1.27 1.78)
(xy -1.78 2.29)
(xy -1.27 1.78)
(xy -1.27 -1.78)
(xy -0.76 -2.29)
(xy -0.76 -2.29)
)
(stroke (width 0) (type default))
(fill (type none))
)
)
(symbol "SMBJ33A_1_1"
(pin passive line (at -5.08 0 0) (length 2.54)
(name "C" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 5.08 0 180) (length 2.54)
(name "A" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@@ -0,0 +1,49 @@
(footprint "SMB_L4.4-W3.6-LS5.4-RD" (version 20221018) (generator pcbnew)
(layer "F.Cu")
(attr smd)
(fp_text reference "REF**" (at 0 -4) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 602e7aa6-8b46-42b9-b898-d5badde02f7e)
)
(fp_text value "SMB_L4.4-W3.6-LS5.4-RD" (at 0 4) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 124b3dad-40a6-43e1-b2ab-cf937caa831a)
)
(fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp a9e6cf22-3f8e-4cfc-9d3b-f7f3400b8fc0)
)
(fp_line (start -2.75 -1.88) (end 2.74 -1.88)
(stroke (width 0.15) (type solid)) (layer "F.SilkS") (tstamp 40b3d5cd-a45d-477a-9ca7-1e12bb1bb8ad))
(fp_line (start -2.75 1.89) (end 2.74 1.89)
(stroke (width 0.15) (type solid)) (layer "F.SilkS") (tstamp 945f2e79-4019-420d-9932-66a94fcd255a))
(fp_line (start -1.02 -1.88) (end -1.02 1.89)
(stroke (width 0.15) (type solid)) (layer "F.SilkS") (tstamp ae8a0141-18e3-45e2-8a1f-04473f98c03e))
(fp_line (start -0.38 -0.88) (end -0.38 0.89)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp fd1add3c-6daf-437c-b2de-ee5d590f0922))
(fp_line (start -0.37 0) (end -0.26 0)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp ad0e0ec8-7a25-48aa-a97f-5b28cb7369d9))
(fp_line (start -0.26 0) (end -0.33 0)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp 99fd52cf-6053-46b2-bbd6-a370f4ceec05))
(fp_line (start -0.26 0) (end 0.63 -0.88)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp f5470007-2170-4f4b-9d7e-29daa9632a66))
(fp_line (start 0.63 -0.88) (end 0.63 0.89)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp 776f3aa2-e116-411e-a957-7f22e0eafdbe))
(fp_line (start 0.63 0.89) (end -0.26 0)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp 2d1f8ade-99c6-44e6-9f95-51ae056d351f))
(fp_line (start 1.27 0) (end -0.77 0)
(stroke (width 0.25) (type solid)) (layer "F.SilkS") (tstamp 26e68a1f-89b6-4b76-8a13-824a60c195e3))
(fp_line (start 2.74 -1.88) (end 2.74 -1.3)
(stroke (width 0.15) (type solid)) (layer "F.SilkS") (tstamp b9cc7490-7e15-4c75-893b-d0f369b21b55))
(fp_line (start 2.74 1.89) (end 2.74 1.3)
(stroke (width 0.15) (type solid)) (layer "F.SilkS") (tstamp 71c6d6a1-6cde-4a41-ae89-6f022ab51216))
(fp_circle (center -2.7 1.8) (end -2.67 1.8)
(stroke (width 0.06) (type solid)) (fill none) (layer "F.Fab") (tstamp acac94b4-72b3-45dc-ae77-ef2c0a2e65d2))
(pad "1" smd rect (at -2.54 0) (size 2.05 2.24) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8fc41225-84cf-4860-b3e4-08618e45c088))
(pad "2" smd rect (at 2.54 0) (size 2.05 2.24) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9be467ef-e09f-45a8-b77b-68fd92686236))
(model "${KIPRJMOD}/3d models/SMB_L4.4-W3.6-LS5.4-RD.step"
(offset (xyz 0 -0 -0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)

File diff suppressed because it is too large Load Diff

View File

@@ -6,9 +6,9 @@ Motor::Motor(int pin_enable, int pin_current) : pin_enable(pin_enable), pin_curr
pinMode(pin_enable, OUTPUT);
// Map pin number to channel (these must be updated if mx_current in pins.h is changed...)
if(pin_current == 14) {
if(pin_current == 12) {
channel = 0;
} else if(pin_current == 16) {
} else if(pin_current == 18) {
channel = 1;
} else {
channel = 2;

View File

@@ -2,17 +2,17 @@
#define pins_h
// Motor controllers
const int M1_ENABLE = 6;
const int M1_CURRENT = 4;
const int M2_ENABLE = 12;
const int M2_CURRENT = 14;
const int M3_ENABLE = 18;
const int M3_CURRENT = 16;
const int M1_ENABLE = 13;
const int M1_CURRENT = 12;
const int M2_ENABLE = 17;
const int M2_CURRENT = 18;
const int M3_ENABLE = 5;
const int M3_CURRENT = 6;
// Motor speeds
const int M1_SPEED = 7;
const int M2_SPEED = 10;
const int M3_SPEED = 9;
const int M1_SPEED = 10;
const int M2_SPEED = 9;
const int M3_SPEED = 7;
// IMU
const int IMU_SDA = 47;