Jump to content

DIY vipec display


lekonna

Recommended Posts

Alright,

So i was looking for a very small display, just to show me couple of basic items i need to know from the ECU such as oil pressure and oil temp ect.

basically everything out there was way over spec and price for this type of application.

I had an arduino uno laying around and decided to play with that a bit.

arduino_display.jpg

so what we have here is essentially, arduino uno, serial lcd and a can shield.

https://www.sparkfun.com/products/11021

https://www.sparkfun.com/products/10039

https://www.sparkfun.com/products/9394

which is just bit under 100$ if you have to purchase them all trough sparkfun which is not the cheapest option out there.

I soldered a pin header on the Can shield so that it sits on top of the arduino uno and hacked up some leads for the lcd.

Jean delivered me a flying leads can cable for Vipec and today i finally had some time to play around with it.

What i would like to know from the vipec support is that where is the data format defined in which the vipec sends the different variables? For example the TPS seems to range from 32-360 when reading it as a sequential data with 2 bytes of data with the data1 as H and data0 as L byte.

Would be much easier to implement the stuff i need if i didn't have to reverse engineer the data format for each variable i possibly want to see :)

Is there a table available somewhere in the documentation ?

I will publish the code and the setup if somebody wishes to modify and take it into use for them selves, though most likely i will not have time to support it too much.

the Can shield has a 4 way joystic and a SD card place also so if somebody wants to get creative and implement something more complex, it should work fine.

Link to comment
Share on other sites

the can thingy, is the mcp2515 chip on the add-on board there, it communicates with the AVR micro controller through spi-bus, not exactly something you can just go and plug on a nexus tablet.

you might get away with either:

if you can hack the nexus to work in a usb host mode and connect some can usb dongle that actually support linux you might get data on the tablet. Also don't know if the nexus kernel is compile with module support for the usb drivers.

Or:

actually, as the arduino works as usb serial, and also works in linux, it might be possible to use the nexus with just usb connected to this thing, i use the serial connection to debug stuff and it works just fine under linux.

but then you'd have to write the ui and all that tedious crap ;) life is so much simpler if you just stick close enough to the hardware.

Link to comment
Share on other sites

If you go to the help file in VTS and search "Device Specific CAN Information

"Device Specific CAN Information"

That will give you the CAN info.

If you search "Datastream" you will find the Serial information

Link to comment
Share on other sites

dang it, you beat me to it :P

I wanted to do the exact same thing... I bought an Arduino Uno and an LCD and it is sitting on my work table.

Would you be willing to share code?

sure thing, i'm using library made by some other guy, but the copyright states that it can be shared, so i see no problem

with sharing it. i'll push it to github this way its easier to see the updates, but seriously, what i did to the example that came with the can shield was just add a function to the Canbus class that reads 4 variables and then used that to dig stuff out, vipec documentation made it quite easy to do this.

Link to comment
Share on other sites

here you go: https://github.com/lekonna/vipec_can_display

the main code is dead simple

https://github.com/lekonna/vipec_can_di ... isplay.ino

I'll play around with it some more during the weekend when i have some time. so far seems to work just fine.

I can dig out the pin order i used to solder the serial cable to the vipec wires tomorrow.

Link to comment
Share on other sites

  • 2 weeks later...

added a button to flip between pages. code also updated.

was initially going to add max and min value display on a double click but since i was lazy and didn't solder a small capasitor in the switch i get lots of noise and had to filter it in the interrupt handler to make the button behave better.

will think of a way to implement the display for min and max also.

the button is wired between digital pin 3 and ground.

Link to comment
Share on other sites

  • 1 month later...

You mentioned that you would provide the pinouts. I could not see them here. Also, I have not read this whole article in depth, but this "code" your referring to, how does this "code" get into the unit? Do you have to hook it up to a laptop via USB and communicate with it then upload the "code" I think what your saying that in order for this to communicate with the Vipec, this code needs to be installed onto the Arduino MB. Also, where did you procure this "Flying Leads" CAN cable for he Vipec?

Now for a stupid question.........Is there a product now on the market with a display and all that does the same thing, yet all pulg n play?

Stu

Link to comment
Share on other sites

You mentioned that you would provide the pinouts. I could not see them here. Also, I have not read this whole article in depth, but this "code" your referring to, how does this "code" get into the unit? Do you have to hook it up to a laptop via USB and communicate with it then upload the "code" I think what your saying that in order for this to communicate with the Vipec, this code needs to be installed onto the Arduino MB. Also, where did you procure this "Flying Leads" CAN cable for he Vipec?

Now for a stupid question.........Is there a product now on the market with a display and all that does the same thing, yet all pulg n play?

Stu

here is the wiring:

vipec pin 3 (white) CAN H <---> arduino shield pin 3 on the DB9 plug

vipec pin 4 (green) CAN L <---> arduino shield pin 5 on the DB9

ref.

http://www.sparkfun.com/datasheets/DevT ... ld-v12.pdf

vts -> help -> wiring information -> communications port pinout

you are correct, the code i'm referring to here is the source code for the microcontroller in the arduino that will run the can stuff

and direct the display.

what you do is once you have the arduino, you plug it into your pc with usb cable and use the arduino ide do flash the software

to the board. At this point you can modify the parameters you want the display to show, it is quite easy to do. then you just hook everything

together, setup the vipec and you are done.

vipec can setup

user_can_setup.png?raw=true

Link to comment
Share on other sites

  • 3 years later...

Digging up an old thread...  A friend has assembled one of these displays and programmed it to be an additional display for his turbo 1zzfe.  I'm now trying to get it to work with his CAN enabled v88 (serial 10484).  Is there any reference for the CAN Status runtime values available?

While playing around with a couple of different CAN Shields I'm getting Stuff Error most of the time and sometimes a Bit0 error when trying a different data rate..  ECU is in transmit with compound format, Data Rate is 500kBPS and the canshield is initialised at 500kBPS.

 

Link to comment
Share on other sites

Hi JMP,

We don't have any information on the causes of errors for the different CAN Statuses. Normally the only time I've seen errors has been if the CAN H and CAN L need to be swapped, or if the data rate of the ECU and CAN device do not match. When you make a change on the CAN settings I would recommend storing then cycling the power to both the ECU and the CAN device.

Can you show us a screenshot of the CAN Setup window when the Stuff error is occurring? 

Link to comment
Share on other sites

I did a bit of searching and found a website earlier today that had a number of the error states explained, LEC stands for Last Error Code and it seems the "Stuff Error" is actually one of the standard error states defined for CAN comms:

Error checking

CAN is a very reliable system with multiple error checks ( below is the CAN 2.0 the CAN FD is more complex

Stuffing error  -  a transmitting node inserts a high after five consecutive low bits (and a low after five consecutive high). A receiving node that detects violation will flag a bit stuffing error.

Bit error  -  A transmitting node always reads back the message as it is sending. If it detects a different bit value on the bus than the one it sent, and the bit is not part of the arbitration field or in the acknowledgement field, an error is detected.

Checksum error - each receiving node checks CAN messages for checksum errors (different rules apply for CAN 2.0 and CAN FD).

Frame error - There are certain predefined bit values that must be transmitted at certain points within any CAN Message Frame. If a receiver detects an invalid bit in one of these positions a Form Error (sometimes also known as a Format Error) will be flagged.

Acknowledgement Error - If a transmitter determines that a message has not been ACKnowledged then an ACK Error is flagged.

The owner's going to try a later CAN library for the Arduino tomorrow with the ECU on the bench. I thought it was interesting that the transmitting node flagged the stuffing error, but I'm still learning how CAN comms is meant to function.

 

Setup screen looked like this:

configcan.JPG

Edited by JMP
Link to comment
Share on other sites

slight update, turns out the libraries define the clock speed and subsequent block sizes.  We were using a 16Mhz library and the can shield had an 8Mhz clock...  Replaced the 8Mhz clock with a 16Mhz and the comms is now working well :)

Testing with a really cheap shield: http://www.aliexpress.com/item/EMS-Free-shipping-6870C-0243C-LC420WUN-LC470WUN-SBA1-Logic-board-High-quality-Hot-sale/620222773.html

Edited by JMP
Link to comment
Share on other sites

  • 1 month later...

hi, this looks great and a bridge gap between a full CANBUS setup like the KMS display or display dashes etc

 

would this work with the V44 topboard I have (evo 9 PNP unit), but it still requires the CANBUS upgrade (serial below 10,000)

if i wanted the KMS display unit i had to upgrade to Link G4 and then but the KMS display, but this looks like it might work with native V44 CANBUS - as the audrino can do arithmetic on the CANBUS values

Link to comment
Share on other sites

I think this would work. You could send out the 'Generic Dash' CAN stream, as this contains most of the data the KMS dash is capable of receiving. You would then re-transmit the data to the KMS after some maths.

We have just finished adding G4+/iSeries support for another good value dash manufactured by Microtech. There is talk of them making a mode in the dash to support the 'Generic dash' CAN stream, this would mean the dash could work with the V44/V88 and G4 ECUs.

http://microtechefi.com/product/ltc-display-dash/

One other good value dash which already has support for the V44/V88 and GG4 ECUs is the Toucan.

http://www.jti.uk.com/toucan-available-for-link-g4g4-and-vi-pec/

 

Link to comment
Share on other sites

thanks and good insight, i hadn't considered using the aurdrino as in inbetween CANBUS gate to the KMS display, i only thought of it as a do it yourself display.

ill chat to my friend tomorrow to see if he can get the audrino as a CANBUS gate to the KMS display

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...