Jumping Jack Flash weblog

Diario elettrico Greengo Icaro – 30/9/2019: primi 10.000 km… o ultimi?

Posted in Diario elettrico GreenGo Icaro by jumpjack on 1 ottobre 2019
In questi giorni il contachilometri è arrivato a circa 22.000 km, rispetto ai circa 12.000 km all’acquisto; ho quindi percorso 10.000 km con la mia piccola Icaro. Purtroppo non è un gran bell’anniversario: in una settimana mi ha lasciato a piedi 3 volte:
  • la prima a 500 metri da casa, quando decisi di riprogrammare la centralina pensando che fosse colpa della frenata rigenerativa;
  • la seconda a DIECI metri da casa: ci ho messo un’ora a fare gli ultimi 10 metri di salita fino al parcheggio, perchè il motore non voleva saperne (di nuovo) di funzionare come si deve, procedendo a balzelloni o restando semplicemente immobile pur assorbendo 50A. Impossibile parcheggiarla a spinta: in pianura è leggerissima, la spingi con un dito; ma basta un minimo di pendenza per farla sembrare un SUV da tre tonnellate…. Alla fine però ha deciso spontaneamente di ripartire e sono riuscito a parcheggiarla.
  • La mattina dopo, fiducioso e speranzoso, vado ad accenderla, parte, si muove regolarmente… Ok vado a lavoro.Niente da fare: si è rifermata, stesso difetto. Solo che stavolta sono a 3 km da casa, e non vuole saperne di ripartire nemmeno dopo un’ora di tentativi, di pause, di attese e di imprecazioni.

Sintomi

Tutto quello che so è che in questo tipo di guasto si hanno questi sintomi:
  • letture caotiche dell’amperometro, che a velocità costante e acceleratore fermo iniziano ad oscillare di +/- 10A intorno a un valore centrale (che ovviamente dipende dal grado di pressione dell’acceleratore);
  • letture caotiche della velocità: la lancetta comincia a fare su e giù incontrollata, arrivando anche a segnare 80 km/h, velocità che quest’auto non ha mai raggiunto in vita sua (e il tachimetro segna questa velocità quando in realtà vad a 50 all’ora…)
  • una volta fermo, se cerco di ripartire, il motore inizia a vibrare, a saltellare, a fate strani strappi, poi si pianta del tutto; sia in avanti che in retro.
  • può succedere con qualiunque stato di carica della batteria e dopo un qualunque numero di km percorsi dappa partenza.

Tentativi fatti

  • controllati tutti i collegamenti centralina/motore
  • procedura di reset 1: pulsante rosso spento, fusibile 12V scollegato
  • procedure di reset 2: accensione/spegnimento del quadro due volte in rapida sequenza quandp il ventilatore è acceso e l’aria è su “caldo”: l’auto risponde col doppio lampeggio delle frecce
  • sostituito VMS con uno di scorta
  • disabilitato regen
E’ tutto completamente inutile.

Diagnosi

Vista la concomitanza di “motore impazzito” e “tachimetro impazzito”, viene spontaneo pensare che siano coinvolti i sensori di hall, che stanno nel motore e sono incaricati di comunicare alla centralina velocità e direzione di moto del motore. Però, come faccio a sapere se sono rovinati i sensori, i cablaggi o la centralina stessa? Impossibile, con mezzi casalinghi.

E adesso?

Auto elettriche economiche sul mercato

Visto che quando ho comprato questo macinino 🙂 , l’obiettivo era solo arrivare fino al 2020, quando presumibilmente sarebbero uscite sul mercato auto elettriche a meno di 20.000 euro, non posso ritenermi del tutto insoddisfatto (anche se nemmeno del tutto soddisfatto): le prime auto a meno di 20.000 sono effettivamente arrivate, con la Volkswagen e-Up! nuova versione, da 250km/38kWh e 40 kW di ricarica, a 23.300 euro pre-incentivi, 15.000 dopo incentivi statali e sconto concessionario, e la Skoda ha già a listino la “gemella” Citigo-e IV, che in Repubblica Ceca si può già comprare a un prezzo base di 16.600 euro pre-incentivi: significa che, se anche in Italia avesse questo prezzo, si potrebbe prendere a 10.600 euro con gli incentivi. Quando la annunciò a maggio, in effetti, la Skoda disse che l’avrebbe venduta a “molto meno di 20.000 euro” (testuali parole), quindi può darsi che anche in Italia arriverà a questo prezzo. Però, la e-Up!, che è già ordinabile, in realtà arriverà in concessionario solo a Gennaio 2020; per la Citigo forse si andrà anche più in là coi tempi, e forse anche con la Seat Mii, la “terza gemella” della serie eUp-Citigo-Mii, che ancora non è disponibile nemmeno in Spagna. Fatto sta che, a parte la icaro, io ho un vecchio imbarazzante scassone diesel del 2006 con 150.000 km di cui mi devo sbarazzare. Speriamo di poterlo fare presto. Nel frattempo la gente dovrà ricominciare a respirare i miei gas di scarico, con buona pace di Greta Thunberg.

Addio Icaro?

Intanto mi sa che mi devo sbarazzare della Icaro, sperando di non perderci troppi soldi rispetto ai 7.000 di acquisto usata (nuova costava 18.000 euro). Anche vendendola solo per pezzi di ricambio, c’è un sacco di “roba utile” dentro (prezzi stimati/indicati per il nuovo):
  • Kelly controller KHB72701C – 1.000 euro
  • Motore Xyndayang 6kW/3500rpm – 2.000 euro
  • Caricabatterie 2.3 kW: 1.500 euro
  • DC/DC converter 72V/12V/1kW: 1.000 euro
  • Batteria 72V/150Ah/11kWh con 24 celle LiFeYPO4 Winston: 3.500 euro
    • BMS SCE ZD-24: 1.500 euro
    • Batteria in ottime condizioni:
      • massimo delta tra celle: 30mV;
      • autonomia: 100 km (90+10 riserva)
      • km percorsi: 22.000 (vita stimata: 100.000)
  • Tablet/centralina: 750 euro
  • Vehicle Management System (VMS): 1.000 euro
Praticamente solo di elettronica in quest’auto ci sono 10.000 euro di roba… Certo, qualcuno di questi pezzi non sta funzionando…. ma io non ho nè soldi, ne strumenti nè tempo per scoprire quale. Di certo non è il BMS, appena sostituito per 1.000 euro (e secondo me pure inutilmente). Devo decidere se mi conviene venderla in blocco a uno “sfasciacarrozze elettrico”, o smontarla io pezzo per pezzo e rottamare quello che resta, per vendere poi i pezzi su ebay; certo, senza nè un’officina nè un garage, ma solo un posto auto all’aperto, e con la “stagione delle piogge” in arrivo, non la vedo una cosa facile.

Diario elettrico Greengo/Zhidou Icaro – 23/9/2019: problemi al motore

Posted in Diario elettrico GreenGo Icaro by jumpjack on 23 settembre 2019

Qualche mese fa si è presentato per la prima volta un nuovo tipo di problema, questa volta riguardante il motore: all’improvviso, durante la marcia a bassa velocità, l’auto ha iniziato ad accelerare a singhiozzo, nonostante il pedale dell’acceleratore fosse fermo (ma non a zero); mi sono fermato, ho spento e riacceso, e tutto ok, ma la cosa è un po’ preoccupante, perchè sembrerebbe quasi un problema di lettura dei sensori di hall, quei 3 sensori che permettono al motorcontroller di sapere in ogni istante a che velocità e in che direzione si sta muovendo il motore; il che vuol dire che se le letture sono a vanvera, la centralina potrebbe “ingranare la retromarcia” in qualunque momento… La mattina seguente ho dato una controllata a fili, cavi e cavetti, ma non mi sembra ci sia nessun falso contatto; però il problema si è ripresentato un paio di volte, e una volta anche quando ero in velocità. Mettendo un momento in folle su “N” e poi di nuovo in drive su “D” il problema sembrava risolversi, ma il differenziale non è molto contento di queste accelerazioni/decelerazioni improvvise, quindi questo sembrerebbe proprio essere un motivo in più per disattivare la famigerata rigenerazione in frenata, che secondo la Kelly, che fabbrica il motorcontroller, potrebbe essere la causa degli improvvisi, saltuari depotenziamenti. Oggi pomeriggio il problema si è fatto più pesante: si è presentato mentre percorrevo una discesa; il motore (o il differenziale?) ha fatto dei rumoracci, e ha “staccato” completamente; quando sono arrivato a valle e mi sono fermato, non sono più riuscito a ripartire: accelerando, il motore andava a saltelloni, assorbendo a ogni “botta” al massimo 50A; stessa cosa in retromarcia.

  • ho provato a muovere un po’ a mano l’auto, casomai il motore fosse finito in un “punto morto” (cosa che non dovrebbe però essere possibile nei motori brushless con sensori di hall), ma niente;
  • ho staccato, controllato e riattaccato i connettori della centralina; niente;
  • ho staccato batteria principale e secondaria; niente.
  • Ripetuto quanto sopra una ventina di volte; niente.

Alla fine ho deciso di chiamare il meccanico di Via Appia, che quando ha provato l’auto mi ha detto di essere preoccupato dal rumore che fa il differenziale quando si attiva il regen, perchè sembra come se il differenziale si stesse rompendo. Però, visto il preventivo, decisi di lasciar correre… e aspettare che il differenziale si rompesse: 1200 euro + IVA, + 130 euro di trasporto fino all’officina, totale 1500 euro circa. Così ho deciso di tentare ancora la “strada elettronica” invece di quella meccanica: per colmo di fortuna la macchina si è fermata a 500 metri da casa, quindi sono andato a prendere PC e cavo seriale per riprogrammare la centralina eliminando il regen. Dopo mezz’ora di camminata andata e ritorno (a piedi all’andata, in bici a ritorno… con al seguito impermeabile e ombrello perchè sembrava stesse per venire giù il finimondo…), sono arrivato alla macchina. Attacco l’inverter, a cui attacco l’antico portatile, unico che ho dotato di porta seriale, ma così vecchio da avere 5 minuti di autonomia; attacco il cavo seriale, accendo il PC, avvio il programma, e… Aspetta, però, fammi un attimo riprovare la macchina, hai visto mai, per sbaglio… Tac. Partita al primo colpo. Nessuna vibrazione, nessun sussulto, come se niente fosse successo. E tutto quello che ho fatto è… il nulla più assoluto, perchè neanche c’ero. Vabbè, piano piano, timorosamente, la porto fino a casa… poi  torno a piedi a prendere la bici… poi torno a casa con la bici… poi risalgo in macchina, e finalmente riprogrammo la centralina: disattivo il regen, e già che ci sono disattivo anche una “voce sospetta”: il sensore di temperatura del motore. Non so neanche se ce l’ha un sensore di temperatura… e se non ce l’ha ma la centralina cerca di leggerlo, sicuramente legge valori a vanvera; se invece c’è è lo scollego… boh? Si brucerà il motore? Comunque resta attivo il controllo di temperatura del controller. Questa è la configurazione attuale completa: Questi sono i parametri modificati:

Degni di nota anche i valori della schermata 2, Under Voltage e Over Voltage: l’overvoltage è settato al massimo, 90V, ma la protezione interviene al 95% di questo valore, che è a 85.5V, e qualche volta, a carica appena terminata, sono partito con la batteria a 86V, e dopo la discesa del parcheggio l’auto si è fermata… Quindi potrebbe essere proprio questo il colpevole. Ma purtroppo non posso ulteriormente alzare questo valore, lo slider è al massimo.

E poi, ieri cercavo una cosa sul manuale… e ho trovato questa assurdità:

  1. perchè la macchina si ferma a volte quando esco dal parcheggio di casa, con l’auto a piena carica;
  2. perchè di fabbrica il regen viene disattivato. Invece, un paio di “meccanici” della Icaro mi avevano detto che il regen non lo attivano “perchè rovina le batterie con troppe piccole scariche e ricariche”
  3. perchè i nuovi modelli (D1, D2,…) non montano più la pur sofisticata centralina Kelly, anche se tollera 25 kW continui e 50 kW di picco e i nuovi modelli non superano i 15 kW di picco: perchè un difetto del firmware Kelly impedisce di alzare la tensione di intervento della protezione anti-regen!! E questa centralina è fuori produzione: la Kelly mi ha detto che il firmware non verrà più aggiornato! E non è l’unico bug: se l’auto è ferma in cima a una discesa, e si lasciano i freni, il regen non si attiva nemmeno quando si arriva a velocità massima; la Kelly mi ha “spiegato” che è giusto così, non si deve accendere, se non si sta frenando… E “infatti” ho verificato che basta dare una leggerissima accelerata e poi rilasciare, e allora a quel punto il regen si attiva perchè pensa che l’auto stia rallentando in pianura….

Concludo con una nota sulla schermata 6, per riportare in formato testo i parametri, così google se li mangia e li comunica al mondo:

J1939 settings:

  • Preferred address: 5
  • Arbitrary address capable: 1
  • Industry group: 0
  • Vehicle System Instance: 0
  • Vehicle System: 0
  • Reserved fields: 0
  • Function fields: 0
  • Function instance: 0
  • ECU instance: 0
  • Manufacturer code: 0
  • Identity number: 110001

 

Concludo con una nota sulla schermata 6, per riportare in formato testo i parametri, così google se li mangia e li comunica al mondo:

J1939 settings:

  • Preferred address: 5
  • Arbitrary address capable: 1
  • Industry group: 0
  • Vehicle System Instance: 0
  • Vehicle System: 0
  • Reserved fields: 0
  • Function fields: 0
  • Function instance: 0
  • ECU instance: 0
  • Manufacturer code: 0
  • Identity number: 110001

Hacking Icaro – Centralina GSM: Man in the Middle Attack – puntata 3

Posted in Diario elettrico GreenGo Icaro, hacking, hardware by jumpjack on 2 settembre 2019

Pinout

Terminata l’individuazione dei pin TX/RX da intercettare tramite apposito cavo:

Pinout centralina GSM Zhidou/Greengo Icaro

Pinout centralina GSM Zhidou/Greengo Icaro

 

Sul connettore nero sono i pin 33 e 34, ergo l’11mo e il 12mo partendo dal pin 23 (in basso nella figura qui sopra).

Il pin marchiato RX sul modulo va, da datasheet, collegato a RX sulla centralina, cioè qui viaggiano i dati provenienti dal modulo GSM, ergo le risposte del server. Il pin da “manomettere” e intercettare è quindi il TX, che corrisponde dal pin 33 sul connettore nero, l’undicesimo partendo dall’estremità del connettore contrassegnata dal n.23.

Il cavo

Un possibile cavo utilizzabile per questo hacking è il SAMTEC FFSD-25-D-03.00-01-N-R (datasheet):

  • FFSD = famiglia
    • FF passo 1.27 mm
    • S = socket (femmina); può andar bene anche la famiglia FFMD, con due spine maschio invece che due femmine, ma servirà un adattatore femmina-femmina; col connettore femmina-femmina (lettera S) serve invece un adattatore maschio-maschio, o semplicemente di inserire a mano 50 pin in uno dei due connettori femmina, in modo che diventi maschio.
    • D = doppia fila di pin
    • DA EVITARE le famiglie TCSD e TCMD, che hanno il passo sbagliato (2mm invece che 1.27mm)
  • 25 = 25 pin per fila
  • D = Doppio connettore
  • 03.00 = 3 pollici di lunghezza (7.5 cm)
  • 01 = valore fisso
  • N = presente tacca di polarizzazione
  • R = verso invertito del secondo connettore:

    L’ultima lettera va bene anche -O oppure -M (si tratta di cavi con 3 connettori invece che 2, uno dei quali invertito).

Il progetto

Questo è ciò che va realizzato per modificare il server a cui vengono inviate le telemetrie:

hacking icaro GSM – connessioni

Questa è l’unica connessione realmente necessaria, sia per modificare il server di invio dati, sia per loggare i dati stessi, ma chiaramente può essere utile collegarsi anche al pin 34(RX) per leggere e loggare la risposta del server.

 

Tagged with: , , , , ,

Diario elettrico Greengo/Zhidou Icaro – 23 agosto 2019: in riserva

Posted in auto elettriche, minicar elettriche by jumpjack on 23 agosto 2019

Ormai vado in giro con questa macchinina da più di un anno, ma ancora non mi era mai capitato di rimanere a secco; però sono un po’ di giorni che vado a lavoro senza ricaricarla, per vedere se per caso non ricaricandola più al 100% si risolve il problema del depotenziamento alla partenza (potrebbe dipendere dalla batteria troppo carica appena finita la ricarica).

Solo che ieri avrei proprio dovuto ricaricarla, perchè stamattina segnava 40% di autonomia rimasta (=40km) e per andare/tornare da lavoro ne devo fare 20; e gli ultimi 20 sono segnati in rosso sull’ “indovinometro”, cioè sarebbero la riserva.

Quindi? Che faccio, parcheggio e prendo l’auto a benzina? No, vabbè, dai, siamo qui per sperimentare, no? Vado.

Primo esperimento: vado al Centro Elettrico Terradura, unica colonnina di ricarica disponibile nel raggio di 10km e lungo la strada per andare a lavoro.

Spiacente, “oggi” non funziona.

Perfetto, e ho anche sprecato 3 o 4 preziosi km per andarci.

E vabbè, andiamo in ufficio. Arrivo con 30%/30km residui; al ritorno entrerò sicuramente in riserva.

Secondo esperimento: vediamo un po’ come funziona il servizio di “ricarica di emergenza per auto elettriche” di E-Gap, attivo da quest’anno.

Le tariffe:

Una vera follia: dai 300 ai 400 centesimi per kWh, a fronte dei 45 alle colonnine pubbliche, i 17 della ricarica domestica diurna e i 7 della ricarica domestica notturna.

Ma c’è di peggio. Dov’è attivo il servizio di ricarica a Roma? Nella zona in cui la colonnina più lontana è a 500 metri, forse 1 km: il centro storico!

Ok, visto che la cosa peggiore che può succedermi è che l’auto entri in modalità lumaca a 1 km da casa, non ci penso proprio a buttare 20 euro per l’esperimento.

Terzo esperimento: andare in riserva

Poco dopo essere partito dall’uffucio, a pochi chilometri da casa, ecco che la lancetta va sul rosso.

Cosa succede?

Niente di niente: la macchina va esattamente come prima, velocità massima 65km/h di tachimetro, assorbimento fino a 250A in partenza.

Percorro altri 2 km… 3… 4… Ne restano ormai 15. Non succede niente; nessuna spia. Ok, ormai sono a 500m da casa, iniziamo con la sperimentazione “pesante”, cioè quella con prospettiva di tornare a casa a piedi (poi come farò a ricaricare la macchina, non lo so; ci penserò… 🙂 ). Inizio a gironzolare intorno casa per salite e discese. 14%… 13%… 12%.. 11%… 10%… ZAC! Potenza improvvisamente segata! Quando affondo l’acceleratore, l’auto rallenta invece di accelerare.

Corrente di picco massima ammessa: circa 50 Ampere.

Corrente continua: 7 Ampere! Cioè 500W al motore.

Velocità massima consentita: 20 km/h.

Nessuna indicazione luminosa o sonora, nè sul cruscotto, nè sul tablet.

Per l’appunto ero in cima a una salita dietro casa, quindi è bastato scendere “in folle” per tornare a casa.

Fine del test.

Risultati del test:

  • L’autonomia disponibile della Greengo/Zhidou Icaro A1 da 6 kW è 90%/90km percorribili con prestazioni standard; gli ultimi 10%/10km si fanno invece a 20 km/h e con 0.5 kW di potenza massima.
  • Nessun preavviso visivo o sonoro di entrata in riserva (sulle D1, almeno quelle in versione Sharing, c’è invece un avviso quando si arriva al 20%).
  • Costo ricarica di emergenza E-Gap: 15-20 euro.
  • Attesa: da 1.5 ore a 24 ore secondo il prezzo pagato (da 300 a 400 centesimi a kWh).

Come risolvere il problema del restare a piedi senza ricorrere a costosissime ricariche di emergenza E-Gap?

Ci vorebbe l’equivalente di una “tanica di corrente”, da poter rapidamente ricaricare con 1-2 kWh raggiungendo a piedi una colonnina.

Tecnicamente, si tratterebbe di mettere insieme un inverter a 220V e una batteria; ma l’inverter dovrebbe essere da 3 kW (grosso quanto una 24ore e del costo, forse, di un migliaio di euro; non so il peso), e una batteria al litio da 1 kWh oggi come oggi peserebbe circa 5 kg e costerebbe 4 o 500 euro.

O sennò basterebbe una batteria da 1 kWh, ma da 72V, collegabile direttamente alla Icaro in caso di emergenza; ma su un’auto vera una batteria per connessione diretta dovrebbe essere da 300 o 400V!

La Icaro consuma 0.100 kWh/km, che probilmente diventano 0.050 in modalità lumaca; un’auto consuma in media 0.150 kWh/km, che forse si riducono a 0.100 a bassissima velocità.

Hacking Icaro – Centralina GSM: Man in the Middle Attack – puntata 2

Posted in auto elettriche, hacking, hardware by jumpjack on 11 luglio 2019

Una settimana di studi e teorie non sono valsi l’avere i pezzi tra le mani…

A quanto pare il passo dei due connettori non è di 2mm, ma di 1.27mm! Vale a dire 0.050″.

Quindi sia la striscia di cavi che le pin strip… sono completamente inutili, tocca ricominciare la ricerca da capo.

Per fortuna però ormai ho acquisito un po’ di esperienza nel decodificare i datasheet di questi cavi, e ci è voluto poco: quello che mi serve non è un cavo TCMD o TCSD (passo 2.0mm) , ma un cavo di una famiglia diversa: o FFMD o FFSD  (passo 1.27mm). Si tratta sempre di cavi IDC di tipo TigerEye, ma i pin hanno appunto passo 0.050″/1.27mm. “M” sta per “maschio” e “S” per socket, cioè femmina, poi per il resto la nomenclatura Samtec rimane la stessa, quindi un FFxD-25-D avrà due connettori uguali mentre un FFxD-25-T li avrà di sesso opposto; purtroppo da 2×22 pin non esistono, quindi devo prendere il numero subito superiore, 2×25. Altre famiglie sono FFTP e FMTP, che però hanno i cavi “twistati” a 2 a 2; non significa che i contatti siano “incrociati”, ma solo che i fili sono arrotolati l’uno sull’altro (credo per attenuare le interferenze elettomagnetiche), ma poi terminano da entrambi i lati nella stessa posizione.

Le sigle papabili sono quindi:

  • FFMD-25-T-xx.xx-01: maschio/femmina
  • FFMD-25-D-xx.xx-01: doppio maschio
  • FFSD-25-T-xx.xx-01: maschio/femmina
  • FFSD-25-D-xx.xx-01: doppia femmina

Twisted:

  • FFTP-25-T-xx.xx-01: twisted, maschio/femmina
  • FFTP-25-D-xx.xx-01: twisted,  doppia femmina
  • FMTP-25-T-xx.xx-01: twisted, maschio/femmina
  • FMTP-25-D-xx.xx-01: twisted, doppio maschio

Può darsi che alcune delle combinazioni maschio/femmina non esistano perchè coincidenti con altre sigle.

Purtroppo su https://www.toby.co.uk  un FFMD-25-T-08.00-01-N costa circa 32,00 sterline fra tasse e spedizione.

Su RS-components non ci sono cavi maschio/femmina in magazzino, ma ho visto che la strip-pin con passo 2.0mm che ho ordinato per sbaglio entrano senza sforzo nè gioco nel connettore-femmina della scheda GSM, quindi basterà sfilarne 22 uno per uno e infilarli in uno dei due connettori-femmina per ottenere un connettore maschio; il femmina/femmina più economico è un FFSD-25-D-04.00-01-N, cioè 2×25 pin lungo 4 pollici (10 cm) del costo di 13,54 euro, che con IVA e spedizione diventano 22,62€; prenderò questo e speriamo che stavolta i conti tornino.

 

connettore GSM nero con righello e pin

Tagged with: , ,

Hacking Icaro – centralina GSM – il logger seriale

Posted in minicar elettriche by jumpjack on 13 giugno 2019

Questo primo sketch di prova utilizza una board ESP32 per leggere i dati scambiati tra il microcontrollore e il modem della scheda GSM/GPS della Icaro: vengono letti contemporaneamente i due canali in modo da mantenere la sincronia tra messaggi inviati e ricevuti, e poter meglio ricostruire il dialogo.

Al momento la “registrazione” viene effettuata solo inviando l’output al serial monitor dell’Arduino IDE; una successiva versione memorizzerà i dati o in una SD card, o su un server remoto, in modo che il logger possa essere montato direttamente sul veicolo senza necessità di un PC.

Trattandosi di un generico logger seriale a due canali, può in realtà essere usato per “sniffare” qualunque altra comunicazione seriale tra due dispositivi, o anche per loggare un singolo dispositivo.

Il numero a inizio linea identifica il canale cui si riferisce la linea stessa.


// Greengo/Zhidou/Xindayang GSM logger
// Read data from GSM/GPS logger, from both MCU and MODEM outputs and same time
// using ESP32 board.
// V. 0.1.0 - First working version; logs only to USB/serial port (PC needed).
String tempVal = "";
String row0 = "";
String row1 = "";
int MAXLEN = 50;
void setup() {
// initialize serial:
// Recommendation: use Serial0 and 1 for your duplex devices and serial2 for your debug messages.
// https://github.com/espressif/arduino-esp32/issues/1314
//
// Standard serial pinouts:
// https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/
// UART RX TX CTS RTS
// UART0 GPIO3 GPIO1 N/A N/A
// UART1 GPIO9 GPIO10 GPIO6 GPIO11
// UART2 GPIO16 GPIO17 GPIO8 GPIO7
// But all 3 HW UARTs can be remapped to any pin.

Serial.begin(9600,SERIAL_8N1, 16, 17); // Input 1 (16 = RX)
Serial1.begin(9600,SERIAL_8N1, 4, 2); // Input 2 (4 = RX)
Serial2.begin(9600,SERIAL_8N1, 3,1); // Standard USB-serial port

Serial2.println("Free heap:");
Serial.println(ESP.getFreeHeap());
Serial2.println("--------------------");

}
void loop() {
// read from port 0, send to port 2:
if (Serial.available()) {
int inByte = Serial.read();
/*
Serial2.print("\t0\t0x");
Serial2.print(inByte,HEX);
Serial2.print("\t");
Serial2.print(inByte,DEC);
if (inByte>31) {
Serial2.print("\t");
Serial2.write(inByte);
}
Serial2.println();
*/
tempVal = String(inByte);
row0 += "\t" + tempVal;
if (row0.length() > MAXLEN) {
Serial2.print("0\t");
Serial2.println(row0);
row0="";
}
}
// read from port 1, send to port 2:
if (Serial1.available()) {
int inByte = Serial1.read();
/*
Serial2.print("\t1\t0x");
Serial2.print(inByte,HEX);
Serial2.print("\t");
Serial2.print(inByte,DEC);
if (inByte>31) {
Serial2.print("\t");
Serial2.write(inByte);
}
Serial2.println();
*/
tempVal = String(inByte);
row1 += "\t" + tempVal;
if (row1.length() > MAXLEN) {
Serial2.print("1\t");
Serial2.println(row1);
row1="";
}
}

}
Tagged with: , , , , , ,

Hacking Icaro – il motor controller o centralina

Posted in minicar elettriche by jumpjack on 12 giugno 2019

Premessa

La mia Greengo/Zhidou/Xindayang Icaro modello A1 monta un motor controller della Kelly di tipo KHB72701C, alimentata dai 12V della batteria di servizio e dai 72V della batteria di trazione, che regge 350A continui e 700A di picco (max un minuto).

Considerando un’alimentazione di 72V nominali (che arriva anche a 80V reali a batteria piena), queste correnti corrispondono a 25-28kW continui e 50-56 kW di picco, a fronte dei 6 kW continui assorbiti dal motore della A1 (8 kW di picco nominalmente, che io ho portato a 12 kW riprogrammando il controller).

 

La comunicazione seriale

Oggi finalmente sono riuscito ad avere dalla Kelly un’informazione davvero preziosa: il protocollo di comunicazione tramite porta seriale RS232!

Normalmente usavo la porta seriale per riprogrammare i vari parametri (corrente massima, velocità massima, frenata rigenerativa), tramite l’apposito SW gratuito della Kelly, ma con queste nuove informazioni diventa ora anche possibile leggere una bella quantità di dati:

  1. current physical switch input status
  2. the current Hall sensor “A” signal status
  3. the current Hall sensor “B” signal status
  4. the current Hall sensor “C” signal status
  5. Copying flash data to ram before flash data reading operation
  6. controller’s model no
  7. controller’s SW version (BCD format)
  8. controller’s Throttle low-end dead zone
  9. controller’s Throttle high-end dead zone
  10. controller’s Brake low-end dead zone
  11. controller’s Brake high-end dead zone

E poi i livelli di questi valori analogici:

Gruppo 1 (comando ETS_A2D_BATCH_READ)

0. Brake (posizione pedale freno)

  1. TPS (posizione pedale acceleratore)
  2. Motor temperature
  3. Control power
  4. Vs (tensione di riferimento di 5V dei sensori di hall)
  5. B+ (tensione batteria di trazione)
  6. Controller’s temperature
  7. Ia
  8. Ib
  9. Ic
  10. Va
  11. Vb
  12. Vc
  13. H_Temperature
  14. V+ (tensione alimentazione motor controller – 12V nominali)
  15. L_Temperature

 

Gruppo 2 (Comando ETS_MONITOR):

0. n/a

  1. n/a
  2. Controller’s temperature in gradi Celsius
  3. B+ (tensione batteria di trazione)
  4. TPSx (?)
  5. BRAKEx (?)
  6. n/a
  7. I (phase current)
  8. zero current (?)

E infine:

  • 9. MSB of controller’s error state
  • 10. LSB of controller’s error state
  • 11. MSB of mechanical speed in RPM
  • 12. LSB of mechanical speed in RPM

La numerazione è quella della stringa di risposta del controller.

I codici di errore

La codifica dei codici di errore è piuttosto complicata, e si basa su questa tabella:

data[9]M 7 6 5 4 3 2 1 0 data[9]L
0x44 0x43 0x42 0x41 0x34 0x33 0x32 0x31
data[10]M 7 6 5 4 3 2 1 0 data[10]L
0x24 0x23 0x22 0x21 0x14 0x13 0x12 0x11

La sua interpretazione è parecchio complicata, ho provato a semplificarla, innanzitutto affiancando le due sotto-tabelle relative a data[9] e data[10], che sono MSB e LSB della word, risultando così questa tabella:

Le istruzioni dicono “if(data[9] << 8) | data[10]=0x4008,The corresponding error code is 0x43and 0x14.”.

Cioè, “se il numero che si ottiene affiancando data[9] e data[10] come nella tabella qui sopra è uguale a 0x4008, vuol dire che il codice di errore è ‘0x43 e 0x14′

Questo perchè 0x4008 si può scomporre in 4 – 0 – 0 – 8, che in binario diventa 0100 – 0000 – 0000 – 1000, e mettendo questa fila di 1 e 0 sotto la tabella, si ottiene che bisogna considerare le sole caselle in coincidenza degli 1, ottenendo quindi appunto 0x43 e 0x14.

Al momento però non dispongo ancora di una tabella che dica cosa significhino questi numeri, vedrò se riesco a farmela dare.

Intanto però ecco un’altra tabella, che riassume tutti i comandi elencati nella nota tecnica che mi hanno mandato:

 

La tabella sopra descrive il formato della stringa di comando da inviare sulla seriale, quella sotto la risposta ricevuta.

A me pare che le caselle rosse siano sbagliate, perchè dicono che il comando dovrebbe essere lungo un byte ma io ne vedo 2, quindi dovrò chiedere chiarimenti… anche se al momento lo stato dei sensori di hall è decisamente la cosa che mi interessa di meno.

Le ultime due righe della tabella sotto, anche se si leggono poco, contengono i dati descritti estesamente a inizio articolo.

Adesso devo “solo” o trovare un programma per leggere/scrivere dati grezzi sulla seriale,… o scrivermelo.

La documentazione

Cercando su google il titolo del documento che la Kelly mi ha mandato ho trovato due link utili:

C’è poi anche la risposta a un mio vecchio post su Endlesssphere, che suggerisce che le Kelly aderiscano allo standard SAE J1939-21 , che permetterebbe di leggere questi dati:

[*]The running direction
[*]The high and low speed
[*]Mode selection
[*]Speed low byte (motor rpm)
[*]Speed high byte (motor rpm)
[*]Low power consumption mode
[*]Subtotal mileage. low byte
[*]Subtotal mileage. high byte
[*]Fault code
[*]DC voltage- low byte
[*]DC voltage – high byte
[*]Motor current- low byte
[*]Motor current – high byte

Questo potrebbe essere un dispositivo utile per collegarsi al CANBUS, tramite PC o tramite Arduino:

https://www.cooking-hacks.com/documentation/tutorials/can-bus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo

 

Diario elettrico Greengo Icaro – 31 maggio 2019, di nuovo su strada

Posted in minicar elettriche by jumpjack on 1 giugno 2019

E’ stata davvero dura.

3 mesi di attesa, 1300 euro, e un’auto “forse riparata”.

Dettagli qui:

https://www.forumelettrico.it/forum/assistenza-t5792.html

Riassunto:

  • Sostituito BMS.
  • Sostituita batteria servizi da 12V.
  • Estremamente insoddisfatto dell’assistenza ricevuta.
  • Spesa di 1.300,00 euro.
  • Nessuna possibilità di rivolgersi ad altri per l’assistenza.
Tagged with: , , ,

Hacking Icaro – puntata 4, il computer di bordo – 22 marzo 2019

Posted in minicar elettriche by jumpjack on 22 marzo 2019

Ho trovato un manuale relativo a un  computer di bordo della Etheria (con l’H) sul sito della Eteria  (senz’H)…. che potrebbe forse essere lontanamente utile anche per il computer di bordo della icaro:

OBC – ONBORD COMPUTER – DigiLance Line – DISPOSITIVO DI CONTROLLO DI BORDO E SUPPORTO REMOTO – ver. 1.80

A vederla è totalmente diversa da quella della Icaro, ma chissà…

Ecco alcuni passi interessanti del manuale:

Il Firmware che gestisce TMI/VT è in costante aggiornamento e gli aggiornamenti sono a disposizione dei
possessori dei dispositivi TMI/VT regolarmente acquistati.
Sono disponibili sul sito http://www.Etheria.it nell’Area di Supporto al Cliente. L’ aggiornamento, una volta
scaricato, va copiato su una chiave USB per i TMI e su una scheda SD per i VT. Dovrebbe essere un file
denominato DE_update.zip. Va copiato nella directory principale della chiave USB/scheda SD.
Gli aggiornamenti permettono di migliorare le prestazioni di TMI/VT e/o di fornire delle nuove funzionalità. Si
consiglia quindi di aggiornare costantemente TMI/VT all’ultima versione disponibile per il proprio dispositivo.
Controllate quindi periodicamente sul sito http://www.Etheria.it o contattate l’assistenza per verificare se sono
disponibili nuovi aggiornamenti.

 

C’è anche qualcosa a proposito di “sequenze speciali” per attivare una “modalità avanzata”, necessaria per aggiornare il firmware, ma anche per salvare in una chiavetta USB il log di tutte le trasmissioni effettuate:

[….]

PREMESSA: per la prossima operazione si deve considerare l’area appena sotto il pulsante MENU come esso stesso un pulsante; cioè sarà necessario premere col dito tale zona come se vi fosse un pulsante; tale zona di seguito sarà chiamato SPAZIO

4) E’ necessario entrare nella schermata di Configurazione Avanzata; per fare ciò è necessario tenere premuto il pulsante finché non viene emesso un segnale acustico ed il pulsante non torna alla colorazione da non premuto; a questo punto premere in rapida sequenza i seguenti pulsanti (la sequenza va completata in meno di 3 secondi da quando è stato emesso il segnale acustico per la pressione prolungata di ):
SPAZIO – MENU – SPAZIO – MENU

Attendere che compaia una schermata con un tastierino numerico ed alcuni altri pulsanti. Se non dovesse apparire ripetere la sequenza precedente, premendo con sufficiente decisione e rapidità.

5) Premere il tasto “Aggiorna” come mostrato in figura

Poi c’è anche:

Le procedure di Ripristino sono attuabili tramite l’avvio del TMI/VT in modalità denominata Safe. Non sono
eseguibili in condizioni di utilizzo normali.

E questa strana procedura:

Seguire questa procedura per arrivare al Menù Avvio e Calibrazione:
1. Spegnere completamente il TMI/VT.
2. Per questo passo è necessaria rapidità di intervento e precisione: leggere quanto segue prima di avviare TMI/VT.
Avviando il TMI/VT da spento compare un primo logo su TMI (aspettare il secondo su VT) .
Quando appare premere lo schermo tempestivamente, in un punto qualsiasi […]
Seguendo le istruzioni premere per 3 volte lo schermo in un punto qualsiasi entro 2 secondi.
Se la procedura è eseguita correttamente apparirà un schermata con 2 pulsanti e la scritta “Premere un pulsante per effettuare la scelta desiderata, oppure cliccare su qualsiasi altro punto per ricalibrare”.

Invece questo potrebbe essere un problema, visto che non rispondono al telefono:

Ripristino: Contattare l’assistenza del prodotto per effettuarla (è un’operazione complessa e delicata).

Molto interessante invece questa parte:

Appendice E. Salvataggio su chiave USB dei log
Avviare il TMI/VT normalmente. Per procedere al salvataggio log seguire i seguenti passi:
1) Seguire la procedura illustrata nell’Appendice A nei punti da 2 a 4
2) Digitare il Codice Ripristino o Installatore, fornito dall’installatore. E’ un codice di 8 cifre che attiva
varie funzioni di configurazione avanzata
3) Premere il pulsante Salva Log e seguire le istruzioni (inserire una chiave USB/scheda SD
nell’apposita fessura ed attendere il salvataggio del file “Logs_TMI.zip”, un file compresso che
contiene i vari log di sistema suddivisi in file)
Se presente il modulo OPZIONALE Modem tra essi ci saranno i file contenenti:
• le chiamate effettuate e ricevute
• gli stati inviati
• i messaggi ricevuti ed inviati.

Tagged with: , , ,

Ancora un po’ di storia delle origini della Greengo

Posted in minicar elettriche by jumpjack on 22 marzo 2019

Rricerca precedente

Nuovi dati desunti a partire da questa pagina.

 

  • In principio c’era l’università di Parma.
  • Poi nel 2002 nacque lo spinoff Etheria.
  • Nel 2003 diventa partner di H3G Italia.
  • Nel 2004 il Gruppo SCE Elettronica di Modena acquisisce la quota maggioritaria dello Spinoff, con l’obiettivo di focalizzare la produzione attorno al progetto CameraCar: sistema digitale di videocontrollo per mezzi in movimento.

La loro storia ufficiale finisce qui…. ma io so che nel 2006 nasce il progetto Icaro, realizzato da una ditta di cui ora non ricordo il nome (gener… qualcosa?)  in collaborazione con una certa ditta C.S. di Modena, la “Convertitori Statici”…. quella che poi diventerà “C.S. Group”, attuale proprietaria del marchio Sharengo, marchio di carsharing basato appunto sulle Greengo Icaro.

Cercando “Gruppo SCE Elettronica di Modena” escono fuori vari indirizzo… tra cui anche un http://www.sce.it che avevo già provato qualche mese fa e risultava defunto, mentre ora risulta vivo e vegeto. Questo l’elenco dei siti forniti dalla ricerca:

 

L’home page del sito SCE Group è interessante:

 

Compaiono infatti sia la C.S. che Etheria.

Nella pagina della SCE si legge poi:

BMS E BATTERIE AL LITIO Dal 2007 SCE produce sistemi con celle al litio in sostituzione delle tradizionali batterie al piombo con BMS modulare ITALIANO. 

Cioè, poco dopo la creazione della Greengo e delle Icaro, ovviamente la SCE, ditta di “elettronica personalizzata” è entrata nel mercato dei BMS e delle batterie al litio.