Programmerbar tändning

Allt som rör Zenoah & CY motorer
User avatar
waqr
Posts: 10328
Joined: 30 Oct 2009, 21:07
Phone Number: 0709998877
Location: Karlskoga

Re: Programmerbar tändning

Post by waqr » 22 Feb 2010, 19:45

Jimmy wrote:
waqr wrote:Är det inte bättre att han tar det som en komplimang Jimmy ;)
:sunglasses: vad du var på hugget då :hammer: :lol: :lol:
Alltid när det gäller dig vet du ;)
Letar Baja 5B

Sponsor

Sponsor
 

User avatar
Rallyfinnen
Posts: 4003
Joined: 01 Nov 2009, 22:45
Location: Sollebrunn

Re: Programmerbar tändning

Post by Rallyfinnen » 24 Feb 2010, 20:02

Pillade lite med tändningen idag också. Knappade lite kod ock fick till ett varvstopp också, tänkte att det kanske kunde vara bra?
Efter det fick det räcka med kodandet, jag får bygga in kortet i någon låda och se till att det går att använda 'på riktigt' nu, och sluta fippla med det :) Beställde en batterihållare och en hög med AAA -batterier som jag ska använda för matning till kortet.
Dom borde räcka till ganska många timmars körning, bara man kommer ihåg att stänga av den när man inte kör..

User avatar
Rallyfinnen
Posts: 4003
Joined: 01 Nov 2009, 22:45
Location: Sollebrunn

Re: Programmerbar tändning

Post by Rallyfinnen » 28 Feb 2010, 20:36

Nu har jag kommit igång med lite bänkning :)

Setup:
Image

Började med att bänka med 'raka' tändkurvor för att få en uppfattning om hur tändningen påverkar registre, dvs konstant 25, 33 och 40 grader i hela registret. 33 grader är ungefär standard förtändning.
Körde med Rovan 29cc, för det är den jag installerat tändningen på och flyttat spolen. Den är lite portad, men har original filter, förgasare och insug.

Resultat med 'rovan-dominator':
Image

Bild på pipa:
Image

Resultat med egen pipa:
Image
Tyvärr gick den på varvstopp vid 15k, hade glömt att det var så lågt..

Bild på egen pipa:
Image

Jag måste testa mer imorgon, utan varvstopp och labba lite mer :hammer:

Jimmy
Posts: 3058
Joined: 30 Oct 2009, 21:59
Location: Karlskoga

Re: Programmerbar tändning

Post by Jimmy » 28 Feb 2010, 20:39

Så jäkla fränt,jag är imponerad av dina kunskaper :worship:
http://www.largescaleracing.se
info@largescaleracing.se
070-7910586
Nu kan jag även erbjuda mina kunder körning på våran offroad bana.

User avatar
Rallyfinnen
Posts: 4003
Joined: 01 Nov 2009, 22:45
Location: Sollebrunn

Re: Programmerbar tändning

Post by Rallyfinnen » 28 Feb 2010, 21:41

Hehe, man kommer en bra bit bara med lite bondförnuft ;)

User avatar
Rallyfinnen
Posts: 4003
Joined: 01 Nov 2009, 22:45
Location: Sollebrunn

Re: Programmerbar tändning

Post by Rallyfinnen » 10 Mar 2010, 19:34

Slänger upp koden för tändningen här också, ifall någon blir sugen på att bygga.
Man behöver en excel-fil som genererar värden man kopierar in i tspark baserat på hur tändkurvan ser ut, men den går nog inte att bifoga här..

#include <built_in.h>
void main() {


const unsigned int tspark[]={ };






char spark, t0;
unsigned int t1, tspk;
TRISB = 0x0E; // set RB1,2,3 for input, all others for output RB0=SCR RB4=Strobe
PORTB = 0x11; // set gate to SCR high i.e pin 6 of PIC +strobe
//OPTION_REG = 0x06; // tmr0 SOURCE INT CLOCK, 1:128 PRESCALER, min RPM 1832
OPTION_REG = 0x05; // tmr0 SOURCE INT CLOCK, 1:64 PRESCALER, min RPM 3700
//OPTION_REG = 0x04; // tmr0 SOURCE INT CLOCK, 1:32 PRESCALER, min RPM 7300
INTCON = 0x00; //Disable interrupts +Resets interrupt flags
T1CON = 0x05; // start TMR1 counter 1:1 using internal clock 1MHz
TMR1H = 0; // Reset timer1 high
TMR1L = 0; // Reset timer1 low
TMR0 = 0; // Reset timer0
PR2 = 255; // This is how far timer2 counts before overflow
while(1){ //Loop forever
while(PORTB & 0x02) { //Wait for low pulse on Hall switch
spark = 1;
} //North pole of magnet has passed
while(spark){
t0 = TMR0;
TMR0 = 0; //Start new rev count
if(INTCON&4)t0=255; //Overflow timer0, we have < min RPM Then use min rpm delay for this
tspk = tspark[t0]; //use table lookup for spark delay

TMR1H = 0; // Reset timer1 high
TMR1L = 0; // Reset timer1 high

do //start of timing loop
{Hi(t1)=TMR1H; // read timer1 Low bits and add to timer variable
Lo(t1)=TMR1L; } // read timer1 High bits and add to timer variable
while(t1 < tspk); // loop until timeout to send spark

PORTB &= 0xee; //sends a ground to the SCR gate
Delay_us(1500); // Calculated delay
PORTB |= 0x11; //ground off the SCR
if (t0<47) Delay_ms(100); //Rev-limiter, cuts out ignition 100ms when RPM is over set limit
spark = 0;
INTCON = 0; // Disable interrupts + Resets interrupt flags
} // end if(spark)
} // end while(1)
} // end main

Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests