Varvräknare med PIC. (Många bilder)

Berätta om dina pågående projekt.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Varvräknare med PIC. (Många bilder)

Inlägg av v-g »

Har mixtrat lite under dagen och detta är resultatet.

Började så smått inomhus:

Översiktsbild (pilen visar på hallswitchen):
Bild

Såhär sitter magneten på borrmaskinen:
Bild

Så en liten film (2MB)hur det ser ut när man kör. Lysdioderna är till för att visa lite statusar så man vet när signalen når fram. Lite vanskligt att hålla i kamera och köra borrmaskin samtidigt :roll:

I filmen ovan noteras maxvarvet till 2426 vilket jag tycker stämmer bra med denna bild:
Bild


Men hur vet man att detta stämmer med verkligheten? Tänkte jag kollar med Hz-mätaren på min multimeter. Tyvärr visade den helgalna värden antagligen beroende på att den vill ha jämna sinusvågor in.

Enda jag tänkte då var:
Bild

Motorrummet:
Bild

Såhär sattes sensorn fast (den vita pricken th ovanför kontakten är magneten):
Bild


Annan vinkel:
Bild

Självaste sensorn fastsatt på... ja det ser ni själva :D
Bild

Väldigt trist att kolla på bilder tyckte jag så jag "råkade" filma en provkörning.(5MB).

Som synes stämmer de överens väldigt bra(enligt mig). Varvräknaren är säkert inte helt 100% den heller då den är en elektronisk variant som drivs på generatorn på något vis.(Kan ju absolut inte vara PICen som räknar fel eller hur :D (upptäckte sen att jag startade timern lite för sent så det KAN ha berott på mjukvarufel :mrgreen:

Nåväl förrutom detta så fungerade det direkt på första försöket :whoho: så man få väl vara rätt nöjd ändå.

Efter provkörning upptäcktes dock detta:
Bild

Hade jag provkört mera hade det varit färdigprogrammerat med WISPen tills ny kabel införskaffats eller den gamla skarvats :)

Edit:Ändrade rubriken efter påpekan till tydligare.

Edit2:Utlovad kod:

Kod: Markera allt

Interupt_Code CODE	
HighInt:
	;Timer0 Interupt routine
	BTFSS INTCON,TMR0IF
		GOTO NOT_TMR0IF

	BCF T0CON,TMR0ON

	BSF Interupt_Status,5

	CLRF TMR0H
	CLRF TMR0L


	BCF INTCON,TMR0IF

NOT_TMR0IF

	;Timer1 Interupt routine
	BTFSS PIR1,TMR1IF
		GOTO NOT_TMR1IF

	BCF T1CON,TMR1ON

	BSF Interupt_Status,7

	BCF PIR1,TMR1IF;

NOT_TMR1IF

	RETFIE	FAST

Main_CODE CODE
Main
	BTFSC ALPS_BUTTON	;User must release button to continue
		BRA Main
	BSF T0CON,TMR0ON
Disp_Loop
	CLRF PORTC
	BTFSS Interupt_Status,5
		BRA Disp_Loop

	BCF T0CON,TMR0ON		;Stops timer0

	;Prepare to take a time
	CLRF TMR1L
	CLRF TMR1H
	CLRF Interupt_Status

	;Wait until magnet has passed sensor for first time
Wait_4_first_Pass
	BTFSC PORTC,2	
		BRA Wait_4_first_Pass

	BSF T1CON,TMR1ON		;Start timer1


Wait_4_first_Pass_Done
	BTFSS PORTC,2	
		BRA Wait_4_first_Pass_Done


	;Waits for the time or overflow
Wait_For_Time
	BTFSC Interupt_Status,7
		BRA Wait_For_Time_Done
	BTFSS PORTC,2
		BRA Wait_For_Time_Done

	BRA Wait_For_Time	;Loop

Wait_For_Time_Done


	BCF T1CON,TMR1ON		;Stops timer1

	BTFSC Interupt_Status,7	;If timer overflow
		BRA Error_Disp

	CLRF Interupt_Status

	MOVFF TMR1H, LUK_H
	MOVFF TMR1L, LUK_L

	CALL DIV32


	MOVFF WRD_H, NumH
	MOVFF WRD_L, NumL


	CALL Bin2Dec9999

	MOVLW 80h				;Move Cursor HOME
	CALL Send_Control


	MOVF TenK, W
	ADDLW b'110000'
	CALL Send_Byte

	MOVF Thou, W
	ADDLW b'110000'
	CALL Send_Byte

	MOVF Hund, W
	ADDLW b'110000'
	CALL Send_Byte

	MOVF Tens, W
	ADDLW b'110000'
	CALL Send_Byte

	MOVF Ones, W
	ADDLW b'110000'
	CALL Send_Byte
	BSF T0CON,TMR0ON		;Starts timer1

	GOTO Disp_Loop

Error_Disp
	MOVLW 80h				;Move Cursor HOME
	CALL Send_Control

	CLRF Interupt_Status
	MOVLW "E"
	CALL Send_Byte
	MOVLW "r"
	CALL Send_Byte
	MOVLW "r"
	CALL Send_Byte
	MOVLW "o"
	CALL Send_Byte
	MOVLW "r"
	CALL Send_Byte
	CALL Delay_Long

	BSF T0CON,TMR0ON		;Starts timer1

	GOTO Disp_Loop
Som tidigare påpekat är detta testkod och kanske felaktigt kommenterat samt osnyggt kodat :)
Senast redigerad av v-g 25 augusti 2007, 22:07:22, redigerad totalt 3 gånger.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31308
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Nice.

Hehe, fina håriga ben där... :D
peter555
Inlägg: 6047
Blev medlem: 12 februari 2006, 10:02:22

Inlägg av peter555 »

Jobbigt att ta in bilen i labbet. :)
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

MM:Nyrakade :)

Peter555:Var ju på G med en spänningsomvandlare men ptjaa kretsarna är köpta testade och sen vet jag inte vad det blev :humm: :vissla:

Stabil 5V i bilen borde vara standard :D

Edit:Lägger till istället för ett nytt:

Mixtrade vidare och för att få en stabil varvtalsreferens så monterade jag en magnet på en fläkt:
Bild
Hmm måste nog tvätta tangentbordet någon dag 8)


Displayen visar då detta:
Bild

Oscilloskopet för att kontrollera:
Bild

time/div är 5ms och knappt 6 rutor ger 2000 rpm. Eftersom det är KNAPPA 6 rutor så är det ju ännu exaktare eftersom PICen räknar ut 2012 rpm. :whoho:
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Vad menar du med "modemvarning!" att du har modem eller att folk med modulator demodulator ska passa sig??
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31308
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

För det mesta skriver folk *modemdödare*
Men 50k+ är väl inte så mycket. Tar ju bara 10sek per bild med modem :D

Räknar du pulser per sekund, eller tiden per puls, och sen 1/x?
Senast redigerad av MadModder 28 juli 2007, 22:35:27, redigerad totalt 1 gång.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Micke_s:Ändrat rubriken.

"Modemvarning" var menat så att mitt kabelmodem brinner om för många går in i denna tråd :wink:
Användarvisningsbild
mri
Inlägg: 1165
Blev medlem: 15 mars 2007, 13:20:50
Ort: Jakobstad, Finland
Kontakt:

Inlägg av mri »

Ni som bygger bilelektronik bör ta och läsa dokumentet Suppression of Transients in an Automotive Environment

Hittas med Google här
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Inlägg av BJ »

v-g: Får man fråga var lådan som det står "multi-pc controller" på kommer ifrån? Jag tittar lite efter såna knappar.
Det kanske är en gammal grej som inte går att köpa längre?
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

mri:Så var den kvällen räddad :)

BJ:Den köptes i Stockholm för några år sedan. En helt manuell KVM switch. Switchar bara monitor och mus/tgb-ps2. Har bara två datorer nu så EGENTLIGEN har jag tänkt byta den till en mindre men såna kostar ju och denna funkar :D
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Inlägg av BJ »

Okej. :)
Det är väl ingen som har sagt att du måste byta. :wink: Det är väl bättre att ha några ingångar över, än att det blir för lite. :)
Användarvisningsbild
maha
EF Sponsor
Inlägg: 1685
Blev medlem: 22 november 2005, 09:47:02
Ort: Jakobstad, Finland

Inlägg av maha »

Du den där rattmuffen var ingen lek... :wink:
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

maha:Rattmuff är ett måste. Höll på att gå åt fanders härmodan då jag fick rattmuffkrängning :shock:

Skönt som fasen när det är kallt ute slår värmesäten med hästlängder!
Användarvisningsbild
MNorrgren
Inlägg: 5815
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

Inlägg av MNorrgren »

Intressant tråd detta måste jag säga. Undrar om du har lust med att kanske dela schema och kod till detta projekt?
Har fösökt själv med en varvräknare men jag har inte fått itll koden rätt.

Har du lust så får du gärna lägga upp det i tråde, fler kasnke vill bygga eller om du vill skicka det i pm.

Micke
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Schemat existerar tyvärr inte :?

Men kopplingen är så enkelt gjord att du inte tror det. sensorn/hallswitchen är kopplad enligt beskrivningen i databladet. Dvs till + & - sen till PICen med ett pullupmotstånd (10KΩ)

Själva displayen är kopplad efter schemat som finns i denna tråd.

Koden har jag inte tillgänglig just nu pga att jag är på jobb. Men jag kan förklara den enkelt:
1. PICen väntar på att sensorn ska ge låg signal.
2. PIC startar timer. (prescale 1:8 )
3. PICen väntar på att sensorn ska ge hög signal (annars skulle den ju stoppa direkt pga att punkt 2 bara är en rad)
4. Vänta på att pinnen ska bli låg igen och stoppar då timern.
5. Dividera 15000000 med timerns värde.
6. Skriv ut till display.
7. Gå till punkt 1.

Koden i sig tror jag inte är mycket mer än 20-30 rader(minus display & divideringsrutiner) vill minnas att det rymdes på mindre än en sida. Om det är något du funderar över specifikt så fråga gärna så kan jag dela med mig av den bit av koden du behöver.

Anledningen att jag inte postar den här är att den är såpass enkel och eftersom detta bara var ett snabbt test så kommenterade jag inte alls noga. Rutinen för dividering hittade jag med google på några minuter.

Edit:SMiley som inte skulle vara en smiley.
Senast redigerad av v-g 25 augusti 2007, 22:10:02, redigerad totalt 2 gånger.
Skriv svar