Electronic Projects, forums and more.

Go Back   Electronic Circuits Projects Diagrams Free > Electronics Categories > Micro Controllers


Micro Controllers Discuss all aspects of micro controllers - building them, coding them, etc. All controllers are welcome - PIC, BASIC, Z8 Encore!, etc.

Reply
 
Tools
Old 12th March 2007, 11:43 PM   #31
Default

Quote:
Originally Posted by danci1973
I think your problem is in the ground - what ground did you use when you measured the voltages? I think you should use the black/white wire on the gear position switch connector, not just any ground on the bike.

Attached is a picture of how I think the Suzuki gear position switch is wired.

D.
I'm taking the ground from somewhere in the instrument cluster.

I'll try to change the ground...

See attached the bike's diagram

Thank you
Attached Thumbnails
Speedometer-diagram.jpg  
Kiko is offline  
Old 13th March 2007, 06:35 AM   #32
Default

Quote:
Originally Posted by Kiko
How did you find the constants assigned below?

Symbol _1_Min = 1.243
Symbol _1_Max = 2.355

Symbol _2_Min = 2.356
Symbol _2_Max = 3.194

Symbol _3_Min = 3.195
Symbol _3_Max = 3.709

Symbol _4_Min = 3.710
Symbol _4_Max = 4.307

Symbol _5_Min = 4.308
Symbol _5_Max = 4.674

Symbol _6_Min = 4.675
Symbol _6_Max = 4.810

Symbol _N_Min = 4.811
Symbol _N_Max = 5.245
Heres your real life data:
Quote:
1st gear = 1.243v to 2.586v
2nd gear = 2.124v to 3.210v
3rd gear = 3.178v to 3.486v
4th gear = 3.633v to 4.400v
5th gear = 4.215v to 4.887v
6th gear = 4.461v to 4.942v
Neutral = 4.678v to 5.245v
As they overlap, I had to find the "Middle" between each set. Take the First Gear for example:

1st 1.243v - 2.586v
2nd 2.124v - 3.210v

Now the "Overlap" from 1st too 2nd is 2.586 minus 2.124 = 0.462V

As I now know how much they overlap by, I simply divide this by 2 so I can split the overlap evenly 0.462 / 2 = 0.231

And now add that value to the lower voltage 2.124 + 0.231 = 2.355

There you have it - the "Middle" point for the overlap between gears

I did however modify the gap between 2nd to 1st as it was not the same (too small) and figured it was a miss read
__________________
digital-diy.com - Hobby microcontroller projects and tutorials. Assembly, PICBasic and C examples.

gramo is offline  
Old 13th March 2007, 01:42 PM   #33
Default

Quote:
Originally Posted by gramo
Heres your real life data:


As they overlap, I had to find the "Middle" between each set. Take the First Gear for example:

1st 1.243v - 2.586v
2nd 2.124v - 3.210v

Now the "Overlap" from 1st too 2nd is 2.586 minus 2.124 = 0.462V

As I now know how much they overlap by, I simply divide this by 2 so I can split the overlap evenly 0.462 / 2 = 0.231

And now add that value to the lower voltage 2.124 + 0.231 = 2.355

There you have it - the "Middle" point for the overlap between gears

I did however modify the gap between 2nd to 1st as it was not the same (too small) and figured it was a miss read

Allright, thank you
Kiko is offline  
Old 13th March 2007, 08:13 PM   #34
Default

I said i modified 2nd to 1st, I meant 2nd to 3rd
__________________
digital-diy.com - Hobby microcontroller projects and tutorials. Assembly, PICBasic and C examples.

gramo is offline  
Old 14th March 2007, 12:45 AM   #35
Default

Quote:
Originally Posted by gramo
I said i modified 2nd to 1st, I meant 2nd to 3rd
Ok I understood, but one more question my friend, in your simulation you told the voltages (sine wave) for each gear are 10khz from min to max, Why? and don't you think it's better to put a little delay between the readings for speed because as it's a digital reading any little change on the speed will be displayed on LCD but not on the original speedometer?

Rgds
Kiko is offline  
Old 14th March 2007, 06:33 AM   #36
Default

Quote:
Originally Posted by Kiko
Ok I understood, but one more question my friend, in your simulation you told the voltages (sine wave) for each gear are 10khz from min to max, Why? and don't you think it's better to put a little delay between the readings for speed because as it's a digital reading any little change on the speed will be displayed on LCD but not on the original speedometer?

Rgds
I chose a frequency of 10K as a random "out there" number, to simulate noise from other devices on motorbikes circuits, it could be much less that.

There is no delay in the routine - as I 'average' multiple samples with the following code


Code:
	Result = 0
	Total = 0
	X = 0
	
	Repeat
	
		  Result = ADIN 0
		  Result = Result * 2
		  Total = Total + Result
		  
		  Inc X
	
	Until X = 15
	
	Total = Total / 15
	
	Total = Total * 5 / 1023
This way, I can average out and slew noise from my final result. Lets say for example my 15 readings were the following (The bike is in 1st gear):


1.25, 1.0, 2.3, 2.7, 1.1, 1.5, 1.7, 1.77, 1.79, 1.2, 2.4, 2.45, 1.5, 1.6, 2.8

The samples in bold were "out of range" and could have been produced from noise/spikes from else where in the motorbikes circrtry.

But as I have taken 15 samples, I can now find the average.

So all those numbers added together gives: 27.06
The average is 27.06 / 15 = 1.804 Volts

And this 'filters' out the noise - no need for a delay persay - the time that 15 samples takes is the delay. If you find that this speed is too fast, then put a simple delay in the repeat loop, eg

Code:
	Result = 0
	Total = 0
	X = 0
	
	Repeat

		  DelaymS 1
	
		  Result = ADIN 0
		  Result = Result * 2
		  Total = Total + Result
		  
		  Inc X
	
	Until X = 15
	
	Total = Total / 15
	
	Total = Total * 5 / 1023
And that will help generate a broader time scale for your samples
__________________
digital-diy.com - Hobby microcontroller projects and tutorials. Assembly, PICBasic and C examples.

gramo is offline  
Old 14th March 2007, 12:35 PM   #37
Default

Quote:
Originally Posted by Kiko
I'm taking the ground from somewhere in the instrument cluster.

I'll try to change the ground...

See attached the bike's diagram

Thank you
Looks similar to my bike's diagram. Does your bike have three wires to GPS (gear position switch)?

The voltages from the gear position switch should be 'stable' and pretty much spot on as the ECU is using those to choose different ignition and/or fuel maps for first three gears (to prevent 'accidental' wheelies, I guess) and to enforce a speed limit in the top gear (on the GSXR-1000 and Hayabusa).

D.
danci1973 is offline  
Old 14th March 2007, 11:02 PM   #38
Default

Quote:
Originally Posted by gramo
I chose a frequency of 10K as a random "out there" number, to simulate noise from other devices on motorbikes circuits, it could be much less that.

There is no delay in the routine - as I 'average' multiple samples with the following code


Code:
	Result = 0
	Total = 0
	X = 0
	
	Repeat
	
		  Result = ADIN 0
		  Result = Result * 2
		  Total = Total + Result
		  
		  Inc X
	
	Until X = 15
	
	Total = Total / 15
	
	Total = Total * 5 / 1023
This way, I can average out and slew noise from my final result. Lets say for example my 15 readings were the following (The bike is in 1st gear):


1.25, 1.0, 2.3, 2.7, 1.1, 1.5, 1.7, 1.77, 1.79, 1.2, 2.4, 2.45, 1.5, 1.6, 2.8

The samples in bold were "out of range" and could have been produced from noise/spikes from else where in the motorbikes circrtry.

But as I have taken 15 samples, I can now find the average.

So all those numbers added together gives: 27.06
The average is 27.06 / 15 = 1.804 Volts

And this 'filters' out the noise - no need for a delay persay - the time that 15 samples takes is the delay. If you find that this speed is too fast, then put a simple delay in the repeat loop, eg

Code:
	Result = 0
	Total = 0
	X = 0
	
	Repeat

		  DelaymS 1
	
		  Result = ADIN 0
		  Result = Result * 2
		  Total = Total + Result
		  
		  Inc X
	
	Until X = 15
	
	Total = Total / 15
	
	Total = Total * 5 / 1023
And that will help generate a broader time scale for your samples
OK as we say down here in Brazil "living and learning", so can I do the same with speed code below (your code)?

KMHT=Counter PORTC.7, 500 ' I increased the value of period from 250 to 500 but the reading still too sensitive
If KMHT=0 Then Goto Display_speed
Temp_Float=KMHT
Temp_Float=(Temp_Float*2)*8 ' I round 7.2 to 8 which gave me a more accurate speed reading
KMH=Temp_Float/10
KMHT=KMH

Display_speed:
If KMH_Last<>KMHT Then
Print At 1, 1, DEC3 KMHT
KMH_Last=KMHT
EndIf
GoTo Start

Thank you again for your valuable help
Kiko is offline  
Old 14th March 2007, 11:42 PM   #39
Default

Quote:
Originally Posted by danci1973
Looks similar to my bike's diagram. Does your bike have three wires to GPS (gear position switch)?

The voltages from the gear position switch should be 'stable' and pretty much spot on as the ECU is using those to choose different ignition and/or fuel maps for first three gears (to prevent 'accidental' wheelies, I guess) and to enforce a speed limit in the top gear (on the GSXR-1000 and Hayabusa).

D.

Yes sir, it has 3 wires and I took the signal from "P" wire near the ECU connector as you can see on the diagram. And as I post before I'm almost sure I have a GPS or generator or regulator problem, first because the voltages overlaps and second because on the bench the circuit works very nice and the only thing I can see strange on this bike is that it drinks a lot of fuel and it's fast, so it may be a indicative of GPS problem and because of that the ECU chose a higher gear (5th) to deal with. I don't know...

I don't think the Suzuki TL1000 has a speed limit but I'm sure it has a RPM limit above 10500 RPM with load.

Thank you
Kiko is offline  
Old 17th March 2007, 01:06 AM   #40
Default

Quote:
Originally Posted by danci1973
Looks similar to my bike's diagram. Does your bike have three wires to GPS (gear position switch)?

The voltages from the gear position switch should be 'stable' and pretty much spot on as the ECU is using those to choose different ignition and/or fuel maps for first three gears (to prevent 'accidental' wheelies, I guess) and to enforce a speed limit in the top gear (on the GSXR-1000 and Hayabusa).

D.
Just for information, I changed the ground of the circuit that I took from somewhere of the instrument cluster and now the circuit is very stable, so the problem was GROUND. The Gear indicator is working perfect... But not the speedometer that when I turn the ignition ON it shows me 10 Km/hr and in 30Km/h shows 60Km/hr and so on, with more speed the difference between analog and digital increase.

I had to change the resistors of the voltage divider from 1k to 10k because with 1K the voltage on the lcd indicator drop about 1.5 Volts.
Kiko is offline  
Old 17th March 2007, 06:40 AM   #41
Default

Code:
	Result = 0
	Total = 0
	X = 0
	
	Repeat

		  DelaymS 1
	
		  Result = ADIN 0
		  Result = Result * 2
		  Total = Total + Result
		  
		  Inc X
	
	Until X = 100
	
	Total = Total / 15
	
	Total = Total * 5 / 1023
Change the number of samples too 100 like I did above, you could even go higher, but it will slow down your program. This should help smooth the Speedo

Leave 7.2 in this part, dont round it

Code:
	Temp_Float = KMHT
	Temp_Float = Temp_Float * 4 * 7.2
        KMH =  Temp_Float / 1000
	KMHT = KMH
The issue with the miss reading could be the impedance is too high for the ADC circuitry in the PIC. The datasheet specifies 2.5K Max impedance. This is to allow the internal capacitors on the PIC to charge and discharge properly, try use 2.2K resistors on the voltage divider.

Let me know if that helps
__________________
digital-diy.com - Hobby microcontroller projects and tutorials. Assembly, PICBasic and C examples.

gramo is offline  
Old 18th March 2007, 08:17 PM   #42
Default

Quote:
Originally Posted by gramo
Code:
	Result = 0
	Total = 0
	X = 0
	
	Repeat

		  DelaymS 1
	
		  Result = ADIN 0
		  Result = Result * 2
		  Total = Total + Result
		  
		  Inc X
	
	Until X = 100
	
	Total = Total / 15
	
	Total = Total * 5 / 1023
Change the number of samples too 100 like I did above, you could even go higher, but it will slow down your program. This should help smooth the Speedo

Leave 7.2 in this part, dont round it

Code:
	Temp_Float = KMHT
	Temp_Float = Temp_Float * 4 * 7.2
        KMH =  Temp_Float / 1000
	KMHT = KMH
The issue with the miss reading could be the impedance is too high for the ADC circuitry in the PIC. The datasheet specifies 2.5K Max impedance. This is to allow the internal capacitors on the PIC to charge and discharge properly, try use 2.2K resistors on the voltage divider.

Let me know if that helps
OK so let me try to explain what the problem is now:

I'm not having anymore problems with the gear indicator so when I changed the ground the problem has been fixed. The gear indicator is working perfect.

When I power the circuit installed in the bike the speed indicator is zero as the bike is stoped (no speed).

When I start the engine the speed indicator shows 10km/hr but it's not smooth and with the increase of the speed it shows incorrect readings like I posted before.

The speed sensor this bike uses is attached as reference, please see if I took the signal from the correct wire.
Attached Thumbnails
Speedometer-speed-sensor.jpg   Speedometer-speed-sensor-test.jpg  
Kiko is offline  
Old 19th March 2007, 09:13 AM   #43
Default

Did you change the voltage divider to use 2.5K resistors?

Perhaps it’s meant to be the voltage difference between the two wires, or just the one on the right, I have no idea as I don’t have your manual.
__________________
digital-diy.com - Hobby microcontroller projects and tutorials. Assembly, PICBasic and C examples.

gramo is offline  
Old 19th March 2007, 01:11 PM   #44
Default

Am I right in thinking that the ADC part is working correctly and the problem is with the pulsed speed input?

Assuming I'm correct on the above assumption, it sounds like you are getting noise interference. Try connecting a 1K resistor from the sensor to the pic and a 0.1uF capacitor from pic to ground. If you still get noise then increase the capacitor , if you get no reading then reduce it. If it only works at certain speeds then post back.

Mike.
Pommie is online now  
Old 19th March 2007, 02:20 PM   #45
Default

Yes Mike you're right... I'll try to do the following (attached) see if you agree.

What's the max signal amplitude that the PIC can deal with? Because the signal from speed sensor is 0 to about 300 hz 12 Volts pulsed and I think the circuit attached is going to lower the pulsed voltage to 5 V.


Thanks
Attached Thumbnails
Speedometer-input.jpg  
Kiko is offline  
Reply

Tags
speedometer

Thread Tools
Display Modes


Similar
Title Starter Forum Replies Latest
digital speedometer using AT90S2313 fever Micro Controllers 57 29th January 2008 07:45 PM
Speedometer Project Help ADAM117 Electronic Projects Design/Ideas/Reviews 2 8th December 2006 06:00 PM
Pulse divider for a Speedometer spestis Electronic Projects Design/Ideas/Reviews 3 25th July 2006 03:17 AM
Tachometer and Speedometer replies Kiko Micro Controllers 0 26th April 2004 01:57 AM
Electronic Speedometer using stepper motor roryp General Electronics Chat 6 10th April 2003 01:06 PM



All times are GMT. The time now is 12:35 AM.


Electronic Circuits  |  Learning Electronics
eXTReMe Tracker