Microcontroller projects

CLEVER the Electric Vehicle Charging Station

last updated: 14/03/20

CLEVER stands for Creative-Lab Electric Vehicle Energy Reloader ;) and is a charging station for electric cars (Electric Vehicle Charging Station EVCS).

This page exists for the moment only to help the students in their project. Later on it will describe the station in detail.

The concept

Solar energy is becoming more and more important in the power grid and will supply more energy than necessary around midday in the foreseeable future. Solar energy is only available during daytime and has to be stored. Electric vehicles need solar energy and own the needed storage capacity.

During the day, most cars are at work where there is no charging infrastructure. Current charging stations are often expensive and try to allow fast charging. This also requires a considerable expansion of the grid. This is not necessary at the workplace because the owner charges at home and the car is still partially charged. Slow charging at the workplace uses solar energy, preserves the battery, and makes it possible to continue to use and build electric cars with lower battery capacity (e. g. second car). Plug-in hybrids can also increase their electric range and drive almost exclusively with renewable electric energy.

Link to German version (pdf)
Presentation in Luxembourgish

The station is based on the following project: https://www.openevse.com/


clever circuit
clever oled circuit

Remote API (RAPI) through TIA 485

TIA-485 is a standard and defines the electrical characteristics of balanced signaling drivers and receivers in serial communications systems. They can cover long distances (typical: 35 Mbit/s at 12 m and 100 kbit/s at 1200 m) even in electrically noisy environments and allow multiple receivers (32 loads per bus) on a linear, multidrop bus. TIA-485 is often used in an industrial environment. TIA-485 does not define a protocol but only the electrical characteristics, so even similar devices from different manufacturers are not compatible due to a proprietary protocols. IC's like the MAX485 make it easy to implement TIA-485. TIA-485 is sometimes combined with the protocol of TIA-232 to get a serial connection with greater distances than TIA-232.

Communication with the EVSE is done via the serial interface (TIA232) over a TIA485 bus. We use the chip Max487 with half-duplex. Each EVCS has an address (00-99, first digit = bus, 2 digit is number on bus). The protocol is TIA232 250000 bit/s 8N1.

Each command begins with a dollar sign, followed by the address (2 digit), the command itself (2 character), the parameter of the command and must end with a linefeed (LF, 0x0A). Example of a command asking the time from the RTC (GT get time, bus 1, station 2):


The 2 character commands are split up in: + Function commands Fx, + Set parameter commands Sx and + Get parameter commands Gx.

There is also one asynchronous message: $ST state␊ (e.g. $ST 01␊)
EVSE state transition - sent whenever EVSE state changes. We see the following 3 main states:

The response format is an $OK or a Not OK $NK + optional parameters + linefeed.

Here is a list with examples of all the commands (ID = 11). The effects produced by the simulator (look below) are always shown in the serial monitor (SM):

command meaning EVCS returns effect in simulator
$11FA␊ allow charging $11OK␊ SM
$11FC␊ cancel charging $11OK␊ SM
$11FD␊ disable EVSE $11OK␊ LED on
$11FE␊ enable EVSE $11OK␊ LED off
$11FP x y text␊ print text on lcd display at x,y $11OK␊ SM
$11FR␊ reset EVSE $11OK␊ LED short blink
$11FS␊ sleep EVSE $11OK␊ LED slow blink
----- ----- ----- -----
$11S1 20 05 02 11 22 00␊ set clock (RTC) yr (2-digit)
mo day hr min sec
$11OK␊ SM
$11S3 3␊ set charge time limit
(x*15 min, 0=disable, max=255)
$11OK␊ SM
$11SC 10␊ set current capacity
(if a < min or > max, set to min or max)
$11SD 1␊ disable (0) / enable (1) diode check $11OK␊ SM
$11SG 1␊ disable (0) / enable (1) ground check $11OK␊ SM
$11SH 100␊ set cHarge limit to kWh $11OK␊ SM
$11SO 0␊ set Overtemperature threshold
(10ths of a degree)
$11OK␊ SM
$11SR 1␊ disable (0) / enable (1) stuck relay check $11OK␊ SM
$11ST 10 10 12 20␊ set timer (starthr startmin endhr endmin)
$11ST 0 0 0 0␊ to cancel timer
$11OK␊ SM
----- ----- ----- -----
$11G3␊ get time limit (0 = no limit) $11OK 15␊ SM
$11GC␊ get current capacity range $11OK 6 32␊ SM
$11GE␊ get settings (amps(decimal) flags(hex)) $11OK 16 001a␊ SM
$11GF␊ get get fault counters (3*hex) $11OK 0 1 1␊ SM
$11GG␊ get charging current and voltage (mA, mV) $11OK 12458 234125␊ SM
$11GH␊ get cHarge limit $11OK 12␊ SM
$11GO␊ GO get Overtemperature thresholds $11OK 300␊ SM
$11GP␊ get temPerature $11OK 245␊ SM
$11GS␊ get state and elapsed charge time $11OK 3 85␊ SM
$11GT␊ get clock (RTC) $11OK 20 5 2 11 22 5␊ SM
$11GU␊ get energy usage (WS kWh) $11OK 710118 432␊ SM
$11GV␊ get version $11OK SIM 0.2 14/05/20 CL 0.3␊ SM

CLEVER simulator

Due to COVID-19 we need a simulator to be able to continue the project. The simulator uses a Teensy 2.0.

EVCS Simulator


clever simulator circuit