Shiftligt till MC

Berätta om dina pågående projekt.
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Shiftligt till MC

Inlägg av Nisse »

Två trådar blir en :D

Denna från Idébanken:
http://www.elektronikforumet.com//forum ... hp?t=12017

Och denna från Microcontroller:
http://www.elektronikforumet.com//forum ... hp?t=12029

Har nu lindat mig en spole runt kärnan. ca 2.5 meter koppartråd blev 70 varv.

Bild

Nu skall jag rulla ut hojjen och släpa ut oscilloskopet.

/ Nils
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

Bild

Och såhär blev resultatet av mötet mellan min MC och oscilloscopet.

Det jag nu försöker göra är att tolka det hela.

Pulserna är ungefär 10-15 volt höga och det borde gå bra att detektera.

Jaha, frekvensen då....
Sweep Time är 5 ms.
8 rutor mellan pulserna ger 40 ms.
40 ms ger 25 Hz
25 Hz ger 1500 pulser/minut
1500 pulser/minut ger 3000 RPM (fyrtakt)

3000 RPM.. Nä motorn går på tomgång....

Varför, någon som har en teori eller ännu hellre fakta :?:

Mvh
Nils
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Om du räknar ut förväntad periodtid och ställer in tidbasen efter det kanske du kan se något annat än det som du visar nu?
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Precis vad jag också skulle föreslå... finns det några pulser där de _borde_ vara? Kan det vara så att det du uppmätt är en jämn multipel av det riktiga varvtalet? Följer din mätningar varvtalet öht?
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

Mätningarna följer varvtalet bra.
Vet ej exakt vad tomgångsvarvet är. Gissade på 800 RPM. Det ger en pulstid på 150 ms. Fipplade med tidbasen men såg bara samma pulser fast olika många gånger. :?

// Nils
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Vad är det för motor?
Ett tomgångsvarv på nära 1500 rpm är vanligt på motorcyklar.

Många tändsystem använder s.k. wasted spark. Det innebär att tändstiftet gnistar varje varv. Blir enklare att göra ett sånt tändsystem eftersom att man behöver ha en kamaxelgivare för att kunna gnista varannat varv. Det gör inte heller någon skada eftersom gnistan under avgastakten inte antänder något bränsle.

Varför kommer det två pulser ganska tätt till höger i bilden?
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

Vet ej varför det kommer två pulser. Men om jag kör med längre tidbas så man ser mer så ser alla pulser ut så, dvs. en mindre tätt följd av en större.

Motorn är en 660 cm3 enstånka från Yamaha.
Hmmm, WasteFire, tänkte inte på det... Då skulle det ju kunna stämma, men 1500 RPM tomgång låter mer som min gamla GSX750.

Får lägga ned lite energi i att forska fram vad tomgångsvarvtalet är på hojjen och även om den använder WasteFire-metoden. Blir till att besöka en viss verkmästare i morgon och se vad han kan plocka fram för information.

Kanske skulle ta och prova konstruktionen på frugans bil (själv kör jag diesel). Den är gammal och har rotor, dvs definitivt inte WasteFire.

Mvh
Nils
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Oj!! Jag har också en sån motor! Min sitter på en MZ Mastiff -98.
Tomgångsvarvet på min är 1500 rpm. Sitter inte någon kamaxelgivare på den.

Kom på nu att den extra pulsen skulle kunna komma från när spänningen kopplas in på tändspolen. Om du har två kanaler kan du kolla spänningen över primären på tändspolen på den andra kanalen så ser du om det är så.
Användarvisningsbild
Biker
Inlägg: 6121
Blev medlem: 23 november 2005, 04:51:36

Inlägg av Biker »

Jag har en instrumentering med en acewell som grund och där behöver man bara linda 2-3 varv vanlig tråd runt tändkabeln - alt koppla in den på primären direkt.
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

Nu har jag bekräftat att tomgångsvarvtalet faktiskt är 1300-1500 RPM och att tändsystemet kör WasteFire.
Tyvärr stod det ingenstans i hela servicemanualen vid vilket varvtal tändningen klipps :( Det får jag alltså mäta upp.'

Näää nu skall jag sätta mig och koppla upp det här: http://us1.webpublications.com.au/stati ... 78_5lo.jpg minus själva blinkdelen.
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

OK, nu behöver jag hjälp.

Analogteknik är inte min starka sida :?

Har googlat runt och provat diverse kopplingar osv, men är lite fast.
Vad jag behöver är ett okomplicerat litet kretsschema som om jag kopplar upp det omvandlar pulserna man kan se på oscilloskopet längre upp här i ämnet till TTL-nivåer som kan köras in i min processor. Spänningsmatningen är 5 volt.

Tackar på förhand...

Mvh
Nils
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Om pulserna är på 15 V behöver det inte vara mer avancerat än två motstånd och två switchdioder innan ingången på processorn.

Spänningsdela signalen så att dom stora pulserna blir tillräckligt höga för att räknas som etta medans bruset är så lågt att det räknas som nolla. Använd t.ex. 10k och 4,7k. Värdena kanske får justeras om brus kommer in.
Sätt ena dioden mellan jord och ingången med "pilen" mot ingången. Sätt andra mellan ingången och +5V med pilen mot +5V.

Den falska pulsen kanske du får ta hand om i mjukvara eftersom den verkar lika kraftig som de andra två.

Mitt varvstopp är på 7500 rpm.
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

Det låter ju som en enkelt och bra lösning. Skall provas så snart som möjligt. Frågan är ju dock om pulsen är tillräckligt lång?

Mvh
Nils
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Minsta detekterbara pulstid för externt avbrott på en microprocessor brukar vara en eller två clockcykler tror jag, dvs 125-250ns om du t.ex. kör med 8Mhz kristall. Skulle pulserna vara kortare än så borde de inte ha synts på oscilloskopet tycker jag. En pulstid på 1us skulle innebära 1/5000-dels ruta på oscilloskopbilden ovan, men visst är den bredare än så?
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Inlägg av Nisse »

Lösningen med spänningsdelning och två dioder funkade bra. Jag använde en 1 M trimpot som spänningsdelare och två stycken 1N4148. Hade det hela kopplat till en 74HCT14 och den triggade alldeles utmärkt. Två sådana kommer få vara buffert in till min Tiny15.

I ett ögonblick av inte allt för stor inteligens så bakade jag in hela min spole i smältlim. Nöjd med att den nu var skyddad och hade bra anslutning fick jag plötsligt tillbaka min tankeförmåga och insåg mitt misstag. Smältlim smälter ju vid värme.... Motorn på min MC blir varm.... :shock: Vad har jag gjort?

Bild

Någon som kan ge tips på något annat man kan baka in spolen i för att ge bra mekaniskt skydd?

Nu är också programmet uppdaterat. Skall löda ihop en prototyp på ett exprimentkort och provköra.

Kod: Markera allt

// Shiftlight XT660R

.include "tn15def.inc" 

.def Counter = r17	;Räknaren i register 17
.def Temp = r16		;Register 16 används till lite av varje

 
.org 0x0000 
rjmp Reset

//--- Interrupt Vector ------------------------------------------------- 

.org INT0addr
rjmp ExtInt			;Extern Interupt INT0

.org OVF1addr
rjmp TimerInt		;Intern Interupt Timer 1 overflow

Reset: 

//--- Init -------------------------------------------------------------- 

	ldi    	Counter,	0x00		; Nollställ räknaren
   	ldi 	Temp,		0b00111011	; Sätt PB2 som ingåmg och övriga som utgångar
   	out		DDRB,		Temp
   	sbi		PORTB,		PORTB0			; Sätt PB0 till 1
   	ldi    	Temp,		0b00000011  ; Sätt att trigga på Stigande flank
   	out    	MCUCR,		Temp
   	ldi    	Temp,		0b01000000  ; Aktiverar extern interupt INT0
   	out    	GIMSK,		Temp

//-- Sätter timer och overflow till att ge interupt ca 6,1 gånger/sec vid CK 1,6 MHz
//-- 1600000/10246 ~ 6,1
   
   	ldi 	Temp, 		0b00001111	; Sätt Timer1 prescaler till CK/1024
   	out 	TCCR1, 		Temp
	ldi 	Temp,		0			; Nollställ timer
	out 	TCNT1,		Temp
	ldi 	Temp,		0b00000100	; Aktivera interupt på timer1 overflow
	out 	TIMSK,		Temp
	sei


Loop:
	rjmp 	Loop

//-- Extern interupt PB2 -----------------------

ExtInt:
	inc 	Counter					; Öka räknaren
	reti

//-- Intern Timer Interupt ---------------------------
//-- Testar med 3660 RPM kommer senare ökas till ca 7000 RPM 

TimerInt:
	ldi 	Temp, 		10  		; 3660 RPM/60/6,1 ger 10
	cp 		Counter, 	Temp
	brsh 	Light					; Om räknaren över hoppa
	sbi 	PORTB, 		0    		; Släck lysdiod
	ldi 	Counter, 	0 			; Nollställ räknare
	reti

Light:
	cbi 	PORTB, 		PORTB0		; Tänd lysdiod
	ldi 	Counter, 	0 			; Nollställ räknare
	reti
För att finsjustera kan jag sedan sätta timer1 till ett högre värde än noll varje gång timer interupt inträffar.

// Nils
Skriv svar