Jumping Jack Flash weblog

Il motore elettrico del Piaggio Zip e del Peugeot Scoot’elec

Posted in scooter elettrici by jumpjack on 7 ottobre 2019

Negli anni 2000 in Italia circolavano vari scooter elettrici: Peugeot Scoot’elec, Malaguti Ciak, Italvel Day, Oxygen Lepton, Piaggio Zip.
Avevano prestazioni piuttosto scadenti, con potenze massime di meno di 2 kW, pesanti batterie al piombo o al NiCd, accelerazione scarsa, autonomia scarsa… però è interessante studiarne la storia e la tecnologia.

Questo PDF (ahime’ in francese) studia un motore elettrico che  era montato sul Piaggio Zip e sul Peugeot Scoot’elec:
http://www.siloged.fr/cours/td/dev_motorisation_c.pdf

Il motore era uno SCHABMULLER modello N130/1.5RK, a corrente continua e ad eccitazione separata, con queste caratteristiche tecniche (fonte 1, fonte 2, fonte 3 , fonte 4):

  • Resistenza interna: Rinducteur = 0.6400 Ohm
  • Resistenza avvolgimenti: Rinduit = 0.0052 Ohm
  • Potenza nominale Pn = 1300 W
  • Potenza massima: 3 kW per 5 minuti
  • velocità nominale Nn = 4300 rpm
  • Corrente nominale In = 120A
  • Tensione nominale Un = 18V
  • Rendimento: >68%
  • Massima pendenza superabile Scoot’elec: 17%

Partendo dal codice di questo motore ho trovato svariati altri documenti che illustrano il motore stesso ma anche dettagli tecnici dello Scoot’elec.


Lo scoot’elec esisteva anche in un’altra variante con motore Schabmuller TB14-130-500. Le batterie erano al NiCd con elettrolita ai sali di potassio, prodote dalla SAFT, modello SMT; 3 batterie da 6V e 13 kg ciascuna, probabilmente STM 5-100 MR da 100Ah raffreddate ad aria.

Altri modelli SAFT STM:

  • STM-5-100 MRE 100Ah raffreddate a liquido, 54 Wh/kg e 87Wh/L  a C/3
  • STM-5-140 MR 136Ah raffreddate ad aria, 54 Wh/kg, 95 Wh/L a C/3

 

Caricabatterie dello Scoot’elec:

  • Modello: OPT1400C
  • Input: 230V/6.5A (7A max), cosFi = 1
  • Output: 26V/50A
  • Corrente di equalizzazione: 5A
  • Corrente di mantenimento: 0.1A

Parametri elettrici misurati:

  • Assorbimenti a velocità costante:
    • 0.5 km/h: 15A
    • 30 km/h: 30A
    • 45 km/h: 80A
    • 34 km/h su pendenza del 10%: 103A
  • Assorbimenti in accelerazione:
    • 1.0 m/s2: 67A
    • 1.5 m/s2: 97A
    • massima in pianura: 107A
    • massima su pendenza 17%: 198A

 

Nel documento si calcolano vari parametri del motore:

  • Tensione necessaria a 4300 rpm: 17.34V (*)
  • Costante elettrica Ke: 0.242 (**)
  • Corrente per coppia di spunto in salita di 14 Nm: 583 A  (***) –> 58.3A

(*) La tensione necessaria per far girare il motore velocità nominale è data dalla tensione di batteria meno la tensione prodotta dal motore a corrente nominale:

  • E = (Un – Rinduit) = 18V – 0.0052 Ohm * 120A = 17.37 V

(**) Ke viene calcolata come rapporto tra tensione a regime e giri nominali:

Ke = E/Nn

Con:

  • E= 17.37V
  • Nn = 4300 rpm = 71 giri/secondo

Da cui:

Ke = 0,24

 


(**) errore di calcolo!

Nel documento questa corrente viene calcolata come rapporto tra la coppia massima e la costante Ke:

I = T/Ke

La costante Ke è stata precedentemente calcolata nel documento stesso (par. I.6) in 0.242, ma poi viene erroneamente considerata pari 0.024 nei calcoli! Quindi in realtà la corrente di coppia massima non è di 583A (un valore altissimo che fonderebbe il motore), ma 58.3A.

Come calcolare scientificamente i consumi di un’auto

Posted in auto elettriche, minicar elettriche, scooter elettrici by jumpjack on 17 settembre 2019

La formula generica del “carico stradale”

Per sapere quanto consuma un’auto prima di acquistarla, ci si può basare sulle  informazioni raccolte da enti come l’americano EPA, che effettua sulle auto prove e misure che permettono di compilare tabelle come questa.

In questa tabella sono riportati i coefficienti legati al “carico stradale” (o comunque si traduca “road load”), ossia i coefficienti di questa equazione:

F = A + Bv + Cv^2

Si tratta di una forma molto compatta della formula completa che esprime la forza totale che agisce su un veicolo in movimento a velocità costante, che è del tipo:

F = (Am + Bmv + CmV^2)  +  (0.5 * rho * Cd *  A * V^2 )  +   (m *g *  dh/ds)

o anche

F = m * g * Crr    +    0.5 * rho * Cd * A  * v^2  + m * g* sin(alfa)  = K +  Hv^2

 

L’attrito volvente (rolling friction)

Se gli esponenti in quest’ultima formula non tornano con la prima (manca il  termine in v) è perchè il coefficiente di attrito di rotolamento Crr in realtà non è perfettamente costante ma varia anch’esso con la velocità, anche se in modo più complesso rispetto a Cd: è quasi costante fino a velocità di 70-80 km/h, aumenta quasi linearmente per velocità fino a 100-120 km/h, poi aumenta esponenzialmente; quindi l’equazione che lo definisce deve avere termini costanto, in v (lineare) e in v^2 (esponenziale), che vanno quindi a complicare l’equazione K +  Hv^2 aggiungendo il termine in v.

Il coefficiente Crr (o Cr) è dato dal rapporto tra la forza di attrito volvente Frr, che si oppone al moto, e la forza-peso che agisce sulla ruota, Fz, quindi è un numero adimensionale (fonte 1):

Crr = Frr/Fz

Valori tipici di Crr si aggirano intorno a 0.010 (o 10 kilogrammi per tonnellata), ma alcuni pneumatici progettati specificamente per ridurre i consumi possono scendere a 0.008 (8 kg/t) (fonte 4).

 

Valori tabulati dei coefficienti di carico stradale

L’EPA compila queste tabelle, in cui sono presenti appunto i suddetti coefficienti A, B e C.  Normalmente servirebbero per programmare il dinamometro su cui viene messa un’auto per testarla, ma si possono (forse?) anche usare per determinare teoricamente la potenza assorbita a una data velocità (essendo P = F*v); in queste tabelle vengono forniti due gruppi di parametri: i “target coefficients” e i “set coefficients”; i primi sono forniti dal costruttore, insieme al valore RLHP50 (Total Road Load Horse power at 50 mph); questi dati vengono usati preliminarmente per impostare il dinamometro che dovrà testare il veicolo; effettuata un primo test, è possibile dedurre quali sono le perdite intrinseche del veicolo (in pratica, i contributi di Crr e Cd) queste perdite vanno quindi sottratte ai coefficienti “target”, in modo da ottenere i coefficienti “set”, cioè quelli effettivamente da impostare sul dinamometro affinchè simuli correttamente il carico stradale. In pratica, il dinamometro deve essere tarato in modo da esercitare sull’auto una forza che simuli attrito dell’aria e attrito delle ruote, usando però solo le ruote, quindi deve essere opportunamente tarato per “simulare il vento”. Quindi, per calcolare i consumi di un’auto a velocità costante, nella formula F = A + Bv + Cv^2 bisogna inserire i “set coefficients“.

Dalla Fonte 7:

The target coefficients (A, B, and C) utilized for the dynamometer testing were directly derived from the coastdown testing. […] Immediately following this warm-up, the dynamometer coastdown correlation procedure was executed to determine the vehicle losses. [… ]The vehicle losses and target coefficients were used to derive the dynamometer set coefficients required for testing, which dictate the actual loading of the dynamometer onto the vehicle under test. 

 

Sull’inerzia rotazionale delle ruote

Le ruote non si oppongono al moto solo tramite l’attrito volvente, ma anche tramite la loro inerzia; nel primo caso si ha una forza che agisce sia in accelerazione che a velocità costante; nel secondo caso la forza agisce solo in accelerazione; se cioè si imprime al veicolo una forza Fa per accelerarlo, bisognerà considerare la forza Fd che l’inerzia esercita per decelerarlo, e sarà non solo l’inerzia dovuta alla massa del veicolo, ma anche quella dovuta alla rotazione delle parti rotanti: motore, albero di trasmissione e ruote. Il contributo di forza dovuto agli organi rotanti si può calcolare considerando la “massa inerziale virtuale” che corrisponde alla forza necessaria per mettere in rotazione questi organi; sommandola alla massa effettiva, si ha la “massa equivalente”.

In generale, per un veicolo, se non si hanno i dati esatti, si può considerare come massa equivalente:

Meq = Mreale + 0,04*Mreale

Bisogna cioè aggiungere alla massa reale del veicolo il 4% di essa (fonte 4), ossia se un veicolo pesa 1000 kg, per metterlo in movimento servirà una forza pari a

F = (1000 + 40) * A

anzichè semplicemente

F = 1000 * A

Per la ruota in sè, la massa equivalente è data da:

Meq = Mreale + 0.5*Mreale

Bisogna cioè aggiungere alla massa effettiva della ruota il 50% della stessa, per tenere conto dell’inerzia rotazionale.

La formula generica sarebbe:

Meq = Mreale + I/R^2

Ma per calcolarla bisognerebbe conoscere il momento di inerzia I della ruota, espresso in kg/m^2 , dato che non sempre è disponibile o calcolabile.

Esempio. Per uno pneumatico 175/70/R13 MXT si ha:

  • Mcerchione = 6.1 kg
  • Icerchione = 0.125 kg.m2
  • Mpneumatico = 7 kg
  • Ipneumatico = 0.456 kg.m2
  • Raggio = 0.28 m

Facendo i calcoli:

  • Massa rotazionale del cerchione = 0.125/(0.28^2) = 1.59 kg
  • Massa rotazionale dello pneumatico = 0.456/(0.28^2) = 5.81 kg
  • Totale massa rotazionale: 7.40 kg
  • Percentuale rispetto a massa inerziale: 7.40/13.1 = 57%

La massa totale di cerchione e pneumatico è di 13.1 kg, ma la massa equivalente è 20.5 kg

I quattro pneumatici aggiungerebbero quindi una massa virtuale rotazionale di 4*7.4 kg, che rispetto a un veicolo di 1500 kg, sono il 2%.

Si tratta però solo del contributo di  cerchioni e  pneumatici, a cui poi bisogna aggiungere quelli di motore e trasmissione, ovviamente non calcolabili direttamente. Di qui l’uso del suddetto “valore tipico” del 4%.

 

Fonti

  1. Rolling Resistance Modelling From Functional Data Analysis to Asset Management System –  Lasse G. Andersen  – PhD Dissertation  – 2015
  2. Road load determination of passenger cars – Gerrit Kadijk, Norbert Ligterink – 2012
  3. “Rolling Resistance”, in “The Automotive Chassis (Second Edition), Jörnsen Reimpell , Jürgen W. Betzler – 2001”
  4. “The tyre – Rolling resistance and fuel saving”, Michelin, 2003
  5. TEST PROCEDURE – Driving Resistance – Green Ncap – 2019
  6. Determination and Use of Vehicle Road-Load Force and Dynamometer Settings – US EPA – 2015
  7. The Measured Impact of Vehicle Mass on Road Load Forces and Energy Consumption for a BEV, HEV, and ICE Vehicle – R. Carlson, Idaho National Laboratory et. al. – 2013

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à.

Diario elettrico Greengo/Zhidou Icaro: 2 agoto 2019 – problemi al motore

Ieri mattina, 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, e l’ago del tachimetro ha iniziato ad andare su e giù a vanvera; mi sono fermato, ho spento e riacceso, e tutto ok, ma la cosa è un po’ preoccupante, perchè sembra decisamente 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…

Stamattina 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 sembra 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, salturari depotenziamenti.

L’alernativa sarebbe forse cambiare il cavo che contiene i fili del sensore di hall, che magari si è deteriorato; ma il cavo costa 30 euro e la spedizione dalla Cina 35 euro….

Vedremo.

——————

A proposito del problema del depotenziamento, sono arrivato per ora a  questa conclusione:

il depotenziamento ha due possibili cause: il BMS, e il motorcontroller;

  1.  pare che il BMS sia tarato per tagliare la potenza se legge una differenza di tensione superiore a un tot tra cella più alta e cella più bassa; in origine sono 300 V, ma pare che nelle versioni successive di auto e/o BMS abbiano modificato o tolto questo limite, come è stato fatto sulla mia Icaro. Sulla quale però ogni tanto, anche se più raramente, il problema si ripresenta. E quindi entra in gioco una seconda possibile causa.
  2. anche il motorcontroller è tarato per tagliare la potenza in base alla tensione, ma di tutta la batteria: succede sia in accelerazione, se la tensione scende troppo, che in frenata rigenerativa, se la tensione sale troppo.

Abbassamenti eccessivi non ne ho mai rilevati in accelerazione, nonostante i 250A tirati fuori al posto dei 150A di origine (a seguito di una mia rimappatura della centralina), ma in compenso a volte mi è capitato di trovare la batteria a 81V la mattina, appena caricata, e a volte addirittura a 85V se si era appena spento il caricabatterie; trattandosi di 24 celle, significa 3.375V  e 3,54V per cella; se in questa situazione esco dal parcheggio, che ha una rampa in discesa, la tensione probabilmente sale ulteriormente (non ho un logger, devo vedere tutto a occhio), e la centralina va in protezione. Nella schermata 2 del SW di configurazione si possono impostare le soglie di intervento del regen (voce 5, nota 4)

La spiegazione dice:

  • Under voltage [3]: Controller will cut back current at battery voltage lower than 1.1x he value, cut out at the vale, and resume operation at 1.05x value
  • Over voltage [4]: Controller will cut back regen current at 0.95x the value, cut out regen if voltage reachd the setting, and resume regen at 0.95x value.

Traduzioni:

  • Sottotensione [3]: il controller ridurrà la corrente quando la tensione di batteria scenderà sotto 1.1 volte il valore impostato, la taglierà completamente quando raggiungerà esattamente il valore impostato, e la ripristinerà solo quando la tensione risalirà ad almeno 1.05 volte il valore impostato.
  • Sovratensione [4]: Il controller ridurrà la rigenerazione quando la tensione raggiungerà il 95% del valore impostato, lo azzererà al raggiungimento del valore esatto, e ripristinerà al ragiungimento  del 95%.

In questo caso ci interessa il punto 2 (sovratensione), l’altro riguarda la corrente esratta dalla batteria in accelerazione.

La Icaro monta 24 celle LiFePO4; in genere le LiFePO4 (ma ce ne sono tante varianti) hanno tensione massima di 3.33V e tensione di ricarica finale di 3.65V; a livello di batteria quste tensioni equivalgono a 80V e 87,6V. La tensione di ricarica finale permane però solo finchè resta collegato il caricabatteria; quando si stacca, la tensione decade spontaneamente a 3.33V/80V.

Il 95% di questi due valori massimi è:

  • 80.0 * 0.95 = 76 V
  • 87.6 * 0.95 = 83.2 V

Non ho invece modo di sapere quali sono i valori di intervento del BMS, quindi devo supporre che il BMS non effettui nessun intervento, ed agire quindi solo sul motorcontroller, assicurandomi che riduca la tensione di regen quando la tensione supera i 76V, e lo tagli completamente se supera gli 80V.

Purtroppo non ricordo a quanto impostai questa soglia l’anno scorso, però so che sia in ufficio che a casa l’uscita dal parcheggio (occasione in cui spesso si verifica il depoteniamento automatico) c’è una rampa in discesa; se a casa sicuramente parto con la batteria a 80V (a volte anche 81V), in ufficio, dopo 10 km di viaggio, mi pare difficile partire con questa tensione, ma la verità è che non ho mai controllato, mi sono sempre limitato a controllare che la tensione di cella non SCENDESSE sotto livelli critici, non ho mai pensato a verificare che non salisse troppo.

Dovrò quindi risistemare un po’ i parametri della centralina: o disattivo completamente il regen – cosa che renderebbe solo fastidioso, anzichè pericoloso, il problema dei sensori di hall –  oppure cambio la soglia di intervento in modo che la tensione di batteria non superi mai gli 80V a causa del regen.

 

 

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.