Hi there, My name is Padelis, I am from Greece and this is my first post.A big thank to everyone here for the work you do on reprogramming stock ecus and the infos you give to the people. Now for my main question.I have done enough times in the past a gauge swap to older Suzukis and mainly carb suzukis.I put newer gauges to older suzukis.This is pretty much a simple swap for me to do, but me and everyone else have a problem with this.There is always a "check" in the lcd.There is a Black/Green wire going from the ecu to the gauge.This is the wire that transmits all the data, except the engine rpm, to the gauge.So far i think that i am right.Now for the problem.I don't have a newer suzuki nor a spare ecu from a new one so that i can measure the signal from the ecu to the gauge.This is where i need your help.What i need you to do is to measure that signal or even tell me what type of signal this is (TTL???) or even better what is the data that the ecu sends, so that i build a little dongle that will send this signal to the gauge.Maybe this is something easy, a few cmos ICs, or a little harder like a pic project.Eitherway i will build it and give people everything that is needed to know and build it. Oh god that was a long post.Anyway thanks in advance and i am waiting for your replies.
Is your plan to get all gauge displays like water temp and gear position to work or do you just want the minimum signal to keep it from throwing check codes? You are going to have to use something like a PIC either way
The signal is TTL serial data packet sent 4 or 5 times a second. I'm pretty sure there is a thread around here somewhere that discussed this for the Hayabusa gauge.
Thank you for your reply!Everything has to start from somewhere.Firstly i would like to stop displaying the "check".After that the most important thing to do is to display the temperature.Other gauge displays come second to that.One step at a time.Till the next reply i 'll do some search about the 1300 gauges in this forum.Thank you
Padelis
////Just a thought:What if i use a rs232 to ttl converter and a terminal program to send the data packet to the gauges??????How crazy can it be??I will have to write a script to do all the work in hyperterminal!!!!\\\\\\\\\\\
It is possible that gixer is protocol is slightly different... with busa the below works when the RS port set to 7812baud and outputting TTL signal. 8,n,1
Private Sub sendgaugedata()
Dim b(10) As Byte Dim i As Integer Dim c As Integer Dim l As Integer c = 0 i = 0
b(0) = 5 b(1) = 128 ' this is coolant temperature, around 30 is halfway if I remember correctly b(2) = 0 b(3) = 0 b(4) = 0 b(5) = 0 b(6) = 0 b(7) = 0
l = 8 i = 0 Do While i < (l - 1) c = b(i) + c If c > 256 Then c = c - 256 i = i + 1 Loop If c <> 0 Then b(l - 1) = 256 - c Else b(l - 1) = 0 End If
Dear Petrik, Thank you for your admition to the subject!! 2 or 3 years ago on a hayabusa streetfighter project, i replaced the stock gauges with gsxr1000 k4 gauges.Everything worked correctly.No "check" and everything functioned properly.So the protocol must be the same.What i don't know is, if difference in bits 16bit to 32bit, there is a change in the gauge protocol.I am not sure but we will figure it out pretty soon. So Petrik, this is what you get when you read the gauge output on the ecu? What terminal program did you used? On the end it says "Checksum error in sending gauge data". Is this because you disconnected the gauges or the line is loaded and can't "see" the gauges because of the interface you are using?Did you try to split the line with 2 resistors?Lets say 1K or even 10K? I wrote a script for hyperterminal with these commands.send them to the gauge but nothing .Is the baud rate important? Sorry for all these questions but i have to learn what and how!!!!! Thank you for your help Padelis
This is just a visual basic program that sends the gauge data to the gauge cluster. Very simple as you can see. Its running from a timer ,e.g. 250ms intervals.
__________________
When asking a question, you can also consider posting it to facebook:
I haven't used visual basic before.Only c/c++ and many years ago qbasic and pascal.it seems that i have to start learning visual basic. I am using max232 to do the convertion and if i am correct it supports different baud rates but the rs port isn't!!!I will have to wait till i get the usb dongle with the ftdi chip to make progress.I read a few online tutorials fro the visual basic and as far as i can understand the program is pretty easy.
Yes, you need an UART that can support baud rates required. Normal PC does not do that.
The above program can be converted to any language. On my sh 7086 board I had it converted to C. As you can see its all about sending a few bytes and then putting a checksum at the end so programming the UART for correct baud is going to be the biggest issue. Interval you send this could be e.g. every 250ms.
__________________
When asking a question, you can also consider posting it to facebook:
Back from complete silence! Finally the usb to rs232 arrived in my door today.I have been trying to program the gauge data with visual basic but with no success.I am using a form with 2 buttons and 2 textboxes.The first button starts the data send and the second one stops it.At first i got an error for the checksum.I then erased the checksum commands and the app runs but when i press the send button it hangs.
I got it to work finally.I erased the checksum commands from your code and it worked.I am having a few problems yet but it works.I have to press all the time the Send Data button.Anyway right now i am puting code for different gears, error codes and temperature.This works with my 2006 gsxr 600 gauges maybe it will work with others too but i don't know.I think that this is going to be a great gauge testing program.What do you think? Stay tuned as in a few days or as soon as i solve some problems with my code i am going to publish a program for everyone to test and see how it works with other model gauges.
Gauge Tester.rar This is a first version of the program.Select the com port (only usb to rs232 ttl), select gear, click "Open Post" and then "Send Data".Maybe you will have to click twice the Send Data but it will work.It works with my 2006 Gsxr 600 gauges.Connect the TXD out of the usb-rs232 to Black/Green wire of the harness.This is the wire that sends the gauge data.Stay tuned as i will implement Temperature changes and Error Code displaying.Know it will display 85F degrees and the gear you have selected.Many many thanks to RR and Petrik for their help.Waiting for your impressions and tests to see if this works on other gauges!!!
Now when you have that up and running, it may be fairly easy to convert the code to a small microprocessor card that can be run in the bike/car without a laptop.
__________________
When asking a question, you can also consider posting it to facebook:
I am still alive and i have finally found some time to dedicate to my bike!!!!! Sorry for not posting for so long time but i was working 25 hours a day!!! Now that i have time i continue working on my bike!!! I have placed the gauges and they work as expected!!! Now its time to build this dongle that i was saying a few months ago and see if it actually works!!! It wont be easy as i have to convert from visual basic to c in order to program the pic!!! I will post again as soon as i have made any progress on this dongle!!!
A few updates!!!!! I started coding a PIC18F family microprocessor!!! I have reached at a good point , i have coded the main code, and there are few things to figure out yet!!!First of all i need to figure out how to make it work at 7812 baud rate!!! This is an abnormal baud rate!! What should i do??? As soon as i fix this and confirm that it works, the "CHECK" should go away, i have to code the two A/D inputs for the temperature and the gear change!!!! Have done with my laptop, have to do it with a circuit!!!! Updates coming soon!!!! If any one can help i will appreciate it!!! Thank you very much, especially Petrik and Ridgeracer!!!!
this is great man , i'm trying to do the same with my R1. i bought 08 R1 gauge cluster and wanted to connect it to my 99 model R1. i didnt know the new model use some kind of serial communication between the gauge and the ecu , so i'm stuck here:( it transmits and recieves data trough single wire , i guess its rs232 protocol of some kind.
Hi!!! I think that this might be a ttl signal which is transmitted from the ecu!!! I am not sure if it is the same data stream as the suzuki but the signal should be ttl. You need to find out the baudrate and then somehow you need to download the datastream to your pc!!!! This is in sort words!!! Now for the suzuki dongle that i am building!! I have 90% of the code ready!! I need to program the chip and test it with the gauges!!! The "CHECK" should go away!!! If everything is ok i have to calculate the data and do the maths for the 2 adc ins!!! My next update will be made in about a week!! I am a little busy with my work, i need to make some money!!!! But i think that i am preeeeetty close to finish it!!!
P.S.: Can anyone give any info about the ECT and GPS, how they are hooked in the ecu, the interface from the ecu or even some lookup tables or even better some datasheets!!! I have an issue with the ECT!!!
on page 6 , pin # 6B is the data , they call it "k-line" , dont know what that means. also , 2 pins called P1 and P2 , while P2 is connected to the engine start button for some reason ,and from there , it also goes to the ecu via engine cut off relay, dont know for what reason. P1 is disconnected i know u can enter diagnostic mode from the gauge and even adjust air fuel ratio in each cylinder by a small ammount.so it communicats in full duplex. do u think that the data is sent on the same line? or maybe P2 is there to send data back?
If pin 6B is full duplex then the data is sent from the same line!! I dont know too much about Yamaha ecu except the fact that they change the afr throught the gauges!!!!
If K-line, you should perhaps look under bandit and KWP2000.
wow , thanks allot mate , i didnt know k-line stands for some kind of protocol .just checked the bandit section , will do some reading there. i'm good with engine work and electronics , but i'm really dont know much in digital or analog communication. also , i'm not good with programming.i hope i will be able to do all that from scratch.
Need 4 Speed just go for it!!! If you have spare time, you will learn something new and hopefully the guys in this forum will help you!! If can help you anywhere with your project i will if i know something that will help!!!
Need 4 Speed just go for it!!! If you have spare time, you will learn something new and hopefully the guys in this forum will help you!! If can help you anywhere with your project i will if i know something that will help!!!
thanks mate, i'll open the gauge up later and post some pics of the mcu inside . i'll post it in a new thread , hope i will be able to figure it out , any help would be VERY apriciated.
I'm really pleased to see this as I'm starting a similar project but the other way around. I'm fitting a race logger to a Suzuki and want to decode and convert the ECU serial data to give separate analog signals.
I've got the hardware all worked out and have a good idea about the software, but the thing I don't know exactly is the data format.
Did you manage to work out what all the bytes mean???
Gadgeteer I would be glad to help you!!! As soon as i find some free time i will tell you the meaning of the most important bytes!! If i remember well the are 2 or 3 bytes that do nothing!!! But please give us some more information of what you are doing!!! Do you build something from the beginning????
Hi there PetriK, how are you??? RidgeRacer where are you???? I need some of your knowledge! I have stuck to a point with my project and i need some of your programming knowledge!!
I am programming a pic18f series microprocessor and i have stuck to a point!!! It transmits at 7812 bps but i don't understand why the gauges dont work!! I am using a Basic compiler so the code is pretty much the same but i don't have the option of serialport.write(byte, offset, count)!!! I have only serialport.write(byte)!!! any suggestion???
no checksum calculation. i have removed it from my vb.net program also and it works! i haven't put any timer yet. what i want is to make it transmit just once and then implement the timer and the checksum!! Just like what i did with the vb.net program! First it transmitted the burst one time and then i fixed the timer at 250ms!! The code is pretty much the same for both vb.net and the pic compiler i am using it just needs a few touch ups here and there.
I am not sure as this its over an year ago since was playing with this - but would recall that: 1) The signal timer should be consistant, otherwise will detect an error. 2) A missing checksum makes to disgard the package But this recall may be from playing the signal back to ecu to change the package contents if like said the vb.net program works. (So you can basically request the ecu to send any variables in the package with a request package. The details of that is in the innovate plugin code.)
Anyway you propably have already monitored the signal from pic using e.g. USBTTL converter and read the packages using a terminal program or alike ?
I had some problems with connecting to gen2 ecu just to detect that I needed to set 8,n,1 also, not only the baud rate.
__________________
When asking a question, you can also consider posting it to facebook:
No I haven't used a terminal but i use an oscilloscope to monitor the signal!! If i want to monitor the data out from the program that i have built i need to buy another USBTTL in order to use a terminal so that i can compare the data out from both the program and the PIC!!!! What terminal do you use by the way????
Hi guys! I came back after 1 month. My day job is too much time consumming and i didn't have enough free time to continue the project. Now i am back. Petrik can i send you the code from the pic18f to see if you can spot any mistakes? It is written in basic so its pretty much the same!
l = 8 i = 0 While i < (l - 1) c = b(i) + c If c > 256 Then c = c - 256 i = i + 1 ElseIf c <> 0 Then b(l - 1) = 256 - c Else b(l - 1) = 0 End If Wend End Sub
Here is the next "first time post" in this thread.
I'm from Germany (so please excuse my english) and trying to connect a GSXR (K1) gauge to a TL 1000 S with ALL functions (Water- Temp, Error Codes, TPS setting, ...)
Regarding Baud rates: "I've been able to communicate reliably between 6950 and 7900."
It has only 5 Bytes: 1st Byte : Water Temp 2nd Byte : Status/TPS 3rd Byte : Unknown, Maybe part of error codes 4th Byte : Error Code 5th Byte : Checksum (simple 8-bit two's compliment)
What i would like to know is what function do the GSXR Bytes have.
I'm not a basic-guy, but i took a look anyways.
What i can see is, that in your (psyche) code water temp is Index 0. In PetriK's Code it's Index 1. I don't know which is correct, but i'm curious.
I Think you should read the values from your ADC inside the loop and Setup the baudrate only once. (I edited your code below) Greetings from germany, and please go on with research.
psyche wrote:....
Sub SendGaugeData()
SetBaudrate(br7812) While true GaugeData For index = 0 To 7 USART.Write(DecToStr(b(index)), 13, 10) Next Wend End Sub