Merge branch 'master' into master

This commit is contained in:
Josh Stewart 2017-01-30 20:13:33 +11:00 committed by GitHub
commit 294192c52c
68 changed files with 119208 additions and 32298 deletions

View File

@ -24,15 +24,15 @@ void canCommand()
break;
case 'G': // this is the reply command sent by the Can interface
uint8_t Gdata;
//uint8_t Gdata;
while (Serial3.available() == 0) { }
cancmdfail = Serial3.read();
if (cancmdfail == 0)
{
{
//command request failed and/or data/device was not available
}
}
while (Serial3.available() == 0) { }
Gdata= Serial3.read();
//Gdata = Serial3.read();
break;
case 'L':

View File

@ -62,12 +62,12 @@ void command()
break;
case 'S': // send code version
Serial.print("Speeduino 2016.12-dev");
Serial.print("Speeduino 2017.01-dev");
currentStatus.secl = 0; //This is required in TS3 due to its stricter timings
break;
case 'Q': // send code version
Serial.print("speeduino 201612-dev");
Serial.print("speeduino 201701-dev");
break;
case 'V': // send VE table and constants in binary
@ -232,7 +232,7 @@ void sendValues(int packetlength, byte portNum)
response[13] = lowByte(currentStatus.RPM); //rpm HB
response[14] = highByte(currentStatus.RPM); //rpm LB
response[15] = currentStatus.TAEamount; //acceleration enrichment (%)
response[16] = 0x00; //Barometer correction (%)
response[16] = currentStatus.baro; //Barometer value
response[17] = currentStatus.corrections; //Total GammaE (%)
response[18] = currentStatus.VE; //Current VE 1 (%)
response[19] = currentStatus.afrTarget;
@ -724,20 +724,20 @@ void sendPage(bool useChar)
//trim1 table
for (int x = 0; x < 36; x++) { response[x] = trim1Table.values[5 - x / 6][x % 6]; }
for (int x = 36; x < 42; x++) { response[x] = byte(trim1Table.axisX[(x - 36)] / 100); }
for (int y = 42; y < 48; y++) { response[y] = byte(trim1Table.axisY[5 - (y - 42)]); }
for (int x = 36; x < 42; x++) { response[x] = byte(trim1Table.axisX[(x - 36)] / TABLE_RPM_MULTIPLIER); }
for (int y = 42; y < 48; y++) { response[y] = byte(trim1Table.axisY[5 - (y - 42)] / TABLE_LOAD_MULTIPLIER); }
//trim2 table
for (int x = 0; x < 36; x++) { response[x + 48] = trim2Table.values[5 - x / 6][x % 6]; }
for (int x = 36; x < 42; x++) { response[x + 48] = byte(trim2Table.axisX[(x - 36)] / 100); }
for (int y = 42; y < 48; y++) { response[y + 48] = byte(trim2Table.axisY[5 - (y - 42)]); }
for (int x = 36; x < 42; x++) { response[x + 48] = byte(trim2Table.axisX[(x - 36)] / TABLE_RPM_MULTIPLIER); }
for (int y = 42; y < 48; y++) { response[y + 48] = byte(trim2Table.axisY[5 - (y - 42)] / TABLE_LOAD_MULTIPLIER); }
//trim3 table
for (int x = 0; x < 36; x++) { response[x + 96] = trim3Table.values[5 - x / 6][x % 6]; }
for (int x = 36; x < 42; x++) { response[x + 96] = byte(trim3Table.axisX[(x - 36)] / 100); }
for (int y = 42; y < 48; y++) { response[y + 96] = byte(trim3Table.axisY[5 - (y - 42)]); }
for (int x = 36; x < 42; x++) { response[x + 96] = byte(trim3Table.axisX[(x - 36)] / TABLE_RPM_MULTIPLIER); }
for (int y = 42; y < 48; y++) { response[y + 96] = byte(trim3Table.axisY[5 - (y - 42)] / TABLE_LOAD_MULTIPLIER); }
//trim4 table
for (int x = 0; x < 36; x++) { response[x + 144] = trim4Table.values[5 - x / 6][x % 6]; }
for (int x = 36; x < 42; x++) { response[x + 144] = byte(trim4Table.axisX[(x - 36)] / 100); }
for (int y = 42; y < 48; y++) { response[y + 144] = byte(trim4Table.axisY[5 - (y - 42)]); }
for (int x = 36; x < 42; x++) { response[x + 144] = byte(trim4Table.axisX[(x - 36)] / TABLE_RPM_MULTIPLIER); }
for (int y = 42; y < 48; y++) { response[y + 144] = byte(trim4Table.axisY[5 - (y - 42)] / TABLE_LOAD_MULTIPLIER); }
Serial.write((byte *)&response, sizeof(response));
return;
}
@ -827,7 +827,7 @@ void sendPage(bool useChar)
//loop();
for (int x = 256; x < 272; x++) { response[x] = byte(currentTable.axisX[(x - 256)] / TABLE_RPM_MULTIPLIER); } //RPM Bins for VE table (Need to be dvidied by 100)
//loop();
for (int y = 272; y < 288; y++) { response[y] = byte(currentTable.axisY[15 - (y - 272)]); } //MAP or TPS bins for VE table
for (int y = 272; y < 288; y++) { response[y] = byte(currentTable.axisY[15 - (y - 272)] / TABLE_LOAD_MULTIPLIER); } //MAP or TPS bins for VE table
//loop();
Serial.write((byte *)&response, sizeof(response));
}

View File

@ -9,19 +9,25 @@ void initialiseCorrections();
byte correctionsFuel();
static inline byte correctionWUE(); //Warmup enrichment
static inline byte correctionCranking(); //Cranking enrichment
static inline byte correctionASE(); //After Start Enrichment
static inline byte correctionAccel(); //Acceleration Enrichment
static inline byte correctionsFloodClear(); //Check for flood clear on cranking
static inline byte correctionsAFRClosedLoop(); //Closed loop AFR adjustment
static inline byte correctionsFlex(); //Flex fuel adjustment
static inline byte correctionFloodClear(); //Check for flood clear on cranking
static inline byte correctionAFRClosedLoop(); //Closed loop AFR adjustment
static inline byte correctionFlex(); //Flex fuel adjustment
static inline byte correctionBatVoltage(); //Battery voltage correction
static inline byte correctionIATDensity(); //Inlet temp density correction
static inline byte correctionLaunch(); //Launch control correction
static inline bool correctionDFCO(); //Decelleration fuel cutoff
byte correctionsIgn();
static inline byte correctionsFixedTiming(byte);
static inline byte correctionsCrankingFixedTiming(byte);
static inline byte correctionsFlexTiming(byte);
static inline byte correctionsIATretard(byte);
static inline byte correctionsSoftRevLimit(byte);
static inline byte correctionsSoftLaunch(byte);
static inline int8_t correctionFixedTiming(int8_t);
static inline int8_t correctionCrankingFixedTiming(int8_t);
static inline int8_t correctionFlexTiming(int8_t);
static inline int8_t correctionIATretard(int8_t);
static inline int8_t correctionSoftRevLimit(int8_t);
static inline int8_t correctionSoftLaunch(int8_t);
static inline int8_t correctionSoftFlatShift(int8_t);
#endif // CORRECTIONS_H

View File

@ -54,26 +54,26 @@ byte correctionsFuel()
if (result != 100) { sumCorrections = (sumCorrections * result); activeCorrections++; }
if (activeCorrections == 3) { sumCorrections = sumCorrections / powint(100,activeCorrections); activeCorrections = 0; }
currentStatus.egoCorrection = correctionsAFRClosedLoop();
currentStatus.egoCorrection = correctionAFRClosedLoop();
if (currentStatus.egoCorrection != 100) { sumCorrections = (sumCorrections * currentStatus.egoCorrection); activeCorrections++; }
if (activeCorrections == 3) { sumCorrections = sumCorrections / powint(100,activeCorrections); activeCorrections = 0; }
currentStatus.batCorrection = correctionsBatVoltage();
currentStatus.batCorrection = correctionBatVoltage();
if (currentStatus.batCorrection != 100) { sumCorrections = (sumCorrections * currentStatus.batCorrection); activeCorrections++; }
if (activeCorrections == 3) { sumCorrections = sumCorrections / powint(100,activeCorrections); activeCorrections = 0; }
currentStatus.iatCorrection = correctionsIATDensity();
currentStatus.iatCorrection = correctionIATDensity();
if (currentStatus.iatCorrection != 100) { sumCorrections = (sumCorrections * currentStatus.iatCorrection); activeCorrections++; }
if (activeCorrections == 3) { sumCorrections = sumCorrections / powint(100,activeCorrections); activeCorrections = 0; }
currentStatus.flexCorrection = correctionsFlex();
currentStatus.flexCorrection = correctionFlex();
if (currentStatus.flexCorrection != 100) { sumCorrections = (sumCorrections * currentStatus.flexCorrection); activeCorrections++; }
if (activeCorrections == 3) { sumCorrections = sumCorrections / powint(100,activeCorrections); activeCorrections = 0; }
currentStatus.launchCorrection = correctionsLaunch();
currentStatus.launchCorrection = correctionLaunch();
if (currentStatus.launchCorrection != 100) { sumCorrections = (sumCorrections * currentStatus.launchCorrection); activeCorrections++; }
bitWrite(currentStatus.squirt, BIT_SQUIRT_DFCO, correctionsDFCO());
bitWrite(currentStatus.squirt, BIT_SQUIRT_DFCO, correctionDFCO());
if ( bitRead(currentStatus.squirt, BIT_SQUIRT_DFCO) ) { sumCorrections = 0; }
sumCorrections = sumCorrections / powint(100,activeCorrections);
@ -188,7 +188,7 @@ static inline byte correctionFloodClear()
Battery Voltage correction
Uses a 2D enrichment table (WUETable) where the X axis is engine temp and the Y axis is the amount of extra fuel to add
*/
static inline byte correctionsBatVoltage()
static inline byte correctionBatVoltage()
{
if (currentStatus.battery10 > (injectorVCorrectionTable.axisX[5])) { return injectorVCorrectionTable.values[injectorVCorrectionTable.xSize-1]; } //This prevents us doing the 2D lookup if the voltage is above maximum
return table2D_getValue(&injectorVCorrectionTable, currentStatus.battery10);
@ -198,7 +198,7 @@ static inline byte correctionsBatVoltage()
Simple temperature based corrections lookup based on the inlet air temperature.
This corrects for changes in air density from movement of the temperature
*/
static inline byte correctionsIATDensity()
static inline byte correctionIATDensity()
{
if ( (currentStatus.IAT + CALIBRATION_TEMPERATURE_OFFSET) > (IATDensityCorrectionTable.axisX[8])) { return IATDensityCorrectionTable.values[IATDensityCorrectionTable.xSize-1]; } //This prevents us doing the 2D lookup if the intake temp is above maximum
return table2D_getValue(&IATDensityCorrectionTable, currentStatus.IAT + CALIBRATION_TEMPERATURE_OFFSET); //currentStatus.IAT is the actual temperature, values in IATDensityCorrectionTable.axisX are temp+offset
@ -208,7 +208,7 @@ static inline byte correctionsIATDensity()
Launch control has a setting to increase the fuel load to assist in bringing up boost
This simple check applies the extra fuel if we're currently launching
*/
static inline byte correctionsLaunch()
static inline byte correctionLaunch()
{
if(currentStatus.launchingHard || currentStatus.launchingSoft) { return (100 + configPage3.lnchFuelAdd); }
else { return 100; }
@ -217,7 +217,7 @@ static inline byte correctionsLaunch()
/*
* Returns true if decelleration fuel cutoff should be on, false if its off
*/
static inline bool correctionsDFCO()
static inline bool correctionDFCO()
{
if ( !configPage2.dfcoEnabled ) { return false; } //If the DFCO option isn't turned on, always return false (off)
if ( bitRead(currentStatus.squirt, BIT_SQUIRT_DFCO) ) { return ( currentStatus.RPM > ( configPage2.dfcoRPM * 10) ) && ( currentStatus.TPS < configPage2.dfcoTPSThresh ); }
@ -228,7 +228,7 @@ static inline bool correctionsDFCO()
* Flex fuel adjustment to vary fuel based on ethanol content
* The amount of extra fuel required is a linear relationship based on the % of ethanol.
*/
static inline byte correctionsFlex()
static inline byte correctionFlex()
{
if(!configPage1.flexEnabled) { return 100; } //Check for flex being enabled
byte flexRange = configPage1.flexFuelHigh - configPage1.flexFuelLow;
@ -249,25 +249,24 @@ PID (Best suited to wideband sensors):
*/
static inline byte correctionsAFRClosedLoop()
static inline byte correctionAFRClosedLoop()
{
if( (configPage3.egoType == 0)) { return 100; } //egoType of 0 means no O2 sensor
currentStatus.afrTarget = currentStatus.O2; //Catch all incase the below doesn't run. This prevents the Include AFR option from doing crazy things if the AFR target conditions aren't met. This value is changed again below if all conditions are met.
//Check the ignition count to see whether the next step is required
if( (ignitionCount & (configPage3.egoCount - 1)) == 1 ) //This is the equivalent of ( (ignitionCount % configPage3.egoCount) == 0 ) but without the expensive modulus operation. ie It results in True every <egoCount> ignition loops. Note that it only works for power of two vlaues for egoCount
//if( (ignitionCount & (configPage3.egoCount - 1)) == 1 ) //This is the equivalent of ( (ignitionCount % configPage3.egoCount) == 0 ) but without the expensive modulus operation. ie It results in True every <egoCount> ignition loops. Note that it only works for power of two vlaues for egoCount
{
//Determine whether the Y axis of the AFR target table tshould be MAP (Speed-Density) or TPS (Alpha-N)
byte yValue;
if (configPage1.algorithm == 0) { yValue = currentStatus.MAP; }
else { yValue = currentStatus.TPS; }
currentStatus.afrTarget = get3DTableValue(&afrTable, yValue, currentStatus.RPM); //Perform the target lookup
//Check all other requirements for closed loop adjustments
if( (currentStatus.coolant > (int)(configPage3.egoTemp - CALIBRATION_TEMPERATURE_OFFSET)) && (currentStatus.RPM > (unsigned int)(configPage3.egoRPM * 100)) && (currentStatus.TPS < configPage3.egoTPSMax) && (currentStatus.O2 < configPage3.ego_max) && (currentStatus.O2 > configPage3.ego_min) && (currentStatus.runSecs > configPage3.ego_sdelay) )
{
//Determine whether the Y axis of the AFR target table tshould be MAP (Speed-Density) or TPS (Alpha-N)
byte yValue;
if (configPage1.algorithm == 0) { yValue = currentStatus.MAP; }
else { yValue = currentStatus.TPS; }
currentStatus.afrTarget = get3DTableValue(&afrTable, yValue, currentStatus.RPM); //Perform the target lookup
//Check which algorithm is used, simple or PID
if (configPage3.egoAlgorithm == 0)
{
@ -315,41 +314,45 @@ static inline byte correctionsAFRClosedLoop()
//******************************** IGNITION ADVANCE CORRECTIONS ********************************
byte correctionsIgn(byte advance)
int8_t correctionsIgn(int8_t advance)
{
advance = correctionsFlexTiming(advance);
advance = correctionsIATretard(advance);
advance = correctionsSoftRevLimit(advance);
advance = correctionsSoftLaunch(advance);
advance = correctionFlexTiming(advance);
advance = correctionIATretard(advance);
advance = correctionSoftRevLimit(advance);
advance = correctionSoftLaunch(advance);
advance = correctionSoftFlatShift(advance);
//Fixed timing check must go last
advance = correctionsFixedTiming(advance);
advance = correctionsCrankingFixedTiming(advance); //This overrrides the regular fixed timing, must come last
advance = correctionFixedTiming(advance);
advance = correctionCrankingFixedTiming(advance); //This overrrides the regular fixed timing, must come last
return advance;
}
static inline byte correctionsFixedTiming(byte advance)
static inline int8_t correctionFixedTiming(int8_t advance)
{
if (configPage2.FixAng != 0) { return configPage2.FixAng; } //Check whether the user has set a fixed timing angle
return advance;
}
static inline byte correctionsCrankingFixedTiming(byte advance)
static inline int8_t correctionCrankingFixedTiming(int8_t advance)
{
if ( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) ) { return configPage2.CrankAng; } //Use the fixed cranking ignition angle
return advance;
}
static inline byte correctionsFlexTiming(byte advance)
static inline int8_t correctionFlexTiming(int8_t advance)
{
if(!configPage1.flexEnabled) { return advance; } //Check for flex being enabled
byte flexRange = configPage1.flexAdvHigh - configPage1.flexAdvLow;
currentStatus.flexIgnCorrection = percentage(currentStatus.ethanolPct, flexRange);
if (currentStatus.ethanolPct != 0) { currentStatus.flexIgnCorrection = percentage(currentStatus.ethanolPct, flexRange); }
else { currentStatus.flexIgnCorrection = 0; }
return advance + currentStatus.flexIgnCorrection;
}
static inline byte correctionsIATretard(byte advance)
static inline int8_t correctionIATretard(int8_t advance)
{
//Adjust the advance based on IAT. If the adjustment amount is greater than the current advance, just set advance to 0
byte advanceIATadjust = table2D_getValue(&IATRetardTable, currentStatus.IAT);
@ -357,16 +360,37 @@ static inline byte correctionsIATretard(byte advance)
else { return 0; }
}
static inline byte correctionsSoftRevLimit(byte advance)
static inline int8_t correctionSoftRevLimit(int8_t advance)
{
BIT_CLEAR(currentStatus.spark, BIT_SPARK_SFTLIM);
if (currentStatus.RPM > ((unsigned int)(configPage2.SoftRevLim) * 100) ) { BIT_SET(currentStatus.spark, BIT_SPARK_SFTLIM); return configPage2.SoftLimRetard; } //Softcut RPM limit (If we're above softcut limit, delay timing by configured number of degrees)
return advance;
}
static inline byte correctionsSoftLaunch(byte advance)
static inline int8_t correctionSoftLaunch(int8_t advance)
{
if (currentStatus.launchingSoft) { return configPage3.lnchRetard; } //SoftCut rev limit for 2-step launch control
//SoftCut rev limit for 2-step launch control.
if (configPage3.launchEnabled && clutchTrigger && (currentStatus.clutchEngagedRPM < ((unsigned int)(configPage3.flatSArm) * 100)) && (currentStatus.RPM > ((unsigned int)(configPage3.lnchSoftLim) * 100)) )
{
currentStatus.launchingSoft = true;
BIT_SET(currentStatus.spark, BIT_SPARK_SLAUNCH);
return configPage3.lnchRetard;
}
currentStatus.launchingSoft = false;
BIT_CLEAR(currentStatus.spark, BIT_SPARK_SLAUNCH);
return advance;
}
static inline int8_t correctionSoftFlatShift(int8_t advance)
{
if(configPage3.flatSEnable && clutchTrigger && (currentStatus.clutchEngagedRPM > ((unsigned int)(configPage3.flatSArm) * 100)) && (currentStatus.RPM > (currentStatus.clutchEngagedRPM-configPage3.flatSSoftWin) ) )
{
BIT_SET(currentStatus.spark2, BIT_SPARK2_FLATSS);
return configPage3.flatSRetard;
}
BIT_CLEAR(currentStatus.spark2, BIT_SPARK2_FLATSS);
return advance;
}

View File

@ -18,6 +18,7 @@ void triggerSec_DualWheel();
int getRPM_DualWheel();
int getCrankAngle_DualWheel(int timePerDegree);
unsigned long MAX_STALL_TIME = 500000UL; //The maximum time (in uS) that the system will continue to function before the engine is considered stalled/stopped. This is unique to each decoder, depending on the number of teeth etc. 500000 (half a second) is used as the default value, most decoders will be much less.
volatile unsigned long curTime;
volatile unsigned long curGap;
@ -45,7 +46,7 @@ volatile unsigned long secondaryLastToothTime = 0; //The time (micros()) that th
volatile int triggerActualTeeth;
volatile unsigned long triggerFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering)
unsigned int triggerSecFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering) for the secondary input
int triggerToothAngle; //The number of crank degrees that elapse per tooth
volatile int triggerToothAngle; //The number of crank degrees that elapse per tooth
unsigned long revolutionTime; //The time in uS that one revolution would take at current speed (The time tooth 1 was last seen, minus the time it was seen prior to that)
bool secondDerivEnabled; //The use of the 2nd derivative calculation is limited to certain decoders. This is set to either true or false in each decoders setup routine
bool decoderIsSequential; //Whether or not the decoder supports sequential operation

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,8 @@ A full copy of the license may be found in the projects root directory
* Sets the next available error
* Returns the error number or 0 if there is no more room for errors
*/
#include "errors.h"
byte setError(byte errorID)
{
if(errorCount < MAX_ERRORS)

View File

@ -1,27 +1,20 @@
#ifndef GLOBALS_H
#define GLOBALS_H
#include <Arduino.h>
#include "table.h"
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
#define CORE_AVR
#endif
//const byte ms_version = 20;
const byte signature = 20;
//const char signature[] = "speeduino";
const char displaySignature[] = "speeduino 201609-dev";
const char TSfirmwareVersion[] = "Speeduino 2016.09";
const byte data_structure_version = 2; //This identifies the data structure when reading / writing.
const byte page_size = 64;
const int map_page_size = 288;
//Handy bitsetting macros
#define BIT_SET(a,b) ((a) |= (1<<(b)))
#define BIT_CLEAR(a,b) ((a) &= ~(1<<(b)))
#define BIT_CHECK(var,pos) ((var) & (1<<(pos)))
#define MS_IN_MINUTE 60000
#define US_IN_MINUTE 60000000
//Define bit positions within engine virable
#define BIT_ENGINE_RUN 0 // Engine running
#define BIT_ENGINE_CRANK 1 // Engine cranking
@ -52,6 +45,15 @@ const int map_page_size = 288;
#define BIT_SPARK_IDLE 6 // idle on
#define BIT_SPARK_SYNC 7 // Whether engine has sync or not
#define BIT_SPARK2_FLATSH 0 //Flat shift hard cut
#define BIT_SPARK2_FLATSS 1 //Flat shift soft cut
#define BIT_SPARK2_UNUSED3 2
#define BIT_SPARK2_UNUSED4 3
#define BIT_SPARK2_UNUSED5 4
#define BIT_SPARK2_UNUSED6 5
#define BIT_SPARK2_UNUSED7 6
#define BIT_SPARK2_UNUSED8 7
#define VALID_MAP_MAX 1022 //The largest ADC value that is valid for the MAP sensor
#define VALID_MAP_MIN 2 //The smallest ADC value that is valid for the MAP sensor
@ -74,6 +76,8 @@ const int map_page_size = 288;
#define EVEN_FIRE 0
#define ODD_FIRE 1
#define MAX_RPM 18000 //This is the maximum rpm that the ECU will attempt to run at. It is NOT related to the rev limiter, but is instead dictates how fast certain operations will be allowed to run. Lower number gives better performance
//Table sizes
#define CALIBRATION_TABLE_SIZE 512
#define CALIBRATION_TEMPERATURE_OFFSET 40 // All temperature measurements are stored offset by 40 degrees. This is so we can use an unsigned byte (0-255) to represent temperature ranges from -40 to 215
@ -81,6 +85,32 @@ const int map_page_size = 288;
#define SERIAL_BUFFER_THRESHOLD 32 // When the serial buffer is filled to greater than this threshold value, the serial processing operations will be performed more urgently in order to avoid it overflowing. Serial buffer is 64 bytes long, so the threshold is set at half this as a reasonable figure
const byte signature = 20;
//const char signature[] = "speeduino";
const char displaySignature[] = "speeduino 201609-dev";
const char TSfirmwareVersion[] = "Speeduino 2016.09";
const byte data_structure_version = 2; //This identifies the data structure when reading / writing.
const byte page_size = 64;
const int map_page_size = 288;
struct table3D fuelTable; //16x16 fuel map
struct table3D ignitionTable; //16x16 ignition map
struct table3D afrTable; //16x16 afr target map
struct table3D boostTable; //8x8 boost map
struct table3D vvtTable; //8x8 vvt map
struct table3D trim1Table; //6x6 Fuel trim 1 map
struct table3D trim2Table; //6x6 Fuel trim 2 map
struct table3D trim3Table; //6x6 Fuel trim 3 map
struct table3D trim4Table; //6x6 Fuel trim 4 map
struct table2D taeTable; //4 bin TPS Acceleration Enrichment map (2D)
struct table2D WUETable; //10 bin Warm Up Enrichment map (2D)
struct table2D dwellVCorrectionTable; //6 bin dwell voltage correction (2D)
struct table2D injectorVCorrectionTable; //6 bin injector voltage correction (2D)
struct table2D IATDensityCorrectionTable; //9 bin inlet air temperature density correction (2D)
struct table2D IATRetardTable; //6 bin ignition adjustment based on inlet air temperature (2D)
//These are for the direct port manipulation of the injectors and coils
volatile byte *inj1_pin_port;
volatile byte inj1_pin_mask;
@ -104,6 +134,9 @@ volatile byte ign4_pin_mask;
volatile byte *ign5_pin_port;
volatile byte ign5_pin_mask;
volatile byte *tach_pin_port;
volatile byte tach_pin_mask;
//The status struct contains the current values for all 'live' variables
//In current version this is 64 bytes
struct statuses {
@ -112,14 +145,14 @@ struct statuses {
long longRPM;
int mapADC;
long MAP; //Has to be a long for PID calcs (Boost control)
int baro; //Barometric pressure is simply the inital MAP reading, taken before the engine is running
byte baro; //Barometric pressure is simply the inital MAP reading, taken before the engine is running
byte TPS; //The current TPS reading (0% - 100%)
byte TPSlast; //The previous TPS reading
unsigned long TPS_time; //The time the TPS sample was taken
unsigned long TPSlast_time; //The time the previous TPS sample was taken
byte tpsADC; //0-255 byte representation of the TPS
byte tpsDOT;
int rpmDOT;
volatile int rpmDOT;
byte VE;
byte O2;
byte O2_2;
@ -133,7 +166,7 @@ struct statuses {
int dwell;
byte dwellCorrection; //The amount of correction being applied to the dwell time.
byte battery10; //The current BRV in volts (multiplied by 10. Eg 12.5V = 125)
byte advance;
int8_t advance; //Signed 8 bit as advance can now go negative (ATDC)
byte corrections;
byte TAEamount; //The amount of accleration enrichment currently being applied
byte egoCorrection; //The amount of closed loop AFR enrichment currently being applied
@ -146,10 +179,11 @@ struct statuses {
byte afrTarget;
byte idleDuty;
bool fanOn; //Whether or not the fan is turned on
byte ethanolPct; //Ethanol reading (if enabled). 0 = No ethanol, 100 = pure ethanol. Eg E85 = 85.
volatile byte ethanolPct; //Ethanol reading (if enabled). 0 = No ethanol, 100 = pure ethanol. Eg E85 = 85.
unsigned long TAEEndTime; //The target end time used whenever TAE is turned on
volatile byte squirt;
volatile byte spark;
volatile byte spark2;
byte engine;
unsigned int PW1; //In uS
unsigned int PW2; //In uS
@ -161,6 +195,9 @@ struct statuses {
boolean launchingSoft; //True when in launch control soft limit mode
boolean launchingHard; //True when in launch control hard limit mode
int freeRAM;
unsigned int clutchEngagedRPM;
bool flatShiftingHard;
volatile byte startRevolutions; //A counter for how many revolutions have been completed since sync was achieved.
//Helpful bitwise operations:
//Useful reference: http://playground.arduino.cc/Code/BitMath
@ -169,7 +206,7 @@ struct statuses {
// x |= (1 << n); // forces nth bit of x to be 1. all other bits left alone.
};
struct statuses currentStatus; //The global status object
//Page 1 of the config - See the ini file for further reference
//This mostly covers off variables that are required for fuel
@ -183,7 +220,7 @@ struct config1 {
byte crankingPct; //Cranking enrichment
byte pinMapping; // The board / ping mapping to be used
byte tachoPin : 6; //Custom pin setting for tacho output
byte unused16 : 2;
byte tachoDiv : 2; //Whether to change the tacho speed
byte tdePct; // TPS decelleration (%)
byte taeColdA;
byte tpsThresh;
@ -341,8 +378,10 @@ struct config3 {
byte ego_sdelay; //Time in seconds after engine starts that closed loop becomes available
byte egoRPM; //RPM must be above this for closed loop to function
byte egoTPSMax; //TPS must be below this for closed loop to function
byte egoLoadMax; //Load (TPS or MAP) must be below this for closed loop to function
byte egoLoadMin; //Load (TPS or MAP) must be above this for closed loop to function
byte boostPin : 6;
byte unused6_13 : 2;
byte vvtPin : 6;
byte unused6_14 : 2;
byte voltageCorrectionBins[6]; //X axis bins for voltage correction tables
byte injVoltageCorrectionValues[6]; //Correction table for injector PW vs battery voltage
byte airDenBins[9];
@ -356,7 +395,7 @@ struct config3 {
byte launchHiLo : 1;
byte lnchSoftLim;
byte lnchRetard;
int8_t lnchRetard; //Allow for negative advance value (ATDC)
byte lnchHardLim;
byte lnchFuelAdd;
@ -372,10 +411,11 @@ struct config3 {
byte lnchPullRes : 2;
byte fuelTrimEnabled : 1;
byte unused60 : 5;
byte unused61;
byte unused62;
byte unused63;
byte flatSEnable : 1;
byte unused60 : 4;
byte flatSSoftWin;
byte flatSRetard;
byte flatSArm;
};

7
idle.h
View File

@ -1,4 +1,8 @@
#ifndef IDLE_H
#define IDLE_H
#include "globals.h"
#include "table.h"
#define STEPPER_FORWARD 0
#define STEPPER_BACKWARD 1
@ -23,6 +27,7 @@ struct table2D iacCrankDutyTable;
struct StepperIdle idleStepper;
bool idleOn; //Simply tracks whether idle was on last time around
byte idleInitComplete = 99; //TRacks which idle method was initialised. 99 is a method that will never exist
unsigned int iacStepTime;
unsigned int completedHomeSteps;
@ -39,3 +44,5 @@ long idle_cl_target_rpm;
void initialiseIdle();
static inline void disableIdle();
static inline void enableIdle();
#endif

View File

@ -3,6 +3,7 @@ Speeduino - Simple engine management for the Arduino Mega 2560 platform
Copyright (C) Josh Stewart
A full copy of the license may be found in the projects root directory
*/
#include "idle.h"
/*
These functions cover the PWM and stepper idle control
@ -110,11 +111,13 @@ void initialiseIdle()
idleStepper.stepperStatus = SOFF;
break;
}
idleInitComplete = configPage4.iacAlgorithm; //Sets which idle method was initialised
}
void idleControl()
{
if(idleInitComplete != configPage4.iacAlgorithm) { initialiseIdle(); }
switch(configPage4.iacAlgorithm)
{
case 0: //Case 0 is no idle control ('None')

6
math.h
View File

@ -1,6 +0,0 @@
#ifndef MATH_H
#define MATH_H
int fastMap1023toX(unsigned long x, int out_max);
#endif

7
maths.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef MATH_H
#define MATH_H
int fastMap1023toX(unsigned long, int);
unsigned long percentage(byte, unsigned long);
#endif

View File

@ -1,4 +1,6 @@
#include "maths.h"
#define DIV_ROUND_CLOSEST(n, d) ((((n) < 0) ^ ((d) < 0)) ? (((n) - (d)/2)/(d)) : (((n) + (d)/2)/(d)))
//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)

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<msq xmlns="http://www.msefi.com/:msq">
<bibliography author="TunerStudio MS(Beta) 3.0.14 - EFI Analytics, Inc." tuneComment="" writeDate="Mon Dec 05 20:48:23 AEDT 2016"/>
<versionInfo fileFormat="5.0" firmwareInfo="Speeduino+2016.11" nPages="9" signature="speeduino 201611"/>
<bibliography author="TunerStudio MS(Beta) 3.0.16 - EFI Analytics, Inc." tuneComment="" writeDate="Thu Jan 05 17:17:26 AEDT 2017"/>
<versionInfo fileFormat="5.0" firmwareInfo="Speeduino+2016.12-dev" nPages="9" signature="speeduino 201612"/>
<page>
<pcVariable name="tsCanId">"0"</pcVariable>
</page>
@ -84,7 +84,7 @@
<constant name="unused2-16f">"One"</constant>
<constant digits="1" name="tdePct" units="ms">3.2</constant>
<constant digits="1" name="taeColdA" units="ms">0.0</constant>
<constant digits="0" name="tpsThresh" units="%/s">100.0</constant>
<constant digits="0" name="tpsThresh" units="%/s">70.0</constant>
<constant digits="0" name="taeTime" units="ms">200.0</constant>
<constant name="display">"Unused"</constant>
<constant name="display1">"VE"</constant>
@ -94,15 +94,15 @@
<constant name="display5">"RPM"</constant>
<constant name="displayB1">"RPM"</constant>
<constant name="displayB2">"RPM"</constant>
<constant digits="1" name="reqFuel" units="ms">12.8</constant>
<constant digits="1" name="reqFuel" units="ms">12.2</constant>
<constant digits="0" name="divider">2.0</constant>
<constant name="alternate">"Alternating"</constant>
<constant name="multiplyMAP">"No"</constant>
<constant name="multiplyMAP">"Yes"</constant>
<constant name="includeAFR">"No"</constant>
<constant name="unused2-26d">"No"</constant>
<constant name="unused2-26e">"No"</constant>
<constant name="unused2-26f">"No"</constant>
<constant name="unused2-26g">"No"</constant>
<constant name="unused2-26g">"Yes"</constant>
<constant name="unused2-26h">"No"</constant>
<constant digits="1" name="injOpen" units="ms">1.0</constant>
<constant digits="0" name="inj1Ang" units="deg">355.0</constant>
@ -123,7 +123,7 @@
<constant name="injLayout">"Paired"</constant>
<constant name="canEnable">"Disable"</constant>
<constant name="unused2-38h">"No"</constant>
<constant digits="1" name="primePulse" units="ms">4.0</constant>
<constant digits="1" name="primePulse" units="ms">1.0</constant>
<constant digits="0" name="dutyLim" units="%">85.0</constant>
<constant digits="0" name="flexFreqLow" units="Hz">50.0</constant>
<constant digits="0" name="flexFreqHigh" units="Hz">150.0</constant>
@ -132,7 +132,7 @@
<constant digits="0" name="tpsMax" units="ADC">230.0</constant>
<constant digits="0" name="mapMin" units="kpa">10.0</constant>
<constant digits="0" name="mapMax" units="kpa">260.0</constant>
<constant digits="0" name="fpPrime" units="s">3.0</constant>
<constant digits="0" name="fpPrime" units="s">6.0</constant>
<constant digits="1" name="stoich" units=":1">14.7</constant>
<constant digits="0" name="oddfire2" units="deg">0.0</constant>
<constant digits="0" name="oddfire3" units="deg">0.0</constant>
@ -205,21 +205,16 @@
<constant digits="0" name="TrigAng" units="Deg">0.0</constant>
<constant digits="0" name="FixAng" units="Deg">0.0</constant>
<constant digits="0" name="CrankAng" units="Deg">5.0</constant>
<constant digits="0" name="TrigAngMul">4.0</constant>
<constant digits="0" name="TrigAngMul">0.0</constant>
<constant name="TrigEdge">"Leading"</constant>
<constant name="TrigSpeed">"Crank Speed"</constant>
<constant name="IgInv">"Going Low"</constant>
<constant name="oddfire">"Yes"</constant>
<constant name="TrigPattern">"Missing Tooth"</constant>
<constant name="TrigEdgeSec">"Trailing"</constant>
<constant name="unused4-6b">"Yes"</constant>
<constant name="unused4-6c">"Yes"</constant>
<constant name="unused4-6d">"Yes"</constant>
<constant name="unused4-6e">"Yes"</constant>
<constant name="unused4-6f">"Yes"</constant>
<constant name="unused4-6g">"Yes"</constant>
<constant name="unused4-6h">"Yes"</constant>
<constant digits="0" name="unused4-7" units="ADC">255.0</constant>
<constant name="TrigEdgeSec">"Leading"</constant>
<constant name="fuelPumpPin">"Board Default"</constant>
<constant name="unused4-6h">"No"</constant>
<constant digits="0" name="unused4-7" units="ADC">0.0</constant>
<constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant>
<constant digits="1" name="IdleAdvCLT" units="C">-21.0</constant>
<constant digits="0" name="IdleDelayTime" units="sec">38.0</constant>
@ -241,16 +236,16 @@
<constant digits="1" name="SoftLimMax" units="s">2.0</constant>
<constant digits="0" name="HardRevLim" units="rpm">7000.0</constant>
<constant cols="1" digits="0" name="taeBins" rows="4" units="%/s">
80.0
270.0
490.0
880.0
70.0
220.0
430.0
790.0
</constant>
<constant cols="1" digits="0" name="taeRates" rows="4" units="%">
5.0
11.0
17.0
32.0
15.0
59.0
74.0
85.0
</constant>
<constant cols="1" digits="0" name="wueBins" rows="10" units="C">
-40.0
@ -514,11 +509,7 @@
<constant digits="0" name="iacStepHyster" units="Steps">4.0</constant>
<constant name="fanInv">"No"</constant>
<constant name="fanEnable">"Off"</constant>
<constant name="unused7-55b">"No"</constant>
<constant name="unused7-55c">"No"</constant>
<constant name="unused7-55d">"No"</constant>
<constant name="unused7-55e">"No"</constant>
<constant name="unused7-55f">"No"</constant>
<constant name="fanPin">"Board Default"</constant>
<constant digits="0" name="fanSP" units="C">75.0</constant>
<constant digits="0" name="fanHyster" units="C">2.0</constant>
<constant digits="0" name="fanFreq" units="Hz">6.0</constant>

File diff suppressed because it is too large Load Diff

View File

@ -4,15 +4,15 @@ M48
INCH
T1C0.165354
T2C0.125984
T100C0.042000
T101C0.015748
T102C0.040000
T103C0.031496
T104C0.030000
T105C0.038000
T106C0.043302
T107C0.035433
T108C0.038194
T100C0.031496
T101C0.030000
T102C0.038000
T103C0.043302
T104C0.035433
T105C0.038194
T106C0.042000
T107C0.015748
T108C0.040000
%
T1
X030651Y022829
@ -24,112 +24,32 @@ T2
X037661Y012030
X035411Y030780
T100
X023681Y004280
X026661Y004280
T101
X011161Y028780
X035661Y004280
X013911Y017530
X013911Y005030
X035161Y018280
X030911Y020030
X018161Y017530
X020161Y010530
X020661Y014030
X016911Y005030
X006411Y035280
X012911Y007530
X014661Y015280
X015911Y009780
X007161Y006030
X029161Y013780
X037661Y005530
X026661Y016280
X017161Y015280
X018911Y029780
X022161Y006280
X017161Y033030
X024661Y002030
X009411Y007530
X002161Y026030
X027833Y004925
X028423Y006894
X006911Y013030
X035161Y033280
X033161Y016030
X005161Y007030
X032951Y003941
X024411Y028030
X029411Y026030
X002161Y021530
X035911Y018530
X007411Y012530
X006661Y028780
X008911Y017530
X031661Y004280
X023161Y010030
X028161Y020530
X029014Y005516
X018661Y028530
X007411Y034030
X009411Y009280
X011661Y017530
X028661Y020530
X035661Y008030
X029161Y008030
X007661Y019280
X009161Y015280
X007661Y037030
X028411Y008530
X008661Y006030
X035661Y004780
X008661Y022780
X026661Y019780
X018161Y014280
X033411Y010280
X009411Y006030
X033911Y006030
X025161Y028530
X009411Y010280
X008411Y032530
X023161Y035780
X033911Y005030
X024411Y016530
X011911Y015280
X025411Y008030
X032557Y005910
X029161Y020530
X014411Y008780
X026911Y009530
X029661Y020530
T102
X025927Y016780
X025927Y020780
X025927Y017780
X025927Y015779
X025927Y018780
X025927Y019780
T103
X022161Y004780
X022161Y007733
T104
X022161Y004780
T101
X026906Y028285
X033906Y033285
X027906Y028285
X026906Y033285
X030906Y028285
X027906Y033285
X028906Y028285
X029906Y028285
X030906Y028285
X030906Y033285
X031906Y028285
X028906Y033285
X032906Y028285
X029906Y033285
X030906Y033285
X033906Y028285
X031906Y033285
X032906Y033285
X033906Y028285
T105
X033906Y033285
T102
X037911Y032030
X012911Y022280
X017911Y020280
X010911Y025280
X015911Y023280
X021911Y022280
X013911Y026280
X018911Y024280
X022911Y026280
@ -157,8 +77,8 @@ X018911Y021280
X011911Y026280
X022911Y023280
X016911Y024280
X020911Y026280
X019911Y025280
X020911Y026280
X004911Y003280
X010911Y021280
X013911Y022280
@ -167,8 +87,8 @@ X011911Y025280
X016911Y023280
X022911Y022280
X014911Y026280
X020911Y025280
X019911Y024280
X020911Y025280
X023911Y026280
X010911Y020280
X013911Y021280
@ -184,17 +104,17 @@ X013911Y020280
X011911Y023280
X016911Y021280
X022911Y020280
X020911Y023280
X019911Y022280
X014911Y024280
X020911Y023280
X037911Y037030
X017911Y025280
X023911Y024280
X011911Y022280
X016911Y020280
X014911Y023280
X020911Y022280
X019911Y021280
X020911Y022280
X012911Y026280
X037911Y036030
X023911Y023280
@ -203,9 +123,10 @@ X021911Y026280
X005911Y003280
X011911Y021280
X034911Y015030
X029661Y027030
X014911Y022280
X020911Y021280
X019911Y020280
X020911Y021280
X037911Y035030
X017911Y023280
X023911Y022280
@ -214,8 +135,9 @@ X015911Y026280
X021911Y025280
X011911Y020280
X034911Y014030
X033911Y026280
X030661Y027030
X014911Y021280
X033911Y026280
X020911Y020280
X037911Y034030
X017911Y022280
@ -225,8 +147,8 @@ X015911Y025280
X021911Y024280
X018911Y026280
X034911Y013030
X033911Y025280
X014911Y020280
X033911Y025280
X037911Y033030
X012911Y023280
X017911Y021280
@ -236,13 +158,7 @@ X021911Y023280
X015911Y024280
X018911Y025280
X003911Y003280
X037911Y032030
X012911Y022280
X017911Y020280
X010911Y025280
X015911Y023280
X021911Y022280
T106
T103
X005911Y025810
X004141Y033131
X005911Y010098
@ -284,19 +200,20 @@ X005911Y006515
X004141Y029356
X005911Y021047
X004141Y007740
X005911Y024631
X004141Y026989
X005911Y024631
X004141Y031756
X004141Y023447
X004141Y013644
X004141Y008919
X005911Y030535
T107
T104
X037661Y004480
X037661Y007280
X037661Y011030
X037661Y008230
T108
T105
X036911Y021780
X014911Y011780
X037911Y025780
X023911Y011780
@ -304,8 +221,8 @@ X036911Y017780
X008311Y030780
X023911Y030780
X032911Y011780
X036911Y020780
X032911Y030780
X036911Y020780
X037911Y024780
X036911Y016780
X017911Y011780
@ -316,8 +233,8 @@ X035911Y011780
X037911Y023780
X036911Y015780
X012311Y030780
X037911Y019780
X029911Y011780
X037911Y019780
X029911Y030780
X037911Y022780
X012911Y011780
@ -325,15 +242,15 @@ X036911Y014780
X021911Y011780
X021911Y030780
X037911Y018780
X030911Y011780
X015311Y030780
X030911Y011780
X030911Y030780
X036911Y029780
X037911Y021780
X036911Y013780
X015911Y011780
X037911Y017780
X024911Y011780
X037911Y017780
X009311Y030780
X024911Y030780
X036911Y028780
@ -352,8 +269,8 @@ X036911Y026780
X013311Y030780
X013911Y011780
X037911Y014780
X036911Y025780
X022911Y011780
X036911Y025780
X007311Y030780
X022911Y030780
X031911Y011780
@ -361,8 +278,8 @@ X016311Y030780
X031911Y030780
X037911Y029780
X037911Y013780
X036911Y024780
X016911Y011780
X036911Y024780
X025911Y011780
X037911Y028780
X034911Y011780
@ -382,6 +299,95 @@ X020911Y030780
X037911Y026780
X036911Y018780
X014311Y030780
X036911Y021780
T106
X023681Y004280
X026661Y004280
T107
X029661Y020530
X011161Y028780
X035661Y004280
X025411Y030280
X013911Y017530
X013911Y005030
X035161Y018280
X030911Y020030
X018161Y017530
X020161Y010530
X020661Y014030
X016911Y005030
X006411Y035280
X024911Y028530
X012911Y007530
X014661Y015280
X015911Y009780
X007161Y006030
X029161Y013780
X037661Y005530
X017161Y015280
X026661Y016280
X022161Y006280
X018911Y029780
X017161Y033030
X027911Y029780
X024661Y002030
X009411Y007530
X002161Y026030
X028423Y006894
X027833Y004925
X006911Y013030
X035161Y033280
X033161Y016030
X025411Y029530
X026161Y028030
X005161Y007030
X032951Y003941
X002161Y021530
X007411Y012530
X035911Y018530
X006661Y028780
X008911Y017530
X031661Y004280
X023161Y010030
X028161Y020530
X029014Y005516
X018661Y028530
X007411Y034030
X009411Y009280
X011661Y017530
X028661Y020530
X035661Y008030
X029161Y008030
X009161Y015280
X007661Y019280
X007661Y037030
X024911Y027280
X028411Y008530
X008661Y006030
X035661Y004780
X008661Y022780
X026661Y019780
X018161Y014280
X009411Y006030
X033411Y010280
X033911Y006030
X009411Y010280
X008411Y032530
X023161Y035780
X033911Y005030
X024411Y016530
X030161Y025030
X011911Y015280
X025411Y008030
X029161Y020530
X032557Y005910
X014411Y008780
X026911Y009530
T108
X025927Y016780
X025927Y020780
X025927Y017780
X025927Y015779
X025927Y018780
X025927Y019780
T00
M30

View File

@ -28,6 +28,10 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X2541Y3028D03*
X2491Y2728D03*
X2541Y2953D03*
X2791Y2978D03*
X2916Y803D03*
X1691Y503D03*
X2216Y628D03*
@ -36,7 +40,7 @@ X1116Y2878D03*
X2541Y803D03*
X516Y703D03*
X1816Y1428D03*
X2941Y2603D03*
X3016Y2503D03*
X2666Y1628D03*
X3766Y553D03*
X3091Y2003D03*
@ -233,7 +237,7 @@ X3566Y478D03*
X3566Y428D03*
X3391Y603D03*
X2666Y1978D03*
X2441Y2803D03*
X2616Y2803D03*
X1716Y3303D03*
X2316Y3578D03*
X3591Y1853D03*
@ -386,7 +390,7 @@ X190Y1845D03*
G54D10*
X3316Y1603D03*
X2916Y1378D03*
X2516Y2853D03*
X2491Y2853D03*
G54D17*
X3391Y3329D03*
X3391Y2829D03*
@ -432,6 +436,8 @@ X3791Y3403D03*
X3791Y3503D03*
X3791Y3603D03*
X3791Y3703D03*
X3066Y2703D03*
X2966Y2703D03*
X3391Y2628D03*
X3391Y2528D03*
X3491Y1503D03*

View File

@ -19,12 +19,12 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%ADD18C,0.135984*%
%ADD19C,0.092000*%
%ADD20C,0.061496*%
%ADD21R,0.020000X0.055000*%
%ADD22R,0.055000X0.020000*%
%ADD23R,0.045433X0.041496*%
%ADD24R,0.072992X0.112362*%
%ADD25R,0.080866X0.049370*%
%ADD26R,0.065118X0.069055*%
%ADD21R,0.065118X0.069055*%
%ADD22R,0.020000X0.055000*%
%ADD23R,0.055000X0.020000*%
%ADD24R,0.045433X0.041496*%
%ADD25R,0.072992X0.112362*%
%ADD26R,0.080866X0.049370*%
%ADD27R,0.069055X0.065118*%
%ADD28R,0.042677X0.034803*%
%ADD29R,0.097000X0.034000*%
@ -42,6 +42,10 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X2541Y3028D03*
X2491Y2728D03*
X2541Y2953D03*
X2791Y2978D03*
X2916Y803D03*
X1691Y503D03*
X2216Y628D03*
@ -50,7 +54,7 @@ X1116Y2878D03*
X2541Y803D03*
X516Y703D03*
X1816Y1428D03*
X2941Y2603D03*
X3016Y2503D03*
X2666Y1628D03*
X3766Y553D03*
X3091Y2003D03*
@ -247,7 +251,7 @@ X3566Y478D03*
X3566Y428D03*
X3391Y603D03*
X2666Y1978D03*
X2441Y2803D03*
X2616Y2803D03*
X1716Y3303D03*
X2316Y3578D03*
X3591Y1853D03*
@ -341,7 +345,7 @@ X190Y1845D03*
G54D10*
X3316Y1603D03*
X2916Y1378D03*
X2516Y2853D03*
X2491Y2853D03*
G54D17*
X3391Y3329D03*
X3391Y2829D03*
@ -389,6 +393,8 @@ X3791Y3403D03*
X3791Y3503D03*
X3791Y3603D03*
X3791Y3703D03*
X3066Y2703D03*
X2966Y2703D03*
X3391Y2628D03*
X3391Y2528D03*
X3491Y1503D03*
@ -428,6 +434,9 @@ X3166Y428D03*
X3391Y503D03*
X2783Y493D03*
G54D21*
X2641Y2728D03*
X2722Y2728D03*
G54D22*
X3039Y532D03*
X3059Y532D03*
X3079Y532D03*
@ -440,7 +449,7 @@ X3197Y532D03*
X3216Y532D03*
X3236Y532D03*
X3256Y532D03*
G54D22*
G54D23*
X3315Y591D03*
X3315Y611D03*
X3315Y630D03*
@ -453,7 +462,7 @@ X3315Y748D03*
X3315Y768D03*
X3315Y788D03*
X3315Y808D03*
G54D21*
G54D22*
X3256Y867D03*
X3236Y867D03*
X3216Y867D03*
@ -466,7 +475,7 @@ X3098Y867D03*
X3079Y867D03*
X3059Y867D03*
X3039Y867D03*
G54D22*
G54D23*
X2980Y808D03*
X2980Y788D03*
X2980Y768D03*
@ -479,17 +488,17 @@ X2980Y650D03*
X2980Y630D03*
X2980Y611D03*
X2980Y591D03*
G54D23*
G54D24*
X2921Y493D03*
X2921Y418D03*
X3004Y455D03*
G54D24*
G54D25*
X2691Y561D03*
X2691Y703D03*
G54D25*
G54D26*
X716Y778D03*
X716Y668D03*
G54D26*
G54D21*
X2641Y1278D03*
X2560Y1278D03*
X2561Y1378D03*
@ -501,7 +510,7 @@ X2391Y2978D03*
X2391Y2897D03*
X2291Y2978D03*
X2291Y2897D03*
G54D26*
G54D21*
X2066Y3603D03*
X2147Y3603D03*
X2466Y3603D03*
@ -511,7 +520,7 @@ X2091Y2978D03*
X2091Y2897D03*
X2191Y2978D03*
X2191Y2897D03*
G54D26*
G54D21*
X2366Y1778D03*
X2447Y1778D03*
X716Y2978D03*
@ -540,7 +549,7 @@ X860Y803D03*
X1066Y653D03*
G54D30*
X2593Y2078D03*
G54D26*
G54D21*
X1941Y978D03*
X1860Y978D03*
X760Y1578D03*
@ -550,7 +559,7 @@ X2691Y2829D03*
X3291Y2829D03*
G54D32*
X2667Y428D03*
G54D26*
G54D21*
X760Y1678D03*
X841Y1678D03*
X1566Y1478D03*
@ -562,7 +571,7 @@ X1947Y878D03*
G54D33*
X2166Y978D03*
X2257Y978D03*
G54D26*
G54D21*
X841Y1178D03*
X760Y1178D03*
X798Y2228D03*
@ -584,7 +593,7 @@ X866Y453D03*
X866Y534D03*
X1541Y703D03*
X1541Y622D03*
G54D26*
G54D21*
X798Y2328D03*
X717Y2328D03*
G54D27*
@ -599,7 +608,7 @@ X1016Y528D03*
G54D34*
X2016Y476D03*
X2016Y728D03*
G54D26*
G54D21*
X1866Y3178D03*
X1947Y3178D03*
G54D33*
@ -611,7 +620,7 @@ X1666Y3503D03*
X1757Y3503D03*
X1666Y3578D03*
X1757Y3578D03*
G54D26*
G54D21*
X841Y1478D03*
X760Y1478D03*
X2316Y3478D03*
@ -621,7 +630,7 @@ X1316Y453D03*
X1316Y534D03*
X1466Y453D03*
X1466Y534D03*
G54D26*
G54D21*
X841Y1378D03*
X760Y1378D03*
X2766Y428D03*
@ -643,7 +652,7 @@ X3641Y553D03*
X3641Y675D03*
X1866Y603D03*
X1866Y481D03*
G54D26*
G54D21*
X1866Y3478D03*
X1947Y3478D03*
X2316Y3378D03*
@ -664,7 +673,7 @@ X1616Y2978D03*
X1616Y2897D03*
X1416Y2978D03*
X1416Y2897D03*
G54D26*
G54D21*
X1166Y3453D03*
X1085Y3453D03*
X1166Y3203D03*
@ -704,7 +713,7 @@ X760Y3253D03*
X966Y3353D03*
X760Y3353D03*
X966Y3203D03*
G54D26*
G54D21*
X1122Y1478D03*
X1041Y1478D03*
X1122Y1378D03*
@ -718,7 +727,7 @@ X1691Y628D03*
X1691Y709D03*
X1691Y909D03*
X1691Y828D03*
G54D26*
G54D21*
X2391Y853D03*
X2472Y853D03*
X1041Y1578D03*
@ -742,7 +751,7 @@ X1941Y1578D03*
X1941Y1528D03*
X1941Y1478D03*
X1941Y1428D03*
G54D26*
G54D21*
X1310Y1578D03*
X1391Y1578D03*
X1310Y1478D03*

View File

@ -10,12 +10,12 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%SFA1.0B1.0*%
%ADD10C,0.074000*%
%ADD11C,0.165354*%
%ADD12R,0.010000X0.045000*%
%ADD13R,0.045000X0.010000*%
%ADD14R,0.035433X0.031496*%
%ADD15R,0.062992X0.102362*%
%ADD16R,0.070866X0.039370*%
%ADD17R,0.055118X0.059055*%
%ADD12R,0.055118X0.059055*%
%ADD13R,0.010000X0.045000*%
%ADD14R,0.045000X0.010000*%
%ADD15R,0.035433X0.031496*%
%ADD16R,0.062992X0.102362*%
%ADD17R,0.070866X0.039370*%
%ADD18R,0.059055X0.055118*%
%ADD19R,0.032677X0.024803*%
%ADD20R,0.087000X0.024000*%
@ -40,6 +40,9 @@ X190Y315D03*
X190Y3650D03*
X190Y1845D03*
G54D12*
X2641Y2728D03*
X2722Y2728D03*
G54D13*
X3039Y532D03*
X3059Y532D03*
X3079Y532D03*
@ -52,7 +55,7 @@ X3197Y532D03*
X3216Y532D03*
X3236Y532D03*
X3256Y532D03*
G54D13*
G54D14*
X3315Y591D03*
X3315Y611D03*
X3315Y630D03*
@ -65,7 +68,7 @@ X3315Y748D03*
X3315Y768D03*
X3315Y788D03*
X3315Y808D03*
G54D12*
G54D13*
X3256Y867D03*
X3236Y867D03*
X3216Y867D03*
@ -78,7 +81,7 @@ X3098Y867D03*
X3079Y867D03*
X3059Y867D03*
X3039Y867D03*
G54D13*
G54D14*
X2980Y808D03*
X2980Y788D03*
X2980Y768D03*
@ -91,17 +94,17 @@ X2980Y650D03*
X2980Y630D03*
X2980Y611D03*
X2980Y591D03*
G54D14*
G54D15*
X2921Y493D03*
X2921Y418D03*
X3004Y455D03*
G54D15*
G54D16*
X2691Y561D03*
X2691Y703D03*
G54D16*
G54D17*
X716Y778D03*
X716Y668D03*
G54D17*
G54D12*
X2641Y1278D03*
X2560Y1278D03*
X2561Y1378D03*
@ -113,7 +116,7 @@ X2391Y2978D03*
X2391Y2897D03*
X2291Y2978D03*
X2291Y2897D03*
G54D17*
G54D12*
X2066Y3603D03*
X2147Y3603D03*
X2466Y3603D03*
@ -123,7 +126,7 @@ X2091Y2978D03*
X2091Y2897D03*
X2191Y2978D03*
X2191Y2897D03*
G54D17*
G54D12*
X2366Y1778D03*
X2447Y1778D03*
X716Y2978D03*
@ -150,7 +153,7 @@ X860Y703D03*
X1066Y803D03*
X860Y803D03*
X1066Y653D03*
G54D17*
G54D12*
X1941Y978D03*
X1860Y978D03*
X760Y1578D03*
@ -166,7 +169,7 @@ X1947Y878D03*
G54D21*
X2166Y978D03*
X2257Y978D03*
G54D17*
G54D12*
X841Y1178D03*
X760Y1178D03*
X798Y2228D03*
@ -188,7 +191,7 @@ X866Y453D03*
X866Y534D03*
X1541Y703D03*
X1541Y622D03*
G54D17*
G54D12*
X798Y2328D03*
X717Y2328D03*
G54D18*
@ -203,7 +206,7 @@ X1016Y528D03*
G54D22*
X2016Y476D03*
X2016Y728D03*
G54D17*
G54D12*
X1866Y3178D03*
X1947Y3178D03*
G54D21*
@ -215,7 +218,7 @@ X1666Y3503D03*
X1757Y3503D03*
X1666Y3578D03*
X1757Y3578D03*
G54D17*
G54D12*
X841Y1478D03*
X760Y1478D03*
X2316Y3478D03*
@ -225,7 +228,7 @@ X1316Y453D03*
X1316Y534D03*
X1466Y453D03*
X1466Y534D03*
G54D17*
G54D12*
X841Y1378D03*
X760Y1378D03*
X2766Y428D03*
@ -247,7 +250,7 @@ X3641Y553D03*
X3641Y675D03*
X1866Y603D03*
X1866Y481D03*
G54D17*
G54D12*
X1866Y3478D03*
X1947Y3478D03*
X2316Y3378D03*
@ -268,7 +271,7 @@ X1616Y2978D03*
X1616Y2897D03*
X1416Y2978D03*
X1416Y2897D03*
G54D17*
G54D12*
X1166Y3453D03*
X1085Y3453D03*
X1166Y3203D03*
@ -308,7 +311,7 @@ X760Y3253D03*
X966Y3353D03*
X760Y3353D03*
X966Y3203D03*
G54D17*
G54D12*
X1122Y1478D03*
X1041Y1478D03*
X1122Y1378D03*
@ -322,7 +325,7 @@ X1691Y628D03*
X1691Y709D03*
X1691Y909D03*
X1691Y828D03*
G54D17*
G54D12*
X2391Y853D03*
X2472Y853D03*
X1041Y1578D03*
@ -346,7 +349,7 @@ X1941Y1578D03*
X1941Y1528D03*
X1941Y1478D03*
X1941Y1428D03*
G54D17*
G54D12*
X1310Y1578D03*
X1391Y1578D03*
X1310Y1478D03*

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 KiB

After

Width:  |  Height:  |  Size: 488 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 KiB

View File

@ -0,0 +1,26 @@
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,4.000010X2.088890*%
%ADD11C,0.008000*%
%ADD10C,0.008*%
%LNCONTOUR*%
G90*
G70*
G54D10*
G54D11*
X4Y2085D02*
X3996Y2085D01*
X3996Y4D01*
X4Y4D01*
X4Y2085D01*
D02*
G04 End of contour*
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,185 @@
; NON-PLATED HOLES START AT T1
; THROUGH (PLATED) HOLES START AT T100
M48
INCH
T100C0.038000
T101C0.038194
T102C0.015748
%
T100
X001277Y015166
X003277Y015166
X005277Y015166
X007277Y015166
X009277Y015166
X019277Y012166
X006277Y015166
X008277Y015166
X014277Y009166
X012277Y009166
X010277Y009166
X019277Y009166
X017277Y009166
X015277Y009166
X013277Y009166
X011277Y009166
X018277Y009166
X016277Y009166
X019277Y010166
X010277Y015166
X012277Y015166
X014277Y015166
X011277Y015166
X013277Y015166
X015277Y015166
X017277Y015166
X019277Y015166
X016277Y015166
X018277Y015166
X024277Y009166
X022277Y009166
X020277Y009166
X023277Y009166
X021277Y009166
X019277Y013166
X020277Y015166
X022277Y015166
X024277Y015166
X021277Y015166
X023277Y015166
X019277Y011166
X004277Y009166
X002277Y009166
X019277Y014166
X009277Y009166
X007277Y009166
X005277Y009166
X003277Y009166
X001277Y009166
X008277Y009166
X006277Y009166
X002277Y015166
X004277Y015166
T101
X030027Y019916
X032027Y000916
X012427Y019916
X038027Y018916
X038027Y002916
X017027Y000916
X037027Y013916
X024027Y019916
X026027Y000916
X038027Y017916
X033027Y019916
X015427Y019916
X037027Y009916
X035027Y000916
X037027Y012916
X018027Y019916
X029027Y000916
X038027Y016916
X027027Y019916
X009427Y019916
X037027Y008916
X037027Y011916
X012027Y000916
X021027Y000916
X038027Y015916
X037027Y007916
X010427Y019916
X030027Y000916
X037027Y010916
X015027Y000916
X022027Y019916
X038027Y014916
X024027Y000916
X037027Y006916
X031027Y019916
X013427Y019916
X033027Y000916
X038027Y013916
X018027Y000916
X037027Y005916
X025027Y019916
X007427Y019916
X027027Y000916
X034027Y019916
X038027Y009916
X016427Y019916
X036027Y000916
X038027Y012916
X037027Y004916
X019027Y019916
X028027Y019916
X038027Y008916
X037027Y019916
X038027Y011916
X013027Y000916
X037027Y003916
X020027Y019916
X022027Y000916
X038027Y007916
X011427Y019916
X031027Y000916
X037027Y018916
X038027Y010916
X037027Y002916
X016027Y000916
X023027Y019916
X038027Y006916
X025027Y000916
X032027Y019916
X037027Y017916
X034027Y000916
X014427Y019916
X038027Y005916
X008427Y019916
X037027Y016916
X011027Y000916
X038027Y004916
X020027Y000916
X037027Y015916
X029027Y019916
X038027Y019916
X014027Y000916
X038027Y003916
X021027Y019916
X023027Y000916
X037027Y014916
T102
X014777Y001666
X017527Y004666
X019027Y000916
X009527Y003416
X009527Y001166
X026527Y004166
X020277Y010666
X038777Y001166
X024527Y004166
X031027Y004666
X018277Y004666
X023527Y004166
X014777Y004166
X014777Y003666
X020527Y004166
X035527Y011166
X016527Y000416
X030777Y007666
X032277Y008666
X032277Y012666
X014777Y003166
X037277Y001166
X025527Y004166
X028777Y012416
X014777Y002666
X019527Y004166
X022527Y004166
X028527Y008666
X030777Y009666
X021527Y004166
X014777Y005166
X014777Y002166
X014777Y004666
T00
M30

View File

@ -0,0 +1,194 @@
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.049370*%
%ADD11C,0.082917*%
%ADD12C,0.088000*%
%LNMASK0*%
G90*
G70*
G54D10*
X3228Y867D03*
X1478Y467D03*
X1478Y417D03*
X1478Y367D03*
X1478Y317D03*
X1478Y517D03*
X1478Y267D03*
X1478Y217D03*
X1478Y167D03*
X2878Y1242D03*
X3228Y1267D03*
X2053Y417D03*
X1953Y417D03*
X2153Y417D03*
X2253Y417D03*
X2353Y417D03*
X2453Y417D03*
X2553Y417D03*
X2653Y417D03*
X1753Y467D03*
X1828Y467D03*
X3078Y767D03*
X3103Y467D03*
X3078Y967D03*
X3728Y117D03*
X3878Y117D03*
X2028Y1067D03*
X953Y117D03*
X953Y342D03*
X1903Y92D03*
X3553Y1117D03*
X2853Y867D03*
G54D11*
X3003Y92D03*
X1403Y92D03*
X3103Y92D03*
X3203Y92D03*
X3303Y92D03*
X3403Y92D03*
X3703Y1492D03*
X3503Y92D03*
X3603Y92D03*
X1443Y1992D03*
X2003Y92D03*
X2103Y92D03*
X2203Y92D03*
X2303Y92D03*
X3703Y692D03*
X2403Y92D03*
X2503Y92D03*
X2603Y92D03*
X2703Y92D03*
X2203Y1992D03*
X3703Y1892D03*
X3703Y1092D03*
X3703Y292D03*
X1043Y1992D03*
X1803Y92D03*
X1803Y1992D03*
X3703Y1692D03*
X3703Y1292D03*
X3703Y892D03*
X3403Y1992D03*
X3703Y492D03*
X3303Y1992D03*
X3203Y1992D03*
X3103Y1992D03*
X3003Y1992D03*
X2903Y1992D03*
X2803Y1992D03*
X2703Y1992D03*
X843Y1992D03*
X1243Y1992D03*
X1643Y1992D03*
X1203Y92D03*
X1603Y92D03*
X2403Y1992D03*
X2003Y1992D03*
X3703Y1992D03*
X3703Y1792D03*
X3703Y1592D03*
X3703Y1392D03*
X3703Y1192D03*
X3703Y992D03*
X3703Y792D03*
X3703Y592D03*
X3703Y392D03*
X743Y1992D03*
X943Y1992D03*
X1143Y1992D03*
X1343Y1992D03*
X1543Y1992D03*
X1103Y92D03*
X1303Y92D03*
X1503Y92D03*
X1703Y92D03*
X2503Y1992D03*
X2303Y1992D03*
X2103Y1992D03*
X1903Y1992D03*
X3803Y1992D03*
X3803Y1892D03*
X3803Y1792D03*
X3803Y1692D03*
X3803Y1592D03*
X3803Y1492D03*
X3803Y1392D03*
X3803Y1292D03*
X3803Y1192D03*
X3803Y1092D03*
X3803Y992D03*
X3803Y892D03*
X3803Y792D03*
X3803Y692D03*
X3803Y592D03*
X3803Y492D03*
X3803Y392D03*
X3803Y292D03*
X2903Y92D03*
G54D12*
X2428Y1517D03*
X2328Y1517D03*
X2228Y1517D03*
X2128Y1517D03*
X2028Y1517D03*
X1928Y1517D03*
X1828Y1517D03*
X1728Y1517D03*
X1628Y1517D03*
X1528Y1517D03*
X1428Y1517D03*
X1328Y1517D03*
X1228Y1517D03*
X1128Y1517D03*
X1028Y1517D03*
X928Y1517D03*
X828Y1517D03*
X728Y1517D03*
X628Y1517D03*
X528Y1517D03*
X428Y1517D03*
X328Y1517D03*
X228Y1517D03*
X128Y1517D03*
X128Y917D03*
X228Y917D03*
X328Y917D03*
X428Y917D03*
X528Y917D03*
X628Y917D03*
X728Y917D03*
X828Y917D03*
X928Y917D03*
X1028Y917D03*
X1128Y917D03*
X1228Y917D03*
X1328Y917D03*
X1428Y917D03*
X1528Y917D03*
X1628Y917D03*
X1728Y917D03*
X1828Y917D03*
X1928Y917D03*
X2028Y917D03*
X2128Y917D03*
X2228Y917D03*
X2328Y917D03*
X2428Y917D03*
X1928Y1417D03*
X1928Y1317D03*
X1928Y1217D03*
X1928Y1117D03*
X1928Y1017D03*
G54D10*
X1653Y42D03*
G04 End of Mask0*
M02*

View File

@ -0,0 +1,258 @@
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.049370*%
%ADD11C,0.082917*%
%ADD12C,0.088000*%
%ADD13R,0.033622X0.057244*%
%ADD14R,0.069055X0.065118*%
%LNMASK1*%
G90*
G70*
G54D10*
X3228Y867D03*
X1478Y467D03*
X1478Y417D03*
X1478Y367D03*
X1478Y317D03*
X1478Y517D03*
X1478Y267D03*
X1478Y217D03*
X1478Y167D03*
X2878Y1242D03*
X3228Y1267D03*
X2053Y417D03*
X1953Y417D03*
X2153Y417D03*
X2253Y417D03*
X2353Y417D03*
X2453Y417D03*
X2553Y417D03*
X2653Y417D03*
X1753Y467D03*
X1828Y467D03*
X3078Y767D03*
X3103Y467D03*
X3078Y967D03*
X3728Y117D03*
X3878Y117D03*
X2028Y1067D03*
X953Y117D03*
X953Y342D03*
X1903Y92D03*
X3553Y1117D03*
X2853Y867D03*
G54D11*
X3003Y92D03*
X1403Y92D03*
X3103Y92D03*
X3203Y92D03*
X3303Y92D03*
X3403Y92D03*
X3703Y1492D03*
X3503Y92D03*
X3603Y92D03*
X1443Y1992D03*
X2003Y92D03*
X2103Y92D03*
X2203Y92D03*
X2303Y92D03*
X3703Y692D03*
X2403Y92D03*
X2503Y92D03*
X2603Y92D03*
X2703Y92D03*
X2203Y1992D03*
X3703Y1892D03*
X3703Y1092D03*
X3703Y292D03*
X1043Y1992D03*
X1803Y92D03*
X1803Y1992D03*
X3703Y1692D03*
X3703Y1292D03*
X3703Y892D03*
X3403Y1992D03*
X3703Y492D03*
X3303Y1992D03*
X3203Y1992D03*
X3103Y1992D03*
X3003Y1992D03*
X2903Y1992D03*
X2803Y1992D03*
X2703Y1992D03*
X843Y1992D03*
X1243Y1992D03*
X1643Y1992D03*
X1203Y92D03*
X1603Y92D03*
X2403Y1992D03*
X2003Y1992D03*
X3703Y1992D03*
X3703Y1792D03*
X3703Y1592D03*
X3703Y1392D03*
X3703Y1192D03*
X3703Y992D03*
X3703Y792D03*
X3703Y592D03*
X3703Y392D03*
X743Y1992D03*
X943Y1992D03*
X1143Y1992D03*
X1343Y1992D03*
X1543Y1992D03*
X1103Y92D03*
X1303Y92D03*
X1503Y92D03*
X1703Y92D03*
X2503Y1992D03*
X2303Y1992D03*
X2103Y1992D03*
X1903Y1992D03*
X3803Y1992D03*
X3803Y1892D03*
X3803Y1792D03*
X3803Y1692D03*
X3803Y1592D03*
X3803Y1492D03*
X3803Y1392D03*
X3803Y1292D03*
X3803Y1192D03*
X3803Y1092D03*
X3803Y992D03*
X3803Y892D03*
X3803Y792D03*
X3803Y692D03*
X3803Y592D03*
X3803Y492D03*
X3803Y392D03*
X3803Y292D03*
X2903Y92D03*
G54D12*
X2428Y1517D03*
X2328Y1517D03*
X2228Y1517D03*
X2128Y1517D03*
X2028Y1517D03*
X1928Y1517D03*
X1828Y1517D03*
X1728Y1517D03*
X1628Y1517D03*
X1528Y1517D03*
X1428Y1517D03*
X1328Y1517D03*
X1228Y1517D03*
X1128Y1517D03*
X1028Y1517D03*
X928Y1517D03*
X828Y1517D03*
X728Y1517D03*
X628Y1517D03*
X528Y1517D03*
X428Y1517D03*
X328Y1517D03*
X228Y1517D03*
X128Y1517D03*
X128Y917D03*
X228Y917D03*
X328Y917D03*
X428Y917D03*
X528Y917D03*
X628Y917D03*
X728Y917D03*
X828Y917D03*
X928Y917D03*
X1028Y917D03*
X1128Y917D03*
X1228Y917D03*
X1328Y917D03*
X1428Y917D03*
X1528Y917D03*
X1628Y917D03*
X1728Y917D03*
X1828Y917D03*
X1928Y917D03*
X2028Y917D03*
X2128Y917D03*
X2228Y917D03*
X2328Y917D03*
X2428Y917D03*
X1928Y1417D03*
X1928Y1317D03*
X1928Y1217D03*
X1928Y1117D03*
X1928Y1017D03*
G54D10*
X1653Y42D03*
G54D13*
X3078Y1117D03*
X3128Y1117D03*
X3178Y1117D03*
X3228Y1117D03*
X3278Y1117D03*
X3328Y1117D03*
X3378Y1117D03*
X3378Y1337D03*
X3328Y1337D03*
X3278Y1337D03*
X3228Y1337D03*
X3178Y1337D03*
X3128Y1337D03*
X3078Y1337D03*
X2528Y1117D03*
X2578Y1117D03*
X2628Y1117D03*
X2678Y1117D03*
X2728Y1117D03*
X2778Y1117D03*
X2828Y1117D03*
X2828Y1337D03*
X2778Y1337D03*
X2728Y1337D03*
X2678Y1337D03*
X2628Y1337D03*
X2578Y1337D03*
X2528Y1337D03*
G54D14*
X2703Y511D03*
X2703Y592D03*
X2303Y511D03*
X2303Y592D03*
X2703Y292D03*
X2703Y211D03*
X2303Y292D03*
X2303Y211D03*
X2603Y511D03*
X2603Y592D03*
X2203Y511D03*
X2203Y592D03*
X2603Y292D03*
X2603Y211D03*
X2203Y292D03*
X2203Y211D03*
X2403Y511D03*
X2403Y592D03*
X2003Y511D03*
X2003Y592D03*
X2403Y211D03*
X2403Y292D03*
X2003Y292D03*
X2003Y211D03*
X2503Y511D03*
X2503Y592D03*
X2103Y511D03*
X2103Y592D03*
X2503Y292D03*
X2503Y211D03*
X2103Y292D03*
X2103Y211D03*
G04 End of Mask1*
M02*

View File

@ -0,0 +1,82 @@
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,0.023622X0.047244*%
%ADD11R,0.059055X0.055118*%
%ADD12R,0.001000X0.001000*%
%LNPASTEMASK1*%
G90*
G70*
G54D10*
X3078Y1117D03*
X3128Y1117D03*
X3178Y1117D03*
X3228Y1117D03*
X3278Y1117D03*
X3328Y1117D03*
X3378Y1117D03*
X3378Y1337D03*
X3328Y1337D03*
X3278Y1337D03*
X3228Y1337D03*
X3178Y1337D03*
X3128Y1337D03*
X3078Y1337D03*
X2528Y1117D03*
X2578Y1117D03*
X2628Y1117D03*
X2678Y1117D03*
X2728Y1117D03*
X2778Y1117D03*
X2828Y1117D03*
X2828Y1337D03*
X2778Y1337D03*
X2728Y1337D03*
X2678Y1337D03*
X2628Y1337D03*
X2578Y1337D03*
X2528Y1337D03*
G54D11*
X2703Y511D03*
X2703Y592D03*
X2303Y511D03*
X2303Y592D03*
X2703Y292D03*
X2703Y211D03*
X2303Y292D03*
X2303Y211D03*
X2603Y511D03*
X2603Y592D03*
X2203Y511D03*
X2203Y592D03*
X2603Y292D03*
X2603Y211D03*
X2203Y292D03*
X2203Y211D03*
X2403Y511D03*
X2403Y592D03*
X2003Y511D03*
X2003Y592D03*
X2403Y211D03*
X2403Y292D03*
X2003Y292D03*
X2003Y211D03*
X2503Y511D03*
X2503Y592D03*
X2103Y511D03*
X2103Y592D03*
X2503Y292D03*
X2503Y211D03*
X2103Y292D03*
X2103Y211D03*
G54D12*
D02*
G04 End of PasteMask1*
M02*

View File

@ -0,0 +1,404 @@
*Pick And Place List
*Company=
*Author=
*eMail=
*
*Project=Teensy 3.5 Adaptor
*Date=21:31:13
*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;;;51.4477;-27.6069;0;Bottom;Copper Fill288
2;;;52.1081;-10.2079;0;Bottom;Copper Fill323
3;;;30.2768;-51.4829;0;Bottom;Copper Fill154
4;;;95.3262;-26.4639;0;Bottom;Copper Fill234
5;;;95.3262;-36.6239;0;Bottom;Copper Fill208
6;;;40.9448;-46.7331;0;Bottom;Copper Fill29
7;;;47.0408;-51.4829;0;Bottom;Copper Fill11
8;;;12.9794;-43.0247;0;Bottom;Copper Fill186
9;;;78.5622;-24.6224;0;Bottom;Copper Fill104
10;;;22.5044;-41.1451;0;Bottom;Copper Fill194
11;;;41.9481;-0.7083;0;Bottom;Copper Fill84
12;;;24.5872;-3.0324;0;Bottom;Copper Fill134
13;;;95.3262;-11.2239;0;Bottom;Copper Fill76
14;;;50.6222;-20.9013;0;Bottom;Copper Fill241
15;330k;0805 [SMD];58.4905;-14.0032;-90;Top;R8
16;;;98.4377;-3.4769;0;Bottom;Copper Fill97
17;;;73.0955;-31.5384;0;Bottom;Via11
18;;;46.482;-32.4075;0;Bottom;Copper Fill224
19;;;94.6277;-2.5879;0;Bottom;Copper Fill114
20;;;67.7672;-10.6524;0;Bottom;Copper Fill143
21;;;29.2608;-3.2229;0;Bottom;Copper Fill81
22;;;25.1968;-51.4829;0;Bottom;Copper Fill152
23;;;95.3262;-8.6839;0;Bottom;Copper Fill78
24;330k;0805 [SMD];61.0305;-14.0032;-90;Top;R13
25;;;95.3262;-29.0039;0;Bottom;Copper Fill47
26;;;59.9694;-48.9683;0;Bottom;Copper Fill35
27;;;8.5344;-43.9899;0;Bottom;Copper Fill182
28;;;22.6568;-51.4829;0;Bottom;Copper Fill151
29;;;52.1405;-10.5834;0;Bottom;Via13
30;;;77.6732;-19.5424;0;Bottom;Copper Fill304
31;;;52.8828;-36.4969;0;Bottom;Copper Fill203
32;180k;0805 [SMD];63.5705;-6.38318;90;Top;R16
33;;;39.878;-7.6171;0;Bottom;Copper Fill273
34;;;9.56589;-15.1119;0;Bottom;TXT5
35;330k;0805 [SMD];55.9505;-14.0032;-90;Top;R6
36;;;32.6644;-21.8919;0;Bottom;Copper Fill62
37;;;52.2732;-15.3895;0;Bottom;Copper Fill262
38;;;25.1968;-51.4829;0;Bottom;Copper Fill3
39;;;77.6732;-19.5424;0;Bottom;Copper Fill111
40;;;58.293;-11.4525;0;Bottom;Copper Fill256
41;;;24.1681;-8.3029;0;Bottom;Copper Fill91
42;;;62.5348;-49.2985;0;Bottom;Copper Fill36
43;;;82.6008;-51.4829;0;Bottom;Copper Fill23
44;;THT;48.9656;-30.9033;0;Bottom;J3
45;;;23.7236;-8.722;0;Bottom;Copper Fill92
46;;;95.3262;-13.7639;0;Bottom;Copper Fill252
47;;;59.7281;-11.0969;0;Bottom;Copper Fill145
48;;;27.7368;-51.4829;0;Bottom;Copper Fill153
49;;;20.0152;-41.5007;0;Bottom;Copper Fill193
50;330k;0805 [SMD];66.1105;-14.0032;-90;Top;R11
51;;;79.1972;-11.9224;0;Bottom;Copper Fill302
52;;;57.4548;-48.6381;0;Bottom;Copper Fill34
53;;;97.3582;-7.452;0;Bottom;Copper Fill312
54;;;81.9855;-22.0134;0;Bottom;Via2
55;;;82.6008;-51.4829;0;Bottom;Copper Fill173
56;;;78.1755;-24.5534;0;Bottom;Via25
57;;;54.6805;-10.5834;0;Bottom;Via15
58;;;64.8081;-10.2079;0;Bottom;Copper Fill327
59;;;95.3262;-8.6839;0;Bottom;Copper Fill271
60;;;78.1177;-19.0979;0;Bottom;Copper Fill110
61;;;95.3262;-31.5439;0;Bottom;Copper Fill46
62;;;50.9133;-26.4583;0;Bottom;Part1
63;;;51.4477;-26.7179;0;Bottom;Copper Fill95
64;;;67.3805;-10.5834;0;Bottom;Via20
65;;;3.1877;-22.5015;0;Bottom;Copper Fill317
66;;;48.2981;-1.9529;0;Bottom;Copper Fill89
67;;;39.5224;-8.8109;0;Bottom;Copper Fill272
68;180k;0805 [SMD];50.8705;-6.38318;90;Top;R3
69;;;90.2081;-28.8769;0;Bottom;Copper Fill86
70;;;57.2008;-6.4233;0;Bottom;Copper Fill266
71;;;43.7388;-50.7971;0;Bottom;Copper Fill159
72;;;91.1606;-21.7903;0;Bottom;Copper Fill65
73;;;31.8008;-3.2229;0;Bottom;Copper Fill82
74;;;57.2008;-51.4829;0;Bottom;Copper Fill164
75;;;86.4616;-49.3493;0;Bottom;Copper Fill176
76;;;30.1498;-40.2307;0;Bottom;Copper Fill198
77;;;62.4332;-23.3524;0;Bottom;Copper Fill278
78;;;13.6398;-36.5477;0;Bottom;Copper Fill212
79;;;20.1168;-51.4829;0;Bottom;Copper Fill1
80;;;66.2178;-16.2531;0;Bottom;Copper Fill251
81;;;95.3262;-16.3039;0;Bottom;Copper Fill250
82;;;95.3262;-21.3839;0;Bottom;Copper Fill236
83;;;49.784;-47.6983;0;Bottom;Copper Fill31
84;;;80.4672;-26.8195;0;Bottom;Copper Fill217
85;;;73.0377;-31.1629;0;Bottom;Copper Fill130
86;;;62.2808;-51.4829;0;Bottom;Copper Fill17
87;;;32.8168;-51.4829;0;Bottom;Copper Fill6
88;;;24.1681;-3.4769;0;Bottom;Copper Fill320
89;;;78.8105;-11.8534;0;Bottom;Via24
90;;;90.6272;-28.4324;0;Bottom;Copper Fill282
91;;;95.3262;-39.1639;0;Bottom;Copper Fill202
92;;;59.7408;-6.4233;0;Bottom;Copper Fill267
93;;;22.5044;-20.6219;0;Bottom;Copper Fill58
94;330k;0805 [SMD];50.8705;-14.0032;-90;Top;R4
95;;;33.3502;-45.7679;0;Bottom;Copper Fill26
96;;;81.407;-38.1987;0;Bottom;Copper Fill189
97;;;73.0377;-32.0265;0;Bottom;Copper Fill129
98;;;27.7368;-51.4829;0;Bottom;Copper Fill4
99;;;17.4498;-41.8055;0;Bottom;Copper Fill192
100;;;49.5681;-11.0969;0;Bottom;Copper Fill127
101;;;98.4377;-2.5879;0;Bottom;Copper Fill292
102;;;63.373;-11.4525;0;Bottom;Copper Fill258
103;;;78.1177;-25.0669;0;Bottom;Copper Fill101
104;;;95.3262;-49.2477;0;Bottom;Copper Fill177
105;;;70.0786;-23.6953;0;Bottom;Copper Fill230
106;;;62.2808;-6.4233;0;Bottom;Copper Fill268
107;;;37.5355;-11.8534;0;Bottom;Via3
108;;;39.0652;-17.3961;0;Bottom;Copper Fill237
109;;;95.0722;-3.0324;0;Bottom;Copper Fill308
110;;;26.4541;-51.4575;0;Bottom;Copper Fill120
111;;;78.1177;-24.1779;0;Bottom;Copper Fill296
112;;;92.5322;-45.3107;0;Bottom;Copper Fill187
113;;;3.1877;-24.1779;0;Bottom;Copper Fill122
114;;;60.833;-11.4525;0;Bottom;Copper Fill257
115;;;95.3262;-18.8439;0;Bottom;Copper Fill244
116;;;95.3262;-44.2439;0;Bottom;Copper Fill191
117;;;48.387;-21.2061;0;Bottom;Copper Fill240
118;;;79.1972;-11.9224;0;Bottom;Copper Fill108
119;;;12.3444;-19.3519;0;Bottom;Copper Fill54
120;;;81.8388;-19.4027;0;Bottom;Copper Fill243
121;;;39.2176;-10.1063;0;Bottom;Copper Fill263
122;;;10.4394;-43.6597;0;Bottom;Copper Fill183
123;;;17.4244;-19.9869;0;Bottom;Copper Fill56
124;;;91.821;-18.6661;0;Bottom;Copper Fill68
125;;;40.1828;-6.2963;0;Bottom;Copper Fill274
126;;;24.1681;-8.3029;0;Bottom;Copper Fill285
127;;THT;32.4556;-38.5233;90;Bottom;J2
128;;;98.8822;-3.0324;0;Bottom;Copper Fill100
129;;;67.3481;-10.2079;0;Bottom;Copper Fill326
130;;;52.0446;-20.3425;0;Bottom;Copper Fill242
131;;;94.6855;-2.96335;0;Bottom;Via26
132;;;78.1177;-24.1779;0;Bottom;Copper Fill102
133;;;94.0181;-6.6519;0;Bottom;Copper Fill309
134;;;15.5194;-42.3897;0;Bottom;Copper Fill190
135;;;37.5355;-13.1234;0;Bottom;Via7
136;;;37.5355;-8.04335;0;Bottom;Via6
137;;;62.2681;-11.0969;0;Bottom;Copper Fill146
138;;;9.8044;-19.0471;0;Bottom;Copper Fill53
139;;;98.4377;-2.5879;0;Bottom;Copper Fill98
140;;;94.1832;-3.0324;0;Bottom;Copper Fill115
141;;;8.5598;-35.9127;0;Bottom;Copper Fill210
142;;;80.0608;-51.4829;0;Bottom;Copper Fill22
143;;;5.9944;-44.2947;0;Bottom;Copper Fill181
144;;;55.3974;-33.9569;0;Bottom;Copper Fill205
145;;;62.3005;-10.5834;0;Bottom;Via18
146;180k;0805 [SMD];68.6505;-6.38318;90;Top;R10
147;;;90.8812;-23.1111;0;Bottom;Copper Fill51
148;;;10.9982;-45.7933;0;Bottom;Copper Fill149
149;;;35.8394;-46.1235;0;Bottom;Copper Fill27
150;;;59.7408;-51.4829;0;Bottom;Copper Fill16
151;;;37.5355;-10.5834;0;Bottom;Via4
152;;;37.5355;-5.50335;0;Bottom;Via9
153;;;37.5355;-6.77335;0;Bottom;Via8
154;;;97.3582;-27.772;0;Bottom;Copper Fill330
155;;;49.7332;-30.9724;0;Bottom;Copper Fill126
156;;;95.631;-23.4667;0;Bottom;Copper Fill50
157;;;76.0222;-26.7941;0;Bottom;Copper Fill219
158;;;24.5872;-3.0324;0;Bottom;Copper Fill322
159;;;95.3262;-34.0839;0;Bottom;Copper Fill221
160;;;24.2005;-2.96335;0;Bottom;Via29
161;;;90.2405;-28.3634;0;Bottom;Via32
162;;;78.7781;-11.4779;0;Bottom;Copper Fill106
163;;;14.2748;-2.8673;0;Bottom;Copper Fill80
164;;;95.3262;-26.4639;0;Bottom;Copper Fill48
165;;;95.3262;-49.3239;0;Bottom;Copper Fill37
166;;;81.28;-25.0415;0;Bottom;Copper Fill232
167;;;57.1881;-11.0969;0;Bottom;Copper Fill137
168;330k;0805 [SMD];68.6505;-14.0032;-90;Top;R9
169;;;95.631;-20.9267;0;Bottom;Copper Fill67
170;;;47.3964;-36.0905;0;Bottom;Copper Fill216
171;;;98.4377;-3.4769;0;Bottom;Copper Fill291
172;;;25.1714;-30.8835;0;Bottom;Copper Fill42
173;;;95.3262;-36.6239;0;Bottom;Copper Fill44
174;;;54.6608;-51.4829;0;Bottom;Copper Fill163
175;;;58.7248;-17.2183;0;Bottom;Copper Fill245
176;;;78.5622;-24.6224;0;Bottom;Copper Fill298
177;;;51.4477;-26.7179;0;Bottom;Copper Fill289
178;;;37.8968;-51.4829;0;Bottom;Copper Fill8
179;;;50.3428;-13.04;0;Bottom;Copper Fill314
180;;;24.765;-26.5401;0;Bottom;Copper Fill148
181;;;24.1681;-9.1665;0;Bottom;Copper Fill284
182;;;89.7636;-28.4324;0;Bottom;Copper Fill281
183;;;57.2205;-10.5834;0;Bottom;Via16
184;;;69.342;-26.5401;0;Bottom;Copper Fill79
185;;;96.5581;-6.6519;0;Bottom;Copper Fill118
186;;;37.8968;-51.4829;0;Bottom;Copper Fill157
187;;;85.2932;-35.2015;0;Bottom;Copper Fill220
188;;;51.4477;-27.6069;0;Bottom;Copper Fill94
189;;;51.8922;-27.1624;0;Bottom;Copper Fill290
190;;;64.8208;-6.4233;0;Bottom;Copper Fill269
191;;;94.6277;-3.4769;0;Bottom;Copper Fill113
192;;;76.3016;-49.2731;0;Bottom;Copper Fill179
193;;;57.2008;-51.4829;0;Bottom;Copper Fill15
194;;;78.1177;-19.9869;0;Bottom;Copper Fill303
195;;;48.2981;-2.8165;0;Bottom;Copper Fill283
196;;;92.7608;-9.9285;0;Bottom;Copper Fill77
197;;;30.2768;-51.4829;0;Bottom;Copper Fill5
198;;;12.2621;-17.215;0;Bottom;TXT6
199;;;5.9944;-35.6079;0;Bottom;Copper Fill209
200;;;24.1681;-2.5879;0;Bottom;Copper Fill132
201;;;14.9098;-19.6567;0;Bottom;Copper Fill55
202;;;95.3262;-44.2439;0;Bottom;Copper Fill39
203;;;89.7636;-28.4324;0;Bottom;Copper Fill87
204;;;37.5355;-9.31335;0;Bottom;Via5
205;;;95.3008;-51.5337;0;Bottom;Copper Fill175
206;;;54.6608;-6.4233;0;Bottom;Copper Fill265
207;;;85.1408;-51.4829;0;Bottom;Copper Fill174
208;;;96.5581;-6.6519;0;Bottom;Copper Fill311
209;;;74.1172;-31.3407;0;Bottom;Copper Fill226
210;;;78.5114;-36.9287;0;Bottom;Copper Fill206
211;;;11.0744;-36.2429;0;Bottom;Copper Fill211
212;;;49.5808;-51.4829;0;Bottom;Copper Fill12
213;;;80.0608;-51.4829;0;Bottom;Copper Fill172
214;;;38.9128;-11.3763;0;Bottom;Copper Fill261
215;;so014;81.9856;-31.1634;0;Top;IC2
216;;so014;68.0156;-31.1634;0;Top;IC1
217;;;62.2808;-51.4829;0;Bottom;Copper Fill166
218;;;34.3408;-3.2229;0;Bottom;Copper Fill83
219;;;85.1408;-51.4829;0;Bottom;Copper Fill24
220;;;68.453;-11.4525;0;Bottom;Copper Fill260
221;;;95.3262;-11.2239;0;Bottom;Copper Fill253
222;;;69.2912;-30.5025;0;Bottom;Copper Fill75
223;;;95.631;-15.8467;0;Bottom;Copper Fill70
224;;;74.9808;-51.4829;0;Bottom;Copper Fill20
225;;;78.3336;-11.9224;0;Bottom;Copper Fill301
226;;;24.5872;-8.722;0;Bottom;Copper Fill287
227;;;84.7598;-26.5401;0;Bottom;Copper Fill222
228;;;35.433;-22.1967;0;Bottom;Copper Fill63
229;;;35.3568;-51.4829;0;Bottom;Copper Fill156
230;;;77.3684;-36.1667;0;Bottom;Copper Fill207
231;;;77.6732;-24.6224;0;Bottom;Copper Fill297
232;;;78.5622;-19.5424;0;Bottom;Copper Fill305
233;;;78.5622;-19.5424;0;Bottom;Copper Fill112
234;;;65.3288;-35.6841;0;Bottom;Copper Fill199
235;;;78.1755;-19.4734;0;Bottom;Via23
236;;;44.0436;-15.0593;0;Bottom;Copper Fill247
237;;;81.4832;-32.2424;0;Bottom;Copper Fill140
238;;;95.0722;-3.0324;0;Bottom;Copper Fill116
239;;;78.7781;-12.3669;0;Bottom;Copper Fill105
240;;THT;32.4556;-23.2833;-90;Bottom;J1
241;;;38.7477;-37.7415;0;Bottom;Copper Fill124
242;;;38.4048;-46.4283;0;Bottom;Copper Fill28
243;;;54.6481;-11.0969;0;Bottom;Copper Fill136
244;;;27.6098;-40.5355;0;Bottom;Copper Fill197
245;;;95.3262;-29.0039;0;Bottom;Copper Fill229
246;;;74.9808;-51.4829;0;Bottom;Copper Fill170
247;;;41.3512;-10.5635;0;Bottom;Copper Fill74
248;;;55.0418;-17.5231;0;Bottom;Copper Fill66
249;;;52.1208;-6.4233;0;Bottom;Copper Fill264
250;;;67.3481;-11.0969;0;Bottom;Copper Fill142
251;;;95.3262;-41.7039;0;Bottom;Copper Fill196
252;;;57.1881;-10.2079;0;Bottom;Copper Fill325
253;;;46.101;-36.7255;0;Bottom;Copper Fill214
254;180k;0805 [SMD];61.0305;-6.38318;-90;Top;R14
255;;;40.4876;-5.0263;0;Bottom;Copper Fill275
256;;;32.8168;-51.4829;0;Bottom;Copper Fill155
257;;;46.8122;-11.9224;0;Bottom;Copper Fill121
258;;;51.5055;-27.0934;0;Bottom;Via28
259;;;28.8035;-15.8903;0;Bottom;TXT18
260;;;90.6272;-28.4324;0;Bottom;Copper Fill88
261;;;95.3262;-18.8439;0;Bottom;Copper Fill69
262;;;35.3568;-51.4829;0;Bottom;Copper Fill7
263;;;23.7236;-8.722;0;Bottom;Copper Fill286
264;;;62.9158;-33.0171;0;Bottom;Copper Fill215
265;;;41.9806;-1.05826;0;Bottom;Via33
266;;;78.5368;-48.9683;0;Bottom;Copper Fill180
267;;;78.1177;-19.9869;0;Bottom;Copper Fill109
268;330k;0805 [SMD];53.4105;-14.0032;-90;Top;R2
269;;;65.913;-11.4525;0;Bottom;Copper Fill259
270;;;3.1877;-24.1779;0;Bottom;Copper Fill316
271;;;40.4368;-51.4829;0;Bottom;Copper Fill158
272;;;20.1168;-51.4829;0;Bottom;Copper Fill150
273;;;59.7605;-10.5834;0;Bottom;Via17
274;;;97.9932;-3.0324;0;Bottom;Copper Fill99
275;;;30.1244;-37.1319;0;Bottom;Copper Fill213
276;;;52.1081;-11.0969;0;Bottom;Copper Fill135
277;;;47.0916;-33.6013;0;Bottom;Copper Fill223
278;;;95.3262;-23.9239;0;Bottom;Copper Fill235
279;;;78.3336;-11.9224;0;Bottom;Copper Fill107
280;;;19.5072;-13.5099;0;Bottom;Copper Fill64
281;;;11.7094;-43.3549;0;Bottom;Copper Fill185
282;;;24.5872;-8.722;0;Bottom;Copper Fill93
283;;;54.6608;-51.4829;0;Bottom;Copper Fill14
284;;;81.9277;-32.6869;0;Bottom;Copper Fill138
285;;;43.9166;-21.8157;0;Bottom;Copper Fill238
286;;;98.8822;-3.0324;0;Bottom;Copper Fill294
287;;;55.9816;-17.0659;0;Bottom;Copper Fill246
288;;;95.3262;-46.7839;0;Bottom;Copper Fill184
289;;;2.3368;-23.3524;0;Bottom;Copper Fill318
290;;;93.1926;-7.452;0;Bottom;Copper Fill310
291;;;40.4368;-51.4829;0;Bottom;Copper Fill9
292;;;49.7332;-30.9724;0;Bottom;Copper Fill319
293;;;90.2081;-28.8769;0;Bottom;Copper Fill279
294;330k;0805 [SMD];63.5705;-14.0032;-90;Top;R15
295;;;52.1208;-51.4829;0;Bottom;Copper Fill162
296;;;66.0908;-50.7971;0;Bottom;Copper Fill167
297;;;46.1772;-21.5109;0;Bottom;Copper Fill239
298;;;54.8894;-48.3333;0;Bottom;Copper Fill33
299;;;49.5808;-51.4829;0;Bottom;Copper Fill161
300;;;95.3262;-31.5439;0;Bottom;Copper Fill227
301;;;94.0181;-6.6519;0;Bottom;Copper Fill117
302;;;44.5205;-11.8534;0;Bottom;Via21
303;;;81.9277;-31.7979;0;Bottom;Copper Fill139
304;;;22.2549;-19.3072;0;Bottom;TXT3
305;;;41.9481;-0.7083;0;Bottom;Copper Fill276
306;;;94.1832;-3.0324;0;Bottom;Copper Fill307
307;;;97.9932;-3.0324;0;Bottom;Copper Fill293
308;;;25.0444;-40.8403;0;Bottom;Copper Fill195
309;;;3.1877;-22.5015;0;Bottom;Copper Fill123
310;;;95.631;-13.3067;0;Bottom;Copper Fill72
311;180k;0805 [SMD];55.9505;-6.38318;90;Top;R5
312;;;98.4955;-2.96335;0;Bottom;Via27
313;;;54.4322;-35.2269;0;Bottom;Copper Fill204
314;;;73.4822;-31.582;0;Bottom;Copper Fill131
315;;;95.3262;-39.1639;0;Bottom;Copper Fill41
316;;;52.1208;-51.4829;0;Bottom;Copper Fill13
317;;;69.9008;-51.4829;0;Bottom;Copper Fill18
318;;;55.753;-11.4525;0;Bottom;Copper Fill255
319;;;63.754;-16.5579;0;Bottom;Copper Fill249
320;;;92.1512;-12.0113;0;Bottom;Copper Fill73
321;;;97.3582;-27.772;0;Bottom;Copper Fill147
322;;;90.2081;-27.9879;0;Bottom;Copper Fill280
323;;;46.4255;-11.8534;0;Bottom;Via22
324;;;64.8405;-10.5834;0;Bottom;Via19
325;;;14.2494;-42.7199;0;Bottom;Copper Fill188
326;;;61.214;-16.8627;0;Bottom;Copper Fill248
327;;;72.4605;-22.0134;0;Bottom;Via1
328;;;64.8081;-11.0969;0;Bottom;Copper Fill144
329;;;77.5208;-51.4829;0;Bottom;Copper Fill21
330;;;72.4408;-51.4829;0;Bottom;Copper Fill19
331;;;19.9644;-20.3171;0;Bottom;Copper Fill57
332;;;47.244;-47.3935;0;Bottom;Copper Fill30
333;;;48.0568;-30.9724;0;Bottom;Copper Fill125
334;;;49.6005;-10.5834;0;Bottom;Via14
335;;;54.6481;-10.2079;0;Bottom;Copper Fill324
336;;;94.6277;-3.4769;0;Bottom;Copper Fill306
337;;;69.9008;-51.4829;0;Bottom;Copper Fill168
338;;;24.2005;-8.67835;0;Bottom;Via30
339;;;95.3262;-41.7039;0;Bottom;Copper Fill40
340;;;47.0408;-51.4829;0;Bottom;Copper Fill160
341;;;82.3722;-32.2424;0;Bottom;Copper Fill141
342;;;61.6077;-24.1779;0;Bottom;Copper Fill277
343;;;32.1818;-37.3351;0;Bottom;Copper Fill43
344;;;75.0824;-34.6173;0;Bottom;Copper Fill218
345;;;23.7236;-3.0324;0;Bottom;Copper Fill133
346;;;78.7781;-12.3669;0;Bottom;Copper Fill299
347;;;97.3582;-7.452;0;Bottom;Copper Fill119
348;;;7.2644;-18.7169;0;Bottom;Copper Fill52
349;;;32.6644;-39.9005;0;Bottom;Copper Fill200
350;;;59.7281;-10.2079;0;Bottom;Copper Fill328
351;;;22.6568;-51.4829;0;Bottom;Copper Fill2
352;;;59.7408;-51.4829;0;Bottom;Copper Fill165
353;;;77.6732;-24.6224;0;Bottom;Copper Fill103
354;;;77.5208;-51.4829;0;Bottom;Copper Fill171
355;;;61.6077;-24.1779;0;Bottom;Copper Fill85
356;;;72.4408;-51.4829;0;Bottom;Copper Fill169
357;;;71.8312;-27.8355;0;Bottom;Copper Fill228
358;;;27.5844;-21.2569;0;Bottom;Copper Fill60
359;;;74.0918;-49.6033;0;Bottom;Copper Fill178
360;180k;0805 [SMD];58.4905;-6.38318;90;Top;R7
361;180k;0805 [SMD];66.1105;-6.38318;90;Top;R12
362;;;23.7236;-3.0324;0;Bottom;Copper Fill321
363;;;44.0944;-47.9269;0;Bottom;Copper Fill10
364;;;91.8464;-14.8815;0;Bottom;Copper Fill71
365;;;48.7934;-38.3257;0;Bottom;Copper Fill201
366;;;37.5355;-4.23335;0;Bottom;Via10
367;;;49.5681;-10.2079;0;Bottom;Copper Fill315
368;;;51.8922;-27.1624;0;Bottom;Copper Fill96
369;;;67.3608;-6.4233;0;Bottom;Copper Fill270
370;;;90.551;-24.3811;0;Bottom;Copper Fill49
371;;;53.213;-11.4525;0;Bottom;Copper Fill254
372;;;49.1236;-10.6524;0;Bottom;Copper Fill128
373;;;78.7781;-11.4779;0;Bottom;Copper Fill300
374;;;25.0698;-20.9267;0;Bottom;Copper Fill59
375;;;69.85;-31.8741;0;Bottom;Copper Fill225
376;;;48.3305;-2.32835;0;Bottom;Via31
377;;;30.1244;-21.5871;0;Bottom;Copper Fill61
378;;;24.1681;-9.1665;0;Bottom;Copper Fill90
379;;;62.2681;-10.2079;0;Bottom;Copper Fill329
380;180k;0805 [SMD];53.4105;-6.38318;90;Top;R1
381;;;70.9422;-25.0415;0;Bottom;Copper Fill231
382;;;81.9855;-32.1734;0;Bottom;Via12
383;;;95.3262;-34.0839;0;Bottom;Copper Fill45
384;;;95.3008;-51.4829;0;Bottom;Copper Fill25
385;;;95.3262;-46.7839;0;Bottom;Copper Fill38
386;;;78.1177;-25.0669;0;Bottom;Copper Fill295
387;;;52.324;-48.0285;0;Bottom;Copper Fill32
388;;;82.7024;-25.0161;0;Bottom;Copper Fill233
389;;;46.8122;-11.9224;0;Bottom;Copper Fill313

View File

@ -0,0 +1,24 @@
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,4.000010X2.088890X3.984010X2.072890*%
%ADD11C,0.008000*%
%LNSILK0*%
G90*
G70*
G54D11*
X4Y2085D02*
X3996Y2085D01*
X3996Y4D01*
X4Y4D01*
X4Y2085D01*
D02*
G04 End of Silk0*
M02*

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -2,164 +2,56 @@
; THROUGH (PLATED) HOLES START AT T100
M48
INCH
T1C0.165354
T2C0.125984
T100C0.038194
T101C0.035000
T102C0.042000
T103C0.015748
T104C0.059055
T105C0.040000
T106C0.031496
T107C0.031497
T1C0.125984
T2C0.165354
T100C0.059055
T101C0.070000
T102C0.031496
T103C0.031497
T104C0.035000
T105C0.038194
T106C0.040000
T107C0.042000
T108C0.030000
T109C0.070000
T109C0.038000
T110C0.039370
T111C0.038000
T111C0.015748
%
T1
X001411Y030530
X001411Y021530
T2
X035411Y031280
X037661Y012280
T2
X001411Y021530
X001411Y030530
T100
X019911Y012280
X011311Y031280
X019911Y031280
X037911Y028280
X028911Y012280
X028911Y031280
X037911Y031280
X036911Y023280
X011911Y012280
X020911Y012280
X020911Y031280
X037911Y027280
X036911Y019280
X014311Y031280
X037911Y030280
X036911Y022280
X014911Y012280
X037911Y026280
X023911Y012280
X036911Y018280
X008311Y031280
X023911Y031280
X032911Y012280
X032911Y031280
X036911Y021280
X037911Y025280
X017911Y012280
X036911Y017280
X017911Y031280
X026911Y012280
X026911Y031280
X036911Y020280
X035911Y012280
X037911Y024280
X036911Y016280
X012311Y031280
X029911Y012280
X029911Y031280
X037911Y023280
X012911Y012280
X036911Y015280
X021911Y012280
X021911Y031280
X037911Y019280
X030911Y012280
X015311Y031280
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
X036411Y034811
X036411Y036780
T101
X012661Y035530
X018661Y030280
X016661Y025530
X010911Y035530
X023161Y013780
X031911Y010280
X035661Y022280
X018661Y026280
X025161Y013280
X024161Y017780
X016411Y006280
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
X017411Y006030
X017411Y018530
X032911Y007280
X019661Y030280
X024161Y013780
X032911Y010280
X016661Y037780
X004661Y019030
X019661Y026280
X012411Y024280
X012411Y022280
X012411Y028280
X012411Y026280
T102
X033911Y034030
X033911Y036983
T103
X018161Y033045
X025911Y023030
X026161Y015030
X024927Y023030
X018161Y034030
X025177Y015030
X018161Y035045
X005421Y033789
X005421Y032805
X026161Y017030
X018161Y036030
X025177Y017030
X025911Y021030
X005421Y035789
X005421Y034805
X024927Y021030
T104
X016652Y033521
X020661Y030280
X016661Y035530
@ -167,38 +59,39 @@ X020661Y026280
X031661Y023280
X029161Y013280
X012911Y011280
X029911Y006030
X021411Y006030
X035911Y017530
X029911Y006030
X015911Y011030
X023661Y030280
X016661Y034530
X022661Y021030
X023661Y030280
X020661Y018780
X012911Y007280
X031661Y022280
X015911Y007030
X012411Y006280
X021911Y007280
X012411Y006280
X037911Y002280
X023661Y025030
X023661Y026280
X035911Y016530
X029911Y005030
X030911Y007280
X035911Y016530
X021911Y010280
X017661Y030280
X030911Y010280
X031661Y021280
X017411Y014530
X021911Y018780
X017411Y014530
X017661Y026280
X016661Y029530
X023161Y017780
X035911Y015530
X012652Y036521
X024161Y032280
X033911Y006030
X033911Y007280
X012652Y036521
X016661Y032530
X031661Y020280
X006911Y037780
@ -217,8 +110,8 @@ X024661Y030030
X021661Y026280
X006911Y034530
X012661Y037780
X000661Y019030
X023661Y021030
X000661Y019030
X010911Y037780
X010911Y036530
X025911Y030030
@ -229,247 +122,356 @@ X020661Y013780
X016411Y018530
X031911Y007280
X006911Y033530
T102
X025161Y036260
X022161Y035280
X020161Y035280
X020661Y024780
X018661Y030280
X012661Y035530
X016661Y025530
X010911Y035530
X023161Y013780
X031911Y010280
X018661Y026280
X035661Y022280
X025161Y013280
X024161Y017780
X016411Y006280
X031911Y017530
X006911Y032530
X025911Y025030
X021911Y013780
X012661Y034530
X010911Y034530
X035661Y021280
X031911Y016530
X019911Y007280
X010911Y033530
X014911Y011030
X019911Y010280
X016652Y036521
X022661Y030280
X035661Y020280
X014911Y007030
X031911Y015530
X020911Y007280
X022661Y025030
X022661Y026280
X012661Y032530
X010911Y032530
X023161Y010780
X020911Y010280
X037911Y006280
X023161Y006780
X016411Y014530
X031911Y014530
X031411Y002280
X017411Y006030
X017411Y018530
X032911Y007280
X019661Y030280
X024161Y036280
X024161Y013780
X032911Y010280
X016661Y037780
X004661Y019030
X019661Y026280
T105
X037911Y023280
X012911Y012280
X036911Y015280
X021911Y012280
X021911Y031280
X037911Y019280
X030911Y012280
X015311Y031280
X030911Y031280
X037911Y022280
X036911Y014280
X015911Y012280
X037911Y018280
X024911Y012280
X009311Y031280
X024911Y031280
X036911Y029280
X033911Y012280
X033911Y031280
X037911Y021280
X037911Y017280
X010311Y031280
X018911Y031280
X036911Y028280
X027911Y031280
X037911Y020280
X010911Y012280
X036911Y031280
X037911Y016280
X036911Y027280
X013311Y031280
X036911Y030280
X013911Y012280
X037911Y015280
X022911Y012280
X036911Y026280
X007311Y031280
X022911Y031280
X031911Y012280
X016311Y031280
X031911Y031280
X037911Y014280
X016911Y012280
X036911Y025280
X025911Y012280
X037911Y029280
X034911Y012280
X036911Y024280
X019911Y012280
X011311Y031280
X019911Y031280
X028911Y012280
X037911Y028280
X028911Y031280
X037911Y031280
X036911Y023280
X011911Y012280
X020911Y012280
X020911Y031280
X037911Y027280
X036911Y019280
X014311Y031280
X037911Y030280
X036911Y022280
X014911Y012280
X037911Y026280
X023911Y012280
X008311Y031280
X036911Y018280
X023911Y031280
X032911Y012280
X032911Y031280
X036911Y021280
X037911Y025280
X017911Y012280
X036911Y017280
X017911Y031280
X026911Y012280
X026911Y031280
X036911Y020280
X035911Y012280
X037911Y024280
X036911Y016280
X012311Y031280
X029911Y012280
X029911Y031280
T106
X008911Y011780
X007911Y016780
X008911Y003780
X007911Y008780
X008911Y016780
X008911Y008780
X007911Y022780
X007911Y014780
X008911Y022780
X007911Y006780
X008911Y014780
X007911Y019780
X008911Y006780
X008911Y019780
X007911Y020780
X007911Y012780
X008911Y020780
X007911Y004780
X008911Y012780
X007911Y017780
X008911Y004780
X007911Y009780
X008911Y017780
X008911Y009780
X007911Y010780
X008911Y010780
X007911Y015780
X007911Y007780
X008911Y015780
X008911Y007780
X007911Y021780
X007911Y013780
X008911Y021780
X007911Y005780
X008911Y013780
X007911Y018780
X008911Y005780
X008911Y018780
X007911Y011780
X007911Y003780
T107
X014911Y025030
X021931Y037280
X030661Y036280
X003891Y037780
X025161Y033280
X001411Y033030
X003411Y033030
X014911Y028280
X018661Y022280
X021161Y033030
X002411Y033030
X011911Y010760
X019661Y022280
X022161Y033030
X020161Y033030
X014911Y023030
X001411Y033030
X003411Y033030
X018661Y022280
X021161Y033030
X030661Y033300
X028661Y037030
X026661Y037030
X020661Y022280
X027661Y037030
X023911Y036760
X002421Y035289
X000911Y036530
X028661Y037030
X014911Y029280
X001421Y035289
X003421Y035289
X002421Y035289
X014911Y024030
X018661Y024780
X000911Y036530
X019661Y024780
X014911Y027280
X023911Y033780
X024911Y037280
X020911Y037280
X018661Y024780
X011911Y007780
X000911Y037780
X017931Y037280
X021161Y035280
X003891Y036530
T103
X021411Y016780
X018911Y012280
X035161Y018280
X030661Y006030
X013411Y016280
X006411Y017530
X012411Y016280
X035661Y004280
X028661Y015030
X031661Y004030
X034911Y025780
X038161Y009780
X027661Y018280
X033161Y016030
X015411Y008030
X033911Y023780
X003911Y019530
X035911Y028780
X001661Y026530
X038161Y007780
X034911Y028780
X027911Y018780
X015161Y035780
X013161Y014780
X034911Y027030
X009661Y026530
X007161Y025530
X025411Y029030
X006161Y022030
X016911Y016280
X028661Y017530
X038661Y020780
X020161Y029530
X022161Y029530
X012411Y003780
X015023Y006280
X029661Y023530
X030661Y002780
X010661Y003530
X031161Y008530
X008911Y032780
T104
X036411Y034811
X036411Y036780
T105
X008911Y011780
X008911Y003780
X007911Y011780
X008911Y016780
X007911Y003780
X008911Y008780
X007911Y016780
X007911Y008780
X008911Y022780
X008911Y014780
X007911Y022780
X008911Y006780
X007911Y014780
X008911Y019780
X007911Y006780
X007911Y019780
X008911Y020780
X008911Y012780
X007911Y020780
X008911Y004780
X007911Y012780
X008911Y017780
X007911Y004780
X008911Y009780
X007911Y017780
X007911Y009780
X008911Y010780
X007911Y010780
X008911Y015780
X008911Y007780
X007911Y015780
X007911Y007780
X008911Y021780
X008911Y013780
X007911Y021780
X008911Y005780
X007911Y013780
X008911Y018780
X007911Y005780
X007911Y018780
T106
X033911Y036983
X033911Y034030
T107
X025177Y015030
X026161Y015030
X018161Y034030
X018161Y035045
X025177Y017030
X005421Y033789
X005421Y032805
X026161Y017030
X018161Y036030
X024927Y021030
X025911Y021030
X005421Y035789
X005421Y034805
X024927Y023030
X018161Y033045
X025911Y023030
X025161Y036260
X022161Y035280
X020161Y035280
X000911Y037780
X020661Y024780
X021161Y035280
T108
X013911Y013780
X011911Y013780
X026911Y035280
X028911Y035280
X028661Y010030
X026661Y023030
X014411Y014530
X032161Y033780
X028911Y030030
X013911Y013780
X015411Y014530
X028911Y035280
X028661Y010030
X029911Y030030
X017411Y008280
X026911Y033280
X028911Y030030
X026661Y021030
X037911Y011030
X031661Y013530
X033661Y013530
X026911Y033280
X028911Y033280
X026661Y021030
X004911Y018030
X002911Y018030
X024411Y003280
X026411Y003280
X007661Y028530
X031911Y030030
X033911Y030030
X035911Y030030
X030911Y030030
X032911Y030030
X034911Y030030
X024411Y008280
X028911Y025030
X026411Y003280
X031911Y030030
X033911Y030030
X035911Y030030
X029911Y025030
X025911Y010280
X007661Y026530
X004661Y016780
X002661Y016780
X028661Y008030
X028911Y025030
X032411Y037280
X030411Y037280
X031911Y025030
X033911Y025030
X035911Y025030
X017411Y010280
X030911Y025030
X032911Y025030
X034911Y025030
X011411Y003780
X013411Y003780
X013911Y009780
X028661Y008030
X031911Y025030
X033911Y025030
X035911Y025030
X014661Y003780
X016661Y003780
X004661Y018030
X002661Y018030
X011411Y003780
X013411Y003780
X037911Y009030
X013911Y009780
X024411Y010280
X013911Y007780
X025411Y005780
X023411Y005780
X014411Y016530
X032161Y035780
X015411Y016530
X025911Y008280
X013911Y007780
X011911Y013780
X004911Y016780
X002911Y016780
X026911Y035280
X026661Y023030
T109
X012411Y028280
X012411Y026280
X012411Y024280
X012411Y022280
T110
X027661Y016530
X030661Y015530
X027661Y020530
X027661Y017530
X030661Y016530
X027661Y021530
X030661Y020530
X030661Y017530
X027661Y022530
X030661Y021530
X027661Y023530
X030661Y022530
X027661Y014530
X030661Y023530
X027661Y015530
X030661Y014530
T111
X001911Y007530
X035661Y010780
X004911Y008530
X001911Y010530
X006161Y026530
X004911Y011530
X003911Y003530
X002911Y014530
X001911Y006530
X005911Y015530
X004911Y007530
X006161Y025530
X004911Y010530
X003911Y002530
X002911Y013530
X001911Y005530
X005911Y014530
X004911Y006530
X002911Y009530
X006161Y024530
X027911Y028280
X002911Y012530
X001911Y004530
X005911Y013530
X029911Y004030
X004911Y005530
X035661Y007280
X002911Y008530
X006161Y023530
X027911Y027280
X005911Y009530
X002911Y011530
X001911Y003530
X032661Y004030
X005911Y012530
X030911Y004030
X004911Y004530
X035661Y006280
X003911Y015530
X002911Y007530
X027911Y026280
X005911Y008530
X002911Y010530
X001911Y002530
X005911Y011530
X004911Y003530
X035661Y005280
X003911Y014530
X002911Y006530
X005911Y007530
X005911Y010530
X004911Y002530
X003911Y013530
X002911Y005530
X005911Y006530
X003911Y009530
X003911Y012530
X002911Y004530
X001911Y015530
X005911Y005530
X001911Y015530
X003911Y008530
X003911Y011530
X002911Y003530
X033661Y004030
X001911Y014530
X005911Y004530
X004911Y015530
X001911Y014530
X003911Y007530
X004911Y015530
X003911Y010530
X002911Y002530
X001911Y013530
@ -491,60 +493,66 @@ X006161Y027530
X004911Y012530
X003911Y004530
X002911Y015530
X001911Y007530
X035661Y010780
X004911Y008530
X001911Y010530
X006161Y026530
X004911Y011530
X003911Y003530
X002911Y014530
X001911Y006530
X004911Y007530
X005911Y015530
X006161Y025530
X004911Y010530
X003911Y002530
X002911Y013530
X001911Y005530
X005911Y014530
X004911Y006530
X002911Y009530
X006161Y024530
X027911Y028280
X002911Y012530
X001911Y004530
X029911Y004030
X005911Y013530
X004911Y005530
X035661Y007280
X002911Y008530
X006161Y023530
X027911Y027280
X005911Y009530
X002911Y011530
X001911Y003530
X032661Y004030
X030911Y004030
X005911Y012530
X004911Y004530
X035661Y006280
X002911Y007530
X003911Y015530
X027911Y026280
X005911Y008530
X002911Y010530
X001911Y002530
X005911Y011530
X004911Y003530
X035661Y005280
X003911Y014530
X002911Y006530
X005911Y007530
X005911Y010530
X004911Y002530
X003911Y013530
X002911Y005530
X005911Y006530
T110
X027661Y023530
X030661Y022530
X027661Y014530
X030661Y023530
X027661Y015530
X030661Y014530
X027661Y016530
X030661Y015530
X027661Y020530
X027661Y017530
X030661Y016530
X027661Y021530
X030661Y020530
X030661Y017530
X027661Y022530
X030661Y021530
T111
X012411Y016280
X021411Y016780
X018911Y012280
X035661Y004280
X038161Y013030
X013411Y016280
X006411Y017530
X034911Y025780
X028661Y015030
X031661Y004030
X027661Y018280
X033161Y016030
X015411Y008030
X015911Y036030
X001661Y026530
X033911Y023780
X034911Y028780
X027911Y018780
X003911Y019530
X013161Y014780
X035911Y028780
X034911Y027030
X009661Y026530
X038161Y007780
X007161Y025530
X025411Y029030
X037161Y004280
X016911Y016280
X020161Y029530
X022161Y029530
X006161Y022030
X028661Y017530
X012411Y003780
X038661Y020780
X029661Y023530
X015023Y006280
X030661Y002780
X010661Y003530
X035161Y018280
X030661Y006030
X031161Y008530
X008911Y032780
X036911Y013030
T00
M30

View File

@ -9,8 +9,8 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10C,0.049370*%
%ADD11C,0.080000*%
%ADD12C,0.085000*%
%ADD11C,0.085000*%
%ADD12C,0.080000*%
%ADD13C,0.088000*%
%ADD14C,0.140000*%
%ADD15C,0.084000*%
@ -33,6 +33,12 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X3691Y1303D03*
X3816Y1303D03*
G54D11*
X2416Y3628D03*
X2416Y3228D03*
G54D10*
X3491Y2878D03*
X3491Y2703D03*
X3491Y2578D03*
@ -50,7 +56,7 @@ X2866Y1753D03*
X2966Y2353D03*
X3391Y2378D03*
X1502Y628D03*
G54D11*
G54D12*
X3591Y3003D03*
X3591Y2503D03*
X3491Y3003D03*
@ -69,14 +75,14 @@ X2891Y3003D03*
X2891Y2503D03*
G54D10*
X3866Y2078D03*
X1516Y3578D03*
X1591Y3603D03*
X3166Y403D03*
X3816Y978D03*
X3716Y428D03*
X3816Y778D03*
X891Y3278D03*
X1541Y803D03*
X1891Y1228D03*
G54D12*
G54D11*
X3791Y228D03*
X3791Y628D03*
X3141Y228D03*
@ -95,6 +101,10 @@ X591Y253D03*
X191Y853D03*
X191Y1153D03*
X191Y353D03*
X291Y353D03*
X391Y353D03*
X491Y353D03*
X591Y353D03*
X191Y1353D03*
X191Y1253D03*
X191Y1053D03*
@ -106,7 +116,6 @@ X191Y653D03*
X191Y553D03*
X291Y853D03*
X291Y1153D03*
X291Y353D03*
X291Y1353D03*
X291Y1253D03*
X291Y1053D03*
@ -118,7 +127,6 @@ X291Y653D03*
X291Y553D03*
X391Y853D03*
X391Y1153D03*
X391Y353D03*
X391Y1353D03*
X391Y1253D03*
X391Y1053D03*
@ -130,7 +138,6 @@ X391Y653D03*
X391Y553D03*
X491Y853D03*
X491Y1153D03*
X491Y353D03*
X491Y1353D03*
X491Y1253D03*
X491Y1053D03*
@ -140,7 +147,6 @@ X491Y953D03*
X491Y1453D03*
X491Y653D03*
X491Y553D03*
X591Y353D03*
X591Y453D03*
X591Y553D03*
X591Y653D03*
@ -152,7 +158,7 @@ X591Y1153D03*
X591Y1253D03*
X591Y1353D03*
X591Y1453D03*
G54D12*
G54D11*
X1891Y728D03*
X1891Y1028D03*
X1991Y728D03*
@ -183,7 +189,7 @@ X2766Y1828D03*
X1241Y1628D03*
X1341Y1628D03*
X3516Y1828D03*
G54D12*
G54D11*
X3091Y728D03*
X3091Y1028D03*
X3191Y728D03*
@ -338,16 +344,16 @@ X1491Y2728D03*
X2066Y2228D03*
X1966Y2228D03*
X1866Y2228D03*
G54D11*
G54D12*
X1191Y1378D03*
X1391Y1378D03*
G54D12*
G54D11*
X1291Y728D03*
X1291Y1128D03*
G54D19*
X2516Y3328D03*
X2516Y3626D03*
G54D12*
G54D11*
X466Y1903D03*
X66Y1903D03*
G54D18*
@ -368,7 +374,7 @@ X3566Y878D03*
X2791Y2828D03*
X2791Y2728D03*
X2791Y2628D03*
G54D12*
G54D11*
X2991Y603D03*
X3391Y603D03*
X2991Y503D03*
@ -378,7 +384,7 @@ X2991Y403D03*
X3091Y403D03*
X3266Y403D03*
X3366Y403D03*
G54D12*
G54D11*
X3591Y1453D03*
X3191Y1453D03*
X2366Y3028D03*
@ -399,7 +405,7 @@ G54D19*
X2666Y3703D03*
X2766Y3703D03*
X2866Y3703D03*
G54D11*
G54D12*
X3041Y3728D03*
X3241Y3728D03*
X2891Y3528D03*
@ -431,7 +437,7 @@ X3066Y2253D03*
X2766Y2253D03*
X3066Y2353D03*
X2766Y2353D03*
G54D12*
G54D11*
X3591Y1553D03*
X3191Y1553D03*
X1866Y3028D03*
@ -448,16 +454,16 @@ X1766Y3028D03*
X1766Y2628D03*
X3566Y2228D03*
X3166Y2228D03*
G54D11*
G54D12*
X3366Y1353D03*
X3166Y1353D03*
G54D12*
G54D11*
X2066Y1378D03*
X2066Y1878D03*
G54D11*
G54D12*
X2666Y2103D03*
X2666Y2303D03*
G54D12*
G54D11*
X2591Y2503D03*
X2591Y3003D03*
X2191Y1878D03*
@ -481,14 +487,14 @@ X2518Y1503D03*
X2616Y1503D03*
X2493Y2103D03*
X2591Y2103D03*
G54D12*
G54D11*
X1741Y1853D03*
X1741Y1453D03*
X2141Y603D03*
X1741Y603D03*
X1641Y628D03*
X1241Y628D03*
G54D11*
G54D12*
X1741Y828D03*
X1741Y1028D03*
X1666Y378D03*
@ -497,7 +503,7 @@ X1391Y778D03*
X1391Y978D03*
X1341Y378D03*
X1141Y378D03*
G54D12*
G54D11*
X1591Y703D03*
X1591Y1103D03*
X1491Y703D03*
@ -505,34 +511,38 @@ X1491Y1103D03*
G54D19*
X1191Y778D03*
X1191Y1076D03*
G54D11*
G54D12*
X2866Y803D03*
X2866Y1003D03*
X266Y1678D03*
X466Y1678D03*
X291Y1678D03*
X491Y1678D03*
X2441Y828D03*
X2441Y1028D03*
X766Y2853D03*
X766Y2653D03*
X266Y1803D03*
X466Y1803D03*
X291Y1803D03*
X491Y1803D03*
X2341Y578D03*
X2541Y578D03*
X2641Y328D03*
X2441Y328D03*
G54D12*
G54D11*
X2766Y678D03*
X2766Y1078D03*
X2316Y678D03*
X2316Y1078D03*
X2916Y1328D03*
X2516Y1328D03*
G54D11*
G54D12*
X1441Y1453D03*
X1441Y1653D03*
X2591Y828D03*
X2591Y1028D03*
X3791Y1103D03*
X3791Y903D03*
X1541Y1653D03*
X1541Y1453D03*
G54D12*
G54D11*
X1641Y1853D03*
X1641Y1453D03*
X1091Y3253D03*
@ -559,8 +569,8 @@ X2091Y3728D03*
X1793Y3728D03*
X91Y3778D03*
X389Y3778D03*
X2391Y3378D03*
X2391Y3676D03*
X2491Y3728D03*
X2193Y3728D03*
X341Y3303D03*
X241Y3303D03*
X141Y3303D03*
@ -573,7 +583,7 @@ X142Y3529D03*
X2016Y3528D03*
X2116Y3528D03*
X2216Y3528D03*
G54D12*
G54D11*
X1091Y3353D03*
X691Y3353D03*
X1265Y3352D03*
@ -628,7 +638,7 @@ G54D27*
X90Y3653D03*
X2092Y3728D03*
X90Y3778D03*
X2391Y3377D03*
X2492Y3728D03*
X341Y3303D03*
X2016Y3303D03*
X342Y3529D03*

View File

@ -9,8 +9,8 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
%OFA0B0*%
%SFA1.0B1.0*%
%ADD10C,0.049370*%
%ADD11C,0.080000*%
%ADD12C,0.085000*%
%ADD11C,0.085000*%
%ADD12C,0.080000*%
%ADD13C,0.088000*%
%ADD14C,0.140000*%
%ADD15C,0.084000*%
@ -33,6 +33,12 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X3691Y1303D03*
X3816Y1303D03*
G54D11*
X2416Y3628D03*
X2416Y3228D03*
G54D10*
X3491Y2878D03*
X3491Y2703D03*
X3491Y2578D03*
@ -50,7 +56,7 @@ X2866Y1753D03*
X2966Y2353D03*
X3391Y2378D03*
X1502Y628D03*
G54D11*
G54D12*
X3591Y3003D03*
X3591Y2503D03*
X3491Y3003D03*
@ -69,14 +75,14 @@ X2891Y3003D03*
X2891Y2503D03*
G54D10*
X3866Y2078D03*
X1516Y3578D03*
X1591Y3603D03*
X3166Y403D03*
X3816Y978D03*
X3716Y428D03*
X3816Y778D03*
X891Y3278D03*
X1541Y803D03*
X1891Y1228D03*
G54D12*
G54D11*
X3791Y228D03*
X3791Y628D03*
X3141Y228D03*
@ -95,6 +101,10 @@ X591Y253D03*
X191Y853D03*
X191Y1153D03*
X191Y353D03*
X291Y353D03*
X391Y353D03*
X491Y353D03*
X591Y353D03*
X191Y1353D03*
X191Y1253D03*
X191Y1053D03*
@ -106,7 +116,6 @@ X191Y653D03*
X191Y553D03*
X291Y853D03*
X291Y1153D03*
X291Y353D03*
X291Y1353D03*
X291Y1253D03*
X291Y1053D03*
@ -118,7 +127,6 @@ X291Y653D03*
X291Y553D03*
X391Y853D03*
X391Y1153D03*
X391Y353D03*
X391Y1353D03*
X391Y1253D03*
X391Y1053D03*
@ -130,7 +138,6 @@ X391Y653D03*
X391Y553D03*
X491Y853D03*
X491Y1153D03*
X491Y353D03*
X491Y1353D03*
X491Y1253D03*
X491Y1053D03*
@ -140,7 +147,6 @@ X491Y953D03*
X491Y1453D03*
X491Y653D03*
X491Y553D03*
X591Y353D03*
X591Y453D03*
X591Y553D03*
X591Y653D03*
@ -152,7 +158,7 @@ X591Y1153D03*
X591Y1253D03*
X591Y1353D03*
X591Y1453D03*
G54D12*
G54D11*
X1891Y728D03*
X1891Y1028D03*
X1991Y728D03*
@ -187,7 +193,7 @@ X2766Y1828D03*
X1241Y1628D03*
X1341Y1628D03*
X3516Y1828D03*
G54D12*
G54D11*
X3091Y728D03*
X3091Y1028D03*
X3191Y728D03*
@ -342,16 +348,16 @@ X1491Y2728D03*
X2066Y2228D03*
X1966Y2228D03*
X1866Y2228D03*
G54D11*
G54D12*
X1191Y1378D03*
X1391Y1378D03*
G54D12*
G54D11*
X1291Y728D03*
X1291Y1128D03*
G54D19*
X2516Y3328D03*
X2516Y3626D03*
G54D12*
G54D11*
X466Y1903D03*
X66Y1903D03*
G54D18*
@ -372,7 +378,7 @@ X3566Y878D03*
X2791Y2828D03*
X2791Y2728D03*
X2791Y2628D03*
G54D12*
G54D11*
X2991Y603D03*
X3391Y603D03*
X2991Y503D03*
@ -382,7 +388,7 @@ X2991Y403D03*
X3091Y403D03*
X3266Y403D03*
X3366Y403D03*
G54D12*
G54D11*
X3591Y1453D03*
X3191Y1453D03*
X2366Y3028D03*
@ -403,7 +409,7 @@ G54D19*
X2666Y3703D03*
X2766Y3703D03*
X2866Y3703D03*
G54D11*
G54D12*
X3041Y3728D03*
X3241Y3728D03*
X2891Y3528D03*
@ -437,7 +443,7 @@ X3066Y2253D03*
X2766Y2253D03*
X3066Y2353D03*
X2766Y2353D03*
G54D12*
G54D11*
X3591Y1553D03*
X3191Y1553D03*
X1866Y3028D03*
@ -454,16 +460,16 @@ X1766Y3028D03*
X1766Y2628D03*
X3566Y2228D03*
X3166Y2228D03*
G54D11*
G54D12*
X3366Y1353D03*
X3166Y1353D03*
G54D12*
G54D11*
X2066Y1378D03*
X2066Y1878D03*
G54D11*
G54D12*
X2666Y2103D03*
X2666Y2303D03*
G54D12*
G54D11*
X2591Y2503D03*
X2591Y3003D03*
X2191Y1878D03*
@ -487,14 +493,14 @@ X2518Y1503D03*
X2616Y1503D03*
X2493Y2103D03*
X2591Y2103D03*
G54D12*
G54D11*
X1741Y1853D03*
X1741Y1453D03*
X2141Y603D03*
X1741Y603D03*
X1641Y628D03*
X1241Y628D03*
G54D11*
G54D12*
X1741Y828D03*
X1741Y1028D03*
X1666Y378D03*
@ -503,7 +509,7 @@ X1391Y778D03*
X1391Y978D03*
X1341Y378D03*
X1141Y378D03*
G54D12*
G54D11*
X1591Y703D03*
X1591Y1103D03*
X1491Y703D03*
@ -511,34 +517,38 @@ X1491Y1103D03*
G54D19*
X1191Y778D03*
X1191Y1076D03*
G54D11*
G54D12*
X2866Y803D03*
X2866Y1003D03*
X266Y1678D03*
X466Y1678D03*
X291Y1678D03*
X491Y1678D03*
X2441Y828D03*
X2441Y1028D03*
X766Y2853D03*
X766Y2653D03*
X266Y1803D03*
X466Y1803D03*
X291Y1803D03*
X491Y1803D03*
X2341Y578D03*
X2541Y578D03*
X2641Y328D03*
X2441Y328D03*
G54D12*
G54D11*
X2766Y678D03*
X2766Y1078D03*
X2316Y678D03*
X2316Y1078D03*
X2916Y1328D03*
X2516Y1328D03*
G54D11*
G54D12*
X1441Y1453D03*
X1441Y1653D03*
X2591Y828D03*
X2591Y1028D03*
X3791Y1103D03*
X3791Y903D03*
X1541Y1653D03*
X1541Y1453D03*
G54D12*
G54D11*
X1641Y1853D03*
X1641Y1453D03*
X1091Y3253D03*
@ -565,8 +575,8 @@ X2091Y3728D03*
X1793Y3728D03*
X91Y3778D03*
X389Y3778D03*
X2391Y3378D03*
X2391Y3676D03*
X2491Y3728D03*
X2193Y3728D03*
X341Y3303D03*
X241Y3303D03*
X141Y3303D03*
@ -579,7 +589,7 @@ X142Y3529D03*
X2016Y3528D03*
X2116Y3528D03*
X2216Y3528D03*
G54D12*
G54D11*
X1091Y3353D03*
X691Y3353D03*
X1265Y3352D03*
@ -634,7 +644,7 @@ G54D27*
X90Y3653D03*
X2092Y3728D03*
X90Y3778D03*
X2391Y3377D03*
X2492Y3728D03*
X341Y3303D03*
X2016Y3303D03*
X342Y3529D03*

View File

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

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,7 @@
queryCommand = "Q"
;signature = 20
signature = "speeduino 201612-dev"
signature = "speeduino 201701-dev"
versionInfo = "S" ; Put this in the title bar.
@ -118,9 +118,10 @@ page = 1
veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0
#if SPEED_DENSITY
mapBins = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0
;mapBins = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0
mapBins = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
tpsBins = array, U08, 272, [ 16], "TPS", 1.0, 0.0, 0.0, 255.0, 0
tpsBins = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#elif AIR_FLOW_METER
#error "Speeduino does not support MAF"
;#exit
@ -140,7 +141,7 @@ page = 2
crankingPct= scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0
pinLayout = bits, U08, 15, [0:7], "Speeduino v0.1", "Speeduino v0.2", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NA6 MX5 PNP", "Turtana PCB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Plazomat I/O 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Daz V6 Shield 0.1", "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", "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", "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", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
tachoPin = bits, U08, 16, [0:5], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
unused2-16f= bits, U08, 16, [6:7], "One", "Two", "INVALID", "INVALID"
tachoDiv = bits, U08, 16, [6:7], "Normal", "Half", "INVALID", "INVALID"
tdePct = scalar, U08, 17, "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA = scalar, U08, 18, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh = scalar, U08, 19, "%/s", 1.0, 0.0, 0.0, 255, 0
@ -178,12 +179,12 @@ page = 2
mapSample = bits, U08, 36, [0:1], "Instantaneous", "Cycle Average", "Cycle Minimum", "INVALID"
twoStroke = bits, U08, 36, [2:2], "Four-stroke", "Two-stroke"
injType = bits, U08, 36, [3:3], "Port", "Throttle Body"
nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","INVALID","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
; Config2
cltType = bits, U08, 37, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType = bits, U08, 37, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","INVALID","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
; Config3
engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire"
@ -225,9 +226,9 @@ page = 3
rpmBins2 = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
mapBins2 = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0
mapBins2 = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
tpsBins2 = array, U08, 272, [ 16], "TPS", 1.0, 0.0, 0.0, 255.0, 0
tpsBins2 = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#elif AIR_FLOW_METER
#error "Speeduino does not support MAF"
#exit
@ -248,7 +249,7 @@ page = 4
oddfire = bits, U08, 5,[3:3], "No", "Yes"
TrigPattern= bits, U08, 5,[4:7], "Missing Tooth", "Basic Distributor", "Dual Wheel", "GM 7X", "4G63 / Miata", "GM 24X", "Jeep 2000", "Audi 135", "Honda D17", "Miata 99-05", "Mazda AU", "Non-360 Dual", "INVALID", "INVALID", "INVALID", "INVALID"
TrigEdgeSec= bits, U08, 6,[0:0], "Leading", "Trailing"
fuelPumpPin= bits , U08, 6,[1:6], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
fuelPumpPin= bits , U08, 6,[1:6], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
unused4-6h = bits, U08, 6,[7:7], "No", "Yes"
unused4-7 = scalar, U08, 7, "ADC", 1, 0, 0, 255, 0
IdleAdvRPM = scalar, U08, 8, "RPM", 100, 0, 0, 1200, 0
@ -310,7 +311,7 @@ page = 4
dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0
;ranking ignition bypass
ignBypassEnable = bits, U08, 63, [0:0], "Off", "On"
ignBypassPin = bits , U08, 63, [1:6], "INVALID", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
ignBypassPin = bits , U08, 63, [1:6], "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH"
@ -321,9 +322,9 @@ page = 5
afrTable = array, U08, 0,[16x16], "AFR", 0.1, 0.0, 7, 25.5, 1
rpmBinsAFR = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
mapBinsAFR = array, U08, 272,[ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0
mapBinsAFR = array, U08, 272,[ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
tpsBinsAFR = array, U08, 272,[ 16], "TPS", 1.0, 0.0, 0.0, 255.0, 0
tpsBinsAFR = array, U08, 272,[ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#elif AIR_FLOW_METER
#error "Speeduino does not support MAF"
#exit
@ -356,8 +357,12 @@ page = 6
ego_sdelay = scalar, U08, 10, "sec", 1, 0, 0, 120, 0
egoRPM = scalar, U08, 11, "rpm", 100, 0.0, 100, 25500, 0
egoTPSMax = scalar, U08, 12, "%", 1, 0, 0, 120, 0
egoLoadMax = scalar, U08, 13, "%", 1, 0, 0, 120, 0
egoLoadMin = scalar, U08, 14, "%", 1, 0, 0, 120, 0
vvtPin = bits , U08, 13, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
unused6-13e = bits, U08, 13, [6:6], "ONE", "INVALID"
unused6-13f = bits, U08, 13, [7:7], "ONE", "INVALID"
boostPin = bits, U08, 14, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
unused6-14e = bits, U08, 14, [6:6], "ONE", "INVALID"
unused6-14f = bits, U08, 14, [7:7], "ONE", "INVALID"
brvBins = array, U08, 15, [6], "V", 0.1, 0, 6, 24, 1 ; Bins for the battery reference voltage
injBatRates = array, U08, 21, [6], "%", 1, 0, 0, 255, 0 ;Values for injector pulsewidth vs voltage
#if CELSIUS
@ -373,33 +378,35 @@ page = 6
idleFreq = scalar, U08, 47, "Hz", 2.0, 0.0, 10, 511, 0
; Launch Control
launchPin = bits , U08, 48, [0:5], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
launchPin = bits , U08, 48, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
launchEnable= bits, U08, 48, [6:6], "No", "Yes"
launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH"
lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0
lnchRetard = scalar, U08, 50, "deg", 1.0, 0.0, 0.0, 80, 0
lnchHardLim = scalar, U08, 51, "rpm", 100, 0.0, 100, 25500, 0
lnchFuelAdd = scalar, U08, 52, "%", 1.0, 0.0, 0.0, 80, 0
lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0
lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0
lnchHardLim = scalar, U08, 51, "rpm", 100, 0.0, 100, 25500, 0
lnchFuelAdd = scalar, U08, 52, "%", 1.0, 0.0, 0.0, 80, 0
idleKP = scalar, U08, 53, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte)
idleKI = scalar, U08, 54, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte)
idleKD = scalar, U08, 55, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte)
boostLimit = scalar, U08, 56, "kPa", 2.0, 0.0, 0, 511, 0
boostLimit = scalar, U08, 56, "kPa", 2.0, 0.0, 0.0, 511.0, 0
boostKP = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte)
boostKI = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte)
boostKD = scalar, U08, 59, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte)
lnchPullRes = bits, U08, 60, [0:1], "Float" , "Pullup", "INVALID", "INVALID"
fuelTrimEnabled= bits, U08, 60, [2:2], "No", "Yes"
unused6-60d = bits, U08, 60, [3:3], "ONE", "INVALID"
flatSEnable = bits, U08, 60, [3:3], "No", "Yes"
unused6-60e = bits, U08, 60, [4:4], "ONE", "INVALID"
unused6-60f = bits, U08, 60, [5:5], "ONE", "INVALID"
unused6-60g = bits, U08, 60, [6:6], "ONE", "INVALID"
unused6-60h = bits, U08, 60, [7:7], "ONE", "INVALID"
unused6-61 = scalar, U08, 61, "RPM", 100.0, 0.0, 100, 25500, 0
unused6-62 = scalar, U08, 62, "RPM", 100.0, 0.0, 100, 25500, 0
unused6-63 = scalar, U08, 63, "RPM", 100.0, 0.0, 100, 25500, 0
; Flat shift
flatSSoftWin = scalar, U08, 61, "rpm", 100, 0.0, 100, 25500, 0
flatSRetard = scalar, U08, 62, "deg", 1.0, 0.0, 0.0, 80, 0
flatSArm = scalar, U08, 63, "rpm", 100, 0.0, 100, 25500, 0
;--------------------------------------------------
;Start idle and fan controls (Page 7)
@ -438,13 +445,13 @@ page = 7
; Begin fan control vairables
fanInv = bits, U08, 56, [0:0], "No", "Yes"
fanEnable = bits, U08, 56, [1:1], "Off", "On/Off"
fanPin = bits , U08, 56, [2:7], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
fanPin = bits , U08, 56, [2:7], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
#if CELSIUS
fanSP = scalar, U08, 57, "C", 1.0, -40, -40, 215.0, 0
fanHyster = scalar, U08, 58, "C", 1.0, -40, -40, 215.0, 0
fanHyster = scalar, U08, 58, "C", 1.0, 0.0, 0.0, 40, 0
#else
fanSP = scalar, U08, 57, "F", 1.8, -22.23, -40, 215.0, 0
fanHyster = scalar, U08, 58, "F", 1.8, -22.23, -40, 215.0, 0
fanHyster = scalar, U08, 58, "F", 1.0, 0.0, 0.0, 40, 0
#endif
fanFreq = scalar, U08 , 59, "Hz", 2.0, 0.0, 10, 511, 0
#if CELSIUS
@ -477,33 +484,33 @@ page = 9
fuelTrim1Table = array, U08, 0,[6x6], "%", 1.0, -128, -50, 50, 0
fuelTrim1rpmBins = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
fuelTrim1loadBins = array, U08, 42,[ 6], "kPa", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim1loadBins = array, U08, 42,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
fuelTrim1loadBins = array, U08, 42,[ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim1loadBins = array, U08, 42,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#endif
fuelTrim2Table = array, U08, 48,[6x6], "%", 1.0, -128, -50, 50, 0
fuelTrim2rpmBins = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
fuelTrim2loadBins = array, U08, 90,[ 6], "kPa", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim2loadBins = array, U08, 90,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
fuelTrim2loadBins = array, U08, 90,[ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim2loadBins = array, U08, 90,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#endif
fuelTrim3Table = array, U08, 96,[6x6], "%", 1.0, -128, -50, 50, 0
fuelTrim3rpmBins = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
fuelTrim3loadBins = array, U08, 138,[ 6], "kPa", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim3loadBins = array, U08, 138,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
fuelTrim3loadBins = array, U08, 138,[ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim3loadBins = array, U08, 138,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#endif
fuelTrim4Table = array, U08, 144,[6x6], "%", 1.0, -128, -50, 50, 0
fuelTrim4rpmBins = array, U08, 180,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
fuelTrim4loadBins = array, U08, 186,[ 6], "kPa", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim4loadBins = array, U08, 186,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0
#elif ALPHA_N
fuelTrim4loadBins = array, U08, 186,[ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0
fuelTrim4loadBins = array, U08, 186,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0
#endif
@ -512,13 +519,13 @@ page = 9
[ConstantsExtensions]
requiresPowerCycle = nCylinders
requiresPowerCycle = pinLayout
requiresPowerCycle = fanPin
requiresPowerCycle = reqFuel
requiresPowerCycle = numteeth
requiresPowerCycle = onetwo
requiresPowerCycle = injOpen
requiresPowerCycle = IgInv
requiresPowerCycle = fanInv
requiresPowerCycle = iacAlgorithm
requiresPowerCycle = boostEnabled
requiresPowerCycle = vvtEnabled
; requiresPowerCycle = vvtChannels
@ -639,7 +646,7 @@ menuDialog = main
menu = "&Accessories"
subMenu = fanSettings, "Thermo Fan"
subMenu = LaunchControl, "Launch Control"
subMenu = LaunchControl, "Launch Control / Flat Shift"
subMenu = fuelpump, "Fuel Pump"
subMenu = std_separator
subMenu = boostSettings, "Boost Control"
@ -736,6 +743,10 @@ menuDialog = main
flexFuelHigh = "Fuel % to be used for the highest ethanol reading (Typically 163% for 100% ethanol)"
flexAdvLow = "Additional advance (in degrees) at lowest ethanol reading (Typically 0)"
flexAdvHigh = "Additional advance (in degrees) at highest ethanol reading (Typically 10-20 degrees)"
flatSArm = "The RPM switch point that determines whether an eganged clutch is for launch control or flat shift. Below this figure, an engaged clutch is considered to be for launch, above this figure an active clutch input will be considered a flat shift. This should be set at least several hundred RPM above idle"
flatSSoftWin= "The number of RPM below the flat shift point where the softlimit will be applied (aka Soft limit window). Recommended values are 200-1000"
flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window"
[UserDefined]
@ -834,7 +845,8 @@ menuDialog = main
panel = ff_fallback
dialog = tacho, "Tacho"
field = "Output pin", tachoPin
field = "Output pin", tachoPin
field = "Output speed", tachoDiv
dialog = canIO, "CanBus interface"
field = "Enable/Disable", canEnable
@ -902,8 +914,6 @@ menuDialog = main
field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) }
field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) }
field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) }
field = "Active Below Load", egoLoadMax, { egoType && (egoAlgorithm < 3) }
field = "Active Above Load", egoLoadMin, { egoType && (egoAlgorithm < 3) }
field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) }
field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) }
field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) }
@ -1015,18 +1025,30 @@ menuDialog = main
field = "Soft limit absolute timing", SoftLimRetard
field = "Soft limit max time", SoftLimMax
field = "Hard Rev limit", HardRevLim
dialog = clutchInput, "Clutch input"
field = "Clutch Input Pin", launchPin, { launchEnable || flatSEnable }
field = "Clutch enabled when signal is",launchHiLo, { launchEnable || flatSEnable }
field = "Clutch Pullup Resistor", lnchPullRes, { launchEnable || flatSEnable }
field = "Launch / Flat Shift switch RPM",flatSArm, { launchEnable || flatSEnable }
dialog = LaunchControl, "Launch Control", 6
dialog = LaunchControl, "Launch Control / Flat shift", 6
topicHelp = Fhelp7
panel = clutchInput
; Launch control
field = "Launch Control"
field = "Enable Launch", launchEnable
field = "Launch Input Pin", launchPin, { launchEnable }
field = "Launch enabled when signal is",launchHiLo, { launchEnable }
field = "Launch Pullup Resistor", lnchPullRes, { launchEnable }
field = "Soft rev limit", lnchSoftLim, { launchEnable }
field = "Soft limit absolute timing", lnchRetard, { launchEnable }
field = "Hard rev limit", lnchHardLim, { launchEnable }
field = "Fuel adder during launch", lnchFuelAdd, { launchEnable }
; Flat shift
field = "Flat Shift"
field = "Enable flat shift", flatSEnable
field = "Soft rev window", flatSSoftWin, { flatSEnable }
field = "Soft limit absolute timing", flatSRetard, { flatSEnable }
dialog = OLED, "OLED Display", 2
field = "Display Type", display
@ -1054,17 +1076,19 @@ menuDialog = main
dialog = boostSettings, "Boost Control"
field = "Boost Control Enabled", boostEnabled
field = "Boost solenoid freq.", boostFreq
field = "Boost Cut", boostCutType
field = "Boost Limit", boostLimit, { boostCutType }
field = "Boost output pin", boostPin, { boostEnabled }
field = "Boost solenoid freq.", boostFreq, { boostEnabled }
field = "Boost Cut", boostCutType, { boostEnabled }
field = "Boost Limit", boostLimit, { boostEnabled && boostCutType }
field = "Closed Loop settings"
field = "P", boostKP
field = "I", boostKI
field = "D", boostKD
field = "P", boostKP, { boostEnabled }
field = "I", boostKI, { boostEnabled }
field = "D", boostKD, { boostEnabled }
dialog = vvtSettings, "VVT Control"
field = "VVT Control Enabled", vvtEnabled
field = "VVT solenoid freq.", vvtFreq
field = "VVT output pin", vvtPin, { vvtEnabled }
field = "VVT solenoid freq.", vvtFreq, { vvtEnabled }
dialog = wc_note
field = "For 99% of engines, warmup must have 100% in the final row. Typical maximum is 255% (cold)."
@ -1119,7 +1143,7 @@ menuDialog = main
curve = time_accel_tpsdot_curve, "TPS based AE"
columnLabel = "TPSdot", "Added"
xAxis = 0, 1200, 6
yAxis = 0, 600, 4
yAxis = 0, 250, 4
xBins = taeBins, TPSdot
yBins = taeRates
;gauge = cltGauge
@ -1388,7 +1412,11 @@ menuDialog = main
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 200, 130, 140, 140, 150, 0, 0
gaugeCategory = "Sensor inputs"
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
mapGauge_psi = map_psi, "Engine MAP (PSI)", "PSI", -15, 100, 0, 20, 200, 245, 0, 0
mapGauge_bar = map_bar, "Engine MAP (BAR)", "Bar", -1, 3, -1, -1, 5, 5, 2, 2
mapGauge_vacBoost = map_vacboost, "Engine MAP (in-Hg/PSI)", "in-Hg/PSI", -30, 30, -30, -30, 30, 30, 1, 1
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, -15, 0, 95, 105, 0, 0
iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, -15, 0, 95, 100, 0, 0
@ -1561,13 +1589,14 @@ menuDialog = main
warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000
rpm = scalar, U16, 13, "rpm", 1.000, 0.000
accelEnrich = scalar, U08, 15, "%", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
baro = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr = scalar, U08, 18, "%", 1.000, 0.000
afrTarget = scalar, U08, 19, "O2", 0.100, 0.000
pulseWidth = scalar, U08, 20, "ms", 0.1, 0.000
TPSdot = scalar, U08, 21, "%/s", 10.00, 0.000
advance = scalar, U08, 22, "deg", 1.000, 0.000
;advance = scalar, U08, 22, "deg", 1.000, 0.000
advance = scalar, S08, 22, "deg", 1.000, 0.000
tps = scalar, U08, 23, "%", 1.000, 0.000
loopsPerSecond = scalar, U16, 24, "loops", 1.000, 0.000
freeRAM = scalar, S16, 26, "bytes", 1.000, 0.000
@ -1613,6 +1642,13 @@ menuDialog = main
boostCutOut = { boostCutFuel || boostCutSpark }
lambda = { afr / stoich }
MAPxRPM = { rpm * map }
;Manifold pressure in weirdo units
map_bar = { (map - baro) / 101.33 }
map_psi = { (map - baro) * 0.145038 }
map_inhg = { (baro - map) * 0.2953007 } ;in-Hg
map_vacboost = { map < baro ? -map_inhg : map_psi }
#if EXPANDED_CLT_TEMP
clt_exp = { 1 }
@ -1661,6 +1697,7 @@ menuDialog = main
entry = secl, "SecL", int, "%d"
entry = rpm, "RPM", int, "%d"
entry = map, "MAP", int, "%d"
entry = MAPxRPM, "MAPxRPM", int, "%d"
entry = tpsADC, "tpsADC", int, "%d"
entry = tps, "TPS", int, "%d"
entry = afr, "O2", float, "%.3f"
@ -1673,12 +1710,12 @@ menuDialog = main
entry = egoCorrection, "Gego", int, "%d"
entry = airCorrection, "Gair", int, "%d"
entry = warmupEnrich, "Gwarm", int, "%d"
entry = baroCorrection, "Gbaro", int, "%d"
;entry = baroCorrection, "Gbaro", int, "%d"
entry = gammaEnrich, "Gammae", int, "%d"
entry = accelEnrich, "TPSacc", int, "%d"
entry = veCurr, "VE", int, "%d"
entry = pulseWidth, "PW", float, "%.1f"
entry = afrTarget, "AFR Target", int, "%d"
entry = afrTarget, "AFR Target", float, "%.3f"
entry = pulseWidth, "PW2", float, "%.1f"
entry = dutyCycle, "DutyCycle1", float, "%.1f"
entry = dutyCycle, "DutyCycle2", float, "%.1f"

30
scheduledIO.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef SCHEDULEDIO_H
#define SCHEDULEDIO_H
inline void openInjector1();
inline void closeInjector1();
inline void beginCoil1Charge();
inline void endCoil1Charge();
inline void openInjector2();
inline void closeInjector2();
inline void beginCoil2Charge();
inline void endCoil2Charge();
inline void openInjector3();
inline void closeInjector3();
inline void beginCoil3Charge();
inline void endCoil3Charge();
inline void openInjector4();
inline void closeInjector4();
inline void beginCoil4Charge();
inline void endCoil4Charge();
inline void openInjector5();
inline void closeInjector5();
inline void beginCoil5Charge();
inline void endCoil5Charge();
#endif

84
scheduledIO.ino Normal file
View File

@ -0,0 +1,84 @@
//These functions simply trigger the injector/coil driver off or on.
//NOTE: squirt status is changed as per http://www.msextra.com/doc/ms1extra/COM_RS232.htm#Acmd
/*
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
//For the AVR chips, use the faster bit flipping method of switching pins
void ignitionSetter(byte *port, bool startCharge)
{
if(
}
void openInjector1() { *inj1_pin_port |= (inj1_pin_mask); ; BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ1); }
void closeInjector1() { *inj1_pin_port &= ~(inj1_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ1); }
void beginCoil1Charge() { *ign1_pin_port |= (ign1_pin_mask); BIT_SET(currentStatus.spark, 0); digitalWrite(pinTachOut, LOW); }
void endCoil1Charge() { *ign1_pin_port &= ~(ign1_pin_mask); BIT_CLEAR(currentStatus.spark, 0); }
void openInjector2() { *inj2_pin_port |= (inj2_pin_mask); ; BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ2); }
void closeInjector2() { *inj2_pin_port &= ~(inj2_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ2); }
void beginCoil2Charge() { *ign2_pin_port |= (ign2_pin_mask); BIT_SET(currentStatus.spark, 1); digitalWrite(pinTachOut, LOW); }
void endCoil2Charge() { *ign2_pin_port &= ~(ign2_pin_mask); BIT_CLEAR(currentStatus.spark, 1);}
void openInjector3() { *inj3_pin_port |= (inj3_pin_mask); ; BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ3); }
void closeInjector3() { *inj3_pin_port &= ~(inj3_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ3); }
void beginCoil3Charge() { *ign3_pin_port |= (ign3_pin_mask); BIT_SET(currentStatus.spark, 2); digitalWrite(pinTachOut, LOW); }
void endCoil3Charge() { *ign3_pin_port &= ~(ign3_pin_mask); BIT_CLEAR(currentStatus.spark, 2);}
void openInjector4() { *inj4_pin_port |= (inj4_pin_mask); ; BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ4); }
void closeInjector4() { *inj4_pin_port &= ~(inj4_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ4); }
void beginCoil4Charge() { *ign4_pin_port |= (ign4_pin_mask); BIT_SET(currentStatus.spark, 3); digitalWrite(pinTachOut, LOW); }
void endCoil4Charge() { *ign4_pin_port &= ~(ign4_pin_mask); BIT_CLEAR(currentStatus.spark, 3);}
#else
*/
volatile bool tachoAlt = true;
#define TACH_PULSE_HIGH() *tach_pin_port |= (tach_pin_mask)
#define TACH_PULSE_LOW() if( (configPage1.tachoDiv == 0) || tachoAlt ) *tach_pin_port &= ~(tach_pin_mask); tachoAlt = !tachoAlt
inline void openInjector1() { digitalWrite(pinInjector1, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ1); }
inline void closeInjector1() { digitalWrite(pinInjector1, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ1); }
inline void beginCoil1Charge() { digitalWrite(pinCoil1, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil1Charge() { digitalWrite(pinCoil1, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector2() { digitalWrite(pinInjector2, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ2); } //Sets the relevant pin HIGH and changes the current status bit for injector 2 (2nd bit of currentStatus.squirt)
inline void closeInjector2() { digitalWrite(pinInjector2, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ2); }
inline void beginCoil2Charge() { digitalWrite(pinCoil2, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil2Charge() { digitalWrite(pinCoil2, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector3() { digitalWrite(pinInjector3, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ3); } //Sets the relevant pin HIGH and changes the current status bit for injector 3 (3rd bit of currentStatus.squirt)
inline void closeInjector3() { digitalWrite(pinInjector3, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ3); }
inline void beginCoil3Charge() { digitalWrite(pinCoil3, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil3Charge() { digitalWrite(pinCoil3, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector4() { digitalWrite(pinInjector4, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ4); } //Sets the relevant pin HIGH and changes the current status bit for injector 4 (4th bit of currentStatus.squirt)
inline void closeInjector4() { digitalWrite(pinInjector4, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ4); }
inline void beginCoil4Charge() { digitalWrite(pinCoil4, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil4Charge() { digitalWrite(pinCoil4, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector5() { digitalWrite(pinInjector5, HIGH); }
inline void closeInjector5() { digitalWrite(pinInjector5, LOW); }
inline void beginCoil5Charge() { digitalWrite(pinCoil5, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil5Charge() { digitalWrite(pinCoil5, coilLOW); TACH_PULSE_HIGH(); }
//#endif
//Combination functions for semi-sequential injection
void openInjector1and4() { digitalWrite(pinInjector1, HIGH); digitalWrite(pinInjector4, HIGH); BIT_SET(currentStatus.squirt, 0); }
void closeInjector1and4() { digitalWrite(pinInjector1, LOW); digitalWrite(pinInjector4, LOW);BIT_CLEAR(currentStatus.squirt, 0); }
void openInjector2and3() { digitalWrite(pinInjector2, HIGH); digitalWrite(pinInjector3, HIGH); BIT_SET(currentStatus.squirt, 1); }
void closeInjector2and3() { digitalWrite(pinInjector2, LOW); digitalWrite(pinInjector3, LOW); BIT_CLEAR(currentStatus.squirt, 1); }
//Below functions are used for 5 cylinder support
void openInjector3and5() { digitalWrite(pinInjector3, HIGH); digitalWrite(pinInjector5, HIGH); BIT_SET(currentStatus.squirt, 0); }
void closeInjector3and5() { digitalWrite(pinInjector3, LOW); digitalWrite(pinInjector5, LOW);BIT_CLEAR(currentStatus.squirt, 0); }
//As above but for ignition (Wasted COP mode)
void beginCoil1and3Charge() { digitalWrite(pinCoil1, coilHIGH); digitalWrite(pinCoil3, coilHIGH); digitalWrite(pinTachOut, LOW); }
void endCoil1and3Charge() { digitalWrite(pinCoil1, coilLOW); digitalWrite(pinCoil3, coilLOW); }
void beginCoil2and4Charge() { digitalWrite(pinCoil2, coilHIGH); digitalWrite(pinCoil4, coilHIGH); digitalWrite(pinTachOut, LOW); }
void endCoil2and4Charge() { digitalWrite(pinCoil2, coilLOW); digitalWrite(pinCoil4, coilLOW); }
void nullCallback() { return; }

View File

@ -43,6 +43,7 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define IGN2_COUNTER TCNT5
#define IGN3_COUNTER TCNT5
#define IGN4_COUNTER TCNT4
#define IGN5_COUNTER TCNT1
#define FUEL1_COMPARE OCR3A
#define FUEL2_COMPARE OCR3B
@ -53,6 +54,7 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define IGN2_COMPARE OCR5B
#define IGN3_COMPARE OCR5C
#define IGN4_COMPARE OCR4A
#define IGN5_COMPARE OCR1C
#define FUEL1_TIMER_ENABLE() TIMSK3 |= (1 << OCIE3A) //Turn on the A compare unit (ie turn on the interrupt)
#define FUEL2_TIMER_ENABLE() TIMSK3 |= (1 << OCIE3B) //Turn on the B compare unit (ie turn on the interrupt)
@ -68,11 +70,13 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define IGN2_TIMER_ENABLE() TIMSK5 |= (1 << OCIE5B) //Turn on the B compare unit (ie turn on the interrupt)
#define IGN3_TIMER_ENABLE() TIMSK5 |= (1 << OCIE5C) //Turn on the C compare unit (ie turn on the interrupt)
#define IGN4_TIMER_ENABLE() TIMSK4 |= (1 << OCIE4A) //Turn on the A compare unit (ie turn on the interrupt)
#define IGN5_TIMER_ENABLE() TIMSK1 |= (1 << OCIE1C) //Turn on the A compare unit (ie turn on the interrupt)
#define IGN1_TIMER_DISABLE() TIMSK5 &= ~(1 << OCIE5A) //Turn off this output compare unit
#define IGN2_TIMER_DISABLE() TIMSK5 &= ~(1 << OCIE5B) //Turn off this output compare unit
#define IGN3_TIMER_DISABLE() TIMSK5 &= ~(1 << OCIE5C) //Turn off this output compare unit
#define IGN4_TIMER_DISABLE() TIMSK4 &= ~(1 << OCIE4A) //Turn off this output compare unit
#define IGN5_TIMER_DISABLE() TIMSK1 &= ~(1 << OCIE1C) //Turn off this output compare unit
#define MAX_TIMER_PERIOD 262140 //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 4, as each timer tick is 4uS)
#define uS_TO_TIMER_COMPARE(uS1) (uS1 >> 2) //Converts a given number of uS into the required number of timer ticks until that time has passed
@ -88,6 +92,7 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define IGN2_COUNTER FTM0_CNT
#define IGN3_COUNTER FTM0_CNT
#define IGN4_COUNTER FTM0_CNT
#define IGN5_COUNTER FTM1_CNT
#define FUEL1_COMPARE FTM0_C0V
#define FUEL2_COMPARE FTM0_C1V
@ -98,6 +103,7 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define IGN2_COMPARE FTM0_C5V
#define IGN3_COMPARE FTM0_C6V
#define IGN4_COMPARE FTM0_C7V
#define IGN5_COMPARE FTM1_C0V
#define FUEL1_TIMER_ENABLE() FTM0_C0SC |= FTM_CSC_CHIE //Write 1 to the CHIE (Channel Interrupt Enable) bit of channel 0 Status/Control
#define FUEL2_TIMER_ENABLE() FTM0_C1SC |= FTM_CSC_CHIE
@ -113,11 +119,13 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define IGN2_TIMER_ENABLE() FTM0_C5SC |= FTM_CSC_CHIE
#define IGN3_TIMER_ENABLE() FTM0_C6SC |= FTM_CSC_CHIE
#define IGN4_TIMER_ENABLE() FTM0_C7SC |= FTM_CSC_CHIE
#define IGN5_TIMER_ENABLE() FTM1_C0SC |= FTM_CSC_CHIE
#define IGN1_TIMER_DISABLE() FTM0_C4SC &= ~FTM_CSC_CHIE
#define IGN2_TIMER_DISABLE() FTM0_C5SC &= ~FTM_CSC_CHIE
#define IGN3_TIMER_DISABLE() FTM0_C6SC &= ~FTM_CSC_CHIE
#define IGN4_TIMER_DISABLE() FTM0_C7SC &= ~FTM_CSC_CHIE
#define IGN5_TIMER_DISABLE() FTM1_C0SC &= ~FTM_CSC_CHIE
#define MAX_TIMER_PERIOD 139808 // 2.13333333uS * 65535
#define uS_TO_TIMER_COMPARE(uS) ((uS * 15) >> 5) //Converts a given number of uS into the required number of timer ticks until that time has passed.

View File

@ -34,8 +34,8 @@ void initialiseSchedulers()
TCNT4 = 0; //Reset Timer Count
TIFR4 = 0x00; //Timer4 INT Flag Reg: Clear Timer Overflow Flag
TCCR4A = 0x00; //Timer4 Control Reg A: Wave Gen Mode normal
TCCR4B = (1 << CS12); //Timer4 Control Reg B: aka Divisor = 256 = 122.5HzTimer Prescaler set to 256. Refer to http://www.instructables.com/files/orig/F3T/TIKL/H3WSA4V7/F3TTIKLH3WSA4V7.jpg
TCCR4B = (1 << CS12); //Timer4 Control Reg B: aka Divisor = 256 = 122.5HzTimer Prescaler set to 256. Refer to http://www.instructables.com/files/orig/F3T/TIKL/H3WSA4V7/F3TTIKLH3WSA4V7.jpg
#elif defined (CORE_TEENSY) && defined (__MK20DX256__)
//FlexTimer 0 is used for 4 ignition and 4 injection schedules. There are 8 channels on this module, so no other timers are needed
@ -47,22 +47,33 @@ void initialiseSchedulers()
FTM0_CNTIN = 0x0000; //Shouldn't be needed, but just in case
FTM0_CNT = 0x0000; // Reset the count to zero
FTM0_MOD = 0xFFFF; // max modulus = 65535
//FlexTimer 1 is used for schedules on channel 5+. Currently only channel 5 is used, but will likely be expanded later
FTM1_MODE |= FTM_MODE_WPDIS; // Write Protection Disable
FTM1_MODE |= FTM_MODE_FTMEN; //Flex Timer module enable
FTM1_MODE |= FTM_MODE_INIT;
FTM1_SC = 0x00; // Set this to zero before changing the modulus
FTM1_CNTIN = 0x0000; //Shouldn't be needed, but just in case
FTM1_CNT = 0x0000; // Reset the count to zero
FTM1_MOD = 0xFFFF; // max modulus = 65535
/*
* Enable the clock for FTM0
* Enable the clock for FTM0/1
* 00 No clock selected. Disables the FTM counter.
* 01 System clock
* 10 Fixed frequency clock
* 11 External clock
*/
*/
FTM0_SC |= FTM_SC_CLKS(0b1);
FTM1_SC |= FTM_SC_CLKS(0b1);
/*
* Set Prescaler
/*
* Set Prescaler
* This is the slowest that the timer can be clocked (Without used the slow timer, which is too slow). It results in ticks of 2.13333uS on the teensy 3.5:
* 60000000 Hz = F_BUS
* 128 * 1000000uS / F_BUS = 2.133uS
*
*
* 000 = Divide by 1
* 001 Divide by 2
* 010 Divide by 4
@ -73,49 +84,56 @@ void initialiseSchedulers()
* 111 Divide by 128
*/
FTM0_SC |= FTM_SC_PS(0b111);
FTM1_SC |= FTM_SC_PS(0b111);
//Setup the channels (See Pg 1014 of K64 DS).
//Setup the channels (See Pg 1014 of K64 DS).
//FTM0_C0SC &= ~FTM_CSC_ELSB; //Probably not needed as power on state should be 0
//FTM0_C0SC &= ~FTM_CSC_ELSA; //Probably not needed as power on state should be 0
//FTM0_C0SC &= ~FTM_CSC_DMA; //Probably not needed as power on state should be 0
FTM0_C0SC &= ~FTM_CSC_MSB; //According to Pg 965 of the K64 datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C0SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C0SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C1SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C1SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C1SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C2SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C2SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C2SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C3SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C3SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C3SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C4SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C4SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C4SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C5SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C5SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C5SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C6SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C6SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C6SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
FTM0_C7SC &= ~FTM_CSC_MSB; //According to Pg 965 of the datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM0_C7SC |= FTM_CSC_MSA; //Enable Compare mode
FTM0_C7SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
//Do the same, but on flex timer 1 (Used for channels 5+)
FTM1_C0SC &= ~FTM_CSC_MSB; //According to Pg 965 of the K64 datasheet, this should not be needed as MSB is reset to 0 upon reset, but the channel interrupt fails to fire without it
FTM1_C0SC |= FTM_CSC_MSA; //Enable Compare mode
FTM1_C0SC |= FTM_CSC_CHIE; //Enable channel compare interrupt
// enable IRQ Interrupt
NVIC_ENABLE_IRQ(IRQ_FTM0);
NVIC_ENABLE_IRQ(IRQ_FTM1);
#endif
fuelSchedule1.Status = OFF;
fuelSchedule1.Status = OFF;
fuelSchedule2.Status = OFF;
fuelSchedule3.Status = OFF;
fuelSchedule4.Status = OFF;
@ -131,14 +149,16 @@ void initialiseSchedulers()
ignitionSchedule2.Status = OFF;
ignitionSchedule3.Status = OFF;
ignitionSchedule4.Status = OFF;
ignitionSchedule5.Status = OFF;
ignitionSchedule1.schedulesSet = 0;
ignitionSchedule2.schedulesSet = 0;
ignitionSchedule3.schedulesSet = 0;
ignitionSchedule4.schedulesSet = 0;
ignitionSchedule5.schedulesSet = 0;
}
/*
These 8 function turn a schedule on, provides the time to start and the duration and gives it callback functions.
All 8 functions operate the same, just on different schedules
@ -151,7 +171,7 @@ 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
fuelSchedule1.StartCallback = startCallback; //Name the start callback function
fuelSchedule1.EndCallback = endCallback; //Name the end callback function
fuelSchedule1.duration = duration;
@ -159,7 +179,7 @@ void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned l
/*
* The following must be enclosed in the noInterupts block to avoid contention caused if the relevant interrupts fires before the state is fully set
* 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))
* 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
*/
noInterrupts();
@ -167,15 +187,16 @@ void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned l
fuelSchedule1.endCompare = fuelSchedule1.startCompare + (duration >> 4);
fuelSchedule1.Status = PENDING; //Turn this schedule on
fuelSchedule1.schedulesSet++; //Increment the number of times this schedule has been set
if(channel5InjEnabled) { FUEL1_COMPARE = setQueue(timer3Aqueue, &fuelSchedule1, &fuelSchedule5, FUEL1_COUNTER); } //Schedule 1 shares a timer with schedule 5
else { timer3Aqueue[0] = &fuelSchedule1; timer3Aqueue[1] = &fuelSchedule1; timer3Aqueue[2] = &fuelSchedule1; timer3Aqueue[3] = &fuelSchedule1; FUEL1_COMPARE = fuelSchedule1.startCompare; }
/*if(channel5InjEnabled) { FUEL1_COMPARE = setQueue(timer3Aqueue, &fuelSchedule1, &fuelSchedule5, FUEL1_COUNTER); } //Schedule 1 shares a timer with schedule 5
else { timer3Aqueue[0] = &fuelSchedule1; timer3Aqueue[1] = &fuelSchedule1; timer3Aqueue[2] = &fuelSchedule1; timer3Aqueue[3] = &fuelSchedule1; FUEL1_COMPARE = fuelSchedule1.startCompare; }*/
timer3Aqueue[0] = &fuelSchedule1; timer3Aqueue[1] = &fuelSchedule1; timer3Aqueue[2] = &fuelSchedule1; timer3Aqueue[3] = &fuelSchedule1; FUEL1_COMPARE = fuelSchedule1.startCompare;
interrupts();
FUEL1_TIMER_ENABLE();
}
void setFuelSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
{
if(fuelSchedule2.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
fuelSchedule2.StartCallback = startCallback; //Name the start callback function
fuelSchedule2.EndCallback = endCallback; //Name the end callback function
fuelSchedule2.duration = duration;
@ -183,7 +204,7 @@ void setFuelSchedule2(void (*startCallback)(), unsigned long timeout, unsigned l
/*
* The following must be enclosed in the noIntterupts block to avoid contention caused if the relevant interrupts fires before the state is fully set
* 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))
* 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
*/
noInterrupts();
@ -202,11 +223,11 @@ void setFuelSchedule3(void (*startCallback)(), unsigned long timeout, unsigned l
fuelSchedule3.StartCallback = startCallback; //Name the start callback function
fuelSchedule3.EndCallback = endCallback; //Name the end callback function
fuelSchedule3.duration = duration;
/*
* The following must be enclosed in the noIntterupts block to avoid contention caused if the relevant interrupts fires before the state is fully set
* 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))
* 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
*/
noInterrupts();
@ -221,15 +242,15 @@ void setFuelSchedule3(void (*startCallback)(), unsigned long timeout, unsigned l
void setFuelSchedule4(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()) //Uses timer 4 compare B
{
if(fuelSchedule4.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
fuelSchedule4.StartCallback = startCallback; //Name the start callback function
fuelSchedule4.EndCallback = endCallback; //Name the end callback function
fuelSchedule4.duration = duration;
/*
* The following must be enclosed in the noIntterupts block to avoid contention caused if the relevant interrupts fires before the state is fully set
* 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))
* 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
*/
noInterrupts();
@ -244,9 +265,9 @@ void setFuelSchedule4(void (*startCallback)(), unsigned long timeout, unsigned l
void setFuelSchedule5(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
{
if(fuelSchedule5.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))
//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
fuelSchedule5.StartCallback = startCallback; //Name the start callback function
fuelSchedule5.EndCallback = endCallback; //Name the end callback function
@ -274,8 +295,8 @@ void setIgnitionSchedule1(void (*startCallback)(), unsigned long timeout, unsign
ignitionSchedule1.StartCallback = startCallback; //Name the start callback function
ignitionSchedule1.EndCallback = endCallback; //Name the start callback function
ignitionSchedule1.duration = duration;
//As the timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
//As the timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
if (timeout > MAX_TIMER_PERIOD) { timeout = MAX_TIMER_PERIOD - 1; } // If the timeout is >4x (Each tick represents 4uS) the maximum allowed value of unsigned int (65535), the timer compare value will overflow when appliedcausing erratic behaviour such as erroneous sparking.
noInterrupts();
@ -290,14 +311,14 @@ void setIgnitionSchedule1(void (*startCallback)(), unsigned long timeout, unsign
void setIgnitionSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
{
if(ignitionSchedule2.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
ignitionSchedule2.StartCallback = startCallback; //Name the start callback function
ignitionSchedule2.EndCallback = endCallback; //Name the start callback function
ignitionSchedule2.duration = duration;
//As the timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
//As the timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
if (timeout > MAX_TIMER_PERIOD) { timeout = MAX_TIMER_PERIOD - 1; } // If the timeout is >4x (Each tick represents 4uS) the maximum allowed value of unsigned int (65535), the timer compare value will overflow when appliedcausing erratic behaviour such as erroneous sparking.
noInterrupts();
ignitionSchedule2.startCompare = IGN2_COUNTER + uS_TO_TIMER_COMPARE(timeout); //As there is a tick every 4uS, there are timeout/4 ticks until the interrupt should be triggered ( >>2 divides by 4)
ignitionSchedule2.endCompare = ignitionSchedule2.startCompare + uS_TO_TIMER_COMPARE(duration);
@ -314,10 +335,10 @@ void setIgnitionSchedule3(void (*startCallback)(), unsigned long timeout, unsign
ignitionSchedule3.StartCallback = startCallback; //Name the start callback function
ignitionSchedule3.EndCallback = endCallback; //Name the start callback function
ignitionSchedule3.duration = duration;
//The timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
//The timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
if (timeout > MAX_TIMER_PERIOD) { timeout = MAX_TIMER_PERIOD - 1; } // If the timeout is >4x (Each tick represents 4uS) the maximum allowed value of unsigned int (65535), the timer compare value will overflow when appliedcausing erratic behaviour such as erroneous sparking.
noInterrupts();
ignitionSchedule3.startCompare = IGN3_COUNTER + uS_TO_TIMER_COMPARE(timeout); //As there is a tick every 4uS, there are timeout/4 ticks until the interrupt should be triggered ( >>2 divides by 4)
ignitionSchedule3.endCompare = ignitionSchedule3.startCompare + uS_TO_TIMER_COMPARE(duration);
@ -325,7 +346,7 @@ void setIgnitionSchedule3(void (*startCallback)(), unsigned long timeout, unsign
ignitionSchedule3.Status = PENDING; //Turn this schedule on
ignitionSchedule3.schedulesSet++;
interrupts();
IGN3_TIMER_ENABLE();
IGN3_TIMER_ENABLE();
}
void setIgnitionSchedule4(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
{
@ -334,7 +355,7 @@ void setIgnitionSchedule4(void (*startCallback)(), unsigned long timeout, unsign
ignitionSchedule4.StartCallback = startCallback; //Name the start callback function
ignitionSchedule4.EndCallback = endCallback; //Name the start callback function
ignitionSchedule4.duration = duration;
//We need to calculate the value to reset the timer to (preload) in order to achieve the desired overflow time
//The timer is ticking every 16uS (Time per Tick = (Prescale)*(1/Frequency))
//Note this is different to the other ignition timers
@ -347,27 +368,31 @@ void setIgnitionSchedule4(void (*startCallback)(), unsigned long timeout, unsign
ignitionSchedule4.Status = PENDING; //Turn this schedule on
ignitionSchedule4.schedulesSet++;
interrupts();
IGN4_TIMER_ENABLE();
IGN4_TIMER_ENABLE();
}
void setIgnitionSchedule5(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
{
return;
if(ignitionSchedule1.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
if(ignitionSchedule5.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
ignitionSchedule5.StartCallback = startCallback; //Name the start callback function
ignitionSchedule5.EndCallback = endCallback; //Name the start callback function
ignitionSchedule5.duration = duration;
//As the timer is ticking every 4uS (Time per Tick = (Prescale)*(1/Frequency))
if (timeout > 262140) { timeout = 262100; } // If the timeout is >4x (Each tick represents 4uS) the maximum allowed value of unsigned int (65535), the timer compare value will overflow when applied causing erratic behaviour such as erroneous sparking. This must be set slightly lower than the max of 262140 to avoid strangeness
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
OCR5A = TCNT5 + (timeout >> 2); //As there is a tick every 4uS, there are timeout/4 ticks until the interrupt should be triggered ( >>2 divides by 4)
//We need to calculate the value to reset the timer to (preload) in order to achieve the desired overflow time
//The timer is ticking every 16uS (Time per Tick = (Prescale)*(1/Frequency))
//Note this is different to the other ignition timers
if (timeout > MAX_TIMER_PERIOD) { timeout = MAX_TIMER_PERIOD - 1; } // If the timeout is >4x (Each tick represents 4uS) the maximum allowed value of unsigned int (65535), the timer compare value will overflow when appliedcausing erratic behaviour such as erroneous sparking.
noInterrupts();
ignitionSchedule5.startCompare = IGN5_COUNTER + (timeout >> 4); //As there is a tick every 4uS, there are timeout/4 ticks until the interrupt should be triggered ( >>2 divides by 4)
ignitionSchedule5.endCompare = ignitionSchedule5.startCompare + (duration >> 4);
IGN5_COMPARE = ignitionSchedule5.startCompare;
ignitionSchedule5.Status = PENDING; //Turn this schedule on
TIMSK5 |= (1 << OCIE5A); //Turn on the A compare unit (ie turn on the interrupt)
#endif
ignitionSchedule5.schedulesSet++;
interrupts();
IGN5_TIMER_ENABLE();
}
/*******************************************************************************************************************************************************************************************************/
//This function (All 8 ISR functions that are below) gets called when either the start time or the duration time are reached
//This calls the relevant callback function (startCallback or endCallback) depending on the status of the schedule.
@ -436,7 +461,7 @@ static inline void fuelSchedule3Interrupt() //Most ARM chips can simply call a f
FUEL3_TIMER_DISABLE();
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
ISR(TIMER4_COMPB_vect, ISR_NOBLOCK) //fuelSchedule4
#elif defined (CORE_TEENSY)
@ -454,10 +479,10 @@ static inline void fuelSchedule4Interrupt() //Most ARM chips can simply call a f
fuelSchedule4.EndCallback();
fuelSchedule4.Status = OFF; //Turn off the schedule
fuelSchedule4.schedulesSet = 0;
FUEL4_TIMER_DISABLE();
FUEL4_TIMER_DISABLE();
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
ISR(TIMER5_COMPA_vect) //ignitionSchedule1
#elif defined (CORE_TEENSY)
@ -469,7 +494,7 @@ static inline void ignitionSchedule1Interrupt() //Most ARM chips can simply call
ignitionSchedule1.StartCallback();
ignitionSchedule1.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
ignitionSchedule1.startTime = micros();
ign1LastRev = startRevolutions;
ign1LastRev = currentStatus.startRevolutions;
IGN1_COMPARE = ignitionSchedule1.endCompare; //OCR5A = TCNT5 + (ignitionSchedule1.duration >> 2); //Divide by 4
}
else if (ignitionSchedule1.Status == RUNNING)
@ -481,7 +506,7 @@ static inline void ignitionSchedule1Interrupt() //Most ARM chips can simply call
IGN1_TIMER_DISABLE();
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
ISR(TIMER5_COMPB_vect) //ignitionSchedule2
#elif defined (CORE_TEENSY)
@ -493,7 +518,7 @@ static inline void ignitionSchedule2Interrupt() //Most ARM chips can simply call
ignitionSchedule2.StartCallback();
ignitionSchedule2.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
ignitionSchedule2.startTime = micros();
ign2LastRev = startRevolutions;
ign2LastRev = currentStatus.startRevolutions;
IGN2_COMPARE = ignitionSchedule2.endCompare; //OCR5B = TCNT5 + (ignitionSchedule2.duration >> 2);
}
else if (ignitionSchedule2.Status == RUNNING)
@ -505,7 +530,7 @@ static inline void ignitionSchedule2Interrupt() //Most ARM chips can simply call
IGN2_TIMER_DISABLE();
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
ISR(TIMER5_COMPC_vect) //ignitionSchedule3
#elif defined (CORE_TEENSY)
@ -517,7 +542,7 @@ static inline void ignitionSchedule3Interrupt() //Most ARM chips can simply call
ignitionSchedule3.StartCallback();
ignitionSchedule3.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
ignitionSchedule3.startTime = micros();
ign3LastRev = startRevolutions;
ign3LastRev = currentStatus.startRevolutions;
IGN3_COMPARE = ignitionSchedule3.endCompare; //OCR5C = TCNT5 + (ignitionSchedule3.duration >> 2);
}
else if (ignitionSchedule3.Status == RUNNING)
@ -529,7 +554,7 @@ static inline void ignitionSchedule3Interrupt() //Most ARM chips can simply call
IGN3_TIMER_DISABLE();
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
ISR(TIMER4_COMPA_vect) //ignitionSchedule4
#elif defined (CORE_TEENSY)
@ -541,7 +566,7 @@ static inline void ignitionSchedule4Interrupt() //Most ARM chips can simply call
ignitionSchedule4.StartCallback();
ignitionSchedule4.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
ignitionSchedule4.startTime = micros();
ign4LastRev = startRevolutions;
ign4LastRev = currentStatus.startRevolutions;
IGN4_COMPARE = ignitionSchedule4.endCompare; //OCR4A = TCNT4 + (ignitionSchedule4.duration >> 4); //Divide by 16
}
else if (ignitionSchedule4.Status == RUNNING)
@ -554,14 +579,40 @@ static inline void ignitionSchedule4Interrupt() //Most ARM chips can simply call
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
ISR(TIMER1_COMPC_vect) //ignitionSchedule5
#elif defined (CORE_TEENSY)
static inline void ignitionSchedule5Interrupt() //Most ARM chips can simply call a function
#endif
{
if (ignitionSchedule5.Status == PENDING) //Check to see if this schedule is turn on
{
ignitionSchedule5.StartCallback();
ignitionSchedule5.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
ignitionSchedule5.startTime = micros();
ign5LastRev = currentStatus.startRevolutions;
IGN5_COMPARE = ignitionSchedule5.endCompare;
}
else if (ignitionSchedule5.Status == RUNNING)
{
ignitionSchedule5.Status = OFF; //Turn off the schedule
ignitionSchedule5.EndCallback();
ignitionSchedule5.schedulesSet = 0;
ignitionCount += 1; //Increment the igintion counter
IGN5_TIMER_DISABLE();
}
}
#if defined(CORE_TEENSY)
void ftm0_isr(void)
void ftm0_isr(void)
{
if(FTM0_C0SC & FTM_CSC_CHF) { FTM0_C0SC &= ~FTM_CSC_CHF; fuelSchedule1Interrupt(); }
else if(FTM0_C1SC & FTM_CSC_CHF) { FTM0_C1SC &= ~FTM_CSC_CHF; fuelSchedule2Interrupt(); }
else if(FTM0_C2SC & FTM_CSC_CHF) { FTM0_C2SC &= ~FTM_CSC_CHF; fuelSchedule3Interrupt(); }
else if(FTM0_C3SC & FTM_CSC_CHF) { FTM0_C3SC &= ~FTM_CSC_CHF; fuelSchedule4Interrupt(); }
if(FTM0_C0SC & FTM_CSC_CHF) { FTM0_C0SC &= ~FTM_CSC_CHF; fuelSchedule1Interrupt(); }
else if(FTM0_C1SC & FTM_CSC_CHF) { FTM0_C1SC &= ~FTM_CSC_CHF; fuelSchedule2Interrupt(); }
else if(FTM0_C2SC & FTM_CSC_CHF) { FTM0_C2SC &= ~FTM_CSC_CHF; fuelSchedule3Interrupt(); }
else if(FTM0_C3SC & FTM_CSC_CHF) { FTM0_C3SC &= ~FTM_CSC_CHF; fuelSchedule4Interrupt(); }
else if(FTM0_C4SC & FTM_CSC_CHF) { FTM0_C4SC &= ~FTM_CSC_CHF; ignitionSchedule1Interrupt(); }
else if(FTM0_C5SC & FTM_CSC_CHF) { FTM0_C5SC &= ~FTM_CSC_CHF; ignitionSchedule2Interrupt(); }
else if(FTM0_C6SC & FTM_CSC_CHF) { FTM0_C6SC &= ~FTM_CSC_CHF; ignitionSchedule3Interrupt(); }

View File

@ -19,6 +19,10 @@
volatile byte flexCounter = 0;
volatile int AnChannel[15];
unsigned long MAPrunningValue; //Used for tracking either the total of all MAP readings in this cycle (Event average) or the lowest value detected in this cycle (event minimum)
unsigned int MAPcount; //Number of samples taken in the current MAP cycle
byte MAPcurRev = 0; //Tracks which revolution we're sampling on
/*
* Simple low pass IIR filter macro for the analog inputs
* This is effectively implementing the smooth filter from http://playground.arduino.cc/Main/Smooth

View File

@ -3,6 +3,7 @@ Speeduino - Simple engine management for the Arduino Mega 2560 platform
Copyright (C) Josh Stewart
A full copy of the license may be found in the projects root directory
*/
#include "sensors.h"
void initialiseADC()
{
@ -75,7 +76,7 @@ void readMAP()
if (currentStatus.RPM < 1) { instanteneousMAPReading(); return; } //If the engine isn't running, fall back to instantaneous reads
if( (MAPcurRev == startRevolutions) || (MAPcurRev == startRevolutions+1) ) //2 revolutions are looked at for 4 stroke. 2 stroke not currently catered for.
if( (MAPcurRev == currentStatus.startRevolutions) || (MAPcurRev == currentStatus.startRevolutions+1) ) //2 revolutions are looked at for 4 stroke. 2 stroke not currently catered for.
{
#if defined(ANALOG_ISR)
tempReading = AnChannel[pinMAP-A0];
@ -97,7 +98,7 @@ void readMAP()
//Reaching here means that the last cylce has completed and the MAP value should be calculated
currentStatus.mapADC = ldiv(MAPrunningValue, MAPcount).quot;
currentStatus.MAP = fastMap1023toX(currentStatus.mapADC, configPage1.mapMax); //Get the current MAP value
MAPcurRev = startRevolutions; //Reset the current rev count
MAPcurRev = currentStatus.startRevolutions; //Reset the current rev count
MAPrunningValue = 0;
MAPcount = 0;
}
@ -107,7 +108,7 @@ void readMAP()
//Minimum reading in a cycle
if (currentStatus.RPM < 1) { instanteneousMAPReading(); return; } //If the engine isn't running, fall back to instantaneous reads
if( (MAPcurRev == startRevolutions) || (MAPcurRev == startRevolutions+1) ) //2 revolutions are looked at for 4 stroke. 2 stroke not currently catered for.
if( (MAPcurRev == currentStatus.startRevolutions) || (MAPcurRev == currentStatus.startRevolutions+1) ) //2 revolutions are looked at for 4 stroke. 2 stroke not currently catered for.
{
#if defined(ANALOG_ISR)
tempReading = AnChannel[pinMAP-A0];
@ -127,7 +128,7 @@ void readMAP()
//Reaching here means that the last cylce has completed and the MAP value should be calculated
currentStatus.mapADC = MAPrunningValue;
currentStatus.MAP = fastMap1023toX(currentStatus.mapADC, configPage1.mapMax); //Get the current MAP value
MAPcurRev = startRevolutions; //Reset the current rev count
MAPcurRev = currentStatus.startRevolutions; //Reset the current rev count
MAPrunningValue = 1023; //Reset the latest value so the next reading will always be lower
}
break;

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
#ifndef STORAGE_H
#define STORAGE_H
#include <EEPROM.h>
void writeConfig();
void loadConfig();

View File

@ -4,11 +4,10 @@ Copyright (C) Josh Stewart
A full copy of the license may be found in the projects root directory
*/
#include <EEPROM.h>
#include "storage.h"
#include "globals.h"
//#include "table.h"
#include "table.h"
#include <EEPROM.h>
/*
Takes the current configuration (config pages and maps)
@ -44,13 +43,13 @@ void writeConfig()
for(int x=EEPROM_CONFIG1_XBINS; x<EEPROM_CONFIG1_YBINS; x++)
{
offset = x - EEPROM_CONFIG1_XBINS;
if(EEPROM.read(x) != byte(fuelTable.axisX[offset]/100)) { EEPROM.write(x, byte(fuelTable.axisX[offset]/100)); } //RPM bins are divided by 100 and converted to a byte
if(EEPROM.read(x) != byte(fuelTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) { EEPROM.write(x, byte(fuelTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG1_YBINS; x<EEPROM_CONFIG2_START; x++)
{
offset = x - EEPROM_CONFIG1_YBINS;
if(EEPROM.read(x) != fuelTable.axisY[offset]) { EEPROM.write(x, fuelTable.axisY[offset]); }
EEPROM.update(x, fuelTable.axisY[offset] / TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
}
//That concludes the writing of the VE table
//*********************************************************************************************************************************************************************************
@ -84,13 +83,13 @@ void writeConfig()
for(int x=EEPROM_CONFIG3_XBINS; x<EEPROM_CONFIG3_YBINS; x++)
{
offset = x - EEPROM_CONFIG3_XBINS;
if(EEPROM.read(x) != byte(ignitionTable.axisX[offset]/100)) { EEPROM.write(x, byte(ignitionTable.axisX[offset]/100)); } //RPM bins are divided by 100 and converted to a byte
if(EEPROM.read(x) != byte(ignitionTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) { EEPROM.write(x, byte(ignitionTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG3_YBINS; x<EEPROM_CONFIG4_START; x++)
{
offset = x - EEPROM_CONFIG3_YBINS;
if(EEPROM.read(x) != ignitionTable.axisY[offset]) { EEPROM.write(x, ignitionTable.axisY[offset]); }
EEPROM.update(x, ignitionTable.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
}
//That concludes the writing of the IGN table
//*********************************************************************************************************************************************************************************
@ -124,13 +123,13 @@ void writeConfig()
for(int x=EEPROM_CONFIG5_XBINS; x<EEPROM_CONFIG5_YBINS; x++)
{
offset = x - EEPROM_CONFIG5_XBINS;
if(EEPROM.read(x) != byte(afrTable.axisX[offset]/100)) { EEPROM.write(x, byte(afrTable.axisX[offset]/100)); } //RPM bins are divided by 100 and converted to a byte
if(EEPROM.read(x) != byte(afrTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) { EEPROM.write(x, byte(afrTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG5_YBINS; x<EEPROM_CONFIG6_START; x++)
{
offset = x - EEPROM_CONFIG5_YBINS;
if(EEPROM.read(x) != afrTable.axisY[offset]) { EEPROM.write(x, afrTable.axisY[offset]); }
EEPROM.update(x, afrTable.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
}
//That concludes the writing of the AFR table
//*********************************************************************************************************************************************************************************
@ -181,9 +180,9 @@ void writeConfig()
for(int x=EEPROM_CONFIG8_XBINS1; x<EEPROM_CONFIG8_YBINS1; x++)
{
offset = x - EEPROM_CONFIG8_XBINS1;
if(EEPROM.read(x) != byte(boostTable.axisX[offset]/100)) { EEPROM.write(x, byte(boostTable.axisX[offset]/100)); } //RPM bins are divided by 100 and converted to a byte
if(EEPROM.read(x) != byte(boostTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) { EEPROM.write(x, byte(boostTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
offset = y - EEPROM_CONFIG8_XBINS2;
if(EEPROM.read(y) != byte(vvtTable.axisX[offset]/100)) { EEPROM.write(y, byte(vvtTable.axisX[offset]/100)); } //RPM bins are divided by 100 and converted to a byte
if(EEPROM.read(y) != byte(vvtTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) { EEPROM.write(y, byte(vvtTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
y++;
}
//TPS/MAP bins
@ -191,9 +190,9 @@ void writeConfig()
for(int x=EEPROM_CONFIG8_YBINS1; x<EEPROM_CONFIG8_XSIZE2; x++)
{
offset = x - EEPROM_CONFIG8_YBINS1;
if(EEPROM.read(x) != boostTable.axisY[offset]) { EEPROM.write(x, boostTable.axisY[offset]); }
EEPROM.update(x, boostTable.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
offset = y - EEPROM_CONFIG8_YBINS2;
if(EEPROM.read(y) != vvtTable.axisY[offset]) { EEPROM.write(y, vvtTable.axisY[offset]); }
EEPROM.update(y, vvtTable.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
y++;
}
@ -235,13 +234,13 @@ void writeConfig()
for(int x=EEPROM_CONFIG9_XBINS1; x<EEPROM_CONFIG9_YBINS1; x++)
{
offset = x - EEPROM_CONFIG9_XBINS1;
EEPROM.update(x, byte(trim1Table.axisX[offset]/100)); //RPM bins are divided by 100 and converted to a byte
EEPROM.update(x, byte(trim1Table.axisX[offset]/TABLE_RPM_MULTIPLIER)); //RPM bins are divided by 100 and converted to a byte
offset = y - EEPROM_CONFIG9_XBINS2;
EEPROM.update(y, byte(trim2Table.axisX[offset]/100)); //RPM bins are divided by 100 and converted to a byte
EEPROM.update(y, byte(trim2Table.axisX[offset]/TABLE_RPM_MULTIPLIER)); //RPM bins are divided by 100 and converted to a byte
offset = z - EEPROM_CONFIG9_XBINS3;
EEPROM.update(z, byte(trim3Table.axisX[offset]/100)); //RPM bins are divided by 100 and converted to a byte
EEPROM.update(z, byte(trim3Table.axisX[offset]/TABLE_RPM_MULTIPLIER)); //RPM bins are divided by 100 and converted to a byte
offset = i - EEPROM_CONFIG9_XBINS4;
EEPROM.update(i, byte(trim4Table.axisX[offset]/100)); //RPM bins are divided by 100 and converted to a byte
EEPROM.update(i, byte(trim4Table.axisX[offset]/TABLE_RPM_MULTIPLIER)); //RPM bins are divided by 100 and converted to a byte
y++;
z++;
i++;
@ -253,13 +252,13 @@ void writeConfig()
for(int x=EEPROM_CONFIG9_YBINS1; x<EEPROM_CONFIG9_XSIZE2; x++)
{
offset = x - EEPROM_CONFIG9_YBINS1;
EEPROM.update(x, trim1Table.axisY[offset]);
EEPROM.update(x, trim1Table.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
offset = y - EEPROM_CONFIG9_YBINS2;
EEPROM.update(y, trim2Table.axisY[offset]);
EEPROM.update(y, trim2Table.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
offset = z - EEPROM_CONFIG9_YBINS3;
EEPROM.update(z, trim3Table.axisY[offset]);
EEPROM.update(z, trim3Table.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
offset = i - EEPROM_CONFIG9_YBINS4;
EEPROM.update(i, trim4Table.axisY[offset]);
EEPROM.update(i, trim4Table.axisY[offset]/TABLE_LOAD_MULTIPLIER); //Table load is divided by 2 (Allows for MAP up to 511)
y++;
z++;
i++;
@ -285,13 +284,13 @@ void loadConfig()
for(int x=EEPROM_CONFIG1_XBINS; x<EEPROM_CONFIG1_YBINS; x++)
{
offset = x - EEPROM_CONFIG1_XBINS;
fuelTable.axisX[offset] = (EEPROM.read(x) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
fuelTable.axisX[offset] = (EEPROM.read(x) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG1_YBINS; x<EEPROM_CONFIG2_START; x++)
{
offset = x - EEPROM_CONFIG1_YBINS;
fuelTable.axisY[offset] = EEPROM.read(x);
fuelTable.axisY[offset] = EEPROM.read(x) * TABLE_LOAD_MULTIPLIER;
}
pnt_configPage = (byte *)&configPage1; //Create a pointer to Page 1 in memory
@ -317,13 +316,13 @@ void loadConfig()
for(int x=EEPROM_CONFIG3_XBINS; x<EEPROM_CONFIG3_YBINS; x++)
{
offset = x - EEPROM_CONFIG3_XBINS;
ignitionTable.axisX[offset] = (EEPROM.read(x) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
ignitionTable.axisX[offset] = (EEPROM.read(x) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG3_YBINS; x<EEPROM_CONFIG4_START; x++)
{
offset = x - EEPROM_CONFIG3_YBINS;
ignitionTable.axisY[offset] = EEPROM.read(x);
ignitionTable.axisY[offset] = EEPROM.read(x) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
}
pnt_configPage = (byte *)&configPage2; //Create a pointer to Page 2 in memory
@ -348,13 +347,13 @@ void loadConfig()
for(int x=EEPROM_CONFIG5_XBINS; x<EEPROM_CONFIG5_YBINS; x++)
{
offset = x - EEPROM_CONFIG5_XBINS;
afrTable.axisX[offset] = (EEPROM.read(x) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
afrTable.axisX[offset] = (EEPROM.read(x) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG5_YBINS; x<EEPROM_CONFIG6_START; x++)
{
offset = x - EEPROM_CONFIG5_YBINS;
afrTable.axisY[offset] = EEPROM.read(x);
afrTable.axisY[offset] = EEPROM.read(x) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
}
pnt_configPage = (byte *)&configPage3; //Create a pointer to Page 2 in memory
@ -394,9 +393,9 @@ void loadConfig()
for(int x=EEPROM_CONFIG8_XBINS1; x<EEPROM_CONFIG8_YBINS1; x++)
{
offset = x - EEPROM_CONFIG8_XBINS1;
boostTable.axisX[offset] = (EEPROM.read(x) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
boostTable.axisX[offset] = (EEPROM.read(x) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
offset = y - EEPROM_CONFIG8_XBINS2;
vvtTable.axisX[offset] = (EEPROM.read(y) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
vvtTable.axisX[offset] = (EEPROM.read(y) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
y++;
}
@ -405,9 +404,9 @@ void loadConfig()
for(int x=EEPROM_CONFIG8_YBINS1; x<EEPROM_CONFIG8_XSIZE2; x++)
{
offset = x - EEPROM_CONFIG8_YBINS1;
boostTable.axisY[offset] = EEPROM.read(x);
boostTable.axisY[offset] = EEPROM.read(x) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
offset = y - EEPROM_CONFIG8_YBINS2;
vvtTable.axisY[offset] = EEPROM.read(y);
vvtTable.axisY[offset] = EEPROM.read(y) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
y++;
}
@ -438,13 +437,13 @@ void loadConfig()
for(int x=EEPROM_CONFIG9_XBINS1; x<EEPROM_CONFIG9_YBINS1; x++)
{
offset = x - EEPROM_CONFIG9_XBINS1;
trim1Table.axisX[offset] = (EEPROM.read(x) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
trim1Table.axisX[offset] = (EEPROM.read(x) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
offset = y - EEPROM_CONFIG9_XBINS2;
trim2Table.axisX[offset] = (EEPROM.read(y) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
trim2Table.axisX[offset] = (EEPROM.read(y) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
offset = z - EEPROM_CONFIG9_XBINS3;
trim3Table.axisX[offset] = (EEPROM.read(z) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
trim3Table.axisX[offset] = (EEPROM.read(z) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
offset = i - EEPROM_CONFIG9_XBINS4;
trim4Table.axisX[offset] = (EEPROM.read(i) * 100); //RPM bins are divided by 100 when stored. Multiply them back now
trim4Table.axisX[offset] = (EEPROM.read(i) * TABLE_RPM_MULTIPLIER); //RPM bins are divided by 100 when stored. Multiply them back now
y++;
z++;
i++;
@ -457,13 +456,13 @@ void loadConfig()
for(int x=EEPROM_CONFIG9_YBINS1; x<EEPROM_CONFIG9_XSIZE2; x++)
{
offset = x - EEPROM_CONFIG9_YBINS1;
trim1Table.axisY[offset] = EEPROM.read(x);
trim1Table.axisY[offset] = EEPROM.read(x) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
offset = y - EEPROM_CONFIG9_YBINS2;
trim2Table.axisY[offset] = EEPROM.read(y);
trim2Table.axisY[offset] = EEPROM.read(y) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
offset = z - EEPROM_CONFIG9_YBINS3;
trim3Table.axisY[offset] = EEPROM.read(z);
trim3Table.axisY[offset] = EEPROM.read(z) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
offset = i - EEPROM_CONFIG9_YBINS4;
trim4Table.axisY[offset] = EEPROM.read(i);
trim4Table.axisY[offset] = EEPROM.read(i) * TABLE_LOAD_MULTIPLIER; //Table load is divided by 2 (Allows for MAP up to 511)
y++;
z++;
i++;

View File

@ -6,7 +6,7 @@ This file is used for everything related to maps/tables including their definiti
#include <Arduino.h>
#define TABLE_RPM_MULTIPLIER 100
#define TABLE_LOAD_MULTIPLIER 1
#define TABLE_LOAD_MULTIPLIER 2
/*
The 2D table can contain either 8-bit (byte) or 16-bit (int) values

View File

@ -19,13 +19,16 @@ Hence we will preload the timer with 131 cycles to leave 125 until overflow (1ms
#ifndef TIMERS_H
#define TIMERS_H
volatile int loop100ms;
volatile int loop250ms;
volatile int loopSec;
volatile unsigned int dwellLimit_uS;
volatile uint16_t lastRPM_100ms; //Need to record this for rpmDOT calculation
#if defined (CORE_TEENSY)
IntervalTimer lowResTimer;
void oneMSInterval();
#endif
void initialiseTimers();

View File

@ -14,6 +14,10 @@ Timers are typically low resolution (Compared to Schedulers), with maximum frequ
#include "globals.h"
#include "sensors.h"
#if defined(CORE_AVR)
#include <avr/wdt.h>
#endif
void initialiseTimers()
{
#if defined(CORE_AVR) //AVR chips use the ISR for this
@ -26,12 +30,17 @@ void initialiseTimers()
/* Now configure the prescaler to CPU clock divided by 128 = 125Khz */
TCCR2B |= (1<<CS22) | (1<<CS20); // Set bits
TCCR2B &= ~(1<<CS21); // Clear bit
//Enable the watchdog timer for 2 second resets (Good reference: https://tushev.org/articles/arduino/5/arduino-and-watchdog-timer)
//wdt_enable(WDTO_2S); //Boooooooooo WDT is currently broken on Mega 2560 bootloaders :(
#elif defined (CORE_TEENSY)
//Uses the PIT timer on Teensy.
lowResTimer.begin(oneMSInterval, 1000);
#endif
dwellLimit_uS = (1000 * configPage2.dwellLimit);
lastRPM_100ms = 0;
}
@ -45,28 +54,40 @@ void oneMSInterval() //Most ARM chips can simply call a function
{
//Increment Loop Counters
loop100ms++;
loop250ms++;
loopSec++;
//volatile unsigned long targetOverdwellTime;
//volatile unsigned long targetTachoPulseTime;
unsigned long targetOverdwellTime;
unsigned long targetTachoPulseTime;
unsigned long targetOverdwellTime;
//Overdwell check
targetOverdwellTime = micros() - dwellLimit_uS; //Set a target time in the past that all coil charging must have begun after. If the coil charge began before this time, it's been running too long
targetTachoPulseTime = micros() - (1500);
//Check first whether each spark output is currently on. Only check it's dwell time if it is
if(ignitionSchedule1.Status == RUNNING) { if(ignitionSchedule1.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil1Charge(); } if(ignitionSchedule1.startTime < targetTachoPulseTime) { digitalWrite(pinTachOut, HIGH); } }
if(ignitionSchedule2.Status == RUNNING) { if(ignitionSchedule2.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil2Charge(); } if(ignitionSchedule2.startTime < targetTachoPulseTime) { digitalWrite(pinTachOut, HIGH); } }
if(ignitionSchedule3.Status == RUNNING) { if(ignitionSchedule3.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil3Charge(); } if(ignitionSchedule3.startTime < targetTachoPulseTime) { digitalWrite(pinTachOut, HIGH); } }
if(ignitionSchedule4.Status == RUNNING) { if(ignitionSchedule4.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil4Charge(); } if(ignitionSchedule4.startTime < targetTachoPulseTime) { digitalWrite(pinTachOut, HIGH); } }
if(ignitionSchedule1.Status == RUNNING) { if(ignitionSchedule1.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil1Charge(); } }
if(ignitionSchedule2.Status == RUNNING) { if(ignitionSchedule2.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil2Charge(); } }
if(ignitionSchedule3.Status == RUNNING) { if(ignitionSchedule3.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil3Charge(); } }
if(ignitionSchedule4.Status == RUNNING) { if(ignitionSchedule4.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil4Charge(); } }
if(ignitionSchedule5.Status == RUNNING) { if(ignitionSchedule5.startTime < targetOverdwellTime && configPage2.useDwellLim) { endCoil5Charge(); } }
//Loop executed every 100ms loop
//Anything inside this if statement will run every 100ms.
if (loop100ms == 100)
{
loop100ms = 0; //Reset counter
currentStatus.rpmDOT = (currentStatus.RPM - lastRPM_100ms) * 10; //This is the RPM per second that the engine has accelerated/decelleratedin the last loop
lastRPM_100ms = currentStatus.RPM; //Record the current RPM for next calc
}
//Loop executed every 250ms loop (1ms x 250 = 250ms)
//Anything inside this if statement will run every 250ms.
if (loop250ms == 250)
{
loop250ms = 0; //Reset Counter.
#if defined(CORE_AVR)
//wdt_reset(); //Reset watchdog timer
#endif
}
//Loop executed every 1 second (1ms x 1000 = 1000ms)
@ -137,6 +158,9 @@ unsigned long targetTachoPulseTime;
currentStatus.ethanolPct = flexCounter - 50; //Standard GM Continental sensor reads from 50Hz (0 ethanol) to 150Hz (Pure ethanol). Subtracting 50 from the frequency therefore gives the ethanol percentage.
flexCounter = 0;
}
//Off by 1 error check
if (currentStatus.ethanolPct == 1) { currentStatus.ethanolPct = 0; }
}

View File

@ -5,8 +5,6 @@ These are some utility functions and variables used through the main code
#define UTILS_H
#include <Arduino.h>
#define MS_IN_MINUTE 60000
#define US_IN_MINUTE 60000000
int freeRam ();
void setPinMapping(byte boardID);

111
utils.ino
View File

@ -1,12 +1,12 @@
/*
Speeduino - Simple engine management for the Arduino Mega 2560 platform
Copyright (C) Josh Stewart
A full copy of the license may be found in the projects root directory
Speeduino - Simple engine management for the Arduino Mega 2560 platform
Copyright (C) Josh Stewart
A full copy of the license may be found in the projects root directory
*/
/*
Returns how much free dynamic memory exists (between heap and stack)
Returns how much free dynamic memory exists (between heap and stack)
*/
#include "utils.h"
@ -118,7 +118,9 @@ void setPinMapping(byte boardID)
pinDisplayReset = 48; // OLED reset pin
pinTachOut = 49; //Tacho output pin
pinIdle1 = 5; //Single wire idle control
pinIdle2 = 7; //2 wire idle control
pinIdle2 = 53; //2 wire idle control
pinBoost = 7; //Boost control
pinVVT_1 = 6; //Default VVT output
pinFuelPump = 4; //Fuel pump output
pinStepperDir = 16; //Direction pin for DRV8825 driver
pinStepperStep = 17; //Step pin for DRV8825 driver
@ -150,7 +152,9 @@ void setPinMapping(byte boardID)
pinDisplayReset = 48; // OLED reset pin
pinTachOut = 49; //Tacho output pin (Goes to ULN2803)
pinIdle1 = 5; //Single wire idle control
pinIdle2 = 7; //2 wire idle control (Note this is shared with boost!!!)
pinIdle2 = 6; //2 wire idle control
pinBoost = 7; //Boost control
pinVVT_1 = 4; //Default VVT output
pinFuelPump = 45; //Fuel pump output (Goes to ULN2803)
pinStepperDir = 16; //Direction pin for DRV8825 driver
pinStepperStep = 17; //Step pin for DRV8825 driver
@ -294,8 +298,8 @@ void setPinMapping(byte boardID)
pinSpareLOut4 = 51;
pinSpareLOut5 = 53;
pinFan = 47; //Pin for the fan output
break;
break;
default:
//Pin mappings as per the v0.2 shield
pinInjector1 = 8; //Output pin injector 1 is on
@ -324,13 +328,29 @@ void setPinMapping(byte boardID)
pinTachOut = 49; //Tacho output pin
break;
}
//Setup any devices that are using selectable pins
if(configPage3.launchPin != 0) { pinLaunch = configPage3.launchPin; }
if(configPage2.ignBypassPin != 0) { pinIgnBypass = configPage2.ignBypassPin; }
if(configPage1.tachoPin != 0) { pinTachOut = configPage1.tachoPin; }
if(configPage2.fuelPumpPin != 0) { pinFuelPump = configPage2.fuelPumpPin; }
if(configPage4.fanPin != 0) { pinFan = configPage4.fanPin; }
if (configPage3.launchPin != 0) {
pinLaunch = configPage3.launchPin;
}
if (configPage2.ignBypassPin != 0) {
pinIgnBypass = configPage2.ignBypassPin;
}
if (configPage1.tachoPin != 0) {
pinTachOut = configPage1.tachoPin;
}
if (configPage2.fuelPumpPin != 0) {
pinFuelPump = configPage2.fuelPumpPin;
}
if (configPage4.fanPin != 0) {
pinFan = configPage4.fanPin;
}
if (configPage3.boostPin != 0) {
pinBoost = configPage3.boostPin;
}
if (configPage3.vvtPin != 0) {
pinVVT_1 = configPage3.vvtPin;
}
//Finally, set the relevant pin modes for outputs
pinMode(pinCoil1, OUTPUT);
@ -351,7 +371,7 @@ void setPinMapping(byte boardID)
pinMode(pinFan, OUTPUT);
pinMode(pinStepperDir, OUTPUT);
pinMode(pinStepperStep, OUTPUT);
inj1_pin_port = portOutputRegister(digitalPinToPort(pinInjector1));
inj1_pin_mask = digitalPinToBitMask(pinInjector1);
inj2_pin_port = portOutputRegister(digitalPinToPort(pinInjector2));
@ -362,7 +382,7 @@ void setPinMapping(byte boardID)
inj4_pin_mask = digitalPinToBitMask(pinInjector4);
inj5_pin_port = portOutputRegister(digitalPinToPort(pinInjector5));
inj5_pin_mask = digitalPinToBitMask(pinInjector5);
ign1_pin_port = portOutputRegister(digitalPinToPort(pinCoil1));
ign1_pin_mask = digitalPinToBitMask(pinCoil1);
ign2_pin_port = portOutputRegister(digitalPinToPort(pinCoil2));
@ -374,6 +394,9 @@ void setPinMapping(byte boardID)
ign5_pin_port = portOutputRegister(digitalPinToPort(pinCoil5));
ign5_pin_mask = digitalPinToBitMask(pinCoil5);
tach_pin_port = portOutputRegister(digitalPinToPort(pinTachOut));
tach_pin_mask = digitalPinToBitMask(pinTachOut);
//And for inputs
pinMode(pinMAP, INPUT);
pinMode(pinO2, INPUT);
@ -386,9 +409,13 @@ void setPinMapping(byte boardID)
pinMode(pinTrigger2, INPUT);
pinMode(pinTrigger3, INPUT);
pinMode(pinFlex, INPUT_PULLUP); //Standard GM / Continental flex sensor requires pullup
// pinMode(pinLaunch, INPUT_PULLUP); //This should work for both NO and NC grounding switches
if (configPage3.lnchPullRes) { pinMode(pinLaunch, INPUT_PULLUP); }
else { pinMode(pinLaunch, INPUT); } //If Launch Pull Resistor is not set make input float.
// pinMode(pinLaunch, INPUT_PULLUP); //This should work for both NO and NC grounding switches
if (configPage3.lnchPullRes) {
pinMode(pinLaunch, INPUT_PULLUP);
}
else {
pinMode(pinLaunch, INPUT); //If Launch Pull Resistor is not set make input float.
}
//Set default values
digitalWrite(pinMAP, HIGH);
@ -397,15 +424,15 @@ void setPinMapping(byte boardID)
}
/*
This function retuns a pulsewidth time (in us) using a either Alpha-N or Speed Density algorithms, given the following:
REQ_FUEL
VE: Lookup from the main MAP vs RPM fuel table
MAP: In KPa, read from the sensor
GammaE: Sum of Enrichment factors (Cold start, acceleration). This is a multiplication factor (Eg to add 10%, this should be 110)
injDT: Injector dead time. The time the injector take to open minus the time it takes to close (Both in uS)
TPS: Throttle position (0% to 100%)
This function retuns a pulsewidth time (in us) using a either Alpha-N or Speed Density algorithms, given the following:
REQ_FUEL
VE: Lookup from the main MAP vs RPM fuel table
MAP: In KPa, read from the sensor
GammaE: Sum of Enrichment factors (Cold start, acceleration). This is a multiplication factor (Eg to add 10%, this should be 110)
injDT: Injector dead time. The time the injector take to open minus the time it takes to close (Both in uS)
TPS: Throttle position (0% to 100%)
This function is called by PW_SD and PW_AN for speed0density and pure Alpha-N calculations respectively.
This function is called by PW_SD and PW_AN for speed0density and pure Alpha-N calculations respectively.
*/
unsigned int PW(int REQ_FUEL, byte VE, byte MAP, int corrections, int injOpen)
{
@ -416,17 +443,27 @@ unsigned int PW(int REQ_FUEL, byte VE, byte MAP, int corrections, int injOpen)
//100% float free version, does sacrifice a little bit of accuracy, but not much.
iVE = ((unsigned int)VE << 7) / 100;
if( configPage1.multiplyMAP ) { iMAP = ((unsigned int)MAP << 7) / currentStatus.baro; } //Include multiply MAP (vs baro) if enabled
if( configPage1.includeAFR && (configPage3.egoType == 2)) { iAFR = ((unsigned int)currentStatus.O2 << 7) / currentStatus.afrTarget; } //Include AFR (vs target) if enabled
if ( configPage1.multiplyMAP ) {
iMAP = ((unsigned int)MAP << 7) / currentStatus.baro; //Include multiply MAP (vs baro) if enabled
}
if ( configPage1.includeAFR && (configPage3.egoType == 2)) {
iAFR = ((unsigned int)currentStatus.O2 << 7) / currentStatus.afrTarget; //Include AFR (vs target) if enabled
}
iCorrections = (corrections << 7) / 100;
unsigned long intermediate = ((long)REQ_FUEL * (long)iVE) >> 7; //Need to use an intermediate value to avoid overflowing the long
if( configPage1.multiplyMAP ) { intermediate = (intermediate * iMAP) >> 7; }
if( configPage1.includeAFR && (configPage3.egoType == 2)) { intermediate = (intermediate * iAFR) >> 7; } //EGO type must be set to wideband for this to be used
if ( configPage1.multiplyMAP ) {
intermediate = (intermediate * iMAP) >> 7;
}
if ( configPage1.includeAFR && (configPage3.egoType == 2)) {
intermediate = (intermediate * iAFR) >> 7; //EGO type must be set to wideband for this to be used
}
intermediate = (intermediate * iCorrections) >> 7;
if(intermediate == 0) { return 0; } //If the pulsewidth is 0, we return here before the opening time gets added
if (intermediate == 0) {
return 0; //If the pulsewidth is 0, we return here before the opening time gets added
}
intermediate += injOpen; //Add the injector opening time
if ( intermediate > 65535) {
intermediate = 65535; //Make sure this won't overflow when we convert to uInt. This means the maximum pulsewidth possible is 65.535mS
@ -438,13 +475,15 @@ unsigned int PW(int REQ_FUEL, byte VE, byte MAP, int corrections, int injOpen)
//Convenience functions for Speed Density and Alpha-N
unsigned int PW_SD(int REQ_FUEL, byte VE, byte MAP, int corrections, int injOpen)
{
return PW(REQ_FUEL, VE, MAP, corrections, injOpen);
//return PW(REQ_FUEL, VE, 100, corrections, injOpen);
return PW(REQ_FUEL, VE, MAP, corrections, injOpen);
//return PW(REQ_FUEL, VE, 100, corrections, injOpen);
}
unsigned int PW_AN(int REQ_FUEL, byte VE, byte TPS, int corrections, int injOpen)
{
//Sanity check
if(TPS > 100) { TPS = 100; }
if (TPS > 100) {
TPS = 100;
}
return PW(REQ_FUEL, VE, currentStatus.MAP, corrections, injOpen);
}