Här är ett litet projekt jag pillat med sista tiden..
Som topic skvallrar om är det ett piggyback system för att köra coil-on-plug på en bil med fördelar tändning..
Systemet funkar som så att en modifierad hallgivare är monterad där fördelaren satt, denna är moddad så den ger en kort signal mellan sista och första cylinderns tändning, denna behövs för att arduinot skall veta vilken burk som skall tändas, sedan övervakar arduinot endast när triggen kommer till orginalspolen...
Arduinot räknar med matte vilken cylinder som skall tändas, altså krävs inte hallsignalen efter att motorn har startat... (jag har provat att kontinuerligt läsa tändfölden på hallgivaren, men signalen verkar för svag/ostabil så då blev det ett slags varvstopp strax över 3000rpm
I dagsläget funkar systemet med spolar som triggas med positiv 10mA 13.5V signal, dwelltiden förblir samma som bilens original, jag har ett ALFA program för att justera ner dwelltiden, men detta är ännu ej testat!
Jag kör i dagsläget med detta systemet i min bil och det funkar hyffsat bra, det som skall till är att arduinot nollar följden när man får motorstopp, vilket man idag får göra på reset knappen...
OCH! jag är ingen kung på varken programmering eller elektronik, så har ni synpunkter eller förslag så tveka inte att på ett trevligt sätt säga ifrån! detta projektet är skapat för min lärdom om både elektronik och insprutnings system!Min testrigg:
![http://www.xoffart.se/bilder/sv79k/proj/arduino/140429_0001.jpg]()
Första provstarten, trigg med 5V som inte riktigt räckte till när bilen blev varm
http://youtu.be/sbnyIhRDKFIOmbyggt för 13.5V trigg via transistorer
http://youtu.be/LHO6wLETFLcKomma skall:
[]kodsnutt så arduinot resetar vid motorstopp mm
[]kod för dwelljustering
Kod:
Kod:
/*
Arduinobased Coil-On-Plug made by Xoffart
Licenced as open-source, but please refer to me if you use the code =)
*/
//In out constants
const int coil_signal = 10;
const int cam_signal = 11;
const int coil_1 = 5;
const int coil_2 = 6;
const int coil_3 = 7;
const int coil_4 = 8;
const int coil_5 = 9;
const int cam_trigg = 3;
const int coil_trigg = 2;
//Variables
int cycle=0; //endast minne för vilken cykel den är på (0-5)
int lock=0;
int active=0;
void setup()
{
//PinModes
pinMode(coil_signal, INPUT);
pinMode(cam_signal, INPUT);
pinMode(coil_1, OUTPUT);
pinMode(coil_2, OUTPUT);
pinMode(coil_3, OUTPUT);
pinMode(coil_4, OUTPUT);
pinMode(coil_5, OUTPUT);
//Setup END
}
void loop(){
while(cycle==0)
{
if(digitalRead(coil_signal)==HIGH){active=1;}
if(digitalRead(cam_signal)==HIGH && active==1){cycle=1;}
}
if (digitalRead(cam_signal)==HIGH){digitalWrite(cam_trigg,HIGH);}
else {digitalWrite(cam_trigg,LOW);}
if (digitalRead(coil_signal)==HIGH)// - När dwellsignal kommer från ECU, till nästa steg
{
digitalWrite(coil_trigg,HIGH);
lock=1;
while(lock==1)//låser upp den i en while...
{
if (cycle == 1){digitalWrite(coil_1,HIGH);}// - skicka signal till spole (lagt till att strunta i första tändningen...
if (cycle == 2){digitalWrite(coil_2,HIGH);}
if (cycle == 3){digitalWrite(coil_4,HIGH);}
if (cycle == 4){digitalWrite(coil_5,HIGH);}
if (cycle == 5){digitalWrite(coil_3,HIGH);}
if (digitalRead(coil_signal)==LOW)// när coil_signal försvinner
{
digitalWrite(coil_trigg,LOW);
digitalWrite(coil_1,LOW);// - ta bort signal (spelar kvitta att den alltid kör alla)
digitalWrite(coil_2,LOW);
digitalWrite(coil_3,LOW);
digitalWrite(coil_4,LOW);
digitalWrite(coil_5,LOW);
cycle ++;
lock=0;
}
}
}
}//Loop end
Har även gjort en ritning på en shield för arduino
![http://www.xoffart.se/elektronik/COP/5TS/COP_PCB_pcb.png]()
Etch-mall: http://www.xoffart.se/elektronik/COP/5T … bottom.pdf
Fullständiga PDFer hittar du här. (7z)
R1-R7: välj resistor beroende på LED modell (Vin 5V)
R8-R9: välj resistor beroende på optokopplare modell (Vin 14V)
R10: 1.5kΩ (pullup för hallgivare)
R11-R12: 4.7kΩ (del av potentialdelare för att mäta bilens spänning)
R13-R17: 8.2kΩ (bas-resistorer, modell efter transistortyp)
R18-R19: 10kΩ (pulldown på inkommande)
R20: 15kΩ (del av potentialdelare för att mäta bilens spänning)
R21-R25: 82kΩ (bas resistor, modell efter transistortyp)
Q1-Q5: NPN transistor (jag kör med BC547B (CBE))
Q6-Q10: PNP transistor (jag kör med BC557B (CBE))
C1-C2: 100µF (minimum 6V på C1, 15V på C2)
U1: 7805 (voltregulator)
U2-U3: 4N35 (optokopplare)
J1: skruvplint 2poler
J2: RJ45 kontakt
S1: PCB knapp
Pinout RJ45 kabel:
Orange/vit: tändsignal från ECU
Orange: tändspole 5
Grön/vit: Signal från hallgivare
Blå: tändspole 4
Blå/vit: tom
Grön: tändspole 3
Brun/vit: tändspole 1
Brun: tändspole 2
Så vad tycks?