W201 2.0 8V -> 2.8 24V MS2 V3.0

Mersujen (ja vain Mersujen tai suoraan niihin liittyvät) korjaustarinat, -ohjeet ja muut vastaavat projektikertomukset.
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Jatketaan. Testiajelullakin kävin. Vaihteet toimii, ei vuoda nesteitä. Jarrunestevuotoa korjatessa vaihtui kytkimen pääsylinteri ja säiliön ja pääsylinterin välisestä letkusta pala. Trikkerin osalta huomasin, että yksi maadoitus oli kiristämättä. Sen kiristin ja tänään jatketaan ihmettelyä.

Arduinon osalta kirjastot testattiin "labraolosuhteissa" ja kaikki funktiot palauttavat oikeita arvoja vastaavalla jännitteellä. CAN-väylää varten laitoin hyppyjohdot

JS6 -> SPR1 = CANH
JS8 -> SPR2 = CANL

Manuaalin mukaisesti (s. 38). Enää tarvitsee tuoda vain megan liittimestä Arduinolle johdot.

Vanteiksi tulee aidot 17x7,5J ET35 Monoblockit. Renkaiksi tulee 215/40R17, joilla saa puolen tuumaa lisää maavaraa nykyiseen kokoonpanoon verrattuna (215/40R16). Vanhalla kokoonpanolla matalin kohta (keskivaimennin) on 75mm maasta, eli pieni korotus on tervetullutta. Samalla kaaret täyttyy vähän paremmin.

To do lista tällä hetkellä:
  • Jarrunestevuodon paikantaminen ja korjaaminen (kytkimen pääsylinteri kenties)
  • Ruostekorjaukset
  • (Mittaristo, tehdään jos ehtii kaudelle/kauden aikana)
  • Korisarjan kiinnitykset kuntoon
  • Katastus ja muutoskatsastus (vanteet 16->17)
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Juha_M117
Mersumies
Mersumies
Viestit: 990
Liittynyt: La 31.10.2009 16:56
Paikkakunta: Lappeenranta
Viesti:

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Juha_M117 »

Ei mulla muuta kuin että aivan käsittämättömän hieno projekti ja ihailen sun osaamista ja tätä vaivannäön määrää. :thumbup:
1989 560 SEC
1981 380 SL
1985 190 E 2.0
2007 Corvette
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Juha_M117 kirjoitti: La 28.01.2023 12:50 Ei mulla muuta kuin että aivan käsittämättömän hieno projekti ja ihailen sun osaamista ja tätä vaivannäön määrää. :thumbup:
Kiitoksia :thumbup: Eihän tässä mitään järkeä ole, mutta mukavaa puuhastella :D
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Trikkerissä on edelleen häikkää, täytyy katsoa maadoitukset huolella ja tarvittaessa viikonloppuna kaivaa oskilloskooppi esille... Sitä kun ei saanut kuntoon niin laitoin ajankuluksi puskurin, ulkolämpötila-anturin ja CAN-väyläkaapelin kiinni.


Ulkolämpötila-anturi, alunperin tenavasta ja vuosimallia -85. Mittasin n. 5kΩ (taulukosta 13-14°C) hallille tullessani ja hallin lämmityksen jälkeen n. 4kΩ (18-19°C). Hyvin tuntuu pelaavan 38-vuotiaaksi.

Kuva

Manuaalissa (s. 39) mainitaan, että CAN-väyläkaapeli tulisi olla kierrettyä paria. Nettiä tutkittuani suorilla langoillakin on saatu toimimaan, mutta ajattelin testata jotain. Toivottavasti väylä ei ole parien tasaisuudesta tarkka, koska Deuzer-menetelmällä jälki on mitä on :D

Kuva

Kuva

Kuva

Kuva

Sunnuntaina kävin vanteet hakemassa. Aidot kunnostetut ja kunnostamisen jälkeen eivät ole olleet kiinni. Melko herkut 8)

Kuva

Kytkentäkuvaan tuli myös päivitystä. Täytyy jossain kohtaa suunnitella ja tulostaa kotelo tuolle. Sisään- ja ulostuloja Arduinossa on reilusti, joten koteloonkin täytyy laittaa laajennusvaraa.

Kuva


To do lista tällä hetkellä:
  • Trikkerihäiriö kuntoon
  • Ruostekorjaukset
  • (Mittaristo, tehdään jos ehtii kaudelle/kauden aikana)
  • Korisarjan kiinnitykset kuntoon
  • Katastus ja muutoskatsastus (vanteet 16->17)
EDIT: Kuvat
Viimeksi muokannut Mighty190, Ma 27.02.2023 10:37. Yhteensä muokattu 1 kertaa.
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Noniin. Otin datalogia ilman häiriösuodattimia ja pääsin jollekin jäljelle. Nokka-akselin signaaliin näyttää tulevan häiriötä. Toki molemmat anturit ovat saman piirin kautta yhdessä, joten kampiakselin häiriö voi näkyä nokassa ja toisinpäin.

Datalogeja (Composite) jaoin muutamaan tilanteeseen, 1-4.

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Nokka-akselissa näkyy selvästi liian lyhyttä, liian pitkää ja todella nopeaa kanttia. Syytä lähdin etsimään maadoituksista ja tässä yksi melko mahdollinen:

Kuva

Puolien ohjauspiirit ovat purkin sisällä ja samassa 5V kuin VR-muunnin. Rakensin joskus ohjauksen niin, että 5V puolta ohjataan ja maadoitus on koko ajan kiinni. Nyt kun puola liipaisee ja loogisen tason ja "ison virran" maadoitukset ovat saman pultin alla korissa, niin sitä kautta voi tulla häiriö 5V linjaan ja sitä kautta VR-muuntimelle. Yhtä mahdollista on sekin, että nokka-akselin tunnistin on huono, tai että jompikumpi anturin johdoista ottaa häiriötä.

Kokeilen tuota maadoituksen uudelleen kytkemistä niin, että puolien "looginen" maa tulee Megan anturimaadoitukseen tai lohkoon. Taidan kokeilla myös nokka-akselin johdon irroittamista ja/tai anturin vaihtoa. Pelkkä anturin irroittaminen tekee johdosta kyllä antennin, että ehkä täytyy joku vastus viritellä johtoon. Jatketaan...

To do lista tällä hetkellä:
  • Trikkerihäiriö kuntoon
  • Ruostekorjaukset
  • (Mittaristo, tehdään jos ehtii kaudelle/kauden aikana)
  • Korisarjan kiinnitykset kuntoon
  • Katastus ja muutoskatsastus (vanteet 16->17)
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Noniin. Eilen tuli tehtyä suuri harppaus trikkerihäiriön kanssa. Kytkin puolien maadoitukset irti toisistaan edellisen viestin mukaisesti ja sillä ei ollut vaikutusta. Otin tässä vaiheessa skoopin käteen ja lähdin ensin tutkimaan kampiakselin signaalia (liittimet olivat helpommin saatavilla :D).


Kuva

Sieltähän löytyi häiriötä ja se vaikuttaisi olevan jokaisella hampaalla, joten ehkä kyse on enemmän signaalin laadusta kuin häiriöstä. Kokeilin lisätä 10kΩ vastuksen kampiakselin VR-anturin johtoon ilman sen suurempaa vaikutusta. Otin sen pois ja lisäsin 16mm² maadoitusjohdon moottorille, silläkään ei suurempaa vaikutusta (aluksi).

Lopulta aloin pohtimaan häiriösuotimia ja niitä virittelemällä sain koneen kiertämään ongelmitta. Alla on esimerkki häiriösuodattimen käyrästä.

Kuva

Kun hammas on rekisteröitynyt megalle, niin sen jälkeen esim. 1000 kierroksen kohdalla tulee 400µSec periodi, jossa ei oteta vastaan uusia signaaleja.

Herää kysymys, kuinka suureksi tuon arvon voi laittaa eri kierrosluvuille? Se riippuu siitä, kuinka paljon oikeiden signaalien välillä on välimatkaa ajassa.

Kuva

Tähän vaikuttaa eri trikkerit, mutta omalla kohdalla tilanne on näin:

Kuva

Periaatteessa, jos filtteri on alle 400µSec 2500RPM kohdalla, niin validia pulssia ei hukata. Todellisuudessa ihan noin lähelle ei kannata viedä. Eilen jäi vielä ~6500RPm kohdalle pientä häiriötä ja taulukosta validien pulssien väli on ~153µS. Huomionarvoista tässä on se, että nämä arvot on laskettu täydellisen sinikäyrän avulla ja tuskin käy ollenkaan, jos viritän suodattimen 6500RPM kohdalla 153µS arvoon. Mutta hyvä katsoa, että mikä on ehdoton maksimi.

Aloin suunnittelemaan anturoinnin koteloa ja sekin on jo melkolailla valmis. CAN-väylän liitin jäi hallille, niin siitä en saanut mittoja eikä näy tuossa kannessa.

Kuva

OnShapen kanssa noita teen ja on kyllä hyvä (ja ilmainen) työkalu 3D-suunnitteluun. Kuvassa näkyy kansi ja kotelo, jossa kannessa on virtaliitin (pyöreä), kaksi paikkaa 9-napaiselle liittimelle (1 tulee käyttöön) ja tietysti pultinreiät.

Otin tuosta testitulostukseen osia ja tässä tulosta:

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Testitulosteet tein valkoisella PLA-muovilla ja oikeat osat tehdään mustasta PETG-muovista. Kotelo on jo tulostumassa:

Kuva

Hyvän kun haluaa niin menee hetki aikaa :D Tuon saisi tulostettua nopeamminkin, mutta halusin tulostaa tuon ilman tukimateriaalia.

Vanteet käytin Leistilä Tyresillä, tässä menomatkasta kuvaa:

Kuva

To do lista tällä hetkellä:
  • Trikkerihäiriö kuntoon
  • Ruostekorjaukset
  • (Mittaristo, tehdään jos ehtii kaudelle/kauden aikana)
  • Korisarjan kiinnitykset kuntoon
  • Katastus ja muutoskatsastus (vanteet 16->17)
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
hismajestics
Mersumies
Mersumies
Viestit: 1764
Liittynyt: La 16.10.2010 21:44
Paikkakunta: Helsinki

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja hismajestics »

Vaikuttavaa 8)

3D-mallinnukseen/tulostukseen liittyen... jos esim. nopeusmittariin suunnittelisi uuden välityksen rattaat, niin mitä muovia tulisi käyttää tulostuksessa? Riittääkö kirjaston tulostimien "taso" rattaiden tulostukseen?
//johannes

---------------------
250CE -72 M104 3,2L

Projektiketjut: http://www.mersuforum.net/forum/viewtopic.php?f=27&t=156709

http://www.mersuforum.net/forum/viewtopic.php?f=27&t=121349
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

hismajestics kirjoitti: Su 05.02.2023 17:53 Vaikuttavaa 8)

3D-mallinnukseen/tulostukseen liittyen... jos esim. nopeusmittariin suunnittelisi uuden välityksen rattaat, niin mitä muovia tulisi käyttää tulostuksessa? Riittääkö kirjaston tulostimien "taso" rattaiden tulostukseen?
Nylonia käytetään yleensä rattaissa, väittäisin alkuperäistenkin olevan sitä. Nylonin tulostuksessa haasteena on warping (kappaleen reunat erkanee tulostusalustasta), jota minimoidaan kotelolla ilmavirran vähentämiseksi. Toinen mikä voi tulla vastaan, on tulostuslämpötila, joka on nylonilla 230-260°C. Todella pienten rattaiden tulostamiseen voi tarvita pienemmän suuttimen kuin vakio (0,4mm vakiona yleensä).

Eli jos kotelo löytyy ja kestää langan vaatiman lämmön niin onnistunee. Tulostusalustan täytyy olla myös lämmitetty, 40-70°C :thumbup:
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Tarinointi jatkuu.

Kotelosta tuli yllättävän hyvä. Molempien osien, kotelon ja kannen kanssa selvisi yhdellä tulostuksella. Testikappaleista oli hyötyä, koska kanteen olisi jäänyt yksi mittavirhe.

Kuva

Kuva

Kuva

Liittimet kannessa

Kuva

Kuva

Tämän jälkeen sovittelin komponentteja piirilevylle. Musta on Arduino Mega 2560 ja sininen MCP2515 CAN-väylämoduuli

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Johtosarja I/O-yksiköltä mittariston taakse anturien kytkentää varten

Kuva

Kuva

Kuva

Ensimmäinen anturi todettu toimivaksi (ulkolämpötila) ja samalla voi todeta, että jännitejako on mietitty oikein.

Kuva

I/O-yksikön ja anturien välinen yhteys on todettu ja yritin samalla saada CAN-väylästä jotain irti siinä kuitenkaan onnistumatta. Täytyy se este vielä selättää ennen kuin laitan koodia jakoon :crazy:

Anturoinnista: Ajatus on, että Arduino on käytettävissä CAN-väyläkommunikointiin aina tarvittaessa ja tämän varmistamiseksi esim delay()-funktiota en käytä. Mittaustaajuutta hallitaan siis millis() komennon avulla ja näin varmistetaan asynkronisuus. Anturin arvo haetaan määritetyn ajan välein ja lisätään kymmenen arvon listaan, josta luetaan keskiarvo aina mittauksen yhteydessä. Tämä tieto taas tallennetaan muuttujaan, joka lähetetään väylään. Näin voidaan myös määrittää eri mittausten tärkeyttä esimerkiksi niin, että ulkolämpötila haetaan 200ms välein ja öljynpaine vaikkapa 50ms välein.

Vanteisiin tuli kumit ja keraaminen pinnoite

Kuva

Kuva

Kuva

Kuva


Alustaa pitää vielä hieman säätää, mutta muuten näyttää hyvältä. Pikkuhiljaa 8)

To do lista tällä hetkellä:
  • Ruostekorjaukset
  • (Mittaristo, tehdään jos ehtii kaudelle/kauden aikana)
  • Korisarjan kiinnitykset kuntoon
  • Katastus ja muutoskatsastus (vanteet 16->17)
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
MJPfin
Mersumies
Mersumies
Viestit: 3875
Liittynyt: Pe 14.09.2018 20:20

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja MJPfin »

Mukavan näköinen paketti tuolla rengastuksella. Hienoa tekemistä kaikkineen!
Avatar
Juha_M117
Mersumies
Mersumies
Viestit: 990
Liittynyt: La 31.10.2009 16:56
Paikkakunta: Lappeenranta
Viesti:

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Juha_M117 »

Mihinkäs väriin auto tulee kun korihommat tehty?
1989 560 SEC
1981 380 SL
1985 190 E 2.0
2007 Corvette
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

MJPfin kirjoitti: Su 19.02.2023 10:10 Mukavan näköinen paketti tuolla rengastuksella. Hienoa tekemistä kaikkineen!
Hetki siinä meni pohtiessa, mutta tuotti tulosta. Kiitos :thumbup:
Juha_M117 kirjoitti: Su 19.02.2023 12:25 Mihinkäs väriin auto tulee kun korihommat tehty?
Ajatuksena on laittaa samaan väriin kuin nyt (Arktikweiss) lähinnä käytännön syistä, koska ilmastointia ei ole ja purkamista tulee siten vähemmän. Saa nähdä muuttuuko mieli vielä, kaksivärisyys voisi sopia myös :think:
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Noniin. CAN-väylä toimii odotetusti ja anturit palauttavat järkeviä arvoja 8) Ihmetystä aiheutti mm. se, että CAN-väylämoduulin SPI-väylä oli kytketty Arduino Unon ohjeilla, vaikka piti käyttää Mega 2560 ohjetta. Kytkentäkuva on tältä osin myös päivitetty. Ulkolämpötila ja polttoaineen määrä tuli testattua, polttoaineen varoituskatkaisijaa ei pystynyt testaamaan ja öljynpaineanturi on mitä ilmeisimmin rikki. Sen olisi toki voinut vaihtaa silloin kun moottori oli irti...

Testistä kuvaa:

Kuva

Ensimmäisen rivin kolmas oikealta, ulkolämpötila.

Kuva

Itse koodiin, liitteenä on "kirjastot" ja Arduinoon menevä koodi. Jos julkaisen kirjastot Githubiin, muokkaan vastaamaan sitä. Koodi myös alla:

Koodi: Valitse kaikki

#include <SPI.h>
#include <mcp2515.h> //https://github.com/autowp/arduino-mcp2515
#include <MegaCAN.h> //https://github.com/mantonakakis1/MegaCAN

//Sensor libraries

  //Ambient temperature
    #include <MBAmbientTemp.h> 
    AmbientTemp AT;
    
    #define AT_EXE_INTERVAL 200 // How often Ambient Temperature is measured (ms)
    unsigned long ATlastExecutedMillis = 0; // Variable to save the last executed time
  
  //Oil Pressure
    #include <MBOilPressure.h>
    OilPressure OP;
  
    #define OP_EXE_INTERVAL 50 // How often Oil Pressure is measured (ms)
    unsigned long OPlastExecutedMillis = 0; // Variable to save the last executed time
  
  //Fuel Amount
    #include <MBFuelAmount.h>
    FuelAmount FA;
    #define FA_EXE_INTERVAL 100 // How often Fuel Amount is measured (ms)
    #define FW_EXE_INTERVAL 100 // How often Fuel Warning is measured (ms)
    unsigned long FAlastExecutedMillis = 0; // Variable to save the last executed time
    unsigned long FWlastExecutedMillis = 0; // Variable to save the last executed time

//MegaCAN
#define CELSIUS // MegaCAN uses Fahrenheit, which is no good. This transforms broadcasted temperatures to Celsius

//MegaCAN
const uint32_t baseID = 1512; // Must set to match Megasquirt Settings!
const uint32_t finalID = baseID + 17; // Must set to match Megasquirt Settings configured in TunerStudio! The last group of data broadcasted.

//MCP2515 related
struct can_frame receivedFrame; 
MCP2515 mcp2515(10);  //CS at D10

MegaCAN MegaCAN; // For processed Megasquirt CAN protocol messages 

MegaCAN_message_t recMsgMSC; // Stores received message from Megasquirt, Megasquirt CAN protocol
MegaCAN_message_t respMsgMSC; // Stores response message back to Megasquirt, Megasquirt CAN protocol
MegaCAN_broadcast_message_t bCastMsg; // Stores unpacked Megasquirt broadcast data, e.g. bCastMsg.rpm

struct can_frame respMsg; // Actual response message back to Megasquirt, MSCAN protocol

uint16_t GPIOADC[8] = { 0 }; // Stores values to send to Megasquirt, 4 ADCS for each message

uint16_t adc0 = 0; 
uint16_t adc1 = 0;
uint16_t adc2 = 0;
uint16_t adc3 = 0;
uint16_t adc4 = 0;
uint16_t adc5 = 0;
uint16_t adc6 = 0;
uint16_t adc7 = 0; 

//Variables for averaging of sensor values
  //AT
  const int ATnumReadings = 10;
  
  int ATreadings[ATnumReadings];    // The readings from the analog input
  int ATreadIndex = 0;              // The index of the current reading
  int ATtotal = 0;                  // The running total
  int ATaverage = 0;                // The average

  //OP
  const int OPnumReadings = 10;
  
  int OPreadings[OPnumReadings];    // The readings from the analog input
  int OPreadIndex = 0;              // The index of the current reading
  int OPtotal = 0;                  // The running total
  int OPaverage = 0;                // The average

  //FA
  const int FAnumReadings = 100;
  
  int FAreadings[FAnumReadings];    // The readings from the analog input
  int FAreadIndex = 0;              // The index of the current reading
  int FAtotal = 0;                  // The running total
  int FAaverage = 0;                // The average

  //FW
  const int FWnumReadings = 100;
  
  int FWreadings[FWnumReadings];    // The readings from the input
  int FWreadIndex = 0;              // The index of the current reading
  int FWtotal = 0;                  // The running total
  int FWaverage = 0;                // The average


void initializeCAN() {
  mcp2515.reset();
  mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ); //Megasquirt specific 500kbs
  mcp2515.setNormalMode();
  
}

void canMShandler(const can_frame &msg) {
  // For Megasquirt CAN protocol, MS is requesting data:
  if ((msg.can_id & CAN_EFF_FLAG) != 0) { //Data request from MS uses extended flag, there may be a better way to implement this with more advanced applications, works fine for sending data to MS GPIOADC
    sendDataToMS(msg); //Due to the extended flag, we assume this is a MS data request and run the function to send data to MS, passing the message received from MS to the sendDataToMS function
  }
  // For Megasquirt CAN broadcast data:
  else { //Broadcast data from MS does not use extended flag, therefore a standard message from MS will contain broadcast data
    //Unpack megasquirt broadcast data into bCastMsg:
    MegaCAN.getBCastData(msg.can_id, msg.data, bCastMsg); //baseID fixed in library based on const parameter entered for baseID above - converts the raw CAN id and buf to bCastMsg format
    if (msg.can_id == finalID) {
      /*~~~Final message for this batch of data, do stuff with the data - this is a simple example~~~*/
      /*
      Serial.print(bCastMsg.map); Serial.print(" | "); //should be kPa
      Serial.print(bCastMsg.rpm); Serial.print(" | "); //should be rpm
      Serial.println(bCastMsg.tps);                      //should be %
      */
    }
  }
}

void sendDataToMS(can_frame msg) {
  MegaCAN.processMSreq(msg.can_id, msg.data, recMsgMSC); // Unpack request message ("msg") from MS into recMsgMS

  if (recMsgMSC.core.toOffset == 2) { //For GPIOADC0-3
    GPIOADC[0] = adc0; //Ambient Temperature
    GPIOADC[1] = adc1; //Oil Pressure
    GPIOADC[2] = adc2; //Fuel Amount
    GPIOADC[3] = adc3; //Fuel Warning. ADC is not the best solution for an on/off, but will do
    MegaCAN.setMSresp(recMsgMSC, respMsgMSC, GPIOADC[0], GPIOADC[1], GPIOADC[2], GPIOADC[3]); //Packs the GPIOADC0-3 values into "respMsgMSC"
  }
  else if (recMsgMSC.core.toOffset == 10) { //For GPIOADC4-7
    GPIOADC[4] = adc4; //vacant
    GPIOADC[5] = adc5; //vacant
    GPIOADC[6] = adc6; //vacant
    GPIOADC[7] = adc7; //vacant
    MegaCAN.setMSresp(recMsgMSC, respMsgMSC, GPIOADC[4], GPIOADC[5], GPIOADC[6], GPIOADC[7]); //Packs the GPIOADC4-7 values into "respMsgMSC"
  }
  
  // Send response to Megasquirt using MSCAN protocol:
  respMsg.can_id = respMsgMSC.responseCore | CAN_EFF_FLAG; //CAN_EFF_FLAG added to the end of response message, otherwise MS will not use it
  respMsg.can_dlc = sizeof(respMsgMSC.data.response);
  for (int i = 0; i < respMsg.can_dlc; i++) {
    respMsg.data[i] = respMsgMSC.data.response[i];
  }
  
  mcp2515.sendMessage(&respMsg); //Sends the GPIOADC values stored in respMsg over CAN to Mesasquirt
  //Serial.println("Data sent to Megasquirt");
}

void setup() 
  {
  while (!Serial);
  Serial.begin(115200);
  Serial.println("MAP | RPM | TPS");
  initializeCAN();
  pinMode(33, INPUT); //Fuel warning indicator switch
//Setup Ambient Temp readings
  for (int ATthisReading = 0; ATthisReading < ATnumReadings; ATthisReading++) //As long as thisReading is smaller than numReadings, add to thisReading
    {
    ATreadings[ATthisReading] = 0;
    }
  AT.init(A2,34); //Current from D34 and measuring voltage from A2  

//Setup Oil Pressure readings
  for (int OPthisReading = 0; OPthisReading < OPnumReadings; OPthisReading++) //As long as thisReading is smaller than numReadings, add to thisReading
    {
    OPreadings[OPthisReading] = 0;
    }
  OP.init(A0,35); //Current from D35 and measuring voltage from A0  

//Setup Fuel Amount readings
  for (int FAthisReading = 0; FAthisReading < FAnumReadings; FAthisReading++) //As long as thisReading is smaller than numReadings, add to thisReading
    {
    FAreadings[FAthisReading] = 0;
    }
  FA.init(A1,32); //Current from D32 and measuring voltage from A1  
  }

void loop() {
  
onReceived(); //Read messages from CAN-bus
getAT(); //Read Ambient Temperature and handle signal
getOP(); //Read Oil Pressure and handle signal
getFA(); //Read Fuel Amount and handle signal
getFW(); //Read Fuel Warning switch and handle signal
}

void onReceived() 
//Listen to CAN-bus and run canMShandler after
{
    
  if (mcp2515.readMessage(&receivedFrame) == MCP2515::ERROR_OK) 
    {
      canMShandler(receivedFrame);
      /*
      Serial.println("Received message:");
      Serial.println("  ID: 0x" + String(receivedFrame.can_id, HEX));
      Serial.println("  DLC: " + String(receivedFrame.can_dlc));
      Serial.println("  Data: " + String(receivedFrame.data[0]) + " " +
                                  String(receivedFrame.data[1]) + " " +
                                  String(receivedFrame.data[2]) + " " +
                                  String(receivedFrame.data[3]) + " " +
                                  String(receivedFrame.data[4]) + " " +
                                  String(receivedFrame.data[5]) + " " +
                                  String(receivedFrame.data[6]) + " " +
                                  String(receivedFrame.data[7]));
    */
  }
}

void getAT()
{
  unsigned long ATcurrentMillis = millis(); // Record current time

  if (ATcurrentMillis - ATlastExecutedMillis >= AT_EXE_INTERVAL) //If elapsed time from last execution is more than the specified interval 
    {
      ATlastExecutedMillis = ATcurrentMillis; // save the last executed time
      //AT
      AT.measure(5,1024,10000,3007,3848,false); //float VCC,int _ADC, float R1, int R25, int Beta, bool prints
      ATtotal = ATtotal - ATreadings[ATreadIndex]; // subtract the last reading
      ATreadings[ATreadIndex] = AT.ambienttempvalue*10; // read from the sensor
      ATtotal = ATtotal + ATreadings[ATreadIndex]; // add the reading to the total
      ATreadIndex = ATreadIndex + 1; // advance to the next position in the array
      if (ATreadIndex >= ATnumReadings) // if we're at the end of the array...
        {
          ATreadIndex = 0; // ...wrap around to the beginning
        }
      ATaverage = ATtotal / ATnumReadings; // calculate the average
      adc0 = ATaverage; // Insert average to variable adc0
      //Serial.println(adc0);
    }  
}

void getOP()
{
  unsigned long OPcurrentMillis = millis(); // Record current time

  if (OPcurrentMillis - OPlastExecutedMillis >= OP_EXE_INTERVAL) //If elapsed time from last execution is more than the specified interval
    {
      OPlastExecutedMillis = OPcurrentMillis; // save the last executed time
      //OP
      OP.measure(5,1024,100,10,69,129,184,false); //float VCC, int _ADC, float R1, int R_0BAR, int R_1BAR, int R_2BAR, int R_3BAR, bool prints
      OPtotal = OPtotal - OPreadings[OPreadIndex]; // subtract the last reading
      OPreadings[OPreadIndex] = OP.oilpressurevalue*100; // read from the sensor
      OPtotal = OPtotal + OPreadings[OPreadIndex]; // add the reading to the total
      OPreadIndex = OPreadIndex + 1; // advance to the next position in the array
      if (OPreadIndex >= OPnumReadings) // if we're at the end of the array...
        {
          OPreadIndex = 0; // ...wrap around to the beginning:
        }
      OPaverage = OPtotal / OPnumReadings; // calculate the average
      adc1 = OPaverage; // Insert average to variable adc1
      //Serial.println(adc1);
    }  
}

void getFA()
{
  unsigned long FAcurrentMillis = millis(); // Record current time

  if (FAcurrentMillis - FAlastExecutedMillis >= FA_EXE_INTERVAL) //If elapsed time from last execution is more than the specified interval
    {
      FAlastExecutedMillis = FAcurrentMillis; // save the last executed time
      //FA
      FA.measure(5,1024,10,2,78,false); //float VCC,int _ADC, float R1, int R_Full, int R_Empty, bool prints
      FAtotal = FAtotal - FAreadings[FAreadIndex]; // subtract the last reading
      FAreadings[FAreadIndex] = FA.fuelamountvalue*100; // read from the sensor
      FAtotal = FAtotal + FAreadings[FAreadIndex]; // add the reading to the total
      FAreadIndex = FAreadIndex + 1; // advance to the next position in the array
      if (FAreadIndex >= FAnumReadings) // if we're at the end of the array...
        {
          FAreadIndex = 0; // ...wrap around to the beginning
        }
      FAaverage = FAtotal / FAnumReadings; // calculate the average
      adc2 = FAaverage; // Insert average to variable adc2
      //Serial.println(adc2);
    }  
}
void getFW()
{
 unsigned long FWcurrentMillis = millis(); // Record current time

  if (FWcurrentMillis - FWlastExecutedMillis >= FW_EXE_INTERVAL) //If elapsed time from last execution is more than the specified interval
    {
      FWlastExecutedMillis = FWcurrentMillis; // save the last executed time
      //FW
      FWtotal = FWtotal - FWreadings[FWreadIndex]; // subtract the last reading
      int sensorVal = digitalRead(33); // read port status:
      if (sensorVal = LOW) // If the switch is closed...
      {
        FWreadings[FWreadIndex] = 1; //...reading is one
      }
      else
      {
        FWreadings[FWreadIndex] = 0; //...reading is zero
      }
      FWtotal = FWtotal + FWreadings[FWreadIndex]; // add the reading to the total
      FWreadIndex = FWreadIndex + 100; // advance to the next position in the array
      // if we're at the end of the array...
      if (FWreadIndex >= FWnumReadings) 
        {
          FWreadIndex = 0; // ...wrap around to the beginning
        }
    FWaverage = FWtotal / FWnumReadings; // calculate the average
    adc3 = FWaverage; // Insert average to variable adc3
    //Serial.println(adc3);
    }  
}
Tässä on yhdistetty analogisen signaalin käsittely (Arduino esimerkit->03.Analog->Smoothing), CAN-väyläkommunikointi (mcp2515.h) ja Megan lähettämien viestien purkaminen/pakkaaminen (MegaCAN).

Esimerkkinä ulkolämpötila-anturi: Anturin jännite mitataan ja käsitellään

Koodi: Valitse kaikki

AT_EXE_INTERVAL
muuttujan määräämän millisekuntimäärän välein. Mittauksen yhteydessä mittausten keskiarvo tallennetaan muuttujaan

Koodi: Valitse kaikki

adc0
Tämän jälkeen funktio

Koodi: Valitse kaikki

sendDataToMS
lähettää muuttujan

Koodi: Valitse kaikki

GPIOADC[]
arvot väylään Megasquirtin pyynnön mukaisesti. Megasquirtin väylään lähettämä viesti on joko pyyntö tai broadcast, joka selvitetään funktiossa

Koodi: Valitse kaikki

canMShandler
Tuo koodi tallentaa broadcastin sisältämät tiedot muuttujaan

Koodi: Valitse kaikki

bCastMsg
josta voi hakea esimerkiksi kierroslukutiedon

Koodi: Valitse kaikki

bCastMsg.rpm
Broadcastin tietoja ei vielä hyödynnetä tässä koodissa. Tarkkasilmäisimmät huomaavat varmaan, että lämpötilan ollessa 13,7 väylään lähetetään se arvo kertaa 10. Tämä johtuu siitä, että väylään voi lähettää vain kokonaislukuja. Onneksi TunerStudiossa voi tehdä kustomoidun kanavan (Tools->Add Custom Channel Wizard).Valitaan kanava (esim. gpioadc0) ja laitetaan Volt to ADC Conversion kohtaan "No Voltage to ADC Conversion". Point 1 Input valueksi 10 ja Output valueksi 1 ja näin on taas 13,7 mittarissa.

Kuva

Tämän jälkeen lisätäään Gauge Template järkevillä arvoilla ja yksiköillä, mutta se on jo helppoa muuhun verrattuna.

Täytyy sanoa, että aikamoinen opiskelu oli tuon väylän kanssa ja hetki meni tutustuessa. Nyt kun sen on oppinut niin taas on maailma vähän selkeämpi... hetken. Ruostehommat eivät ole maagisesti tehneet itseään pois vieläkään, joten kai niiden kimppuun tulee käydä seuraavaksi. Tai no, täytyyhän tuo näyttö vielä sovittaa mittaristoon ja sitäkin aloitin, kun näytti tuo väyläosuus valmistuvan käsiin. Nelipyöräsuuntaus täytyy käydä teettämässä kun kelit sallii. Tähän kaveri totesi, että itsekin tekee naruilla ym. helpoilla vermeillä, mutta joku syy pitää olla hakea puuhakilvet ja käydä laatikkoa testaamassa :D


To do lista tällä hetkellä:
  • Ruostekorjaukset
  • Mittaristo
  • Korisarjan kiinnitykset kuntoon
  • Nelipyöräsuuntaus
  • Katastus ja muutoskatsastus (vanteet 16->17)
  • (Maalipinta kuntoon)
Sinulla ei ole tarvittavia oikeuksia nähdäksesi tämän viestin liitetiedostoja.
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
racer123
Vakiokalustoa
Vakiokalustoa
Viestit: 397
Liittynyt: Pe 20.06.2014 18:59

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja racer123 »

Todella hienoa työtä tuon väyläkommunikaation suhteen! Onko lopullinen ratkaisu nyt siis tuo, että can-väyläviestien kulkee vain noita alkuperäiseen mittaristoon jääneitä ominaisuuksia (öljynpaine, ulkolämpötila etc) vai onko jossain vaiheessa ajatus siirtää myös nuo LCD:llä näkyvät datat CAN-väylällä? Nykyinen setuppisi siis käyttää Megan USB-porttia, oletko säätänyt megaa läppärillä tms. mittariston ollessa kiinni?
Tähdelliset: S211 E270CDI, W210 E420, W124 230E turbo, C123 230CE (kv), W123 240D
Star C4 Tampereella, sopii vuosimalleihin '93-'20. Yhteys YV.
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

racer123 kirjoitti: Ma 27.02.2023 00:58 Todella hienoa työtä tuon väyläkommunikaation suhteen! Onko lopullinen ratkaisu nyt siis tuo, että can-väyläviestien kulkee vain noita alkuperäiseen mittaristoon jääneitä ominaisuuksia (öljynpaine, ulkolämpötila etc) vai onko jossain vaiheessa ajatus siirtää myös nuo LCD:llä näkyvät datat CAN-väylällä? Nykyinen setuppisi siis käyttää Megan USB-porttia, oletko säätänyt megaa läppärillä tms. mittariston ollessa kiinni?
Kiitoksia! CAN-väylää ei vielä hyödynnetä muuhun kuin siihen, että alkuperäinen mittaristo voidaan korvata kokonaan digitaalisella. Tämänhetkinen setup on tällainen:

Kuva

Eli mittaristossa on raspberry, jossa on TS ja raspberry on kiinni USB-johdolla ECUssa. Olen käyttänyt raspberryä säätämiseen ja se käy siihen tarkoitukseen mainiosti. Tällä hetkellä siellä on RPI 3B+ 2GB kiinni, mutta näytön vaihdon yhteydessä tulee RPI 4 8GB.

Kuva

Periaatekuva:

Kuva
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Jatketaan. Mittariston osien suunnittelu ja tulostus on tehty.

Kuva

Kuva

Kuva

Kuva

Sininen osa kuvaa näyttöä ja vihreät piirilevyjä. Näyttö tulee yhdellä M6 pultilla kiinni (+ kitka sivuilta) ja paino jakautuu varoitusvalon päällä olevan muovin päälle.

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Kuva

Sivuille tulevissa täytepaloissa oli monta iteraatiota. Piirilevyjen pitimen ja jalan kanssakin toisella kertaa vasta tuli hyvä. Mittaristo ei ole vielä kiinni, koska uudesta Raspberrystä puuttuu vielä GPS toimintaan liittyvät koodit.

Toinen asia mittariston kanssa on kirkkauden säätö. Nyt kun näyttö on isompi, niin sen kirkkaudella on suurempi vaikutus ajomukavuuteen ja turvallisuuteen. Vanhan näytön kanssa kiersin asian niin, että laitoin näytön ohjauspainikkeet mittaristoon ja sitä kautta pystyi säätämään kirkkautta. Tämä on kuitenkin hankalaa ja aikaa vievää, joten ajattelin tutkia, että olisiko sitä mahdollista säätää softalla. Sellainenhan löytyi kuin ddcutil. Lyhyesti, tietokone (RPI) ja näyttö keskustelevat I2C väylän kautta HDMI-johdon läpi. Tuolla ddcutil työkalulla voi hakea esimerkiksi näytön kirkkauden arvon ja asettaa näytön kirkkauden arvon. Tästä myöhemmin lisää.

Näytön kirkkauden säädön pitää tietysti perustua siihen, kuinka kirkas ympäristö on. Sitä varten tietokoneen täytyy mitata ympäristön kirkkautta ja helpoin tapa tähän on LDR (Light Dependent Resistor) -vastus ja sen jännitteen mittaaminen. Tarkemman mittauksen saisi photodiodilla, mutta LDR riittänee. Sitä varten ostin ADS1115 ADC-muunninpiirin, koska RPI ei pysty mittaamaan jännitettä. Yhdistin GPS ja ADS1115 kytkennät yhteen kuvaan:

Kuva

RPI:n kotelossa on onneksi helposti irtoava kansi, jonka tilalle voin 3D-tulostaa kannen, jossa on GPS-murikalle ja ADC-piirille kiinnikkeet. LDR-vastuksen laitan omaan koteloon kojelaudalle, josta se mittaa kirkkauden.

Ruosteiden kiinniottoa on myös tehty, tunkin nostokohtaa taakse molemminpuolin, eteen apukuskin lattiaa ja jäljelle jää vielä kuskin puolen etulokasuojan/puskurin kiinnike.

Kuva

Kuva

Sille tuli uusi vastine, koria joutuu silti hieman hitsaamaan:

Kuva

Kuva

Koira oli hoidossa ja hallillehan tuo halusi. 5km lenkkiä takana vesisateessa :thumbup:

Kuva

To do lista tällä hetkellä:
  • Ruostekorjaukset
  • Mittaristo
  • Korisarjan kiinnitykset kuntoon
  • Nelipyöräsuuntaus
  • Katastus ja muutoskatsastus (vanteet 16->17)
  • (Maalipinta kuntoon)
Viimeksi muokannut Mighty190, Pe 31.03.2023 16:08. Yhteensä muokattu 1 kertaa.
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
noonakki
Vakiokalustoa
Vakiokalustoa
Viestit: 176
Liittynyt: Pe 04.06.2010 12:16

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja noonakki »

Mielenkiintoinen tuo näyttöprokkis. Ite suunnittelen kanssa omaan m111+maxxecu street yhdistelmään raspia, näyttöä ja can-hattua. Githubista löytyy tommonen Powertune hässäkkä mikä juttelis maxxecun kans canväylää pitkin.
MB w204 C220CDI -10
MB w201 190E 2.0 -93 Turbo M111 alkoholisti
MB W638 110CDI -99
Ex:
MB CLK 430 V8 -98
MB W201 2.0E -87
MB W201 2.0E -89
MB W639 115CDI -05
MB S202 C200CDI -99
MB S202 C200CDI -99
MB S124 250TDT -89
MB W202 C180 -96
MB W124 200D -89
MB C124 300CE -89
MB S202 C220CDI -99
MB W124 300E -90
MB w202 C250TD -96
MB w201 2.3 automatic -91
MB w124 200E -91
MB w201 2.0 -88
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

noonakki kirjoitti: Ti 21.03.2023 21:17 Mielenkiintoinen tuo näyttöprokkis. Ite suunnittelen kanssa omaan m111+maxxecu street yhdistelmään raspia, näyttöä ja can-hattua. Githubista löytyy tommonen Powertune hässäkkä mikä juttelis maxxecun kans canväylää pitkin.
Kiitos 8) Kävin lukasemassa projektisi, hyvää työtä :thumbup: Tuo on mielenkiintoinen yhdistelmä, meinaatko jakaa foorumille miten toteutat?
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
noonakki
Vakiokalustoa
Vakiokalustoa
Viestit: 176
Liittynyt: Pe 04.06.2010 12:16

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja noonakki »

Mighty190 kirjoitti: Pe 24.03.2023 16:07
noonakki kirjoitti: Ti 21.03.2023 21:17 Mielenkiintoinen tuo näyttöprokkis. Ite suunnittelen kanssa omaan m111+maxxecu street yhdistelmään raspia, näyttöä ja can-hattua. Githubista löytyy tommonen Powertune hässäkkä mikä juttelis maxxecun kans canväylää pitkin.
Kiitos 8) Kävin lukasemassa projektisi, hyvää työtä :thumbup: Tuo on mielenkiintoinen yhdistelmä, meinaatko jakaa foorumille miten toteutat?
Kyllä tarkotus olis jotain juttua asiasta kirjotella. On vaan semmonen ongelma että en hallitse linuxia enkä ohjelmointitaitoja niin tässä on nyt varmaan 20 tuntia yritetty saada toimimaan tuota Powertunea :D
MB w204 C220CDI -10
MB w201 190E 2.0 -93 Turbo M111 alkoholisti
MB W638 110CDI -99
Ex:
MB CLK 430 V8 -98
MB W201 2.0E -87
MB W201 2.0E -89
MB W639 115CDI -05
MB S202 C200CDI -99
MB S202 C200CDI -99
MB S124 250TDT -89
MB W202 C180 -96
MB W124 200D -89
MB C124 300CE -89
MB S202 C220CDI -99
MB W124 300E -90
MB w202 C250TD -96
MB w201 2.3 automatic -91
MB w124 200E -91
MB w201 2.0 -88
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

noonakki kirjoitti: Su 26.03.2023 13:07
Mighty190 kirjoitti: Pe 24.03.2023 16:07
noonakki kirjoitti: Ti 21.03.2023 21:17 Mielenkiintoinen tuo näyttöprokkis. Ite suunnittelen kanssa omaan m111+maxxecu street yhdistelmään raspia, näyttöä ja can-hattua. Githubista löytyy tommonen Powertune hässäkkä mikä juttelis maxxecun kans canväylää pitkin.
Kiitos 8) Kävin lukasemassa projektisi, hyvää työtä :thumbup: Tuo on mielenkiintoinen yhdistelmä, meinaatko jakaa foorumille miten toteutat?
Kyllä tarkotus olis jotain juttua asiasta kirjotella. On vaan semmonen ongelma että en hallitse linuxia enkä ohjelmointitaitoja niin tässä on nyt varmaan 20 tuntia yritetty saada toimimaan tuota Powertunea :D
Se on sellasta välillä :D Linuxin käyttö sujuvoituu ajan kanssa, alkuun on paljon haparointia. Jos lontoo taipuu niin kysymyksiin löytyy hyvin vastauksia kyllä. Jos jotain voin suositella, niin ota ylös asioita sitä mukaa kun teet...
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
noonakki
Vakiokalustoa
Vakiokalustoa
Viestit: 176
Liittynyt: Pe 04.06.2010 12:16

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja noonakki »

Mighty190 kirjoitti: Su 26.03.2023 21:07
noonakki kirjoitti: Su 26.03.2023 13:07
Mighty190 kirjoitti: Pe 24.03.2023 16:07
noonakki kirjoitti: Ti 21.03.2023 21:17 Mielenkiintoinen tuo näyttöprokkis. Ite suunnittelen kanssa omaan m111+maxxecu street yhdistelmään raspia, näyttöä ja can-hattua. Githubista löytyy tommonen Powertune hässäkkä mikä juttelis maxxecun kans canväylää pitkin.
Kiitos 8) Kävin lukasemassa projektisi, hyvää työtä :thumbup: Tuo on mielenkiintoinen yhdistelmä, meinaatko jakaa foorumille miten toteutat?
Kyllä tarkotus olis jotain juttua asiasta kirjotella. On vaan semmonen ongelma että en hallitse linuxia enkä ohjelmointitaitoja niin tässä on nyt varmaan 20 tuntia yritetty saada toimimaan tuota Powertunea :D
Se on sellasta välillä :D Linuxin käyttö sujuvoituu ajan kanssa, alkuun on paljon haparointia. Jos lontoo taipuu niin kysymyksiin löytyy hyvin vastauksia kyllä. Jos jotain voin suositella, niin ota ylös asioita sitä mukaa kun teet...
Jep, on yritetty pitää kaikki "tarpeelliset" topikit auki mitä ulkolaisilta alan foorumeilta löytyy vaan mikään ei auta. Compile menee yleensä viime metreillä mettään ja palauttaa errorin ilman mitään lisätietoa. Kaveri yritti myös tutkia asiaa, osaa linuxia enemmän mutta ei saanut sekään sitä toimimaan. Täytyy taas kokeilla kun tämä rapula joskus hellittää.. nyt jatkokrapula menossa eikä oikein huvita keskittyä mihinkään :lol:
MB w204 C220CDI -10
MB w201 190E 2.0 -93 Turbo M111 alkoholisti
MB W638 110CDI -99
Ex:
MB CLK 430 V8 -98
MB W201 2.0E -87
MB W201 2.0E -89
MB W639 115CDI -05
MB S202 C200CDI -99
MB S202 C200CDI -99
MB S124 250TDT -89
MB W202 C180 -96
MB W124 200D -89
MB C124 300CE -89
MB S202 C220CDI -99
MB W124 300E -90
MB w202 C250TD -96
MB w201 2.3 automatic -91
MB w124 200E -91
MB w201 2.0 -88
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Jatkoa! Adafruitin ohjeilla ja esimerkkikirjastoilla pääsin hyvin alkuun taustavalon säädön koodaamisessa. Koodissa tapahtuu seuraavaa:
  • Mitataan LDR-vastuksen jännite 20 kertaa 0.1s välein

    Koodi: Valitse kaikki

    for x in range(20):
    		adc_value = adc.read_adc(0, gain=GAIN)
    		adc_list.insert(x, adc_value)
    		time.sleep(0.1)
  • Otetaan keskiarvo (2 sekunnin keskiarvo)

    Koodi: Valitse kaikki

    adc_value = mean(adc_list)
  • Lasketaan jännite ADC-arvosta

    Koodi: Valitse kaikki

    voltage = adc_value/(65536/(2*4.096)) #when GAIN = 1
  • Luodaan muuttuja käskylle, joka lähetetään terminaaliin, lisätään muuttujaan käsky, käsitellään vastaus ja lisätään se kokonaislukuna muuttujaan backlight_current. Vastauksena tulee taustavalon arvo 0-100 väliltä

    Koodi: Valitse kaikki

    	getcommand = ""
    	getcommand += 'ddcutil getvcp 10'
    	#send ddcutil command and save to variable
    	response = os.popen(getcommand).read()
    	#print(response)
    	response_inner_str = response.split('current value =')[-1].split(',')[0]
    	#print(response_inner_str)
    	backlight_current = int(response_inner_str)
  • Lasketaan LDR-vastuksen resistanssi tunnetun vastuksen (R1) ja mitatun jännitteen (R2) avulla. Vastukset ovat sarjassa, joten IR1 = IR2

    Koodi: Valitse kaikki

    	R_LDR = voltage/((3.3-voltage)/10000)
    	#print(R_LDR)
    	lux = (500/(R_LDR/1000))
Tässä kohtaa homma menee mielenkiintoiseksi. Löysin LCD-näytön kirkkaudensäädöstä kirjoituksen, josta löytyy kaaviona Microsoft® suosittelema näytönkirkkaus (0-100%) valaistusvoimakkuuden suhteen (lux):

Kuva

Tuolle käyrälle löytyi myös funktio...

Kuva
  • ...jonka toteutus on tässä

    Koodi: Valitse kaikki

    		if lux < 1254:
    		backlight_desired = 9.9323*math.log(lux)+27.059
    		backlight_desired = round(backlight_desired)
    		#print("lux below 1254")
    		#print(lux)
    		#print(backlight_desired)
    	elif lux >= 1254:
    		backlight_desired = 100
    		#print("lux above or equal to 1254")
    		#print(lux)
    		#print(backlight_desired)
Tässä vaiheessa koodia tiedetään nykyinen ja haluttu taso näytön kirkkaudelle. Enää tarvitsee vain katsoa, että onko kirkkaus sallituissa rajoissa (hystereesi ±1%) ja toimia sen mukaisesti.
  • Katsotaan, että onko kirkkaus sallituissa rajoissa ja jos ei, lisätään laskuriin 1. Kun laskurissa on 4 kertaa ylitetty "säätötarve", ajetaan asetuskäsky terminaaliin ja nollataan laskuri

    Koodi: Valitse kaikki

    if backlight_current-1 <= backlight_desired or backlight_current+1 >= backlight_desired:
    		counter += 1
    	if counter > 4:
    		setcommand = ""
    		setcommand += 'ddcutil setvcp 10 '+ str(backlight_desired)
    		#print(setcommand)
    		slope = abs(backlight_current-backlight_desired)
    		#print(slope)
    		os.system(setcommand)
    		counter = 0
Näin saatiin toimiva kirkkaudensäätö. Koodi on hieman raakile, mutta toimii. Näiden ohjeiden mukaan laitoin ohjelman suorituksen alkamaan automaattisesti käynnistyksessä. Loppupohdintaa: Kun olin tilannut tuon ADS1115-murkulan tajusin, että saman mittauksen olisi voinut toteuttaa RC-piirillä melko paljon yksinkertaisemmin. No, eipä nämä osat kalliita ole ja taas on opittu jotain uutta... Koodi vielä kokonaisuudessaan ja suurempia editoimatta:

Koodi: Valitse kaikki

import time

#ddcutil related
import os
import math
from statistics import mean
# Import the ADS1x15 module.
import Adafruit_ADS1x15


# Create an ADS1115 ADC (16-bit) instance.
adc = Adafruit_ADS1x15.ADS1115()

# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1115(address=0x49, busnum=1)

# Choose a gain of 1 for reading voltages from 0 to 4.09V.
# Or pick a different gain to change the range of voltages that are read:
#  - 2/3 = +/-6.144V
#  -   1 = +/-4.096V
#  -   2 = +/-2.048V
#  -   4 = +/-1.024V
#  -   8 = +/-0.512V
#  -  16 = +/-0.256V
# See table 3 in the ADS1015/ADS1115 datasheet for more info on gain.
GAIN = 1
counter = 0
# Main loop.
while True:
	adc_list = []
	# Read the specified ADC channel using the previously set gain value.
	for x in range(20):
		adc_value = adc.read_adc(0, gain=GAIN)
		adc_list.insert(x, adc_value)
		time.sleep(0.1)
	adc_value = mean(adc_list)
	# Note you can also pass in an optional data_rate parameter that controls
	# the ADC conversion time (in samples/second). Each chip has a different
	# set of allowed data rate values, see datasheet Table 9 config register
	# DR bit values.
	#values[i] = adc.read_adc(i, gain=GAIN, data_rate=128)
	# Each value will be a 12 or 16 bit signed integer value depending on the
	# ADC (ADS1015 = 12-bit, ADS1115 = 16-bit).
	# Print the ADC values.
	#print(adc_value)
	voltage = adc_value/(65536/(2*4.096)) #when GAIN = 1
	#print(voltage)
	#get brightness
	getcommand = ""
	getcommand += 'ddcutil getvcp 10'
	#send ddcutil command and save to variable
	response = os.popen(getcommand).read()
	#print(response)
	response_inner_str = response.split('current value =')[-1].split(',')[0]
	#print(response_inner_str)
	backlight_current = int(response_inner_str)
	#print(backlight_current)
	R_LDR = voltage/((3.3-voltage)/10000)
	#print(R_LDR)
	lux = (500/(R_LDR/1000))
	#print(lux)
	if lux < 1254:
		backlight_desired = 9.9323*math.log(lux)+27.059
		backlight_desired = round(backlight_desired)
		#print("lux below 1254")
		#print(lux)
		#print(backlight_desired)
	elif lux >= 1254:
		backlight_desired = 100
		#print("lux above or equal to 1254")
		#print(lux)
		#print(backlight_desired)
	if backlight_current-1 <= backlight_desired or backlight_current+1 >= backlight_desired:
		counter += 1
	if counter > 4:
		setcommand = ""
		setcommand += 'ddcutil setvcp 10 '+ str(backlight_desired)
		#print(setcommand)
		slope = abs(backlight_current-backlight_desired)
		#print(slope)
		os.system(setcommand)
		counter = 0

Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Mittariston päivitys kävi näppärästi. Speksien vertailua alla:

OminaisuusVanha setupUusi setup
Näytön koko7"12,6"
Raspberry Pi3B4B
RAM1 GB8 GB
Mahdollinen näyttöjen määrä12
Kirkkauden säätöManuaalinenAutomaattinen
Kuva

Kuva

Varoitusvalot jäävät vähän näytön taakse, mutta on ne luettavissa. Saa nähdä keksiikö katsatusinssi tuosta noottia :D

GPS murikka pysyi samana eikä päivitystä tarvita. Tuon RPI 4B mukana tuli kotelo, johon suunnittelin lisäosan GPS- ja ADS1115 -piireille. Näin sain kaikki pieneen pakettiin ja kytkeminen oli helpompaa. Vihreät osat kuvaavat piirejä ja niistä lähteviä johtoja.

Kuva

Kytkentäkuvaan tuli pieniä muutoksia, mm. kotelon tuuletin.

Kuva

Takapenkkiä kasatessa tuli mieleen, että ne on hyvä putsata märkäimurilla ennen kasaamista.

Kuva

Kuva

Kuva

Kuva

Ruostekorjaukset etenee tasaista tahtia, jäljellä on enää etulokasuojan ja -puskurin kannakkeen hitsaus paikalleen ja pohjassa on muistaakseni pieni reikä. Ne kuntoon, massa päälle ja seuraavaksi suuntaukseen.

To do lista tällä hetkellä:
  • Ruostekorjaukset
    • Etulokasuojan ja -puskurin kannake
    • Mysteerireikä
    • Massaus
  • Mittaristo
  • Korisarjan kiinnitykset kuntoon
    • Takapuskurin "nosto" kohdalleen
    • Ovien listojen kiinnitykset
  • Nelipyöräsuuntaus
  • Katsastus ja muutoskatsastus (vanteet 16->17)
  • (Maalipinta kuntoon)
    • Takaikkunaa ympäröivien ruosteiden kiinniotto (ammattilaisella)
    • (Ylimaalaus)
    • Puskurien halkeamat kuntoon
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Päivitystä. Ruostekorjaukset tuli valmiiksi viime viikolla. Mysteerireikä löytyi ja paikattiin, vaikka sen lähistöltä löytyikin takaluukun vedenpoistoreiän ympäriltä lisää :D Nyt kun ne on kunnossa, varasin ajan nelipyöräsuuntaukseen 19.4.2023 ja katsastus tulee ehkä samalle päivälle. Öljyvuotoa näkyi vielä olevan moottorin takaosassa ja sitä varten on venttiilikannen tiiviste hyllyssä. Täytyy sekin ennen katsastusta laittaa. Etupenkit olisi hyvä ottaa vielä irti ja imuroida märkäimurilla, tai vaan imuroida.

To do lista tällä hetkellä:
  • Ruostekorjaukset
    • Etulokasuojan ja -puskurin kannake
    • Mysteerireikä
    • Massaus
  • Venttiilikannen tiivisteen vaihto
  • Etupenkkien märkäimurointi
  • Nelipyöräsuuntaus
  • Katsastus ja muutoskatsastus (vanteet 16->17)
  • Korisarjan kiinnitykset kuntoon
    • Takapuskurin "nosto" kohdalleen
    • Ovien listojen kiinnitykset
  • (Maalipinta kuntoon)
    • Takaikkunaa ympäröivien ruosteiden kiinniotto (ammattilaisella)
    • (Ylimaalaus)
    • Puskurien halkeamat kuntoon
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

19. päivä tuli käytyä nelipyöräsuuntauksessa ja leimalla (huomautuksitta :shock:), kuva tiivistää fiiliksen 8)

Kuva

65 euron hintaan sai suuntauksen ja tuolla korolla meni tehtaan arvoihinkin vielä, vaikkei sillä niin väliä olekaan. Camber noissa yleensä jää takaa arvoista, jos on matala. Leimalle laitoin venttiilikannen tiivisteenkin, eikä enää näyttäisi vuotavan öljyä. Etupenkit imuroin paikallaan, mutta irroittaa ne pitää, jos hyvät haluaa.

Mittaristo toimii hyvin alkuperäiset anturoinnit mukaan lukien. GPS-murikalla kestää välillä melko pitkään saada "fix", jonka takia nopeus ei välttämättä näy ollenkaan pienillä matkoilla. Tämä on yksi huono puoli siinä, kun ei ole paristoa pitämässä GPS-murikan muistia virkeänä. Virtalähteistä puheenollen, käynnistäessä jännite 5V puolella tippuu herkästi alle Raspberryn vaatiman jännitteen. Tällöin RPI "hylkää" jännitteen kokonaan ja jättää käynnistymättä. Jonkinlainen UPS tai kondensaattoriviritys pitää tuohon keksiä. Ulkonäköön liittyen, korisarjan mukana tullut Zenderin spoileri odottaa asennusta. Antenni taitaa lähteä myös, musiikkia tuossa tarvitsee melko vähän kuunnella, FM-radiota ei sitä vähääkään :D Käynnissä vaikuttaa olevan pientä häikkää, tyhjää ei tahdo käydä lainkaan humppaamatta. Alipainevuoto vaikuttaa todennäköiseltä, kun käy laihallakin toisinaan.

Kaikesta huolimatta, onhan tuolla hieno ajella pitkästä aikaa.

To do lista tällä hetkellä:
  • Venttiilikannen tiivisteen vaihto
  • Etupenkkien märkäimurointi
  • Nelipyöräsuuntaus
  • Katsastus ja muutoskatsastus (vanteet 16->17)
  • Korisarjan kiinnitykset kuntoon
    • Ovien listojen kiinnitykset
  • Ulkonäkö
    • Takaikkunaa ympäröivien ruosteiden kiinniotto (ammattilaisella)
    • (Ylimaalaus)
    • Puskurien halkeamat kuntoon
    • Takapuskurin "nosto" kohdalleen
    • Zender -spoileri kiinni
    • Antenni pois
  • Virtalähteiden varmentaminen
    • GPS -paristovarmennus
    • Raspberryn jännitteen varmistaminen kondensaattori/akkuvirityksellä
  • Käyntihäiriön korjaus (alipainevuoto?)
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
MJPfin
Mersumies
Mersumies
Viestit: 3875
Liittynyt: Pe 14.09.2018 20:20

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja MJPfin »

On kyllä hieno, ja kyllähän se kunnossa oleva auto pitääkin mennä läpi leimalla.
Mittaristo on mielenkiintoinen, en välttämättä itse vanhempaan tekisi, tai jos niin "alkuperäisen" näköisen digitaalisen. Mittarit ja muut digitaalisena kuvana orkkiksesta.
Mut hienoa työtä omista mieltymyksistä huolimatta, ihan törkeän siistiä että kaikki tehty itse.
Iso arvostus täältä!
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

MJPfin kirjoitti: Pe 21.04.2023 22:25 On kyllä hieno, ja kyllähän se kunnossa oleva auto pitääkin mennä läpi leimalla.
Mittaristo on mielenkiintoinen, en välttämättä itse vanhempaan tekisi, tai jos niin "alkuperäisen" näköisen digitaalisen. Mittarit ja muut digitaalisena kuvana orkkiksesta.
Mut hienoa työtä omista mieltymyksistä huolimatta, ihan törkeän siistiä että kaikki tehty itse.
Iso arvostus täältä!
Kiitokset! Tuossa voisi olla ideaa, että yksi taulu olisi alkuperäinen :think: Kosketusnäytöllä kun voi vaihtaa mittaristoa pyyhkäisyllä seuraavaan Tunerstudiolla. Jätetään hautumaan :D

Aika vähän on päivitystä edelliseen, kilometrejä päälle tuhat takana uudella laatikolla ja hyvin näyttää pelaavan. Lämpöjen kanssa on iänikuista haastetta ja sitä varten ajattelin ilmansuodatusta vähän päivittää. Pistin tilaukseen 2.5 turbodieselin ilmansuodattimen ja tarkoituksena on rakentaa "väliseinä" konehuoneeseen, jotta imuilma pysyisi paremmin kurissa. Turbon ritiläkin täytynee viritellä lokasuojaan.

Eilen tuli mieleen, että saisikohan tuohon näyttöön vielä vaihteen näkymään. Vähän tutkittuani sain aikaan seuraavaa:

Kuva


TunerStudiossa on tuo Custom Channel Editor, jolla nuo CAN-väylän kautta tulevat anturoinnitkin tuli viriteltyä. Väylän kautta tulevissa anturoinneissa signaalinkäsittely tehtiin Arduinon puolella, joten niitä ei tarvinnut kuin ottaa esille. Vaihdenäyttöä varten piti rakentaa koodi, joka laskee nopeuden, perävälityksen, kierrosten ja renkaan ympärysmitan avulla sitä, että millä välityksellä voima välittyy tiehen (vaihde).

Asiasta on keskustelua ainakin täällä ja täällä. TunerStudion ominaisuuksista löytyi aineistoa ECUsta ja funktioista.

Näiden perusteella sain rakennettua koodin:

Koodi: Valitse kaikki

[PcVariables]
    gearDisplay = bits,   U08,  [0:2], "N", "1", "R", "2", "3", "4", "5", "6"
    


[FrontPage]

    indicator = {   detectedGear1 %2   }, "Gear: bitStringValue( gearDisplay , detectedGear1  )",   "Gear: bitStringValue( gearDisplay , detectedGear1  )",         white, black, green, black


[OutputChannels]

transGearRatio = { if( (tsVehicleSpeedKph > 20), (1.8969/3.27)*rpm*60/1000/tsVehicleSpeedKph , 0) }, ":1"

detectedGear1 = { transGearRatio  >  5 ? 0 : transGearRatio  >  4.138 ? 1 : transGearRatio  >  2.0805 ? 3 : transGearRatio > 1.4495 ? 4 : transGearRatio > 1.117 ? 5 : transGearRatio > 0.9255 ? 6 : transGearRatio > 0.4255 ? 7 : 0 }
Koodissa [PcVariables], [FrontPage] ja [OutputChannels] kertovat mihin alla oleva koodi kuuluu laittaa. [PcVariables] ja [FrontPage] alla olevat koodit tulevat kyseisten otsikoiden alle Projektin nimi/projectCfg/mainController.ini tiedostoon ja [OutputChannels] alla oleva koodi tulee Projektin nimi/projectCfg/Custom.ini tiedostoon.

Koodista:

Koodi: Valitse kaikki

gearDisplay = bits,   U08,  [0:2], "N", "1", "R", "2", "3", "4", "5", "6"
on Unsigned Byte vaihteiston arvoja vastaavilla kirjaimilla/numeroilla

Koodi: Valitse kaikki

 indicator = {   detectedGear1 %2   }, "Gear: bitStringValue( gearDisplay , detectedGear1  )",   "Gear: bitStringValue( gearDisplay , detectedGear1  )",         white, black, green, black
Kuvaa indikaattorin toimintaa, jossa indikaattorin arvo on teksti "Gear:" ja vaihteen arvo (detectedGear1)

Koodi: Valitse kaikki

transGearRatio = { if( (tsVehicleSpeedKph > 20), (1.8969/3.27)*rpm*60/1000/tsVehicleSpeedKph , 0) }, ":1"
Katsotaan, että onko nopeus yli 20km/h (indikaattorin toiminta oli hieman epäluotettava pienemmillä nopeuksilla) ja jos on, jaetaan renkaan piiri (1.8969 metriä) perävälityksellä (3.27) ja kerrotaan se kierroksilla ja luvulla 60. Jaetaan tuhannella ja nopeudella, jolloin saadaan se välitys, millä voima välittyy tiehen. Jos nopeus on alle 20, asetetaan transGearRation arvoksi 0.

Koodi: Valitse kaikki

detectedGear1 = { transGearRatio  >  5 ? 0 : transGearRatio  >  4.138 ? 1 : transGearRatio  >  2.0805 ? 3 : transGearRatio > 1.4495 ? 4 : transGearRatio > 1.117 ? 5 : transGearRatio > 0.9255 ? 6 : transGearRatio > 0.4255 ? 7 : 0 }

Verrataan transGearRatiota eri arvoihin. Vaihteiston välitykset ovat

VaihdeRatio
14,35
R3,926
22,496
31,665
41,234
51
60,851
Ja keskiarvot vaihteiden välillä

VaihdeRatio
14,138
R3,211
22,0805
31,4495
41,117
50,9255
60,4255
Jos transGearRatio on yli 5, muuttujan detectedGear1 arvo on 0. Jos arvo on pienempi kuin 0,4255, muuttujan arvo on myös 0. 0 vastaa muuttujassa gearDisplay arvoa "N". Syntaksi transGearRatio > 5 ? 0 : transGearRatio > 4.138 ? 1 tarkoittaa sitä, että katsotaan, onko transGearRatio yli 5, jos kyllä -> 0, jos ei, onko se yli 4.138, jos kyllä -> 1. Samalla logiikalla käydään vaihteet läpi ja oletetaan, että jos ollaan yli vaihteiden välityksen keskiarvon, niin silloin on pykälä päällä.

Pakki tuosta jäi pois tarpeettomana, mutta kummittelee koodissa :D Takapuskuria tuli myös korjattua ja GPS paristovarmennettua. Jatketaan harjoituksia.

To do lista tällä hetkellä:
  • Korisarjan kiinnitykset kuntoon
    • Ovien listojen kiinnitykset
  • Ulkonäkö
    • Takaikkunaa ympäröivien ruosteiden kiinniotto (ammattilaisella)
    • (Ylimaalaus)
    • Puskurien halkeamat kuntoon
    • Takapuskurin "nosto" kohdalleen
    • Zender -spoileri kiinni
    • Antenni pois
  • Virtalähteiden varmentaminen
    • GPS -paristovarmennus
    • Raspberryn jännitteen varmistaminen kondensaattori/akkuvirityksellä
  • Käyntihäiriön korjaus (alipainevuoto?)
Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

Projektina W201 2.8 24V MS2 V3.0
Avatar
Pikku Mersu
Mersumies
Mersumies
Viestit: 548
Liittynyt: Ti 06.05.2003 09:04
Paikkakunta: Itä-Uusimaa

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Pikku Mersu »

Erihieno mittaristo!
GLC 300 de -21 & SLK 230 Kompressor aut -00.
ex. w168 170 cdi aut, w245 200 cdi cvt, s204 220 cdi aut, s205 220 d 4matic aut. -16 ja Smart ForTwo aut +muita romuja...
Avatar
Mighty190
Vakiokalustoa
Vakiokalustoa
Viestit: 363
Liittynyt: Pe 17.01.2014 23:52
Paikkakunta: Pori

Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

Viesti Kirjoittaja Mighty190 »

Pikku Mersu kirjoitti: Pe 02.06.2023 18:32 Erihieno mittaristo!
Kiitokset!

Hallilla on ollut melko hiljaista. Spoilerin sain kiinni ja mittariston akkuvarmennuksen tarkempi suunnittelu etenee hiljalleen.

Kuva

Tulevia hommia varten olen keräillyt osia hyllyyn, mm.
  • W124 turbon lokasuoja (ritilää varten)
  • W201 2,5 turbodieselin ilmansuodatinkotelo
  • Turbobanditin M104 turbopakosarja
Hyllystä löytyikin jo ahdin, suuttimet ja BOV.

Kuva

Tällä setupilla pitäisi päästä johonkin 350-400hv nurkille etanolilla. Sulakkeena toimii todennäköisesti perä, vetarit tai kansinahka. Katsotaan, missä kohdin alan asentelemaan, täytyy välillä ajellakin :lol:


To do lista tällä hetkellä:
  • Korisarjan kiinnitykset kuntoon
    • Ovien listojen kiinnitykset
  • Ulkonäkö
    • Takaikkunaa ympäröivien ruosteiden kiinniotto (ammattilaisella)
    • (Ylimaalaus)
    • Puskurien halkeamat kuntoon
    • Zender -spoileri kiinni
    • Antenni pois
  • Virtalähteiden varmentaminen
      • Raspberryn jännitteen varmistaminen kondensaattori/akkuvirityksellä
    • Käyntihäiriön korjaus (alipainevuoto?)
    • Ahtaminen
      • Turbon lokasuojan teko ja maalaus
      • Ilmansuodatinkotelon sovittaminen ja kiinnitys
      • Välijäähdyttimen sovittaminen ja kiinnitys
      • Ahtoputket
      • Turbon öljyn meno ja paluu
      • Turbon veden meno ja paluu
      • Konehuoneeseen tilaa -> Lasinpesunesteen säiliö luukkuun, ehkä paisuntasäiliö toiselle puolelle?
      • Downpipen teko ja teippaus
      • Hukkaportin asennus ja screamerin asennus tai hukkaportin laipan tukkiminen sarjasta
      • "Väliseinä" ilmansuodatinkotelon ja moottorin väliin
      • Imusarjan pituuden ohjaus pois (ahtoputkea varten)
      • Huohotuksen uudelleenreititys
    Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
    Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

    Projektina W201 2.8 24V MS2 V3.0
    Avatar
    Mighty190
    Vakiokalustoa
    Vakiokalustoa
    Viestit: 363
    Liittynyt: Pe 17.01.2014 23:52
    Paikkakunta: Pori

    Re: W201 2.0 8V -> 2.8 24V MS2 V3.0

    Viesti Kirjoittaja Mighty190 »

    Jatketaan. Mittariston virtapuoli tuli kuntoon, ei onneksi tarvinnut viritellä konkkia tai akkua. Piirikaavio:

    Kuva

    Eli kun sytytysvirta (IGN) tai saattovalot (REMOTE) on päällä, ajastinyksikölle (K3) tulee jännite. Jännite tulee myös releille K1 ja K2, joista K1 vetää IN portin maihin ja K2 irroittaa yhteyden RPI GPIO19 ja RPI GND väliltä. Ajastinyksikkö vetää itselleen pitopiirin ja D3 pitää huolen, ettei pitopiiriä tule kohteille K1 tai K2. D1 ja D2 pitävät huolen, ettei virta karkaa väärään suuntaan.

    Kun ajastinyksikölle tuodaan jännite, sen COM-NO väli sulkeutuu. Kun IN irroitetaan maista, ajastin lähtee juoksemaan ja sen loputtua COM-NO väli aukeaa. Näin saadaan toiminnallisuus sille, että mittaristo lähtee käyntiin jo ovet avatessa (n. 10-15s nopeammin mittaristo käytettävissä) tai kun laittaa virrat päälle. Kun virrat ottaa pois, ajastin pitää mittariston sähköissä siihen asti, että se ehtii sammuttamaan itsensä. RPI:n puoli:

    Koodi: Valitse kaikki

    from gpiozero import Button
    import time
    import os
    
    shut_But = Button(19)
    
    while True:
    	if  shut_But.is_pressed:
    		time.sleep(20)
    		#print("Painettu")
    		if shut_But.is_pressed:
    			os.system("shutdown now -h")
    			time.sleep(1)
    	time.sleep(1)
    
    Kun virrat ovat olleet pois 20s, sammuttaa RPI itsensä. Scripti saadaan käymään käynnistyksen yhteydessä laittamalla /etc/profile tiedostoon

    Koodi: Valitse kaikki

    #python3 [polku tiedostoon], esim:
    python3 /home/pi/Python/shutdown.py
    
    Kuvia:

    Kuva

    Kuva


    Kuva

    Kuva

    Ihan hyvähän siitä tuli. Miinuksena se, että mittaristo lähtee myös päälle silloin, kun laittaa ovet kiinni. Sammuu toki myös. Alunperin piti toteuttaa tuo IGN ja REMOTE haistelu optoerottimilla ja niin teinkin, mutta ongelmaksi muodostoi se, että RPI ei tykkää kun GPIO on maissa bootissa. Näin logiikka piti kääntää ja päädyin releeseen ja avautuvaan koskettimeen.

    To do lista tällä hetkellä:
    • Korisarjan kiinnitykset kuntoon
      • Ovien listojen kiinnitykset
    • Ulkonäkö
      • Takaikkunaa ympäröivien ruosteiden kiinniotto (ammattilaisella)
      • (Ylimaalaus)
      • Puskurien halkeamat kuntoon
      • Antenni pois
    • Virtalähteiden varmentaminen
        • Raspberryn jännitteen varmistaminen kondensaattori/akkuvirityksellä
      • Käyntihäiriön korjaus (alipainevuoto?)
      • Ahtaminen
        • Turbon lokasuojan teko ja maalaus
        • Ilmansuodatinkotelon sovittaminen ja kiinnitys
        • Välijäähdyttimen sovittaminen ja kiinnitys
        • Ahtoputket
        • Turbon öljyn meno ja paluu
        • Turbon veden meno ja paluu
        • Konehuoneeseen tilaa -> Lasinpesunesteen säiliö luukkuun, ehkä paisuntasäiliö toiselle puolelle?
        • Downpipen teko ja teippaus
        • Hukkaportin asennus ja screamerin asennus tai hukkaportin laipan tukkiminen sarjasta
        • "Väliseinä" ilmansuodatinkotelon ja moottorin väliin
        • Imusarjan pituuden ohjaus pois (ahtoputkea varten)
        • Huohotuksen uudelleenreititys
      Daily driver: Projekti, koska luotettavat autot ovat tylsiä Luotettava, eli tylsä CLK 270
      Entiset: W124 260E, W201 2.0, W201 2.0, S202 220 CDI

      Projektina W201 2.8 24V MS2 V3.0
      Vastaa Viestiin