Alltid när det gäller dig vet duJimmy wrote:waqr wrote:Är det inte bättre att han tar det som en komplimang Jimmyvad du var på hugget då
![]()
![]()
Programmerbar tändning
Re: Programmerbar tändning
Letar Baja 5B
- Rallyfinnen
- Posts: 4003
- Joined: 01 Nov 2009, 22:45
- Location: Sollebrunn
Re: Programmerbar tändning
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..
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
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..
- Rallyfinnen
- Posts: 4003
- Joined: 01 Nov 2009, 22:45
- Location: Sollebrunn
Re: Programmerbar tändning
Nu har jag kommit igång med lite bänkning 
Setup:

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':

Bild på pipa:

Resultat med egen pipa:

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

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

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':

Bild på pipa:

Resultat med egen pipa:

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

Jag måste testa mer imorgon, utan varvstopp och labba lite mer
Re: Programmerbar tändning
Så jäkla fränt,jag är imponerad av dina kunskaper 
http://www.largescaleracing.se
info@largescaleracing.se
070-7910586
Nu kan jag även erbjuda mina kunder körning på våran offroad bana.
info@largescaleracing.se
070-7910586
Nu kan jag även erbjuda mina kunder körning på våran offroad bana.
- Rallyfinnen
- Posts: 4003
- Joined: 01 Nov 2009, 22:45
- Location: Sollebrunn
Re: Programmerbar tändning
Hehe, man kommer en bra bit bara med lite bondförnuft 
- Rallyfinnen
- Posts: 4003
- Joined: 01 Nov 2009, 22:45
- Location: Sollebrunn
Re: Programmerbar tändning
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
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
Who is online
Users browsing this forum: No registered users and 9 guests



