Programmerbar tändning

Allt som rör Zenoah & CY motorer
User avatar
Rallyfinnen
Posts: 4003
Joined: 01 Nov 2009, 22:45
Location: Sollebrunn

Re: Programmerbar tändning

Post by Rallyfinnen » 17 Feb 2010, 18:49

Hehe, jag har bitit mig fast i detta nu :)
Jag har hittat lite problem med kortet som inte besvärat flygarna, för dom varvar så lite :)
Är det någon här som är bra att hacka c-kod? Skulle behöva modifiera koden lite tror jag, men jag är inte så vass på detta!

Sponsor

Sponsor
 

User avatar
S 500 R
Hedersmedlem
Posts: 20696
Joined: 30 Oct 2009, 19:21
Location: Mölndal

Re: Programmerbar tändning

Post by S 500 R » 17 Feb 2010, 18:56

Rallyfinnen wrote:Hehe, jag har bitit mig fast i detta nu :)
Jag har hittat lite problem med kortet som inte besvärat flygarna, för dom varvar så lite :)
Är det någon här som är bra att hacka c-kod? Skulle behöva modifiera koden lite tror jag, men jag är inte så vass på detta!
mathias kanske kan hjälpa dig... eller john kanske??
☆Styr med: Sanwa M11X och MT-4☆
ÄNTLIGEN klar med min 5b
nu finns vi på facebook oxå, RcBash.se

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

Re: Programmerbar tändning

Post by Rallyfinnen » 17 Feb 2010, 19:38

Jag slänger upp koden här, så om någon känner att dom har koll på den så är det bara att hojta till! :geek: :)

void main() {
const char tspark[]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 10, 12, 12, 12, 14, 14, 14, 17, 17, 17, 20, 20, 20, 22, 23, 25, 25, 28, 28, 31, 31, 34, 34, 37, 38, 40, 41, 44, 44, 44, 48, 48, 48, 51, 52, 52, 53, 56, 56, 57, 57, 61, 61, 62, 62, 63, 63, 63,
64, 64, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 106, 106, 107, 107, 108, 108, 109, 110, 110, 111, 111, 112, 112, 113, 113, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 120, 120, 121, 121, 122, 122, 123, 123, 124, 125, 125, 126, 126, 127, 127, 128, 128, 129, 130, 130, 131, 131, 132, 132, 133, 133, 134, 134, 135, 136, 136, 137, 137, 138, 138, 139, 140, 140, 141, 141, 142};
short int spark=0;
unsigned int tspk, t0,t1,low;
unsigned int ofc; //Holds number of overflows

const unsigned int LowDelay=25; //Delay <1832 RPM, in degrees

const unsigned int ld=360/LowDelay; //Dont change this
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
INTCON = 0x00; //Disable interrupts +Resets interrupt flags
TMR2 = 0; //Reset timer2
TMR0 = 0; //Reser timer0
PR2 = 255; //This is how far timer2 counts before overflow
T2CON = 0x07; // start TMR2 counter 1:16

if (PORTB.F3) test(); //If test jumper is on jump to test function

while(1){ //Loop forever
ofc=0; //Reset overflow counter
INTCON = 0x00; //Disable interrupts +Resets interrupt flags
while(PORTB & 0x02){ //Wait for low pulse on Hall switch
if (INTCON&4) { //Overflow
ofc++; //Increase overflow counter
INTCON = 0x00; //Resets interrupt flags
}
spark = 1;
} //North pole of magnet has passed
if(spark){
t0 = TMR0;
TMR0 = 0; //Start new rev count
if(ofc > 0) { //Overflow timer0, we have < 1832 RPM
if ( ofc >= 36) ofc=36; //Min RPM 50 to avoid big calculations
low=ofc*ld; //Simplified calculation, gives about 25 degrees
delay_cyc (low); //extra delay based on overflow counter
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low); //Repeat 16 times - prescaler
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
} //max255 -> 2550 cycles
tspk = tspark[t0]; //use table lookup for spark delay
T2CON = 0x07; //start TMR2 counter 1:16
TMR2= 0; //clear spark timer
while(TMR2 < tspk);//loop until timeout to send spark
PORTB &= 0xee; //sends a ground to the SCR gate
delay_us(56); //56 us delay
PORTB |= 0x11; //ground off the SCR
spark = 0;
} //if(spark)
} //while(1)
} //main

////////////////////////////////////////////////////////////////////
//Notes
//
// ; At a engine speed of 1200 RPM;
// ;
// ; 1200 / 60 = 20 revs per second
// ; 1 / 20 = 50mS per rev
// ; 1 rev = 360 degrees
// ;
// ; 36 degrees at 1200 RPM = (36 / 360) X 50 = 5mS
// ;
// ; 100uS loop time
// ; 4MHz clock / 4 = 1MHz instruction cycle
// ; cycle time = 1/1MHz = 100uS
// ; 100uS/100uS = 100 cycles
// ; prescaler set to divide by 4
// ; preset TMR0 = 231, when = 0 = 100uS
// ; 231 to 255 = 25 x 4(prescaler) = 100


// ---O---
// RA2 o o RA1
// RA3 o o RA0
// RA4 o o RA7
// RA5 o o RA6
// VSS o o VDD
// SCR RB0 o o RB7
// Hall input USART RX RB1 o o RB6
// Test hi/low USART TX RB2 o o RB5
// Test on/off RB3 o o RB4 Strobelight
// -------

//History:
//1.0 1832fix not working

Vad jag är ute efter är att höja noggrannheten på timingen. Som det är nu verkar den vara i steg på 100us, men jag ser gärna att man kommer ner mot 10us steg. Jag har markerat timern som (jag tror) används, för detta, jag antar att man kan höja upplösningen genom att ändra frekvensen på timern?
Samtidigt måste ju då 'mappen' skalas om för att matcha timern..(jag behöver info om vad skalningen blir isåfall)

Nu verkar 'reaktionstiden' för processorn vara 60us(med alla värden i mappen satta till 0), jag vet inte hur detta påverkas av ändringar på upplösningen?

Är ocksä intressant vad maxtiden blir om man höjer upplösningen? Man borde helst komma upp i ms-området för att kunna backa tändningen ordentligt på låga varv!

Ja, och processorn är en PIC16F628A!
Någon som känner sig manad? ;)
Last edited by Rallyfinnen on 17 Feb 2010, 19:40, edited 1 time in total.

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

Re: Programmerbar tändning

Post by Jimmy » 17 Feb 2010, 19:39

Vilket språk är detta :hmm: :cheesy:
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 » 17 Feb 2010, 19:41

Finska! :D

Någon typ av c-kod borde det vara!

User avatar
Lusse
Posts: 9387
Joined: 30 Oct 2009, 21:10
Phone Number: 0739951152
Location: Göteborg

Re: Programmerbar tändning(programmerare sökes!)

Post by Lusse » 17 Feb 2010, 19:54

Hoppas det är nånn som förstår!... Jag fatta inget.... :hmm:
HPI BAJA 5B SS.Nu Kraken class1 True Scale Kit, Styr med Sanwa MT-4S

User avatar
Mats B
Posts: 5251
Joined: 30 Oct 2009, 21:53
Location: Reftele...Sveriges faktiskta mittpunkt ;)

Re: Programmerbar tändning(programmerare sökes!)

Post by Mats B » 17 Feb 2010, 19:56

Tror det kallas för gammel Grekiska eller kanske för Heroglyfer...men jag är ju inte helt säker... :hmm: :hmm: :hmm: :doh: :doh: :ot:
MCD UltimateCarbon K600 TWIN

User avatar
J.A racing
Posts: 10307
Joined: 30 Oct 2009, 20:36
Location: Trosa

Re: Programmerbar tändning(programmerare sökes!)

Post by J.A racing » 17 Feb 2010, 20:28

Tror det var en nolla för lite! :cheesy:
PORSCHE GT3 RSR "Projektet".

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

Re: Programmerbar tändning(programmerare sökes!)

Post by Rallyfinnen » 17 Feb 2010, 21:33

Nu har jag kollat lite med en kompis, och det blir att testa dessa två alternativ:
T2CON = 0x05; //start TMR2 counter 1:4
T2CON = 0x04; //start TMR2 counter 1:1

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

Re: Programmerbar tändning(programmerare sökes!)

Post by Rallyfinnen » 18 Feb 2010, 17:07

Arbetet framskrider sakta..
Jag har lyckats förbättra upplösningen med att ändra timern till 1:4, men det begränsar istället max fördröjning av gnistan på låga varv till ca 1ms..
Kan väl kalla detta version 1.1 av koden, får se om man kan få till det så man använder en 16bit timer istället, då skulle det blir perfekt! :drool:

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

Re: Programmerbar tändning(programmerare sökes!)

Post by Rallyfinnen » 19 Feb 2010, 18:45

Jag tror jag lyckats göra om koden själv nu ;)

Här kommer lite bilder från mina laborationer!

Trigger:
Image
Image

Testbänk :)
Image

Programmering:
Image

User avatar
S 500 R
Hedersmedlem
Posts: 20696
Joined: 30 Oct 2009, 19:21
Location: Mölndal

Re: Programmerbar tändning(programmerare sökes!)

Post by S 500 R » 19 Feb 2010, 18:55

Så jäkla ballt på en liten RC motor...

Ska du inte med till vimmerby så man får se detta???
☆Styr med: Sanwa M11X och MT-4☆
ÄNTLIGEN klar med min 5b
nu finns vi på facebook oxå, RcBash.se

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

Re: Programmerbar tändning(programmerare sökes!)

Post by Rallyfinnen » 19 Feb 2010, 19:25

Förhoppningsvis ;)

Med lite tur så har jag brorsans bänk här till nästa helg också, så då ska jag förhoppningsvis kunna se vad tändningen gör för skillnad ;)

Någon som vet om det finns 'offset-tappar' för svänghjulen till dessa motorer så man får en lite annan vinkel på tändningen?
Vet inte hur jag ska förklara det..men jag har för mig jag sett sådana någonstans, men kommer inte ihåg var...

User avatar
crh
Posts: 129
Joined: 30 Oct 2009, 21:19
Phone Number: 0709998877
Location: Örnsköldsvik

Re: Programmerbar tändning(programmerare sökes!)

Post by crh » 19 Feb 2010, 19:53

Behöver du mer än det som gick att flytta spolen?
En annan väg att gå kan ju vara att göra ett nytt spår i svänghjulet för kilen, men då blir det att nolla om TDC.
Tror du att det kan vara risk att det blir dålig kraft i gnistan om du "håller" gnistan för länge?
FG MBPro

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

Re: Programmerbar tändning(programmerare sökes!)

Post by Rallyfinnen » 19 Feb 2010, 20:23

Jag funderar på andra alternativ till att flytta spolen, det är ju enklare att bara byta sprinten istället för att kapa och greja för att flytta spolen.. Det ska nog bli mer än en motor med denna tändning, om allt går bra. Då vill man ju göra det så enkelt som möjligt! En offset sprint skulle vara det optimala om tändningen behöver flyttas fram. Det vet jag ju inte om det behövs än, men jag antar att åtminstone vissa motorer kan dra nytta av det, så det är bra om möjligheten finns, om inte annat, så bara för att prova.

Det är ju mest på låga varv som det blir lång fördröjning (flera ms i tid) av gnistan, och jag har inte märkt några problem med misständningar eller dylikt. Verkar som spolen lagrar energin tillräckligt bra! :thumbsup:
Backar man tändning på höga varv så är det ändå bara frågan om us, så då ska det inte vara några som helst problem!

Dessutom har jag lite större gap mellan svänghjul och spole än normalt på testmotorn, eftersom jag inte har tillräcklig justermån på hålen.. detta ger antagligen att spolen laddas lite sämre i detta fall.

Post Reply

Who is online

Users browsing this forum: No registered users and 8 guests