Add files via upload
This commit is contained in:
parent
009c3a65c4
commit
2d0e0ee670
|
@ -0,0 +1,429 @@
|
|||
/*******************************************************
|
||||
________ _______ __ ________ __________
|
||||
/ ____/ / / ____/ |/ / / ____/ / / / ____/ /
|
||||
/ /_ / / / __/ | / / /_ / / / / __/ / /
|
||||
/ __/ / /___/ /___ / | / __/ / /_/ / /___/ /___
|
||||
/_/ /_____/_____//_/|_| /_/ \____/_____/_____/
|
||||
v1.0 - Bouletmarc
|
||||
This program will sample a 50-150hz signal depending on ethanol
|
||||
content, and output a 0-5V signal via DAC Converter.
|
||||
|
||||
This program will also sample a 0-100Duty signal depending on ethanol
|
||||
temperature, and output a 0-5V signal via DAC Converter. (-40 to 80 celcius)
|
||||
|
||||
Connect 0-5V output to the desired OBD1 ECU Input (Honda), and tune
|
||||
the "FLEX FUEL" parameter tab accordingly.
|
||||
|
||||
NOTE:
|
||||
DOES NOT REQUIRE Lowpass filter to be used on output!
|
||||
It use instead DAC Converter's (MCP4725)
|
||||
|
||||
****************************
|
||||
**LINEAR CONVERTION TABLE**
|
||||
0.5V = 0% Ethanol - 50Hz
|
||||
0.9V = 10% Ethanol - 60Hz
|
||||
1.7V = 30% Ethanol - 80Hz
|
||||
3.9V = 85% Ethanol - 135Hz
|
||||
4.5V = 100% Ethanol - 150Hz
|
||||
********************************************************/
|
||||
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_MCP4725.h>
|
||||
|
||||
Adafruit_MCP4725 MCP4725;
|
||||
Adafruit_MCP4725 MCP4725_Temp;
|
||||
byte I2CByte = 0x60; //Detected Automatically (Decimal 96 (Byte 0x60) are the default for A0 Grounded)
|
||||
byte I2CByteTemp = 0x61; //Detected Automatically
|
||||
|
||||
int inpPin = 2;
|
||||
int SignalPin = A0; //not used
|
||||
int SignalTempPin = A1; //not used
|
||||
int StatusPin = A3;
|
||||
|
||||
//Define global variables
|
||||
uint16_t pwm_output = 0; //integer for storing PWM value (0-255 value)
|
||||
uint16_t pwm_outputTemp = 0; //integer for storing PWM value (0-255 value)
|
||||
int HZ = 0; //unsigned 16bit integer for storing HZ input
|
||||
int ethanol = 0; //Store ethanol percentage here
|
||||
|
||||
float freq;
|
||||
int duty; //Duty cycle (0.0-100.0)
|
||||
float period; //Store period time here (eg.0.0025 s)
|
||||
float temperature = 0; //Store fuel temperature here
|
||||
int cels = 0;
|
||||
int fahr = 0;
|
||||
|
||||
static long highTime = 0;
|
||||
static long lowTime = 0;
|
||||
|
||||
int Correction = 0;
|
||||
int CorrectionTemp = 0;
|
||||
int input_voltage = 0.0;
|
||||
int input_voltageTemp = 0.0;
|
||||
|
||||
//#####################################################################
|
||||
//long previousMillis = 0;
|
||||
//long interval = 1000;
|
||||
//volatile unsigned long _freq;
|
||||
//volatile unsigned long _pulseCount;
|
||||
//volatile unsigned int _tickCount;
|
||||
//volatile uint8_t _ready; // becomes 1 when gate time is elapsed
|
||||
|
||||
/*#if F_CPU == 20000000
|
||||
#define GATETIME_CLICKS 1000
|
||||
#elif F_CPU == 16000000
|
||||
#define GATETIME_CLICKS 800
|
||||
#else
|
||||
#define GATETIME_CLICKS 400
|
||||
#endif*/
|
||||
|
||||
/*ISR(PCINT0_vect)
|
||||
{
|
||||
_pulseCount++;
|
||||
}*/
|
||||
|
||||
/*unsigned long count_frequency(uint8_t pin)
|
||||
{
|
||||
noInterrupts();
|
||||
|
||||
_tickCount = 0;
|
||||
_pulseCount = 0;
|
||||
_ready = 0;
|
||||
|
||||
GIMSK = 0b00100000;
|
||||
//PCMSK |= _BV(pin);
|
||||
PCMSK1 |= _BV(pin);
|
||||
|
||||
// Set up Timer1 for gate time measurement.
|
||||
//TCCR1 = _BV(CTC1); // CTC mode
|
||||
TCCR1A = _BV(CTC1); // CTC mode
|
||||
|
||||
#if F_CPU == 20000000 || F_CPU == 16000000 || F_CPU == 8000000
|
||||
//TCCR1 |= _BV(CS12); // prescale: 8
|
||||
TCCR1A |= _BV(CS12); // prescale: 8
|
||||
#elif F_CPU == 1000000
|
||||
//TCCR1 |= _BV(CS10); // no prescale
|
||||
TCCR1A |= _BV(CS10); // no prescale
|
||||
#endif
|
||||
|
||||
OCR1C = 250;
|
||||
TIMSK |= _BV(OCIE1A); // enable Timer1 interrupt
|
||||
interrupts();
|
||||
|
||||
while (_ready == 0) {} // Wait for gate time
|
||||
|
||||
PCMSK = 0;
|
||||
GIMSK = 0;
|
||||
|
||||
return _freq;
|
||||
}
|
||||
|
||||
ISR(TIM1_COMPA_vect)
|
||||
{
|
||||
if (_tickCount == GATETIME_CLICKS)
|
||||
{
|
||||
// On ATTtiny, PCI is triggered on both rising and falling edge,
|
||||
// use only half of the pulseCount
|
||||
|
||||
_freq = _pulseCount * 5; // based on 100ms
|
||||
_ready = 1;
|
||||
|
||||
TIMSK &= ~_BV(OCIE1A); // disable Timer1 Interrupt
|
||||
}
|
||||
|
||||
_tickCount++;
|
||||
}*/
|
||||
//#####################################################################
|
||||
|
||||
/*void setupTimer() // setup timer1
|
||||
{
|
||||
TCCR1A = 0; // normal mode
|
||||
TCCR1B = 132; // (10000100) Falling edge trigger, Timer = CPU Clock/256, noise cancellation on
|
||||
TCCR1C = 0; // normal mode
|
||||
TIMSK1 = 33; // (00100001) Input capture and overflow interupts enabled
|
||||
TCNT1 = 0; // start from 0
|
||||
}
|
||||
|
||||
ISR(TIMER1_CAPT_vect) // PULSE DETECTED! (interrupt automatically triggered, not called by main program)
|
||||
{
|
||||
revTick = ICR1; // save duration of last revolution
|
||||
TCNT1 = 0; // restart timer for next revolution
|
||||
}
|
||||
|
||||
ISR(TIMER1_OVF_vect) // counter overflow/timeout
|
||||
{ revTick = 0; } // Ticks per second = 0
|
||||
*/
|
||||
|
||||
void setup()
|
||||
{
|
||||
pinMode(inpPin,INPUT);
|
||||
pinMode(StatusPin,OUTPUT);
|
||||
|
||||
pinMode(SignalPin,INPUT);
|
||||
pinMode(SignalTempPin,INPUT);
|
||||
//pinMode(SignalPin,OUTPUT);
|
||||
//pinMode(SignalTempPin,OUTPUT);
|
||||
|
||||
//setPwmFrequency(outPin,1); //Modify frequency on PWM output
|
||||
//setupTimer();
|
||||
|
||||
ScanForI2C();
|
||||
|
||||
Serial.begin(38400);
|
||||
FlashI2CCode();
|
||||
|
||||
MCP4725.begin(I2CByte);
|
||||
MCP4725_Temp.begin(I2CByteTemp);
|
||||
|
||||
MCP4725.setVoltage(405, false);
|
||||
MCP4725_Temp.setVoltage(405, false);
|
||||
}
|
||||
|
||||
void FlashI2CCode() {
|
||||
if (I2CByte == 0x60 && I2CByteTemp == 0x61) {
|
||||
Serial.println("MCP4725 Addresse's set correctly!");
|
||||
}
|
||||
|
||||
if (I2CByte != 0x60) {
|
||||
Serial.println(String(I2CByte));
|
||||
|
||||
//Quick Flash
|
||||
digitalWrite(StatusPin, HIGH);
|
||||
delay(250);
|
||||
digitalWrite(StatusPin, LOW);
|
||||
delay(1000);
|
||||
//###########
|
||||
|
||||
int Code10 = I2CByte / 10;
|
||||
int Code1 = I2CByte - (Code10 * 10);
|
||||
for (byte i = 0; i < Code10; i++) {
|
||||
digitalWrite(StatusPin, HIGH);
|
||||
delay(500);
|
||||
digitalWrite(StatusPin, LOW);
|
||||
delay(500);
|
||||
}
|
||||
|
||||
delay(500);
|
||||
for (byte i = 0; i < Code1; i++) {
|
||||
digitalWrite(StatusPin, HIGH);
|
||||
delay(250);
|
||||
digitalWrite(StatusPin, LOW);
|
||||
delay(250);
|
||||
}
|
||||
}
|
||||
|
||||
//########################################
|
||||
if (I2CByteTemp != 0x61) {
|
||||
Serial.println(String(I2CByteTemp));
|
||||
|
||||
//Long Flash
|
||||
digitalWrite(StatusPin, HIGH);
|
||||
delay(500);
|
||||
digitalWrite(StatusPin, LOW);
|
||||
delay(1000);
|
||||
//###########
|
||||
|
||||
int Code10 = I2CByteTemp / 10;
|
||||
int Code1 = I2CByteTemp - (Code10 * 10);
|
||||
for (byte i = 0; i < Code10; i++) {
|
||||
digitalWrite(StatusPin, HIGH);
|
||||
delay(500);
|
||||
digitalWrite(StatusPin, LOW);
|
||||
delay(500);
|
||||
}
|
||||
|
||||
delay(500);
|
||||
for (byte i = 0; i < Code1; i++) {
|
||||
digitalWrite(StatusPin, HIGH);
|
||||
delay(250);
|
||||
digitalWrite(StatusPin, LOW);
|
||||
delay(250);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ScanForI2C() {
|
||||
// Leonardo: wait for serial port to connect
|
||||
while (!Serial) { }
|
||||
|
||||
//scan
|
||||
byte count = 0;
|
||||
bool DoneFirst = false;
|
||||
Wire.begin();
|
||||
|
||||
for (byte i = 1; i < 120; i++)
|
||||
{
|
||||
Wire.beginTransmission (i);
|
||||
if (Wire.endTransmission () == 0)
|
||||
{
|
||||
if (!DoneFirst)
|
||||
{
|
||||
if (i != I2CByte)
|
||||
{
|
||||
I2CByte = i;
|
||||
I2CByteTemp = I2CByte + 1;
|
||||
DoneFirst = true;
|
||||
}
|
||||
else {
|
||||
DoneFirst = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (i != I2CByteTemp)
|
||||
{
|
||||
I2CByteTemp = i;
|
||||
}
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
highTime = pulseIn(inpPin,HIGH);
|
||||
lowTime = pulseIn(inpPin,LOW);
|
||||
period = highTime+lowTime;
|
||||
freq = 1000000.0/period;
|
||||
|
||||
//duty = (highTime/period)*100;
|
||||
duty = ((100*(highTime/(double (period))))); //Calculate duty cycle (integer extra decimal)
|
||||
|
||||
int CorrectionForFrequency = map(freq, 50, 300, 0, 13);
|
||||
freq -= CorrectionForFrequency;
|
||||
|
||||
HZ = (int) freq;
|
||||
getfueltemp();
|
||||
|
||||
//calculate ethanol percentage
|
||||
if (HZ > 50) {
|
||||
ethanol = HZ-50;
|
||||
}
|
||||
else {
|
||||
ethanol = 0;
|
||||
}
|
||||
if (ethanol > 100) {
|
||||
ethanol = 100;
|
||||
}
|
||||
|
||||
//Get 0-4096 signals
|
||||
uint32_t MCP4725_value = map(ethanol, 0, 100, 405, 3720); //Voltage range from 0-4096(0V-5V), that mean 3720 should equal 4.5V and 405 equal 0.5V
|
||||
uint32_t MCP4725_Temp_value = map(cels, -40, 125, 405, 3720);
|
||||
MCP4725.setVoltage(MCP4725_value + Correction, false);
|
||||
MCP4725_Temp.setVoltage(MCP4725_Temp_value + CorrectionTemp, false);
|
||||
|
||||
//###########################################
|
||||
delay(100);
|
||||
uint32_t CurrentVoltage = analogRead(SignalPin);
|
||||
uint32_t CurrentVoltageTemp = analogRead(SignalTempPin);
|
||||
uint32_t DesiredVoltage = map(ethanol, 0, 100, 500, 4500); //Convert 0.5V-4.5V range to 0-1024 range
|
||||
uint32_t DesiredVoltageTemp = map(cels, -40, 125, 500, 4500); //Convert 0.5V-4.5V range to 0-1024 range
|
||||
|
||||
input_voltage = (int) (((CurrentVoltage * 5.0) / 1024.0) * 1000.0);
|
||||
input_voltageTemp = (int) (((CurrentVoltageTemp * 5.0) / 1024.0) * 1000.0);
|
||||
|
||||
int CorrectionForVoltageInput = map(input_voltage, 500, 4500, 0, 3) * 10;
|
||||
int CorrectionForVoltageInputTemp = map(input_voltageTemp, 500, 4500, 0, 3) * 10;
|
||||
input_voltage -= CorrectionForVoltageInput;
|
||||
input_voltageTemp -= CorrectionForVoltageInputTemp;
|
||||
|
||||
float PercentOff = 0;
|
||||
float PercentOffTemp = 0;
|
||||
if (DesiredVoltage > input_voltage) {
|
||||
PercentOff = (DesiredVoltage - input_voltage);
|
||||
PercentOff = (PercentOff * 100.0) / 4500.0;
|
||||
PercentOff = PercentOff /2;
|
||||
Correction += ((PercentOff * 3720) / 100);
|
||||
}
|
||||
else {
|
||||
PercentOff = (input_voltage - DesiredVoltage);
|
||||
PercentOff = (PercentOff * 100.0) / 4500.0;
|
||||
PercentOff = -PercentOff;
|
||||
PercentOff = PercentOff /2;
|
||||
Correction += ((PercentOff * 3720) / 100);
|
||||
}
|
||||
|
||||
if (DesiredVoltageTemp > input_voltageTemp) {
|
||||
PercentOffTemp = (DesiredVoltageTemp - input_voltageTemp);
|
||||
PercentOffTemp = (PercentOffTemp * 100.0) / 4500.0;
|
||||
PercentOffTemp = PercentOffTemp /2;
|
||||
CorrectionTemp += ((PercentOffTemp * 3720) / 100);
|
||||
}
|
||||
else {
|
||||
PercentOffTemp = (input_voltageTemp - DesiredVoltageTemp);
|
||||
PercentOffTemp = (PercentOffTemp * 100.0) / 4500.0;
|
||||
PercentOffTemp = -PercentOffTemp;
|
||||
PercentOffTemp = PercentOffTemp /2;
|
||||
CorrectionTemp += ((PercentOffTemp * 3720) / 100);
|
||||
}
|
||||
|
||||
//##############
|
||||
if (Correction > 100) {
|
||||
Correction = 100;
|
||||
}
|
||||
if (Correction < -100) {
|
||||
Correction = -100;
|
||||
}
|
||||
if (CorrectionTemp > 100) {
|
||||
CorrectionTemp = 100;
|
||||
}
|
||||
if (CorrectionTemp < -100) {
|
||||
CorrectionTemp = -100;
|
||||
}
|
||||
//###########################################
|
||||
|
||||
Serial.println("freq:" + String(HZ) + ", ethanol%:" + String(ethanol) + "(" + String(MCP4725_value) + "), temp:" + String(cels) + "(" + String(MCP4725_Temp_value) + "), Correction:" + String(PercentOff) + "%, CurrentV:" + String((input_voltage / 1000.0)) + ", DesiredV:" + String((DesiredVoltage / 1000.0)));
|
||||
//delay(100);
|
||||
}
|
||||
|
||||
void getfueltemp()
|
||||
{
|
||||
//read fuel temp from input duty cycle
|
||||
float T = (float(1.0/float(HZ))); //Calculate total period time
|
||||
float period2 = float(100-duty)*T; //Calculate the active period time (100-duty)*T
|
||||
float temp2 = float(10) * float(period2); //Convert ms to whole number
|
||||
temperature = ((40.25 * temp2)-81.25); // Calculate temperature for display (1ms = -40, 5ms = 80)
|
||||
cels = int(temperature);
|
||||
//cels = cels*0.1;
|
||||
|
||||
//float fahrtemp = ((temperature*1.8)+32);
|
||||
//fahr = fahrtemp*0.1;
|
||||
|
||||
if (cels < -40) {
|
||||
cels = -40;
|
||||
}
|
||||
if (cels > 125) {
|
||||
cels = 125;
|
||||
}
|
||||
}
|
||||
|
||||
/*void setPwmFrequency(int pin, int divisor) {
|
||||
byte mode;
|
||||
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
|
||||
switch(divisor) {
|
||||
case 1: mode = 0x01; break;
|
||||
case 8: mode = 0x02; break;
|
||||
case 64: mode = 0x03; break;
|
||||
case 256: mode = 0x04; break;
|
||||
case 1024: mode = 0x05; break;
|
||||
default: return;
|
||||
}
|
||||
if(pin == 5 || pin == 6) {
|
||||
TCCR0B = TCCR0B & 0b11111000 | mode;
|
||||
} else {
|
||||
TCCR1B = TCCR1B & 0b11111000 | mode;
|
||||
}
|
||||
} else if(pin == 3 || pin == 11) {
|
||||
switch(divisor) {
|
||||
case 1: mode = 0x01; break;
|
||||
case 8: mode = 0x02; break;
|
||||
case 32: mode = 0x03; break;
|
||||
case 64: mode = 0x04; break;
|
||||
case 128: mode = 0x05; break;
|
||||
case 256: mode = 0x06; break;
|
||||
case 1024: mode = 0x7; break;
|
||||
default: return;
|
||||
}
|
||||
TCCR2B = TCCR2B & 0b11111000 | mode;
|
||||
}
|
||||
}*/
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,263 @@
|
|||
{
|
||||
"author": {
|
||||
"email": "bouletmarc@hotmail.com",
|
||||
"name": "Marc-Andre Boulet"
|
||||
},
|
||||
"description": {
|
||||
"EN": "CAM job description goes here."
|
||||
},
|
||||
"output_type": "zip",
|
||||
"outputs": [
|
||||
{
|
||||
"format_specifier": {
|
||||
"decimal": 3,
|
||||
"integer": 3
|
||||
},
|
||||
"output_type": "drill",
|
||||
"outputs": [
|
||||
{
|
||||
"drills": {
|
||||
"NPTH": true,
|
||||
"PTH": true,
|
||||
"VIA": true
|
||||
},
|
||||
"filename_format": "%N.TXT",
|
||||
"layers": {
|
||||
"from": 1,
|
||||
"to": 16
|
||||
},
|
||||
"name": "Drills and Holes",
|
||||
"type": "excellon"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename_prefix": "gerber",
|
||||
"format_specifier": {
|
||||
"decimal": 4,
|
||||
"integer": 3
|
||||
},
|
||||
"generate_job_file": true,
|
||||
"output_type": "gerber",
|
||||
"outputs": [
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Slot drill/holes/outline",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GML",
|
||||
"layers": [
|
||||
20,
|
||||
46
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Slot drill/holes/outline",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Bottom solder paste for stencil",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GBP",
|
||||
"layers": [
|
||||
20,
|
||||
32
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Bottom solder paste for stencil",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Bottom solder mask",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GBS",
|
||||
"layers": [
|
||||
20,
|
||||
30
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Bottom solder mask",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Bottom silk",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GBO",
|
||||
"layers": [
|
||||
20,
|
||||
122
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Bottom silk",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Bottom copper",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GBL",
|
||||
"layers": [
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
20
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Bottom copper",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Top solder paste for stencil",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GTP",
|
||||
"layers": [
|
||||
20,
|
||||
31
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Top solder paste for stencil",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Top solder mask",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GTS",
|
||||
"layers": [
|
||||
20,
|
||||
29
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Top solder mask",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Top silk",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GTO",
|
||||
"layers": [
|
||||
20,
|
||||
112,
|
||||
121
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Top silk",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
},
|
||||
{
|
||||
"advanced_options": {
|
||||
"mirror": false,
|
||||
"offset_x": 0,
|
||||
"offset_y": 0,
|
||||
"rotate": false,
|
||||
"upside_down": false
|
||||
},
|
||||
"board_outline": false,
|
||||
"config": {
|
||||
"description": "Top copper",
|
||||
"file_function": "Other"
|
||||
},
|
||||
"filename_format": "%N.GTL",
|
||||
"layers": [
|
||||
1,
|
||||
17,
|
||||
18,
|
||||
20
|
||||
],
|
||||
"milling": false,
|
||||
"name": "Top copper",
|
||||
"polarity": "positive",
|
||||
"type": "gerber_layer"
|
||||
}
|
||||
],
|
||||
"version": "X2"
|
||||
}
|
||||
],
|
||||
"timestamp": "2019-08-22T20:43:49",
|
||||
"type": "EAGLE CAM job",
|
||||
"units": "metric",
|
||||
"version": "8.6.0"
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
"Qty";"Value";"Device";"Package";"Parts";"Description";"POPULARITY";"PROD_ID";"VALUE";
|
||||
"7";"";"PINHD-1X1_LARGE";"1X01_LARGE";"INP1, INP2, INP3, INP4, INP5, INP6, INP7";"PIN HEADER";"";"";"";
|
||||
"1";"";"PINHD-1X4";"1X04";"CN2";"PIN HEADER";"";"";"";
|
||||
"1";"";"PINHD-1X6";"1X06";"FTDI";"PIN HEADER";"";"";"";
|
||||
"3";"0.1uF";"C-USC0603";"C0603";"C2, C4, C7";"CAPACITOR, American symbol";"";"";"";
|
||||
"1";"1 MISO";"SMD2";"SMD1,27-2,54";"_";"SMD PAD";"";"";"";
|
||||
"3";"100nF";"C-USC0603";"C0603";"C3, C6, C10";"CAPACITOR, American symbol";"";"";"";
|
||||
"5";"10K";"R-US_R0603";"R0603@1";"R2, R3, R4, R5, R11";"RESISTOR, American symbol";"";"";"";
|
||||
"1";"10nF";"C-USC1206";"C1206";"C1";"CAPACITOR, American symbol";"";"";"";
|
||||
"1";"16V/1A";"PPTC_HALF-AMP";"1206";"F1";"Resettable Fuse PPTC";"";"RES-08585";"6V/0.5A";
|
||||
"2";"1k";"R-EU_R0603";"R0603";"R1, R7";"RESISTOR, European symbol";"";"";"";
|
||||
"1";"2";"SMD2";"SMD1,27-2,54";"VCC";"SMD PAD";"";"";"";
|
||||
"2";"22pF";"C-USC0603";"C0603";"C8, C9";"CAPACITOR, American symbol";"";"";"";
|
||||
"1";"3 SCK";"SMD2";"SMD1,27-2,54";"__";"SMD PAD";"";"";"";
|
||||
"1";"4";"SMD2";"SMD1,27-2,54";"MOSI";"SMD PAD";"";"";"";
|
||||
"1";"4.7K";"R-US_R0603";"R0603@1";"R6";"RESISTOR, American symbol";"";"";"";
|
||||
"1";"5 RST";"SMD2";"SMD1,27-2,54";"___";"SMD PAD";"";"";"";
|
||||
"1";"6";"SMD2";"SMD1,27-2,54";"GND";"SMD PAD";"";"";"";
|
||||
"1";"6V/0.5A";"PPTC_HALF-AMP";"1206";"F2";"Resettable Fuse PPTC";"";"RES-08585";"6V/0.5A";
|
||||
"1";"78M05";"MC78M05ABDT";"DPACK_3";"IC3";"500 mA Positive Voltage Regulators";"0";"";"";
|
||||
"1";"ATMEGA328P_TQFP";"ATMEGA328P_TQFP";"TQFP32-08";"U3";"Popular 328P in QFP";"";"IC-09069";"ATMEGA328P_TQFP";
|
||||
"1";"HC49";"CRYSTALS-NOGND-HC49";"HC49";"16MHZ";"CRYSTALS CAN NOT GROUNDED";"";"";"";
|
||||
"2";"JMP";"JUMPER-SMT_2_NO_NO-SILK";"SMT-JUMPER_2_NO_NO-SILK";"JP1, JP2";"Normally open jumper";"";"";"";
|
||||
"2";"MCP4725";"MCP4725SOT-23";"SOT23-6";"U1, U2";"MCP4725 DAC";"";"IC-08886";"MCP4725";
|
||||
"1";"PWR";"LEDCHIPLED_0805";"CHIPLED_0805";"LED6";"LED";"52";"";"";
|
||||
"1";"SS12";"DIODE-DO214AC";"DO214AC";"D1";"DIODE";"";"";"";
|
||||
"1";"SS34";"DIODE-DO214AC";"DO214AC";"D2";"DIODE";"";"";"";
|
||||
"1";"STATUS";"LEDCHIPLED_0805";"CHIPLED_0805";"LED1";"LED";"52";"";"";
|
|
|
@ -0,0 +1,32 @@
|
|||
C1 24.49 26.39 180 10nF C1206
|
||||
C2 29.89 6.68 0 0.1uF C0603
|
||||
C3 7.63 8.90 270 100nF C0603
|
||||
C4 19.72 4.13 90 0.1uF C0603
|
||||
C6 7.65 3.71 270 100nF C0603
|
||||
C7 15.90 15.90 180 0.1uF C0603
|
||||
C8 22.58 5.09 180 22pF C0603
|
||||
C9 25.76 5.09 0 22pF C0603
|
||||
C10 8.70 26.08 180 100nF C0603
|
||||
D1 8.90 13.04 180 SS12 DO214AC
|
||||
D2 3.50 23.53 270 SS34 DO214AC
|
||||
F1 8.27 28.30 0 16V/1A 1206
|
||||
F2 14.75 13.04 180 6V/0.5A 1206
|
||||
GND 25.76 31.16 180 6 SMD1,27-2,54
|
||||
IC3 8.90 22.14 180 78M05 DPACK_3
|
||||
JP1 4.77 11.13 180 JMP SMT-JUMPER_2_NO_NO-SILK
|
||||
JP2 4.77 8.90 180 JMP SMT-JUMPER_2_NO_NO-SILK
|
||||
LED1 14.31 23.21 0 STATUS CHIPLED_0805
|
||||
LED6 16.22 23.21 0 PWR CHIPLED_0805
|
||||
MOSI 23.21 31.16 180 4 SMD1,27-2,54
|
||||
R1 16.22 19.72 90 1k R0603
|
||||
R2 20.99 26.39 270 10K R0603@1
|
||||
R3 15.08 3.82 90 10K R0603@1
|
||||
R4 15.08 8.59 90 10K R0603@1
|
||||
R5 13.04 8.59 270 10K R0603@1
|
||||
R6 18.76 26.39 270 4.7K R0603@1
|
||||
R7 14.31 19.72 90 1k R0603
|
||||
R11 13.04 3.83 270 10K R0603@1
|
||||
U1 10.49 8.90 180 MCP4725 SOT23-6
|
||||
U2 10.49 3.82 180 MCP4725 SOT23-6
|
||||
U3 23.21 17.81 0 ATMEGA328P_TQFP TQFP32-08
|
||||
VCC 20.67 31.16 180 2 SMD1,27-2,54
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,16 @@
|
|||
Qty,Designator,Footprint,Comment,LCSC
|
||||
2,"C2, C4, C7, C3, C6, C10",Capacitor 0603 100nF,Capacitor 0603 100nF,,
|
||||
5,"R2, R3, R4, R5, R11",Resistor 0603 10K,Resistor 0603 10K,,
|
||||
1,C1,Capacitor 1206 10nF,Capacitor 1206 10nF,,
|
||||
1,F1,1206 16V 1A,1206 16V 1A,,
|
||||
2,"R1, R7",Resistor 0603 1k,Resistor 0603 1k,,
|
||||
2,"C8, C9",Capacitor 0603 22pF,Capacitor 0603 22pF,,
|
||||
1,R6,Resistor 0603 4.7K,Resistor 0603 4.7K,,
|
||||
1,F2,1206 6V 0.5A,1206 6V 0.5A,,
|
||||
1,IC3,78M05,78M05,,
|
||||
1,U3,TQFP32 08 ATMEGA328P TQFP,ATMEGA328P TQFP,,
|
||||
2,"U1, U2",SOT23 6 MCP4725,MCP4725,,
|
||||
1,LED6,LED 0805 PWR,LED 0805 Green,,
|
||||
1,D1,SS12,SS12,,
|
||||
1,D2,SS34,SS34,,
|
||||
1,LED1,LED 0805 STATUS,LED 0805 Green,,
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -0,0 +1,33 @@
|
|||
Designator,Mid X,Mid Y,Layer,Rotation
|
||||
C1,24.49,26.39,TOP,180,10nF,C1206,
|
||||
C2,29.89,6.68,TOP,0,0.1uF,C0603,
|
||||
C3,7.63,8.90,TOP,270,100nF,C0603,
|
||||
C4,19.72,4.13,TOP,90,0.1uF,C0603,
|
||||
C6,7.65,3.71,TOP,270,100nF,C0603,
|
||||
C7,15.90,15.90,TOP,180,0.1uF,C0603,
|
||||
C8,22.58,5.09,TOP,180,22pF,C0603,
|
||||
C9,25.76,5.09,TOP,0,22pF,C0603,
|
||||
C10,8.70,26.08,TOP,180,100nF,C0603,
|
||||
D1,8.90,13.04,TOP,0,
|
||||
D2,3.50,23.53,TOP,270,
|
||||
F1,8.27,28.30,TOP,0,16V/1A,1206,
|
||||
F2,14.75,13.04,TOP,180,6V/0.5A,1206,
|
||||
GND,25.76,31.16,TOP,180,6,"SMD1,27-2,54",
|
||||
IC3,8.90,21.68,TOP,270,
|
||||
JP1,4.77,11.13,TOP,180,JMP,SMT-JUMPER_2_NO_NO-SILK,
|
||||
JP2,4.77,8.90,TOP,180,JMP,SMT-JUMPER_2_NO_NO-SILK,
|
||||
LED1,14.31,23.21,TOP,270,
|
||||
LED6,16.22,23.21,TOP,270,
|
||||
MOSI,23.21,31.16,TOP,180,4,"SMD1,27-2,54",
|
||||
R1,16.22,19.72,TOP,90,1k,R0603,
|
||||
R2,20.99,26.39,TOP,270,10K,R0603@1,
|
||||
R3,15.08,3.82,TOP,90,10K,R0603@1,
|
||||
R4,15.08,8.59,TOP,90,10K,R0603@1,
|
||||
R5,13.04,8.59,TOP,270,10K,R0603@1,
|
||||
R6,18.76,26.39,TOP,270,4.7K,R0603@1,
|
||||
R7,14.31,19.72,TOP,90,1k,R0603,
|
||||
R11,13.04,3.83,TOP,270,10K,R0603@1,
|
||||
U1,10.49,8.90,TOP,270,
|
||||
U2,10.49,3.82,TOP,270,
|
||||
U3,23.21,17.81,TOP,270,
|
||||
VCC,20.67,31.16,TOP,180,2,"SMD1,27-2,54",
|
Can't render this file because it has a wrong number of fields in line 2.
|
Loading…
Reference in New Issue