Been over a year since my last post. I have the LS2 installed in my E46 and the basics are in and running. The current issue is that the cluster rpm/speedo/temp gauge are all disabled since the stock BMW DME is installed but not hooked up to an engine. I decided to leave the DME in to maintain as much functionality as possible. The speedometer is normally read by the left rear wheel speed sensor but I did an M3 E46 rear swap and the sensor is different.
Looking around the internet lead me to the Thaniel module (facebook page is “can bus module”). After talking with them, the module won’t fit my needs. It uses an ELM327 to connect to the LS PCM and I need that for my carduino for data logging. Also, my factory DME is still giving the cluster signals so they will be fighting each other.
Of course this lead me to creating my own ardunio can bus module. I’m using an arduino uno and the sparkfun can bus board. Like every other can bus arduino module, it uses an MCP2515 on SPI. The sparkfun library didn’t work with any of my tests so I eventually found this sample code that has a generic MCP2515 “library”.
The LS1 PCM has a 5v output for RPM signal that I’m planning to feed into the arduino, then to the cluster can bus. The stock DME should be sending conflicting data so I’m hoping the cluster just tweens between the two values. So 3,000 rpms might show up as 1,500 rpms on the cluster. Otherwise, I have to sever the can bus from the DME to the cluster and troubleshoot what is lost from not having that connection.
Otherwise, the speedometer can be done via GPS. Theoretically, the coolant temp can be done through a 5v sensor or fed from my carduino. Regardless, I plan to run an aftermarket gauge to get a number. The stock coolant gauge is pretty vague.