Tiedonkeruukortti dynoon SimpleDyno softalle

  • Viestiketjun aloittaja Viestiketjun aloittaja kkuula
  • Aloituspäivämäärä Aloituspäivämäärä

kkuula

Kansalainen
KK Plus ADpack
Aloitan tällaisen uuden keskustelun erillään dyno/tehonmittaus keskustelusta. Saatan avata keskustelun tästä samasta aiheesta muutamalla muullakin foorumilla.

Pohjustuksena aiheeseen, Simple Dyno softassa on tunnistettu ongelma minkä takia se ei kykene mittaamaan juurikaan yli 1000rpm rullan nopeutta ja tätä on useamman osallistujan voimin labrattu ja vika on paikallistettu itse softaan jonka korjaus vaatisi käsitykseni mukaan jonkinverran ko. softan uudelleen kirjoittamista. Ongelma liittyy tarkemmin rullan triggeriltä tulevien pulssien aikaleimojen käsittelyyn, jos uusi pulssi tulee ennen kuin edellisen pulssin aikaleimat on lähetetty pc softalle menee käppyröiden piirto sekaisin

Jos jollain on ratkaisuehdotuksia tuohon Simple Dyno softan ongelmiin niin sen lähdekoodit löytyy googlaamalla ja on ohjelmoitu Visual Basicilla.

Itse koitin ratkaista ongelman käyttämällä mittakortissa tehokkaampaa kaksiytimistä prosessoria (ESP32 pohjainen) joka ehtii prosessoida datan nopeammin ja datan lähetys voidaan sillä tehdä erillään datan prosessoinnista. Tein tälle kokonaisen mittakortin jossa on K-tyypin antureille kaksi mittasisääntuloa, kaksi analogi sisääntuloa, kahdelle erilaiselle pulssianturille sisääntulot sekä muutama yleiskäyttöinen sisääntulo. Kaikki nuo kalvaanisesti erotettuna prosessorista.

Sitten aiheeseen itse asiaan, ajatus olisi tehdä tuosta mittakortista seuraava versio ihan oman huvin, harrastuksen ja muiden harrastajien hyödyksi.
Kyselenkin tässä oikeastaan hieman apuja hommaan koska oma tietotaito ja resurssit ovat rajalliset.

Ensin pitäisi haarukoida mitä ominaisuuksia mittakortille halutaan ja miten nämä ominaisuudet toteutetaan.
Yksi rajoitus on mittakortin hinta, se olisi syytä olla harrastajaystävällinen ja tämä rajoittaa hieman komponenttivalintoja yms.
Mittakortin koodista sen verran että siinä ei ole muuta rajoitusta kuin SimpleDynon käyttämä dataformaatti eli se missä muodossa data lähetetään SD:lle.

Ajatus olisi käyttää prosessorina tuollaista kaksiytimistä ESP32-S3 koska se on erittäin edullinen ja suhteellisen laajasti harrastajien käyttämä. Tarkemmin ottaen alustana voisi käyttää Arduino UNO formaatissa olevaa palikkaa jossa on tuo kyseinen ESP32 atmellin 8-bittisen ohjaimen tilalla. Tuosta olisi hyötynä kohtuu hinnan lisäksi jonkintason pinniyhteensopivuus arduino lisäkorttien kanssa.

Kytkennän pohjana voisi käyttää alkuperäistä 2StrokeStuffingin Ardyno kortin kytkentää hieman höystettynä ja parannettuna.

Ehdotuksia, ajatuksia?
 
Tässä on viimeisimmän mittakortin kytkentä ja kuva kortista, ei ehkä selkein esitys mutta pääosin toimii. Tuosta kytkennästä on toimivaksi todettuja toimintoja ainakin digitaaliset sisääntulot, induktiivisen anturin sisääntulo ja k-tyypin anturin kytkentä.
Tuossa on k-tyypin anturien ja AD-muuninpiirien liityntäväylät erotettu ihan erotuspiireillä ja DIO:t optoerottimilla ja tuolle ulkoiselle liityntäosiolle on oma virransyöttö omalla USB-C:llä.
Nyt kun kortti on käytössä koteloimattomana pitää se siirtää noin parin metrin päähän moottorista jottei ota häiriötä sytytyksestä.
Nyt kun oma käytännön kokemus aiheesta on vähäinen niin melkomonta kysymystä on avoinna..

Kustannuksen ja tilan takia herääkin kysymys onko tuo K-tyypin anturien piirin väylän erotus tarpeellinen? Entä onko erilliset AD muuntimet erotuksineen tarpeellisia nekään? Alkuperäisessä 2Stroken kytkennässä ei ollut mitään erotuksia ja siinä oli kovastikin ongelmia häiriöiden kanssa jonka takia ymppäsin tähän versioon kaiken mahdollisen erotuksen. Tästä taisikin jo tulla päätelmä että määrätyt osat pitää olla erotettu mutta mikä on riittävä taso erotukselle? Voinee olla ettei se selviä muuta kuin kokeilemalla.

Sitten pyörimisnopeussignaalin kaappaaminen sytytystulpan johdosta, sille tarvitaan varmasti toimiva kytkentä, tuossa on jonkinlainen triggerikytkentä tehty 555 ajastimen ympärille mutta se on testaamatta toimiiko vai ei, tämä pitää testata. Tuossa mun omassa moottorissa on Ignitechin sytytys josta saa ihan suoraan kunnollisen pyörimisnopeussignaalin ja sen voi syöttää sisään jostain noista io:sta. Sitten jos tätä mahdollisuutta ei ole niin sitten tulpan johdosta kaappaamalla jollain keinolla mutta erilaiset "anturit" tulpanjohdon ympärille tarvitsee ehkä jokainen hieman erilaisen kytkennän mittakortin sisääntuloon.

Schematic_DynoMeasBoard_ESP32-DevKitC-32_2024-12-03.webp


Näyttökuva 2024-12-03 175102.webp
 
Itse kun en softapuolesta ymmärrä niin tuon rullan nopeuden mittaamisen ongelman kuvittelisin ratkaisevani että triggerpyörä olisi erillinen ja vaikka hihnavetoisesti 1:10 välityksellä hidastettu. Tuo välitys lähinnä sen takia että todellinen nopeus olisi helpompi laskea.
 
Termoelementeille saa muutamalla kympillä netistä valmiita kortteja joihin saa esimerkiksi 12 elementtiä ja ulostulo vaikka rs-485. Näytteenottotaajuus vaihtelee malleittain - jotain 100ms näytti löytyvän helposti. Väylällä prosessoinnin saa vaikka kuinka kauas. Ja Arduinoonkin löytyy I2C/rs-485 kortteja.
 
Tässä sovelluksessa riittää kaksi sisääntuloa termoparille ja noiden integrointi samalle piirilevylle on osittain kustannuskysymys, osat muutaman euron per kanava k-tyypin termoparille.

Toimii varmasti hyvin sähköpyöränkin kanssa.
 
Laittaa pulssille esim. CMOS jakajapiirin tai jo ihan RS kiikkukin T kiikuksi kytketty jakaisi taajuuden puoleen jos tuon saa sitten kertoimella softassa kuntoon
 
Laittaa pulssille esim. CMOS jakajapiirin tai jo ihan RS kiikkukin T kiikuksi kytketty jakaisi taajuuden puoleen jos tuon saa sitten kertoimella softassa kuntoon
Tuo on vaan periaatteessa väärin kun tehdään mittauksia. Saattaa olla toimiva ratkaisu, mutta saattaa jossain tapauksissa aiheuttaa kummallisia virhetilanteitakin. Aina parempi jos ei tarvitsisi muunnella mitattavaa signaalia.
 
Onko mekaanisesti mahdoton tehdä muutosta, että olisi anturille välitys. mikä vaikka puolittaisi kierrosluvun?
 
Kaksi eri maata pistää vähän silmään. Joskus experimentoitiin erillisen analogiamaan kanssa eikä sitä meinannut saada hyväksi vaan helpoin ratkaisu oli yksi jäykkä maa. Eri taajuiset häiriöt menee eri reittiä ja se on todella hankala hanskata käytännössä.

Montako kerrosta leiskassa? Jos kerran on häiriongelmia niin lähtisin heti 4-kerroslevyyn minne tukeva maaplane ja mahdolliset powerplanet. Se on semmoista käänteistä antennisuunnittelua että minimoidaan antenneja ja resonansseja.
 
Voi olla tyhmäkin kysymys tai jo jossain vastattu, mutta millä nopeudella tuota sarjaporttia ajetaan?
 
Tuo on vaan periaatteessa väärin kun tehdään mittauksia. Saattaa olla toimiva ratkaisu, mutta saattaa jossain tapauksissa aiheuttaa kummallisia virhetilanteitakin. Aina parempi jos ei tarvitsisi muunnella mitattavaa signaalia.

Väitteesi oikeastaan vaatii perustelun.

Kysehän on digitaalinen signaali... Informaatiota ei oikeasti huku pulssiakaan sillä vaikkapa kiikun voi ajatella yksibittisenä muistina. Tai laskuripiiri. Toki alkutila pitää olla hallittu jos pitää tietää absoluuttinen pulssimäärä.

Ajattelepa vaikka moottorinohjausta jossa on triggeripyörä... yksi hammas puuttuu ja sillä tunnistetaan. Firmiksestä riippuen varmasti osa pulsseista turhia...

Aloituksen asiaan tosiaan ykkösratkaisu puukottaa softa kuntoon... ehkä uudelleenkirjoittaa. Mun mielestä nopeita signaaleita ei pitäis millään korkeen tason tyyliin pc softalla käsitellä vaan mikrokontrollerilla. On mahdollista käyttää rautalaskureita joista esim keskeytys tms eli se firmiskään ei kauheasti vaatisi prossulta kun firmis ei tekisi laskentaa.

Mutta tää oli aika löyhästi spekuloitua selvittämättä yhtään aloittajan softaa.

Tutkijat käyttäisi NI korttia ja Labviewiä mutta se ei liene pointti.
 
Viimeksi muokattu:
Voi olla tyhmäkin kysymys tai jo jossain vastattu, mutta millä nopeudella tuota sarjaporttia ajetaan?

tiedän omasta työstä useita kohteita joissa ajoitukset on kustu kun vaikkapa kahdesta laitteesta tulee PClle sarjadataa asynkronisesti ja ne pitää ympätä. ongelma ei ole aito mutta aiheuttaa nurinaa tietyissä piireissä. osaavat osaa lopputuloksen kuitenkin matlabilla sorvata
 
tiedän omasta työstä useita kohteita joissa ajoitukset on kustu kun vaikkapa kahdesta laitteesta tulee PClle sarjadataa asynkronisesti ja ne pitää ympätä. ongelma ei ole aito mutta aiheuttaa nurinaa tietyissä piireissä. osaavat osaa lopputuloksen kuitenkin matlabilla sorvata

Tuossa tavailin SimpleDynon manuaalia. Oletuksena sarjaporttia ajetaan 9600 Baudilla, joka on kyllä aivan liian vähän. Softassa on ilmeisesti tuki 115200 Baudiin asti, tällöin myös Arduinon/esp:n koodiin pitää nopeus muuttaa.

Sitten kokonaan toinen juttu on tuo datan muoto, pilkuilla erotettuna:
(1) Session time (length of time controller has been running) in microseconds
(2) The recorded session time for an interrupt triggered at the RPM 1 pin
(3) The recorded time between the current and the last interrupt triggered at the RPM1 pin
(4) The recorded session time for an interrupt triggered at the RPM 2 pin
(5) The recorded time between the current and the last interrupt triggered at the RPM2 pin
(6) 10 bit result for Analog pin measuring Voltage
(7) 10 bit result for Analog pin measuring Current
(8) 10 bit result for Analog pin measuring Temperature1
(9) 10 bit result for Analog pin measuring Temperature2
(10)10 bit result for Analog pin measuring a fifth analog pin (equivalent to Pin A4)
(11)10 bit result for Analog pin measuring a sixth analog pin (equivalent to Pin A5)

Mä en nyt välttämättä innostu tuosta RPM käsittelystä lisäksi kun siellä mennään kahta eri keskeytystä rinnakkain. Oikeastaan isoin punainen vaate on juurikin se, että kierrosluvussa käytetään aika-komponenttia viestittämisessä. Tällöin tuolla ei ole varaa missata yhtään keskeytystä, vaan se käytännössä tuhoaa kyseisen kierroslukutiedon välittömästi. Jotenkin ainakaan tuo manuaalin selostus ei omaan ajatusmaailmaan istu, jotenkin mun mielestä esim. motronic 60-2 triggerillä tekee kierroslukulaskennan suoraviivaisemmin.

Lisäksi mä kyllä ulkoistaisin kaiken ylimääräisen laskennan ja aikakirjanpidon tietokoneelle. Toki nyt puhutaan valmiista tietokonesoftasta (jota toki voisi muokata kyllä).

Ja kun kerran viestissä ensimmäisenä on "session time", niin softahan voisi hylätä suoraan vanhentuneet viestit, eli vain edellistä session timeä uudemmat viestit kelpaa.


Nää ihan omia ajatuksia, tuntematta SimpleDynoa sen paremmin. Ei myöskään ole mitään näkymää tuohon arduino-koodiin, niin huono arvioida sitä tarkemmin. Omat havainnot pohjautuen lähinnä omiin kokemuksiin tuosta harrastekulkineen moottorinohjauksesta, johon tuli rakennettua mm. nopea datalogi kahdella prossulla (8051) synkassa (vakiosoftassa hyvin rajattu hidas datalog vain pääprossulla). Tuo oma datalogi huutaa dataa sarjaporttiin aina kun voi, kaikki raakana ja muutamat synkka-tavut väliin, joilla läppäri synkkautuu. Jos läppäri ei saa tajuttavaa pakettia, se hylkää sen.
 
Kiva, sittenhän sitä vois tästäkin teoriassa sivuprojektina kiinnostua.

Onko aikeena jatkaa tuolla VB versiolla, vai siis korvata paremmalla:epätieto:
Parempaa ilmaista ei ole olemassa tai sellaisesta ei ole tietoa. Kaupalliset mittalaitteet softineen hinnat alkaa reilusta tuhannesta eurosta ylöspäin.
 

Luo tili tai kirjaudu sisään kommentoidaksesi

Sinun täytyy olla jäsen voidaksesi jättää kommentin.

Luo käyttäjätili

Liity Konekansalaiseksi. Se on helppoa ja ilmaista! Rekisteröityneenä et näe mainoksia, voit käyttää hakua, näet alueita, joita nyt ovat piilossa...jne.

Kirjaudu sisään

Oletko jo Konekansan jäsen? Kirjaudu sisään tästä.

Takaisin
Ylös