Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Charging goes very slow the last few days...any ideas what it could be? (incl. graph)

This site may earn commission on affiliate links.
Hi all,

The last few days, I've noticed that charging my Roadster takes longer than usual.
I always use the same public charger in my hometown, which charges at 16A/230V. In my experience, this is enough to go from 0-300km range in 18 hours, which is confirmed by Tesla Roadster Charge Time Predictor

For some reason, it doesn't seem to be that fast. Here's a graph of my last charge session. You can see the range go up by the hour, and a small hop because I switched to range charging at the end. In the end it took 28 hours to go from empty to full. Way too long in my opinion, especially because the voltage and amperage don't go down during the charging, and temperatures don't vary too much either. There's a small dip at the beginning of the charge graph, I was off the charger for a moment because of logistic reasons.

unnamed.png
 
Check your cooling.
Check charging in performance mode.
Normally you should charge around 18 km per hour on 16A 230V.
I had the same caused by leakage in the cooling, which makes the cooling fans run at max speed all time and using half of your charging power.
If in performance mode you charge 18 km per hour than it is definitely a problem in the cooling unit.
 
The energy must go somewhere. If the car is consuming the same kW for the same time, the net product of kWh is the same. The battery charge level should behave as normal.

Possibly, if there is excess load on the pack (coolant pump/AC/heater/12V system), the car will have less power to charge the battery with
 
Good luck with the diagnosis.

Cool graph BTW .. how did you create ?
(for the 'software-challenged' people on here :wink: )



It's pretty easy. I used the same Tasker script as the one I used to update the Widgets. I added a line at the bottom that goes to the following URL:
https://data.sparkfun.com/input/<MY STREAM>?private_key=<MY KEY>&amps=%current&kwh=%kwh&voltage=%voltage&tempbatt=%tempbatt&tempmotor=%tempmotor&temppem=%temppem&tempambient=%tempambient&soc=%soc&idealrange=%idealrange

This is the URL of my data.sparkfun.com stream, which is basically an online database that adds a timestamp to any data that you feed it.

Here's the public URL of my data:
data.sparkfun.com - Stream n1qN0L2W5lCjL5jlZJgz


You can then use this data to generate a chart on the fly, with Google Chart, by using the following HTML code on a website:

Code:
<!DOCTYPE html>
<html>
  <head>
    <!-- EXTERNAL LIBS-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://www.google.com/jsapi"></script>


    <!-- EXAMPLE SCRIPT -->
    <script>


      // onload callback
      function drawChart() {

      // this is the public key of your data.sparkfun.com stream. CHANGE IT TO YOUR OWN STREAM
        var public_key = 'n1qN0L2W5lCjL5jlZJgz';


        // JSONP request to sparkfun to get the data
        var jsonData = $.ajax({
          url: 'https://data.sparkfun.com/output/' + public_key + '.json',
          data: {page: 1},
          dataType: 'jsonp',
        }).done(function (results) {


          var data = new google.visualization.DataTable();

// adding some colums to the data table
          data.addColumn('datetime', 'Time');
          data.addColumn('number', 'Amperage');
          data.addColumn('number', 'Voltage');
          data.addColumn('number', 'Battery temperature');
          data.addColumn('number', 'Motor temperature');
          data.addColumn('number', 'PEM temperature');
          data.addColumn('number', 'Ambient temperature');
          data.addColumn('number', 'Range');

//parse the data to the rows
          $.each(results, function (i, row) {
            data.addRow([
              (new Date(row.timestamp)),
              parseFloat(row.amps),
               parseFloat(row.voltage),
              parseFloat(row.tempbatt),
              parseFloat(row.tempmotor),
              parseFloat(row.temppem),
              parseFloat(row.tempambient),
              parseFloat(row.idealrange)
            ]);
          });

//options for the graph
          var options = {
        chart: {
          title: 'Roadster charge data',
          legend: {position:'bottom'}
        },
        
     explorer: {
        maxZoomOut:2,
        keepInBounds: true
},    
        
        series: {
          // Gives each series an axis name that matches the Y-axis below.
          0: {axis: 'Amp'},
          1: {axis: 'Volt'},
          2: {axis: 'Temperatures'},
          3: {axis: 'Temperatures'},
          4: {axis: 'Temperatures'},
          5: {axis: 'Temperatures'},
          6: {axis: 'KM'}


          
        },
        axes: {
          // Adds labels to each axis; they don't have to match the axis names. I added multiple Y-axes
          y: {
            Amp: {label: 'A'},
            Temperatures: {label: 'Temps (Celsius)'},
            KM: {label: 'KM'},
            Volt: {label: 'V'}
          }
        }
      };
            
          
          var chart = new google.charts.Line($('#chart1').get(0));

//draw the cart
          chart.draw(data, options);


        });


      }








      // load chart lib
      google.load('visualization', '1', {
        packages: ['line']
      });


      // call drawChart once google charts is loaded
      google.setOnLoadCallback(drawChart);


    </script>


  </head>
  <body></body>
</html>



So step by step:
- create a data.sparkfun.com stream with relevant Roadster data
- add "HTTP POST" url to Tasker task, containing the variables (all the things with a %)
https://data.sparkfun.com/input/<MY STREAM>?private_key=<MY KEY>&amps=%current&kwh=%kwh&voltage=%voltage&tempbatt=%tempbatt&tempmotor=%tempmotor&temppem=%temppem&tempambient=%tempambient&soc=%soc&idealrange=%idealrange
- add the given HTML code to awesomegraphs.html on your desktop (you can do this in Notepad if you want)
- make sure the var public_key = 'n1qN0L2W5lCjL5jlZJgz'; matches your own public key. That's all you need to change.
- Open the html with your favorite browser and feel awesome


If you want to, I can send you my tasker task/profile.


Known bugs:
- The roadster sleeps every now and then. The graph will stay flat during those times.
- Amperage can jump to 127 sometimes for unknown reasons. that causes a spike on the graph.
- Voltage is -1 when not charging


Edit: this can probably be done MUCH more efficient by parsing the original OVMS logs, but I'm not that nerdy ;)
 
Last edited:
Update: currently charging in performance mode, and it's going at a steady 18km/h, so I'm pretty sure you guys are right. Thanks for helping out!
This means that as long as you manualy stop charging for instance with your OVMS, at 85%, your battery should stay OK. Anyway your cooling problem should be solved as summer is coming.
In your diagnose screen you can select HVAC and you can read the pressure of the system which should be around 3 bar, you will propably read around 1 bar due to the defect.
If you want more info you can PM me, to meet F2F, as apparently we both live in the Netherlands.
 
Thanks for all the assistance guys!

Update:
The car was in for service. They couldn't really find anything specific, although they did clean the blower/PEM/etc.
Here's a graph from all charge measurements I made:

Schermafbeelding 2015-06-01 om 19.25.50.png


as you can see, last week there were a few days without any OVMS connection, when the car was in maintenance.
After that, charging got quite a bit faster again.
measurements are calculated added KWH per Hour