Add files via upload

This commit is contained in:
Bouletmarc 2023-02-17 04:48:16 -05:00 committed by GitHub
parent 009c3a65c4
commit 2d0e0ee670
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 20274 additions and 0 deletions

429
BMFlex/BMFlex.ino Normal file
View File

@ -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

View File

@ -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"
}

View File

@ -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";"";"";
1 Qty Value Device Package Parts Description POPULARITY PROD_ID VALUE
2 7 PINHD-1X1_LARGE 1X01_LARGE INP1, INP2, INP3, INP4, INP5, INP6, INP7 PIN HEADER
3 1 PINHD-1X4 1X04 CN2 PIN HEADER
4 1 PINHD-1X6 1X06 FTDI PIN HEADER
5 3 0.1uF C-USC0603 C0603 C2, C4, C7 CAPACITOR, American symbol
6 1 1 MISO SMD2 SMD1,27-2,54 _ SMD PAD
7 3 100nF C-USC0603 C0603 C3, C6, C10 CAPACITOR, American symbol
8 5 10K R-US_R0603 R0603@1 R2, R3, R4, R5, R11 RESISTOR, American symbol
9 1 10nF C-USC1206 C1206 C1 CAPACITOR, American symbol
10 1 16V/1A PPTC_HALF-AMP 1206 F1 Resettable Fuse PPTC RES-08585 6V/0.5A
11 2 1k R-EU_R0603 R0603 R1, R7 RESISTOR, European symbol
12 1 2 SMD2 SMD1,27-2,54 VCC SMD PAD
13 2 22pF C-USC0603 C0603 C8, C9 CAPACITOR, American symbol
14 1 3 SCK SMD2 SMD1,27-2,54 __ SMD PAD
15 1 4 SMD2 SMD1,27-2,54 MOSI SMD PAD
16 1 4.7K R-US_R0603 R0603@1 R6 RESISTOR, American symbol
17 1 5 RST SMD2 SMD1,27-2,54 ___ SMD PAD
18 1 6 SMD2 SMD1,27-2,54 GND SMD PAD
19 1 6V/0.5A PPTC_HALF-AMP 1206 F2 Resettable Fuse PPTC RES-08585 6V/0.5A
20 1 78M05 MC78M05ABDT DPACK_3 IC3 500 mA Positive Voltage Regulators 0
21 1 ATMEGA328P_TQFP ATMEGA328P_TQFP TQFP32-08 U3 Popular 328P in QFP IC-09069 ATMEGA328P_TQFP
22 1 HC49 CRYSTALS-NOGND-HC49 HC49 16MHZ CRYSTALS CAN NOT GROUNDED
23 2 JMP JUMPER-SMT_2_NO_NO-SILK SMT-JUMPER_2_NO_NO-SILK JP1, JP2 Normally open jumper
24 2 MCP4725 MCP4725SOT-23 SOT23-6 U1, U2 MCP4725 DAC IC-08886 MCP4725
25 1 PWR LEDCHIPLED_0805 CHIPLED_0805 LED6 LED 52
26 1 SS12 DIODE-DO214AC DO214AC D1 DIODE
27 1 SS34 DIODE-DO214AC DO214AC D2 DIODE
28 1 STATUS LEDCHIPLED_0805 CHIPLED_0805 LED1 LED 52

View File

@ -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.

View File

@ -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.

View File

@ -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.