Merge pull request #22 from noisymime/master

21112016 updates
This commit is contained in:
Autohome2 2016-11-21 01:27:16 +00:00 committed by GitHub
commit fcbc76ef45
40 changed files with 162974 additions and 121662 deletions

36
contributing.md Normal file
View File

@ -0,0 +1,36 @@
# How to contribute
The Speeduino project is always looking for new contributors so thanks for your interest in this!
If you haven't already, jump onto our Slack team as that is where most of the development discussion takes place: https://speeduino.com/forum/app.php/page/slack
Here are some important resources:
* [Coding style guide](http://speeduino.com/wiki/index.php/Style_code)
* [Project forum](https://speeduino.com/forum)
* [Slack team](https://speeduino.com/forum/app.php/page/slack)
## Testing
All contributions should be in a working, compilable state. If your change does not compile cleanly it will be rejected immediately.
## Submitting changes
Please send a [GitHub Pull Request to Speeduino](https://github.com/noisymime/speeduino/pull/new/master) with a clear list of what you've done (read more about [pull requests](http://help.github.com/pull-requests/)).
Please try to make each pull request atomic, that is, there should be a single defined intent or feature for the pull request. If you are adding multiple features or fixing different bugs, please split these up and submit multiple pull requests.
Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should look like this:
$ git commit -m "A brief summary of the commit
>
> A paragraph describing what changed and its impact."
## Contributor Licensing
Note that all contributions to the project are made under the Github Contributor Lincensing Agreement: https://cla.github.com/agreement
This ensures that all contributions made to the project are licensed in the same way as the existing work. Such an agreement is not intended to deprive contributors of their copyright, but to protect the project from claims by malicious contributors.
## Coding conventions
The coding style guide can be found on the project wiki: http://speeduino.com/wiki/index.php/Style_code

View File

@ -1,12 +0,0 @@
#ifndef FASTANALOG_H
#define FASTANALOG_H
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
#endif // FASTANALOG_H

95
math.ino Normal file
View File

@ -0,0 +1,95 @@
//Replace the standard arduino map() function to use the div function instead
int fastMap(unsigned long x, int in_min, int in_max, int out_min, int out_max)
{
return ldiv( ((x - in_min) * (out_max - out_min)) , (in_max - in_min) ).quot + out_min;
//return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
//This is a dedicated function that specifically handles the case of mapping 0-1023 values into a 0 to X range
//This is a common case because it means converting from a standard 10-bit analog input to a byte or 10-bit analog into 0-511 (Eg the temperature readings)
//int fastMap1023toX(unsigned long x, int in_min, int in_max, int out_min, int out_max)
//removed ununsed variables, in_min and out_min is aways 0, in_max is aways 1023
int fastMap1023toX(unsigned long x, int out_max)
{
return (x * out_max) >> 10;
}
/*
The following are all fast versions of specific divisions
Ref: http://www.hackersdelight.org/divcMore.pdf
*/
//Unsigned divide by 10
unsigned int divu10(unsigned int n) {
unsigned long q, r;
q = (n >> 1) + (n >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = n - q*10;
return q + ((r + 6) >> 4);
// return q + (r > 9);
}
//Signed divide by 10
int divs10(long n) {
long q, r;
n = n + (n>>31 & 9);
q = (n >> 1) + (n >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = n - q*10;
return q + ((r + 6) >> 4);
// return q + (r > 9);
}
//Signed divide by 100
int divs100(long n) {
return (n / 100); // Amazingly, gcc is producing a better /divide by 100 function than this
long q, r;
n = n + (n>>31 & 99);
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
(n >> 12) + (n >> 13) - (n >> 16);
q = q + (q >> 20);
q = q >> 6;
r = n - q*100;
return q + ((r + 28) >> 7);
// return q + (r > 99);
}
//Unsigned divide by 100
unsigned long divu100(unsigned long n) {
//return (n / 100); // No difference with this on/off
unsigned long q, r;
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
(n >> 12) + (n >> 13) - (n >> 16);
q = q + (q >> 20);
q = q >> 6;
r = n - q*100;
return q + ((r + 28) >> 7);
// return q + (r > 99);
}
//Return x percent of y
//This is a relatively fast approximation of a percentage value.
unsigned long percentage(byte x, unsigned long y)
{
return (y * x) / 100; //For some reason this is faster
//return divu100(y * x);
}
/*
* Calculates integer power values. Same as pow() but with ints
*/
inline long powint(int factor, unsigned int exponent)
{
long product = 1;
while (exponent--)
product *= factor;
return product;
}

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 534 KiB

After

Width:  |  Height:  |  Size: 534 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

Before

Width:  |  Height:  |  Size: 488 KiB

After

Width:  |  Height:  |  Size: 488 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -1,26 +0,0 @@
G04 MADE WITH FRITZING*
G04 WWW.FRITZING.ORG*
G04 DOUBLE SIDED*
G04 HOLES PLATED*
G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%ASAXBY*%
%FSLAX23Y23*%
%MOIN*%
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10R,3.937010X3.937010*%
%ADD11C,0.008000*%
%ADD10C,0.008*%
%LNCONTOUR*%
G90*
G70*
G54D10*
G54D11*
X4Y3933D02*
X3933Y3933D01*
X3933Y4D01*
X4Y4D01*
X4Y3933D01*
D02*
G04 End of contour*
M02*

File diff suppressed because it is too large Load Diff

View File

@ -1,776 +0,0 @@
*Pick And Place List
*Company=
*Author=
*eMail=
*
*Project=schematic v0.4.1
*Date=10:10:06
*CreatedBy=Fritzing 0.9.2b.11.19.8d2d5970658f0bed09c661c9ea9a515b5f40f44c
*
*
*Coordinates in mm, always center of component
*Origin 0/0=Lower left corner of PCB
*Rotation in degree (0-360, math. pos.)
*
*No;Value;Package;X;Y;Rotation;Side;Name
1;;300 mil [THT];63.9112;-88.3166;-90;Bottom;D16
2;;;1.82239;-21.3142;0;Bottom;TXT11
3;;;89.2556;-17.3738;0;Bottom;Copper Fill448
4;;;44.958;-21.0695;0;Bottom;Copper Fill570
5;;;76.9112;-42.0499;0;Bottom;Copper Fill541
6;;;64.008;-73.7999;0;Bottom;Copper Fill193
7;;;26.9494;-52.6036;0;Bottom;Copper Fill38
8;;TO220 [THT];53.7512;-91.136;0;Bottom;Q1
9;;;13.7414;-12.7764;0;Bottom;Copper Fill467
10;;;13.7414;-5.3342;0;Bottom;Copper Fill188
11;;3 mm [THT];13.7698;-83.9764;0;Bottom;LED4
12;;;6.1214;-10.2364;0;Bottom;Copper Fill470
13;;;16.6624;-95.9995;0;Bottom;Copper Fill232
14;;;21.3868;-48.9968;0;Bottom;Copper Fill370
15;;DIP (Dual Inline) [THT];74.0712;-55.957;180;Bottom;IC1
16;;;84.1629;-40.2846;0;Bottom;Copper Fill504
17;;;13.716;-69.5962;0;Bottom;Copper Fill25
18;;;42.2529;-8.8648;0;Bottom;Copper Fill295
19;;computer-peripheral-power;31.5262;-64.212;90;Bottom;J5
20;;;39.878;-42.0499;0;Bottom;Copper Fill576
21;;;64.5461;-73.737;0;Bottom;Via19
22;;;17.6022;-15.9514;0;Bottom;Copper Fill158
23;;;11.2014;-28.0164;0;Bottom;Copper Fill122
24;;;8.6614;-35.6364;0;Bottom;Copper Fill95
25;;;42.2529;-74.219;0;Bottom;Copper Fill253
26;4.7nF;200 mil [THT, multilayer];32.7962;-35.002;0;Bottom;C23
27;;;97.6376;-41.58;0;Bottom;Copper Fill56
28;;;44.1833;-20.2948;0;Bottom;Copper Fill272
29;;;1.89408;-36.5859;0;Bottom;TXT11
30;;;13.7414;-28.0164;0;Bottom;Copper Fill123
31;10k;THT;32.7962;-23.572;-90;Bottom;R54
32;;;42.2529;-97.7648;0;Bottom;Copper Fill523
33;;;95.0214;-70.5614;0;Bottom;Copper Fill340
34;;;72.7329;-38.7352;0;Bottom;Copper Fill500
35;;;8.6614;-10.2364;0;Bottom;Copper Fill471
36;;;44.2214;-36.2714;0;Bottom;Copper Fill92
37;;;89.662;-51.5495;0;Bottom;Copper Fill250
38;;;95.0214;-52.7814;0;Bottom;Copper Fill45
39;;;34.0661;-41.352;0;Bottom;Via5
40;;;11.2014;-7.6964;0;Bottom;Copper Fill477
41;;;6.1214;-28.0164;0;Bottom;Copper Fill420
42;;;93.5736;-93.4595;0;Bottom;Copper Fill266
43;;;27.7876;-49.1492;0;Bottom;Copper Fill362
44;;;48.5648;-83.363;0;Bottom;Copper Fill9
45;;;66.2432;-8.3695;0;Bottom;Copper Fill302
46;;;6.1214;-33.0964;0;Bottom;Copper Fill100
47;;;11.2014;-17.8564;0;Bottom;Copper Fill452
48;;;92.4814;-37.8462;0;Bottom;Copper Fill84
49;;;84.2311;-40.717;0;Bottom;Via8
50;;;65.7733;-54.2292;0;Bottom;Copper Fill240
51;;;36.8808;-69.3295;0;Bottom;Copper Fill581
52;;;30.988;-35.0395;0;Bottom;Copper Fill256
53;;;83.6676;-40.7799;0;Bottom;Copper Fill212
54;;;33.8582;-37.5795;0;Bottom;Copper Fill510
55;;;11.2014;-25.4764;0;Bottom;Copper Fill430
56;;;8.6614;-15.3164;0;Bottom;Copper Fill459
57;;;13.7414;-7.6964;0;Bottom;Copper Fill182
58;;;69.0946;-69.1467;-90;Bottom;TXT2
59;;;70.8649;-73.8283;0;Bottom;TXT1
60;;;63.8429;-91.2116;0;Bottom;Copper Fill222
61;;;8.6614;-17.8564;0;Bottom;Copper Fill154
62;;;64.9732;-73.7999;0;Bottom;Copper Fill194
63;0.1µF;200 mil [THT, multilayer];36.6062;-39.447;-90;Bottom;C7
64;;;31.3944;-64.6178;0;Bottom;Copper Fill331
65;;TO220 [THT];6.1262;-82.373;180;Bottom;Q4
66;;;61.8744;-82.8042;0;Bottom;Copper Fill323
67;;;8.6614;-17.8564;0;Bottom;Copper Fill451
68;160;THT;52.4812;-41.352;-90;Bottom;R31
69;;;24.257;-9.2966;0;Bottom;Copper Fill469
70;;;21.6154;-51.5368;0;Bottom;Copper Fill366
71;;;8.6614;-25.4764;0;Bottom;Copper Fill127
72;;;54.0766;-78.1814;0;Bottom;Copper Fill320
73;;;43.3832;-41.3895;0;Bottom;Copper Fill204
74;;;88.8492;-71.8568;0;Bottom;Copper Fill316
75;;;38.7604;-58.5599;0;Bottom;Copper Fill556
76;;;8.6614;-20.3964;0;Bottom;Copper Fill146
77;;DIP (Dual Inline) [THT];74.0712;-40.717;180;Bottom;IC2
78;;;3.9116;-36.9699;0;Bottom;Copper Fill511
79;;;2.6416;-89.7003;0;Bottom;Copper Fill526
80;160;THT;62.6412;-69.927;90;Bottom;R25
81;;;46.7614;-80.442;0;Bottom;Copper Fill319
82;;;8.6614;-15.3164;0;Bottom;Copper Fill162
83;;;97.8916;-45.136;0;Bottom;Copper Fill374
84;;;19.3929;-71.7552;0;Bottom;Copper Fill590
85;;;4.2037;-67.9452;0;Bottom;Copper Fill196
86;;;1.81872;-39.2011;0;Bottom;TXT7
87;;;11.2014;-17.8564;0;Bottom;Copper Fill155
88;;;91.1733;-45.4408;0;Bottom;Copper Fill248
89;;;91.2876;-93.4595;0;Bottom;Copper Fill561
90;;;2.5908;-83.9599;0;Bottom;Copper Fill534
91;;;46.4058;-62.9795;0;Bottom;Copper Fill285
92;100k;THT;37.2412;-95.962;0;Bottom;R11
93;;;81.9912;-15.291;0;Bottom;Copper Fill454
94;;;90.1954;-40.7164;0;Bottom;Copper Fill69
95;;;76.9112;-57.2899;0;Bottom;Copper Fill536
96;;;90.5129;-10.4396;0;Bottom;Copper Fill484
97;;300 mil [THT];60.7362;-89.5866;-90;Bottom;D9
98;;;11.2014;-5.3342;0;Bottom;Copper Fill187
99;;;74.676;-27.0004;0;Bottom;Copper Fill125
100;;;92.8438;-18.5163;-90;Bottom;TXT4
101;;TO220 [THT];39.4002;-71.832;90;Bottom;Q7
102;;;37.8714;-40.9958;0;Bottom;Copper Fill68
103;;;13.7414;-35.6364;0;Bottom;Copper Fill97
104;;;90.1954;-43.2564;0;Bottom;Copper Fill64
105;;;25.6794;-9.3728;0;Bottom;Copper Fill178
106;;;47.5488;-9.5252;0;Bottom;Copper Fill166
107;2.4k;THT;61.3712;-40.082;90;Bottom;R33
108;;;13.7414;-30.5564;0;Bottom;Copper Fill113
109;;;95.0214;-35.2554;0;Bottom;Copper Fill98
110;;;97.8916;-50.216;0;Bottom;Copper Fill49
111;;;43.053;-9.6395;0;Bottom;Copper Fill595
112;;;37.8333;-68.4024;0;Bottom;Copper Fill282
113;;;95.0214;-37.5414;0;Bottom;Copper Fill89
114;;;60.198;-14.7195;0;Bottom;Copper Fill294
115;;;8.6614;-7.6964;0;Bottom;Copper Fill476
116;;;21.3868;-28.6768;0;Bottom;Copper Fill119
117;;;92.4814;-40.3862;0;Bottom;Copper Fill70
118;;;90.5811;-10.8721;0;Bottom;Via17
119;;;57.1754;-89.6495;0;Bottom;Copper Fill519
120;;;8.6614;-22.9364;0;Bottom;Copper Fill138
121;;;95.0214;-68.0214;0;Bottom;Copper Fill342
122;;;79.7814;-30.1754;0;Bottom;Copper Fill115
123;;THT;77.2462;-10.237;-90;Bottom;JP4
124;;;21.3868;-54.0768;0;Bottom;Copper Fill360
125;;THT;70.8962;-69.292;0;Bottom;JP1
126;;;6.1214;-7.6964;0;Bottom;Copper Fill475
127;;;13.7414;-22.9364;0;Bottom;Copper Fill140
128;;;40.3606;-37.9224;0;Bottom;Copper Fill87
129;;;66.3829;-42.5706;0;Bottom;Copper Fill544
130;;;40.3098;-15.6212;0;Bottom;Copper Fill456
131;;;21.3868;-46.4568;0;Bottom;Copper Fill59
132;100k;THT;42.3212;-69.927;90;Bottom;R49
133;;;86.741;-93.9675;0;Bottom;Copper Fill289
134;;;56.9214;-35.5094;0;Bottom;Copper Fill398
135;;;11.8364;-88.316;0;Bottom;Copper Fill312
136;;;4.2037;-66.9546;0;Bottom;Copper Fill197
137;;;3.302;-92.8626;0;Bottom;Copper Fill1
138;;;96.2533;-35.4586;0;Bottom;Copper Fill521
139;;;93.0656;-6.0708;0;Bottom;Copper Fill184
140;;;6.1214;-22.9364;0;Bottom;Copper Fill137
141;;;21.3868;-23.5968;0;Bottom;Copper Fill134
142;;;49.3014;-25.07;0;Bottom;Copper Fill130
143;;;17.5133;-97.7648;0;Bottom;Copper Fill527
144;;;93.7133;-35.4586;0;Bottom;Copper Fill563
145;;;21.3868;-18.5168;0;Bottom;Copper Fill151
146;;THT;84.2312;-10.237;-90;Bottom;JP5
147;;;13.7414;-22.9364;0;Bottom;Copper Fill439
148;;;81.6229;-86.6396;0;Bottom;Copper Fill267
149;;;13.7414;-25.4764;0;Bottom;Copper Fill431
150;;;63.3476;-47.0664;0;Bottom;Copper Fill371
151;;;8.6614;-38.1764;0;Bottom;Copper Fill81
152;470;THT;41.6862;-41.987;90;Bottom;R8
153;;;13.7414;-35.6364;0;Bottom;Copper Fill402
154;;;48.9966;-78.1814;0;Bottom;Copper Fill15
155;;;56.2356;-32.5376;0;Bottom;Copper Fill408
156;;;92.42;-97.0604;0;Bottom;TXT9
157;;;21.3868;-13.4368;0;Bottom;Copper Fill463
158;;;35.2933;-19.0248;0;Bottom;Copper Fill270
159;;;57.8387;-10.5791;0;Bottom;TXT3
160;;300 mil [THT];49.3316;-94.692;180;Bottom;D10
161;;;53.721;-36.9064;0;Bottom;Copper Fill76
162;;;80.7466;-22.3014;0;Bottom;Copper Fill433
163;;;51.5366;-78.1814;0;Bottom;Copper Fill16
164;;;89.9463;-79.4519;0;Bottom;Hole7
165;750;THT;6.7612;-48.337;180;Bottom;R41
166;;;21.3868;-53.8228;0;Bottom;Copper Fill43
167;;3 mm [THT];64.6022;-38.1768;90;Bottom;LED8
168;;;48.768;-78.0798;0;Bottom;Copper Fill329
169;;;21.336;-59.1314;0;Bottom;Copper Fill382
170;;;8.6614;-28.0164;0;Bottom;Copper Fill421
171;;;63.8429;-93.0912;0;Bottom;Copper Fill515
172;;;21.3868;-18.5168;0;Bottom;Copper Fill449
173;2.4k;THT;22.6362;-82.627;180;Bottom;R18
174;;;13.7414;-17.8564;0;Bottom;Copper Fill453
175;;;77.2033;-95.5296;0;Bottom;Copper Fill227
176;;;95.0214;-42.6214;0;Bottom;Copper Fill380
177;;3 mm [THT];46.1313;-89.668;0;Bottom;LED1
178;;;21.0693;-80.3658;0;Bottom;Copper Fill602
179;2.4k;THT;37.2178;-90.2235;0;Bottom;R9
180;;;90.0176;-10.9095;0;Bottom;Copper Fill485
181;;;42.9133;-41.8848;0;Bottom;Copper Fill202
182;;;82.3976;-70.2566;0;Bottom;Copper Fill23
183;;;84.6582;-34.4299;0;Bottom;Copper Fill543
184;;;88.6333;-64.44;0;Bottom;Copper Fill584
185;;;23.4442;-14.7195;0;Bottom;Copper Fill522
186;;;85.4329;-35.2046;0;Bottom;Copper Fill542
187;1k;THT;22.6362;-92.787;180;Bottom;R16
188;;;51.9684;-21.133;0;Bottom;Copper Fill141
189;0.01µF;200 mil [THT, multilayer];9.3012;-45.797;0;Bottom;C19
190;;;72.7329;-37.7446;0;Bottom;Copper Fill501
191;;;8.6614;-7.6964;0;Bottom;Copper Fill180
192;;;11.2014;-5.3342;0;Bottom;Copper Fill481
193;;;29.591;-46.1012;0;Bottom;Copper Fill48
194;;;59.1566;-78.1814;0;Bottom;Copper Fill322
195;;;8.6614;-38.1764;0;Bottom;Copper Fill391
196;;;21.3868;-31.2168;0;Bottom;Copper Fill109
197;;;42.9514;-37.9224;0;Bottom;Copper Fill88
198;;;6.1214;-20.3964;0;Bottom;Copper Fill443
199;;;89.3111;-46.432;0;Bottom;Via1
200;;;13.7414;-15.3164;0;Bottom;Copper Fill164
201;;;1.87995;-8.91036;0;Bottom;TXT11
202;;;37.719;-86.8174;0;Bottom;Copper Fill311
203;;;30.1498;-43.7898;0;Bottom;Copper Fill369
204;;;35.3314;-82.2962;0;Bottom;Copper Fill8
205;;;6.1214;-33.0964;0;Bottom;Copper Fill404
206;;;41.4782;-9.6395;0;Bottom;Copper Fill296
207;;;21.3868;-23.5968;0;Bottom;Copper Fill435
208;;;44.2976;-85.268;0;Bottom;Copper Fill315
209;;;21.3868;-33.7568;0;Bottom;Copper Fill403
210;;;42.2529;-96.8504;0;Bottom;Copper Fill229
211;;;6.1214;-17.8564;0;Bottom;Copper Fill153
212;;;35.2933;-20.5996;0;Bottom;Copper Fill269
213;;;66.3829;-38.9892;0;Bottom;Copper Fill545
214;;;6.1214;-22.9364;0;Bottom;Copper Fill436
215;;;85.4329;-35.2046;0;Bottom;Copper Fill242
216;;;6.1214;-5.3342;0;Bottom;Copper Fill479
217;;;95.0214;-50.2414;0;Bottom;Copper Fill368
218;;;6.1214;-30.5564;0;Bottom;Copper Fill412
219;;;18.3388;-95.9995;0;Bottom;Copper Fill233
220;2.4k;THT;37.2412;-82.627;0;Bottom;R12
221;;;21.3868;-36.2968;0;Bottom;Copper Fill397
222;;;39.1033;-42.85;0;Bottom;Copper Fill574
223;;;8.6614;-20.3964;0;Bottom;Copper Fill444
224;0.1µF;200 mil [THT, multilayer];64.5462;-8.33196;180;Bottom;C5
225;;;86.0933;-94.666;0;Bottom;Copper Fill565
226;;;94.5134;-17.6532;0;Bottom;Copper Fill417
227;;;24.5618;-19.101;0;Bottom;Copper Fill149
228;;;70.6601;-64.3677;0;Bottom;TXT1
229;;3 mm [THT];63.9672;-53.4168;90;Bottom;LED6
230;;;68.3133;-90.4496;0;Bottom;Copper Fill217
231;;;95.0214;-60.4014;0;Bottom;Copper Fill351
232;;;4.2037;-67.9452;0;Bottom;Copper Fill486
233;100k;THT;85.5012;-59.132;180;Bottom;R35
234;;;63.0936;-47.041;0;Bottom;Copper Fill55
235;;;19.3929;-71.7552;0;Bottom;Copper Fill291
236;;;84.1629;-41.2752;0;Bottom;Copper Fill503
237;;;85.4202;-93.9675;0;Bottom;Copper Fill288
238;;;53.848;-42.6595;0;Bottom;Copper Fill498
239;;;83.6676;-40.7799;0;Bottom;Copper Fill505
240;;;31.4833;-9.1696;0;Bottom;Copper Fill201
241;;;79.5274;-41.2498;0;Bottom;Copper Fill381
242;;;6.1214;-7.6964;0;Bottom;Copper Fill179
243;1k;THT;86.1362;-41.987;180;Bottom;R30
244;;;95.0214;-65.4814;0;Bottom;Copper Fill31
245;;;97.6376;-42.5198;0;Bottom;Copper Fill379
246;;;56.2102;-63.8304;0;Bottom;Copper Fill365
247;;;21.3868;-26.1368;0;Bottom;Copper Fill124
248;;;46.4058;-62.9795;0;Bottom;Copper Fill583
249;10k;THT;81.0562;-15.317;0;Bottom;R40
250;;;3.4798;-15.2148;0;Bottom;Copper Fill152
251;;;65.7733;-54.2292;0;Bottom;Copper Fill538
252;;;39.1033;-41.2752;0;Bottom;Copper Fill575
253;;;72.5932;-89.6495;0;Bottom;Copper Fill225
254;;;67.818;-8.3695;0;Bottom;Copper Fill303
255;;;3.5433;-84.9124;0;Bottom;Copper Fill532
256;;;38.7604;-69.3295;0;Bottom;Copper Fill284
257;;;36.8808;-58.5599;0;Bottom;Copper Fill555
258;;TO220 [THT];53.7512;-85.421;0;Bottom;Q3
259;;;16.6624;-95.9995;0;Bottom;Copper Fill528
260;;;79.1972;-58.1662;0;Bottom;Copper Fill36
261;;;33.3629;-38.0748;0;Bottom;Copper Fill507
262;;;84.8868;-6.0708;0;Bottom;Copper Fill183
263;;;95.0214;-50.2414;0;Bottom;Copper Fill50
264;;;95.0214;-52.7814;0;Bottom;Copper Fill363
265;;;2.5908;-83.9599;0;Bottom;Copper Fill236
266;;;95.0214;-42.6214;0;Bottom;Copper Fill66
267;;;8.6614;-12.7764;0;Bottom;Copper Fill465
268;;;54.0766;-78.1814;0;Bottom;Copper Fill17
269;;;91.8464;-79.3498;0;Bottom;Copper Fill12
270;;;25.146;-86.4364;0;Bottom;Copper Fill314
271;;;91.4146;-70.2566;0;Bottom;Copper Fill333
272;;;36.5633;-37.77;0;Bottom;Copper Fill586
273;;;41.402;-87.7191;0;Bottom;Copper Fill531
274;;;3.683;-67.4499;0;Bottom;Copper Fill198
275;;THT;8.6662;-22.937;0;Bottom;J6
276;;;67.6529;-54.2546;0;Bottom;Copper Fill537
277;;;92.4814;-42.9262;0;Bottom;Copper Fill65
278;;;79.502;-44.882;0;Bottom;Copper Fill376
279;;;77.8811;-7.06206;0;Bottom;Via6
280;;;6.1214;-10.2364;0;Bottom;Copper Fill174
281;;;89.9414;-32.2074;0;Bottom;Copper Fill410
282;;;65.7733;-57.8106;0;Bottom;Copper Fill241
283;;;95.0214;-37.5414;0;Bottom;Copper Fill395
284;;;52.9657;-6.11074;0;Bottom;TXT6
285;;;13.7414;-10.2364;0;Bottom;Copper Fill473
286;;;92.8021;-22.2818;-90;Bottom;TXT4
287;;;11.2014;-35.6364;0;Bottom;Copper Fill401
288;;;3.5433;-83.0328;0;Bottom;Copper Fill235
289;;;46.4058;-56.6295;0;Bottom;Copper Fill557
290;;;3.1496;-21.5648;0;Bottom;Copper Fill135
291;;3 mm [THT];64.6022;-43.2568;90;Bottom;LED7
292;0.22µF;200 mil [THT, multilayer];62.0062;-23.572;-90;Bottom;C6
293;;;21.3868;-31.2168;0;Bottom;Copper Fill411
294;;;82.3214;-32.182;0;Bottom;Copper Fill107
295;;;29.1846;-50.089;0;Bottom;Copper Fill42
296;;;95.0214;-47.7014;0;Bottom;Copper Fill372
297;;;44.1833;-20.2948;0;Bottom;Copper Fill569
298;;;54.483;-27.8132;0;Bottom;Copper Fill419
299;;;6.1214;-25.4764;0;Bottom;Copper Fill428
300;;;92.4814;-37.8462;0;Bottom;Copper Fill394
301;;;27.0811;-8.96706;0;Bottom;Via15
302;;;21.3868;-41.3768;0;Bottom;Copper Fill383
303;1µF;200 mil [THT, multilayer];82.9612;-34.367;180;Bottom;C12
304;;;4.6736;-67.4499;0;Bottom;Copper Fill199
305;;;93.472;-21.9966;0;Bottom;Copper Fill173
306;;;95.0214;-78.1814;0;Bottom;Copper Fill328
307;;;84.0486;-74.727;0;Bottom;Copper Fill334
308;;;95.0214;-65.4814;0;Bottom;Copper Fill343
309;;;62.738;-21.0695;0;Bottom;Copper Fill277
310;;;13.7414;-20.3964;0;Bottom;Copper Fill446
311;;;70.2611;-46.432;0;Bottom;Via3
312;;;4.2037;-66.9546;0;Bottom;Copper Fill487
313;;;82.3214;-30.1754;0;Bottom;Copper Fill116
314;;;13.7414;-40.5386;0;Bottom;Copper Fill73
315;;;57.4929;-76.124;0;Bottom;Copper Fill252
316;;;19.3929;-73.3046;0;Bottom;Copper Fill589
317;;;69.088;-89.6495;0;Bottom;Copper Fill220
318;;;19.0754;-36.2968;0;Bottom;Copper Fill90
319;;;92.4433;-94.6152;0;Bottom;Copper Fill264
320;;;95.0214;-45.1614;0;Bottom;Copper Fill375
321;;DIP (Dual Inline) [THT];51.8462;-22.302;-90;Bottom;IC4
322;;;17.5133;-96.8504;0;Bottom;Copper Fill231
323;;;11.2014;-7.6964;0;Bottom;Copper Fill181
324;0.3µF;200 mil [THT, multilayer];9.3012;-42.622;0;Bottom;C18
325;;;36.6014;-86.1062;0;Bottom;Copper Fill3
326;;;77.3938;-77.8258;0;Bottom;Copper Fill325
327;;;73.533;-20.4599;0;Bottom;Copper Fill281
328;;;33.8582;-37.5795;0;Bottom;Copper Fill216
329;;;44.1833;-37.8208;0;Bottom;Copper Fill591
330;;;69.088;-89.6495;0;Bottom;Copper Fill514
331;;;95.0214;-47.7014;0;Bottom;Copper Fill57
332;;;13.7414;-15.3164;0;Bottom;Copper Fill461
333;470;THT;37.8762;-22.937;-90;Bottom;R2
334;;;37.8333;-68.4024;0;Bottom;Copper Fill580
335;;;64.9732;-45.0344;0;Bottom;Copper Fill61
336;;;32.4866;-18.2374;0;Bottom;Copper Fill426
337;;;21.3868;-48.9968;0;Bottom;Copper Fill52
338;;;83.5533;-25.324;0;Bottom;Copper Fill251
339;;;6.1214;-5.3342;0;Bottom;Copper Fill185
340;;;11.2014;-12.7764;0;Bottom;Copper Fill466
341;;;34.0233;-10.4396;0;Bottom;Copper Fill585
342;3.9k;THT;68.9912;-33.732;180;Bottom;R7
343;;;65.7733;-59.3092;0;Bottom;Copper Fill539
344;0.1µF;200 mil [THT, multilayer];31.5262;-9.60196;180;Bottom;C1
345;;;55.6133;-19.3804;0;Bottom;Copper Fill261
346;;;11.0236;-42.6595;0;Bottom;Copper Fill299
347;;;95.0214;-73.1014;0;Bottom;Copper Fill336
348;;;42.9133;-40.9196;0;Bottom;Copper Fill493
349;;;43.3832;-41.3895;0;Bottom;Copper Fill495
350;100k;THT;85.5012;-51.512;180;Bottom;R37
351;;;6.1214;-17.8564;0;Bottom;Copper Fill450
352;;;11.2014;-20.3964;0;Bottom;Copper Fill445
353;;;39.1033;-42.85;0;Bottom;Copper Fill278
354;;;11.2014;-30.5564;0;Bottom;Copper Fill112
355;;300 mil [THT];6.1008;-95.962;0;Bottom;D11
356;;;60.0329;-76.124;0;Bottom;Copper Fill257
357;;;95.0214;-60.4014;0;Bottom;Copper Fill34
358;;;44.958;-21.0695;0;Bottom;Copper Fill274
359;;;90.3224;-44.5899;0;Bottom;Copper Fill548
360;;;73.3933;-64.44;0;Bottom;Copper Fill559
361;;;75.3872;-16.688;0;Bottom;Copper Fill157
362;;;63.8429;-91.2116;0;Bottom;Copper Fill516
363;;;82.423;-85.8395;0;Bottom;Copper Fill520
364;;;29.4132;-35.0395;0;Bottom;Copper Fill255
365;;;56.6166;-78.1814;0;Bottom;Copper Fill321
366;;;8.6614;-5.3342;0;Bottom;Copper Fill186
367;;;54.9529;-76.124;0;Bottom;Copper Fill554
368;;;11.2014;-10.2364;0;Bottom;Copper Fill176
369;;;42.418;-41.3895;0;Bottom;Copper Fill203
370;;;46.4566;-78.1814;0;Bottom;Copper Fill14
371;;;91.0082;-10.9095;0;Bottom;Copper Fill195
372;;;18.3388;-87.7699;0;Bottom;Copper Fill237
373;;;54.0512;-47.8792;0;Bottom;Copper Fill54
374;;;91.2876;-93.4595;0;Bottom;Copper Fill265
375;;;43.053;-9.6395;0;Bottom;Copper Fill297
376;0.1µF;200 mil [THT, multilayer];73.4362;-87.072;90;Bottom;C13
377;;;40.3733;-32.1058;0;Bottom;Copper Fill564
378;;;8.6614;-22.9364;0;Bottom;Copper Fill437
379;;;21.3868;-26.1368;0;Bottom;Copper Fill425
380;;;3.1496;-19.0248;0;Bottom;Copper Fill442
381;;;66.3829;-42.5706;0;Bottom;Copper Fill244
382;;;81.1784;-27.4068;0;Bottom;Copper Fill424
383;1k;THT;96.2962;-10.872;-90;Bottom;R59
384;100k;THT;22.6362;-95.962;180;Bottom;R17
385;;;11.2014;-38.1764;0;Bottom;Copper Fill82
386;;;95.0214;-75.6414;0;Bottom;Copper Fill21
387;;;34.0868;-12.4716;0;Bottom;Copper Fill462
388;10µF;200 mil [THT, tantalum];81.6912;-88.342;-90;Bottom;C16
389;;;2.6162;-29.1848;0;Bottom;Copper Fill99
390;;;12.8016;-52.8576;0;Bottom;Copper Fill39
391;;;54.8132;-42.6595;0;Bottom;Copper Fill499
392;;;39.878;-42.0499;0;Bottom;Copper Fill279
393;;;67.5132;-89.6495;0;Bottom;Copper Fill219
394;;;16.51;-69.9899;0;Bottom;Copper Fill599
395;;;1.89295;-18.7742;0;Bottom;TXT11
396;;;42.9561;-41.352;0;Bottom;Via11
397;0.1µF;200 mil [THT, multilayer];62.0062;-14.682;0;Bottom;C9
398;;;95.6613;-31.192;0;Bottom;Hole6
399;;;1.9635;-16.2342;0;Bottom;TXT11
400;;;25.1968;-21.0314;0;Bottom;Copper Fill142
401;;;61.1632;-21.0695;0;Bottom;Copper Fill276
402;;;43.688;-29.9722;0;Bottom;Copper Fill416
403;;;43.6118;-94.1072;0;Bottom;Copper Fill310
404;;;67.0433;-9.1696;0;Bottom;Copper Fill597
405;1k;THT;37.2178;-85.1435;0;Bottom;R13
406;;;13.7414;-38.1764;0;Bottom;Copper Fill83
407;;;79.8068;-51.105;0;Bottom;Copper Fill30
408;;;88.2396;-69.6724;0;Bottom;Copper Fill335
409;;;8.6614;-12.7764;0;Bottom;Copper Fill169
410;;;51.9684;-87.0714;0;Bottom;Copper Fill4
411;;;4.6736;-67.4499;0;Bottom;Copper Fill489
412;1k;THT;44.8612;-71.832;90;Bottom;R51
413;;;58.5978;-40.5894;0;Bottom;Copper Fill432
414;;;73.3933;-90.4496;0;Bottom;Copper Fill223
415;;;95.0214;-55.3214;0;Bottom;Copper Fill41
416;;;6.7437;-46.6346;0;Bottom;Copper Fill304
417;;SO16;82.3262;-69.927;90;Bottom;Pololu A1
418;;;26.5176;-9.0299;0;Bottom;Copper Fill200
419;;;49.9872;-2.2608;0;Bottom;Copper Fill189
420;;;13.7414;-20.3964;0;Bottom;Copper Fill148
421;;;30.2133;-35.8396;0;Bottom;Copper Fill254
422;;;17.7292;-23.5968;0;Bottom;Copper Fill133
423;;;92.202;-55.3468;0;Bottom;Copper Fill357
424;;;15.9258;-83.6678;0;Bottom;Copper Fill10
425;;;95.0214;-57.8614;0;Bottom;Copper Fill37
426;160;THT;65.8162;-69.927;-90;Bottom;R27
427;;;27.0129;-9.5252;0;Bottom;Copper Fill490
428;;;77.978;-94.7295;0;Bottom;Copper Fill228
429;;;17.7292;-21.0568;0;Bottom;Copper Fill143
430;;;92.8633;-84.1589;0;Bottom;TXT8
431;;;49.4284;-21.5394;0;Bottom;Copper Fill136
432;1k;THT;22.6362;-85.167;180;Bottom;R19
433;;;89.5604;-57.8614;0;Bottom;Copper Fill355
434;;;84.1629;-41.2752;0;Bottom;Copper Fill210
435;2.4k;THT;58.8312;-40.082;90;Bottom;R34
436;;;33.4311;-37.542;0;Bottom;Via7
437;;;77.6732;-56.3882;0;Bottom;Copper Fill347
438;;;84.6582;-34.4299;0;Bottom;Copper Fill243
439;;;92.7862;-42.7484;0;Bottom;Copper Fill373
440;;THT;15.6512;-66.117;0;Bottom;MPX4250A
441;;THT;90.5812;-24.842;0;Bottom;JP2
442;;;11.2014;-30.5564;0;Bottom;Copper Fill414
443;;;31.5261;-9.60206;0;Bottom;Via14
444;;;36.8808;-69.3295;0;Bottom;Copper Fill283
445;;;41.7068;-68.4786;0;Bottom;Copper Fill338
446;;300 mil [THT];6.1008;-92.787;0;Bottom;D12
447;;;3.58619;-77.547;0;Bottom;Hole8
448;;;41.4782;-9.6395;0;Bottom;Copper Fill594
449;;;11.2014;-10.2364;0;Bottom;Copper Fill472
450;;;95.0214;-68.0214;0;Bottom;Copper Fill29
451;;;66.3829;-37.4906;0;Bottom;Copper Fill246
452;;;6.1214;-35.6364;0;Bottom;Copper Fill399
453;;THT;4.8562;-22.937;0;Bottom;J8
454;;;6.1214;-12.7764;0;Bottom;Copper Fill464
455;;TO220 [THT];49.9412;-61.418;180;Bottom;Q6
456;;;33.3629;-37.1096;0;Bottom;Copper Fill508
457;;;36.6776;-24.2318;0;Bottom;Copper Fill434
458;0.1µF;200 mil [THT, multilayer];79.7862;-94.692;0;Bottom;C15
459;;;54.3433;-42.1896;0;Bottom;Copper Fill205
460;;;16.4084;-22.9364;0;Bottom;Copper Fill389
461;;;91.1606;-60.3506;0;Bottom;Copper Fill349
462;;;8.6614;-33.0964;0;Bottom;Copper Fill405
463;;;69.2658;-62.2556;0;Bottom;Copper Fill348
464;;;54.9529;-76.124;0;Bottom;Copper Fill258
465;;;73.3933;-62.8652;0;Bottom;Copper Fill262
466;100k;THT;60.1012;-71.832;90;Bottom;R55
467;;;95.0214;-45.1614;0;Bottom;Copper Fill62
468;;;54.3433;-43.1548;0;Bottom;Copper Fill496
469;;;3.4798;-15.2148;0;Bottom;Copper Fill457
470;;;29.2862;-45.9234;0;Bottom;Copper Fill367
471;;;73.2282;-38.2399;0;Bottom;Copper Fill209
472;;;8.6614;-28.0164;0;Bottom;Copper Fill121
473;0.22µF;200 mil [THT, multilayer];39.1462;-39.447;90;Bottom;C8
474;;;43.9674;-90.9068;0;Bottom;Copper Fill2
475;;;72.7329;-19.6852;0;Bottom;Copper Fill577
476;;;47.3329;-62.0524;0;Bottom;Copper Fill582
477;;;4.2211;-67.387;0;Bottom;Via16
478;;;67.5132;-89.6495;0;Bottom;Copper Fill513
479;;;45.0088;-36.9699;0;Bottom;Copper Fill592
480;;;21.3868;-38.8368;0;Bottom;Copper Fill78
481;;;6.1214;-15.3164;0;Bottom;Copper Fill458
482;;;32.8676;-37.5795;0;Bottom;Copper Fill215
483;;;82.423;-85.8395;0;Bottom;Copper Fill268
484;;;61.9633;-20.2948;0;Bottom;Copper Fill275
485;470;THT;58.8312;-22.302;-90;Bottom;R6
486;;;71.8566;-52.6798;0;Bottom;Copper Fill361
487;;;84.6582;-40.7799;0;Bottom;Copper Fill213
488;;;64.5033;-73.3046;0;Bottom;Copper Fill483
489;;;72.7329;-38.7352;0;Bottom;Copper Fill207
490;;;34.4678;-86.4364;0;Bottom;Copper Fill313
491;;;89.9922;-47.6252;0;Bottom;Copper Fill33
492;;;31.5468;-20.879;0;Bottom;Copper Fill440
493;;;8.6614;-40.5386;0;Bottom;Copper Fill71
494;;;54.3861;-42.622;0;Bottom;Via10
495;;;31.4833;-10.1348;0;Bottom;Copper Fill491
496;;;1.95052;-33.933;0;Bottom;TXT10
497;;;60.0329;-76.124;0;Bottom;Copper Fill553
498;;;51.8414;-25.07;0;Bottom;Copper Fill131
499;1k;THT;52.4812;-71.832;90;Bottom;R58
500;;;91.1733;-36.119;0;Bottom;Copper Fill550
501;;;42.9133;-41.8848;0;Bottom;Copper Fill492
502;;;7.5184;-45.8599;0;Bottom;Copper Fill305
503;;;58.6232;-14.7195;0;Bottom;Copper Fill588
504;;;6.1214;-12.7764;0;Bottom;Copper Fill168
505;;;38.1762;-59.6902;0;Bottom;Copper Fill352
506;;;48.9966;-43.104;0;Bottom;Copper Fill53
507;;3 mm [THT];13.7698;-89.0564;0;Bottom;LED3
508;;;76.9112;-57.2899;0;Bottom;Copper Fill238
509;;;3.5433;-83.0328;0;Bottom;Copper Fill533
510;;;13.7414;-33.0964;0;Bottom;Copper Fill407
511;1k;THT;44.2262;-41.987;90;Bottom;R21
512;;;11.2014;-22.9364;0;Bottom;Copper Fill438
513;2.4k;THT;60.1012;-58.497;-90;Bottom;R26
514;;;47.3329;-55.7024;0;Bottom;Copper Fill260
515;;;18.3388;-87.7699;0;Bottom;Copper Fill535
516;;;3.5941;-88.7732;0;Bottom;Copper Fill525
517;;THT;13.7462;-22.937;0;Bottom;J7
518;;;87.4014;-30.1754;0;Bottom;Copper Fill118
519;;;31.6484;-64.186;0;Bottom;Copper Fill345
520;;;44.2976;-82.855;0;Bottom;Copper Fill11
521;;;1.89295;-13.7648;0;Bottom;TXT11
522;100k;THT;86.1362;-36.907;180;Bottom;R38
523;;;21.3868;-38.8368;0;Bottom;Copper Fill388
524;;;91.7194;-79.3752;0;Bottom;Copper Fill318
525;2.49k;THT;36.6062;-15.952;180;Bottom;R1
526;;;92.8442;-13.2908;-90;Bottom;TXT4
527;;;6.1214;-28.0164;0;Bottom;Copper Fill120
528;47µF;200 mil [THT, tantalum];68.3562;-87.072;90;Bottom;C14
529;;;55.6133;-19.3804;0;Bottom;Copper Fill558
530;;;95.0214;-73.1014;0;Bottom;Copper Fill24
531;;;13.7414;-30.5564;0;Bottom;Copper Fill415
532;;;38.7604;-58.5599;0;Bottom;Copper Fill259
533;;;56.6166;-78.1814;0;Bottom;Copper Fill18
534;;;89.5604;-55.3214;0;Bottom;Copper Fill359
535;;;70.8961;-47.702;0;Bottom;Via2
536;;;42.2529;-10.4396;0;Bottom;Copper Fill593
537;;;88.6968;-61.519;0;Bottom;Copper Fill350
538;;;11.2014;-33.0964;0;Bottom;Copper Fill406
539;;;61.1632;-21.0695;0;Bottom;Copper Fill572
540;;;15.0368;-38.0494;0;Bottom;Copper Fill384
541;;;72.7329;-37.7446;0;Bottom;Copper Fill208
542;;;41.402;-95.9995;0;Bottom;Copper Fill524
543;;300 mil [THT];30.2562;-23.5466;-90;Bottom;D17
544;;;8.6614;-30.5564;0;Bottom;Copper Fill111
545;;;92.4814;-43.1294;0;Bottom;Copper Fill378
546;;;17.7292;-18.5168;0;Bottom;Copper Fill150
547;1k;THT;84.8662;-5.79196;0;Bottom;R60
548;;;11.2014;-20.3964;0;Bottom;Copper Fill147
549;470;THT;40.4162;-22.937;-90;Bottom;R4
550;;;92.4814;-40.5894;0;Bottom;Copper Fill385
551;;;97.3328;-39.9798;0;Bottom;Copper Fill387
552;;;95.0214;-75.6414;0;Bottom;Copper Fill332
553;;TO220 [THT];39.4002;-61.037;90;Bottom;Q5
554;;;86.741;-93.9675;0;Bottom;Copper Fill568
555;;;87.1728;-14.0464;0;Bottom;Copper Fill160
556;;;64.5033;-73.3046;0;Bottom;Copper Fill192
557;;;86.0933;-93.3198;0;Bottom;Copper Fill287
558;1µF;200 mil [THT, multilayer];19.4612;-69.927;90;Bottom;C20
559;;;50.165;-39.1162;0;Bottom;Copper Fill60
560;;;12.5984;-42.6595;0;Bottom;Copper Fill300
561;;;57.4929;-76.124;0;Bottom;Copper Fill552
562;;;17.5768;-60.376;0;Bottom;Copper Fill353
563;;;2.0828;-51.359;0;Bottom;Copper Fill44
564;;;21.3868;-10.8968;0;Bottom;Copper Fill468
565;;;50.0118;-98.4293;0;Top;blkr2
566;;;74.7268;-77.8258;0;Bottom;Copper Fill324
567;;;21.3868;-43.9168;0;Bottom;Copper Fill377
568;;;33.3629;-37.1096;0;Bottom;Copper Fill214
569;;;79.1972;-55.6262;0;Bottom;Copper Fill40
570;;;6.1214;-38.1764;0;Bottom;Copper Fill390
571;;;90.5129;-50.724;0;Bottom;Copper Fill249
572;;;18.3388;-95.9995;0;Bottom;Copper Fill529
573;;;67.6529;-54.2546;0;Bottom;Copper Fill239
574;;;71.9582;-20.4599;0;Bottom;Copper Fill578
575;;;51.308;-78.0798;0;Bottom;Copper Fill330
576;;;6.1214;-15.3164;0;Bottom;Copper Fill161
577;;;66.3829;-37.4906;0;Bottom;Copper Fill546
578;;;31.5261;-41.352;0;Bottom;Via4
579;2.49k;THT;49.3062;-15.317;180;Bottom;R3
580;;;95.0214;-57.8614;0;Bottom;Copper Fill354
581;;;79.1972;-55.6516;0;Bottom;Copper Fill356
582;;;32.8676;-37.5795;0;Bottom;Copper Fill509
583;;;72.5932;-63.6399;0;Bottom;Copper Fill263
584;;;66.3829;-38.9892;0;Bottom;Copper Fill245
585;;;92.4433;-94.6152;0;Bottom;Copper Fill560
586;1k;THT;85.5012;-56.592;180;Bottom;R24
587;100k;THT;55.0212;-71.832;90;Bottom;R56
588;;;8.6614;-35.6364;0;Bottom;Copper Fill400
589;;;49.9872;-70.917;0;Bottom;Copper Fill46
590;;;29.8958;-85.4966;0;Bottom;Copper Fill5
591;2.4k;THT;22.6362;-90.247;180;Bottom;R15
592;;;86.2076;-9.7284;0;Bottom;Copper Fill474
593;;;11.2014;-15.3164;0;Bottom;Copper Fill163
594;;;12.446;-56.9216;0;Bottom;Copper Fill13
595;;;16.51;-69.9899;0;Bottom;Copper Fill307
596;;;1.95051;-11.3798;0;Bottom;TXT11
597;;;95.0214;-62.9414;0;Bottom;Copper Fill346
598;;DIP (Dual Inline) [THT];82.3262;-22.302;-90;Bottom;IC3
599;;;67.0433;-7.5948;0;Bottom;Copper Fill301
600;;;77.2414;-32.182;0;Bottom;Copper Fill105
601;;;19.0754;-38.8368;0;Bottom;Copper Fill77
602;;;62.738;-21.0695;0;Bottom;Copper Fill573
603;;;2.032;-44.7804;0;Bottom;Copper Fill58
604;;;34.29;-67.996;0;Bottom;Copper Fill341
605;;;6.1214;-20.3964;0;Bottom;Copper Fill145
606;0.1µF;200 mil [THT, multilayer];39.7812;-9.60196;180;Bottom;C3
607;;;11.2014;-22.9364;0;Bottom;Copper Fill139
608;;;29.6672;-36.2714;0;Bottom;Copper Fill85
609;;;76.4032;-94.7295;0;Bottom;Copper Fill518
610;;;58.6232;-14.7195;0;Bottom;Copper Fill293
611;;;21.3868;-28.6768;0;Bottom;Copper Fill418
612;;;92.9572;-27.4656;-90;Bottom;TXT4
613;;;45.0088;-36.9699;0;Bottom;Copper Fill298
614;0.22µF;200 mil [THT, multilayer];44.2262;-23.572;-90;Bottom;C4
615;;;65.7733;-57.8106;0;Bottom;Copper Fill540
616;;;95.0214;-78.1814;0;Bottom;Copper Fill20
617;;;12.5984;-42.6595;0;Bottom;Copper Fill596
618;;;71.9582;-20.4599;0;Bottom;Copper Fill280
619;;;32.2834;-59.106;0;Bottom;Copper Fill35
620;;;5.9436;-45.8599;0;Bottom;Copper Fill601
621;;;6.1214;-25.4764;0;Bottom;Copper Fill126
622;;;85.4202;-93.9675;0;Bottom;Copper Fill567
623;;;57.1754;-83.9599;0;Bottom;Copper Fill530
624;;;79.8068;-74.4222;0;Bottom;Copper Fill22
625;;;13.4112;-65.71;0;Bottom;Copper Fill317
626;;;11.2014;-38.1764;0;Bottom;Copper Fill392
627;;;95.0214;-40.0814;0;Bottom;Copper Fill386
628;;;59.4233;-13.9448;0;Bottom;Copper Fill587
629;;;11.2014;-12.7764;0;Bottom;Copper Fill170
630;;;8.6614;-33.0964;0;Bottom;Copper Fill101
631;;;54.3433;-42.1896;0;Bottom;Copper Fill497
632;1k;THT;86.1362;-39.447;180;Bottom;R29
633;;;79.7814;-32.182;0;Bottom;Copper Fill106
634;;;14.732;-69.9899;0;Bottom;Copper Fill306
635;;;11.2014;-35.6364;0;Bottom;Copper Fill96
636;;;73.533;-20.4599;0;Bottom;Copper Fill579
637;;;8.6614;-25.4764;0;Bottom;Copper Fill429
638;;;56.5658;-23.6222;0;Bottom;Copper Fill104
639;;;66.2432;-8.3695;0;Bottom;Copper Fill598
640;;;70.1929;-95.047;0;Bottom;Copper Fill190
641;;;62.103;-43.5104;0;Bottom;Copper Fill63
642;;;34.2646;-45.1614;0;Bottom;Copper Fill51
643;;;21.3868;-13.4368;0;Bottom;Copper Fill167
644;;;63.8429;-93.0912;0;Bottom;Copper Fill221
645;;;13.7414;-33.0964;0;Bottom;Copper Fill103
646;;;90.5129;-50.724;0;Bottom;Copper Fill549
647;1k;THT;47.4012;-71.832;90;Bottom;R57
648;;;3.683;-67.4499;0;Bottom;Copper Fill488
649;;;8.6614;-5.3342;0;Bottom;Copper Fill480
650;;;34.0233;-8.8648;0;Bottom;Copper Fill292
651;;;86.0933;-93.3198;0;Bottom;Copper Fill566
652;;;11.2014;-33.0964;0;Bottom;Copper Fill102
653;;;13.7414;-38.1764;0;Bottom;Copper Fill393
654;;;53.848;-42.6595;0;Bottom;Copper Fill206
655;;;54.3814;-25.07;0;Bottom;Copper Fill132
656;2.4k;THT;57.5612;-58.497;-90;Bottom;R28
657;100k;THT;86.1362;-44.527;180;Bottom;R36
658;;;21.3868;-36.2968;0;Bottom;Copper Fill91
659;;;79.8576;-78.4354;0;Bottom;Copper Fill326
660;;;11.2014;-15.3164;0;Bottom;Copper Fill460
661;;;41.402;-95.9995;0;Bottom;Copper Fill230
662;;;72.5932;-89.6495;0;Bottom;Copper Fill517
663;;;13.7414;-5.3342;0;Bottom;Copper Fill482
664;1k;THT;85.5012;-54.052;180;Bottom;R23
665;;;13.7414;-10.2364;0;Bottom;Copper Fill177
666;;;44.4246;-87.0714;0;Bottom;Copper Fill7
667;;;21.3868;-51.5368;0;Bottom;Copper Fill47
668;;;86.0933;-94.666;0;Bottom;Copper Fill286
669;;;13.7414;-25.4764;0;Bottom;Copper Fill129
670;;THT;93.5022;-91.0489;0;Bottom;J3
671;;v18za2p;86.1362;-90.247;-90;Bottom;U2
672;;;84.8614;-30.1754;0;Bottom;Copper Fill117
673;;;62.7634;-33.4266;0;Bottom;Copper Fill114
674;;;21.3868;-15.9768;0;Bottom;Copper Fill455
675;;;15.8496;-9.0299;0;Bottom;Copper Fill226
676;;;76.708;-40.7164;0;Bottom;Copper Fill67
677;;THT;21.4932;-33.732;0;Bottom;J4
678;;;68.3133;-88.8748;0;Bottom;Copper Fill218
679;;;59.1566;-78.1814;0;Bottom;Copper Fill19
680;;;68.3133;-88.8748;0;Bottom;Copper Fill512
681;;3 mm [THT];46.1313;-84.588;0;Bottom;LED2
682;5V;TO220 [THT];70.2612;-95.581;0;Bottom;U1
683;;;74.676;-11.9636;0;Bottom;Copper Fill172
684;;;8.6614;-30.5564;0;Bottom;Copper Fill413
685;;;25.3238;-13.132;0;Bottom;Copper Fill165
686;;;72.8011;-38.177;0;Bottom;Via9
687;;;21.3868;-21.0568;0;Bottom;Copper Fill441
688;;;73.2282;-38.2399;0;Bottom;Copper Fill502
689;;300 mil [THT];77.8812;-88.3674;90;Bottom;D15
690;;;59.3852;-32.2074;0;Bottom;Copper Fill409
691;;;45.7962;-69.2914;0;Bottom;Copper Fill339
692;;;11.2014;-28.0164;0;Bottom;Copper Fill422
693;;;15.4686;-87.1984;0;Bottom;Copper Fill6
694;;TO220 [THT];6.14962;-88.1114;180;Bottom;Q2
695;;;93.5736;-93.4595;0;Bottom;Copper Fill562
696;;;73.3933;-88.8748;0;Bottom;Copper Fill224
697;;;84.8614;-32.182;0;Bottom;Copper Fill108
698;1k;THT;49.9412;-71.832;90;Bottom;R50
699;;;95.0214;-55.3214;0;Bottom;Copper Fill358
700;100k;THT;22.6362;-87.707;180;Bottom;R20
701;;;17.6022;-33.198;0;Bottom;Copper Fill74
702;100k;THT;57.5612;-71.832;90;Bottom;R48
703;;;42.418;-41.3895;0;Bottom;Copper Fill494
704;;;11.2014;-25.4764;0;Bottom;Copper Fill128
705;;;6.7437;-46.6346;0;Bottom;Copper Fill600
706;;THT;90.5812;-15.952;180;Bottom;JP3
707;;;77.4954;-70.2566;0;Bottom;Copper Fill344
708;;;85.9536;-19.7868;0;Bottom;Copper Fill447
709;;;11.2014;-40.5386;0;Bottom;Copper Fill72
710;;;37.8968;-37.8716;0;Bottom;Copper Fill86
711;;;1.9635;-6.21536;0;Bottom;TXT7
712;;;84.6582;-40.7799;0;Bottom;Copper Fill506
713;;TO220 [THT];49.9412;-55.068;180;Bottom;Q8
714;;;6.1214;-38.1764;0;Bottom;Copper Fill80
715;;;83.5533;-25.324;0;Bottom;Copper Fill551
716;;;89.662;-59.1695;0;Bottom;Copper Fill247
717;;;44.1833;-21.8696;0;Bottom;Copper Fill271
718;;;3.58619;-54.6869;0;Bottom;Hole2
719;;3 mm [THT];63.9672;-58.4968;90;Bottom;LED5
720;;;95.0214;-70.5614;0;Bottom;Copper Fill26
721;;;8.6614;-10.2364;0;Bottom;Copper Fill175
722;;;90.1954;-38.1764;0;Bottom;Copper Fill79
723;;;79.6798;-94.8438;0;Bottom;Copper Fill309
724;100k;THT;37.2178;-87.6835;0;Bottom;R14
725;10k;THT;81.0562;-12.777;0;Bottom;R39
726;470;THT;70.2612;-22.302;-90;Bottom;R22
727;;;84.1629;-40.2846;0;Bottom;Copper Fill211
728;;;1.82239;-24.0659;0;Bottom;TXT11
729;;;50.4952;-15.8498;0;Bottom;Copper Fill427
730;;;6.1214;-30.5564;0;Bottom;Copper Fill110
731;;;95.0214;-40.0814;0;Bottom;Copper Fill75
732;;;91.1733;-45.4408;0;Bottom;Copper Fill547
733;;;97.3074;-37.5414;0;Bottom;Copper Fill396
734;;;61.9633;-20.2948;0;Bottom;Copper Fill571
735;;;21.3868;-21.0568;0;Bottom;Copper Fill144
736;0.22µF;200 mil [THT, multilayer];35.3362;-22.302;-90;Bottom;C2
737;;;13.7414;-28.0164;0;Bottom;Copper Fill423
738;;;50.1246;-1.58685;0;Top;blkr1
739;0.22µF;200 mil [THT, multilayer];72.8012;-22.937;-90;Bottom;C10
740;;;50.6184;-55.322;0;Bottom;Arduino Mega 2560
741;;;13.7414;-17.8564;0;Bottom;Copper Fill156
742;;;50.0841;-8.02741;0;Bottom;TXT5
743;;;48.3616;-69.901;0;Bottom;Copper Fill337
744;160;THT;55.6562;-41.352;90;Bottom;R32
745;;;6.1214;-35.6364;0;Bottom;Copper Fill94
746;;;58.5216;-68.3262;0;Bottom;Copper Fill28
747;;;21.0693;-80.3658;0;Bottom;Copper Fill308
748;;;89.5604;-52.7814;0;Bottom;Copper Fill364
749;;;21.3868;-15.9768;0;Bottom;Copper Fill159
750;;;70.1929;-93.1928;0;Bottom;Copper Fill191
751;1µF;200 mil [THT, multilayer];67.7212;-55.957;-90;Bottom;C11
752;;;19.177;-29.9595;0;Bottom;Copper Fill290
753;;;95.0214;-62.9414;0;Bottom;Copper Fill32
754;1k;THT;37.2178;-92.7635;0;Bottom;R10
755;;;13.7414;-12.7764;0;Bottom;Copper Fill171
756;;;48.9966;-68.3262;0;Bottom;Copper Fill27
757;;;57.1754;-83.9599;0;Bottom;Copper Fill234
758;;;91.4654;-35.1284;0;Bottom;Copper Fill93
759;;;78.74;-82.0422;0;Bottom;Copper Fill327
760;;;43.3832;-21.0695;0;Bottom;Copper Fill273
761;;;13.7414;-7.6964;0;Bottom;Copper Fill478

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,234 +4,199 @@ M48
INCH
T1C0.125984
T2C0.165354
T100C0.040000
T101C0.042000
T102C0.030000
T103C0.038000
T104C0.039370
T105C0.015748
T106C0.059055
T107C0.070000
T108C0.031496
T109C0.031497
T110C0.035000
T111C0.038194
T100C0.059055
T101C0.040000
T102C0.031496
T103C0.031497
T104C0.030000
T105C0.070000
T106C0.039370
T107C0.038000
T108C0.038194
T109C0.035000
T110C0.042000
T111C0.015748
%
T1
X035411Y031280
X037661Y012280
T2
X001411Y021530
X001411Y030530
X001437Y030579
X001437Y021480
T100
X007911Y014780
X036411Y034811
X036411Y036780
T101
X007911Y021780
X008911Y005780
X007911Y013780
X008911Y018780
X007911Y005780
X007911Y018780
X006161Y026530
X008911Y011780
X008911Y003780
X007911Y011780
X008911Y016780
X007911Y003780
X008911Y008780
X007911Y016780
X006161Y024530
X007911Y008780
X008911Y022780
X007911Y006780
X008911Y014780
X007911Y019780
X007911Y022780
X008911Y006780
X007911Y014780
X008911Y019780
X007911Y020780
X007911Y012780
X007911Y006780
X007911Y019780
X006161Y027530
X008911Y020780
X007911Y004780
X008911Y012780
X007911Y017780
X007911Y020780
X008911Y004780
X007911Y009780
X007911Y012780
X008911Y017780
X007911Y004780
X008911Y009780
X007911Y010780
X007911Y017780
X006161Y025530
X007911Y009780
X008911Y010780
X007911Y015780
X007911Y007780
X007911Y010780
X008911Y015780
X008911Y007780
X007911Y021780
X007911Y013780
X007911Y015780
X006161Y023530
X007911Y007780
X006161Y028531
X008911Y021780
X007911Y005780
X008911Y013780
X007911Y018780
X008911Y005780
X008911Y018780
X007911Y011780
X007911Y003780
X008911Y011780
X007911Y016780
X008911Y003780
X007911Y008780
X008911Y016780
X008911Y008780
X007911Y022780
T101
X002411Y033030
X019661Y022280
X022161Y033030
X020161Y033030
X014911Y023030
X001411Y033030
X003411Y033030
X018661Y022280
X021161Y033030
X011911Y010760
X030661Y033300
X020661Y022280
X027661Y037030
X028661Y037030
X026661Y037030
X014911Y029280
X001421Y035289
X003421Y035289
X023911Y036760
X002421Y035289
X014911Y024030
X000911Y036530
X019661Y024780
X014911Y027280
X020911Y037280
X018661Y024780
X017931Y037280
X023911Y033780
X003891Y036530
X025161Y036260
X022161Y035280
X020161Y035280
X011911Y007780
X000911Y037780
X020661Y024780
X021161Y035280
X014911Y025030
X030661Y036280
X003891Y037780
X025161Y033280
X014911Y028280
T102
X031661Y013530
X033661Y013530
X033911Y036983
X033911Y034030
T103
X005421Y033789
X005421Y032805
X018161Y036030
X024927Y017030
X024927Y021030
X025911Y017030
X025911Y021030
X005421Y035789
X005421Y034805
X024927Y023030
X018161Y033045
X025911Y023030
X018161Y034030
X024927Y015030
X018161Y035045
X025911Y015030
T104
X004661Y018030
X002661Y018030
X024411Y010280
X013911Y007780
X025411Y005780
X023411Y005780
X014411Y016530
X032161Y035780
X015411Y016530
X013911Y013780
X011911Y013780
X026911Y035280
X028911Y035280
X028661Y010030
X014411Y014530
X032161Y033780
X028911Y030030
X015411Y014530
X029911Y030030
X017411Y008280
X026911Y033280
X028911Y033280
X007661Y028530
X026661Y021030
X030911Y030030
X032911Y030030
X034911Y030030
X024411Y003280
X026411Y003280
X031911Y030030
X033911Y030030
X030911Y030030
X032911Y030030
X034911Y030030
X024411Y008280
X028911Y025030
X035911Y030030
X029911Y025030
X024411Y008280
X007661Y026530
X028911Y025030
X004661Y016780
X002661Y016780
X028661Y008030
X032411Y037280
X030411Y037280
X031911Y025030
X033911Y025030
X017411Y010280
X030911Y025030
X032911Y025030
X034911Y025030
X028661Y008030
X031911Y025030
X033911Y025030
X011411Y003780
X013911Y009780
X035911Y025030
X014661Y003780
X016661Y003780
X011411Y003780
X013411Y003780
X013911Y009780
X004661Y018030
X002661Y018030
X025411Y005780
X023411Y005780
X032161Y035780
X015411Y016530
X024411Y010280
X013911Y007780
X014411Y016530
X026911Y035280
X032161Y033780
X013911Y013780
X011911Y013780
X015411Y014530
X028911Y035280
X028661Y010030
X029911Y030030
X017411Y008280
X026661Y023030
X014411Y014530
X026911Y033280
X028911Y030030
T103
X003911Y011530
X002911Y003530
X033661Y004030
X001911Y014530
X005911Y004530
X003911Y007530
X004911Y015530
X003911Y010530
X002911Y002530
X001911Y013530
X005911Y003530
X035661Y009780
X003911Y006530
X004911Y014530
X001911Y009530
X001911Y012530
X005911Y002530
X006161Y028530
X035661Y008780
X003911Y005530
X004911Y013530
X001911Y008530
X004911Y009530
X001911Y011530
X006161Y027530
X003911Y004530
X004911Y012530
X002911Y015530
X001911Y007530
X035661Y010780
X004911Y008530
X001911Y010530
X006161Y026530
X003911Y003530
X004911Y011530
T105
X012411Y028280
X012411Y026280
X012411Y024280
X012411Y022280
T106
X030661Y016530
X027661Y021530
X030661Y020530
X030661Y017530
X027661Y022530
X030661Y021530
X027661Y023530
X030661Y022530
X027661Y014530
X030661Y023530
X027661Y015530
X030661Y014530
X027661Y016530
X030661Y015530
X027661Y020530
X027661Y017530
T107
X002911Y014530
X001911Y006530
X005911Y015530
X004911Y007530
X006161Y025530
X003911Y002530
X005911Y015530
X004911Y010530
X003911Y002530
X002911Y013530
X001911Y005530
X005911Y014530
X004911Y006530
X002911Y009530
X006161Y024530
X027911Y028280
X002911Y012530
X001911Y004530
X005911Y013530
X029911Y004030
X005911Y013530
X004911Y005530
X035661Y007280
X002911Y008530
X006161Y023530
X027911Y027280
X005911Y009530
X002911Y011530
X001911Y003530
X032661Y004030
X005911Y012530
X030911Y004030
X005911Y012530
X004911Y004530
X035661Y006280
X003911Y015530
X002911Y007530
X003911Y015530
X027911Y026280
X005911Y008530
X002911Y010530
@ -253,188 +218,89 @@ X002911Y004530
X001911Y015530
X005911Y005530
X003911Y008530
T104
X027661Y023530
X030661Y022530
X027661Y014530
X030661Y023530
X027661Y015530
X030661Y014530
X027661Y016530
X030661Y015530
X027661Y020530
X027661Y017530
X030661Y016530
X027661Y021530
X030661Y020530
X030661Y017530
X027661Y022530
X030661Y021530
T105
X027661Y018280
X021411Y016780
X030661Y002780
X025411Y029030
X033161Y016030
X027911Y018780
X035661Y004280
X012411Y016280
X001661Y026530
X013411Y016280
X028661Y015030
X013161Y014780
X012411Y003780
X016911Y016280
X010661Y003530
X035161Y018280
T106
X036411Y034811
X036411Y036780
T107
X012411Y022280
X012411Y028280
X012411Y026280
X012411Y024280
X003911Y011530
X002911Y003530
X033661Y004030
X001911Y014530
X005911Y004530
X004911Y015530
X003911Y007530
X003911Y010530
X002911Y002530
X001911Y013530
X005911Y003530
X035661Y009780
X004911Y014530
X003911Y006530
X001911Y009530
X001911Y012530
X005911Y002530
X035661Y008780
X004911Y013530
X003911Y005530
X001911Y008530
X004911Y009530
X001911Y011530
X004911Y012530
X003911Y004530
X002911Y015530
X001911Y007530
X035661Y010780
X004911Y008530
X001911Y010530
X004911Y011530
X003911Y003530
T108
X033911Y036983
X033911Y034030
T109
X018161Y033045
X025911Y023030
X026161Y015030
X024927Y023030
X018161Y034030
X025177Y015030
X018161Y035045
X005421Y033789
X005421Y032805
X026161Y017030
X018161Y036030
X025177Y017030
X025911Y021030
X005421Y035789
X005421Y034805
X024927Y021030
T110
X035661Y021280
X031911Y016530
X019911Y007280
X010911Y033530
X014911Y011030
X019911Y010280
X016652Y036521
X022661Y030280
X035661Y020280
X014911Y007030
X031911Y015530
X020911Y007280
X022661Y025030
X022661Y026280
X012661Y032530
X010911Y032530
X023161Y010780
X020911Y010280
X037911Y006280
X016652Y035521
X023161Y006780
X016411Y014530
X031911Y014530
X031411Y002280
X017411Y006030
X017411Y018530
X032911Y007280
X016652Y034521
X019661Y030280
X024161Y013780
X032911Y010280
X016661Y037780
X004661Y019030
X019661Y026280
X016652Y033521
X020661Y030280
X020661Y026280
X031661Y023280
X029161Y013280
X012911Y011280
X021411Y006030
X035911Y017530
X029911Y006030
X015911Y011030
X023661Y030280
X022661Y021030
X020661Y018780
X012911Y007280
X031661Y022280
X015911Y007030
X021911Y007280
X012411Y006280
X037911Y002280
X023661Y025030
X023661Y026280
X035911Y016530
X029911Y005030
X030911Y007280
X021911Y010280
X017661Y030280
X030911Y010280
X031661Y021280
X021911Y018780
X017411Y014530
X017661Y026280
X016661Y029530
X023161Y017780
X035911Y015530
X033911Y006030
X033911Y007280
X012652Y036521
X016661Y032530
X031661Y020280
X006911Y037780
X006911Y036530
X033911Y010280
X018911Y007280
X035911Y014530
X027661Y010780
X033911Y005030
X012652Y035521
X035411Y002280
X018911Y010280
X021661Y030280
X006911Y035530
X027661Y006780
X024661Y030030
X021661Y026280
X012652Y034521
X006911Y034530
X012661Y037780
X023661Y021030
X000661Y019030
X010911Y037780
X010911Y036530
X025911Y030030
X012652Y033521
X024661Y025030
X035661Y023280
X020661Y013780
X016411Y018530
X031911Y007280
X006911Y033530
X018661Y030280
X016661Y025530
X010911Y035530
X023161Y013780
X031911Y010280
X018661Y026280
X035661Y022280
X025161Y013280
X024161Y017780
X016411Y006280
X031911Y017530
X006911Y032530
X025911Y025030
X021911Y013780
X010911Y034530
T111
X030911Y031280
X037911Y022280
X036911Y014280
X015911Y012280
X037911Y018280
X024911Y012280
X009311Y031280
X024911Y031280
X036911Y029280
X033911Y012280
X037911Y021280
X033911Y031280
X037911Y017280
X010311Y031280
X018911Y031280
X036911Y028280
X027911Y031280
X037911Y020280
X010911Y012280
X036911Y031280
X037911Y016280
X036911Y027280
X013311Y031280
X036911Y030280
X037911Y015280
X013911Y012280
X022911Y012280
X036911Y026280
X007311Y031280
X022911Y031280
X031911Y012280
X016311Y031280
X031911Y031280
X037911Y014280
X016911Y012280
X036911Y025280
X025911Y012280
X037911Y029280
X034911Y012280
X036911Y024280
X019911Y012280
X011311Y031280
X019911Y031280
X037911Y028280
X028911Y012280
X028911Y031280
X037911Y031280
X036911Y023280
X011911Y012280
X020911Y012280
X020911Y031280
X037911Y027280
X036911Y019280
@ -448,11 +314,11 @@ X036911Y018280
X008311Y031280
X023911Y031280
X032911Y012280
X036911Y021280
X032911Y031280
X036911Y021280
X037911Y025280
X036911Y017280
X017911Y012280
X036911Y017280
X017911Y031280
X026911Y012280
X026911Y031280
@ -471,55 +337,209 @@ X021911Y031280
X037911Y019280
X030911Y012280
X015311Y031280
X030911Y031280
X037911Y022280
X036911Y014280
X015911Y012280
X037911Y018280
X024911Y012280
X009311Y031280
X024911Y031280
X036911Y029280
X033911Y012280
X033911Y031280
X037911Y021280
X037911Y017280
X010311Y031280
X018911Y031280
X036911Y028280
X027911Y031280
X037911Y020280
X036911Y031280
X010911Y012280
X037911Y016280
X036911Y027280
X013311Y031280
X036911Y030280
X013911Y012280
X037911Y015280
X036911Y026280
X022911Y012280
X007311Y031280
X022911Y031280
X031911Y012280
X016311Y031280
X031911Y031280
X037911Y014280
X036911Y025280
X016911Y012280
X025911Y012280
X037911Y029280
X034911Y012280
X036911Y024280
X019911Y012280
X011311Y031280
X019911Y031280
X028911Y012280
X037911Y028280
X028911Y031280
X037911Y031280
X036911Y023280
X011911Y012280
X020911Y012280
T109
X020661Y026280
X031661Y023280
X012911Y011280
X035911Y017530
X029911Y006030
X015911Y011030
X016661Y034530
X022661Y021030
X023661Y030280
X020661Y018780
X012911Y007280
X031661Y022280
X015911Y007030
X021911Y007280
X037911Y002280
X023661Y025030
X023661Y026280
X035911Y016530
X029911Y005030
X030911Y007280
X021911Y010280
X017661Y030280
X030911Y010280
X031661Y021280
X017411Y014530
X021911Y018780
X017661Y026280
X016661Y029530
X023161Y017780
X035911Y015530
X012652Y036521
X033911Y006030
X033911Y007280
X016661Y032530
X031661Y020280
X006911Y037780
X006911Y036530
X033911Y010280
X035911Y014530
X018911Y007280
X027661Y010780
X033911Y005030
X035411Y002280
X018911Y010280
X021661Y030280
X006911Y035530
X027661Y006780
X024661Y030030
X021661Y026280
X006911Y034530
X012661Y037780
X000661Y019030
X023661Y021030
X010911Y037780
X010911Y036530
X025911Y030030
X012652Y033521
X024661Y025030
X035661Y023280
X020661Y013780
X016411Y018530
X031911Y007280
X006911Y033530
X012661Y035530
X018661Y030280
X016661Y025530
X010911Y035530
X023161Y013780
X031911Y010280
X035661Y022280
X018661Y026280
X024161Y017780
X031911Y017530
X006911Y032530
X025911Y025030
X021911Y013780
X012661Y034530
X010911Y034530
X035661Y021280
X019911Y007280
X031911Y016530
X010911Y033530
X014911Y011030
X019911Y010280
X016652Y036521
X022661Y030280
X035661Y020280
X014911Y007030
X020911Y007280
X031911Y015530
X022661Y025030
X022661Y026280
X012661Y032530
X010911Y032530
X023161Y010780
X020911Y010280
X037911Y006280
X023161Y006780
X016411Y014530
X031911Y014530
X031411Y002280
X017411Y018530
X032911Y007280
X019661Y030280
X024161Y013780
X032911Y010280
X016661Y037780
X004661Y019030
X019661Y026280
X016652Y033521
X020661Y030280
X016661Y035530
T110
X019661Y024780
X014911Y027280
X023911Y033780
X020911Y037280
X011911Y007780
X017931Y037280
X021161Y035280
X003891Y036530
X025161Y036260
X022161Y035280
X020161Y035280
X000911Y037780
X020661Y024780
X014911Y025030
X030661Y036280
X003891Y037780
X025161Y033280
X001411Y033030
X014911Y028280
X018661Y022280
X021161Y033030
X002411Y033030
X011911Y010760
X019661Y022280
X022161Y033030
X020161Y033030
X014911Y023030
X003411Y033030
X030661Y033300
X028661Y037030
X026661Y037030
X020661Y022280
X027661Y037030
X023911Y036760
X002421Y035289
X014911Y029280
X001421Y035289
X003421Y035289
X014911Y024030
X000911Y036530
X018661Y024780
T111
X029661Y023530
X030661Y002780
X010661Y003530
X003411Y019530
X031161Y008530
X008911Y032780
X021411Y016780
X018911Y012280
X035161Y018280
X030661Y006030
X006411Y017530
X036911Y013030
X006161Y030780
X012411Y016280
X006411Y022030
X035661Y004280
X028661Y015030
X013411Y016280
X031661Y004030
X009911Y011530
X034911Y025780
X027661Y018280
X033161Y016030
X036661Y010030
X015411Y008030
X033911Y023780
X038161Y009780
X026661Y014530
X001661Y026530
X034911Y028780
X027911Y018780
X015161Y035780
X013161Y014780
X035911Y028780
X034911Y027030
X009661Y026530
X038161Y007780
X017661Y025280
X007161Y025530
X025411Y029030
X016911Y016280
X028661Y017530
X019161Y014530
X038661Y020780
X020161Y029530
X022161Y029530
X012411Y003780
X015023Y006280
T00
M30

View File

@ -8,23 +8,23 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%MOIN*%
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10C,0.085000*%
%ADD11C,0.088000*%
%ADD12C,0.140000*%
%ADD13C,0.049370*%
%ADD14C,0.080000*%
%ADD15C,0.084000*%
%ADD16C,0.082917*%
%ADD17C,0.135984*%
%ADD18C,0.175354*%
%ADD10C,0.049370*%
%ADD11C,0.084000*%
%ADD12C,0.175354*%
%ADD13C,0.080000*%
%ADD14C,0.085000*%
%ADD15C,0.088000*%
%ADD16C,0.140000*%
%ADD17C,0.082917*%
%ADD18C,0.135984*%
%ADD19C,0.092000*%
%ADD20C,0.061496*%
%ADD21C,0.089370*%
%ADD22C,0.072992*%
%ADD23C,0.109055*%
%ADD24R,0.085000X0.085000*%
%ADD24R,0.084000X0.084000*%
%ADD25R,0.080000X0.080000*%
%ADD26R,0.084000X0.084000*%
%ADD26R,0.085000X0.085000*%
%ADD27R,0.092000X0.092000*%
%ADD28R,0.089370X0.089370*%
%ADD29R,0.072992X0.072992*%
@ -33,140 +33,47 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X3791Y228D03*
X3791Y628D03*
X3141Y228D03*
X3541Y228D03*
X2666Y1453D03*
X616Y3078D03*
G54D11*
X191Y1553D03*
X191Y1453D03*
X191Y1353D03*
X191Y1253D03*
X191Y1153D03*
X191Y1053D03*
X191Y953D03*
X191Y853D03*
X191Y753D03*
X191Y653D03*
X191Y553D03*
X191Y453D03*
X191Y353D03*
X191Y253D03*
X491Y1553D03*
X491Y1453D03*
X491Y1353D03*
X491Y1253D03*
X491Y1153D03*
X491Y1053D03*
X491Y953D03*
X491Y853D03*
X491Y753D03*
X491Y653D03*
X491Y553D03*
X491Y453D03*
X491Y353D03*
X491Y253D03*
X491Y1553D03*
X491Y1453D03*
X491Y1353D03*
X491Y1253D03*
X491Y1153D03*
X491Y1053D03*
X491Y953D03*
X491Y853D03*
X491Y753D03*
X491Y653D03*
X491Y553D03*
X491Y453D03*
X491Y353D03*
X491Y253D03*
X591Y253D03*
X591Y353D03*
X591Y453D03*
X591Y553D03*
X591Y653D03*
X591Y753D03*
X591Y853D03*
X591Y953D03*
X591Y1053D03*
X591Y1153D03*
X591Y1253D03*
X591Y1353D03*
X591Y1453D03*
X591Y1553D03*
X291Y1553D03*
X291Y1453D03*
X291Y1353D03*
X291Y1253D03*
X291Y1153D03*
X291Y1053D03*
X291Y953D03*
X291Y853D03*
X291Y753D03*
X291Y653D03*
X291Y553D03*
X291Y453D03*
X291Y353D03*
X291Y253D03*
X291Y1553D03*
X291Y1453D03*
X291Y1353D03*
X291Y1253D03*
X291Y1153D03*
X291Y1053D03*
X291Y953D03*
X291Y853D03*
X291Y753D03*
X291Y653D03*
X291Y553D03*
X291Y453D03*
X291Y353D03*
X291Y253D03*
X391Y253D03*
X391Y353D03*
X391Y453D03*
X391Y553D03*
X391Y653D03*
X391Y753D03*
X391Y853D03*
X391Y953D03*
X391Y1053D03*
X391Y1153D03*
X391Y1253D03*
X391Y1353D03*
X391Y1453D03*
X391Y1553D03*
G54D10*
X1891Y728D03*
X1891Y1028D03*
X1991Y728D03*
X1991Y1028D03*
X2091Y728D03*
X2091Y1028D03*
X2191Y728D03*
X2191Y1028D03*
X616Y2353D03*
X616Y2453D03*
X616Y2553D03*
X616Y2653D03*
X616Y2753D03*
X616Y2853D03*
G54D12*
X1241Y2628D03*
X1241Y2828D03*
X1241Y2428D03*
X1241Y2228D03*
X144Y2148D03*
X144Y3058D03*
G54D11*
X616Y2353D03*
X616Y2453D03*
X616Y2553D03*
X616Y2653D03*
X616Y2753D03*
X616Y2853D03*
G54D12*
X144Y2148D03*
X144Y3058D03*
G54D10*
X3491Y2878D03*
X3491Y2703D03*
X3491Y2578D03*
X3066Y603D03*
X3116Y853D03*
X3591Y2878D03*
X2216Y2953D03*
X2016Y2953D03*
X966Y2653D03*
X716Y2553D03*
X341Y1953D03*
X641Y2203D03*
X641Y1753D03*
X2866Y1753D03*
X2966Y2353D03*
X3391Y2378D03*
X1502Y628D03*
G54D13*
X1316Y1478D03*
X3316Y1603D03*
X2866Y1503D03*
X2141Y1678D03*
X1691Y1628D03*
X1241Y378D03*
X1066Y353D03*
X166Y2653D03*
X3566Y428D03*
X2541Y2903D03*
X3066Y278D03*
X2791Y1878D03*
X2766Y1828D03*
X1241Y1628D03*
X1341Y1628D03*
G54D14*
X3591Y3003D03*
X3591Y2503D03*
X3491Y3003D03*
@ -183,9 +90,123 @@ X2991Y3003D03*
X2991Y2503D03*
X2891Y3003D03*
X2891Y2503D03*
G54D13*
X3516Y1828D03*
G54D10*
X3866Y2078D03*
X1516Y3578D03*
X3166Y403D03*
X3816Y978D03*
X3816Y778D03*
X891Y3278D03*
X1541Y803D03*
X1891Y1228D03*
G54D14*
X3791Y228D03*
X3791Y628D03*
X3141Y228D03*
X3541Y228D03*
G54D15*
X191Y1553D03*
X291Y1553D03*
X391Y1553D03*
X491Y1553D03*
X591Y1553D03*
X191Y253D03*
X291Y253D03*
X391Y253D03*
X491Y253D03*
X591Y253D03*
X191Y853D03*
X191Y1153D03*
X191Y353D03*
X291Y353D03*
X391Y353D03*
X491Y353D03*
X591Y353D03*
X191Y1353D03*
X191Y1253D03*
X191Y1053D03*
X191Y753D03*
X191Y453D03*
X191Y953D03*
X191Y1453D03*
X191Y653D03*
X191Y553D03*
X291Y853D03*
X291Y1153D03*
X291Y1353D03*
X291Y1253D03*
X291Y1053D03*
X291Y753D03*
X291Y453D03*
X291Y953D03*
X291Y1453D03*
X291Y653D03*
X291Y553D03*
X391Y853D03*
X391Y1153D03*
X391Y1353D03*
X391Y1253D03*
X391Y1053D03*
X391Y753D03*
X391Y453D03*
X391Y953D03*
X391Y1453D03*
X391Y653D03*
X391Y553D03*
X491Y853D03*
X491Y1153D03*
X491Y1353D03*
X491Y1253D03*
X491Y1053D03*
X491Y753D03*
X491Y453D03*
X491Y953D03*
X491Y1453D03*
X491Y653D03*
X491Y553D03*
X591Y453D03*
X591Y553D03*
X591Y653D03*
X591Y753D03*
X591Y853D03*
X591Y953D03*
X591Y1053D03*
X591Y1153D03*
X591Y1253D03*
X591Y1353D03*
X591Y1453D03*
G54D14*
X1891Y728D03*
X1891Y1028D03*
X1991Y728D03*
X1991Y1028D03*
X2091Y728D03*
X2091Y1028D03*
X2191Y728D03*
X2191Y1028D03*
G54D16*
X1241Y2628D03*
X1241Y2828D03*
X1241Y2428D03*
X1241Y2228D03*
G54D10*
X1316Y1478D03*
X3316Y1603D03*
X2866Y1503D03*
X2141Y1678D03*
X1691Y1628D03*
X1241Y378D03*
X1066Y353D03*
X166Y2653D03*
X3566Y428D03*
X2541Y2903D03*
X3066Y278D03*
X2791Y1878D03*
X2766Y1828D03*
X1241Y1628D03*
X1341Y1628D03*
X3516Y1828D03*
G54D14*
X3091Y728D03*
X3091Y1028D03*
X3191Y728D03*
@ -194,7 +215,7 @@ X3291Y728D03*
X3291Y1028D03*
X3391Y728D03*
X3391Y1028D03*
G54D15*
G54D11*
X891Y2278D03*
X891Y2178D03*
X891Y2078D03*
@ -235,7 +256,7 @@ X791Y678D03*
X791Y578D03*
X791Y478D03*
X791Y378D03*
G54D16*
G54D17*
X2991Y1228D03*
X1391Y1228D03*
X3091Y1228D03*
@ -322,11 +343,9 @@ X3791Y1628D03*
X3791Y1528D03*
X3791Y1428D03*
X2891Y1228D03*
G54D17*
G54D18*
X3766Y1228D03*
X3541Y3128D03*
G54D18*
X141Y3053D03*
G54D19*
X1491Y2503D03*
X1491Y2403D03*
@ -340,27 +359,19 @@ X1491Y2728D03*
X2066Y2228D03*
X1966Y2228D03*
X1866Y2228D03*
G54D14*
G54D13*
X1191Y1378D03*
X1391Y1378D03*
G54D10*
G54D14*
X1291Y728D03*
X1291Y1128D03*
G54D19*
X2516Y3328D03*
X2516Y3626D03*
G54D10*
G54D14*
X466Y1903D03*
X66Y1903D03*
G54D18*
X141Y2153D03*
G54D11*
X616Y2853D03*
X616Y2753D03*
X616Y2653D03*
X616Y2553D03*
X616Y2453D03*
X616Y2353D03*
G54D15*
X3566Y528D03*
X3566Y628D03*
X3566Y728D03*
@ -370,17 +381,17 @@ X3566Y878D03*
X2791Y2828D03*
X2791Y2728D03*
X2791Y2628D03*
G54D10*
G54D14*
X2991Y603D03*
X3391Y603D03*
X2991Y503D03*
X3391Y503D03*
G54D11*
G54D15*
X2991Y403D03*
X3091Y403D03*
X3266Y403D03*
X3366Y403D03*
G54D10*
G54D14*
X3591Y1453D03*
X3191Y1453D03*
X2366Y3028D03*
@ -401,7 +412,7 @@ G54D19*
X2666Y3703D03*
X2766Y3703D03*
X2866Y3703D03*
G54D14*
G54D13*
X3041Y3728D03*
X3241Y3728D03*
X2891Y3528D03*
@ -433,7 +444,7 @@ X3066Y2253D03*
X2766Y2253D03*
X3066Y2353D03*
X2766Y2353D03*
G54D10*
G54D14*
X3591Y1553D03*
X3191Y1553D03*
X1866Y3028D03*
@ -450,16 +461,8 @@ X1766Y3028D03*
X1766Y2628D03*
X3566Y2228D03*
X3166Y2228D03*
G54D14*
X3366Y1353D03*
X3166Y1353D03*
G54D10*
X2066Y1378D03*
X2066Y1878D03*
G54D14*
X2666Y2103D03*
X2666Y2303D03*
G54D10*
X2591Y2503D03*
X2591Y3003D03*
X2191Y1878D03*
@ -475,22 +478,18 @@ X2316Y1378D03*
X2366Y2103D03*
X2366Y2503D03*
G54D22*
X2518Y1703D03*
X2616Y1703D03*
X2493Y1703D03*
X2591Y1703D03*
X2493Y2303D03*
X2591Y2303D03*
X2518Y1503D03*
X2616Y1503D03*
X2493Y1503D03*
X2591Y1503D03*
X2493Y2103D03*
X2591Y2103D03*
G54D10*
G54D14*
X1741Y1853D03*
X1741Y1453D03*
X2141Y603D03*
X1741Y603D03*
X1641Y628D03*
X1241Y628D03*
G54D14*
G54D13*
X1741Y828D03*
X1741Y1028D03*
X1666Y378D03*
@ -499,7 +498,7 @@ X1391Y778D03*
X1391Y978D03*
X1341Y378D03*
X1141Y378D03*
G54D10*
G54D14*
X1591Y703D03*
X1591Y1103D03*
X1491Y703D03*
@ -507,34 +506,30 @@ X1491Y1103D03*
G54D19*
X1191Y778D03*
X1191Y1076D03*
G54D14*
G54D13*
X2866Y803D03*
X2866Y1003D03*
X266Y1678D03*
X466Y1678D03*
X2441Y828D03*
X2441Y1028D03*
X766Y2853D03*
X766Y2653D03*
X266Y1803D03*
X466Y1803D03*
X2341Y578D03*
X2541Y578D03*
X2641Y328D03*
X2441Y328D03*
G54D10*
G54D14*
X2766Y678D03*
X2766Y1078D03*
X2316Y678D03*
X2316Y1078D03*
X2916Y1328D03*
X2516Y1328D03*
G54D14*
G54D13*
X1441Y1453D03*
X1441Y1653D03*
X1541Y1653D03*
X1541Y1453D03*
G54D10*
G54D14*
X1641Y1853D03*
X1641Y1453D03*
X1091Y3253D03*
@ -543,8 +538,8 @@ X1266Y3253D03*
X1666Y3253D03*
X1091Y3553D03*
X691Y3553D03*
X1265Y3552D03*
X1665Y3552D03*
X1266Y3553D03*
X1666Y3553D03*
G54D22*
X542Y3281D03*
X542Y3379D03*
@ -575,7 +570,7 @@ X142Y3529D03*
X2016Y3528D03*
X2116Y3528D03*
X2216Y3528D03*
G54D10*
G54D14*
X1091Y3353D03*
X691Y3353D03*
X1265Y3352D03*
@ -586,8 +581,8 @@ X1265Y3652D03*
X1665Y3652D03*
X1091Y3453D03*
X691Y3453D03*
X1265Y3452D03*
X1665Y3452D03*
X1266Y3453D03*
X1666Y3453D03*
X1091Y3778D03*
X691Y3778D03*
X1266Y3778D03*
@ -595,14 +590,22 @@ X1666Y3778D03*
G54D23*
X3641Y3678D03*
X3641Y3481D03*
G54D10*
X1766Y2528D03*
X991Y1153D03*
X1916Y1453D03*
X3666Y1003D03*
X3691Y1303D03*
G54D24*
X1891Y728D03*
X616Y2353D03*
X616Y2353D03*
G54D25*
X2891Y2503D03*
X3491Y2503D03*
G54D24*
X3091Y728D03*
G54D26*
X1891Y728D03*
X3091Y728D03*
G54D24*
X791Y2278D03*
G54D27*
X1491Y2503D03*
@ -616,9 +619,9 @@ G54D28*
X3066Y1453D03*
X3066Y2053D03*
G54D29*
X2518Y1703D03*
X2493Y1703D03*
X2493Y2303D03*
X2518Y1503D03*
X2493Y1503D03*
X2493Y2103D03*
G54D27*
X1191Y777D03*

View File

@ -8,169 +8,65 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%MOIN*%
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10C,0.085000*%
%ADD11C,0.088000*%
%ADD12C,0.140000*%
%ADD13C,0.049370*%
%ADD14C,0.080000*%
%ADD15C,0.084000*%
%ADD16C,0.082917*%
%ADD17C,0.135984*%
%ADD18C,0.175354*%
%ADD10C,0.049370*%
%ADD11C,0.084000*%
%ADD12C,0.175354*%
%ADD13C,0.080000*%
%ADD14C,0.085000*%
%ADD15C,0.088000*%
%ADD16C,0.140000*%
%ADD17C,0.082917*%
%ADD18C,0.135984*%
%ADD19C,0.092000*%
%ADD20C,0.061496*%
%ADD21C,0.089370*%
%ADD22C,0.072992*%
%ADD23C,0.109055*%
%ADD24R,0.085000X0.085000*%
%ADD25R,0.080000X0.080000*%
%ADD24R,0.069055X0.065118*%
%ADD25R,0.065118X0.069055*%
%ADD26R,0.084000X0.084000*%
%ADD27R,0.092000X0.092000*%
%ADD28R,0.089370X0.089370*%
%ADD29R,0.072992X0.072992*%
%ADD30R,0.109055X0.109055*%
%ADD27R,0.080000X0.080000*%
%ADD28R,0.085000X0.085000*%
%ADD29R,0.092000X0.092000*%
%ADD30R,0.089370X0.089370*%
%ADD31R,0.072992X0.072992*%
%ADD32R,0.109055X0.109055*%
%ADD33C,0.010000*%
%LNMASK1*%
G90*
G70*
G54D10*
X3791Y228D03*
X3791Y628D03*
X3141Y228D03*
X3541Y228D03*
X2666Y1453D03*
X616Y3078D03*
G54D11*
X191Y1553D03*
X191Y1453D03*
X191Y1353D03*
X191Y1253D03*
X191Y1153D03*
X191Y1053D03*
X191Y953D03*
X191Y853D03*
X191Y753D03*
X191Y653D03*
X191Y553D03*
X191Y453D03*
X191Y353D03*
X191Y253D03*
X491Y1553D03*
X491Y1453D03*
X491Y1353D03*
X491Y1253D03*
X491Y1153D03*
X491Y1053D03*
X491Y953D03*
X491Y853D03*
X491Y753D03*
X491Y653D03*
X491Y553D03*
X491Y453D03*
X491Y353D03*
X491Y253D03*
X491Y1553D03*
X491Y1453D03*
X491Y1353D03*
X491Y1253D03*
X491Y1153D03*
X491Y1053D03*
X491Y953D03*
X491Y853D03*
X491Y753D03*
X491Y653D03*
X491Y553D03*
X491Y453D03*
X491Y353D03*
X491Y253D03*
X591Y253D03*
X591Y353D03*
X591Y453D03*
X591Y553D03*
X591Y653D03*
X591Y753D03*
X591Y853D03*
X591Y953D03*
X591Y1053D03*
X591Y1153D03*
X591Y1253D03*
X591Y1353D03*
X591Y1453D03*
X591Y1553D03*
X291Y1553D03*
X291Y1453D03*
X291Y1353D03*
X291Y1253D03*
X291Y1153D03*
X291Y1053D03*
X291Y953D03*
X291Y853D03*
X291Y753D03*
X291Y653D03*
X291Y553D03*
X291Y453D03*
X291Y353D03*
X291Y253D03*
X291Y1553D03*
X291Y1453D03*
X291Y1353D03*
X291Y1253D03*
X291Y1153D03*
X291Y1053D03*
X291Y953D03*
X291Y853D03*
X291Y753D03*
X291Y653D03*
X291Y553D03*
X291Y453D03*
X291Y353D03*
X291Y253D03*
X391Y253D03*
X391Y353D03*
X391Y453D03*
X391Y553D03*
X391Y653D03*
X391Y753D03*
X391Y853D03*
X391Y953D03*
X391Y1053D03*
X391Y1153D03*
X391Y1253D03*
X391Y1353D03*
X391Y1453D03*
X391Y1553D03*
G54D10*
X1891Y728D03*
X1891Y1028D03*
X1991Y728D03*
X1991Y1028D03*
X2091Y728D03*
X2091Y1028D03*
X2191Y728D03*
X2191Y1028D03*
X616Y2353D03*
X616Y2453D03*
X616Y2553D03*
X616Y2653D03*
X616Y2753D03*
X616Y2853D03*
G54D12*
X1241Y2628D03*
X1241Y2828D03*
X1241Y2428D03*
X1241Y2228D03*
X1241Y2628D03*
X1241Y2828D03*
X1241Y2428D03*
X1241Y2228D03*
X144Y2148D03*
X144Y3058D03*
G54D10*
X3491Y2878D03*
X3491Y2703D03*
X3491Y2578D03*
X3066Y603D03*
X3116Y853D03*
X3591Y2878D03*
X2216Y2953D03*
X2016Y2953D03*
X966Y2653D03*
X716Y2553D03*
X341Y1953D03*
X641Y2203D03*
X641Y1753D03*
X2866Y1753D03*
X2966Y2353D03*
X3391Y2378D03*
X1502Y628D03*
G54D13*
X1316Y1478D03*
X3316Y1603D03*
X2866Y1503D03*
X2141Y1678D03*
X1691Y1628D03*
X1241Y378D03*
X1066Y353D03*
X166Y2653D03*
X3566Y428D03*
X2541Y2903D03*
X3066Y278D03*
X2791Y1878D03*
X2766Y1828D03*
X1241Y1628D03*
X1341Y1628D03*
G54D14*
X3591Y3003D03*
X3591Y2503D03*
X3491Y3003D03*
@ -187,9 +83,127 @@ X2991Y3003D03*
X2991Y2503D03*
X2891Y3003D03*
X2891Y2503D03*
G54D13*
X3516Y1828D03*
G54D10*
X3866Y2078D03*
X1516Y3578D03*
X3166Y403D03*
X3816Y978D03*
X3816Y778D03*
X891Y3278D03*
X1541Y803D03*
X1891Y1228D03*
G54D14*
X3791Y228D03*
X3791Y628D03*
X3141Y228D03*
X3541Y228D03*
G54D15*
X191Y1553D03*
X291Y1553D03*
X391Y1553D03*
X491Y1553D03*
X591Y1553D03*
X191Y253D03*
X291Y253D03*
X391Y253D03*
X491Y253D03*
X591Y253D03*
X191Y853D03*
X191Y1153D03*
X191Y353D03*
X291Y353D03*
X391Y353D03*
X491Y353D03*
X591Y353D03*
X191Y1353D03*
X191Y1253D03*
X191Y1053D03*
X191Y753D03*
X191Y453D03*
X191Y953D03*
X191Y1453D03*
X191Y653D03*
X191Y553D03*
X291Y853D03*
X291Y1153D03*
X291Y1353D03*
X291Y1253D03*
X291Y1053D03*
X291Y753D03*
X291Y453D03*
X291Y953D03*
X291Y1453D03*
X291Y653D03*
X291Y553D03*
X391Y853D03*
X391Y1153D03*
X391Y1353D03*
X391Y1253D03*
X391Y1053D03*
X391Y753D03*
X391Y453D03*
X391Y953D03*
X391Y1453D03*
X391Y653D03*
X391Y553D03*
X491Y853D03*
X491Y1153D03*
X491Y1353D03*
X491Y1253D03*
X491Y1053D03*
X491Y753D03*
X491Y453D03*
X491Y953D03*
X491Y1453D03*
X491Y653D03*
X491Y553D03*
X591Y453D03*
X591Y553D03*
X591Y653D03*
X591Y753D03*
X591Y853D03*
X591Y953D03*
X591Y1053D03*
X591Y1153D03*
X591Y1253D03*
X591Y1353D03*
X591Y1453D03*
G54D14*
X1891Y728D03*
X1891Y1028D03*
X1991Y728D03*
X1991Y1028D03*
X2091Y728D03*
X2091Y1028D03*
X2191Y728D03*
X2191Y1028D03*
G54D16*
X1241Y2628D03*
X1241Y2828D03*
X1241Y2428D03*
X1241Y2228D03*
X1241Y2628D03*
X1241Y2828D03*
X1241Y2428D03*
X1241Y2228D03*
G54D10*
X1316Y1478D03*
X3316Y1603D03*
X2866Y1503D03*
X2141Y1678D03*
X1691Y1628D03*
X1241Y378D03*
X1066Y353D03*
X166Y2653D03*
X3566Y428D03*
X2541Y2903D03*
X3066Y278D03*
X2791Y1878D03*
X2766Y1828D03*
X1241Y1628D03*
X1341Y1628D03*
X3516Y1828D03*
G54D14*
X3091Y728D03*
X3091Y1028D03*
X3191Y728D03*
@ -198,7 +212,7 @@ X3291Y728D03*
X3291Y1028D03*
X3391Y728D03*
X3391Y1028D03*
G54D15*
G54D11*
X891Y2278D03*
X891Y2178D03*
X891Y2078D03*
@ -239,7 +253,7 @@ X791Y678D03*
X791Y578D03*
X791Y478D03*
X791Y378D03*
G54D16*
G54D17*
X2991Y1228D03*
X1391Y1228D03*
X3091Y1228D03*
@ -326,11 +340,9 @@ X3791Y1628D03*
X3791Y1528D03*
X3791Y1428D03*
X2891Y1228D03*
G54D17*
G54D18*
X3766Y1228D03*
X3541Y3128D03*
G54D18*
X141Y3053D03*
G54D19*
X1491Y2503D03*
X1491Y2403D03*
@ -344,27 +356,19 @@ X1491Y2728D03*
X2066Y2228D03*
X1966Y2228D03*
X1866Y2228D03*
G54D14*
G54D13*
X1191Y1378D03*
X1391Y1378D03*
G54D10*
G54D14*
X1291Y728D03*
X1291Y1128D03*
G54D19*
X2516Y3328D03*
X2516Y3626D03*
G54D10*
G54D14*
X466Y1903D03*
X66Y1903D03*
G54D18*
X141Y2153D03*
G54D11*
X616Y2853D03*
X616Y2753D03*
X616Y2653D03*
X616Y2553D03*
X616Y2453D03*
X616Y2353D03*
G54D15*
X3566Y528D03*
X3566Y628D03*
X3566Y728D03*
@ -374,17 +378,17 @@ X3566Y878D03*
X2791Y2828D03*
X2791Y2728D03*
X2791Y2628D03*
G54D10*
G54D14*
X2991Y603D03*
X3391Y603D03*
X2991Y503D03*
X3391Y503D03*
G54D11*
G54D15*
X2991Y403D03*
X3091Y403D03*
X3266Y403D03*
X3366Y403D03*
G54D10*
G54D14*
X3591Y1453D03*
X3191Y1453D03*
X2366Y3028D03*
@ -405,7 +409,7 @@ G54D19*
X2666Y3703D03*
X2766Y3703D03*
X2866Y3703D03*
G54D14*
G54D13*
X3041Y3728D03*
X3241Y3728D03*
X2891Y3528D03*
@ -439,7 +443,7 @@ X3066Y2253D03*
X2766Y2253D03*
X3066Y2353D03*
X2766Y2353D03*
G54D10*
G54D14*
X3591Y1553D03*
X3191Y1553D03*
X1866Y3028D03*
@ -456,16 +460,8 @@ X1766Y3028D03*
X1766Y2628D03*
X3566Y2228D03*
X3166Y2228D03*
G54D14*
X3366Y1353D03*
X3166Y1353D03*
G54D10*
X2066Y1378D03*
X2066Y1878D03*
G54D14*
X2666Y2103D03*
X2666Y2303D03*
G54D10*
X2591Y2503D03*
X2591Y3003D03*
X2191Y1878D03*
@ -481,22 +477,18 @@ X2316Y1378D03*
X2366Y2103D03*
X2366Y2503D03*
G54D22*
X2518Y1703D03*
X2616Y1703D03*
X2493Y1703D03*
X2591Y1703D03*
X2493Y2303D03*
X2591Y2303D03*
X2518Y1503D03*
X2616Y1503D03*
X2493Y1503D03*
X2591Y1503D03*
X2493Y2103D03*
X2591Y2103D03*
G54D10*
G54D14*
X1741Y1853D03*
X1741Y1453D03*
X2141Y603D03*
X1741Y603D03*
X1641Y628D03*
X1241Y628D03*
G54D14*
G54D13*
X1741Y828D03*
X1741Y1028D03*
X1666Y378D03*
@ -505,7 +497,7 @@ X1391Y778D03*
X1391Y978D03*
X1341Y378D03*
X1141Y378D03*
G54D10*
G54D14*
X1591Y703D03*
X1591Y1103D03*
X1491Y703D03*
@ -513,34 +505,30 @@ X1491Y1103D03*
G54D19*
X1191Y778D03*
X1191Y1076D03*
G54D14*
G54D13*
X2866Y803D03*
X2866Y1003D03*
X266Y1678D03*
X466Y1678D03*
X2441Y828D03*
X2441Y1028D03*
X766Y2853D03*
X766Y2653D03*
X266Y1803D03*
X466Y1803D03*
X2341Y578D03*
X2541Y578D03*
X2641Y328D03*
X2441Y328D03*
G54D10*
G54D14*
X2766Y678D03*
X2766Y1078D03*
X2316Y678D03*
X2316Y1078D03*
X2916Y1328D03*
X2516Y1328D03*
G54D14*
G54D13*
X1441Y1453D03*
X1441Y1653D03*
X1541Y1653D03*
X1541Y1453D03*
G54D10*
G54D14*
X1641Y1853D03*
X1641Y1453D03*
X1091Y3253D03*
@ -549,8 +537,8 @@ X1266Y3253D03*
X1666Y3253D03*
X1091Y3553D03*
X691Y3553D03*
X1265Y3552D03*
X1665Y3552D03*
X1266Y3553D03*
X1666Y3553D03*
G54D22*
X542Y3281D03*
X542Y3379D03*
@ -581,7 +569,7 @@ X142Y3529D03*
X2016Y3528D03*
X2116Y3528D03*
X2216Y3528D03*
G54D10*
G54D14*
X1091Y3353D03*
X691Y3353D03*
X1265Y3352D03*
@ -592,8 +580,8 @@ X1265Y3652D03*
X1665Y3652D03*
X1091Y3453D03*
X691Y3453D03*
X1265Y3452D03*
X1665Y3452D03*
X1266Y3453D03*
X1666Y3453D03*
X1091Y3778D03*
X691Y3778D03*
X1266Y3778D03*
@ -601,16 +589,35 @@ X1666Y3778D03*
G54D23*
X3641Y3678D03*
X3641Y3481D03*
G54D10*
X1766Y2528D03*
X991Y1153D03*
X1916Y1453D03*
X3666Y1003D03*
X3691Y1303D03*
G54D24*
X1891Y728D03*
X2666Y1553D03*
X2666Y1634D03*
X766Y2803D03*
X766Y2722D03*
G54D25*
X1841Y603D03*
X1760Y603D03*
X1235Y628D03*
X1316Y628D03*
X2841Y1328D03*
X2760Y1328D03*
G54D26*
X616Y2353D03*
G54D27*
X2891Y2503D03*
X3491Y2503D03*
G54D24*
G54D28*
X1891Y728D03*
X3091Y728D03*
G54D26*
X791Y2278D03*
G54D27*
G54D29*
X1491Y2503D03*
X2066Y2478D03*
X1491Y2928D03*
@ -618,22 +625,22 @@ X2066Y2228D03*
X2516Y3327D03*
X2666Y3703D03*
X3066Y3629D03*
G54D28*
G54D30*
X3066Y1453D03*
X3066Y2053D03*
G54D29*
X2518Y1703D03*
G54D31*
X2493Y1703D03*
X2493Y2303D03*
X2518Y1503D03*
X2493Y1503D03*
X2493Y2103D03*
G54D27*
X1191Y777D03*
G54D29*
X1191Y777D03*
G54D31*
X542Y3281D03*
X1816Y3305D03*
X542Y3481D03*
X1816Y3505D03*
G54D27*
G54D29*
X90Y3653D03*
X2092Y3728D03*
X90Y3778D03*
@ -642,7 +649,24 @@ X341Y3303D03*
X2016Y3303D03*
X342Y3529D03*
X2016Y3528D03*
G54D30*
G54D32*
X3641Y3678D03*
G54D33*
G36*
X2637Y2231D02*
X2696Y2231D01*
X2696Y2175D01*
X2637Y2175D01*
X2637Y2231D01*
G37*
D02*
G36*
X2637Y2311D02*
X2696Y2311D01*
X2696Y2256D01*
X2637Y2256D01*
X2637Y2311D01*
G37*
D02*
G04 End of Mask1*
M02*

View File

@ -0,0 +1,57 @@
G04 MADE WITH FRITZING*
G04 WWW.FRITZING.ORG*
G04 DOUBLE SIDED*
G04 HOLES PLATED*
G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%ASAXBY*%
%FSLAX23Y23*%
%MOIN*%
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10C,0.074000*%
%ADD11C,0.165354*%
%ADD12R,0.059055X0.055118*%
%ADD13R,0.055118X0.059055*%
%ADD14R,0.001000X0.001000*%
%LNPASTEMASK1*%
G90*
G70*
G54D10*
X616Y2653D03*
X616Y2753D03*
X616Y2853D03*
G54D11*
X144Y2148D03*
X144Y3058D03*
G54D12*
X2666Y1553D03*
X2666Y1634D03*
X766Y2803D03*
X766Y2722D03*
G54D13*
X1841Y603D03*
X1760Y603D03*
X1235Y628D03*
X1316Y628D03*
X2841Y1328D03*
X2760Y1328D03*
G36*
X2637Y2231D02*
X2696Y2231D01*
X2696Y2175D01*
X2637Y2175D01*
X2637Y2231D01*
G37*
D02*
G36*
X2637Y2311D02*
X2696Y2311D01*
X2696Y2256D01*
X2637Y2256D01*
X2637Y2311D01*
G37*
D02*
G54D14*
D02*
G04 End of PasteMask1*
M02*

View File

@ -0,0 +1,998 @@
*Pick And Place List
*Company=
*Author=
*eMail=
*
*Project=schematic v0.4.2-smt
*Date=21:57:19
*CreatedBy=Fritzing 0.9.3b.04.19.5c895d327c44a3114e5fcc9d8260daf0cbb52806
*
*
*Coordinates in mm, always center of component
*Origin 0/0=Lower left corner of PCB
*Rotation in degree (0-360, math. pos.)
*
*No;Value;Package;X;Y;Rotation;Side;Name
1;;;56.6674;-75.0699;0;Bottom;Copper Fill304
2;;;14.732;-66.1164;0;Bottom;Copper Fill402
3;;;21.717;-46.4314;0;Bottom;Copper Fill437
4;;;21.6408;-51.5114;0;Bottom;Copper Fill430
5;;;72.8011;-44.527;0;Bottom;Via28
6;;THT;15.0162;-14.047;0;Bottom;J18
7;;;42.4688;-41.3895;0;Bottom;Copper Fill203
8;;THT;15.0162;-34.367;0;Bottom;J10
9;;;13.7414;-20.3964;0;Bottom;Copper Fill521
10;;;77.8811;-7.06206;0;Bottom;Via6
11;;;12.5222;-54.0006;0;Bottom;Copper Fill65
12;;;80.4418;-78.4862;0;Bottom;Copper Fill382
13;;;8.6614;-20.3964;0;Bottom;Copper Fill131
14;;;43.942;-90.9068;0;Bottom;Copper Fill2
15;;;71.2978;-27.7116;0;Bottom;Copper Fill505
16;1µF;0805 [SMD, multilayer];67.7212;-56.982;-90;Top;C11
17;;;79.7814;-32.1312;0;Bottom;Copper Fill476
18;;;3.175;-18.9486;0;Bottom;Copper Fill517
19;;;79.8068;-74.1936;0;Bottom;Copper Fill24
20;;;69.342;-62.2048;0;Bottom;Copper Fill408
21;;;21.3614;-48.9714;0;Bottom;Copper Fill434
22;;;30.9372;-35.0395;0;Bottom;Copper Fill295
23;;;44.8564;-86.0554;0;Bottom;Copper Fill371
24;;;39.1033;-42.7738;0;Bottom;Copper Fill314
25;;;18.288;-95.9995;0;Bottom;Copper Fill276
26;;;16.0528;-78.2195;0;Bottom;Copper Fill259
27;;;6.1214;-35.6364;0;Bottom;Copper Fill461
28;;THT;7.3962;-36.907;0;Bottom;J47
29;;;59.1312;-78.2068;0;Bottom;Copper Fill378
30;;;70.8961;-47.702;0;Bottom;Via2
31;;;2.0828;-44.8312;0;Bottom;Copper Fill63
32;2.4k;THT;58.8312;-40.082;90;Bottom;R34
33;;DIP (Dual Inline) [THT];74.0712;-55.957;180;Bottom;IC1
34;;;39.8272;-42.0499;0;Bottom;Copper Fill315
35;;TO220 [THT];6.1262;-82.373;180;Bottom;Q4
36;;;56.9214;-35.5602;0;Bottom;Copper Fill460
37;;;24.4729;-67.0054;0;Bottom;Copper Fill239
38;1k;THT;22.6362;-92.787;180;Bottom;R16
39;;;23.3934;-14.7195;0;Bottom;Copper Fill659
40;;;96.4184;-19.7995;0;Bottom;Copper Fill219
41;;;89.9463;-79.4519;0;Bottom;Hole7
42;;;98.1329;-53.264;0;Bottom;Copper Fill340
43;;;14.8082;-62.3699;0;Bottom;Copper Fill330
44;;;95.0214;-78.1814;0;Bottom;Copper Fill21
45;;;80.4211;-10.2371;0;Bottom;Via24
46;;;25.5524;-29.3499;0;Bottom;Copper Fill191
47;;;21.3614;-36.2714;0;Bottom;Copper Fill459
48;;;45.72;-69.266;0;Bottom;Copper Fill397
49;;;84.8614;-32.1312;0;Bottom;Copper Fill478
50;;;63.8429;-91.2624;0;Bottom;Copper Fill707
51;;;79.1972;-55.6262;0;Bottom;Copper Fill45
52;;;34.3154;-68.0722;0;Bottom;Copper Fill398
53;;;44.958;-36.9699;0;Bottom;Copper Fill267
54;;;75.1332;-15.9768;0;Bottom;Copper Fill138
55;;;84.1629;-40.3354;0;Bottom;Copper Fill213
56;;;1.89295;-13.7648;0;Bottom;TXT11
57;1k;THT;47.4012;-71.832;90;Bottom;R57
58;;v18za2p;86.1362;-90.247;-90;Bottom;U2
59;;;13.7414;-10.2364;0;Bottom;Copper Fill166
60;;THT;4.8562;-16.587;0;Bottom;J58
61;0.22µF;200 mil [THT, multilayer];39.1462;-39.447;90;Bottom;C8
62;;;34.0233;-8.9156;0;Bottom;Copper Fill335
63;;;64.9224;-73.7999;0;Bottom;Copper Fill194
64;;;56.1086;-63.932;0;Bottom;Copper Fill429
65;;;11.2014;-20.3964;0;Bottom;Copper Fill132
66;;;88.6333;-65.964;0;Bottom;Copper Fill730
67;;;90.3732;-44.5899;0;Bottom;Copper Fill679
68;;;72.7329;-38.6844;0;Bottom;Copper Fill209
69;;;39.1033;-42.7738;0;Bottom;Copper Fill689
70;;;31.5468;-20.8282;0;Bottom;Copper Fill513
71;;;21.3614;-33.7314;0;Bottom;Copper Fill467
72;;;51.2111;-75.007;0;Bottom;Via33
73;;;91.1733;-45.39;0;Bottom;Copper Fill289
74;;;75.2729;-60.2744;0;Bottom;Copper Fill323
75;;;66.294;-8.3695;0;Bottom;Copper Fill735
76;;;84.2311;-40.717;0;Bottom;Via8
77;;;13.7414;-33.0964;0;Bottom;Copper Fill100
78;;;95.0214;-47.7014;0;Bottom;Copper Fill61
79;;;54.7624;-42.6595;0;Bottom;Copper Fill583
80;2.49k;0805 [SMD];45.7411;-15.3169;180;Top;R3
81;;;89.5858;-52.7814;0;Bottom;Copper Fill425
82;;;4.2037;-67.0054;0;Bottom;Copper Fill197
83;160;THT;55.6562;-41.352;90;Bottom;R32
84;;;11.2014;-25.4764;0;Bottom;Copper Fill115
85;;THT;12.4762;-19.127;0;Bottom;J26
86;;;48.0361;-31.192;0;Bottom;Via21
87;;;3.81;-7.6964;0;Bottom;Copper Fill551
88;;;11.2014;-15.3164;0;Bottom;Copper Fill534
89;;;86.0933;-93.3706;0;Bottom;Copper Fill715
90;;TO220 [THT];39.4002;-71.832;90;Bottom;Q7
91;;;11.2014;-10.2364;0;Bottom;Copper Fill548
92;;;44.9072;-21.0695;0;Bottom;Copper Fill651
93;;;44.9072;-21.0695;0;Bottom;Copper Fill271
94;;300 mil [THT];6.1008;-92.787;0;Bottom;D12
95;;3 mm [THT];13.7698;-89.0564;0;Bottom;LED3
96;1k;THT;22.6362;-85.167;180;Bottom;R19
97;;;5.9944;-45.8599;0;Bottom;Copper Fill720
98;;;86.1361;-60.402;0;Bottom;Via30
99;;THT;4.8562;-34.367;0;Bottom;J65
100;;;65.7733;-38.9384;0;Bottom;Copper Fill677
101;;THT;7.3962;-11.507;0;Bottom;J49
102;0.1µF;200 mil [THT, multilayer];36.6062;-39.447;-90;Bottom;C7
103;;;3.5433;-83.0836;0;Bottom;Copper Fill278
104;;3 mm [THT];63.9672;-43.2568;90;Bottom;LED7
105;;TO220 [THT];49.9412;-61.418;180;Bottom;Q6
106;;;30.226;-43.8406;0;Bottom;Copper Fill433
107;;;31.2166;-88.9764;0;Bottom;Copper Fill370
108;;;68.3133;-90.3988;0;Bottom;Copper Fill351
109;;;94.1324;-33.1599;0;Bottom;Copper Fill559
110;;;21.3614;-48.9714;0;Bottom;Copper Fill58
111;;TO220 [THT];6.14962;-88.1114;180;Bottom;Q2
112;;THT;70.8962;-69.292;0;Bottom;JP1
113;;;21.3614;-54.0514;0;Bottom;Copper Fill423
114;;;8.6614;-15.3164;0;Bottom;Copper Fill150
115;;;29.6926;-46.1012;0;Bottom;Copper Fill54
116;;;29.3116;-50.0636;0;Bottom;Copper Fill48
117;;;72.7329;-38.6844;0;Bottom;Copper Fill584
118;;;8.6614;-12.7764;0;Bottom;Copper Fill159
119;;;54.3433;-42.2404;0;Bottom;Copper Fill206
120;;;38.7096;-69.3295;0;Bottom;Copper Fill262
121;;;8.6614;-17.8564;0;Bottom;Copper Fill140
122;;;11.2014;-28.0164;0;Bottom;Copper Fill493
123;;THT;15.0162;-21.667;0;Bottom;J15
124;;;8.6614;-10.2364;0;Bottom;Copper Fill547
125;;;31.4833;-9.2204;0;Bottom;Copper Fill201
126;;THT;9.9362;-24.207;0;Bottom;J36
127;;;16.2861;-44.527;0;Bottom;Via38
128;;;82.3214;-17.5008;0;Bottom;Copper Fill143
129;;;67.6529;-36.5254;0;Bottom;Copper Fill701
130;;;79.2988;-53.01;0;Bottom;Copper Fill426
131;;;77.8129;-14.9354;0;Bottom;Copper Fill248
132;;;51.5112;-78.2068;0;Bottom;Copper Fill17
133;;;21.3614;-31.1914;0;Bottom;Copper Fill101
134;;;23.0124;-83.2995;0;Bottom;Copper Fill705
135;;;80.3529;-9.8554;0;Bottom;Copper Fill597
136;100k;THT;37.2412;-87.707;0;Bottom;R14
137;;;95.0214;-75.6414;0;Bottom;Copper Fill387
138;;;86.0933;-93.3706;0;Bottom;Copper Fill345
139;;THT;12.4762;-16.587;0;Bottom;J22
140;;;90.5129;-50.7748;0;Bottom;Copper Fill290
141;;;33.3629;-38.024;0;Bottom;Copper Fill708
142;;;42.2529;-96.7996;0;Bottom;Copper Fill656
143;;;6.1214;-7.6964;0;Bottom;Copper Fill173
144;;;84.1629;-41.2244;0;Bottom;Copper Fill587
145;;;75.3411;-59.767;0;Bottom;Via29
146;;;13.7414;-15.3164;0;Bottom;Copper Fill535
147;;;3.5052;-15.164;0;Bottom;Copper Fill531
148;;;93.5228;-93.4595;0;Bottom;Copper Fill301
149;;;43.3324;-41.3895;0;Bottom;Copper Fill580
150;;;8.6233;-49.2254;0;Bottom;Copper Fill236
151;;;21.3614;-23.5714;0;Bottom;Copper Fill117
152;;;42.4688;-41.3895;0;Bottom;Copper Fill579
153;;;69.0372;-89.6495;0;Bottom;Copper Fill726
154;;;39.8272;-42.0499;0;Bottom;Copper Fill691
155;;;1.87995;-8.91036;0;Bottom;TXT11
156;;;11.2014;-12.7764;0;Bottom;Copper Fill160
157;;;67.6529;-55.55;0;Bottom;Copper Fill652
158;;;8.6614;-22.9364;0;Bottom;Copper Fill510
159;;;73.3933;-88.9256;0;Bottom;Copper Fill327
160;;;38.4429;-91.364;0;Bottom;Copper Fill225
161;;;72.009;-20.4599;0;Bottom;Copper Fill316
162;;;13.7414;-35.6364;0;Bottom;Copper Fill464
163;;;6.1214;-25.4764;0;Bottom;Copper Fill113
164;;THT;12.4762;-34.367;0;Bottom;J29
165;;;79.0829;-21.2854;0;Bottom;Copper Fill246
166;;;22.5933;-82.8804;0;Bottom;Copper Fill703
167;;;13.7414;-35.6364;0;Bottom;Copper Fill94
168;0.1µF;200 mil [THT, multilayer];73.4362;-87.072;90;Bottom;C13
169;;;95.0214;-62.9414;0;Bottom;Copper Fill37
170;;;24.9174;-67.4499;0;Bottom;Copper Fill617
171;;;6.1214;-35.6364;0;Bottom;Copper Fill91
172;;;1.06987;-65.7167;-90;Bottom;MPX4250AP1
173;;;13.7414;-25.4764;0;Bottom;Copper Fill504
174;;;31.1658;-86.4618;0;Bottom;Copper Fill372
175;;;92.5068;-37.8716;0;Bottom;Copper Fill80
176;;TO220 [THT];53.7512;-91.136;0;Bottom;Q1
177;;;77.597;-56.4644;0;Bottom;Copper Fill407
178;;;8.6614;-33.0964;0;Bottom;Copper Fill98
179;;;24.4729;-67.8944;0;Bottom;Copper Fill615
180;;;18.8976;-71.2599;0;Bottom;Copper Fill645
181;;;13.7414;-10.2364;0;Bottom;Copper Fill549
182;;;8.6614;-30.5564;0;Bottom;Copper Fill103
183;;;13.7414;-25.4764;0;Bottom;Copper Fill116
184;;;58.674;-14.7195;0;Bottom;Copper Fill713
185;;;63.8429;-91.2624;0;Bottom;Copper Fill337
186;;;65.7733;-42.6214;0;Bottom;Copper Fill676
187;;;21.3614;-13.4114;0;Bottom;Copper Fill157
188;;;56.2229;-74.6254;0;Bottom;Copper Fill654
189;;THT;7.3962;-16.587;0;Bottom;J46
190;;;63.0428;-47.0156;0;Bottom;Copper Fill60
191;;;88.6761;-65.482;0;Bottom;Via41
192;;;8.6614;-22.9364;0;Bottom;Copper Fill123
193;;;44.1833;-37.77;0;Bottom;Copper Fill648
194;;;95.0214;-40.0814;0;Bottom;Copper Fill451
195;;;95.0214;-73.1014;0;Bottom;Copper Fill26
196;;;13.7414;-12.7764;0;Bottom;Copper Fill541
197;;;57.023;-30.3024;0;Bottom;Copper Fill485
198;;THT;7.3962;-24.207;0;Bottom;J48
199;;;75.2729;-59.3854;0;Bottom;Copper Fill700
200;;;42.2529;-8.9156;0;Bottom;Copper Fill348
201;;;38.0873;-15.5704;0;Bottom;Copper Fill332
202;;;95.0214;-75.6414;0;Bottom;Copper Fill23
203;;;11.2014;-25.4764;0;Bottom;Copper Fill503
204;;;96.8629;-24.4604;0;Bottom;Copper Fill594
205;;THT;12.4762;-36.907;0;Bottom;J23
206;;;34.417;-86.4364;0;Bottom;Copper Fill368
207;;;16.2433;-44.1454;0;Bottom;Copper Fill604
208;;;9.0424;-49.6699;0;Bottom;Copper Fill614
209;;;16.2433;-55.5754;0;Bottom;Copper Fill235
210;;;5.3848;-41.1736;0;Bottom;Copper Fill71
211;;THT;4.8562;-31.827;0;Bottom;J64
212;;;98.5774;-52.8195;0;Bottom;Copper Fill341
213;;;92.8438;-18.5163;-90;Bottom;TXT4
214;;;94.1324;-33.1599;0;Bottom;Copper Fill183
215;1k;THT;52.4812;-71.832;90;Bottom;R58
216;;;85.471;-93.9675;0;Bottom;Copper Fill716
217;;;81.9658;-15.2402;0;Bottom;Copper Fill536
218;0.22µF;200 mil [THT, multilayer];35.3362;-22.302;-90;Bottom;C2
219;;;21.3614;-46.4314;0;Bottom;Copper Fill62
220;;;91.1733;-72.7204;0;Bottom;Copper Fill622
221;;;1.9635;-16.2342;0;Bottom;TXT11
222;;;43.3324;-41.3895;0;Bottom;Copper Fill204
223;;;48.6029;-37.4144;0;Bottom;Copper Fill562
224;1µF;0805 [SMD, multilayer];67.7212;-40.472;-90;Top;C12
225;1k;THT;96.2962;-10.872;-90;Bottom;R59
226;;;3.5941;-88.7986;0;Bottom;Copper Fill661
227;;;29.3116;-45.8472;0;Bottom;Copper Fill431
228;;THT;9.9362;-26.747;0;Bottom;J39
229;;;43.688;-94.2596;0;Bottom;Copper Fill365
230;;;12.7762;-55.423;0;Bottom;Copper Fill36
231;;;95.0214;-65.4814;0;Bottom;Copper Fill403
232;;;81.6229;-86.5888;0;Bottom;Copper Fill363
233;;;67.0433;-7.6456;0;Bottom;Copper Fill356
234;;;77.9272;-94.7295;0;Bottom;Copper Fill339
235;;;93.4974;-25.5399;0;Bottom;Copper Fill185
236;;;36.9316;-69.3295;0;Bottom;Copper Fill261
237;;;46.6344;-29.6674;0;Bottom;Copper Fill489
238;;;28.6766;-86.284;0;Bottom;Copper Fill6
239;;;53.7464;-67.7166;0;Bottom;Copper Fill32
240;;;95.6613;-31.192;0;Bottom;Hole6
241;;;95.0214;-42.6214;0;Bottom;Copper Fill444
242;;;8.1788;-49.6699;0;Bottom;Copper Fill237
243;;;53.8988;-42.6595;0;Bottom;Copper Fill582
244;;;88.6968;-70.8662;0;Bottom;Copper Fill392
245;;;85.471;-93.9675;0;Bottom;Copper Fill346
246;2.4k;THT;37.2412;-90.247;0;Bottom;R9
247;;;58.674;-14.7195;0;Bottom;Copper Fill342
248;;;92.4433;-94.5644;0;Bottom;Copper Fill686
249;;;37.6428;-15.9895;0;Bottom;Copper Fill333
250;;;48.1584;-36.9699;0;Bottom;Copper Fill187
251;;;3.2766;-41.9864;0;Bottom;Copper Fill70
252;;;56.5912;-78.2068;0;Bottom;Copper Fill19
253;;DIP (Dual Inline) [THT];51.8462;-22.302;-90;Bottom;IC4
254;;THT;93.5022;-91.0489;0;Bottom;J3
255;;THT;12.4762;-24.207;0;Bottom;J24
256;;;54.3861;-42.622;0;Bottom;Via10
257;;;11.2014;-35.6364;0;Bottom;Copper Fill93
258;;;15.9766;-35.6364;0;Bottom;Copper Fill465
259;;;8.6614;-15.3164;0;Bottom;Copper Fill533
260;;3 mm [THT];63.9672;-58.4968;90;Bottom;LED5
261;;;15.0622;-38.1256;0;Bottom;Copper Fill448
262;;;48.9712;-78.2068;0;Bottom;Copper Fill16
263;;;34.3916;-12.8018;0;Bottom;Copper Fill530
264;;THT;15.0162;-31.827;0;Bottom;J11
265;;;1.95051;-11.3798;0;Bottom;TXT11
266;;;77.47;-77.8004;0;Bottom;Copper Fill381
267;;;63.8429;-93.0404;0;Bottom;Copper Fill336
268;;;43.434;-21.0695;0;Bottom;Copper Fill270
269;;THT;9.9362;-8.96696;-90;Bottom;J66
270;;;96.8629;-25.324;0;Bottom;Copper Fill593
271;;;50.2158;-87.0714;0;Bottom;Copper Fill5
272;750;THT;6.7612;-48.337;180;Bottom;R41
273;;;43.0022;-9.6395;0;Bottom;Copper Fill733
274;;;95.0214;-37.5414;0;Bottom;Copper Fill87
275;;;21.3614;-53.772;0;Bottom;Copper Fill49
276;;;68.072;-71.0186;0;Bottom;Copper Fill389
277;;;84.8614;-6.0708;0;Bottom;Copper Fill177
278;;;95.0214;-70.5614;0;Bottom;Copper Fill395
279;;;50.6984;-75.0699;0;Bottom;Copper Fill242
280;;;65.7733;-37.5414;0;Bottom;Copper Fill287
281;;;41.4528;-95.9995;0;Bottom;Copper Fill273
282;;;3.7338;-67.4499;0;Bottom;Copper Fill198
283;;;90.5811;-10.8721;0;Bottom;Via17
284;;;83.5533;-25.3748;0;Bottom;Copper Fill292
285;;;86.6902;-93.9675;0;Bottom;Copper Fill717
286;;;77.8811;-15.3171;0;Bottom;Via42
287;;;11.2014;-17.8564;0;Bottom;Copper Fill141
288;;;92.5068;-40.4116;0;Bottom;Copper Fill72
289;;;88.6333;-69.1644;0;Bottom;Copper Fill630
290;;;14.732;-71.1964;0;Bottom;Copper Fill394
291;;;66.294;-8.3695;0;Bottom;Copper Fill357
292;;;92.8633;-84.1589;0;Bottom;TXT8
293;;;61.214;-21.0695;0;Bottom;Copper Fill312
294;;;88.6333;-68.2754;0;Bottom;Copper Fill631
295;;;89.0524;-65.5195;0;Bottom;Copper Fill360
296;;;80.3529;-10.7444;0;Bottom;Copper Fill223
297;;;21.463;-8.687;0;Bottom;Copper Fill171
298;;;72.644;-89.6495;0;Bottom;Copper Fill328
299;;;17.7577;-14.823;0;Bottom;TXT12
300;;300 mil [THT];6.1008;-95.962;0;Bottom;D11
301;;;21.3614;-43.8914;0;Bottom;Copper Fill441
302;;;91.1733;-36.1698;0;Bottom;Copper Fill646
303;2.4k;THT;60.1012;-58.497;-90;Bottom;R26
304;;;21.3614;-21.0314;0;Bottom;Copper Fill515
305;;;13.7414;-22.9364;0;Bottom;Copper Fill512
306;1k;THT;85.5012;-56.592;180;Bottom;R24
307;;;32.9184;-37.5795;0;Bottom;Copper Fill331
308;;;95.0214;-50.2414;0;Bottom;Copper Fill56
309;;;46.7106;-83.3884;0;Bottom;Copper Fill11
310;;THT;12.4762;-11.507;0;Bottom;J25
311;;THT;12.4762;-26.747;0;Bottom;J27
312;;SO16;82.3262;-69.927;90;Bottom;DRV8825
313;;;89.7128;-51.5495;0;Bottom;Copper Fill291
314;;;54.3433;-43.104;0;Bottom;Copper Fill205
315;;;72.7329;-45.0344;0;Bottom;Copper Fill229
316;;;35.2806;-82.2454;0;Bottom;Copper Fill9
317;0.1µF;200 mil [THT, multilayer];79.7862;-94.692;0;Bottom;C15
318;2.4k;THT;37.2412;-82.627;0;Bottom;R12
319;;;43.0022;-9.6395;0;Bottom;Copper Fill350
320;;;25.1333;-29.7944;0;Bottom;Copper Fill189
321;;;49.5046;-21.4632;0;Bottom;Copper Fill121
322;100k;THT;57.5612;-71.832;90;Bottom;R48
323;;;61.9633;-20.3456;0;Bottom;Copper Fill311
324;;;95.0214;-40.0814;0;Bottom;Copper Fill77
325;;;8.6614;-7.6964;0;Bottom;Copper Fill553
326;;;4.2211;-67.387;0;Bottom;Via16
327;;;3.7338;-67.4499;0;Bottom;Copper Fill573
328;;;49.0474;-36.9699;0;Bottom;Copper Fill565
329;;;21.3614;-51.5114;0;Bottom;Copper Fill53
330;;;13.7414;-22.9364;0;Bottom;Copper Fill125
331;;;39.5224;-20.4599;0;Bottom;Copper Fill308
332;;;97.79;-45.1106;0;Bottom;Copper Fill438
333;;;11.2014;-40.5132;0;Bottom;Copper Fill74
334;;;46.4058;-78.1306;0;Bottom;Copper Fill384
335;;THT;84.2312;-10.237;-90;Bottom;JP5
336;;THT;7.3962;-21.667;0;Bottom;J56
337;160;THT;62.6412;-69.927;90;Bottom;R25
338;;;96.9311;-24.842;0;Bottom;Via25
339;;;76.962;-42.0499;0;Bottom;Copper Fill675
340;;;31.1658;-83.8456;0;Bottom;Copper Fill373
341;;;70.8649;-73.8283;0;Bottom;TXT1
342;;;11.2014;-7.6964;0;Bottom;Copper Fill554
343;;;4.2037;-67.8944;0;Bottom;Copper Fill571
344;;;64.0588;-73.7999;0;Bottom;Copper Fill193
345;;;35.2933;-19.0756;0;Bottom;Copper Fill310
346;;;41.4528;-87.7699;0;Bottom;Copper Fill266
347;;;72.644;-89.6495;0;Bottom;Copper Fill718
348;;;11.2014;-30.5564;0;Bottom;Copper Fill482
349;;;75.9206;-16.5356;0;Bottom;Copper Fill145
350;;;27.813;-18.212;0;Bottom;Copper Fill500
351;;;88.6761;-68.657;0;Bottom;Via40
352;;;16.2861;-55.957;0;Bottom;Via37
353;;;78.2574;-15.3799;0;Bottom;Copper Fill629
354;;;43.2562;-91.5418;0;Bottom;Copper Fill367
355;;;25.3492;-13.5384;0;Bottom;Copper Fill153
356;10k;THT;81.0562;-12.777;0;Bottom;R39
357;;;79.5274;-21.7299;0;Bottom;Copper Fill626
358;;;93.0529;-25.9844;0;Bottom;Copper Fill560
359;;DIP (Dual Inline) [THT];82.3262;-22.302;-90;Bottom;IC3
360;100k;THT;86.1362;-36.907;180;Bottom;R38
361;;THT;9.9362;-39.447;-90;Bottom;J70
362;;;65.7733;-54.1784;0;Bottom;Copper Fill671
363;;;3.5433;-83.0836;0;Bottom;Copper Fill667
364;470;THT;70.2612;-22.302;-90;Bottom;R22
365;;;54.7624;-42.6595;0;Bottom;Copper Fill208
366;;;95.0214;-37.5414;0;Bottom;Copper Fill458
367;;THT;15.0162;-16.587;0;Bottom;J17
368;;;6.1214;-15.3164;0;Bottom;Copper Fill149
369;;;41.4528;-9.5252;0;Bottom;Copper Fill179
370;;;95.0214;-60.4014;0;Bottom;Copper Fill38
371;;;15.7988;-44.5899;0;Bottom;Copper Fill605
372;;;89.5604;-17.2468;0;Bottom;Copper Fill144
373;;;6.1214;-7.6964;0;Bottom;Copper Fill552
374;;;1.89408;-36.5859;0;Bottom;TXT11
375;;;21.3614;-18.4914;0;Bottom;Copper Fill523
376;;;21.3614;-15.9514;0;Bottom;Copper Fill529
377;;;51.8414;-27.0512;0;Bottom;Copper Fill498
378;;;49.3014;-27.0512;0;Bottom;Copper Fill497
379;470;THT;40.4162;-22.937;-90;Bottom;R4
380;;;17.7577;-17.2422;0;Bottom;TXT12
381;;;55.6133;-19.3296;0;Bottom;Copper Fill683
382;;;95.0214;-52.7814;0;Bottom;Copper Fill427
383;;;49.9872;-2.337;0;Bottom;Copper Fill180
384;;;17.653;-21.0314;0;Bottom;Copper Fill129
385;;;42.2529;-96.7996;0;Bottom;Copper Fill272
386;;;77.8129;-14.9354;0;Bottom;Copper Fill628
387;;;25.1333;-29.7944;0;Bottom;Copper Fill566
388;;;44.1833;-20.3456;0;Bottom;Copper Fill269
389;;;24.4729;-67.0054;0;Bottom;Copper Fill616
390;;;29.9466;-85.4966;0;Bottom;Copper Fill4
391;;;55.0164;-36.2206;0;Bottom;Copper Fill466
392;1k;THT;85.5012;-54.052;180;Bottom;R23
393;;;4.6228;-67.4499;0;Bottom;Copper Fill574
394;;;90.9574;-10.9095;0;Bottom;Copper Fill195
395;;;27.813;-49.6064;0;Bottom;Copper Fill422
396;;;84.6074;-40.7799;0;Bottom;Copper Fill215
397;;;90.5129;-50.7748;0;Bottom;Copper Fill680
398;;DIP (Dual Inline) [THT];74.0712;-40.717;180;Bottom;IC2
399;;;8.6233;-49.2254;0;Bottom;Copper Fill612
400;;;11.2014;-10.2364;0;Bottom;Copper Fill165
401;;;93.7562;-33.097;0;Bottom;Via51
402;;;96.4184;-19.7995;0;Bottom;Copper Fill592
403;;;8.6614;-28.0164;0;Bottom;Copper Fill108
404;;;3.175;-21.4886;0;Bottom;Copper Fill120
405;;;16.7132;-95.9995;0;Bottom;Copper Fill664
406;;THT;15.0162;-19.127;0;Bottom;J16
407;;;67.564;-89.6495;0;Bottom;Copper Fill725
408;4.7nF;200 mil [THT, multilayer];32.7962;-35.002;0;Bottom;C23
409;;;50.6984;-75.0699;0;Bottom;Copper Fill619
410;;;22.1488;-83.2995;0;Bottom;Copper Fill704
411;;;11.2014;-38.1764;0;Bottom;Copper Fill83
412;;;51.1429;-74.6254;0;Bottom;Copper Fill618
413;;;78.6384;-21.7299;0;Bottom;Copper Fill625
414;;;48.3108;-69.8756;0;Bottom;Copper Fill393
415;;;89.5604;-14.7068;0;Bottom;Copper Fill154
416;;;6.1214;-17.8564;0;Bottom;Copper Fill524
417;;;21.3614;-26.086;0;Bottom;Copper Fill499
418;;;18.1737;-64.4654;0;Bottom;Copper Fill658
419;;;6.7437;-46.5838;0;Bottom;Copper Fill719
420;;THT;12.4762;-29.287;0;Bottom;J31
421;;;36.9316;-69.3295;0;Bottom;Copper Fill638
422;;;25.6032;-9.3728;0;Bottom;Copper Fill168
423;;;11.2014;-30.5564;0;Bottom;Copper Fill104
424;3.9k;0805 [SMD];71.1411;-33.732;180;Top;R7
425;100k;THT;42.3212;-69.927;90;Bottom;R49
426;2.4k;THT;22.6362;-90.247;180;Bottom;R15
427;;;6.1214;-33.0964;0;Bottom;Copper Fill97
428;;;51.2064;-78.1306;0;Bottom;Copper Fill386
429;;;33.3629;-37.1604;0;Bottom;Copper Fill709
430;;;83.7184;-40.7799;0;Bottom;Copper Fill214
431;;;70.1929;-94.9962;0;Bottom;Copper Fill318
432;;;89.9414;-64.9988;0;Bottom;Copper Fill35
433;;;15.9766;-33.0964;0;Bottom;Copper Fill473
434;;THT;21.4932;-33.732;0;Bottom;J4
435;;;1.82239;-21.3142;0;Bottom;TXT11
436;;THT;4.8562;-19.127;0;Bottom;J62
437;;;17.6369;-22.2012;0;Bottom;TXT12
438;;;2.159;-51.3844;0;Bottom;Copper Fill51
439;;;15.7988;-56.0199;0;Bottom;Copper Fill609
440;100k;THT;85.5012;-59.132;180;Bottom;R35
441;;;91.3384;-93.4595;0;Bottom;Copper Fill687
442;;;18.1911;-64.847;0;Bottom;Via35
443;;;38.7096;-58.5599;0;Bottom;Copper Fill640
444;;THT;4.8562;-24.207;0;Bottom;J60
445;;;21.1074;-44.1708;0;Bottom;Copper Fill66
446;;;91.6178;-23.419;0;Bottom;Copper Fill119
447;;;37.8333;-68.4532;0;Bottom;Copper Fill637
448;;;6.1214;-38.1764;0;Bottom;Copper Fill453
449;;THT;4.8562;-21.667;0;Bottom;J68
450;;;13.7414;-7.6964;0;Bottom;Copper Fill176
451;;;96.4184;-24.8795;0;Bottom;Copper Fill595
452;2.4k;THT;61.3712;-40.082;90;Bottom;R33
453;1k;THT;37.2178;-85.1435;0;Bottom;R13
454;;;15.6337;-78.664;0;Bottom;Copper Fill633
455;;;19.3929;-71.7298;0;Bottom;Copper Fill644
456;1µF;0805 [SMD, multilayer];19.4612;-70.172;90;Top;C20
457;;;25.1333;-28.9054;0;Bottom;Copper Fill190
458;;;91.1733;-73.584;0;Bottom;Copper Fill244
459;;;39.497;-37.389;0;Bottom;Copper Fill78
460;;;27.0811;-8.96706;0;Bottom;Via15
461;;;21.3614;-15.9514;0;Bottom;Copper Fill147
462;5V;TO220 [THT];70.2612;-95.581;0;Bottom;U1
463;;;88.6333;-69.1644;0;Bottom;Copper Fill250
464;0.3µF;200 mil [THT, multilayer];9.3012;-42.622;0;Bottom;C18
465;;;80.3529;-9.8554;0;Bottom;Copper Fill224
466;;;42.2529;-74.2698;0;Bottom;Copper Fill263
467;;;77.8129;-15.8244;0;Bottom;Copper Fill627
468;;;93.1212;-25.477;0;Bottom;Via50
469;;;37.0586;-19.4566;0;Bottom;Copper Fill514
470;;;38.6588;-20.4599;0;Bottom;Copper Fill307
471;;;49.9872;-2.337;0;Bottom;Copper Fill557
472;;;58.4454;-68.3008;0;Bottom;Copper Fill29
473;;;65.7733;-57.8614;0;Bottom;Copper Fill674
474;;;46.4566;-56.6295;0;Bottom;Copper Fill641
475;;;13.7414;-30.5564;0;Bottom;Copper Fill105
476;;;15.7988;-44.5899;0;Bottom;Copper Fill232
477;100k;THT;86.1362;-44.527;180;Bottom;R36
478;;;66.4464;-53.4799;0;Bottom;Copper Fill672
479;;;16.4338;-62.3699;0;Bottom;Copper Fill722
480;;;38.4429;-90.5004;0;Bottom;Copper Fill226
481;1k;THT;37.2178;-92.7635;0;Bottom;R10
482;;;95.0214;-65.4814;0;Bottom;Copper Fill34
483;;;14.732;-63.5764;0;Bottom;Copper Fill405
484;;THT;90.5812;-24.842;0;Bottom;JP2
485;;;63.246;-82.728;0;Bottom;Copper Fill379
486;1k;THT;86.1362;-41.987;180;Bottom;R30
487;;;11.2014;-28.0164;0;Bottom;Copper Fill109
488;;;3.2512;-36.0174;0;Bottom;Copper Fill88
489;;;11.2014;-15.3164;0;Bottom;Copper Fill151
490;;;42.2529;-10.3888;0;Bottom;Copper Fill731
491;;;89.3111;-46.432;0;Bottom;Via1
492;;;53.8988;-42.6595;0;Bottom;Copper Fill207
493;;;51.5874;-75.0699;0;Bottom;Copper Fill243
494;;;48.6664;-78.1306;0;Bottom;Copper Fill385
495;;;51.308;-67.6658;0;Bottom;Copper Fill31
496;;;21.3614;-13.4114;0;Bottom;Copper Fill537
497;;;3.3528;-92.8372;0;Bottom;Copper Fill1
498;;;21.3614;-21.0314;0;Bottom;Copper Fill128
499;;;38.8874;-90.9195;0;Bottom;Copper Fill600
500;;;64.5461;-73.737;0;Bottom;Via19
501;;;30.2133;-35.7888;0;Bottom;Copper Fill293
502;;;79.1972;-58.1662;0;Bottom;Copper Fill41
503;;;79.3242;-53.0862;0;Bottom;Copper Fill50
504;;;48.6029;-36.5254;0;Bottom;Copper Fill563
505;;;39.5224;-20.4599;0;Bottom;Copper Fill693
506;;;95.0214;-50.2414;0;Bottom;Copper Fill432
507;;;44.1833;-21.8188;0;Bottom;Copper Fill268
508;;THT;15.0162;-11.507;0;Bottom;J19
509;;300 mil [THT];49.3316;-94.692;180;Bottom;D10
510;;THT;15.0162;-36.907;0;Bottom;J9
511;;;15.6337;-77.8004;0;Bottom;Copper Fill634
512;;THT;9.9362;-11.507;0;Bottom;J37
513;;;8.6614;-38.1764;0;Bottom;Copper Fill82
514;;;89.5858;-55.3214;0;Bottom;Copper Fill419
515;;;28.6766;-83.8964;0;Bottom;Copper Fill7
516;;;92.42;-97.0604;0;Bottom;TXT9
517;1k;THT;49.9412;-71.832;90;Bottom;R50
518;;;49.9872;-56.3882;0;Bottom;Copper Fill146
519;47µF;200 mil [THT, tantalum];68.3562;-87.072;90;Bottom;C14
520;;;67.0433;-9.1188;0;Bottom;Copper Fill734
521;;;3.5052;-15.1386;0;Bottom;Copper Fill137
522;;TO220 [THT];53.7512;-85.421;0;Bottom;Q3
523;;;1.89295;-18.7742;0;Bottom;TXT11
524;;;13.7414;-38.1764;0;Bottom;Copper Fill84
525;;;96.8629;-20.244;0;Bottom;Copper Fill590
526;;;96.8629;-19.3804;0;Bottom;Copper Fill218
527;;;65.7733;-59.2584;0;Bottom;Copper Fill673
528;;;17.6784;-23.5968;0;Bottom;Copper Fill118
529;;;39.1461;-20.3971;0;Bottom;Via20
530;;;91.1733;-72.7204;0;Bottom;Copper Fill245
531;;;32.1564;-58.5218;0;Bottom;Copper Fill40
532;;;60.1472;-14.7195;0;Bottom;Copper Fill343
533;;;56.1848;-67.6658;0;Bottom;Copper Fill33
534;;;16.4084;-17.7802;0;Bottom;Copper Fill495
535;;;36.5506;-85.9284;0;Bottom;Copper Fill3
536;;;47.9933;-31.674;0;Bottom;Copper Fill361
537;;;95.0214;-52.7814;0;Bottom;Copper Fill52
538;;;77.2033;-95.4788;0;Bottom;Copper Fill338
539;;;6.1214;-30.5564;0;Bottom;Copper Fill102
540;;;33.4311;-37.542;0;Bottom;Via7
541;;;16.2433;-55.5754;0;Bottom;Copper Fill608
542;;300 mil [THT];30.2562;-23.5466;-90;Bottom;D17
543;;;18.288;-87.7699;0;Bottom;Copper Fill280
544;;;11.2014;-33.0964;0;Bottom;Copper Fill471
545;;;95.0214;-55.3214;0;Bottom;Copper Fill420
546;;;13.7414;-15.3164;0;Bottom;Copper Fill152
547;;;44.196;-36.2714;0;Bottom;Copper Fill90
548;;3 mm [THT];13.7698;-83.9764;0;Bottom;LED4
549;;;8.6614;-25.4764;0;Bottom;Copper Fill502
550;;;6.1214;-22.9364;0;Bottom;Copper Fill509
551;;;79.1972;-55.7024;0;Bottom;Copper Fill418
552;;;90.5129;-10.4904;0;Bottom;Copper Fill569
553;2.49k;0805 [SMD];32.4061;-15.9519;0;Top;R1
554;470;THT;37.8762;-22.937;-90;Bottom;R2
555;;;22.1488;-83.2995;0;Bottom;Copper Fill321
556;;;35.2933;-20.5488;0;Bottom;Copper Fill309
557;;;72.7329;-44.1454;0;Bottom;Copper Fill601
558;;;13.7414;-7.6964;0;Bottom;Copper Fill555
559;;;21.3614;-36.2714;0;Bottom;Copper Fill89
560;;;92.4433;-94.5644;0;Bottom;Copper Fill299
561;;;21.3614;-18.4914;0;Bottom;Copper Fill135
562;;;15.9766;-30.5564;0;Bottom;Copper Fill484
563;;;51.5874;-75.0699;0;Bottom;Copper Fill620
564;;;96.2533;-35.5094;0;Bottom;Copper Fill642
565;;;21.3614;-28.6514;0;Bottom;Copper Fill106
566;;;55.6133;-17.7548;0;Bottom;Copper Fill298
567;;;17.7577;-19.7821;0;Bottom;TXT12
568;;;6.1214;-10.2364;0;Bottom;Copper Fill546
569;;;55.6133;-17.7548;0;Bottom;Copper Fill684
570;;;13.7414;-38.1764;0;Bottom;Copper Fill456
571;;;92.6044;-27.395;-90;Bottom;TXT4
572;;;95.0214;-60.4014;0;Bottom;Copper Fill411
573;;;17.7258;-24.833;0;Bottom;TXT12
574;;;71.8312;-52.756;0;Bottom;Copper Fill424
575;;;26.1366;-87.1476;0;Bottom;Copper Fill369
576;;;3.81;-10.2364;0;Bottom;Copper Fill545
577;;;72.7329;-37.7954;0;Bottom;Copper Fill210
578;;;98.5774;-52.8195;0;Bottom;Copper Fill729
579;;;86.6902;-93.9675;0;Bottom;Copper Fill347
580;;;43.688;-33.4774;0;Bottom;Copper Fill468
581;;;13.7414;-17.8564;0;Bottom;Copper Fill527
582;;;16.2433;-45.0344;0;Bottom;Copper Fill230
583;;;54.0512;-78.2068;0;Bottom;Copper Fill18
584;10k;THT;81.0562;-15.317;0;Bottom;R40
585;;;75.1332;-9.576;0;Bottom;Copper Fill162
586;;;42.9133;-30.4294;0;Bottom;Copper Fill265
587;;;21.3614;-38.8114;0;Bottom;Copper Fill79
588;;;93.5228;-93.4595;0;Bottom;Copper Fill688
589;;;81.3308;-57.8614;0;Bottom;Copper Fill416
590;;;21.3614;-26.1114;0;Bottom;Copper Fill111
591;;THT;15.0162;-26.747;0;Bottom;J13
592;;;79.629;-44.6026;0;Bottom;Copper Fill440
593;;THT;4.8562;-11.507;0;Bottom;J61
594;;;91.2161;-73.102;0;Bottom;Via44
595;;;81.3308;-52.7814;0;Bottom;Copper Fill428
596;;;96.8629;-20.244;0;Bottom;Copper Fill217
597;;;8.6661;-49.607;0;Bottom;Via36
598;;;21.4122;-56.312;0;Bottom;Copper Fill417
599;1k;THT;44.8612;-71.832;90;Bottom;R51
600;;;62.6872;-21.0695;0;Bottom;Copper Fill696
601;;;86.1568;-74.3714;0;Bottom;Copper Fill390
602;;;77.2414;-32.1312;0;Bottom;Copper Fill475
603;;;4.6228;-67.4499;0;Bottom;Copper Fill199
604;;;96.8629;-24.4604;0;Bottom;Copper Fill221
605;;;63.8429;-93.0404;0;Bottom;Copper Fill706
606;;;85.9536;-19.7614;0;Bottom;Copper Fill522
607;;;15.1638;-78.2195;0;Bottom;Copper Fill258
608;;;26.8986;-52.6798;0;Bottom;Copper Fill44
609;;;98.1329;-52.4004;0;Bottom;Copper Fill728
610;;;82.3214;-32.1312;0;Bottom;Copper Fill477
611;;;91.1733;-45.39;0;Bottom;Copper Fill678
612;;;47.3329;-55.7532;0;Bottom;Copper Fill264
613;;;72.8011;-38.177;0;Bottom;Via9
614;;;25.5524;-29.3499;0;Bottom;Copper Fill567
615;;THT;9.9362;-34.367;0;Bottom;J41
616;;;95.0214;-78.1814;0;Bottom;Copper Fill383
617;;;97.79;-50.1906;0;Bottom;Copper Fill55
618;;;6.1214;-22.9364;0;Bottom;Copper Fill122
619;;;92.8442;-13.2908;-90;Bottom;TXT4
620;;;29.464;-35.0395;0;Bottom;Copper Fill294
621;;;21.6662;-77.8512;0;Bottom;Copper Fill14
622;;;82.3722;-85.8395;0;Bottom;Copper Fill736
623;;;86.2838;-61.6714;0;Bottom;Copper Fill410
624;;;48.6029;-36.5254;0;Bottom;Copper Fill186
625;;;13.7414;-28.0164;0;Bottom;Copper Fill494
626;;;67.6529;-36.5254;0;Bottom;Copper Fill325
627;;;56.2229;-74.6254;0;Bottom;Copper Fill302
628;;;92.8021;-22.2818;-90;Bottom;TXT4
629;;;13.7414;-40.5132;0;Bottom;Copper Fill75
630;;;43.9928;-84.6076;0;Bottom;Copper Fill8
631;;THT;4.8562;-26.747;0;Bottom;J63
632;;;55.7784;-75.0699;0;Bottom;Copper Fill303
633;;;47.3329;-62.1032;0;Bottom;Copper Fill636
634;;;70.2611;-46.432;0;Bottom;Via3
635;;;17.653;-18.466;0;Bottom;Copper Fill136
636;;;68.3133;-88.9256;0;Bottom;Copper Fill352
637;;;21.3614;-38.8114;0;Bottom;Copper Fill452
638;;;3.81;-10.0332;0;Bottom;Copper Fill167
639;;;6.1214;-20.3964;0;Bottom;Copper Fill130
640;;;6.1214;-12.7764;0;Bottom;Copper Fill158
641;;;11.2014;-20.3964;0;Bottom;Copper Fill520
642;;;16.6624;-44.5899;0;Bottom;Copper Fill606
643;;;89.5858;-57.8614;0;Bottom;Copper Fill414
644;;;34.0661;-41.352;0;Bottom;Via5
645;;;61.9633;-20.3456;0;Bottom;Copper Fill694
646;;;95.0214;-80.4928;0;Bottom;Copper Fill13
647;;;66.4464;-53.4799;0;Bottom;Copper Fill282
648;;THT;7.3962;-26.747;0;Bottom;J51
649;;;2.6924;-29.1594;0;Bottom;Copper Fill95
650;;;65.7733;-57.8614;0;Bottom;Copper Fill283
651;;;42.9768;-37.897;0;Bottom;Copper Fill86
652;;;65.7733;-42.6214;0;Bottom;Copper Fill285
653;;;31.4833;-10.084;0;Bottom;Copper Fill576
654;;;44.958;-36.9699;0;Bottom;Copper Fill649
655;;;60.0329;-76.1748;0;Bottom;Copper Fill682
656;;;44.8612;-64.212;0;Bottom;Via47
657;;;54.3433;-42.2404;0;Bottom;Copper Fill581
658;;3 mm [THT];63.9672;-38.1768;90;Bottom;LED8
659;;;42.9133;-40.9704;0;Bottom;Copper Fill578
660;;;73.4822;-20.4599;0;Bottom;Copper Fill699
661;;;70.1929;-93.2436;0;Bottom;Copper Fill319
662;;;78.6384;-21.7299;0;Bottom;Copper Fill247
663;;;11.2014;-33.0964;0;Bottom;Copper Fill99
664;;;73.3933;-90.3988;0;Bottom;Copper Fill326
665;;;34.29;-45.3138;0;Bottom;Copper Fill57
666;;THT;7.3962;-19.127;0;Bottom;J50
667;;;95.0214;-68.0214;0;Bottom;Copper Fill30
668;;;60.0329;-76.1748;0;Bottom;Copper Fill296
669;1k;THT;44.2262;-41.987;90;Bottom;R21
670;;;32.9184;-37.5795;0;Bottom;Copper Fill710
671;;;24.8666;-20.0916;0;Bottom;Copper Fill126
672;;;46.4312;-78.2068;0;Bottom;Copper Fill15
673;;;86.0933;-94.5898;0;Bottom;Copper Fill714
674;;;6.1214;-12.7764;0;Bottom;Copper Fill538
675;;;96.9311;-19.7621;0;Bottom;Via26
676;;;80.3529;-10.7444;0;Bottom;Copper Fill596
677;;;90.0684;-10.9095;0;Bottom;Copper Fill570
678;;;69.0372;-89.6495;0;Bottom;Copper Fill354
679;;;95.0468;-80.5182;0;Bottom;Copper Fill375
680;;;37.8333;-68.4532;0;Bottom;Copper Fill260
681;;;15.6337;-77.8004;0;Bottom;Copper Fill257
682;;;2.6924;-89.7003;0;Bottom;Copper Fill662
683;;;69.0946;-69.1467;-90;Bottom;TXT2
684;;THT;7.3962;-14.047;0;Bottom;J45
685;;;50.6184;-55.322;0;Bottom;Arduino Mega 2560
686;;;72.7329;-37.7954;0;Bottom;Copper Fill585
687;;;95.0214;-47.7014;0;Bottom;Copper Fill436
688;;;96.0374;-32.6646;0;Bottom;Copper Fill96
689;;;16.0528;-78.2195;0;Bottom;Copper Fill635
690;;;32.2834;-36.3984;0;Bottom;Copper Fill85
691;;;15.7988;-9.0299;0;Bottom;Copper Fill216
692;;;92.5068;-43.2056;0;Bottom;Copper Fill442
693;;;18.288;-95.9995;0;Bottom;Copper Fill665
694;;THT;9.9362;-6.42696;-90;Bottom;J69
695;;;39.3954;-29.007;0;Bottom;Copper Fill488
696;;;54.0512;-78.2068;0;Bottom;Copper Fill376
697;;;8.6614;-10.2364;0;Bottom;Copper Fill164
698;;;21.3614;-28.7022;0;Bottom;Copper Fill490
699;;;83.7184;-40.7799;0;Bottom;Copper Fill589
700;;THT;12.4762;-21.667;0;Bottom;J32
701;;;2.6416;-83.9599;0;Bottom;Copper Fill279
702;;;51.1429;-74.6254;0;Bottom;Copper Fill241
703;;;88.6968;-67.0816;0;Bottom;Copper Fill401
704;;;97.5868;-42.4436;0;Bottom;Copper Fill443
705;;;57.1246;-83.9599;0;Bottom;Copper Fill655
706;;THT;77.2462;-10.237;-90;Bottom;JP4
707;;;6.1214;-33.0964;0;Bottom;Copper Fill469
708;;;79.0829;-22.1744;0;Bottom;Copper Fill623
709;;;8.6614;-38.1764;0;Bottom;Copper Fill454
710;;;57.4294;-32.4868;0;Bottom;Copper Fill474
711;;THT;9.9362;-29.287;0;Bottom;J43
712;;;31.5214;-64.567;0;Bottom;Copper Fill388
713;;;22.5933;-83.744;0;Bottom;Copper Fill702
714;;;72.7329;-19.736;0;Bottom;Copper Fill697
715;;;95.0214;-55.3214;0;Bottom;Copper Fill46
716;;computer-peripheral-power;31.5262;-64.212;90;Bottom;J5
717;;;79.0829;-21.2854;0;Bottom;Copper Fill624
718;100k;THT;22.6362;-95.962;180;Bottom;R17
719;0.22µF;200 mil [THT, multilayer];72.8012;-22.937;-90;Bottom;C10
720;;;13.7414;-12.7764;0;Bottom;Copper Fill161
721;;;6.1214;-28.0164;0;Bottom;Copper Fill107
722;;;49.0474;-68.3008;0;Bottom;Copper Fill28
723;100k;THT;55.0212;-71.832;90;Bottom;R56
724;;;1.81872;-39.2011;0;Bottom;TXT7
725;;;41.7068;-26.6702;0;Bottom;Copper Fill487
726;;;8.6614;-12.7764;0;Bottom;Copper Fill539
727;;;52.0446;-21.1076;0;Bottom;Copper Fill127
728;;300 mil [THT];60.7362;-89.5866;-90;Bottom;D9
729;;;93.0529;-25.9844;0;Bottom;Copper Fill184
730;;THT;12.4762;-31.827;0;Bottom;J28
731;;;61.214;-21.0695;0;Bottom;Copper Fill695
732;;;79.1511;-21.6671;0;Bottom;Via43
733;;;17.5133;-96.7996;0;Bottom;Copper Fill274
734;;;8.6614;-35.6364;0;Bottom;Copper Fill462
735;;;95.0214;-57.8614;0;Bottom;Copper Fill42
736;;;36.5633;-37.6938;0;Bottom;Copper Fill647
737;;;39.1033;-41.326;0;Bottom;Copper Fill690
738;;;39.1033;-20.9044;0;Bottom;Copper Fill692
739;;;38.4429;-91.364;0;Bottom;Copper Fill598
740;;300 mil [THT];77.8812;-88.3674;90;Bottom;D15
741;;;6.7437;-46.5838;0;Bottom;Copper Fill329
742;;;88.1888;-65.5195;0;Bottom;Copper Fill359
743;;;79.9592;-27.0512;0;Bottom;Copper Fill112
744;160;THT;65.8162;-69.927;-90;Bottom;R27
745;;TO220 [THT];39.4002;-61.037;90;Bottom;Q5
746;;;38.1583;-15.9521;0;Bottom;Via31
747;;;73.1774;-38.2399;0;Bottom;Copper Fill586
748;;;95.0214;-42.6214;0;Bottom;Copper Fill69
749;;;65.7733;-38.9384;0;Bottom;Copper Fill286
750;;;12.5476;-42.6595;0;Bottom;Copper Fill355
751;;;88.1888;-68.7199;0;Bottom;Copper Fill251
752;;3 mm [THT];46.1313;-89.668;0;Bottom;LED1
753;;;47.9933;-30.8104;0;Bottom;Copper Fill362
754;;;17.5133;-96.7996;0;Bottom;Copper Fill663
755;;;41.783;-68.4024;0;Bottom;Copper Fill396
756;;;13.7414;-20.3964;0;Bottom;Copper Fill133
757;10k;THT;32.7962;-23.572;-90;Bottom;R54
758;;;37.9984;-90.9195;0;Bottom;Copper Fill227
759;;;74.7014;-12.8526;0;Bottom;Copper Fill155
760;0.22µF;200 mil [THT, multilayer];62.0062;-23.572;-90;Bottom;C6
761;;;52.9657;-6.11074;0;Bottom;TXT6
762;;THT;4.8562;-14.047;0;Bottom;J57
763;;;21.3614;-31.1914;0;Bottom;Copper Fill479
764;;;54.483;-28.3974;0;Bottom;Copper Fill486
765;;;81.3308;-55.3214;0;Bottom;Copper Fill421
766;100k;THT;60.1012;-71.832;90;Bottom;R55
767;;;18.288;-87.7699;0;Bottom;Copper Fill669
768;;;13.4366;-65.6846;0;Bottom;Copper Fill374
769;;;56.5912;-78.2068;0;Bottom;Copper Fill377
770;2.4k;THT;22.6362;-82.627;180;Bottom;R18
771;;;88.9254;-17.7802;0;Bottom;Copper Fill516
772;;;59.1312;-78.2068;0;Bottom;Copper Fill20
773;;;8.6614;-7.6964;0;Bottom;Copper Fill174
774;;;42.9561;-41.352;0;Bottom;Via11
775;;;37.6174;-86.7666;0;Bottom;Copper Fill366
776;;THT;9.9362;-14.047;0;Bottom;J33
777;;;59.4233;-13.9956;0;Bottom;Copper Fill712
778;;;88.6333;-73.584;0;Bottom;Copper Fill253
779;;;16.2433;-44.1454;0;Bottom;Copper Fill231
780;;;76.454;-94.7295;0;Bottom;Copper Fill723
781;;;56.2911;-75.007;0;Bottom;Via32
782;;;67.1576;-56.0199;0;Bottom;Copper Fill653
783;;;69.1896;-40.564;0;Bottom;Copper Fill449
784;;;38.227;-59.7664;0;Bottom;Copper Fill412
785;;THT;9.9362;-21.667;0;Bottom;J44
786;;;18.4658;-67.7928;0;Bottom;Copper Fill25
787;;;67.7672;-8.3695;0;Bottom;Copper Fill358
788;;;16.6624;-44.5899;0;Bottom;Copper Fill233
789;;;95.0214;-45.1614;0;Bottom;Copper Fill439
790;;;16.256;-57.5312;0;Bottom;Copper Fill43
791;;;95.0214;-45.1614;0;Bottom;Copper Fill64
792;;;24.5411;-67.387;0;Bottom;Via34
793;0.1µF;200 mil [THT, multilayer];62.0062;-14.682;0;Bottom;C9
794;;;8.1788;-49.6699;0;Bottom;Copper Fill613
795;;;38.4429;-90.5004;0;Bottom;Copper Fill599
796;;;1.95052;-33.933;0;Bottom;TXT10
797;;;57.1246;-83.9599;0;Bottom;Copper Fill277
798;;300 mil [THT];63.9112;-88.3166;-90;Bottom;D16
799;;;87.1728;-19.609;0;Bottom;Copper Fill170
800;;;11.2014;-22.9364;0;Bottom;Copper Fill124
801;;;57.8387;-10.5791;0;Bottom;TXT3
802;;THT;15.0162;-29.287;0;Bottom;J12
803;;;6.1214;-17.8564;0;Bottom;Copper Fill139
804;;;73.3933;-64.3892;0;Bottom;Copper Fill685
805;;;18.1737;-65.3544;0;Bottom;Copper Fill305
806;;;73.1774;-38.2399;0;Bottom;Copper Fill211
807;;;93.0529;-25.0954;0;Bottom;Copper Fill561
808;;;31.5261;-9.60206;0;Bottom;Via14
809;;;41.4528;-87.7699;0;Bottom;Copper Fill643
810;;;15.9766;-83.6678;0;Bottom;Copper Fill10
811;;;82.2706;-46.152;0;Bottom;Copper Fill409
812;;;16.2433;-56.4644;0;Bottom;Copper Fill234
813;;;11.2014;-22.9364;0;Bottom;Copper Fill511
814;;;44.3992;-15.8498;0;Bottom;Copper Fill556
815;;;13.7414;-33.0964;0;Bottom;Copper Fill472
816;;;67.6529;-37.4144;0;Bottom;Copper Fill324
817;;;6.1214;-20.3964;0;Bottom;Copper Fill518
818;;;19.2278;-29.9595;0;Bottom;Copper Fill322
819;;;66.4464;-58.5599;0;Bottom;Copper Fill284
820;;;98.2011;-52.782;0;Bottom;Via22
821;;;91.1733;-73.584;0;Bottom;Copper Fill621
822;;THT;7.3962;-34.367;0;Bottom;J53
823;;;39.1033;-20.9044;0;Bottom;Copper Fill306
824;;THT;90.5812;-15.952;180;Bottom;JP3
825;;;68.3133;-88.9256;0;Bottom;Copper Fill724
826;;;16.2433;-56.4644;0;Bottom;Copper Fill607
827;0.22µF;200 mil [THT, multilayer];44.2262;-23.572;-90;Bottom;C4
828;;;80.8228;-22.3014;0;Bottom;Copper Fill506
829;;THT;12.4762;-14.047;0;Bottom;J21
830;;;64.5033;-73.3554;0;Bottom;Copper Fill192
831;0.01µF;200 mil [THT, multilayer];9.3012;-45.797;0;Bottom;C19
832;;THT;15.0162;-24.207;0;Bottom;J14
833;;;25.1762;-29.287;0;Bottom;Via48
834;;;7.4676;-45.8599;0;Bottom;Copper Fill721
835;;3 mm [THT];46.1313;-84.588;0;Bottom;LED2
836;;;93.7133;-33.6044;0;Bottom;Copper Fill558
837;;;61.341;-43.3326;0;Bottom;Copper Fill67
838;;;18.9484;-76.9114;0;Bottom;Copper Fill22
839;;;44.1833;-20.3456;0;Bottom;Copper Fill650
840;;;63.3222;-47.0664;0;Bottom;Copper Fill435
841;;;85.2424;-13.9448;0;Bottom;Copper Fill156
842;0.1µF;200 mil [THT, multilayer];64.5462;-8.33196;180;Bottom;C5
843;;;64.5033;-73.3554;0;Bottom;Copper Fill568
844;;;38.5111;-90.8821;0;Bottom;Via23
845;;;22.5933;-83.744;0;Bottom;Copper Fill320
846;;;15.6337;-78.664;0;Bottom;Copper Fill256
847;;;26.5684;-9.0299;0;Bottom;Copper Fill200
848;;;6.1214;-25.4764;0;Bottom;Copper Fill501
849;;;13.7414;-30.5564;0;Bottom;Copper Fill483
850;;;96.8629;-25.324;0;Bottom;Copper Fill220
851;;;88.6761;-73.102;0;Bottom;Via39
852;;3 mm [THT];63.9672;-53.4168;90;Bottom;LED6
853;100k;THT;22.6362;-87.707;180;Bottom;R20
854;470;THT;41.6862;-41.987;90;Bottom;R8
855;;;65.7733;-54.1784;0;Bottom;Copper Fill281
856;;;42.9133;-41.834;0;Bottom;Copper Fill577
857;;;6.1214;-28.0164;0;Bottom;Copper Fill491
858;;;62.6872;-21.0695;0;Bottom;Copper Fill313
859;;;3.81;-7.6964;0;Bottom;Copper Fill172
860;;;81.2038;-27.3814;0;Bottom;Copper Fill496
861;;;91.3384;-93.4595;0;Bottom;Copper Fill300
862;2.4k;THT;57.5612;-58.497;-90;Bottom;R28
863;;;6.1214;-10.2364;0;Bottom;Copper Fill163
864;;;8.6614;-17.8564;0;Bottom;Copper Fill525
865;;THT;4.8562;-29.287;0;Bottom;J67
866;;;36.576;-24.3842;0;Bottom;Copper Fill507
867;;;11.2014;-35.6364;0;Bottom;Copper Fill463
868;;;41.4528;-95.9995;0;Bottom;Copper Fill657
869;;;89.7128;-59.1695;0;Bottom;Copper Fill288
870;;;6.1214;-30.5564;0;Bottom;Copper Fill480
871;;;93.2688;-33.1599;0;Bottom;Copper Fill182
872;;;8.6614;-40.5132;0;Bottom;Copper Fill73
873;;;88.6333;-72.7204;0;Bottom;Copper Fill632
874;;;38.5318;-15.9895;0;Bottom;Copper Fill334
875;;THT;9.9362;-31.827;0;Bottom;J40
876;;;86.0933;-94.5898;0;Bottom;Copper Fill344
877;;;92.9386;-6.0708;0;Bottom;Copper Fill178
878;;;21.3614;-23.5714;0;Bottom;Copper Fill508
879;;;27.0129;-9.4744;0;Bottom;Copper Fill575
880;;;78.2574;-15.3799;0;Bottom;Copper Fill249
881;;;96.4184;-24.8795;0;Bottom;Copper Fill222
882;;;17.653;-15.9514;0;Bottom;Copper Fill148
883;;;57.1246;-89.6495;0;Bottom;Copper Fill660
884;;;49.9872;-60.122;0;Bottom;Copper Fill446
885;;;92.5068;-37.7954;0;Bottom;Copper Fill457
886;1k;THT;86.1362;-39.447;180;Bottom;R29
887;;;14.732;-68.6564;0;Bottom;Copper Fill399
888;;;72.009;-20.4599;0;Bottom;Copper Fill698
889;10µF;200 mil [THT, tantalum];81.6912;-88.342;-90;Bottom;C16
890;;;86.8172;-48.1332;0;Bottom;Copper Fill413
891;1k;THT;84.8662;-5.79196;0;Bottom;R60
892;;;41.529;-9.6395;0;Bottom;Copper Fill732
893;;;21.3614;-41.3514;0;Bottom;Copper Fill447
894;;;6.1214;-15.3164;0;Bottom;Copper Fill532
895;;;16.7132;-95.9995;0;Bottom;Copper Fill275
896;;;84.1629;-41.2244;0;Bottom;Copper Fill212
897;;;88.1888;-73.1395;0;Bottom;Copper Fill255
898;;THT;9.9362;-36.907;0;Bottom;J35
899;;;83.5533;-25.3748;0;Bottom;Copper Fill681
900;;;13.7414;-28.0164;0;Bottom;Copper Fill110
901;;;71.8312;-59.3092;0;Bottom;Copper Fill39
902;;;84.1629;-40.3354;0;Bottom;Copper Fill588
903;;;77.1652;-9.2204;0;Bottom;Copper Fill169
904;0.1µF;200 mil [THT, multilayer];39.7812;-9.60196;180;Bottom;C3
905;;;89.0524;-68.7199;0;Bottom;Copper Fill252
906;;;1.9635;-6.21536;0;Bottom;TXT7
907;;;24.4729;-67.8944;0;Bottom;Copper Fill238
908;;;92.5068;-42.9516;0;Bottom;Copper Fill68
909;;;8.6233;-50.1144;0;Bottom;Copper Fill611
910;;;36.9316;-58.5599;0;Bottom;Copper Fill639
911;;;3.5433;-84.8616;0;Bottom;Copper Fill666
912;;;48.6712;-36.907;0;Bottom;Via49
913;;;95.0214;-62.9414;0;Bottom;Copper Fill406
914;;THT;9.9362;-19.127;0;Bottom;J38
915;;;22.6361;-83.2621;0;Bottom;Via27
916;;;24.2316;-18.8216;0;Bottom;Copper Fill134
917;;;24.257;-9.2966;0;Bottom;Copper Fill544
918;;;15.6511;-78.182;0;Bottom;Via46
919;160;THT;52.4812;-41.352;-90;Bottom;R31
920;;;2.6416;-83.9599;0;Bottom;Copper Fill668
921;;;73.1774;-44.5899;0;Bottom;Copper Fill602
922;;;42.9133;-41.834;0;Bottom;Copper Fill202
923;;;8.6614;-33.0964;0;Bottom;Copper Fill470
924;0.1µF;200 mil [THT, multilayer];31.5262;-9.60196;180;Bottom;C1
925;;;41.529;-9.6395;0;Bottom;Copper Fill349
926;;;95.0214;-68.0214;0;Bottom;Copper Fill400
927;;;93.7133;-32.7154;0;Bottom;Copper Fill181
928;100k;THT;37.2412;-95.962;0;Bottom;R11
929;;;98.1329;-53.264;0;Bottom;Copper Fill727
930;;;11.2014;-38.1764;0;Bottom;Copper Fill455
931;;;4.2037;-67.8944;0;Bottom;Copper Fill196
932;;;11.2014;-17.8564;0;Bottom;Copper Fill526
933;;;95.0214;-57.8614;0;Bottom;Copper Fill415
934;;;1.82239;-24.0659;0;Bottom;TXT11
935;;;8.6614;-28.0164;0;Bottom;Copper Fill492
936;;;31.6484;-64.1352;0;Bottom;Copper Fill404
937;;;67.7211;-36.907;0;Bottom;Via45
938;;;8.6614;-20.3964;0;Bottom;Copper Fill519
939;;;74.7268;-77.8004;0;Bottom;Copper Fill380
940;;;95.0214;-73.1014;0;Bottom;Copper Fill391
941;;;13.7414;-17.8564;0;Bottom;Copper Fill142
942;;;11.2014;-7.6964;0;Bottom;Copper Fill175
943;;;8.6614;-35.6364;0;Bottom;Copper Fill92
944;;;8.6614;-30.5564;0;Bottom;Copper Fill481
945;;;48.1584;-36.9699;0;Bottom;Copper Fill564
946;;THT;7.3962;-31.827;0;Bottom;J52
947;;;31.5261;-41.352;0;Bottom;Via4
948;;;54.0512;-47.7776;0;Bottom;Copper Fill59
949;;;73.4822;-20.4599;0;Bottom;Copper Fill317
950;;;67.564;-89.6495;0;Bottom;Copper Fill353
951;;;6.1214;-38.1764;0;Bottom;Copper Fill81
952;;;92.5068;-40.5894;0;Bottom;Copper Fill450
953;;;16.2433;-45.0344;0;Bottom;Copper Fill603
954;;;92.2274;-55.3468;0;Bottom;Copper Fill47
955;;;21.3614;-10.8714;0;Bottom;Copper Fill543
956;;;17.3736;-33.198;0;Bottom;Copper Fill76
957;;;86.0552;-9.8046;0;Bottom;Copper Fill550
958;;;49.0474;-36.9699;0;Bottom;Copper Fill188
959;;;95.0214;-70.5614;0;Bottom;Copper Fill27
960;;;96.8629;-19.3804;0;Bottom;Copper Fill591
961;;;33.8074;-37.5795;0;Bottom;Copper Fill711
962;;;16.6624;-56.0199;0;Bottom;Copper Fill610
963;;;70.6601;-64.3677;0;Bottom;TXT1
964;;;11.2014;-12.7764;0;Bottom;Copper Fill540
965;;;3.81;-12.5732;0;Bottom;Copper Fill542
966;;;42.1132;-80.8992;0;Bottom;Copper Fill12
967;;THT;7.3962;-29.287;0;Bottom;J55
968;;;38.8874;-90.9195;0;Bottom;Copper Fill228
969;;THT;4.8562;-36.907;0;Bottom;J59
970;;THT;9.9362;-16.587;0;Bottom;J34
971;;;76.962;-57.2899;0;Bottom;Copper Fill670
972;;;4.2037;-67.0054;0;Bottom;Copper Fill572
973;;;88.6333;-72.7204;0;Bottom;Copper Fill254
974;;TO220 [THT];49.9412;-55.068;180;Bottom;Q8
975;470;THT;58.8312;-22.302;-90;Bottom;R6
976;;;55.6133;-19.3296;0;Bottom;Copper Fill297
977;100k;THT;85.5012;-51.512;180;Bottom;R37
978;;;8.6614;-25.4764;0;Bottom;Copper Fill114
979;;;82.3722;-85.8395;0;Bottom;Copper Fill364
980;;;79.5528;-41.3768;0;Bottom;Copper Fill445
981;;;24.9174;-67.4499;0;Bottom;Copper Fill240
982;;;50.0841;-8.02741;0;Bottom;TXT5
983;;;42.8498;-15.926;0;Bottom;Copper Fill528

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@ -1,126 +0,0 @@
#include <avr/interrupt.h>
#include <avr/io.h>
//#define clockspeed 16000000
/*
unsigned long schedule1Duration; //How long (uS) after calling the start callback to we call the end callback
unsigned long schedule2Duration;
void (*schedule1StartCallback)(); //Start Callback function for schedule1
void (*schedule2StartCallback)();
void (*schedule1EndCallback)(); //End Callback function for schedule1
void (*schedule2EndCallback)();
*/
void initialiseSchedulers();
void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)());
void setSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)());
enum ScheduleStatus {OFF, PENDING, RUNNING};
struct Schedule {
unsigned long duration;
ScheduleStatus Status;
void (*StartCallback)(); //Start Callback function for schedule1
void (*EndCallback)(); //Start Callback function for schedule1
};
Schedule fuelSchedule1;
Schedule fuelSchedule2;
Schedule ignitionSchedule1;
Schedule ignitionSchedule2;
void setup()
{
Serial.begin(9600);
initialiseSchedulers();
}
void loop()
{
unsigned long curTime = micros();
unsigned long uSInFuture = 50000; //50mS in the future
unsigned long expectedTime = curTime + uSInFuture;
setFuelSchedule1(callback, uSInFuture, uSInFuture, callback);
Serial.print("Expected time: ");
Serial.println(expectedTime);
delay(1000);
}
void callback()
{
unsigned long arrivedTime = micros();
Serial.print("Arrived time: ");
Serial.println(arrivedTime);
}
void initialiseSchedulers()
{
// Much help in this from http://arduinomega.blogspot.com.au/2011/05/timer2-and-overflow-interrupt-lets-get.html
//Fuel Schedules, which uses timer 3
TCCR3B = 0x00; //Disbale Timer3 while we set it up
TCNT3 = 0; //Reset Timer Count
TIFR3 = 0x00; //Timer3 INT Flag Reg: Clear Timer Overflow Flag
TCCR3A = 0x00; //Timer3 Control Reg A: Wave Gen Mode normal
TCCR3B = (1 << CS12); //Timer3 Control Reg B: Timer Prescaler set to 256. Refer to http://www.instructables.com/files/orig/F3T/TIKL/H3WSA4V7/F3TTIKLH3WSA4V7.jpg
fuelSchedule1.Status = OFF;
fuelSchedule2.Status = OFF;
//Ignition Schedules, which uses timer 3
TCCR4B = 0x00; //Disbale Timer3 while we set it up
TCNT4 = 0; //Reset Timer Count
TIFR4 = 0x00; //Timer3 INT Flag Reg: Clear Timer Overflow Flag
TCCR4A = 0x00; //Timer3 Control Reg A: Wave Gen Mode normal
TCCR4B = (1 << CS12); //Timer3 Control Reg B: Timer Prescaler set to 256. Refer to http://www.instructables.com/files/orig/F3T/TIKL/H3WSA4V7/F3TTIKLH3WSA4V7.jpg
ignitionSchedule1.Status = OFF;
ignitionSchedule2.Status = OFF;
}
/*
These 4 function turn a schedule on, provides the time to start and the duration and gives it callback functions.
All 4 functions operate the same, just on different schedules
Args:
startCallback: The function to be called once the timeout is reached
timeout: The number of uS in the future that the callback should be triggered
duration: The number of uS after startCallback is called before endCallback is called
endCallback: This function is called once the duration time has been reached
*/
void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
{
if(fuelSchedule1.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
//We need to calculate the value to reset the timer to (preload) in order to achieve the desired overflow time
//As the timer is ticking every 16uS (Time per Tick = (Prescale)*(1/Frequency))
unsigned int absoluteTimeout = TCNT3 + (timeout / 16); //Each tick occurs every 16uS with the 256 prescaler, so divide the timeout by 16 to get ther required number of ticks. Add this to the current tick count to get the target time. This will automatically overflow as required
OCR3A = absoluteTimeout;
fuelSchedule1.duration = duration;
fuelSchedule1.StartCallback = startCallback; //Name the start callback function
fuelSchedule1.EndCallback = endCallback; //Name the start callback function
fuelSchedule1.Status = PENDING; //Turn this schedule on
TIMSK3 |= (1 << OCIE3A); //Turn on the compare unit (ie turn on the interrupt)
}
//Timer3A (schedule 1) Overflow Compare Vector
//This needs to call the callback function if one has been provided and rest the timer
ISR(TIMER3_COMPA_vect)
{
if (fuelSchedule1.Status == PENDING) //Check to see if this schedule is turn on
{
fuelSchedule1.StartCallback();
fuelSchedule1.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
unsigned int absoluteTimeout = TCNT3 + (fuelSchedule1.duration / 16);
OCR3A = absoluteTimeout;
}
else if (fuelSchedule1.Status == RUNNING)
{
fuelSchedule1.EndCallback();
fuelSchedule1.Status = OFF; //Turn off the schedule
TIMSK3 &= ~(1 << OCIE3A); //Turn off this output compare unit (This simply writes 0 to the OCIE3A bit of TIMSK3)
}
TIFR3 = 0x00; //Timer3 INT Flag Reg: Clear Timer Overflow Flag. I'm not 100% sure this is necessary, but better to be safe
}

View File

@ -1,157 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<msq xmlns="http://www.msefi.com/:msq">
<bibliography author="TunerStudio MS 2.0.6 - EFI Analytics, Inc." tuneComment=" &lt;p style=&quot;margin-top: 0&quot;&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; " writeDate="Wed Sep 18 16:45:09 EST 2013"/>
<versionInfo fileFormat="4.0" firmwareInfo="Bowling &amp; Grippo MS1 Base Code 20" nPages="2" signature="20"/>
<page number="0" size="125">
<constant digits="0" name="taeColdM" units="%">0.0</constant>
<constant digits="0" name="egoRPM" units="RPM">0.0</constant>
<constant cols="1" digits="0" name="wueBins" rows="10" units="%">
2.0
2.0
2.0
2.0
2.0
2.0
2.0
2.0
2.0
2.0
</constant>
<constant digits="1" name="injOpen" units="ms">0.0</constant>
<constant digits="1" name="taeColdA" units="ms">0.0</constant>
<constant name="egoType">"Narrow band"</constant>
<constant name="mapType">"115 kPa"</constant>
<constant name="alternate">"Alternating"</constant>
<constant digits="0" name="egoDelta" units="%">0.0</constant>
<constant digits="1" name="crankCold" units="ms">0.2</constant>
<constant digits="1" name="primePulse" units="ms">0.0</constant>
<constant digits="0" name="divider">2.0</constant>
<constant name="twoStroke">"Four-stroke"</constant>
<constant digits="0" name="egoTemp" units="°C">-39.96</constant>
<constant cols="8" digits="0" name="veTable" rows="8" units="%">
15.0 20.0 25.0 25.0 27.0 30.0 34.0 39.0
20.0 21.0 28.0 33.0 55.0 37.0 25.0 44.0
22.0 23.0 35.0 49.0 55.0 44.0 40.0 47.0
28.0 33.0 47.0 60.0 61.0 60.0 85.0 55.0
35.0 45.0 57.0 60.0 68.0 75.0 85.0 68.0
45.0 55.0 68.0 63.0 75.0 88.0 92.0 79.0
53.0 68.0 77.0 88.0 90.0 94.0 96.0 90.0
65.0 75.0 85.0 96.0 98.0 100.0 101.0 99.0
</constant>
<constant digits="0" name="aseCount">13.0</constant>
<constant digits="3" name="tpsThresh" units="v/s">0.0</constant>
<constant digits="1" name="reqFuel" units="ms">13.4</constant>
<constant digits="1" name="taeBins1" units="ms">0.2</constant>
<constant digits="1" name="taeBins2" units="ms">0.2</constant>
<constant digits="1" name="taeBins3" units="ms">0.2</constant>
<constant name="nCylinders">"4"</constant>
<constant digits="0" name="tdePct" units="%">0.0</constant>
<constant name="algorithm">"Speed Density"</constant>
<constant digits="1" name="taeBins4" units="ms">0.0</constant>
<constant digits="1" name="taeTime" units="ms">0.0</constant>
<constant cols="1" digits="1" name="taeBins" rows="4" units="ms">
0.2
0.2
0.2
0.0
</constant>
<constant digits="0" name="injOCfuel" units="ms">0.0</constant>
<constant name="cltType">"GM"</constant>
<constant digits="3" name="egoSwitch" units="v">0.0</constant>
<constant cols="1" digits="0" name="mapBins" rows="8" units="kPa">
20.0
30.0
40.0
50.0
60.0
70.0
88.0
100.0
</constant>
<constant digits="0" name="asePct" units="%">12.0</constant>
<constant name="baroCorr">"Off"</constant>
<constant cols="1" digits="0" name="rpmBins" rows="8" units="RPM">
700.0
1200.0
2000.0
3000.0
4000.0
4900.0
5500.0
6500.0
</constant>
<constant digits="0" name="injPwmP" units="%">0.0</constant>
<constant digits="0" name="egoCount">0.0</constant>
<constant digits="1" name="crankHot" units="ms">3.5</constant>
<constant digits="1" name="fastIdleT" units="°C">59.94</constant>
<constant digits="2" name="battFac" units="ms/v">0.0</constant>
<constant name="engineType">"Even fire"</constant>
<constant name="nInjectors">"4"</constant>
<constant digits="0" name="egoLimit" units="%">0.0</constant>
<constant digits="0" name="rpmk">3000.0</constant>
<constant name="injType">"Port"</constant>
<constant digits="1" name="injPwmT" units="ms">0.0</constant>
<constant name="matType">"GM"</constant>
</page>
<page number="1" size="125">
<constant cols="8" digits="0" name="advTable1" rows="8" units="deg">
10.0 20.0 25.0 27.0 32.0 35.0 36.0 40.0
10.0 21.0 23.0 27.0 32.0 35.0 38.0 40.0
12.0 23.0 23.0 28.0 32.0 35.0 38.0 40.0
12.0 15.0 23.0 28.0 34.0 35.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
</constant>
<constant cols="1" digits="0" name="rpmBins2" rows="8" units="RPM">
500.0
1200.0
2000.0
3000.0
3500.0
4200.0
5000.0
6000.0
</constant>
<constant digits="1" name="IdleAdvCLT" units="C">-20.535</constant>
<constant name="TrigCrank">"Time Based"</constant>
<constant digits="1" name="dwellrun" units="ms">4.5</constant>
<constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant>
<constant digits="0" name="onetwo" units="teeth">1.0</constant>
<constant name="oddfire">"Yes"</constant>
<constant digits="0" name="IdleAdvTPS" units="ADC">27.0</constant>
<constant digits="0" name="IgHold">10.0</constant>
<constant cols="1" digits="0" name="mapBins2" rows="8" units="kPa">
15.0
20.0
30.0
45.0
65.0
75.0
86.0
100.0
</constant>
<constant digits="1" name="dwellcrank" units="ms">4.0</constant>
<constant digits="0" name="Trim" units="Deg">13.024</constant>
<constant digits="0" name="CrankAng" units="Deg">4.0832</constant>
<constant name="dwellcont">"Dwell control"</constant>
<constant digits="0" name="numteeth" units="teeth">12.0</constant>
<constant digits="0" name="TrigAng" units="Deg">176.0</constant>
<constant digits="0" name="StgCycles" units="cycles">40.0</constant>
<constant digits="0" name="IdleAdv" units="Deg">-1.9008</constant>
<constant digits="0" name="IdleDelayTime" units="sec">38.0</constant>
<constant name="IgInv">"No"</constant>
<constant digits="0" name="FixAng" units="Deg">-9.9968</constant>
<constant name="Trig_plus">"+22.5"</constant>
</page>
<settings Comment="These setting are only used if this msq is opened without a project.">
<setting name="NARROW_BAND_EGO" value="NARROW_BAND_EGO"/>
<setting name="CELSIUS" value="CELSIUS"/>
<setting name="SPEED_DENSITY" value="SPEED_DENSITY"/>
<setting name="MPX4250" value="MPX4250"/>
</settings>
<userComments Comment="These are user comments that can be related to a particular setting or dialog.">
<userComment name="IgHold" value=""/>
</userComments>
</msq>

View File

@ -1,229 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<msq xmlns="http://www.msefi.com/:msq">
<bibliography author="TunerStudio MS 2.6.14 - EFI Analytics, Inc." tuneComment=" &#10;&#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; " writeDate="Wed Jan 28 17:03:18 EST 2015"/>
<versionInfo fileFormat="4.0" firmwareInfo="" nPages="2" signature="20"/>
<page>
<pcVariable name="tsCanId">"0"</pcVariable>
<pcVariable cols="1" digits="1" name="wueAfrTargetOffset" rows="10" units=":1">
-1.5
-1.1
-0.8
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
</pcVariable>
<pcVariable cols="1" digits="0" name="wueAnalRecommend" rows="10" units="%">
199.0
158.0
145.0
131.0
127.0
119.0
119.0
119.0
109.0
101.0
</pcVariable>
<pcVariable cols="1" digits="0" name="tempTable" rows="10" units="%">
-40.0
-29.0
-18.0
-7.0
4.0
16.0
27.0
38.0
54.0
71.0
</pcVariable>
</page>
<page number="0" size="128">
<constant cols="8" digits="0" name="veTable" rows="8" units="%">
15.0 20.0 25.0 25.0 27.0 30.0 34.0 39.0
20.0 21.0 28.0 33.0 50.0 37.0 25.0 44.0
22.0 23.0 35.0 49.0 55.0 40.0 40.0 47.0
28.0 33.0 47.0 60.0 60.0 60.0 85.0 55.0
35.0 45.0 57.0 60.0 68.0 75.0 85.0 68.0
45.0 55.0 68.0 63.0 75.0 88.0 92.0 79.0
53.0 68.0 77.0 88.0 90.0 94.0 96.0 90.0
65.0 75.0 85.0 96.0 98.0 100.0 101.0 99.0
</constant>
<constant cols="1" digits="0" name="rpmBins" rows="8" units="RPM">
700.0
1200.0
2000.0
3000.0
4000.0
4900.0
5500.0
6500.0
</constant>
<constant cols="1" digits="0" name="tpsBins" rows="8" units="TPS">
20.0
30.0
40.0
50.0
60.0
70.0
88.0
100.0
</constant>
<constant digits="1" name="crankCold" units="ms">0.2</constant>
<constant digits="1" name="crankHot" units="ms">3.5</constant>
<constant digits="0" name="asePct" units="%">15.0</constant>
<constant digits="0" name="aseCount" units="s">13.0</constant>
<constant cols="1" digits="0" name="wueBins" rows="10" units="%">
199.0
158.0
145.0
135.0
126.0
120.0
119.0
118.0
114.0
101.0
</constant>
<constant digits="1" name="unused1" units="ms">0.2</constant>
<constant digits="1" name="unused2" units="ms">0.2</constant>
<constant digits="1" name="unused3" units="ms">0.2</constant>
<constant digits="1" name="unused4" units="ms">0.0</constant>
<constant digits="1" name="taeColdA" units="ms">0.0</constant>
<constant digits="0" name="tpsThresh" units="%/s">80.0</constant>
<constant digits="1" name="taeTime" units="ms">2.0</constant>
<constant digits="0" name="tdePct" units="%">80.0</constant>
<constant digits="0" name="egoTemp" units="°C">-39.96</constant>
<constant digits="0" name="egoCount">0.0</constant>
<constant digits="0" name="egoDelta" units="%">0.0</constant>
<constant digits="0" name="egoLimit" units="%">0.0</constant>
<constant digits="1" name="reqFuel" units="ms">14.9</constant>
<constant digits="0" name="divider">1.0</constant>
<constant name="alternate">"Simultaneous"</constant>
<constant digits="1" name="injOpen" units="ms">1.0</constant>
<constant digits="0" name="injOCfuel" units="ms">0.0</constant>
<constant digits="0" name="injPwmP" units="%">0.0</constant>
<constant digits="1" name="injPwmT" units="ms">0.0</constant>
<constant digits="2" name="battFac" units="ms/v">0.0</constant>
<constant digits="0" name="rpmk">12000.0</constant>
<constant name="mapType">"115 kPa"</constant>
<constant name="twoStroke">"Four-stroke"</constant>
<constant name="injType">"Port"</constant>
<constant name="nCylinders">"1"</constant>
<constant name="cltType">"GM"</constant>
<constant name="matType">"GM"</constant>
<constant name="nInjectors">"1"</constant>
<constant name="engineType">"Even fire"</constant>
<constant name="egoType">"Narrow band"</constant>
<constant name="algorithm">"Alpha-N"</constant>
<constant name="baroCorr">"Off"</constant>
<constant digits="1" name="primePulse" units="ms">1.5</constant>
<constant digits="0" name="egoRPM" units="RPM">0.0</constant>
<constant digits="1" name="fastIdleT" units="°C">59.94</constant>
<constant digits="3" name="egoSwitch" units="v">0.0</constant>
<constant digits="0" name="taeColdM" units="%">0.0</constant>
<constant digits="0" name="tpsMin" units="ADC">9.0</constant>
<constant digits="0" name="tpsMax" units="ADC">72.0</constant>
</page>
<page number="1" size="128">
<constant cols="8" digits="0" name="advTable1" rows="8" units="deg">
10.0 20.0 25.0 27.0 32.0 38.0 38.0 40.0
10.0 21.0 23.0 27.0 32.0 35.0 38.0 40.0
12.0 23.0 23.0 28.0 32.0 35.0 38.0 40.0
12.0 15.0 23.0 28.0 34.0 35.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
10.0 15.0 23.0 28.0 35.0 36.0 38.0 40.0
</constant>
<constant cols="1" digits="0" name="rpmBins2" rows="8" units="RPM">
500.0
1200.0
2000.0
3000.0
3500.0
4200.0
5000.0
6000.0
</constant>
<constant cols="1" digits="0" name="tpsBins2" rows="8" units="TPS">
10.0
20.0
35.0
50.0
65.0
75.0
86.0
100.0
</constant>
<constant digits="0" name="TrigAng" units="Deg">176.0</constant>
<constant digits="0" name="FixAng" units="Deg">0.0</constant>
<constant digits="0" name="Trim" units="Deg">13.024</constant>
<constant digits="0" name="CrankAng" units="Deg">11.6</constant>
<constant digits="0" name="IgHold">10.0</constant>
<constant name="Trig_plus">"+45"</constant>
<constant name="TrigCrank">"Time Based"</constant>
<constant name="IgInv">"No"</constant>
<constant name="oddfire">"Yes"</constant>
<constant digits="0" name="IdleAdv" units="Deg">-1.9008</constant>
<constant digits="0" name="IdleAdvTPS" units="ADC">65.0</constant>
<constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant>
<constant digits="1" name="IdleAdvCLT" units="C">-20.535</constant>
<constant digits="0" name="IdleDelayTime" units="sec">38.0</constant>
<constant digits="0" name="StgCycles" units="cycles">1.0</constant>
<constant name="dwellcont">"Dwell control"</constant>
<constant digits="1" name="dwellcrank" units="ms">4.5</constant>
<constant digits="1" name="dwellrun" units="ms">4.0</constant>
<constant digits="0" name="numteeth" units="teeth">36.0</constant>
<constant digits="0" name="onetwo" units="teeth">1.0</constant>
<constant digits="0" name="crankRPM" units="rpm">300.0</constant>
<constant digits="0" name="tpsflood" units="%">70.0</constant>
<constant digits="0" name="SoftRevLim" units="rpm">6000.0</constant>
<constant digits="0" name="SoftLimRetard" units="deg">14.9952</constant>
<constant digits="1" name="SoftLimMax" units="s">2.0</constant>
<constant digits="0" name="HardRevLim" units="rpm">6500.0</constant>
<constant cols="1" digits="0" name="taeBins" rows="4" units="%/s">
80.0
200.0
520.0
890.0
</constant>
<constant cols="1" digits="0" name="taeRates" rows="4" units="%">
18.0
24.0
33.0
42.0
</constant>
<constant cols="1" digits="0" name="wueRates" rows="10" units="C">
0.0
11.0
22.0
33.0
44.0
56.0
67.0
78.0
94.0
111.0
</constant>
<constant digits="0" name="unused121" units="none">0.0</constant>
<constant digits="0" name="unused122" units="none">0.0</constant>
<constant digits="0" name="unused123" units="none">0.0</constant>
<constant digits="0" name="unused124" units="none">0.0</constant>
<constant digits="0" name="unused125" units="none">0.0</constant>
<constant digits="0" name="unused126" units="none">0.0</constant>
<constant digits="0" name="unused127" units="none">0.0</constant>
</page>
<settings Comment="These setting are only used if this msq is opened without a project.">
<setting name="NARROW_BAND_EGO" value="NARROW_BAND_EGO"/>
<setting name="CELSIUS" value="CELSIUS"/>
<setting name="ALPHA_N" value="ALPHA_N"/>
<setting name="MPX4250" value="MPX4250"/>
</settings>
<userComments Comment="These are user comments that can be related to a particular setting or dialog.">
<userComment name="SoftRevLim" value=""/>
</userComments>
</msq>

View File

@ -1,278 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<msq xmlns="http://www.msefi.com/:msq">
<bibliography author="TunerStudio MS 2.6.14 - EFI Analytics, Inc." tuneComment=" &#10;&#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; &#10; " writeDate="Tue Feb 17 16:32:50 EST 2015"/>
<versionInfo fileFormat="4.0" firmwareInfo="Bowling &amp; Grippo MS1 Base Code 20" nPages="3" signature="20"/>
<page>
<pcVariable name="tsCanId">"0"</pcVariable>
<pcVariable cols="1" digits="1" name="wueAfrTargetOffset" rows="10" units=":1">
-1.5
-1.1
-0.8
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
</pcVariable>
<pcVariable cols="1" digits="0" name="wueAnalRecommend" rows="10" units="%">
199.0
158.0
145.0
135.0
126.0
120.0
119.0
118.0
114.0
101.0
</pcVariable>
<pcVariable cols="1" digits="0" name="tempTable" rows="10" units="%">
-40.0
-29.0
-18.0
-7.0
4.0
16.0
27.0
38.0
54.0
71.0
</pcVariable>
</page>
<page number="0" size="128">
<constant cols="8" digits="0" name="veTable" rows="8" units="%">
27.0 27.0 27.0 27.0 27.0 27.0 27.0 27.0
29.0 32.0 35.0 36.0 36.0 36.0 36.0 36.0
35.0 42.0 45.0 46.0 46.0 46.0 46.0 46.0
46.0 53.0 55.0 56.0 56.0 56.0 55.0 55.0
59.0 64.0 65.0 65.0 65.0 65.0 65.0 65.0
71.0 74.0 75.0 75.0 75.0 75.0 75.0 74.0
90.0 91.0 92.0 92.0 92.0 92.0 92.0 91.0
102.0 103.0 103.0 104.0 103.0 103.0 103.0 103.0
</constant>
<constant cols="1" digits="0" name="rpmBins" rows="8" units="RPM">
700.0
1200.0
2000.0
3000.0
4000.0
4900.0
5500.0
6500.0
</constant>
<constant cols="1" digits="0" name="tpsBins" rows="8" units="TPS">
20.0
30.0
40.0
50.0
60.0
70.0
88.0
100.0
</constant>
<constant digits="1" name="crankCold" units="ms">6.5</constant>
<constant digits="1" name="crankHot" units="ms">3.5</constant>
<constant digits="0" name="asePct" units="%">15.0</constant>
<constant digits="0" name="aseCount" units="s">13.0</constant>
<constant cols="1" digits="0" name="wueBins" rows="10" units="%">
162.0
152.0
143.0
135.0
126.0
120.0
119.0
118.0
114.0
101.0
</constant>
<constant digits="0" name="crankingPct" units="%">25.0</constant>
<constant digits="1" name="unused96" units="ms">0.0</constant>
<constant digits="1" name="unused97" units="ms">0.0</constant>
<constant digits="1" name="taeColdA" units="ms">0.0</constant>
<constant digits="0" name="tpsThresh" units="%/s">90.0</constant>
<constant digits="0" name="taeTime" units="ms">200.0</constant>
<constant digits="0" name="tdePct" units="%">80.0</constant>
<constant digits="1" name="unused102" units="ms">0.0</constant>
<constant digits="1" name="unused103" units="ms">0.0</constant>
<constant digits="1" name="unused104" units="ms">0.0</constant>
<constant digits="1" name="unused105" units="ms">0.0</constant>
<constant digits="1" name="reqFuel" units="ms">6.2</constant>
<constant digits="0" name="divider">1.0</constant>
<constant name="alternate">"Alternating"</constant>
<constant digits="1" name="injOpen" units="ms">1.0</constant>
<constant digits="0" name="injOCfuel" units="ms">0.0</constant>
<constant digits="0" name="injPwmP" units="%">0.0</constant>
<constant digits="1" name="injPwmT" units="ms">0.0</constant>
<constant digits="2" name="battFac" units="ms/v">0.0</constant>
<constant digits="0" name="rpmk">3000.0</constant>
<constant name="mapType">"250 kPa"</constant>
<constant name="twoStroke">"Four-stroke"</constant>
<constant name="injType">"Port"</constant>
<constant name="nCylinders">"4"</constant>
<constant name="cltType">"GM"</constant>
<constant name="matType">"GM"</constant>
<constant name="nInjectors">"4"</constant>
<constant name="engineType">"Even fire"</constant>
<constant name="egoType1">"Narrow band"</constant>
<constant name="algorithm">"Speed Density"</constant>
<constant name="baroCorr">"Off"</constant>
<constant digits="1" name="primePulse" units="ms">1.5</constant>
<constant digits="0" name="unused120" units="RPM">0.0</constant>
<constant digits="1" name="fastIdleT" units="°C">59.94</constant>
<constant digits="3" name="egoSwitch" units="v">0.0</constant>
<constant digits="0" name="taeColdM" units="%">0.0</constant>
<constant digits="0" name="tpsMin" units="ADC">0.0</constant>
<constant digits="0" name="tpsMax" units="ADC">252.0</constant>
</page>
<page number="1" size="128">
<constant cols="8" digits="0" name="advTable1" rows="8" units="deg">
10.0 20.0 25.0 27.0 32.0 38.0 38.0 40.0
10.0 21.0 23.0 27.0 32.0 35.0 38.0 40.0
12.0 23.0 23.0 28.0 32.0 35.0 38.0 40.0
12.0 15.0 23.0 28.0 27.0 28.0 31.0 33.0
10.0 15.0 19.0 24.0 24.0 25.0 27.0 29.0
10.0 15.0 13.0 18.0 18.0 19.0 21.0 23.0
10.0 15.0 12.0 17.0 17.0 18.0 20.0 22.0
10.0 15.0 15.0 17.0 17.0 18.0 20.0 23.0
</constant>
<constant cols="1" digits="0" name="rpmBins2" rows="8" units="RPM">
500.0
1200.0
2000.0
3000.0
3500.0
4200.0
5000.0
6000.0
</constant>
<constant cols="1" digits="0" name="tpsBins2" rows="8" units="TPS">
10.0
20.0
35.0
50.0
65.0
75.0
86.0
100.0
</constant>
<constant digits="0" name="TrigAng" units="Deg">244.0</constant>
<constant digits="0" name="FixAng" units="Deg">0.0</constant>
<constant digits="0" name="Trim" units="Deg">13.024</constant>
<constant digits="0" name="CrankAng" units="Deg">11.6</constant>
<constant digits="0" name="IgHold">10.0</constant>
<constant name="Trig_plus">"+45"</constant>
<constant name="TrigCrank">"Time Based"</constant>
<constant name="IgInv">"No"</constant>
<constant name="oddfire">"Yes"</constant>
<constant digits="0" name="IdleAdv" units="Deg">-1.9008</constant>
<constant digits="0" name="IdleAdvTPS" units="ADC">65.0</constant>
<constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant>
<constant digits="1" name="IdleAdvCLT" units="C">-20.535</constant>
<constant digits="0" name="IdleDelayTime" units="sec">38.0</constant>
<constant digits="0" name="StgCycles" units="cycles">1.0</constant>
<constant name="dwellcont">"Dwell control"</constant>
<constant digits="1" name="dwellcrank" units="ms">4.5</constant>
<constant digits="1" name="dwellrun" units="ms">3.0</constant>
<constant digits="0" name="numteeth" units="teeth">36.0</constant>
<constant digits="0" name="onetwo" units="teeth">1.0</constant>
<constant digits="0" name="crankRPM" units="rpm">300.0</constant>
<constant digits="0" name="tpsflood" units="%">92.0</constant>
<constant digits="0" name="SoftRevLim" units="rpm">7000.0</constant>
<constant digits="0" name="SoftLimRetard" units="deg">15.0</constant>
<constant digits="1" name="SoftLimMax" units="s">2.0</constant>
<constant digits="0" name="HardRevLim" units="rpm">7500.0</constant>
<constant cols="1" digits="0" name="taeBins" rows="4" units="%/s">
80.0
200.0
520.0
890.0
</constant>
<constant cols="1" digits="0" name="taeRates" rows="4" units="%">
18.0
24.0
33.0
42.0
</constant>
<constant cols="1" digits="0" name="wueRates" rows="10" units="C">
0.0
11.0
22.0
33.0
44.0
56.0
67.0
78.0
94.0
111.0
</constant>
<constant digits="0" name="dwellLim" units="ms">8.0</constant>
<constant digits="0" name="unused122" units="none">0.0</constant>
<constant digits="0" name="unused123" units="none">0.0</constant>
<constant digits="0" name="unused124" units="none">0.0</constant>
<constant digits="0" name="unused125" units="none">0.0</constant>
<constant digits="0" name="unused126" units="none">0.0</constant>
<constant digits="0" name="unused127" units="none">0.0</constant>
</page>
<page number="2" size="128">
<constant digits="0" name="unused95" units="none">0.0</constant>
<constant cols="8" digits="1" name="afrTable" rows="8" units="AFR">
14.7 14.7 15.0 15.1 14.9 14.7 14.7 14.7
14.7 14.7 15.0 15.1 14.9 14.7 14.7 14.7
14.7 14.7 14.8 15.0 14.8 14.6 14.4 14.0
14.3 14.3 14.7 14.7 14.6 14.1 13.8 13.4
14.1 14.2 14.5 14.3 14.0 13.5 13.1 12.9
14.1 14.2 13.7 13.6 13.4 13.1 13.0 12.8
13.5 13.5 12.8 12.9 12.8 12.7 12.7 12.7
12.8 12.8 12.8 12.7 12.5 12.5 12.5 12.5
</constant>
<constant cols="1" digits="0" name="rpmBinsAFR" rows="8" units="RPM">
500.0
1200.0
2000.0
3000.0
3500.0
4200.0
5000.0
6000.0
</constant>
<constant cols="1" digits="0" name="tpsBinsAFR" rows="8" units="TPS">
10.0
20.0
35.0
50.0
65.0
75.0
86.0
100.0
</constant>
<constant name="egoAlgorithm">"Simple"</constant>
<constant name="egoType">"Disabled"</constant>
<constant digits="0" name="egoKP" units="%">100.0</constant>
<constant digits="0" name="egoKI" units="%">20.0</constant>
<constant digits="0" name="egoKD" units="%">0.0</constant>
<constant digits="0" name="egoTemp" units="°C">69.93</constant>
<constant digits="0" name="egoCount">16.0</constant>
<constant digits="0" name="egoDelta" units="%">1.0</constant>
<constant digits="0" name="egoLimit">15.0</constant>
<constant digits="1" name="ego_min" units="AFR">9.0</constant>
<constant digits="1" name="ego_max" units="AFR">19.0</constant>
<constant digits="0" name="ego_sdelay" units="sec">15.0</constant>
<constant digits="0" name="egoRPM" units="rpm">1200.0</constant>
<constant digits="0" name="egoTPSMax" units="%">70.0</constant>
<constant digits="0" name="egoLoadMax" units="%">90.0</constant>
<constant digits="0" name="egoLoadMin" units="%">20.0</constant>
</page>
<settings Comment="These setting are only used if this msq is opened without a project.">
<setting name="CELSIUS" value="CELSIUS"/>
<setting name="ALPHA_N" value="ALPHA_N"/>
<setting name="MPX4250" value="MPX4250"/>
<setting name="INNOVATE_LC1_DEFAULT" value="INNOVATE_LC1_DEFAULT"/>
</settings>
<userComments Comment="These are user comments that can be related to a particular setting or dialog.">
<userComment name="SoftRevLim" value=""/>
<userComment name="aseCount" value=""/>
</userComments>
</msq>

View File

@ -1,739 +0,0 @@
;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "Q" ; B&G embedded code version 2.0/2.98x/3.00
signature = 20 ; Versions above return a single byte, 20T.
;-------------------------------------------------------------------------------
[Constants]
;----------------------------------------------------------------------------
; Constants Definition
; --------------------
;
; Scalar Values
; -------------
; The scaling and translation values are used as follows:
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
;
; I've got no good way to handle a few of these things yet.
;
; Temperatures are fine, check out the Fielding IAC example (fastIdleT).
;
; The TPS stuff is a problem, because we have to modify the ini file for
; each TPS installation and again whenever we move the TPS... I figured
; out a moderately palatable solution to presenting the frequency
; divider in the boost control values, turn it into a bit field and then
; enumerate the resulting frequencies.
;
; Array Values
; ------------
; Arrays are specified just like scalars, except that they have a "shape"
; entry in the fourth parameter. The shape allows you to define lists or
; tables, for example [8] defines a list with eight values and [2x4] defines
; a table with eight values (two rows and four columns). Tables may be
; stored in either "X-" or "Y-order." X-order means that memory is layed
; out like.
;
; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]...
;
; Y-order would be
;
; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]...
;
; To use the TableEditor, you must define two lists and a table, and
; the lengths of the lists must correspond to the shape of the table.
;
; Bit Fields
; ----------
; Bits are numbered 0-7, the rightmost being bit zero. The basic
; data word that stores bit fields must be unsigned.
;
; You need NOT supply the correct number of labels matching the
; number of bits you've specified (one bit requires 2 values, two
; bits requires 4 values and so on). If you neglect to supply enough
; labels, they will be synthesized using the sequence "1", "2" and so
; on based upon their position in the sequence (the cltType and matType
; will end up with identical lists).
;
; If you specify a label as "INVALID" (all upper case), then it will
; not be displayed in the combo box, so you can leave out values that
; make no sense.
;
;----------------------------------------------------------------------------
endianness = big
nPages = 2
burnCommand = "B"
; pageSize = 125
pageSize = 125, 125
pageActivationDelay = 10
; pageActivate = ""
pageActivate = "P\001", "P\002"
pageReadCommand = "V", "V"
pageValueWrite = "W%o%v", "W%o%v"
; pageChunkWrite = "" ; No chunk write for standard MS.
page = 1
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
veTable = array, U08, 0, [8x8], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins = array, U08, 64, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0
#if SPEED_DENSITY
mapBins = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
#exit
#endif
crankCold = scalar, U08, 80, "ms", 0.1, 0.0, 0.0, 25.5, 1
crankHot = scalar, U08, 81, "ms", 0.1, 0.0, 0.0, 25.5, 1
asePct = scalar, U08, 82, "%", 1.0, 0.0, 0.0, 95.0, 0
aseCount = scalar, U08, 83, "", 1.0, 0.0, 0.0, 254.0, 0
wueBins = array, U08, 84, [ 10], "%", 1.0, 0.0, 100.0, 255.0, 0
taeBins = array, U08, 94, [ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins1 = scalar, U08, 94, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins2 = scalar, U08, 95, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins3 = scalar, U08, 96, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins4 = scalar, U08, 97, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA = scalar, U08, 98, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh = scalar, U08, 99, "v/s",0.1953125, 0.0, 0.2, 49.8, 3
taeTime = scalar, U08, 100, "ms", 0.1, 0.0, 0.0, 25.5, 1
tdePct = scalar, U08, 101, "%", 1.0, 0.0, 0.0, 255.0, 0
#if CELSIUS
egoTemp = scalar, U08, 102, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp = scalar, U08, 102, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount = scalar, U08, 103, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta = scalar, U08, 104, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit = scalar, U08, 105, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel = scalar, U08, 106, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider = scalar, U08, 107, "", 1.0, 0.0
alternate = bits, U08, 108, [0:0], "Simultaneous", "Alternating"
injOpen = scalar, U08, 109, "ms", 0.1, 0.0, 0.1, 25.5, 1
injOCfuel = scalar, U08, 110, "ms", 0.1, 0.0, 0.0, 0.0, 0
injPwmP = scalar, U08, 111, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT = scalar, U08, 112, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac = scalar, U08, 113, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk = scalar, U16, 114, "", 1.0, 0.0
; Config1
mapType = bits, U08, 116, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
twoStroke = bits, U08, 116, [2:2], "Four-stroke", "Two-stroke"
injType = bits, U08, 116, [3:3], "Port", "Throttle Body"
nCylinders = bits, U08, 116, [4:7+1]
; Config3
cltType = bits, U08, 117, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType = bits, U08, 117, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors = bits, U08, 117, [4:7+1]
; Config3
engineType = bits, U08, 118, [0:0], "Even fire", "Odd fire"
egoType = bits, U08, 118, [1:1], "Narrow band", "Wide band"
algorithm = bits, U08, 118, [2:2], "Speed Density", "Alpha-N"
baroCorr = bits, U08, 118, [3:3], "Off", "On"
primePulse = scalar, U08, 119, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM = scalar, U08, 120, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT = scalar, U08, 121, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT = scalar, U08, 121, "°F", 1.0, -40.0, -40, 215, 0
#endif
egoSwitch = scalar, U08, 122, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM = scalar, U08, 123, "%", 1.0, 0.0, 0.0, 250.0, 0
;--------------------------------------------------
;Start Ignition table (Table 2)
;--------------------------------------------------
page = 2
advTable1 = array, U08, 0,[8x8], "deg", 1.0, 0.0, 0.0, 255.0, 0
rpmBins2 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
mapBins2 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins2 = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
#exit
#endif
TrigAng = scalar, U08, 80, "Deg", 0.352, 0, 0, 90, 0
FixAng = scalar, U08, 81, "Deg", 0.352, -28.4, -10, 80, 0
Trim = scalar, S08, 82, "Deg", 0.352, 0, -45, 45, 0
CrankAng = scalar, U08, 83, "Deg", 0.352, -28.4, -10, 80, 0
IgHold = scalar, U08, 84, "", 1, 0, 0, 100, 0
Trig_plus = bits, U08, 85[0:1], "0", "+22.5", "INVALID", "+45"
TrigCrank = bits, U08, 85[2:2], "Trigger Return", "Time Based"
IgInv = bits, U08, 85[3:3], "No", "Yes"
oddfire = bits, U08, 85[4:4], "No", "Yes"
IdleAdv = scalar, U08, 86, "Deg", 0.352,-28.4, -10, 80, 0
IdleAdvTPS = scalar, U08, 87, "ADC", 1, 0, 0, 255, 0
IdleAdvRPM = scalar, U08, 88, "RPM", 100, 0, 0, 1200, 0
#if CELSIUS
IdleAdvCLT = scalar, U08, 89, "C", 0.555, -72, -40, 102, 1
#else
IdleAdvCLT = scalar, U08, 89, "F", 1, -40, -40, 215, 0
#endif
IdleDelayTime = scalar, U08, 90, "sec", 1, 0, 0, 5, 0
StgCycles = scalar, U08, 91, "cycles", 1, 0, 0, 255, 0
;Dwell control
;running dwell variable railed to 8 - who needs more than 8ms?
dwellcont = bits, U08, 92, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 93, "ms", 0.1, 0, 0, 25, 1
dwellrun = scalar, U08, 94, "ms", 0.1, 0, 0, 8, 1
triggerTeeth = scalar, U08, 95, "teeth", 1.0, 0.0, 0.0, 255, 0 ; * ( 1 byte)
No_Miss_Teeth = scalar, U08, 96, "teeth", 1.0, 0.0, 0.0, 255, 0 ; * ( 1 byte )
;-------------------------------------------------------------------------------
[Menu]
;----------------------------------------------------------------------------
; There are five pre-defined values that may be used to define your menus.
; The first four allow access to the "standard" dialog boxes, the last one
; merely draws a separator (horizontal line) in the menu.
;
; std_constants
; std_enrichments
; std_realtime
; std_warmup
;
; std_separator
;
; If you use any of the std_constants, std_enrichments or std_warmup
; editors, they may be optionally suffixed with a page number (only
; useful for multi-page code variants), which causes them to edit the
; specified page. If you leave off the page specifier, they edit logical
; page one as specified in the Constants section.
;
; There are four special menu names, which when used append to the standard
; menus of the same name instead of creating a new one. The menu names
; are "File", "Communications", "Tools" and "Help".
;
;----------------------------------------------------------------------------
menu = "&Settings"
subMenu = std_constants, "&Constants"
subMenu = std_enrichments, "&Enrichments"
subMenu = veTableTbl, "&VE Table", 0
subMenu = sparkTbl, "&Spark Table", 1
menu = "&Tuning"
subMenu = std_realtime, "&Realtime Display"
subMenu = std_warmup, "&Warmup Wizard"
subMenu = veTableMap, "&VE Table"
;-------------------------------------------------------------------------------
[UserDefined]
; define a MegaTune compatible version here
; no need to for std_enrichments, it is built in.
[UserDefinedTS]
; Enhanced TunerStudio dialogs can be defined here
; MegaTune will over look this section
; These dialogs will over-ride those in the UserDefined Section
; User defined ar loaded first, then if one by the same name is defiend here,
; it will replace the MegaTune definition
; dialog = name, Title, Layout
;
; valid options for layout are xAxis, yAxis, border
; for an xAxis, each field added will be added from right to left
; A yAxis layout will add fields from top to bottom
; A border layout will expect an additional constraint to determine placement
; valid border constraints are north, South, East, West, Center
; all 5 do not need to be filled.
; The field name can be either a constant reference, or a reference to another
; dialog which will be added.
; dialogs can be nested and can be mixed with fields
dialog = accelEnrichments, "Acceleration Enrichment"
field = "TPSdot Threshold", tpsThresh
field = "Accel Time", taeTime
field = "Cold Accel Enrichment", taeColdA
field = "Cold Accel Mult", taeColdM
field = "Decel Fuel Amount", tdePct
field = "Acceleration Enrichment Bins (ms)"
field = "2 v/s", taeBins1
field = "4 v/s", taeBins2
field = "8 v/s", taeBins3
field = "15 v/s", taeBins4
dialog = crankPW, "Cranking Pulsewidths (ms)"
#if CELSIUS
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°C", crankCold
field = "Pulsewidth at 77°C", crankHot
#else
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°F", crankCold
field = "Pulsewidth at 170°F", crankHot
#endif
dialog = aseSettings, "Afterstart Enrichment"
field = "Enrichment %", asePct
field = "Number of Ignition Cycles", aseCount
dialog = egoSettings, "Exhaust Gas Oxygen"
field = "EGO Sensor Type", egoType
field = "EGO Switch Point (v)", egoSwitch
field = "Coolant Temp Activation", egoTemp
field = "Ignition Events Per Step", egoCount
field = "EGO Step", egoDelta
field = "EGO ± Limit", egoLimit
field = "EGO Active Above", egoRPM
dialog = westEnrichments, "", yAxis
panel = crankPW
panel = aseSettings
panel = egoSettings
dialog = std_enrichments, "Enrichments", border ; xAxis would work here too, but wanted to give a border example
topicHelp = "helpEnrichments"
panel = westEnrichments, West
panel = accelEnrichments, East
; -------------------------------------------------------------
; Help down here
help = helpEnrichments, "Enrichments Help"
text = "<strong>Priming Pulse</strong><br><br>"
text = "The duration in milliseconds of a priming pulse that is applied when the MS controller is powered up. If you dont want a priming pulse, set this field to zero. (Only available for version 2.0 and later of MegaSquirt controller code.)<br>"
text = "<br><strong>Cranking Pulsewidth</strong><br><br>"
text = "Cranking pulse width determines how long the injector will be open in milliseconds for each pulse while the engine is cranking (i.e., the RPM is below 300). The actual pulse width is determined by performing linear interpolation on the line described by the end points you enter for the "-40 degrees F" and "170 degrees F" values. For instance, if you enter 10.0 ms as the pulse width at -40 F and 2.0 ms at 170 F, the pulse width will be 6.0 ms when you start your engine at 65 F.<br>"
text = "Note: Cranking pulse occur at every ignition event, while running pulses only occur at the interval specified on the constants page; if you have a 4 cylinder engine and are taking the tachometer signal from the coil, then you will get four (4) cranking pulses per cycle and depending on settings one injection per cycle while running.<br>"
text = "The MS variables "CWU" and "CWH" hold the low temperature and high temperature pulse widths, respectively.<br>"
text = "<br><strong>Afterstart Enrichment</strong><br>"
text = "The afterstart enrichment is one that decays from its max value (specified in the "Enrichment (percent)" field) to zero in a linear fashion over a period defined in "Number of Ignition Cycles." If you specify 20% enrichment over 250 ignition cycles, then the first pulse is enriched by 20%, the 125th pulse is enriched by 10% and the 250th (and later) by zero percent (this assumes 1 event per cycle, or a 1 cylinder engine; divide by the number of ignition events per cycle to get the specific behavior for your motor).<br>"
text = "MS stores these values in the flash constants called "AWC" (Afterstart Warmup Count) and "AWEV" (Afterstart Warmup Enrichment Value).<br>"
text = "<br><strong>Exhaust Gas Oxygen Sensor Parameters</strong><br>"
text = "These parameters define the closed loop behavior of MS. You must have a narrow band O2 sensor hooked up for this mode to work in v.1.0 controller code; either a narrow band or wide band will work with v.2.0 of controller code. To disable closed loop operation altogether, set the EGO Step value to zero.<br>"
text = "<br><strong>EGO Sensor Type</strong><br>"
text = "Specify either a narrow band sensor or wide band sensor. Functionally this merely sets the direction sense of the sensor voltage. For narrow band sensors, the voltage rises as the mixture is richening and drops as the mixture becomes lean. The wide band setting corresponds to the opposite sense, i.e., voltage drops to indicate enrichment (this is how the DIY-WB operates, not necessarily all WB sensors!). (Available in v 2.0 controller code.)<br>"
text = "<br><strong>EGO Switch Point (v)</strong><br>"
text = "This is the switching point voltage that indicates stoichiometric combustion (approximately 14.7:1 with gasoline). For narrow band sensors this is 0.5 v*; for the DIY-WB wideband sensor it is 2.5 v (for other wideband sensors this voltage may be quite different). (This value is only active in v 2.0 controller code.)<br>"
text = "*This is true for zirconia NB sensors, which are used almost exclusively in modern vehicles. The titania NB sensor has a different voltage range (1-5 v), but is rarely used.<br>"
text = "<br><strong>Coolant Temp Activation (°F)</strong><br>"
text = "This is the temperature below which closed loop operation is disabled. If this value is too low, then closed loop will try to lean out the warmup enrichments and you may experience rough running. Typical value is 160 F and should somewhat above the point at which warmup enrichment stops (see the Warmup Enrichment Bins settings and find the lowest on which contains 100).<br>"
text = "The MS value "EGOTEMP" stores this quantity.<br>"
text = "<br><strong>Ignition Events Per Step</strong><br>"
text = "This value determines the rate at which the closed loop algorithm applies correction. The default value of 32, when used on a four cylinder engine with four ignition events per cycle, tells MS to wait for 8 cycles before changing the current correction factor.<br>"
text = "<br><strong>EGO Step (percent)</strong><br>"
text = "Once the closed loop algorithm has decided to change the correction factor, it adds or subtracts this percentage from the current value. This should move slowly to avoid unstable response, so make sure it is small, 1% being the default.<br>"
text = "<br><strong>EGO Limit (%)</strong><br>"
text = "Closed loop operation should not be substituted for proper tuning! This value limits the correction that can be made by the closed loop algorithm, the default of 10% indicates the correction factor cannot go outside the range 90-110%.<br>"
text = "<br><strong>EGO Active Above RPM</strong><br>"
text = "This value specifies the lower limit above which closed loop operation occurs. Typically, your engine will idle best when it is richer than stoich, so turning off closed loop for low RPMs allows this to happen. The default value for the RPM limit is 1200. (Available only in v 2.0 MS, older versions have a fixed 1200 RPM value in the controller code.)<br>"
text = "<br><strong>Warmup Enrichment Bins</strong><br>"
text = "Warmup enrichment is based on coolant temperature. Since warmup enrichment requirements are usually non-linear, several bins are provided to specify different rates in different temperature domains.<br>"
text = "Place values in the "-40" through "160 degrees F" fields, typically running from about 120 at -40 F to 100 at 100 F; make sure the values are all 100 or greater.<br>"
text = "The MS array "WWU" contains these enrichment values.<br>"
text = "<br><strong>Acceleration Enrichment</strong><br>"
text = "Acceleration enrichment (AE) occurs when you open the throttle "rapidly" to avoid bogging the engine. In v.1.01 MS, this is done solely based upon the rate of change in the throttle position sensor (also called TPSDOT).<br>"
text = "<br><strong>TPSDOT Thresh</strong><br>"
text = "This is the threshold in v/sec below which no acceleration enrichment will occur (you can move the throttle from idle to full open without acceleration enrichment, if you open it slowly enough). Depends grossly upon the range of your TPS, a typical value might be 1.2 v/sec.<br>"
text = "<strong>Tuning Note:</strong> While you are tuning the VE table you should set this threshold artificially high (maybe 40.0) to disable acceleration enrichment completely. After the VE table is fairly well-defined, set this back to 1.2 and begin tuning AE.<br>"
text = "MS stores this value in the "TPSTHRESH" variable.<br>"
text = "<br><strong>Accel Time (sec)</strong><br>"
text = "This value indicates how long the acceleration enrichment "squirt" will last. Typical values are around 1.0 second. MS stores this value in the variable "TPSACLK."<br>"
text = "<br><strong>Cold Accel Enrichment (ms)</strong><br>"
text = "The acceleration enrichment pulse also varies depending upon coolant temperature. The value specified here is the pulse width added to the value from the bin calculations at -40 F. The Cold Acceleration Enrichment amount is linearly interpolated from full amount at -40 F down to zero at 165 F. A typical value might be 2.0 ms.<br>"
text = "This value is stored in the "TPSACOLD" variable in MS.<br>"
text = "<br><strong>Cold Accel Multiplier (%)</strong><br>"
text = "Another means for increasing the amount of fuel delivered by the acceleration enrichment pulse is supplied by this value; it is likewise interpolated from the full specified amount at 40F down to zero at 165 F. Before the Cold Acceleration Enrichment value is added to the base acceleration enrichment pulsewidth, it is multiplied by this value.<br>"
text = "Total AE = Base AE * CAM + CAE<br>"
text = "The difference between the two types of AE cold modify can be easily seen with a few examples:<br>"
text = "1) Assume we have a calculated AE pulse of 5.0 ms. Say our coolant temperature is 40 F, giving a CAE pulse of 2.0 ms and CAM is turned off (100%). The result is 5.0+2.0 = 7.0 ms.<br>"
text = "2) Assume same base AE and temperature, but now we turn off CAE (0.0 ms) and set CAM to give 140%. The result is the same, we get 5.0*1.4 = 7.0 ms.<br>"
text = "3) Take the first case, but hit the accelerator faster, giving 8.0 ms base AE pulse. We now have a result of 8.0+2.0 = 10.0 ms.<br>"
text = "4) Take case 2, but with the higher base AE pulse, giving 8.0*1.4 = 11.2 ms.<br>"
text = "The bottom line is that the CAE modifier is constant and independent of the base pulse, where on the other hand, the CAM modifier has a proportional effect on the AE, bigger base pulse means bigger result.<br>"
text = "This value is stored in the 'ACMULT' variable in MS.<br>"
text = "<br><strong>Decel Fuel Amount (%)</strong><br>"
text = "When you let off the throttle rapidly (that is the closing rate exceeds TPSDOT Thresh) and the engine is turning faster than 1500 RPM, then deceleration fuel cutoff is performed by MS. Deceleration fuel amount is multiplied by the "normal" pulse width, that is, if the calculated pulse is 12.0 ms and you have 20% decel amount, then the resulting pulse width is 2.4 ms. A value of 100% causes the fuel to remain at its calculated value, and can cure bucking on deceleration in vehicles with manual transmissions; those with automatic transmissions may benefit in fuel economy by using values below 100%.<br>"
text = "The MS variable "TPSDQ" holds this value as a percentage. <br>"
text = "<br><strong>Acceleration Enrichment Bins (ms)</strong><br>"
text = "These bins specify the actual enrichment in terms of pulse width. They are linearly interpolated to determine a value that is ultimately added to the computed pulse width.<br>"
text = "The array of values is called "TPSAQ" as stored in MS."
[TableEditor]
; table_id, map3d_id, "title", page
table = veTableTbl, veTableMap, "VE Table", 1
; constant, variable
xBins = rpmBins, rpm
#if SPEED_DENSITY
yBins = mapBins, map
#else
yBins = tpsBins, tpsADC
#endif
zBins = veTable
gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = sparkTbl, sparkMap, "Ignition Advance Table", 2
xBins = rpmBins2, rpm
#if SPEED_DENSITY
yBins = mapBins2, map
#else ALPHA_N
yBins = tpsBins2, tpsADC
#endif
zBins = advTable1
gridHeight = 3.0
upDownLabel = "ADVANCED", "RETARDED"
;-------------------------------------------------------------------------------
[GaugeConfigurations]
;-------------------------------------------------------------------------------
; Notes on some of the gauges.
;
; The accelEnrichGauge is now a composite of both acceleration enrichment
; and deceleration enleanment numbers. See the definition of the variable
; accDecEnrich in the OutputChannels section.
;
; David Hooke contributed the lambda gauge and associated transfer
; function files.
;
; "The lambda gauge is the best way (my opinion) to report data from a
; wide band EGO gauge, it standardizes the output irrespective of fuel
; or mix of fuels, so you needn't do any brainwork to know if your 75%
; gasoline and 25% methanol is rich at 10:1 or not.
;
; "Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu)."
;-------------------------------------------------------------------------------
; Define a gauge's characteristics here, then go to a specific layout
; block (Tuning or FrontPage) and use the name you've defined here to
; display that gauge in a particular position.
;
; Name = Case-sensitive, user-defined name for this gauge configuration.
; Var = Case-sensitive name of variable to be displayed, see the
; OutputChannels block in this file for possible values.
; Title = Title displayed at the top of the gauge.
; Units = Units displayed below value on gauge.
; Lo = Lower scale limit of gauge.
; Hi = Upper scale limit of gauge.
; LoD = Lower limit at which danger color is used for gauge background.
; LoW = Lower limit at which warning color is used.
; HiW = Upper limit at which warning color is used.
; HiD = Upper limit at which danger color is used.
; vd = Decimal places in displayed value
; ld = Label decimal places for display of Lo and Hi, above.
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
baroADCGauge = baroADC, "Barometer ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
mapADCGauge = mapADC, "MAP ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
matADCGauge = matADC, "MAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
cltADCGauge = cltADC, "CLT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
batADCGauge = batADC, "BAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#if NARROW_BAND_EGO
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
#else
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
#endif
lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0
afrGauge = afr, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0
dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 85, 90, 1, 1
egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0
gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1
tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0
throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0
veBucketGauge = veTuneValue, "VE Value", "%", 0, 120, -1, -1, 999, 999, 0, 0
veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0
voltMeter = batteryVoltage,"Battery Voltage", "volts", 7, 21, 8, 9, 15, 16, 2, 2
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 120, -15, 0, 95, 105, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0
#else
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 250, 0, 30, 200, 220, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 215, 0, 30, 200, 210, 0, 0
#endif
;-------------------------------------------------------------------------------
[FrontPage]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = tachometer
#if SPEED_DENSITY
gauge2 = throttleGauge
#else
gauge2 = tpsADCGauge
#endif
gauge3 = pulseWidthGauge
gauge4 = dutyCycleGauge
gauge5 = mapGauge
gauge6 = matGauge
gauge7 = cltGauge
gauge8 = gammaEnrichGauge
;----------------------------------------------------------------------------
; Indicators
; expr off-label on-label, off-bg, off-fg, on-bg, on-fg
indicator = { ready }, "Not Ready", "Ready", white, black, green, black
indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black
indicator = { startw }, "ASE OFF", "ASE", white, black, green, black
indicator = { warmup }, "WUE OFF", "WUE", white, black, green, black
indicator = { tpsaccaen }, "TPS Accel", "TPS Accel", white, black, green, black
indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black
indicator = { tpsaccden }, "TPS Decel", "TPS Decel", white, black, green, black
indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black
;-------------------------------------------------------------------------------
[RunTime]
barHysteresis = 2.5 ; Seconds
#if CELSIUS
coolantBar = -40, 100
matBar = -40, 100
#else
coolantBar = -40, 215
matBar = -40, 215
#endif
batteryBar = 6, 15
dutyCycleBar = 0, 100
#if NARROW_BAND_EGO
egoBar = 0, 1.0
#else
egoBar = 0, 5.0
#endif
gammaEBar = 0, 200
mapBar = 0, 255
pulseWidthBar = 0, 25.5
rpmBar = 0, 8000
throttleBar = 0, 100
egoCorrBar = 0, 200
baroCorrBar = 0, 200
warmupCorrBar = 0, 200
airdenCorrBar = 0, 200
veCorrBar = 0, 200
accCorrBar = 0, 100
;-------------------------------------------------------------------------------
[Tuning]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
font = "Courier", 14
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
;----------------------------------------------------------------------------
; Notes on tuning screen gauges:
; pageButtons = Labels for radio buttons at bottom of tuning dialog.
;
; Gauge 2 previously switched automatically to be tpsGauge when alpha-n
; was enabled, but you need to do it manually now.
;----------------------------------------------------------------------------
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&EGO", "&WUE", "PW&1", "PW&2"
gauge1 = tachometer, tachometer, tachometer, tachometer
gauge2 = mapGauge, mapGauge, mapGauge, mapGauge
gauge3 = egoGauge, egoGauge, egoGauge, egoGauge
gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidthGauge, pulseWidthGauge
gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge
gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycleGauge, dutyCycleGauge
;-------------------------------------------------------------------------------
[OutputChannels]
; The number of bytes MegaTune should expect as a result
; of sending the "A" command to MegaSquirt is determined
; by the value of ochBlockSize, so be very careful when
; you change it.
deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "A"
ochBlockSize = 22
secl = scalar, U08, 0, "sec", 1.000, 0.000
squirt = scalar, U08, 1, "bits", 1.000, 0.000
engine = scalar, U08, 2, "bits", 1.000, 0.000
ready = bits, U08, 2, [0:0]
crank = bits, U08, 2, [1:1]
startw = bits, U08, 2, [2:2]
warmup = bits, U08, 2, [3:3]
tpsaccaen = bits, U08, 2, [4:4]
tpsaccden = bits, U08, 2, [5:5]
mapaccaen = bits, U08, 2, [6:6]
mapaccden = bits, U08, 2, [7:7]
baroADC = scalar, U08, 3, "ADC", 1.000, 0.000
mapADC = scalar, U08, 4, "ADC", 1.000, 0.000
matADC = scalar, U08, 5, "ADC", 1.000, 0.000
cltADC = scalar, U08, 6, "ADC", 1.000, 0.000
tpsADC = scalar, U08, 7, "ADC", 1.000, 0.000
batADC = scalar, U08, 8, "ADC", 1.000, 0.000
egoADC = scalar, U08, 9, "ADC", 1.000, 0.000
egoCorrection = scalar, U08, 10, "%", 1.000, 0.000
airCorrection = scalar, U08, 11, "%", 1.000, 0.000
warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000
rpm100 = scalar, U08, 13, "r100", 1.000, 0.000
pulseWidth = scalar, U08, 14, "ms", 0.100, 0.000
accelEnrich = scalar, U08, 15, "%", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr = scalar, U08, 18, "%", 1.000, 0.000
blank1 = scalar, U08, 19 ; Raw inputs, as they come from MS.
blank2 = scalar, U08, 20
blank3 = scalar, U08, 21
; Computed output channels. See "megatuneExamples.ini" for all the
; pre-defined variables, search for "???" and you'll see them.
accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct : 100) }
batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage.
coolant = { tempCvt(table(cltADC, "thermfactor.inc")-40) } ; Coolant sensor temperature in user units.
egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage.
mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units.
rpm = { rpm100*100 } ; True RPM.
time = { timeNow } ; "timeNow" is a parameterless built-in function.
afrtarget = { 0 }
#include "lambdaSensors.ini"
#if MPX4250
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa.
#else
barometer = { table(baroADC, "kpafactor4115.inc") }
map = { table(mapADC, "kpafactor4115.inc") }
#endif
throttle = { table(tpsADC, "throttlefactor.inc") }
idleDC = { (coolant < fastIdleT) * 100 }
altDiv = { alternate ? 2 : 1 }
cycleTime = { 60000.0 / rpm * (2.0-twoStroke) }
nSquirts = { nCylinders/divider }
dutyCycle = { 100.0*nSquirts/altDiv*pulseWidth/cycleTime }
;-------------------------------------------------------------------------------
[Datalog]
; Full datalog.
;
; Default user-defined log emulates the full datalog.
;
; The entries are saved in the datalog file in the order in
; which they appear in the list below.
;
; Channel - Case sensitive name of output channel to be logged.
; Label - String written to header line of log. Be careful
; about changing these, as programs like MSLVV and
; MSTweak key off specific column names.
; Type - Data type of output, converted before writing.
; Format - C-style output format of data.
;
; Channel Label Type Format
; -------------- ---------- ----- ------
entry = time, "Time", float, "%.3f"
entry = secl, "SecL", int, "%d"
entry = rpm100, "RPM", int, "%d"
entry = map, "MAP", int, "%d"
entry = throttle, "TP", int, "%d"
entry = egoVoltage, "O2", float, "%.3f"
entry = mat, "MAT", float, "%.1f"
entry = coolant, "CLT", float, "%.1f"
entry = engine, "Engine", int, "%d"
entry = egoCorrection, "Gego", int, "%d"
entry = airCorrection, "Gair", int, "%d"
entry = warmupEnrich, "Gwarm", int, "%d"
entry = baroCorrection, "Gbaro", int, "%d"
entry = gammaEnrich, "Gammae", int, "%d"
entry = accDecEnrich, "TPSacc", int, "%d"
entry = veCurr, "Gve", int, "%d"
entry = pulseWidth, "PW", float, "%.1f"
entry = blank2, "Gve2", int, "%d"
entry = pulseWidth, "PW2", float, "%.1f"
entry = dutyCycle, "DutyCycle1", float, "%.1f"
entry = dutyCycle, "DutyCycle2", float, "%.1f"
entry = blank1, "UserData1", int, "%d"
entry = blank2, "UserData2", int, "%d"
entry = blank3, "UserData3", int, "%d"

View File

@ -1,786 +0,0 @@
;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "Q" ; B&G embedded code version 2.0/2.98x/3.00
signature = 20 ; Versions above return a single byte, 20T.
;-------------------------------------------------------------------------------
[Constants]
;----------------------------------------------------------------------------
; Constants Definition
; --------------------
;
; Scalar Values
; -------------
; The scaling and translation values are used as follows:
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
;
; I've got no good way to handle a few of these things yet.
;
; Temperatures are fine, check out the Fielding IAC example (fastIdleT).
;
; The TPS stuff is a problem, because we have to modify the ini file for
; each TPS installation and again whenever we move the TPS... I figured
; out a moderately palatable solution to presenting the frequency
; divider in the boost control values, turn it into a bit field and then
; enumerate the resulting frequencies.
;
; Array Values
; ------------
; Arrays are specified just like scalars, except that they have a "shape"
; entry in the fourth parameter. The shape allows you to define lists or
; tables, for example [8] defines a list with eight values and [2x4] defines
; a table with eight values (two rows and four columns). Tables may be
; stored in either "X-" or "Y-order." X-order means that memory is layed
; out like.
;
; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]...
;
; Y-order would be
;
; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]...
;
; To use the TableEditor, you must define two lists and a table, and
; the lengths of the lists must correspond to the shape of the table.
;
; Bit Fields
; ----------
; Bits are numbered 0-7, the rightmost being bit zero. The basic
; data word that stores bit fields must be unsigned.
;
; You need NOT supply the correct number of labels matching the
; number of bits you've specified (one bit requires 2 values, two
; bits requires 4 values and so on). If you neglect to supply enough
; labels, they will be synthesized using the sequence "1", "2" and so
; on based upon their position in the sequence (the cltType and matType
; will end up with identical lists).
;
; If you specify a label as "INVALID" (all upper case), then it will
; not be displayed in the combo box, so you can leave out values that
; make no sense.
;
;----------------------------------------------------------------------------
endianness = big
nPages = 2
burnCommand = "B"
; pageSize = 125
pageSize = 125, 125
pageActivationDelay = 10
; pageActivate = ""
pageActivate = "P\001", "P\002"
pageReadCommand = "V", "V"
pageValueWrite = "W%o%v", "W%o%v"
; pageChunkWrite = "" ; No chunk write for standard MS.
page = 1
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
veTable = array, U08, 0, [8x8], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins = array, U08, 64, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0
#if SPEED_DENSITY
mapBins = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
;#exit
#endif
crankCold = scalar, U08, 80, "ms", 0.1, 0.0, 0.0, 25.5, 1
crankHot = scalar, U08, 81, "ms", 0.1, 0.0, 0.0, 25.5, 1
asePct = scalar, U08, 82, "%", 1.0, 0.0, 0.0, 95.0, 0
aseCount = scalar, U08, 83, "", 1.0, 0.0, 0.0, 254.0, 0
wueBins = array, U08, 84, [ 10], "%", 1.0, 0.0, 100.0, 255.0, 0
taeBins = array, U08, 94, [ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins1 = scalar, U08, 94, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins2 = scalar, U08, 95, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins3 = scalar, U08, 96, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins4 = scalar, U08, 97, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA = scalar, U08, 98, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh = scalar, U08, 99, "v/s",0.1953125, 0.0, 0.2, 49.8, 3
taeTime = scalar, U08, 100, "ms", 0.1, 0.0, 0.0, 25.5, 1
tdePct = scalar, U08, 101, "%", 1.0, 0.0, 0.0, 255.0, 0
#if CELSIUS
egoTemp = scalar, U08, 102, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp = scalar, U08, 102, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount = scalar, U08, 103, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta = scalar, U08, 104, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit = scalar, U08, 105, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel = scalar, U08, 106, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider = scalar, U08, 107, "", 1.0, 0.0
alternate = bits, U08, 108, [0:0], "Simultaneous", "Alternating"
injOpen = scalar, U08, 109, "ms", 0.1, 0.0, 0.1, 25.5, 1
injOCfuel = scalar, U08, 110, "ms", 0.1, 0.0, 0.0, 0.0, 0
injPwmP = scalar, U08, 111, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT = scalar, U08, 112, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac = scalar, U08, 113, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk = scalar, U16, 114, "", 1.0, 0.0
; Config1
mapType = bits, U08, 116, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
twoStroke = bits, U08, 116, [2:2], "Four-stroke", "Two-stroke"
injType = bits, U08, 116, [3:3], "Port", "Throttle Body"
nCylinders = bits, U08, 116, [4:7+1]
; Config2
cltType = bits, U08, 117, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType = bits, U08, 117, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors = bits, U08, 117, [4:7+1]
; Config3
engineType = bits, U08, 118, [0:0], "Even fire", "Odd fire"
egoType = bits, U08, 118, [1:1], "Narrow band", "Wide band"
algorithm = bits, U08, 118, [2:2], "Speed Density", "Alpha-N"
baroCorr = bits, U08, 118, [3:3], "Off", "On"
primePulse = scalar, U08, 119, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM = scalar, U08, 120, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT = scalar, U08, 121, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT = scalar, U08, 121, "°F", 1.0, -40.0, -40, 215, 0
#endif
egoSwitch = scalar, U08, 122, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM = scalar, U08, 123, "%", 1.0, 0.0, 0.0, 250.0, 0
;--------------------------------------------------
;Start Ignition table (Table 2)
;--------------------------------------------------
page = 2
advTable1 = array, U08, 0,[8x8], "deg", 1.0, 0.0, 0.0, 255.0, 0
rpmBins2 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
mapBins2 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins2 = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
#exit
#endif
TrigAng = scalar, U08, 80, "Deg", 4, 0, 0, 360, 0
FixAng = scalar, U08, 81, "Deg", 0.352, -28.4, -10, 80, 0
Trim = scalar, S08, 82, "Deg", 0.352, 0, -45, 45, 0
CrankAng = scalar, U08, 83, "Deg", 0.352, -28.4, -10, 80, 0
IgHold = scalar, U08, 84, "", 1, 0, 0, 100, 0
Trig_plus = bits, U08, 85[0:1], "0", "+22.5", "INVALID", "+45"
TrigCrank = bits, U08, 85[2:2], "Trigger Return", "Time Based"
IgInv = bits, U08, 85[3:3], "No", "Yes"
oddfire = bits, U08, 85[4:4], "No", "Yes"
IdleAdv = scalar, U08, 86, "Deg", 0.352,-28.4, -10, 80, 0
IdleAdvTPS = scalar, U08, 87, "ADC", 1, 0, 0, 255, 0
IdleAdvRPM = scalar, U08, 88, "RPM", 100, 0, 0, 1200, 0
#if CELSIUS
IdleAdvCLT = scalar, U08, 89, "C", 0.555, -72, -40, 102, 1
#else
IdleAdvCLT = scalar, U08, 89, "F", 1, -40, -40, 215, 0
#endif
IdleDelayTime = scalar, U08, 90, "sec", 1, 0, 0, 5, 0
StgCycles = scalar, U08, 91, "cycles", 1, 0, 0, 255, 0
;Dwell control
;running dwell variable railed to 8 - who needs more than 8ms?
dwellcont = bits, U08, 92, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 93, "ms", 0.1, 0, 0, 25, 1
dwellrun = scalar, U08, 94, "ms", 0.1, 0, 0, 8, 1
numteeth = scalar, U08, 95, "teeth", 1.0, 0.0, 0.0, 255, 0
onetwo = scalar, U08, 96, "teeth", 1.0, 0.0, 0.0, 255, 0
crankRPM = scalar, U08, 97, "rpm", 100.0, 0.0, 100, 1000, 0
tpsflood = scalar, U08, 98, "raw", 1.0, 0.0, 0.0, 255.0, 0
;-------------------------------------------------------------------------------
[Menu]
;----------------------------------------------------------------------------
; There are five pre-defined values that may be used to define your menus.
; The first four allow access to the "standard" dialog boxes, the last one
; merely draws a separator (horizontal line) in the menu.
;
; std_constants
; std_enrichments
; std_realtime
; std_warmup
;
; std_separator
;
; If you use any of the std_constants, std_enrichments or std_warmup
; editors, they may be optionally suffixed with a page number (only
; useful for multi-page code variants), which causes them to edit the
; specified page. If you leave off the page specifier, they edit logical
; page one as specified in the Constants section.
;
; There are four special menu names, which when used append to the standard
; menus of the same name instead of creating a new one. The menu names
; are "File", "Communications", "Tools" and "Help".
;
;----------------------------------------------------------------------------
menu = "&Settings"
subMenu = std_constants, "&Constants"
subMenu = std_enrichments, "&Enrichments"
subMenu = veTableTbl, "&VE Table", 0
subMenu = sparkTbl, "&Spark Table", 1
menu = "&Tuning"
subMenu = std_realtime, "&Realtime Display"
subMenu = std_warmup, "&Warmup Wizard"
subMenu = veTableMap, "&VE Table"
menu = "Spar&k"
subMenu = sparkSettings, "&Spark Settings"
subMenu = sparkTbl, "Spark Table"
;subMenu = IdleAdvance, "Idle Advance settings",
;subMenu = Knock, "Kn&ock System"
;subMenu = IatCltIg, "&IAT/Clt Related Ignition"
subMenu = dwellSettings, "Dwell settings"
;subMenu = wheelsim, "Stim for wheel"
;subMenu = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire }
;-------------------------------------------------------------------------------
[UserDefined]
; define a MegaTune compatible version here
; no need to for std_enrichments, it is built in.
[UserDefinedTS]
; Enhanced TunerStudio dialogs can be defined here
; MegaTune will over look this section
; These dialogs will over-ride those in the UserDefined Section
; User defined ar loaded first, then if one by the same name is defiend here,
; it will replace the MegaTune definition
; dialog = name, Title, Layout
;
; valid options for layout are xAxis, yAxis, border
; for an xAxis, each field added will be added from right to left
; A yAxis layout will add fields from top to bottom
; A border layout will expect an additional constraint to determine placement
; valid border constraints are north, South, East, West, Center
; all 5 do not need to be filled.
; The field name can be either a constant reference, or a reference to another
; dialog which will be added.
; dialogs can be nested and can be mixed with fields
dialog = accelEnrichments, "Acceleration Enrichment"
field = "TPSdot Threshold", tpsThresh
field = "Accel Time", taeTime
field = "Cold Accel Enrichment", taeColdA
field = "Cold Accel Mult", taeColdM
field = "Decel Fuel Amount", tdePct
field = "Acceleration Enrichment Bins (ms)"
field = "2 v/s", taeBins1
field = "4 v/s", taeBins2
field = "8 v/s", taeBins3
field = "15 v/s", taeBins4
dialog = crankPW, "Cranking Pulsewidths (ms)"
#if CELSIUS
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°C", crankCold
field = "Pulsewidth at 77°C", crankHot
#else
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°F", crankCold
field = "Pulsewidth at 170°F", crankHot
#endif
dialog = aseSettings, "Afterstart Enrichment"
field = "Enrichment %", asePct
field = "Number of Ignition Cycles", aseCount
dialog = egoSettings, "Exhaust Gas Oxygen"
field = "EGO Sensor Type", egoType
field = "EGO Switch Point (v)", egoSwitch
field = "Coolant Temp Activation", egoTemp
field = "Ignition Events Per Step", egoCount
field = "EGO Step", egoDelta
field = "EGO ± Limit", egoLimit
field = "EGO Active Above", egoRPM
dialog = westEnrichments, "", yAxis
panel = crankPW
panel = aseSettings
panel = egoSettings
dialog = std_enrichments, "Enrichments", border ; xAxis would work here too, but wanted to give a border example
topicHelp = "helpEnrichments"
panel = westEnrichments, West
panel = accelEnrichments, East
dialog = sparkSettings,"Spark Settings",3
topicHelp = Shelp3
field = "Wheel decoder base teeth", numteeth
field = "Missing teeth", onetwo
field = "Trigger Angle"
field = "Trigger Angle ", TrigAng
field = "Note: This number will be rounded to the nearest 4 degrees"
field = "This number represents the angle ATDC when the 1st"
field = "tooth after the gap passes the sensor."
field = ""
;field = "Cranking Timing", TrigCrank
;field = "Cranking advance Angle (see F1)", CrankAng, { TrigCrank + edis + dwellcont }
field = "Hold Ignition", IgHold
field = "Spark Output Inverted (see F1)", IgInv
field = ""
field = "Fixed Angle (-10 = use map)", FixAng
field = "Trim Angle", Trim
dialog = dwellSettings,"Dwell Settings",4
topicHelp = DwellHelp
field = "Dwell control", dwellcont
field = "Or:"
field = " Cranking dwell", dwellcrank, { dwellcont }
field = " Running dwell", dwellrun, { dwellcont }
;field = "Minimum discharge period", mindischg, { dwellcont }
field = ""
field = "#Note"
field = "these times are for 12V. Battery voltage correction"
field = "is applied. At higher voltages the time is reduced"
field = "and when low it is increased"
; -------------------------------------------------------------
; Help down here
help = helpEnrichments, "Enrichments Help"
text = "<strong>Priming Pulse</strong><br><br>"
text = "The duration in milliseconds of a priming pulse that is applied when the MS controller is powered up. If you dont want a priming pulse, set this field to zero. (Only available for version 2.0 and later of MegaSquirt controller code.)<br>"
text = "<br><strong>Cranking Pulsewidth</strong><br><br>"
text = "Cranking pulse width determines how long the injector will be open in milliseconds for each pulse while the engine is cranking (i.e., the RPM is below 300). The actual pulse width is determined by performing linear interpolation on the line described by the end points you enter for the "-40 degrees F" and "170 degrees F" values. For instance, if you enter 10.0 ms as the pulse width at -40 F and 2.0 ms at 170 F, the pulse width will be 6.0 ms when you start your engine at 65 F.<br>"
text = "Note: Cranking pulse occur at every ignition event, while running pulses only occur at the interval specified on the constants page; if you have a 4 cylinder engine and are taking the tachometer signal from the coil, then you will get four (4) cranking pulses per cycle and depending on settings one injection per cycle while running.<br>"
text = "The MS variables "CWU" and "CWH" hold the low temperature and high temperature pulse widths, respectively.<br>"
text = "<br><strong>Afterstart Enrichment</strong><br>"
text = "The afterstart enrichment is one that decays from its max value (specified in the "Enrichment (percent)" field) to zero in a linear fashion over a period defined in "Number of Ignition Cycles." If you specify 20% enrichment over 250 ignition cycles, then the first pulse is enriched by 20%, the 125th pulse is enriched by 10% and the 250th (and later) by zero percent (this assumes 1 event per cycle, or a 1 cylinder engine; divide by the number of ignition events per cycle to get the specific behavior for your motor).<br>"
text = "MS stores these values in the flash constants called "AWC" (Afterstart Warmup Count) and "AWEV" (Afterstart Warmup Enrichment Value).<br>"
text = "<br><strong>Exhaust Gas Oxygen Sensor Parameters</strong><br>"
text = "These parameters define the closed loop behavior of MS. You must have a narrow band O2 sensor hooked up for this mode to work in v.1.0 controller code; either a narrow band or wide band will work with v.2.0 of controller code. To disable closed loop operation altogether, set the EGO Step value to zero.<br>"
text = "<br><strong>EGO Sensor Type</strong><br>"
text = "Specify either a narrow band sensor or wide band sensor. Functionally this merely sets the direction sense of the sensor voltage. For narrow band sensors, the voltage rises as the mixture is richening and drops as the mixture becomes lean. The wide band setting corresponds to the opposite sense, i.e., voltage drops to indicate enrichment (this is how the DIY-WB operates, not necessarily all WB sensors!). (Available in v 2.0 controller code.)<br>"
text = "<br><strong>EGO Switch Point (v)</strong><br>"
text = "This is the switching point voltage that indicates stoichiometric combustion (approximately 14.7:1 with gasoline). For narrow band sensors this is 0.5 v*; for the DIY-WB wideband sensor it is 2.5 v (for other wideband sensors this voltage may be quite different). (This value is only active in v 2.0 controller code.)<br>"
text = "*This is true for zirconia NB sensors, which are used almost exclusively in modern vehicles. The titania NB sensor has a different voltage range (1-5 v), but is rarely used.<br>"
text = "<br><strong>Coolant Temp Activation (°F)</strong><br>"
text = "This is the temperature below which closed loop operation is disabled. If this value is too low, then closed loop will try to lean out the warmup enrichments and you may experience rough running. Typical value is 160 F and should somewhat above the point at which warmup enrichment stops (see the Warmup Enrichment Bins settings and find the lowest on which contains 100).<br>"
text = "The MS value "EGOTEMP" stores this quantity.<br>"
text = "<br><strong>Ignition Events Per Step</strong><br>"
text = "This value determines the rate at which the closed loop algorithm applies correction. The default value of 32, when used on a four cylinder engine with four ignition events per cycle, tells MS to wait for 8 cycles before changing the current correction factor.<br>"
text = "<br><strong>EGO Step (percent)</strong><br>"
text = "Once the closed loop algorithm has decided to change the correction factor, it adds or subtracts this percentage from the current value. This should move slowly to avoid unstable response, so make sure it is small, 1% being the default.<br>"
text = "<br><strong>EGO Limit (%)</strong><br>"
text = "Closed loop operation should not be substituted for proper tuning! This value limits the correction that can be made by the closed loop algorithm, the default of 10% indicates the correction factor cannot go outside the range 90-110%.<br>"
text = "<br><strong>EGO Active Above RPM</strong><br>"
text = "This value specifies the lower limit above which closed loop operation occurs. Typically, your engine will idle best when it is richer than stoich, so turning off closed loop for low RPMs allows this to happen. The default value for the RPM limit is 1200. (Available only in v 2.0 MS, older versions have a fixed 1200 RPM value in the controller code.)<br>"
text = "<br><strong>Warmup Enrichment Bins</strong><br>"
text = "Warmup enrichment is based on coolant temperature. Since warmup enrichment requirements are usually non-linear, several bins are provided to specify different rates in different temperature domains.<br>"
text = "Place values in the "-40" through "160 degrees F" fields, typically running from about 120 at -40 F to 100 at 100 F; make sure the values are all 100 or greater.<br>"
text = "The MS array "WWU" contains these enrichment values.<br>"
text = "<br><strong>Acceleration Enrichment</strong><br>"
text = "Acceleration enrichment (AE) occurs when you open the throttle "rapidly" to avoid bogging the engine. In v.1.01 MS, this is done solely based upon the rate of change in the throttle position sensor (also called TPSDOT).<br>"
text = "<br><strong>TPSDOT Thresh</strong><br>"
text = "This is the threshold in v/sec below which no acceleration enrichment will occur (you can move the throttle from idle to full open without acceleration enrichment, if you open it slowly enough). Depends grossly upon the range of your TPS, a typical value might be 1.2 v/sec.<br>"
text = "<strong>Tuning Note:</strong> While you are tuning the VE table you should set this threshold artificially high (maybe 40.0) to disable acceleration enrichment completely. After the VE table is fairly well-defined, set this back to 1.2 and begin tuning AE.<br>"
text = "MS stores this value in the "TPSTHRESH" variable.<br>"
text = "<br><strong>Accel Time (sec)</strong><br>"
text = "This value indicates how long the acceleration enrichment "squirt" will last. Typical values are around 1.0 second. MS stores this value in the variable "TPSACLK."<br>"
text = "<br><strong>Cold Accel Enrichment (ms)</strong><br>"
text = "The acceleration enrichment pulse also varies depending upon coolant temperature. The value specified here is the pulse width added to the value from the bin calculations at -40 F. The Cold Acceleration Enrichment amount is linearly interpolated from full amount at -40 F down to zero at 165 F. A typical value might be 2.0 ms.<br>"
text = "This value is stored in the "TPSACOLD" variable in MS.<br>"
text = "<br><strong>Cold Accel Multiplier (%)</strong><br>"
text = "Another means for increasing the amount of fuel delivered by the acceleration enrichment pulse is supplied by this value; it is likewise interpolated from the full specified amount at 40F down to zero at 165 F. Before the Cold Acceleration Enrichment value is added to the base acceleration enrichment pulsewidth, it is multiplied by this value.<br>"
text = "Total AE = Base AE * CAM + CAE<br>"
text = "The difference between the two types of AE cold modify can be easily seen with a few examples:<br>"
text = "1) Assume we have a calculated AE pulse of 5.0 ms. Say our coolant temperature is 40 F, giving a CAE pulse of 2.0 ms and CAM is turned off (100%). The result is 5.0+2.0 = 7.0 ms.<br>"
text = "2) Assume same base AE and temperature, but now we turn off CAE (0.0 ms) and set CAM to give 140%. The result is the same, we get 5.0*1.4 = 7.0 ms.<br>"
text = "3) Take the first case, but hit the accelerator faster, giving 8.0 ms base AE pulse. We now have a result of 8.0+2.0 = 10.0 ms.<br>"
text = "4) Take case 2, but with the higher base AE pulse, giving 8.0*1.4 = 11.2 ms.<br>"
text = "The bottom line is that the CAE modifier is constant and independent of the base pulse, where on the other hand, the CAM modifier has a proportional effect on the AE, bigger base pulse means bigger result.<br>"
text = "This value is stored in the 'ACMULT' variable in MS.<br>"
text = "<br><strong>Decel Fuel Amount (%)</strong><br>"
text = "When you let off the throttle rapidly (that is the closing rate exceeds TPSDOT Thresh) and the engine is turning faster than 1500 RPM, then deceleration fuel cutoff is performed by MS. Deceleration fuel amount is multiplied by the "normal" pulse width, that is, if the calculated pulse is 12.0 ms and you have 20% decel amount, then the resulting pulse width is 2.4 ms. A value of 100% causes the fuel to remain at its calculated value, and can cure bucking on deceleration in vehicles with manual transmissions; those with automatic transmissions may benefit in fuel economy by using values below 100%.<br>"
text = "The MS variable "TPSDQ" holds this value as a percentage. <br>"
text = "<br><strong>Acceleration Enrichment Bins (ms)</strong><br>"
text = "These bins specify the actual enrichment in terms of pulse width. They are linearly interpolated to determine a value that is ultimately added to the computed pulse width.<br>"
text = "The array of values is called "TPSAQ" as stored in MS."
[TableEditor]
; table_id, map3d_id, "title", page
table = veTableTbl, veTableMap, "VE Table", 1
; constant, variable
xBins = rpmBins, rpm
#if SPEED_DENSITY
yBins = mapBins, map
#else
yBins = tpsBins, tps
#endif
zBins = veTable
gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = sparkTbl, sparkMap, "Ignition Advance Table", 2
xBins = rpmBins2, rpm
#if SPEED_DENSITY
yBins = mapBins2, map
#else ALPHA_N
yBins = tpsBins2, tps
#endif
zBins = advTable1
gridHeight = 3.0
upDownLabel = "ADVANCED", "RETARDED"
;-------------------------------------------------------------------------------
[GaugeConfigurations]
;-------------------------------------------------------------------------------
; Notes on some of the gauges.
;
; The accelEnrichGauge is now a composite of both acceleration enrichment
; and deceleration enleanment numbers. See the definition of the variable
; accDecEnrich in the OutputChannels section.
;
; David Hooke contributed the lambda gauge and associated transfer
; function files.
;
; "The lambda gauge is the best way (my opinion) to report data from a
; wide band EGO gauge, it standardizes the output irrespective of fuel
; or mix of fuels, so you needn't do any brainwork to know if your 75%
; gasoline and 25% methanol is rich at 10:1 or not.
;
; "Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu)."
;-------------------------------------------------------------------------------
; Define a gauge's characteristics here, then go to a specific layout
; block (Tuning or FrontPage) and use the name you've defined here to
; display that gauge in a particular position.
;
; Name = Case-sensitive, user-defined name for this gauge configuration.
; Var = Case-sensitive name of variable to be displayed, see the
; OutputChannels block in this file for possible values.
; Title = Title displayed at the top of the gauge.
; Units = Units displayed below value on gauge.
; Lo = Lower scale limit of gauge.
; Hi = Upper scale limit of gauge.
; LoD = Lower limit at which danger color is used for gauge background.
; LoW = Lower limit at which warning color is used.
; HiW = Upper limit at which warning color is used.
; HiD = Upper limit at which danger color is used.
; vd = Decimal places in displayed value
; ld = Label decimal places for display of Lo and Hi, above.
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
baroADCGauge = baroADC, "Barometer ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
mapADCGauge = mapADC, "MAP ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
matADCGauge = matADC, "MAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
cltADCGauge = cltADC, "CLT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
batADCGauge = batADC, "BAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#if NARROW_BAND_EGO
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
#else
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
#endif
lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0
afrGauge = afr, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0
dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 85, 90, 1, 1
egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0
gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1
tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0
throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0
veBucketGauge = veTuneValue, "VE Value", "%", 0, 120, -1, -1, 999, 999, 0, 0
veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0
voltMeter = batteryVoltage,"Battery Voltage", "volts", 7, 21, 8, 9, 15, 16, 2, 2
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 120, -15, 0, 95, 105, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0
#else
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 250, 0, 30, 200, 220, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 215, 0, 30, 200, 210, 0, 0
#endif
advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0,
;-------------------------------------------------------------------------------
[FrontPage]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = tachometer
#if SPEED_DENSITY
gauge2 = throttleGauge
#else
gauge2 = tpsGauge
#endif
gauge3 = pulseWidthGauge
gauge4 = dutyCycleGauge
gauge5 = mapGauge
gauge6 = matGauge
gauge7 = cltGauge
gauge8 = gammaEnrichGauge
;----------------------------------------------------------------------------
; Indicators
; expr off-label on-label, off-bg, off-fg, on-bg, on-fg
indicator = { ready }, "Not Ready", "Ready", white, black, green, black
indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black
indicator = { startw }, "ASE OFF", "ASE", white, black, green, black
indicator = { warmup }, "WUE OFF", "WUE", white, black, green, black
indicator = { tpsaccaen }, "TPS Accel", "TPS Accel", white, black, green, black
indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black
indicator = { tpsaccden }, "TPS Decel", "TPS Decel", white, black, green, black
indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black
indicator = { tps > floodClear }, "", "FLOOD CLEAR", white, black, red, black
;-------------------------------------------------------------------------------
[RunTime]
barHysteresis = 2.5 ; Seconds
#if CELSIUS
coolantBar = -40, 100
matBar = -40, 100
#else
coolantBar = -40, 215
matBar = -40, 215
#endif
batteryBar = 6, 15
dutyCycleBar = 0, 100
#if NARROW_BAND_EGO
egoBar = 0, 1.0
#else
egoBar = 0, 5.0
#endif
gammaEBar = 0, 200
mapBar = 0, 255
pulseWidthBar = 0, 25.5
rpmBar = 0, 8000
throttleBar = 0, 100
egoCorrBar = 0, 200
baroCorrBar = 0, 200
warmupCorrBar = 0, 200
airdenCorrBar = 0, 200
veCorrBar = 0, 200
accCorrBar = 0, 100
;-------------------------------------------------------------------------------
[Tuning]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
font = "Courier", 14
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
;----------------------------------------------------------------------------
; Notes on tuning screen gauges:
; pageButtons = Labels for radio buttons at bottom of tuning dialog.
;
; Gauge 2 previously switched automatically to be tpsGauge when alpha-n
; was enabled, but you need to do it manually now.
;----------------------------------------------------------------------------
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&EGO", "&WUE", "PW&1", "PW&2"
gauge1 = tachometer, tachometer, tachometer, tachometer
gauge2 = mapGauge, mapGauge, mapGauge, mapGauge
gauge3 = egoGauge, egoGauge, egoGauge, egoGauge
gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidthGauge, pulseWidthGauge
gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge
gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycleGauge, dutyCycleGauge
;-------------------------------------------------------------------------------
[OutputChannels]
; The number of bytes MegaTune should expect as a result
; of sending the "A" command to MegaSquirt is determined
; by the value of ochBlockSize, so be very careful when
; you change it.
deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "A"
ochBlockSize = 23
secl = scalar, U08, 0, "sec", 1.000, 0.000
squirt = scalar, U08, 1, "bits", 1.000, 0.000
engine = scalar, U08, 2, "bits", 1.000, 0.000
ready = bits, U08, 2, [0:0]
crank = bits, U08, 2, [1:1]
startw = bits, U08, 2, [2:2]
warmup = bits, U08, 2, [3:3]
tpsaccaen = bits, U08, 2, [4:4]
tpsaccden = bits, U08, 2, [5:5]
mapaccaen = bits, U08, 2, [6:6]
mapaccden = bits, U08, 2, [7:7]
baroADC = scalar, U08, 3, "ADC", 1.000, 0.000
mapADC = scalar, U08, 4, "ADC", 1.000, 0.000
matADC = scalar, U08, 5, "ADC", 1.000, 0.000
cltADC = scalar, U08, 6, "ADC", 1.000, 0.000
tps = scalar, U08, 7, "%", 1.000, 0.000
batADC = scalar, U08, 8, "ADC", 1.000, 0.000
egoADC = scalar, U08, 9, "ADC", 1.000, 0.000
egoCorrection = scalar, U08, 10, "%", 1.000, 0.000
airCorrection = scalar, U08, 11, "%", 1.000, 0.000
warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000
rpm100 = scalar, U08, 13, "r100", 1.000, 0.000
pulseWidth = scalar, U08, 14, "ms", 0.100, 0.000
accelEnrich = scalar, U08, 15, "%", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr = scalar, U08, 18, "%", 1.000, 0.000
blank1 = scalar, U08, 19 ; Raw inputs, as they come from MS.
blank2 = scalar, U08, 20
blank3 = scalar, U08, 21
advance = scalar, U08, 22, "deg", 1.000, 0.000
; Computed output channels. See "megatuneExamples.ini" for all the
; pre-defined variables, search for "???" and you'll see them.
accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct : 100) }
batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage.
coolant = { tempCvt(table(cltADC, "thermfactor.inc")-40) } ; Coolant sensor temperature in user units.
egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage.
mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units.
rpm = { rpm100*100 } ; True RPM.
time = { timeNow } ; "timeNow" is a parameterless built-in function.
afrtarget = { 0 }
#include "lambdaSensors.ini"
#if MPX4250
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa.
#else
barometer = { table(baroADC, "kpafactor4115.inc") }
map = { table(mapADC, "kpafactor4115.inc") }
#endif
; throttle = { table(tps, "throttlefactor.inc") }
throttle = { tps }, "%"
idleDC = { (coolant < fastIdleT) * 100 }
altDiv = { alternate ? 2 : 1 }
cycleTime = { 60000.0 / rpm * (2.0-twoStroke) }
nSquirts = { nCylinders/divider }
dutyCycle = { 100.0*nSquirts/altDiv*pulseWidth/cycleTime }
;-------------------------------------------------------------------------------
[Datalog]
; Full datalog.
;
; Default user-defined log emulates the full datalog.
;
; The entries are saved in the datalog file in the order in
; which they appear in the list below.
;
; Channel - Case sensitive name of output channel to be logged.
; Label - String written to header line of log. Be careful
; about changing these, as programs like MSLVV and
; MSTweak key off specific column names.
; Type - Data type of output, converted before writing.
; Format - C-style output format of data.
;
; Channel Label Type Format
; -------------- ---------- ----- ------
entry = time, "Time", float, "%.3f"
entry = secl, "SecL", int, "%d"
entry = rpm100, "RPM", int, "%d"
entry = map, "MAP", int, "%d"
entry = throttle, "TP", int, "%d"
entry = egoVoltage, "O2", float, "%.3f"
entry = mat, "MAT", float, "%.1f"
entry = coolant, "CLT", float, "%.1f"
entry = engine, "Engine", int, "%d"
entry = egoCorrection, "Gego", int, "%d"
entry = airCorrection, "Gair", int, "%d"
entry = warmupEnrich, "Gwarm", int, "%d"
entry = baroCorrection, "Gbaro", int, "%d"
entry = gammaEnrich, "Gammae", int, "%d"
entry = accDecEnrich, "TPSacc", int, "%d"
entry = veCurr, "Gve", int, "%d"
entry = pulseWidth, "PW", float, "%.1f"
entry = blank2, "Gve2", int, "%d"
entry = pulseWidth, "PW2", float, "%.1f"
entry = dutyCycle, "DutyCycle1", float, "%.1f"
entry = dutyCycle, "DutyCycle2", float, "%.1f"
entry = blank1, "UserData1", int, "%d"
entry = blank2, "UserData2", int, "%d"
entry = blank3, "UserData3", int, "%d"

View File

@ -1,863 +0,0 @@
;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "Q" ; B&G embedded code version 2.0/2.98x/3.00
signature = 20 ; Versions above return a single byte, 20T.
;-------------------------------------------------------------------------------
[Constants]
;----------------------------------------------------------------------------
; Constants Definition
; --------------------
;
; Scalar Values
; -------------
; The scaling and translation values are used as follows:
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
;
; I've got no good way to handle a few of these things yet.
;
; Temperatures are fine, check out the Fielding IAC example (fastIdleT).
;
; The TPS stuff is a problem, because we have to modify the ini file for
; each TPS installation and again whenever we move the TPS... I figured
; out a moderately palatable solution to presenting the frequency
; divider in the boost control values, turn it into a bit field and then
; enumerate the resulting frequencies.
;
; Array Values
; ------------
; Arrays are specified just like scalars, except that they have a "shape"
; entry in the fourth parameter. The shape allows you to define lists or
; tables, for example [8] defines a list with eight values and [2x4] defines
; a table with eight values (two rows and four columns). Tables may be
; stored in either "X-" or "Y-order." X-order means that memory is layed
; out like.
;
; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]...
;
; Y-order would be
;
; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]...
;
; To use the TableEditor, you must define two lists and a table, and
; the lengths of the lists must correspond to the shape of the table.
;
; Bit Fields
; ----------
; Bits are numbered 0-7, the rightmost being bit zero. The basic
; data word that stores bit fields must be unsigned.
;
; You need NOT supply the correct number of labels matching the
; number of bits you've specified (one bit requires 2 values, two
; bits requires 4 values and so on). If you neglect to supply enough
; labels, they will be synthesized using the sequence "1", "2" and so
; on based upon their position in the sequence (the cltType and matType
; will end up with identical lists).
;
; If you specify a label as "INVALID" (all upper case), then it will
; not be displayed in the combo box, so you can leave out values that
; make no sense.
;
;----------------------------------------------------------------------------
endianness = big
nPages = 2
burnCommand = "B"
; pageSize = 125
pageSize = 125, 125
pageActivationDelay = 10
; pageActivate = ""
pageActivate = "P\001", "P\002"
pageReadCommand = "V", "V"
pageValueWrite = "W%o%v", "W%o%v"
; pageChunkWrite = "" ; No chunk write for standard MS.
page = 1
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
veTable = array, U08, 0, [8x8], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins = array, U08, 64, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0
#if SPEED_DENSITY
mapBins = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
;#exit
#endif
crankCold = scalar, U08, 80, "ms", 0.1, 0.0, 0.0, 25.5, 1
crankHot = scalar, U08, 81, "ms", 0.1, 0.0, 0.0, 25.5, 1
asePct = scalar, U08, 82, "%", 1.0, 0.0, 0.0, 95.0, 0
aseCount = scalar, U08, 83, "", 1.0, 0.0, 0.0, 254.0, 0
wueBins = array, U08, 84, [ 10], "%", 1.0, 0.0, 100.0, 255.0, 0
taeBins = array, U08, 94, [ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins1 = scalar, U08, 94, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins2 = scalar, U08, 95, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins3 = scalar, U08, 96, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins4 = scalar, U08, 97, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA = scalar, U08, 98, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh = scalar, U08, 99, "v/s",0.1953125, 0.0, 0.2, 49.8, 3
taeTime = scalar, U08, 100, "ms", 0.1, 0.0, 0.0, 25.5, 1
tdePct = scalar, U08, 101, "%", 1.0, 0.0, 0.0, 255.0, 0
#if CELSIUS
egoTemp = scalar, U08, 102, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp = scalar, U08, 102, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount = scalar, U08, 103, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta = scalar, U08, 104, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit = scalar, U08, 105, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel = scalar, U08, 106, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider = scalar, U08, 107, "", 1.0, 0.0
alternate = bits, U08, 108, [0:0], "Simultaneous", "Alternating"
injOpen = scalar, U08, 109, "ms", 0.1, 0.0, 0.1, 25.5, 1
injOCfuel = scalar, U08, 110, "ms", 0.1, 0.0, 0.0, 0.0, 0
injPwmP = scalar, U08, 111, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT = scalar, U08, 112, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac = scalar, U08, 113, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk = scalar, U16, 114, "", 1.0, 0.0
; Config1
mapType = bits, U08, 116, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
twoStroke = bits, U08, 116, [2:2], "Four-stroke", "Two-stroke"
injType = bits, U08, 116, [3:3], "Port", "Throttle Body"
nCylinders = bits, U08, 116, [4:7+1]
; Config2
cltType = bits, U08, 117, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType = bits, U08, 117, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors = bits, U08, 117, [4:7+1]
; Config3
engineType = bits, U08, 118, [0:0], "Even fire", "Odd fire"
egoType = bits, U08, 118, [1:1], "Narrow band", "Wide band"
algorithm = bits, U08, 118, [2:2], "Speed Density", "Alpha-N"
baroCorr = bits, U08, 118, [3:3], "Off", "On"
primePulse = scalar, U08, 119, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM = scalar, U08, 120, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT = scalar, U08, 121, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT = scalar, U08, 121, "°F", 1.0, -40.0, -40, 215, 0
#endif
egoSwitch = scalar, U08, 122, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM = scalar, U08, 123, "%", 1.0, 0.0, 0.0, 250.0, 0
;--------------------------------------------------
;Start Ignition table (Table 2)
;--------------------------------------------------
page = 2
advTable1 = array, U08, 0,[8x8], "deg", 1.0, 0.0, 0.0, 255.0, 0
rpmBins2 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
mapBins2 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins2 = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
#exit
#endif
TrigAng = scalar, U08, 80, "Deg", 4, 0, 0, 360, 0
FixAng = scalar, U08, 81, "Deg", 0.352, -28.4, -10, 80, 0
Trim = scalar, S08, 82, "Deg", 0.352, 0, -45, 45, 0
CrankAng = scalar, U08, 83, "Deg", 0.352, -28.4, -10, 80, 0
IgHold = scalar, U08, 84, "", 1, 0, 0, 100, 0
Trig_plus = bits, U08, 85[0:1], "0", "+22.5", "INVALID", "+45"
TrigCrank = bits, U08, 85[2:2], "Trigger Return", "Time Based"
IgInv = bits, U08, 85[3:3], "No", "Yes"
oddfire = bits, U08, 85[4:4], "No", "Yes"
IdleAdv = scalar, U08, 86, "Deg", 0.352,-28.4, -10, 80, 0
IdleAdvTPS = scalar, U08, 87, "ADC", 1, 0, 0, 255, 0
IdleAdvRPM = scalar, U08, 88, "RPM", 100, 0, 0, 1200, 0
#if CELSIUS
IdleAdvCLT = scalar, U08, 89, "C", 0.555, -72, -40, 102, 1
#else
IdleAdvCLT = scalar, U08, 89, "F", 1, -40, -40, 215, 0
#endif
IdleDelayTime = scalar, U08, 90, "sec", 1, 0, 0, 5, 0
StgCycles = scalar, U08, 91, "cycles", 1, 0, 0, 255, 0
;Dwell control
;running dwell variable railed to 8 - who needs more than 8ms?
dwellcont = bits, U08, 92, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 93, "ms", 0.1, 0, 0, 25, 1
dwellrun = scalar, U08, 94, "ms", 0.1, 0, 0, 8, 1
numteeth = scalar, U08, 95, "teeth", 1.0, 0.0, 0.0, 255, 0
onetwo = scalar, U08, 96, "teeth", 1.0, 0.0, 0.0, 255, 0
crankRPM = scalar, U08, 97, "rpm", 100.0, 0.0, 100, 1000, 0
tpsflood = scalar, U08, 98, "raw", 1.0, 0.0, 0.0, 255.0, 0
;Rev Limits
SoftRevLim = scalar, U08, 99, "rpm", 100.0, 0.0, 100, 25500, 0
SoftLimRetard = scalar, U08, 100, "deg", 0.352, -28.4, -10, 80, 0
SoftLimMax = scalar, U08, 101, "s", 0.1, 0.0, 0.0, 25.5, 1
HardRevLim = scalar, U08, 102, "rpm", 100, 0.0, 100, 25500, 0
;-------------------------------------------------------------------------------
[Menu]
;----------------------------------------------------------------------------
; There are five pre-defined values that may be used to define your menus.
; The first four allow access to the "standard" dialog boxes, the last one
; merely draws a separator (horizontal line) in the menu.
;
; std_constants
; std_enrichments
; std_realtime
; std_warmup
;
; std_separator
;
; If you use any of the std_constants, std_enrichments or std_warmup
; editors, they may be optionally suffixed with a page number (only
; useful for multi-page code variants), which causes them to edit the
; specified page. If you leave off the page specifier, they edit logical
; page one as specified in the Constants section.
;
; There are four special menu names, which when used append to the standard
; menus of the same name instead of creating a new one. The menu names
; are "File", "Communications", "Tools" and "Help".
;
;----------------------------------------------------------------------------
menu = "&Settings"
subMenu = std_constants, "&Constants"
subMenu = std_enrichments, "&Enrichments"
menu = "&Tuning"
subMenu = std_realtime, "&Realtime Display"
subMenu = std_warmup, "&Warmup Enrichment"
subMenu = accelEnrichments, "&Acceleration Wizard"
subMenu = veTableTbl, "&VE Table", 0
subMenu = sparkTbl, "&Spark Table", 1
subMenu = RevLimiterS, "Rev Limits", 2
menu = "&Spark"
subMenu = sparkSettings, "&Spark Settings"
subMenu = sparkTbl, "Spark Table", 1
;subMenu = IdleAdvance, "Idle Advance settings",
;subMenu = Knock, "Kn&ock System"
;subMenu = IatCltIg, "&IAT/Clt Related Ignition"
subMenu = dwellSettings, "Dwell settings"
;subMenu = wheelsim, "Stim for wheel"
;subMenu = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire }
;-------------------------------------------------------------------------------
[UserDefined]
; define a MegaTune compatible version here
; no need to for std_enrichments, it is built in.
[UserDefinedTS]
; Enhanced TunerStudio dialogs can be defined here
; MegaTune will over look this section
; These dialogs will over-ride those in the UserDefined Section
; User defined ar loaded first, then if one by the same name is defiend here,
; it will replace the MegaTune definition
; dialog = name, Title, Layout
;
; valid options for layout are xAxis, yAxis, border
; for an xAxis, each field added will be added from right to left
; A yAxis layout will add fields from top to bottom
; A border layout will expect an additional constraint to determine placement
; valid border constraints are north, South, East, West, Center
; all 5 do not need to be filled.
; The field name can be either a constant reference, or a reference to another
; dialog which will be added.
; dialogs can be nested and can be mixed with fields
dialog = accelEnrichments, "Acceleration Enrichment"
field = "TPSdot Threshold", tpsThresh
field = "Accel Time", taeTime
field = "Cold Accel Enrichment", taeColdA
field = "Cold Accel Mult", taeColdM
field = "Decel Fuel Amount", tdePct
field = "Acceleration Enrichment Bins (ms)"
field = "2 v/s", taeBins1
field = "4 v/s", taeBins2
field = "8 v/s", taeBins3
field = "15 v/s", taeBins4
;time based AE
dialog = time_ae_south, ""
field = "Accel TPSdot threshold", tpsThresh
field = "Decel Fuel Amount", tdePct
field = "Cold Accel Adder", taeColdA
field = "Cold Accel Multiplier", taeColdM
field = "Accel Enrich Down-scaling With RPM"
;field = "Full Accel Below:", ae_lorpm, { !feature7_aeevents }
;field = "Zero Accel Above:", ae_hirpm, { !feature7_aeevents }
dialog = time_ae_north, "", xAxis
panel = time_accel_tpsdot_curve, East, {tpsProportion > 0}
dialog = AEtime_settings, "Time-based Accel Enrichment", yAxis
panel = time_ae_north
panel = time_ae_south
dialog = crankPW, "Cranking Pulsewidths (ms)"
#if CELSIUS
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°C", crankCold
field = "Pulsewidth at 77°C", crankHot
#else
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°F", crankCold
field = "Pulsewidth at 170°F", crankHot
#endif
dialog = aseSettings, "Afterstart Enrichment"
field = "Enrichment %", asePct
field = "Number of Ignition Cycles", aseCount
dialog = nestedwarmup_curve, "Warmup Enrichment percent multiplier"
panel = warmup_curve
dialog = egoSettings, "Exhaust Gas Oxygen"
field = "EGO Sensor Type", egoType
field = "EGO Switch Point (v)", egoSwitch
field = "Coolant Temp Activation", egoTemp
field = "Ignition Events Per Step", egoCount
field = "EGO Step", egoDelta
field = "EGO ± Limit", egoLimit
field = "EGO Active Above", egoRPM
dialog = westEnrichments, "", yAxis
panel = crankPW
panel = aseSettings
panel = egoSettings
dialog = std_enrichments, "Enrichments", border ; xAxis would work here too, but wanted to give a border example
topicHelp = "helpEnrichments"
panel = westEnrichments, West
panel = accelEnrichments, East
dialog = sparkSettings,"Spark Settings",3
topicHelp = Shelp3
field = "Wheel decoder base teeth", numteeth
field = "Missing teeth", onetwo
field = "Trigger Angle"
field = "Trigger Angle ", TrigAng
field = "Note: This number will be rounded to the nearest 4 degrees"
field = "This number represents the angle ATDC when the 1st"
field = "tooth after the gap passes the sensor."
field = ""
;field = "Cranking Timing", TrigCrank
;field = "Cranking advance Angle (see F1)", CrankAng, { TrigCrank + edis + dwellcont }
field = "Hold Ignition", IgHold
field = "Spark Output Inverted (see F1)", IgInv
field = ""
field = "Fixed Angle (-10 = use map)", FixAng
field = "Trim Angle", Trim
dialog = dwellSettings,"Dwell Settings",4
topicHelp = DwellHelp
field = "Dwell control", dwellcont
field = "Or:"
field = " Cranking dwell", dwellcrank, { dwellcont }
field = " Running dwell", dwellrun, { dwellcont }
;field = "Minimum discharge period", mindischg, { dwellcont }
field = ""
field = "#Note"
field = "these times are for 12V. Battery voltage correction"
field = "is applied. At higher voltages the time is reduced"
field = "and when low it is increased"
dialog = RevLimiterS, "Rev Limiter", 4
topicHelp = Fhelp7
field = "Rev Limiter"
field = "Soft rev limit", SoftRevLim
field = "Soft limit absolute timing", SoftLimRetard
field = "Soft limit max time", SoftLimMax
field = "Hard Rev limit", HardRevLim
; [CurveEditor]
;time-based accel enrichment
curve = time_accel_tpsdot_curve, "TPS based AE"
columnLabel = "TPSdot", "Added"
xAxis = 0, 1200, 6
yAxis = 0, 48, 4
xBins = taeRates, TPSdot
yBins = taeBins
; curve = warmup_curve, "Warmup Enrichment Curve"
; columnLabel = "Coolant", "WUE %"
; xAxis = -40, {clthighlim}, 9
; yAxis = 0, 500, 6
; xBins = tempTable, coolant
; yBins = wueBins
; gauge = cltGauge
; -------------------------------------------------------------
; Help down here
help = helpEnrichments, "Enrichments Help"
text = "<strong>Priming Pulse</strong><br><br>"
text = "The duration in milliseconds of a priming pulse that is applied when the MS controller is powered up. If you dont want a priming pulse, set this field to zero. (Only available for version 2.0 and later of MegaSquirt controller code.)<br>"
text = "<br><strong>Cranking Pulsewidth</strong><br><br>"
text = "Cranking pulse width determines how long the injector will be open in milliseconds for each pulse while the engine is cranking (i.e., the RPM is below 300). The actual pulse width is determined by performing linear interpolation on the line described by the end points you enter for the "-40 degrees F" and "170 degrees F" values. For instance, if you enter 10.0 ms as the pulse width at -40 F and 2.0 ms at 170 F, the pulse width will be 6.0 ms when you start your engine at 65 F.<br>"
text = "Note: Cranking pulse occur at every ignition event, while running pulses only occur at the interval specified on the constants page; if you have a 4 cylinder engine and are taking the tachometer signal from the coil, then you will get four (4) cranking pulses per cycle and depending on settings one injection per cycle while running.<br>"
text = "The MS variables "CWU" and "CWH" hold the low temperature and high temperature pulse widths, respectively.<br>"
text = "<br><strong>Afterstart Enrichment</strong><br>"
text = "The afterstart enrichment is one that decays from its max value (specified in the "Enrichment (percent)" field) to zero in a linear fashion over a period defined in "Number of Ignition Cycles." If you specify 20% enrichment over 250 ignition cycles, then the first pulse is enriched by 20%, the 125th pulse is enriched by 10% and the 250th (and later) by zero percent (this assumes 1 event per cycle, or a 1 cylinder engine; divide by the number of ignition events per cycle to get the specific behavior for your motor).<br>"
text = "MS stores these values in the flash constants called "AWC" (Afterstart Warmup Count) and "AWEV" (Afterstart Warmup Enrichment Value).<br>"
text = "<br><strong>Exhaust Gas Oxygen Sensor Parameters</strong><br>"
text = "These parameters define the closed loop behavior of MS. You must have a narrow band O2 sensor hooked up for this mode to work in v.1.0 controller code; either a narrow band or wide band will work with v.2.0 of controller code. To disable closed loop operation altogether, set the EGO Step value to zero.<br>"
text = "<br><strong>EGO Sensor Type</strong><br>"
text = "Specify either a narrow band sensor or wide band sensor. Functionally this merely sets the direction sense of the sensor voltage. For narrow band sensors, the voltage rises as the mixture is richening and drops as the mixture becomes lean. The wide band setting corresponds to the opposite sense, i.e., voltage drops to indicate enrichment (this is how the DIY-WB operates, not necessarily all WB sensors!). (Available in v 2.0 controller code.)<br>"
text = "<br><strong>EGO Switch Point (v)</strong><br>"
text = "This is the switching point voltage that indicates stoichiometric combustion (approximately 14.7:1 with gasoline). For narrow band sensors this is 0.5 v*; for the DIY-WB wideband sensor it is 2.5 v (for other wideband sensors this voltage may be quite different). (This value is only active in v 2.0 controller code.)<br>"
text = "*This is true for zirconia NB sensors, which are used almost exclusively in modern vehicles. The titania NB sensor has a different voltage range (1-5 v), but is rarely used.<br>"
text = "<br><strong>Coolant Temp Activation (°F)</strong><br>"
text = "This is the temperature below which closed loop operation is disabled. If this value is too low, then closed loop will try to lean out the warmup enrichments and you may experience rough running. Typical value is 160 F and should somewhat above the point at which warmup enrichment stops (see the Warmup Enrichment Bins settings and find the lowest on which contains 100).<br>"
text = "The MS value "EGOTEMP" stores this quantity.<br>"
text = "<br><strong>Ignition Events Per Step</strong><br>"
text = "This value determines the rate at which the closed loop algorithm applies correction. The default value of 32, when used on a four cylinder engine with four ignition events per cycle, tells MS to wait for 8 cycles before changing the current correction factor.<br>"
text = "<br><strong>EGO Step (percent)</strong><br>"
text = "Once the closed loop algorithm has decided to change the correction factor, it adds or subtracts this percentage from the current value. This should move slowly to avoid unstable response, so make sure it is small, 1% being the default.<br>"
text = "<br><strong>EGO Limit (%)</strong><br>"
text = "Closed loop operation should not be substituted for proper tuning! This value limits the correction that can be made by the closed loop algorithm, the default of 10% indicates the correction factor cannot go outside the range 90-110%.<br>"
text = "<br><strong>EGO Active Above RPM</strong><br>"
text = "This value specifies the lower limit above which closed loop operation occurs. Typically, your engine will idle best when it is richer than stoich, so turning off closed loop for low RPMs allows this to happen. The default value for the RPM limit is 1200. (Available only in v 2.0 MS, older versions have a fixed 1200 RPM value in the controller code.)<br>"
text = "<br><strong>Warmup Enrichment Bins</strong><br>"
text = "Warmup enrichment is based on coolant temperature. Since warmup enrichment requirements are usually non-linear, several bins are provided to specify different rates in different temperature domains.<br>"
text = "Place values in the "-40" through "160 degrees F" fields, typically running from about 120 at -40 F to 100 at 100 F; make sure the values are all 100 or greater.<br>"
text = "The MS array "WWU" contains these enrichment values.<br>"
text = "<br><strong>Acceleration Enrichment</strong><br>"
text = "Acceleration enrichment (AE) occurs when you open the throttle "rapidly" to avoid bogging the engine. In v.1.01 MS, this is done solely based upon the rate of change in the throttle position sensor (also called TPSDOT).<br>"
text = "<br><strong>TPSDOT Thresh</strong><br>"
text = "This is the threshold in v/sec below which no acceleration enrichment will occur (you can move the throttle from idle to full open without acceleration enrichment, if you open it slowly enough). Depends grossly upon the range of your TPS, a typical value might be 1.2 v/sec.<br>"
text = "<strong>Tuning Note:</strong> While you are tuning the VE table you should set this threshold artificially high (maybe 40.0) to disable acceleration enrichment completely. After the VE table is fairly well-defined, set this back to 1.2 and begin tuning AE.<br>"
text = "MS stores this value in the "TPSTHRESH" variable.<br>"
text = "<br><strong>Accel Time (sec)</strong><br>"
text = "This value indicates how long the acceleration enrichment "squirt" will last. Typical values are around 1.0 second. MS stores this value in the variable "TPSACLK."<br>"
text = "<br><strong>Cold Accel Enrichment (ms)</strong><br>"
text = "The acceleration enrichment pulse also varies depending upon coolant temperature. The value specified here is the pulse width added to the value from the bin calculations at -40 F. The Cold Acceleration Enrichment amount is linearly interpolated from full amount at -40 F down to zero at 165 F. A typical value might be 2.0 ms.<br>"
text = "This value is stored in the "TPSACOLD" variable in MS.<br>"
text = "<br><strong>Cold Accel Multiplier (%)</strong><br>"
text = "Another means for increasing the amount of fuel delivered by the acceleration enrichment pulse is supplied by this value; it is likewise interpolated from the full specified amount at 40F down to zero at 165 F. Before the Cold Acceleration Enrichment value is added to the base acceleration enrichment pulsewidth, it is multiplied by this value.<br>"
text = "Total AE = Base AE * CAM + CAE<br>"
text = "The difference between the two types of AE cold modify can be easily seen with a few examples:<br>"
text = "1) Assume we have a calculated AE pulse of 5.0 ms. Say our coolant temperature is 40 F, giving a CAE pulse of 2.0 ms and CAM is turned off (100%). The result is 5.0+2.0 = 7.0 ms.<br>"
text = "2) Assume same base AE and temperature, but now we turn off CAE (0.0 ms) and set CAM to give 140%. The result is the same, we get 5.0*1.4 = 7.0 ms.<br>"
text = "3) Take the first case, but hit the accelerator faster, giving 8.0 ms base AE pulse. We now have a result of 8.0+2.0 = 10.0 ms.<br>"
text = "4) Take case 2, but with the higher base AE pulse, giving 8.0*1.4 = 11.2 ms.<br>"
text = "The bottom line is that the CAE modifier is constant and independent of the base pulse, where on the other hand, the CAM modifier has a proportional effect on the AE, bigger base pulse means bigger result.<br>"
text = "This value is stored in the 'ACMULT' variable in MS.<br>"
text = "<br><strong>Decel Fuel Amount (%)</strong><br>"
text = "When you let off the throttle rapidly (that is the closing rate exceeds TPSDOT Thresh) and the engine is turning faster than 1500 RPM, then deceleration fuel cutoff is performed by MS. Deceleration fuel amount is multiplied by the "normal" pulse width, that is, if the calculated pulse is 12.0 ms and you have 20% decel amount, then the resulting pulse width is 2.4 ms. A value of 100% causes the fuel to remain at its calculated value, and can cure bucking on deceleration in vehicles with manual transmissions; those with automatic transmissions may benefit in fuel economy by using values below 100%.<br>"
text = "The MS variable "TPSDQ" holds this value as a percentage. <br>"
text = "<br><strong>Acceleration Enrichment Bins (ms)</strong><br>"
text = "These bins specify the actual enrichment in terms of pulse width. They are linearly interpolated to determine a value that is ultimately added to the computed pulse width.<br>"
text = "The array of values is called "TPSAQ" as stored in MS."
[TableEditor]
; table_id, map3d_id, "title", page
table = veTableTbl, veTableMap, "VE Table", 1
; constant, variable
xBins = rpmBins, rpm
#if SPEED_DENSITY
yBins = mapBins, map
#else
yBins = tpsBins, tps
#endif
zBins = veTable
gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = sparkTbl, sparkMap, "Ignition Advance Table", 2
xBins = rpmBins2, rpm
#if SPEED_DENSITY
yBins = mapBins2, map
#else ALPHA_N
yBins = tpsBins2, tps
#endif
zBins = advTable1
gridHeight = 3.0
upDownLabel = "ADVANCED", "RETARDED"
;-------------------------------------------------------------------------------
[GaugeConfigurations]
;-------------------------------------------------------------------------------
; Notes on some of the gauges.
;
; The accelEnrichGauge is now a composite of both acceleration enrichment
; and deceleration enleanment numbers. See the definition of the variable
; accDecEnrich in the OutputChannels section.
;
; David Hooke contributed the lambda gauge and associated transfer
; function files.
;
; "The lambda gauge is the best way (my opinion) to report data from a
; wide band EGO gauge, it standardizes the output irrespective of fuel
; or mix of fuels, so you needn't do any brainwork to know if your 75%
; gasoline and 25% methanol is rich at 10:1 or not.
;
; "Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu)."
;-------------------------------------------------------------------------------
; Define a gauge's characteristics here, then go to a specific layout
; block (Tuning or FrontPage) and use the name you've defined here to
; display that gauge in a particular position.
;
; Name = Case-sensitive, user-defined name for this gauge configuration.
; Var = Case-sensitive name of variable to be displayed, see the
; OutputChannels block in this file for possible values.
; Title = Title displayed at the top of the gauge.
; Units = Units displayed below value on gauge.
; Lo = Lower scale limit of gauge.
; Hi = Upper scale limit of gauge.
; LoD = Lower limit at which danger color is used for gauge background.
; LoW = Lower limit at which warning color is used.
; HiW = Upper limit at which warning color is used.
; HiD = Upper limit at which danger color is used.
; vd = Decimal places in displayed value
; ld = Label decimal places for display of Lo and Hi, above.
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
baroADCGauge = baroADC, "Barometer ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
mapADCGauge = mapADC, "MAP ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
matADCGauge = matADC, "MAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
cltADCGauge = cltADC, "CLT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
batADCGauge = batADC, "BAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#if NARROW_BAND_EGO
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
#else
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
#endif
lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0
afrGauge = afr, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0
dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 85, 90, 1, 1
egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0
gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1
tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0
throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0
veBucketGauge = veTuneValue, "VE Value", "%", 0, 120, -1, -1, 999, 999, 0, 0
veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0
voltMeter = batteryVoltage,"Battery Voltage", "volts", 7, 21, 8, 9, 15, 16, 2, 2
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 120, -15, 0, 95, 105, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0
#else
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 250, 0, 30, 200, 220, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 215, 0, 30, 200, 210, 0, 0
#endif
advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0,
;-------------------------------------------------------------------------------
[FrontPage]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = tachometer
#if SPEED_DENSITY
gauge2 = throttleGauge
#else
gauge2 = tpsGauge
#endif
gauge3 = pulseWidthGauge
gauge4 = dutyCycleGauge
gauge5 = mapGauge
gauge6 = matGauge
gauge7 = cltGauge
gauge8 = gammaEnrichGauge
;----------------------------------------------------------------------------
; Indicators
; expr off-label on-label, off-bg, off-fg, on-bg, on-fg
indicator = { ready }, "Not Ready", "Ready", white, black, green, black
indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black
indicator = { startw }, "ASE OFF", "ASE", white, black, green, black
indicator = { warmup }, "WUE OFF", "WUE", white, black, green, black
indicator = { tpsaccaen }, "TPS Accel", "TPS Accel", white, black, green, black
indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black
indicator = { tpsaccden }, "TPS Decel", "TPS Decel", white, black, green, black
indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black
indicator = { tps > floodClear }, "", "FLOOD CLEAR", white, black, red, black
;-------------------------------------------------------------------------------
[RunTime]
barHysteresis = 2.5 ; Seconds
#if CELSIUS
coolantBar = -40, 100
matBar = -40, 100
#else
coolantBar = -40, 215
matBar = -40, 215
#endif
batteryBar = 6, 15
dutyCycleBar = 0, 100
#if NARROW_BAND_EGO
egoBar = 0, 1.0
#else
egoBar = 0, 5.0
#endif
gammaEBar = 0, 200
mapBar = 0, 255
pulseWidthBar = 0, 25.5
rpmBar = 0, 8000
throttleBar = 0, 100
egoCorrBar = 0, 200
baroCorrBar = 0, 200
warmupCorrBar = 0, 200
airdenCorrBar = 0, 200
veCorrBar = 0, 200
accCorrBar = 0, 100
;-------------------------------------------------------------------------------
[Tuning]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
font = "Courier", 14
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
;----------------------------------------------------------------------------
; Notes on tuning screen gauges:
; pageButtons = Labels for radio buttons at bottom of tuning dialog.
;
; Gauge 2 previously switched automatically to be tpsGauge when alpha-n
; was enabled, but you need to do it manually now.
;----------------------------------------------------------------------------
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&EGO", "&WUE", "PW&1", "PW&2"
gauge1 = tachometer, tachometer, tachometer, tachometer
gauge2 = mapGauge, mapGauge, mapGauge, mapGauge
gauge3 = egoGauge, egoGauge, egoGauge, egoGauge
gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidthGauge, pulseWidthGauge
gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge
gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycleGauge, dutyCycleGauge
;-------------------------------------------------------------------------------
[OutputChannels]
; The number of bytes MegaTune should expect as a result
; of sending the "A" command to MegaSquirt is determined
; by the value of ochBlockSize, so be very careful when
; you change it.
deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "A"
ochBlockSize = 23
secl = scalar, U08, 0, "sec", 1.000, 0.000
squirt = scalar, U08, 1, "bits", 1.000, 0.000
engine = scalar, U08, 2, "bits", 1.000, 0.000
ready = bits, U08, 2, [0:0]
crank = bits, U08, 2, [1:1]
startw = bits, U08, 2, [2:2]
warmup = bits, U08, 2, [3:3]
tpsaccaen = bits, U08, 2, [4:4]
tpsaccden = bits, U08, 2, [5:5]
mapaccaen = bits, U08, 2, [6:6]
mapaccden = bits, U08, 2, [7:7]
baroADC = scalar, U08, 3, "ADC", 1.000, 0.000
mapADC = scalar, U08, 4, "ADC", 1.000, 0.000
matADC = scalar, U08, 5, "ADC", 1.000, 0.000
cltADC = scalar, U08, 6, "ADC", 1.000, 0.000
tps = scalar, U08, 7, "%", 1.000, 0.000
batADC = scalar, U08, 8, "ADC", 1.000, 0.000
egoADC = scalar, U08, 9, "ADC", 1.000, 0.000
egoCorrection = scalar, U08, 10, "%", 1.000, 0.000
airCorrection = scalar, U08, 11, "%", 1.000, 0.000
warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000
rpm100 = scalar, U08, 13, "r100", 1.000, 0.000
pulseWidth = scalar, U08, 14, "ms", 0.100, 0.000
accelEnrich = scalar, U08, 15, "%", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr = scalar, U08, 18, "%", 1.000, 0.000
blank1 = scalar, U08, 19 ; Raw inputs, as they come from MS.
blank2 = scalar, U08, 20
TPSdot = scalar, U08, 21, "%/s", 1.000, 0.000
advance = scalar, U08, 22, "deg", 1.000, 0.000
; Computed output channels. See "megatuneExamples.ini" for all the
; pre-defined variables, search for "???" and you'll see them.
accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct : 100) }
batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage.
coolant = { tempCvt(table(cltADC, "thermfactor.inc")-40) } ; Coolant sensor temperature in user units.
egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage.
mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units.
rpm = { rpm100*100 } ; True RPM.
time = { timeNow } ; "timeNow" is a parameterless built-in function.
afrtarget = { 0 }
#include "lambdaSensors.ini"
#if MPX4250
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa.
#else
barometer = { table(baroADC, "kpafactor4115.inc") }
map = { table(mapADC, "kpafactor4115.inc") }
#endif
; throttle = { table(tps, "throttlefactor.inc") }
throttle = { tps }, "%"
idleDC = { (coolant < fastIdleT) * 100 }
altDiv = { alternate ? 2 : 1 }
cycleTime = { 60000.0 / rpm * (2.0-twoStroke) }
nSquirts = { nCylinders/divider }
dutyCycle = { 100.0*nSquirts/altDiv*pulseWidth/cycleTime }
#if EXPANDED_CLT_TEMP
clt_exp = { 1 }
#else
clt_exp = { 0 }
#endif
#if CELSIUS
cltlowlim = { clt_exp ? -40 : -40 }
clthighlim = { clt_exp ? 230 : 120 }
cltlowdang = { clt_exp ? 65 : 10 }
cltlowwarn = { clt_exp ? 93 : 65 }
clthighwarn = { clt_exp ? 162 : 93 }
clthighdang = { clt_exp ? 176 : 104 }
mathigh = { 110 }
#else ; fahrenheit
cltlowlim = { clt_exp ? -40 : -40 }
clthighlim = { clt_exp ? 450 : 250 }
cltlowdang = { clt_exp ? 150 : 50 }
cltlowwarn = { clt_exp ? 200 : 150 }
clthighwarn = { clt_exp ? 325 : 200 }
clthighdang = { clt_exp ? 350 : 220 }
mathigh = { 215 }
#endif
;-------------------------------------------------------------------------------
[Datalog]
; Full datalog.
;
; Default user-defined log emulates the full datalog.
;
; The entries are saved in the datalog file in the order in
; which they appear in the list below.
;
; Channel - Case sensitive name of output channel to be logged.
; Label - String written to header line of log. Be careful
; about changing these, as programs like MSLVV and
; MSTweak key off specific column names.
; Type - Data type of output, converted before writing.
; Format - C-style output format of data.
;
; Channel Label Type Format
; -------------- ---------- ----- ------
entry = time, "Time", float, "%.3f"
entry = secl, "SecL", int, "%d"
entry = rpm100, "RPM", int, "%d"
entry = map, "MAP", int, "%d"
entry = throttle, "TP", int, "%d"
entry = egoVoltage, "O2", float, "%.3f"
entry = mat, "MAT", float, "%.1f"
entry = coolant, "CLT", float, "%.1f"
entry = engine, "Engine", int, "%d"
entry = egoCorrection, "Gego", int, "%d"
entry = airCorrection, "Gair", int, "%d"
entry = warmupEnrich, "Gwarm", int, "%d"
entry = baroCorrection, "Gbaro", int, "%d"
entry = gammaEnrich, "Gammae", int, "%d"
entry = accDecEnrich, "TPSacc", int, "%d"
entry = veCurr, "Gve", int, "%d"
entry = pulseWidth, "PW", float, "%.1f"
entry = blank2, "Gve2", int, "%d"
entry = pulseWidth, "PW2", float, "%.1f"
entry = dutyCycle, "DutyCycle1", float, "%.1f"
entry = dutyCycle, "DutyCycle2", float, "%.1f"
entry = blank1, "UserData1", int, "%d"
entry = blank2, "UserData2", int, "%d"
entry = TPSdot, "UserData3", int, "%d"

View File

@ -1,916 +0,0 @@
;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "Q"
signature = 20
;-------------------------------------------------------------------------------
[Constants]
;----------------------------------------------------------------------------
; Constants Definition
; --------------------
;
; Scalar Values
; -------------
; The scaling and translation values are used as follows:
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
;
;
; Temperatures are fine, check out the Fielding IAC example (fastIdleT).
;
; Array Values
; ------------
; Arrays are specified just like scalars, except that they have a "shape"
; entry in the fourth parameter. The shape allows you to define lists or
; tables, for example [8] defines a list with eight values and [2x4] defines
; a table with eight values (two rows and four columns). Tables may be
; stored in either "X-" or "Y-order." X-order means that memory is layed
; out like.
;
; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]...
;
; Y-order would be
;
; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]...
;
; To use the TableEditor, you must define two lists and a table, and
; the lengths of the lists must correspond to the shape of the table.
;
; Bit Fields
; ----------
; Bits are numbered 0-7, the rightmost being bit zero. The basic
; data word that stores bit fields must be unsigned.
;
; You need NOT supply the correct number of labels matching the
; number of bits you've specified (one bit requires 2 values, two
; bits requires 4 values and so on). If you neglect to supply enough
; labels, they will be synthesized using the sequence "1", "2" and so
; on based upon their position in the sequence (the cltType and matType
; will end up with identical lists).
;
; If you specify a label as "INVALID" (all upper case), then it will
; not be displayed in the combo box, so you can leave out values that
; make no sense.
;
;----------------------------------------------------------------------------
endianness = big
nPages = 2
burnCommand = "B"
; pageSize = 125
pageSize = 128, 128
pageActivationDelay = 10
; pageActivate = ""
pageActivate = "P\001", "P\002"
pageReadCommand = "V", "V"
pageValueWrite = "W%o%v", "W%o%v"
; pageChunkWrite = "" ; No chunk write for standard MS.
page = 1
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
veTable = array, U08, 0, [8x8], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins = array, U08, 64, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0
#if SPEED_DENSITY
mapBins = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
;#exit
#endif
crankCold = scalar, U08, 80, "ms", 0.1, 0.0, 0.0, 25.5, 1
crankHot = scalar, U08, 81, "ms", 0.1, 0.0, 0.0, 25.5, 1
asePct = scalar, U08, 82, "%", 1.0, 0.0, 0.0, 95.0, 0
aseCount = scalar, U08, 83, "s", 1.0, 0.0, 0.0, 255, 0
wueBins = array, U08, 84, [ 10], "%", 1.0, 0.0, 0.0, 255, 0
unused1 = scalar, U08, 94, "ms", 0.1, 0.0, 0.0, 25.5, 1
unused2 = scalar, U08, 95, "ms", 0.1, 0.0, 0.0, 25.5, 1
unused3 = scalar, U08, 96, "ms", 0.1, 0.0, 0.0, 25.5, 1
unused4 = scalar, U08, 97, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA = scalar, U08, 98, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh = scalar, U08, 99, "%/s", 1.0, 0.0, 0.0, 255, 0
taeTime = scalar, U08, 100, "ms", 0.1, 0.0, 0.0, 25.5, 1
tdePct = scalar, U08, 101, "%", 1.0, 0.0, 0.0, 255, 0
#if CELSIUS
egoTemp = scalar, U08, 102, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp = scalar, U08, 102, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount = scalar, U08, 103, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta = scalar, U08, 104, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit = scalar, U08, 105, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel = scalar, U08, 106, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider = scalar, U08, 107, "", 1.0, 0.0
alternate = bits, U08, 108, [0:0], "Simultaneous", "Alternating"
injOpen = scalar, U08, 109, "ms", 0.1, 0.0, 0.1, 25.5, 1
injOCfuel = scalar, U08, 110, "ms", 0.1, 0.0, 0.0, 0.0, 0
injPwmP = scalar, U08, 111, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT = scalar, U08, 112, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac = scalar, U08, 113, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk = scalar, U16, 114, "", 1.0, 0.0
; Config1
mapType = bits, U08, 116, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
twoStroke = bits, U08, 116, [2:2], "Four-stroke", "Two-stroke"
injType = bits, U08, 116, [3:3], "Port", "Throttle Body"
nCylinders = bits, U08, 116, [4:8], "INVALID","1","2","3","4","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
; Config2
cltType = bits, U08, 117, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType = bits, U08, 117, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors = bits, U08, 117, [4:7+1]
; Config3
engineType = bits, U08, 118, [0:0], "Even fire", "Odd fire"
egoType = bits, U08, 118, [1:1], "Narrow band", "Wide band"
algorithm = bits, U08, 118, [2:2], "Speed Density", "Alpha-N"
baroCorr = bits, U08, 118, [3:3], "Off", "On"
primePulse = scalar, U08, 119, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM = scalar, U08, 120, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT = scalar, U08, 121, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT = scalar, U08, 121, "°F", 1.0, -40.0, -40, 215, 0
#endif
egoSwitch = scalar, U08, 122, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM = scalar, U08, 123, "%", 1.0, 0.0, 0.0, 250.0, 0
tpsMin = scalar, U08, 124, "ADC", 1.0, 0.0, 0.0, 255.0, 0
tpsMax = scalar, U08, 125, "ADC", 1.0, 0.0, 0.0, 255.0, 0
;--------------------------------------------------
;Start Ignition table (Table 2)
;--------------------------------------------------
page = 2
advTable1 = array, U08, 0,[8x8], "deg", 1.0, 0.0, 0.0, 255.0, 0
rpmBins2 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
mapBins2 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#elif ALPHA_N
tpsBins2 = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#elif AIR_FLOW_METER
#error "MSnS does not support MAF"
#exit
#endif
TrigAng = scalar, U08, 80, "Deg", 4, 0, 0, 360, 0
FixAng = scalar, U08, 81, "Deg", 1, 0, 0, 80, 0
Trim = scalar, S08, 82, "Deg", 0.352, 0, -45, 45, 0
CrankAng = scalar, U08, 83, "Deg", 1, -28.4, -10, 80, 0
IgHold = scalar, U08, 84, "", 1, 0, 0, 100, 0
Trig_plus = bits, U08, 85[0:1], "0", "+22.5", "INVALID", "+45"
TrigCrank = bits, U08, 85[2:2], "Trigger Return", "Time Based"
IgInv = bits, U08, 85[3:3], "No", "Yes"
oddfire = bits, U08, 85[4:4], "No", "Yes"
IdleAdv = scalar, U08, 86, "Deg", 0.352,-28.4, -10, 80, 0
IdleAdvTPS = scalar, U08, 87, "ADC", 1, 0, 0, 255, 0
IdleAdvRPM = scalar, U08, 88, "RPM", 100, 0, 0, 1200, 0
#if CELSIUS
IdleAdvCLT = scalar, U08, 89, "C", 0.555, -72, -40, 102, 1
#else
IdleAdvCLT = scalar, U08, 89, "F", 1, -40, -40, 215, 0
#endif
IdleDelayTime = scalar, U08, 90, "sec", 1, 0, 0, 5, 0
StgCycles = scalar, U08, 91, "cycles", 1, 0, 0, 255, 0
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
;Dwell control
;running dwell variable railed to 8 - who needs more than 8ms?
dwellcont = bits, U08, 92, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 93, "ms", 0.1, 0, 0, 25, 1
dwellrun = scalar, U08, 94, "ms", 0.1, 0, 0, 8, 1
numteeth = scalar, U08, 95, "teeth", 1.0, 0.0, 0.0, 255, 0
onetwo = scalar, U08, 96, "teeth", 1.0, 0.0, 0.0, 255, 0
crankRPM = scalar, U08, 97, "rpm", 100, 0.0, 100, 1000, 0
tpsflood = scalar, U08, 98, "%", 1.0, 0.0, 0.0, 255.0, 0
;Rev Limits
SoftRevLim = scalar, U08, 99, "rpm", 100, 0.0, 100, 25500, 0
SoftLimRetard = scalar, U08, 100, "deg", 0.352, -28.4, -10, 80, 0
SoftLimMax = scalar, U08, 101, "s", 0.1, 0.0, 0.0, 25.5, 1
HardRevLim = scalar, U08, 102, "rpm", 100, 0.0, 100, 25500, 0
;TPS based acceleration enrichment
taeBins = array, U08, 103, [ 4], "%/s", 10.0, 0.00000, 0.00, 2550.0, 0
taeRates = array, U08, 107, [ 4], "%", 1.0, 0.00000, 0.00, 255.0, 0 ; 4 bytes
wueRates = array, U08, 111, [10], "C", 1.0, 0.0, 100.0, 255.0, 0
unused121 = scalar, U08, 121, "none", 0, 0, 0, 0, 0
unused122 = scalar, U08, 122, "none", 0, 0, 0, 0, 0
unused123 = scalar, U08, 123, "none", 0, 0, 0, 0, 0
unused124 = scalar, U08, 124, "none", 0, 0, 0, 0, 0
unused125 = scalar, U08, 125, "none", 0, 0, 0, 0, 0
unused126 = scalar, U08, 126, "none", 0, 0, 0, 0, 0
unused127 = scalar, U08, 127, "none", 0, 0, 0, 0, 0
;-------------------------------------------------------------------------------
[Menu]
;----------------------------------------------------------------------------
; There are five pre-defined values that may be used to define your menus.
; The first four allow access to the "standard" dialog boxes, the last one
; merely draws a separator (horizontal line) in the menu.
;
; std_constants
; std_enrichments
; std_realtime
; std_warmup
;
; std_separator
;
; If you use any of the std_constants, std_enrichments or std_warmup
; editors, they may be optionally suffixed with a page number (only
; useful for multi-page code variants), which causes them to edit the
; specified page. If you leave off the page specifier, they edit logical
; page one as specified in the Constants section.
;
; There are four special menu names, which when used append to the standard
; menus of the same name instead of creating a new one. The menu names
; are "File", "Communications", "Tools" and "Help".
;
;----------------------------------------------------------------------------
menu = "&Settings"
subMenu = std_constants, "&Constants"
subMenu = triggerSettings, "&Trigger Setup"
menu = "&Tuning"
subMenu = std_realtime, "&Realtime Display"
subMenu = std_warmup, "&Warmup Enrichment"
subMenu = crankPW, "Cranking Settings"
subMenu = accelEnrichments, "&Acceleration Wizard"
subMenu = veTableTbl, "&VE Table", 0
subMenu = sparkTbl, "&Spark Table", 1
subMenu = RevLimiterS, "Rev Limits", 2
menu = "&Spark"
subMenu = sparkSettings, "&Spark Settings"
subMenu = sparkTbl, "Spark Table", 1
;subMenu = IdleAdvance, "Idle Advance settings",
;subMenu = Knock, "Kn&ock System"
;subMenu = IatCltIg, "&IAT/Clt Related Ignition"
subMenu = dwellSettings, "Dwell settings"
;subMenu = wheelsim, "Stim for wheel"
;subMenu = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire }
menuDialog = main
menu = "T&ools"
;subMenu = sensorCal, "Calibrate MAP/Baro"
;subMenu = battcalib, "Calibrate Battery Voltage"
;subMenu = std_separator ;----------------------------------------------
;subMenu = flash_unlock, "Un/Lock calibrations"
subMenu = std_ms2gentherm, "Calibrate T&hermistor Tables", 0 ;, {flashlock}
subMenu = std_ms2geno2, "Calibrate &AFR Table", 0;, {flashlock}
;-------------------------------------------------------------------------------
[UserDefined]
; define a MegaTune compatible version here
; no need to for std_enrichments, it is built in.
[UserDefinedTS]
; Enhanced TunerStudio dialogs can be defined here
; MegaTune will over look this section
; These dialogs will over-ride those in the UserDefined Section
; User defined ar loaded first, then if one by the same name is defiend here,
; it will replace the MegaTune definition
; dialog = name, Title, Layout
;
; valid options for layout are xAxis, yAxis, border
; for an xAxis, each field added will be added from right to left
; A yAxis layout will add fields from top to bottom
; A border layout will expect an additional constraint to determine placement
; valid border constraints are north, South, East, West, Center
; all 5 do not need to be filled.
; The field name can be either a constant reference, or a reference to another
; dialog which will be added.
; dialogs can be nested and can be mixed with fields
dialog = accelEnrichments_south, ""
field = "TPSdot Threshold", tpsThresh
field = "Accel Time", taeTime
; field = "Cold Accel Enrichment", taeColdA
; field = "Cold Accel Mult", taeColdM
field = "Decel Fuel Amount", tdePct
dialog = accelEnrichments_north, "", xAxis
panel = time_accel_tpsdot_curve
;panel = time_accel_tpsdot_tbl
dialog = accelEnrichments, "Acceleration Enrichment"
panel = accelEnrichments_north, North
panel = accelEnrichments_south, South
dialog = crankPW, "Cranking Pulsewidths (ms)"
#if CELSIUS
field = "Cranking RPM (Max)", crankRPM
field = "Flood Clear level", tpsflood
field = ""
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°C", crankCold
field = "Pulsewidth at 77°C", crankHot
field = ""
field = "Cranking Enrichment %", asePct
field = "Number of seconds to run", aseCount
#else
field = "Cranking RPM (Max)", crankRPM
field = "Flood Clear level", tpsflood
field = ""
field = "Priming Pulsewidth", primePulse
field = "Pulsewidth at -40°F", crankCold
field = "Pulsewidth at 170°F", crankHot
field = ""
field = "Cranking Enrichment %", asePct
field = "Number of seconds to run", aseCount
#endif
dialog = aseSettings, "Afterstart Enrichment"
field = "Enrichment %", asePct
field = "Number of Ignition Cycles", aseCount
dialog = egoSettings, "Exhaust Gas Oxygen"
field = "EGO Sensor Type", egoType
field = "EGO Switch Point (v)", egoSwitch
field = "Coolant Temp Activation", egoTemp
field = "Ignition Events Per Step", egoCount
field = "EGO Step", egoDelta
field = "EGO ± Limit", egoLimit
field = "EGO Active Above", egoRPM
dialog = triggerSettings,"Trigger Settings",3
topicHelp = Shelp3
field = "Wheel decoder base teeth", numteeth
field = "Missing teeth", onetwo
field = "Trigger Angle ", TrigAng
field = "Note: This number will be rounded to the nearest 4 degrees"
field = "This number represents the angle ATDC when the 1st"
field = "tooth after the gap passes the sensor."
field = ""
field = "Skip Revolutions", StgCycles
field = "Note: This is the number of revolutions that will be skipped during"
field = "cranking before the injectors and coils are fired"
dialog = sparkSettings,"Spark Settings",3
topicHelp = Shelp3
field = "Wheel decoder base teeth", numteeth
field = "Missing teeth", onetwo
field = "Trigger Angle"
field = "Trigger Angle ", TrigAng
field = "Note: This number will be rounded to the nearest 4 degrees"
field = "This number represents the angle ATDC when the 1st"
field = "tooth after the gap passes the sensor."
field = ""
;field = "Cranking Timing", TrigCrank
field = "Cranking advance Angle", CrankAng
;field = "Hold Ignition", IgHold
field = "Spark Output Inverted (see F1)", IgInv
field = ""
field = "Fixed Angle (0 = use map)", FixAng
;field = "Trim Angle", Trim
dialog = dwellSettings,"Dwell Settings",4
topicHelp = DwellHelp
field = "Dwell control", dwellcont
field = "Or:"
field = " Cranking dwell", dwellcrank, { dwellcont }
field = " Running dwell", dwellrun, { dwellcont }
;field = "Minimum discharge period", mindischg, { dwellcont }
field = ""
field = "#Note"
field = "these times are for 12V. Battery voltage correction"
field = "is applied. At higher voltages the time is reduced"
field = "and when low it is increased"
dialog = RevLimiterS, "Rev Limiter", 4
topicHelp = Fhelp7
field = "Rev Limiter"
field = "Soft rev limit", SoftRevLim
field = "Soft limit absolute timing", SoftLimRetard
field = "Soft limit max time", SoftLimMax
field = "Hard Rev limit", HardRevLim
; curve = warmup_curve, "Warmup Enrichment Curve"
; columnLabel = "Coolant", "WUE %"
; xAxis = -40, {clthighlim}, 9
; yAxis = 0, 500, 6
; xBins = tempTable, coolant
; yBins = wueBins
; gauge = cltGauge
; -------------------------------------------------------------
; Help down here
help = helpEnrichments, "Enrichments Help"
text = "<strong>Priming Pulse</strong><br><br>"
text = "The duration in milliseconds of a priming pulse that is applied when the MS controller is powered up. If you dont want a priming pulse, set this field to zero. (Only available for version 2.0 and later of MegaSquirt controller code.)<br>"
text = "<br><strong>Cranking Pulsewidth</strong><br><br>"
text = "Cranking pulse width determines how long the injector will be open in milliseconds for each pulse while the engine is cranking (i.e., the RPM is below 300). The actual pulse width is determined by performing linear interpolation on the line described by the end points you enter for the "-40 degrees F" and "170 degrees F" values. For instance, if you enter 10.0 ms as the pulse width at -40 F and 2.0 ms at 170 F, the pulse width will be 6.0 ms when you start your engine at 65 F.<br>"
text = "Note: Cranking pulse occur at every ignition event, while running pulses only occur at the interval specified on the constants page; if you have a 4 cylinder engine and are taking the tachometer signal from the coil, then you will get four (4) cranking pulses per cycle and depending on settings one injection per cycle while running.<br>"
text = "The MS variables "CWU" and "CWH" hold the low temperature and high temperature pulse widths, respectively.<br>"
text = "<br><strong>Afterstart Enrichment</strong><br>"
text = "The afterstart enrichment is one that decays from its max value (specified in the "Enrichment (percent)" field) to zero in a linear fashion over a period defined in "Number of Ignition Cycles." If you specify 20% enrichment over 250 ignition cycles, then the first pulse is enriched by 20%, the 125th pulse is enriched by 10% and the 250th (and later) by zero percent (this assumes 1 event per cycle, or a 1 cylinder engine; divide by the number of ignition events per cycle to get the specific behavior for your motor).<br>"
text = "MS stores these values in the flash constants called "AWC" (Afterstart Warmup Count) and "AWEV" (Afterstart Warmup Enrichment Value).<br>"
text = "<br><strong>Exhaust Gas Oxygen Sensor Parameters</strong><br>"
text = "These parameters define the closed loop behavior of MS. You must have a narrow band O2 sensor hooked up for this mode to work in v.1.0 controller code; either a narrow band or wide band will work with v.2.0 of controller code. To disable closed loop operation altogether, set the EGO Step value to zero.<br>"
text = "<br><strong>EGO Sensor Type</strong><br>"
text = "Specify either a narrow band sensor or wide band sensor. Functionally this merely sets the direction sense of the sensor voltage. For narrow band sensors, the voltage rises as the mixture is richening and drops as the mixture becomes lean. The wide band setting corresponds to the opposite sense, i.e., voltage drops to indicate enrichment (this is how the DIY-WB operates, not necessarily all WB sensors!). (Available in v 2.0 controller code.)<br>"
text = "<br><strong>EGO Switch Point (v)</strong><br>"
text = "This is the switching point voltage that indicates stoichiometric combustion (approximately 14.7:1 with gasoline). For narrow band sensors this is 0.5 v*; for the DIY-WB wideband sensor it is 2.5 v (for other wideband sensors this voltage may be quite different). (This value is only active in v 2.0 controller code.)<br>"
text = "*This is true for zirconia NB sensors, which are used almost exclusively in modern vehicles. The titania NB sensor has a different voltage range (1-5 v), but is rarely used.<br>"
text = "<br><strong>Coolant Temp Activation (°F)</strong><br>"
text = "This is the temperature below which closed loop operation is disabled. If this value is too low, then closed loop will try to lean out the warmup enrichments and you may experience rough running. Typical value is 160 F and should somewhat above the point at which warmup enrichment stops (see the Warmup Enrichment Bins settings and find the lowest on which contains 100).<br>"
text = "The MS value "EGOTEMP" stores this quantity.<br>"
text = "<br><strong>Ignition Events Per Step</strong><br>"
text = "This value determines the rate at which the closed loop algorithm applies correction. The default value of 32, when used on a four cylinder engine with four ignition events per cycle, tells MS to wait for 8 cycles before changing the current correction factor.<br>"
text = "<br><strong>EGO Step (percent)</strong><br>"
text = "Once the closed loop algorithm has decided to change the correction factor, it adds or subtracts this percentage from the current value. This should move slowly to avoid unstable response, so make sure it is small, 1% being the default.<br>"
text = "<br><strong>EGO Limit (%)</strong><br>"
text = "Closed loop operation should not be substituted for proper tuning! This value limits the correction that can be made by the closed loop algorithm, the default of 10% indicates the correction factor cannot go outside the range 90-110%.<br>"
text = "<br><strong>EGO Active Above RPM</strong><br>"
text = "This value specifies the lower limit above which closed loop operation occurs. Typically, your engine will idle best when it is richer than stoich, so turning off closed loop for low RPMs allows this to happen. The default value for the RPM limit is 1200. (Available only in v 2.0 MS, older versions have a fixed 1200 RPM value in the controller code.)<br>"
text = "<br><strong>Warmup Enrichment Bins</strong><br>"
text = "Warmup enrichment is based on coolant temperature. Since warmup enrichment requirements are usually non-linear, several bins are provided to specify different rates in different temperature domains.<br>"
text = "Place values in the "-40" through "160 degrees F" fields, typically running from about 120 at -40 F to 100 at 100 F; make sure the values are all 100 or greater.<br>"
text = "The MS array "WWU" contains these enrichment values.<br>"
text = "<br><strong>Acceleration Enrichment</strong><br>"
text = "Acceleration enrichment (AE) occurs when you open the throttle "rapidly" to avoid bogging the engine. In v.1.01 MS, this is done solely based upon the rate of change in the throttle position sensor (also called TPSDOT).<br>"
text = "<br><strong>TPSDOT Thresh</strong><br>"
text = "This is the threshold in v/sec below which no acceleration enrichment will occur (you can move the throttle from idle to full open without acceleration enrichment, if you open it slowly enough). Depends grossly upon the range of your TPS, a typical value might be 1.2 v/sec.<br>"
text = "<strong>Tuning Note:</strong> While you are tuning the VE table you should set this threshold artificially high (maybe 40.0) to disable acceleration enrichment completely. After the VE table is fairly well-defined, set this back to 1.2 and begin tuning AE.<br>"
text = "MS stores this value in the "TPSTHRESH" variable.<br>"
text = "<br><strong>Accel Time (sec)</strong><br>"
text = "This value indicates how long the acceleration enrichment "squirt" will last. Typical values are around 1.0 second. MS stores this value in the variable "TPSACLK."<br>"
text = "<br><strong>Cold Accel Enrichment (ms)</strong><br>"
text = "The acceleration enrichment pulse also varies depending upon coolant temperature. The value specified here is the pulse width added to the value from the bin calculations at -40 F. The Cold Acceleration Enrichment amount is linearly interpolated from full amount at -40 F down to zero at 165 F. A typical value might be 2.0 ms.<br>"
text = "This value is stored in the "TPSACOLD" variable in MS.<br>"
text = "<br><strong>Cold Accel Multiplier (%)</strong><br>"
text = "Another means for increasing the amount of fuel delivered by the acceleration enrichment pulse is supplied by this value; it is likewise interpolated from the full specified amount at 40F down to zero at 165 F. Before the Cold Acceleration Enrichment value is added to the base acceleration enrichment pulsewidth, it is multiplied by this value.<br>"
text = "Total AE = Base AE * CAM + CAE<br>"
text = "The difference between the two types of AE cold modify can be easily seen with a few examples:<br>"
text = "1) Assume we have a calculated AE pulse of 5.0 ms. Say our coolant temperature is 40 F, giving a CAE pulse of 2.0 ms and CAM is turned off (100%). The result is 5.0+2.0 = 7.0 ms.<br>"
text = "2) Assume same base AE and temperature, but now we turn off CAE (0.0 ms) and set CAM to give 140%. The result is the same, we get 5.0*1.4 = 7.0 ms.<br>"
text = "3) Take the first case, but hit the accelerator faster, giving 8.0 ms base AE pulse. We now have a result of 8.0+2.0 = 10.0 ms.<br>"
text = "4) Take case 2, but with the higher base AE pulse, giving 8.0*1.4 = 11.2 ms.<br>"
text = "The bottom line is that the CAE modifier is constant and independent of the base pulse, where on the other hand, the CAM modifier has a proportional effect on the AE, bigger base pulse means bigger result.<br>"
text = "This value is stored in the 'ACMULT' variable in MS.<br>"
text = "<br><strong>Decel Fuel Amount (%)</strong><br>"
text = "When you let off the throttle rapidly (that is the closing rate exceeds TPSDOT Thresh) and the engine is turning faster than 1500 RPM, then deceleration fuel cutoff is performed by MS. Deceleration fuel amount is multiplied by the "normal" pulse width, that is, if the calculated pulse is 12.0 ms and you have 20% decel amount, then the resulting pulse width is 2.4 ms. A value of 100% causes the fuel to remain at its calculated value, and can cure bucking on deceleration in vehicles with manual transmissions; those with automatic transmissions may benefit in fuel economy by using values below 100%.<br>"
text = "The MS variable "TPSDQ" holds this value as a percentage. <br>"
text = "<br><strong>Acceleration Enrichment Bins (ms)</strong><br>"
text = "These bins specify the actual enrichment in terms of pulse width. They are linearly interpolated to determine a value that is ultimately added to the computed pulse width.<br>"
text = "The array of values is called "TPSAQ" as stored in MS."
[CurveEditor]
;time-based accel enrichment
curve = time_accel_tpsdot_curve, "TPS based AE"
columnLabel = "TPSdot", "Added"
xAxis = 0, 1200, 6
yAxis = 0, 48, 4
xBins = taeBins, TPSdot
yBins = taeRates
;gauge = cltGauge
[TableEditor]
; table_id, map3d_id, "title", page
table = veTableTbl, veTableMap, "VE Table", 1
; constant, variable
xBins = rpmBins, rpm
#if SPEED_DENSITY
yBins = mapBins, map
#else
yBins = tpsBins, throttle
#endif
zBins = veTable
gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = sparkTbl, sparkMap, "Ignition Advance Table", 2
xBins = rpmBins2, rpm
#if SPEED_DENSITY
yBins = mapBins2, map
#else ALPHA_N
yBins = tpsBins2, throttle
#endif
zBins = advTable1
gridHeight = 3.0
upDownLabel = "ADVANCED", "RETARDED"
;-------------------------------------------------------------------------------
[GaugeConfigurations]
;-------------------------------------------------------------------------------
; Notes on some of the gauges.
;
; The accelEnrichGauge is now a composite of both acceleration enrichment
; and deceleration enleanment numbers. See the definition of the variable
; accDecEnrich in the OutputChannels section.
;
; David Hooke contributed the lambda gauge and associated transfer
; function files.
;
; "The lambda gauge is the best way (my opinion) to report data from a
; wide band EGO gauge, it standardizes the output irrespective of fuel
; or mix of fuels, so you needn't do any brainwork to know if your 75%
; gasoline and 25% methanol is rich at 10:1 or not.
;
; "Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu)."
;-------------------------------------------------------------------------------
; Define a gauge's characteristics here, then go to a specific layout
; block (Tuning or FrontPage) and use the name you've defined here to
; display that gauge in a particular position.
;
; Name = Case-sensitive, user-defined name for this gauge configuration.
; Var = Case-sensitive name of variable to be displayed, see the
; OutputChannels block in this file for possible values.
; Title = Title displayed at the top of the gauge.
; Units = Units displayed below value on gauge.
; Lo = Lower scale limit of gauge.
; Hi = Upper scale limit of gauge.
; LoD = Lower limit at which danger color is used for gauge background.
; LoW = Lower limit at which warning color is used.
; HiW = Upper limit at which warning color is used.
; HiD = Upper limit at which danger color is used.
; vd = Decimal places in displayed value
; ld = Label decimal places for display of Lo and Hi, above.
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
baroADCGauge = baroADC, "Barometer ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
mapADCGauge = mapADC, "MAP ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#matADCGauge = matADC, "MAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#cltADCGauge = cltADC, "CLT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#batVoltGauge = batteryVoltage, "BAT V", "", 0, 255, -1, -1, 256, 256, 0, 0
;#if NARROW_BAND_EGO
; egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
;#else
; egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
;#endif
;lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0
afrGauge = afr, "Air:Fuel Ratio", "", 7, 25, 12, 13, 15, 16, 2, 2
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0
dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 85, 90, 1, 1
egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0
gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1
tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0
throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0
tpsGauge = tps, "Throttle Position2", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0
veBucketGauge = veTuneValue, "VE Value", "%", 0, 120, -1, -1, 999, 999, 0, 0
veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0
voltMeter = batteryVoltage,"Battery Voltage", "volts", 0, 25, 8, 9, 15, 16, 2, 2
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "TEMP", -40, 120, -15, 0, 95, 105, 0, 0
matGauge = mat, "Manifold Air Temp", "TEMP", -40, 110, -15, 0, 95, 100, 0, 0
#else
cltGauge = coolant, "Coolant Temp", "TEMP", -40, 250, 0, 30, 200, 220, 0, 0
matGauge = mat, "Manifold Air Temp", "TEMP", -40, 215, 0, 30, 200, 210, 0, 0
#endif
advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0,
loopGauge = loopsPerSecond,"Main loop speed", "Loops/S" , 0, 20000, -1, 500,1800, 4000, 0, 0
memoryGauge = freeRAM, "Free memory", "bytes" , 0, 8000, -1, 1000,8000, 1000, 0, 0
;-------------------------------------------------------------------------------
[FrontPage]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = tachometer
#if SPEED_DENSITY
gauge2 = throttleGauge
#else
gauge2 = tpsGauge
#endif
gauge3 = pulseWidthGauge
gauge4 = dutyCycleGauge
gauge5 = mapGauge
gauge6 = matGauge
gauge7 = cltGauge
gauge8 = gammaEnrichGauge
;----------------------------------------------------------------------------
; Indicators
; expr off-label on-label, off-bg, off-fg, on-bg, on-fg
indicator = { ready }, "Not Ready", "Ready", white, black, green, black
indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black
indicator = { startw }, "ASE OFF", "ASE", white, black, green, black
indicator = { warmup }, "WUE OFF", "WUE", white, black, green, black
indicator = { tpsaccaen }, "TPS Accel", "TPS Accel", white, black, green, black
indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black
indicator = { tpsaccden }, "TPS Decel", "TPS Decel", white, black, green, black
indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black
indicator = { tps > tpsflood }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black
;-------------------------------------------------------------------------------
[RunTime]
barHysteresis = 2.5 ; Seconds
#if CELSIUS
coolantBar = -40, 100
matBar = -40, 100
#else
coolantBar = -40, 215
matBar = -40, 215
#endif
batteryBar = 6, 15
dutyCycleBar = 0, 100
#if NARROW_BAND_EGO
egoBar = 0, 1.0
#else
egoBar = 0, 5.0
#endif
gammaEBar = 0, 200
mapBar = 0, 255
pulseWidthBar = 0, 25.5
rpmBar = 0, 8000
throttleBar = 0, 100
egoCorrBar = 0, 200
baroCorrBar = 0, 200
warmupCorrBar = 0, 200
airdenCorrBar = 0, 200
veCorrBar = 0, 200
accCorrBar = 0, 100
;-------------------------------------------------------------------------------
[Tuning]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
font = "Courier", 14
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
;----------------------------------------------------------------------------
; Notes on tuning screen gauges:
; pageButtons = Labels for radio buttons at bottom of tuning dialog.
;
; Gauge 2 previously switched automatically to be tpsGauge when alpha-n
; was enabled, but you need to do it manually now.
;----------------------------------------------------------------------------
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&EGO", "&WUE", "PW&1", "PW&2"
gauge1 = tachometer, tachometer, tachometer, tachometer
gauge2 = mapGauge, mapGauge, mapGauge, mapGauge
gauge3 = egoGauge, egoGauge, egoGauge, egoGauge
gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidthGauge, pulseWidthGauge
gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge
gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycleGauge, dutyCycleGauge
;-------------------------------------------------------------------------------
[OutputChannels]
; The number of bytes MegaTune should expect as a result
; of sending the "A" command to MegaSquirt is determined
; by the value of ochBlockSize, so be very careful when
; you change it.
deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "A"
ochBlockSize = 28
secl = scalar, U08, 0, "sec", 1.000, 0.000
squirt = scalar, U08, 1, "bits", 1.000, 0.000
engine = scalar, U08, 2, "bits", 1.000, 0.000
ready = bits, U08, 2, [0:0]
crank = bits, U08, 2, [1:1]
startw = bits, U08, 2, [2:2]
warmup = bits, U08, 2, [3:3]
tpsaccaen = bits, U08, 2, [4:4]
tpsaccden = bits, U08, 2, [5:5]
mapaccaen = bits, U08, 2, [6:6]
mapaccden = bits, U08, 2, [7:7]
baroADC = scalar, U08, 3, "ADC", 1.000, 0.000
mapADC = scalar, U08, 4, "ADC", 1.000, 0.000
#matADC = scalar, U08, 5, "ADC", 1.000, 0.000
#cltADC = scalar, U08, 6, "ADC", 1.000, 0.000
#if CELSIUS
matRaw = scalar, U08, 5, "°C", 1.000, 0.000
coolantRaw = scalar, U08, 6, "°C", 1.000, 0.000
#else
matRaw = scalar, U08, 5, "°F", 1.000, 0.000
coolantRaw = scalar, U08, 6, "°F", 1.000, 0.000
#endif
tpsADC = scalar, U08, 7, "ADC", 1.000, 0.000
batteryVoltage = scalar, U08, 8, "V", 0.100, 0.000
#egoADC = scalar, U08, 9, "ADC", 1.000, 0.000
afr = scalar, U08, 9, "O2", 0.100, 0.000
egoCorrection = scalar, U08, 10, "%", 1.000, 0.000
airCorrection = scalar, U08, 11, "%", 1.000, 0.000
warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000
rpm100 = scalar, U08, 13, "r100", 1.000, 0.000
pulseWidth = scalar, U08, 14, "ms", 0.2, 0.000
accelEnrich = scalar, U08, 15, "%", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr = scalar, U08, 18, "%", 1.000, 0.000
blank1 = scalar, U08, 19 ; Raw inputs, as they come from MS.
blank2 = scalar, U08, 20
TPSdot = scalar, U08, 21, "%/s", 0.100, 0.000
advance = scalar, U08, 22, "deg", 1.000, 0.000
tps = scalar, U08, 23, "%", 1.000, 0.000
loopsPerSecond = scalar, S16, 24, "loops", 1.000, 0.000
freeRAM = scalar, S16, 26, "bytes", 1.000, 0.000
; Computed output channels. See "megatuneExamples.ini" for all the
; pre-defined variables, search for "???" and you'll see them.
accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct : 100) }
#batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage.
coolant = { coolantRaw - 40 } ; Coolant sensor temperature in user units.
mat = { matRaw - 40 } ; Manifold temperature in user units.
; egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage.
rpm = { rpm100*100 } ; True RPM.
time = { timeNow } ; "timeNow" is a parameterless built-in function.
;loopsPerSecond = { loopsPerSecond10*10 } ; True number of mainloops per second
afrtarget = { 0 }
; #include "lambdaSensors.ini"
#if MPX4250
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa.
#else
barometer = { table(baroADC, "kpafactor4115.inc") }
map = { table(mapADC, "kpafactor4115.inc") }
#endif
; throttle = { table(tpsADC, "throttlefactor.inc") }
throttle = { tps }, "%"
idleDC = { (coolant < fastIdleT) * 100 }
altDiv = { alternate ? 2 : 1 }
cycleTime = { 60000.0 / rpm * (2.0-twoStroke) }
nSquirts = { nCylinders/divider }
dutyCycle = { 100.0*nSquirts/altDiv*pulseWidth/cycleTime }
#if EXPANDED_CLT_TEMP
clt_exp = { 1 }
#else
clt_exp = { 0 }
#endif
#if CELSIUS
cltlowlim = { clt_exp ? -40 : -40 }
clthighlim = { clt_exp ? 230 : 120 }
cltlowdang = { clt_exp ? 65 : 10 }
cltlowwarn = { clt_exp ? 93 : 65 }
clthighwarn = { clt_exp ? 162 : 93 }
clthighdang = { clt_exp ? 176 : 104 }
mathigh = { 110 }
#else ; fahrenheit
cltlowlim = { clt_exp ? -40 : -40 }
clthighlim = { clt_exp ? 450 : 250 }
cltlowdang = { clt_exp ? 150 : 50 }
cltlowwarn = { clt_exp ? 200 : 150 }
clthighwarn = { clt_exp ? 325 : 200 }
clthighdang = { clt_exp ? 350 : 220 }
mathigh = { 215 }
#endif
;-------------------------------------------------------------------------------
[Datalog]
; Full datalog.
;
; Default user-defined log emulates the full datalog.
;
; The entries are saved in the datalog file in the order in
; which they appear in the list below.
;
; Channel - Case sensitive name of output channel to be logged.
; Label - String written to header line of log. Be careful
; about changing these, as programs like MSLVV and
; MSTweak key off specific column names.
; Type - Data type of output, converted before writing.
; Format - C-style output format of data.
;
; Channel Label Type Format
; -------------- ---------- ----- ------
entry = time, "Time", float, "%.3f"
entry = secl, "SecL", int, "%d"
entry = rpm100, "RPM100", int, "%d"
entry = map, "MAP", int, "%d"
entry = tpsADC, "tpsADC", int, "%d"
entry = tps, "TPS", int, "%d"
entry = afr, "O2", float, "%.3f"
entry = mat, "MAT", float, "%.1f"
entry = coolant, "CLT", float, "%.1f"
entry = engine, "Engine", int, "%d"
entry = squirt, "Squirt", int, "%d"
entry = egoCorrection, "Gego", int, "%d"
entry = airCorrection, "Gair", int, "%d"
entry = warmupEnrich, "Gwarm", int, "%d"
entry = baroCorrection, "Gbaro", int, "%d"
entry = gammaEnrich, "Gammae", int, "%d"
entry = accDecEnrich, "TPSacc", int, "%d"
entry = veCurr, "VE", int, "%d"
entry = pulseWidth, "PW", float, "%.1f"
entry = blank2, "Unused", int, "%d"
entry = pulseWidth, "PW2", float, "%.1f"
entry = dutyCycle, "DutyCycle1", float, "%.1f"
entry = dutyCycle, "DutyCycle2", float, "%.1f"
entry = blank1, "tpsMin", int, "%d"
entry = blank2, "tpsMax", int, "%d"
entry = TPSdot, "TPS DOT", int, "%d"
entry = advance, "Ignition Advance", int,"%d"
[LoggerDefinition]
; valid logger types: composite, tooth, trigger, csv
;loggerDef = uniqueName, Display Name, type
loggerDef = tooth, "Tooth Logger", tooth
;dataReadCommand = "r\\x00\\xf4\\x00\\x00\\x04\\x00" ; standard TS command format
dataReadCommand = "T" ; Basic TS command format
dataReadTimeout = 10000 ; time in ms
;dataReadyCondition = { ( status3 & 0x02 ) == 0x02 }
;dataLength = 1024 ; in bytes, including headers, footers and data (not used)
;recordDef = headerLen. footerLen, recordLen
recordDef = 0, 0, 2; in bytes, the recordLen is for each record, currently limited to 4 bytes
;recordField = Name, HeaderName, startBit, bitCount, scale, units, updateCondition
recordField = toothGap, "ToothTime", 0, 8, 1.0, "uS"

View File

@ -1,149 +0,0 @@
/* FORD 1996 CKP crank signal simulator 36-1
by Ichabod mudd
*/
#include "Arduino.h"
#define PULSE_PIN 0
#define CAM_PIN 8
#define MPH_PIN 12
#define POT_PIN A0
#define teeth 60
#define missingTeeth 2
#define PULSE_DURATION 50
unsigned int MAX_DELAY;
unsigned int MIN_DELAY;
byte actualTeeth;
int mph_toggle = 1 ;
int val;
unsigned int pulse_gap;
int RPMdirection = 0;
// the setup routine runs once when you press reset:
void setup()
{
pinMode(PULSE_PIN, OUTPUT);
pinMode(CAM_PIN, OUTPUT);
pinMode(MPH_PIN, OUTPUT);
actualTeeth = teeth - missingTeeth;
if(actualTeeth == 58)
{
MAX_DELAY = 3500;
MIN_DELAY = 130;
}
else if(actualTeeth == 35)
{
MAX_DELAY = 4000;
MIN_DELAY = 29;
}
else if(actualTeeth == 11)
{
MAX_DELAY = 20000;
MIN_DELAY = 833;
}
Serial.begin(9600);
pulse_gap = MIN_DELAY;
}
//reluctor wheel
// subroutines first
//function to first go HiGH
void triggerHigh(int duration, int count)
{
switch (count)
{
case 1: // cam CMP pin 8
digitalWrite(CAM_PIN, HIGH);
break;
case 2:
digitalWrite(CAM_PIN, LOW);
digitalWrite(MPH_PIN, LOW); //VSS
break;
case 12:
digitalWrite(CAM_PIN, HIGH);
break;
case 13:
digitalWrite(CAM_PIN, LOW);
break;
case 24:
digitalWrite(CAM_PIN, HIGH);
break;
case 25:
digitalWrite(CAM_PIN, LOW);
break;
} // end cases
//hold CKP PIN high for this delay.
digitalWrite(PULSE_PIN, HIGH);
delayMicroseconds(PULSE_DURATION);
// now CKP go low
digitalWrite(PULSE_PIN, LOW);
// end function
}
//Simulates a 36 tooth reluctor wheel
//with a 1 tooth reference
// begin main loop program section
void loop()
{
// read potentiometer wiper pin 0?
// analog A/D channel 0
val = analogRead(POT_PIN);
pulse_gap = map(val, 0, 1023, MIN_DELAY, MAX_DELAY);
Serial.println(pulse_gap);
/*
if (RPMdirection == 0)
{
if (pulse_gap < MAX_DELAY) { pulse_gap++; }
else
{
RPMdirection = 1;
}
}
else
{
if (pulse_gap > MIN_DELAY) { pulse_gap--; }
else
{
RPMdirection = 0;
}
}
*/
// for loop 36 counts , 150 uS to 1000 uS or 5000 to 800 rpm
for (int i = 0; i < actualTeeth; i++)
{
// go high then low , in Symmetry
digitalWrite(PULSE_PIN, HIGH);
delayMicroseconds(PULSE_DURATION);
digitalWrite(PULSE_PIN, LOW);
if (pulse_gap < 15000) //delayMicroseconds() only works with values up to 16383. Switch to delay() at 15000 to be safe
{
delayMicroseconds( (pulse_gap - PULSE_DURATION) );
}
else
{
delay ( (pulse_gap - PULSE_DURATION) / 1000 );
}
}
// simulate the missing tooth next
delayMicroseconds( (pulse_gap * missingTeeth) );
}
// end main loop version 7 , now perfect 800 rpm to 5000
// added cam pulse 7/4/2013
// using Delay calls, suck but , this is easy.
// the switch case trick, gets the cam sensor working.
// the engine fires every 120 degr. on crank, 12 teeth, and 10 degr per tooth=120
// added MPH pin, for VSS signals to ECU

View File

@ -0,0 +1,217 @@
/*
Optimized digital functions for AVR microcontrollers
by Watterott electronic (www.watterott.com)
based on http://code.google.com/p/digitalwritefast
*/
#ifndef __digitalWriteFast_h_
#define __digitalWriteFast_h_ 1
#define ERROR_SEQUENCE 0b10101010 //digitalReadFast will return this value if pin number is not constant
// general macros/defines
#ifndef BIT_READ
# define BIT_READ(value, bit) ((value) & (1UL << (bit)))
#endif
#ifndef BIT_SET
# define BIT_SET(value, bit) ((value) |= (1UL << (bit)))
#endif
#ifndef BIT_CLEAR
# define BIT_CLEAR(value, bit) ((value) &= ~(1UL << (bit)))
#endif
#ifndef BIT_WRITE
# define BIT_WRITE(value, bit, bitvalue) (bitvalue ? BIT_SET(value, bit) : BIT_CLEAR(value, bit))
#endif
#ifndef SWAP
#define SWAP(x,y) do{ (x)=(x)^(y); (y)=(x)^(y); (x)=(x)^(y); }while(0)
#endif
// workarounds for ARM microcontrollers
#if (!defined(__AVR__) || defined(ARDUINO_ARCH_SAM))
#ifndef PROGMEM
# define PROGMEM
#endif
#ifndef PGM_P
# define PGM_P const char *
#endif
#ifndef PSTR
# define PSTR(str) (str)
#endif
#ifndef memcpy_P
# define memcpy_P(dest, src, num) memcpy((dest), (src), (num))
#endif
#ifndef strcpy_P
# define strcpy_P(dst, src) strcpy((dst), (src))
#endif
#ifndef strcat_P
# define strcat_P(dst, src) strcat((dst), (src))
#endif
#ifndef strcmp_P
# define strcmp_P(a, b) strcmp((a), (b))
#endif
#ifndef strcasecmp_P
# define strcasecmp_P(a, b) strcasecmp((a), (b))
#endif
#ifndef strncmp_P
# define strncmp_P(a, b, n) strncmp((a), (b), (n))
#endif
#ifndef strncasecmp_P
# define strncasecmp_P(a, b, n) strncasecmp((a), (b), (n))
#endif
#ifndef strstr_P
# define strstr_P(a, b) strstr((a), (b))
#endif
#ifndef strlen_P
# define strlen_P(a) strlen((a))
#endif
#ifndef sprintf_P
# define sprintf_P(s, f, ...) sprintf((s), (f), __VA_ARGS__)
#endif
#ifndef pgm_read_byte
# define pgm_read_byte(addr) (*(const unsigned char *)(addr))
#endif
#ifndef pgm_read_word
# define pgm_read_word(addr) (*(const unsigned short *)(addr))
#endif
#ifndef pgm_read_dword
# define pgm_read_dword(addr) (*(const unsigned long *)(addr))
#endif
#endif
// digital functions
// --- Arduino Mega ---
#if (defined(ARDUINO_AVR_MEGA) || \
defined(ARDUINO_AVR_MEGA1280) || \
defined(ARDUINO_AVR_MEGA2560) || \
defined(__AVR_ATmega1280__) || \
defined(__AVR_ATmega1281__) || \
defined(__AVR_ATmega2560__) || \
defined(__AVR_ATmega2561__))
#define UART_RX_PIN (0) //PE0
#define UART_TX_PIN (1) //PE1
#define I2C_SDA_PIN (20)
#define I2C_SCL_PIN (21)
#define SPI_HW_SS_PIN (53) //PB0
#define SPI_HW_MOSI_PIN (51) //PB2
#define SPI_HW_MISO_PIN (50) //PB3
#define SPI_HW_SCK_PIN (52) //PB1
#define __digitalPinToPortReg(P) \
(((P) >= 22 && (P) <= 29) ? &PORTA : \
((((P) >= 10 && (P) <= 13) || ((P) >= 50 && (P) <= 53)) ? &PORTB : \
(((P) >= 30 && (P) <= 37) ? &PORTC : \
((((P) >= 18 && (P) <= 21) || (P) == 38) ? &PORTD : \
((((P) >= 0 && (P) <= 3) || (P) == 5) ? &PORTE : \
(((P) >= 54 && (P) <= 61) ? &PORTF : \
((((P) >= 39 && (P) <= 41) || (P) == 4) ? &PORTG : \
((((P) >= 6 && (P) <= 9) || (P) == 16 || (P) == 17) ? &PORTH : \
(((P) == 14 || (P) == 15) ? &PORTJ : \
(((P) >= 62 && (P) <= 69) ? &PORTK : &PORTL))))))))))
#define __digitalPinToDDRReg(P) \
(((P) >= 22 && (P) <= 29) ? &DDRA : \
((((P) >= 10 && (P) <= 13) || ((P) >= 50 && (P) <= 53)) ? &DDRB : \
(((P) >= 30 && (P) <= 37) ? &DDRC : \
((((P) >= 18 && (P) <= 21) || (P) == 38) ? &DDRD : \
((((P) >= 0 && (P) <= 3) || (P) == 5) ? &DDRE : \
(((P) >= 54 && (P) <= 61) ? &DDRF : \
((((P) >= 39 && (P) <= 41) || (P) == 4) ? &DDRG : \
((((P) >= 6 && (P) <= 9) || (P) == 16 || (P) == 17) ? &DDRH : \
(((P) == 14 || (P) == 15) ? &DDRJ : \
(((P) >= 62 && (P) <= 69) ? &DDRK : &DDRL))))))))))
#define __digitalPinToPINReg(P) \
(((P) >= 22 && (P) <= 29) ? &PINA : \
((((P) >= 10 && (P) <= 13) || ((P) >= 50 && (P) <= 53)) ? &PINB : \
(((P) >= 30 && (P) <= 37) ? &PINC : \
((((P) >= 18 && (P) <= 21) || (P) == 38) ? &PIND : \
((((P) >= 0 && (P) <= 3) || (P) == 5) ? &PINE : \
(((P) >= 54 && (P) <= 61) ? &PINF : \
((((P) >= 39 && (P) <= 41) || (P) == 4) ? &PING : \
((((P) >= 6 && (P) <= 9) || (P) == 16 || (P) == 17) ? &PINH : \
(((P) == 14 || (P) == 15) ? &PINJ : \
(((P) >= 62 && (P) <= 69) ? &PINK : &PINL))))))))))
#define __digitalPinToBit(P) \
(((P) >= 7 && (P) <= 9) ? (P) - 3 : \
(((P) >= 10 && (P) <= 13) ? (P) - 6 : \
(((P) >= 22 && (P) <= 29) ? (P) - 22 : \
(((P) >= 30 && (P) <= 37) ? 37 - (P) : \
(((P) >= 39 && (P) <= 41) ? 41 - (P) : \
(((P) >= 42 && (P) <= 49) ? 49 - (P) : \
(((P) >= 50 && (P) <= 53) ? 53 - (P) : \
(((P) >= 54 && (P) <= 61) ? (P) - 54 : \
(((P) >= 62 && (P) <= 69) ? (P) - 62 : \
(((P) == 0 || (P) == 15 || (P) == 17 || (P) == 21) ? 0 : \
(((P) == 1 || (P) == 14 || (P) == 16 || (P) == 20) ? 1 : \
(((P) == 19) ? 2 : \
(((P) == 5 || (P) == 6 || (P) == 18) ? 3 : \
(((P) == 2) ? 4 : \
(((P) == 3 || (P) == 4) ? 5 : 7)))))))))))))))
// --- Other ---
#else
#define SPI_HW_SS_PIN SS
#define SPI_HW_MOSI_PIN MOSI
#define SPI_HW_MISO_PIN MISO
#define SPI_HW_SCK_PIN SCK
#endif
//#endif //#ifndef digitalPinToPortReg
//ref: http://forum.arduino.cc/index.php?topic=140409.msg1054868#msg1054868
//void OutputsErrorIfCalled( void ) __attribute__ (( error( "Line: "__line__ "Variable used for digitalWriteFast") ));
void NonConstantUsed( void ) __attribute__ (( error("") ));
#ifndef digitalWriteFast
#if (defined(__AVR__) || defined(ARDUINO_ARCH_AVR))
#define digitalWriteFast(P, V) \
if (__builtin_constant_p(P) && __builtin_constant_p(V)) { \
BIT_WRITE(*__digitalPinToPortReg(P), __digitalPinToBit(P), (V)); \
} else { \
NonConstantUsed(); \
}
#else
#define digitalWriteFast digitalWrite
#endif
#endif
#ifndef pinModeFast
#if (defined(__AVR__) || defined(ARDUINO_ARCH_AVR))
#define pinModeFast(P, V) \
if (__builtin_constant_p(P) && __builtin_constant_p(V)) { \
BIT_WRITE(*__digitalPinToDDRReg(P), __digitalPinToBit(P), (V)); \
} else { \
NonConstantUsed(); \
}
#else
#define pinModeFast pinMode
#endif
#endif
#ifndef digitalReadFast
#if (defined(__AVR__) || defined(ARDUINO_ARCH_AVR))
#define digitalReadFast(P) ( (byte) __digitalReadFast((P)) )
#define __digitalReadFast(P ) \
(__builtin_constant_p(P) ) ? ( \
( BIT_READ(*__digitalPinToPINReg(P), __digitalPinToBit(P))) ) : \
ERROR_SEQUENCE
#else
#define digitalReadFast digitalRead
#endif
#endif
#endif //__digitalWriteFast_h_