Näytetään tekstit, joissa on tunniste DPS. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste DPS. Näytä kaikki tekstit

sunnuntai 13. toukokuuta 2018

Mittauksia traktorissa

Tuli tilaisuus käväistä logiikka-analysaattorin kanssa mittailemassa DPS-ohjainkortin ajastuksia Mezzo-sarjan vm. 1999 Valtra 6800:ssa. Tässä yksilössä on käytössä DPS-ohjainkortin uusin versio, se on vaihdettu muutama vuosi sitten hajonneen alkuperäisen kortin paikalle.

Ensimmäisenä silmiin pisti pikavaihteen vaihtonappikytkimen kytkinvärähtely (kytkin vapautettu eli ajan mittaus signaalin laskevasta reunasta):

DPS-vaihtokytkimen kytkinvärähtely

Omassa testipenkissäni en ilmiötä näin voimakkaana ole havainnut, mutta tietenkin nuo mekaaniset mikrokytkimet aikaa myöten kuluvat ja jousivoima heikkenee. Kun kytkin vapautetaan kursorin kohdassa A1, niin vasta n. 10 ms kuluttua signaali asettuu nollatilaan eli tuon aikaa se hyppii ylös ja alas. Softaani rakennettu värähtelysuodin ei siis ole tarpeeton. Tuloksista näkyi myös se, että tyypillinen napin painallus kestää 100-200 ms.

Seuraavaksi katsoin kuinka kauan napin painamisesta menee aikaa siihen, kun solenoidin ohjaus aloitetaan:

 Aika valinnasta ohjaukseen

Kun vaihtonappia painetaan, niin solenoidin ohjaus aloitetaan vastan reilun 160 ms:n jälkeen. Yllättävän suuri viive, mutta sille lienee syynsä. Eihän tuo siis käytännössä pitkä aika ole, napin painalluskin kestää pitempään eli solenoidit on ohjattu ennen, kuin nappi on vapautettu (vihreän pulssin laskeva reuna). Sama viive esiintyy kaikissa vaihtotilanteissa riippumatta siitä, vaihdetaanko ylös- vai alaspäin. Kuvan mittakaava on sellainen, että kytkinvärähtelyt eivät siinä erotu, mutta tässäkin kytkimessä ilmiö on nähtävissä.

Edellisestä kuvasta näkyy myös solenoidien ohjausten välinen aika eli tilanne, jossa molemmat solenoidit vaihtavat tilaansa. Solenoideja ei ohjata yhtä aikaa vaan niiden ohjausten välissä on n. 50 ms viive. Eli ensin ohjataan toinen solenoidi, sitten 50 ms tauko ja vasta sitten toinen:

  Solenoidien ohjausten välinen aika

Nämä viiveet on helppo toteuttaa uuden prosessorin ohjelmaan ja tulen tekemään sen noiden mittausten perusteella.

Mielenkiintoisin asia, joka näistä mittauksista paljastui on se, että Valtra on näköjään poistanut ainakin ohjainkortin uusimmasta versiosta kokonaan käsijarrulta ja kytkinpolkimelta tulevien signaalien käsittelyn. Eli kytkinpoljn tai käsijarru EIVÄT vaikuta pikavaihteen ohjaukseen vaan solenoidit ohjataan kytkimen tai käsijarrun tilasta riippumatta. Ehkä ovat katsoneet, että on parempi, että vaihde on valmiiksi päällä siinä vaiheessa kun kässäri vapautetaan. Käsijarrun summerille menevä signaali on erillinen prosessorille menevästä, joten summerin ohjaus toimii itsenäisesti vaikka signaalia ei prosessorissa käsiteltäisikään.

Käsijarrun ja kytkimen rajakytkinten haistelun toteutus on todistetusti ollut (=olen mitannut testipenkissäni) ainakin joissain kortin versioissa, myös siinä, joka tässä Valtrassa oli alunperin asennettuna. Tulen tekemään nämä uusimman korttiversion ominaisuudet myös omaan softaani, jolloin päivitetty kortti tulee toimimaan samalla tavalla kuin jos koneeseen hankittaisiin varaosana uusi kortti. 
 

maanantai 7. toukokuuta 2018

Piirilevyn testausta

Piirilevyt tulivatkin yllättävän pian ja tietysti piti päästä heti kokeilemaan. Levyt näyttävät ihan laadukkailta ja varsinkin hinta laatusuhde on loistava: 11 kpl 13,00 e postikuluineen eli 1,18 e/kpl. Toimittaja laittoi siis näköjään vielä yhden levyn kaupanpäällisiksi. Toimitusaikakaan ei huono: tilaus 25.4., toimitus 7.5. eli 12 päivää. PCBway:lla näyttäisi muuten olevan parasta aikaa aika hyvä tarjous: 10 levyä (1- tai 2-kerrosta) max. 100x100 mm vain $5 + pk. Lisäksi siellä on jaossa ilmaisia prototyyppireikälevyjä.

Uusia piirilevyjä

Juotin ulompiin reikiin holkkikannasta puretut pinnit (yksi irtonainen näkyy kuvan alareunassa) ja tähän ensimmäiseen kokeiluversioon 28-napaisen DIL-kannan, jotta prosessorin saa vielä irti ja pystyy ohjelmoimaan helpommin uudestaan. Kunhan ohjelma on käytännössä testattu, juotan ATmega8:n suoraan piirilevylle, jotta mahdollisia kontaktihäiriöpaikkoja olisi mahdollisimman vähän. Ja tietenkin päälle vielä suojalakka, joka tukkii myös nyt näkyvissä olevat holkkien päihin tyhjiksi jäävät reiät.

Pikkupiirilevyn kantaan sitten AVR Dragonissa ohjelmoitu ATmega8 ja piirilevy DPS-kortille ST62T15:n kantaan. Piirilevy sopii täsmälleen alkuperäisen prosessorin kantaan niinkuin kuuluukin. Yhtään isompi piirilevy tähän ei mahtuisi, joten mitoituskin onnistui ensi yrittämällä.

 Uusi prosessori asennettuna alkuperäisen paikalle

Sitten ei muuta kuin kortti testipenkkiin kiinni ja kokeilemaan. Yllätyksiä ei tullut eli kortti alkoi toimimaan odotusten mukaisesti. Siis testipenkissä...
Uuden prosessorin ja piirilevyn testaus

Tästä on hyvä jatkaa projektin viimeiseen vaiheeseen eli kortin kokeilemiseen traktorissa. Logiikka sinänsä tuntuu toimivan oikein, mutta viiveet on vedetty enemmän tai vähemmän hihasta. Eniten mietityttää kytkinpolkimen käyttö. Pikavaihdehan kytkeytyy kytkintä painettaessa pois ja uudestaan päällä kytkintä nostettaessa. Onko siinä vaiheessa viivettä, kun tieto kytkimen ylönostamisesta tulee siihen, kun pikavaihde ohjataan uudestaan päälle? Sadan tai parinkaan sadan millisekunnin viivettä ei korvakuulolta huomaa, mutta sillä voi olla merkitystä toiminnan kannalta.

Pitää yrittää houkutella vaimon sukulaismies testaamaan kortti omassa traktorissaan mielellään vielä vähän pitemmän aikaa, jotta toiminta saadaan käytännössä varmistettua. Täytyy samalla skoopata alkuperäisen kortin ohjaukset, jotta todelliset viiveet ohjauksissa varmistuvat.

Ajastusten selvittämistä varten piti vähän askarrella lisää tarvikkeita. Traktorissa kortilta suoraan on hyvin vaikeata mitata signaaleja, joten sen takia tein väliadapterin, johon saan kiinni logiikka-analysaattorin piuhat. Testipenkissä väliadaperi näyttää tältä:


Logiikka-analysaattorin liitäntä

DPS-korttiin sopivat naarasliittimet ovat näköjään käyneet vähiin, joten laitoin 18-napaisen paikalle 14-napaisen. Tästä aiheutuu se, että vaihteiden merkkivalot eivät toimi, mutta niitä ei ajastusten mittauksissa tarvitakaan. Adapterissa on liitinrima, josta on helppo hyppylangoilla yhdistää tarvittavat signaalit logiikka-analysaattoriin.

Analysaattorina minulla on kovin vaatimaton USB-liitännällä varustettu Saleae Logic 16:n vanha versio, mutta sen nopeus ja näytteenottokyky kyllä riittävät erittäin hyvin näin hitaiden signaalien mittaamiseen. Hyvää tässä analysaattorissa on sen edullisen hinnan lisäksi se, että sen Windows-softa on kohtuullisen hyvä ja sitä on myös vuosien mittaa ylläpidetty ja kehitetty. Uusin softa toimii Windows 10:ssäkin tuolla minunkin vanhalla laiteversiolla mainiosti.

Kokeeksi kytkin signaalit analysaattorille solenoideilta (DPS A ja DPS B), vaihtonapeilta (DPS- ja DPS+) ja kytkinpolkimen mikrokytkimeltä sekä mittasin ne omalla softalla varustetulta kortilta testipenkissä. Analysaattori tuottaa tämmöistä dataa:
  Logiikka-analysaattorin mittauksia

Traktorissahan kytkinpolkimessa on mikrokytkin, joka polkimen ollessa ylhäällä on kytketty +12V:iin ja joka poljinta painettaessa avautuu, joka näkyy sitten kortilla optoerottimen jälkeen 0V:na. Triggeriksi eli näytteenoton aloittajaksi on valittu kytkinpolkimelta tulevan signaalin muutos ykkösestä nollaan. Analysaattori tallentaa ja näyttää tästä tapahtumasta signaalien tilat sekunnin eteenpäin ja lisäksi asetuksissa valitun ajan eli 200 ms dataa ennen triggerin laukeamista.

Oranssi ja punainen signaali (DPS A ja DPS B) kuvaavat solenoidelle meneviä ohjauksia. Molemmat ovat ylhäällä, joten valittuna on siis kakkosvaihde. Sininen signaali (Clutch) kuvaa kytkinpolkimen mikrokytkimeltä tulevaa signaalia ja se laskee alas kursorin kohdassa A1 eli kytkin on painettu niillä main alas. Kursorin kohdassa A2 DPS A ja DPS B menevät alas eli ohjaus solenoidelle loppuu ja pikavaihde menee pois päältä. Kytkinpolkimen mikrokytkimen avautumisesta menee tässä tapauksessa n. 27 ms siihen, kun pikavaihde ohjataan pois päältä. Tarkkaan katsoen kuvassa näkyy myös kytkinvärähtely sinisessä signaalissa, softassa tämä on suodatettu pois eli vain ensimmäinen muutos huomioidaan.

Seuraavaksi siirryn sitten sopivan tilaisuuden tullen mittaamaan ajastukset eri tilanteissa traktoriin ja viritän oman softan vastaamaan toiminnaltaan alkuperäistä.
 

torstai 3. toukokuuta 2018

Softaprotoilua

No niin, ensimmäinen softaproto on nyt tehty ja testattu. Hyvin toimii ainakin testipenkissä eli projektilla on mahdollisuus jopa onnistua. Alla on kuva testijärjestelystä:

ATmega8 ensitestissä

Testausta tein siten, että ensinnäkin ATmega8 on AVR Dragon kehitysalustan kortilla ja prossu on yhdistetty hyppylangoilla Dragonin ISP-ohjelmointiliittimeen. Kun Dragon on yhdistetty USB:llä PC-koneeseen, niin saan ladattua ohjelmabinäärin ATmega8:n flash-muistiin eli flässättyä sen suoraan prossulle. Tässä vaiheessa huomasin, että oli valinnut vähän harkitsemattomasti samoja GPIO-pinnejä käytettäväksi DPS-outputtien ohjaukseen, joita käytetään myös Dragonin ja ATmega8:n väliseen kommunikointiin. Jotta hyppylankoja ei tarvitsisi ohjelmoinnin ajaksi vaihtaa paikasta toiseen, tein softaan sellaisen pienen muutoksen, että kun siitä käännetään debug-versio, niin käytössä on eri GPIO-pinnikonfiguraatio kuin lopullisessa versiossa. Hyppylankoja tulee ihan kohtuullinen määrä kuten kuvasta näkyy:

 ATmega8 johdotettu AVR Dragonista ST62T15:n kantaan

Softa sinänsä toimi lähes ensimmäisellä yrittämällä ongelmitta. Tässä ehkä näkyy kokemus, kun tästä huomattavasti vaativampia softaprojekteja on tullut aika pitkään tehtyä. Eipä tuohon paljon lähdekoodirivejä tullut, harvoin on tullut näin pieniä softia (kokonaisuudessan luokkaa 500 riviä lähdekoodia) tullut kirjoiteltua. Suurin ongelma käyntiin saamisen kanssa oli yksi viallinen hyppylanka, vika selvisi vasta mittaamalla kaikki hyppylangat yleismittarilla. Tämä on tätä tyypillistä kiinalaista laatua. Kun halpaa ostaa niin vikariski on aina olemassa. Tosin tuolla 20 kpl:een puolentoista euron hankintahinnalla (sis. pk.) ei itse viitsi alkaa näitä väsäämään, pienet laatupoikkeamat sallittakoon.

Kun mekaniikkaa ohjataan digitaalisesti, ongelmaksi usein tulee ohjauksen nopeus. Tuollainen 8-bittinenkin RISC-prossu toimiessaan pienimmällä mahdollisella kellotaajuudella (ATmega8:ssa 1 Mhz) suorittaa se n. miljoona toimenpidettä eli käskyä sekunnissa ts. millisekunnissakin vaikkapa ohjattavaa lähtöä ehditään heiluttelemaan luokkaa tuhat kertaa ja ATmega8:n perustajuudella (8 MHz) jo luokkaa 8000 kertaa.

Solenoidin toiminta-aika ilman eritystoimenpiteitä on luokkaa 30-80 ms, joka prosessorin mittakaavassa on todella pitkä aika: prossu ehtii tekemään kymmeniätuhansia tai jopa satojatuhansia käskyjä tuona aikana. DPS-ohjauksessa on lisäksi otettava huomioon hydrauliventtiilin toiminta-aika, joka sekin on luokkaa vähintään 10-20 ms. Eli kovin nopsasti venttiileitä ei saa yrittää avata ja sulkea. Käytännössä tämä tarkoittaa sitä, että kun venttiiliä ohjaavan solenoidin tilaa muutetaan, pitää toimenpidettä odotella luokkaa 100 ms eli 0,1 s eikä tänä aikana saa yrittää muuttaa tilaa uudestaan (eli valita uutta vaihdetta). Tämän 100 ms viiveen ohjelmoin myös tähän softaan oletuksena eli tuona aikana ei uutta ohjausta tehdä. Pitää vielä varmistaa olenko oikeilla jäljillä kunhan saan toimivan DPS-ohjainkortin käsiini. Aiemmin en ole tätä ohjaussekvenssiä tällä tasolla aika-akselilla tutkinut.

Tästä on hyvä jatkaa softan testausta ja viimeistelyä. Seuraava isompi askel tulee sitten, kun saan tilaamani piirilevyt ja saa asennettua uuden prossun DPS-kortille ja pääsen kokeilemaan korttia itsenäisesti. Sen jälkeen kortti otetaan käyttöön oikeassa ympäristössään eli koekäytän sitä Valtran traktorissa riittävän pitkän koejaon (päiviä tai viikkoja).

Tässä vaiheessa voisin tehdä pientä yhteenvetoa projektin kustannuksista. Rahaa ei juurikaan ole kulunut lähinnä siksi, että itselläni on ollut valmiina aika paljon tuotekehityksessä tarvittavaa kalustoa. Suurin kustannus oli piirilevyjen hankinta, ne maksoivat kokonaista 13 euroa/10 kpl. ATmega8 maksaa Suomesta kaupasta ostettuna n. 4,50 e/kpl. Viallisen DPS-ohjainkortin prosessorin korvaamisen tarvittavat osat maksavat siis n. 6 euroa, alle kympillä saa jo vanhat konkatkin uusittua todella hyvälaatuisilla versioilla. Eli kovin paha hinta tämä ei ole verrattuna uuden varaosakortin hintaan, joka alvillisena on tietääkseni nykyään luokkaa 700 euroa. Kympillä en tietenkään tule näitä korjauksia tekemään, mutta uuden kortin hintaan verrattuna erittäin kohtuullisella hinnalla korjaus tulee kyllä onnistumaan. Jos siis näitä prosessorivikaisia kortteja alkaa ilmaantumaan enemmän...

keskiviikko 2. toukokuuta 2018

Softakehitystä

Atmelin AVR-tuoteperheen 8-bittiset RISC-prosessorit (tai oikeammin mikrokontrollerit) ovat suosittuja ennen kaikkea harrastajien piirissä, ammattikäyttäjille on tarjolla saman perheen jopa 32-bittisiä prossuja. Suosion syynä on mm. on hyvä saatavuus, edulliset hinnat ja laaja valikoima. Harrastajille on tarjolla suuri joukko 10-30 euron kehitysalustoja, joilla pääsee liikkeelle helposti. Arduino-tuoteperheen alustat lienevät harrastuspiireissä tunnetuimpia, niillä aloittelijakin pääsee helposti tekemään käytännön toteutuksia. Oheislaitteita ja lisäkortteja Arduinoihin on saatavana enemmän kuin tarpeeksi.
Arduino Uno -kehitysalusta
 Softan kehitystyökaluja AVR:lle on tarjolla runsaasti yleisimpiin markkinoilla oleviin käyttöjärjestelmiin. Ammattikäyttöön maksullinen kehitysympäristö löytyy mm. IAR:lta,  samoin sulautettuja käyttöjärjestelmiä on tarjolla enemmän kuin tarpeeksi usealta eri toimittajalta. Microchipilta on ladattavissa myös ilmainen Microsoft Visual Studioon perustuva helppokäyttöinen Windows-pohjainen kehitysympäristö Atmel Studio, jota tulen myös tässä projektissa käyttämään. Atmel Studiossa on mukana assembler-kääntäjän lisäksi sekä C- että C++ -kääntäjä ja se tukee useita HW-alustoja ja kaikkia AVR-tuoteperheen prossuja. Studiosta löytyy myös ehkä enemmänkin aloittelijoille suunnattu yksinkertainen koodigeneraattori (Advanced Software Framework, ASF), jolla eri toimintojen toteuttamista on yksinkertaistettu. Valmiita kirjastoja ja ohjelmapalikoita löytyy netistä googlettamalla lähes joka tarkoitukseen mieletön määrä.

Atmel Studio 7

Tämä projektin softan toteutan perusC:llä ja ilman mitään frameworkia tai realiaikakäyttöjärjestelmää, koska tarvittava ohjelma tulee olemaan hyvinkin yksinkertainen. Pääohjelman rakenne on ns. ikiluuppi eli päätasolla on vain yksi päättymätön silmukka, jonka sisällä eri ohjaukset suoritetaan. Softan perusrakenteen olen esittänyt jo aiemmin, tosin siihen tulee varmasti tarkennuksia matkan varrella.

Tässä vaiheessa en käsittele vielä varsinaista ohjelma toteutusta tai sisältöä sen tarkemmin vaan keskityn esittelemään käyttämäni työkalut ja alustat sekä dokumentoimaan niin rauta- kuin softapuolenkin asiat siten, että joku toinenkin niistä mahdollisesti hyötyy sulautettuja projekteja tehdessään. Näistä kaikista kyllä löytyy taas kerran tietoa netistä lukemattomista eri paikoista, mutta teen tämän dokumentin myös itselleni muistiinpanoksi. Nykyään tuntuu, että uusia asioita tulee niin paljon eteen, että jos jossakin ympäristössä on vaikkapa puoli vuotta tekemättä mitään, niin yksityiskohdat tahtovat unohtua...

Atmel Studio 7 käyttöliittymä

Sulautetun järjestelmän softakehitystä ei tehdä tyypillisesti lopputuotteessa vaan käytetään valmista yleiskäyttöistä kehitysympäristöä. Softaa aletaan yleensä tekemään ennen kuin lopullinen rauta on valmis, niin tapahtuu tässäkin projektissa. Kehitysympäristöllä tarkoitetaan softan kirjoitus- ja käännöstyökalujen lisäksi HW-alustaa, jolla projektissa käytettävä prosessori saadaan henkiin ja jolla toisaalta saadaan käännetty ohjelma ladattua muistiin sekä suoritettua se. Rautapuolella tarvitaan siis prosessorin ympärille komponentteja, mahdollisesti toinen prosessori hoitamaan PC:n ja kohdeprosessorin välistä liikennöintiä (yleensä USB-liitännän kautta) sekä liitännät IO-porteille ja debuggaukselle.

Tässä projektissa käytän rautapuolen alustana yhtä monista halpisalustoista nimeltään AVR Dragon. Dragonia käytetään myös debuggaukseen liittämällä se esim. JTAG-liitännän kautta kohdeprosessoriin, mutta Dragonin levyllä on myös ns. Onboard Prototype Area:lla paikka, johon voidaan sijoittaa mikä tahansa AVR-tuoteperheen prosessori eli tässä tapauksessa siis ATmega8. Dragon osaa keskustella suoraan Atmel Studion (tai sieltä käynnistettävän työkaluohjelman) kanssa ja hoitaa tietojen tallentamisen ATmega8:n flash-muistiin ("flässätä") sekä keskustella kohdeprossun (pl. Atmega8) kanssa ohjelmaa debugtaessa. Ulospäin kommunikointi ja käyttöjännitteen syöttö niin alustalle kuin kohdeprosessorillekin hoituu USB-liitännällä.

AVR Dragonissa on oletuksena vain juotospaikka (ei siis kantaa) kohdeprossulle, joten levylle on juotettava kanta ja liitinrima ennen kuin Dragonin käyttö tässä projektissa onnistuu. Kantana kannattaisi käyttää ns. ZIF-kantaa (Zero Insertion Force socket, nollavoimakanta), jolla prosessorin sijoittaminen ja irroittaminen on helppoa. Tätä projektia varten vapaana minulla sattui olemaan vain tavallisella DIP-28-kannalla varustettu versio, mutta se toimii yhtä hyvin kun vaan prosessorin asentaa ja irroittaa varovaisesti.

 AVR Dragon kehitysalusta

AVR Dragon varustettuna ZIF-kannalla ja liitinrimalla

Dragonissa kohdeprosessorin kannalta tulevat signaalit on piirilevyllä kytketty vain liitinrimaan (juotettava levylle erikseen), joten kytkennät prossun ja Dragonin välille on tehtävä hyppylangoilla. ATmega8:n tapauksessa kytkentä menee seuraavan kuvan mukaisesti:
AVR Dragon/ATmega8 SPI- ja debugWIRE-kytkennät

Tässä kuvassa on oma alustani sekä siinä ATmega8 odottamassa ohjelmointia. Kytkentä on tehty hyppylangoilla edellisen kuvan mukaisesti. AVR Dragon vaatii normaalin USB-laitteen tavoin ensin ajureiden asentamisen, jonka jälkeen Atmel Studio tunnistaa laitteen, kun se on kytkettynä.

AVR Dragon ja ATmega8 prototype arealla

Atmel Studiossa lähdekoodin onnistuneen kääntämisen ja linkityksen eli buildauksen jälkeen syntyy prosessoriin ladattava ja siellä suoritettava binäärinen ohjelmakoodi ns. elf-tiedostoksi projektin kohdehakemistoon:
Debug-moodissa buildatun projektin .elf-tiedosto

.elf-tiedoston lataaminen eli flässäys kohdeprosessoriin tapahtuu Atmel Studiossa seuraavasti: 



  1. Valitse Tools | Device Programming ja sitten AVR Dragon ja laitteeksi ATmega8

2. Valitse Interfaceksi ISP ja lue Device Signature
 3. Valitse projektihakemistosta projektin .elf -tiedosto. Tarkista valinnat ja paina Program -painiketta.
4. Onnistuneen flässäyksen jälkeen näkyy flässätyn binäärin koko ja tilarivillä verifioinnin tila
ATmega8:n tapauksessa muuta oikeastaan Atmel Studiossa ei pysty rautaan päin tekemäänkään, koska ATmega8 ei tue rautatason debuggausta. Tämä näkyy mm. siten, että kuvissa esitetyn lomakkeen Interface-pudostuslistalta ei löydy dWire (debug wire) valintaa, joka on Atmelin protokolla prosessorin ja kehitysympristön väliseen kommunikointiin (Atmelin yhteydessä puhutaan myös OCD:stä eli On-Chip Debugging:sta, jota ATmega8 ei siis tue). Rautatason debuggausta ei siis tässä projektissa tulla käyttämään. Ei sitä varmaankaan tarvitakaan, koska ohjelma on kuitenkin erittäin yksinkertainen. Perustoiminnot saan varmistettua ajamalla ohjelmaa Atmel Studion simulaattorissa ja ajastukset ja muut testaamalla lopputulosta testipenkissä ja tarvittaessa skooppaamalla tai tutkimalla signaalit logiikka-analysaattorilla.

Ensimmäinen versio softasta on nyt flässätty ATmega8:aan ja seuraavaksi kokeillaan onnistunko ohjaamaan sillä DSP-ohjainkortin rautaa. Kokeilu tulee tapahtumaan siten, että yhdistän tarvittavat ohjauspinnit AVR Dragonin liitinrimalta DSP-ohjainkortille siltä irroitetun ST62T15:n kantaan. Kortin liitän aiemmin tekemääni DSP-ohjainkortin testipenkkiin, jolla saan perustoiminnot testattua. Tällä tavoin saan toivottavasti koko softan testattua melko valmiiksi siihen mennessä, kun tilatut piirilevyt tulevan Kiinasta. 
DPS-ohjainkortin testipenkki
(testissä näyttäisi olevan viallinen kortti, koska 2-vaihteella vain toinen lamppu palaa...)
 


   


maanantai 23. huhtikuuta 2018

Mietteitä softasta


Ennen varsinaisesti hommiin ryhtymistä tuli vähän ajateltua ja hahmoteltua millainen mikrokontrollerin ohjelman tulisi karkealla päätasolla olla. Ohjelmahan on tyypillinen ohjausohjelmisto eli sille on tuloja, joiden perusteella lähtöjä (=2 solenoidia + 3 merkkivaloa) ohjataan. Ohjelma on helpointa rakentaa tilakoneena (FSM, Finate State Machine) toimivaksi, jolloin tiladiagrammi näyttää tältä:

DPS-ohjainkortin tilakone

Eli tilakoneessa on kolme tilaa (DPS1, DPS2 ja DPS3), joihin siirrytään kahden napin (DPS+ ja DPS-) signaaleilla. DPS+:lla siirrytään ylöspäin, mutta kun päästään 3. vaihteelle, niin siitä ylöspäin (eikä ympäri) ei tietenkään mennä. Vastaavalla tavalla alaspäin mennään pykälä kerrallaan.  

Ohjelmateknisesti yksinkertaisin tapa rakentaa tilakone on käyttää muutamia globaaleja muuttujia, tässä tapauksessa tarvitaan pitää muistissa nykytila (curr_state) ja tieto seuraavasta tilasta (next_state). Vaihteen vaihtonappien (DPS+ ja DPS-) käsittely on järkevintä tehdä keskeytyskäsittelijöissä, joissa on tarpeen ainoastaan asettaa next_state -muuttujalle arvo curr_staten perusteella. Molempien nappien keskeytyksille tehdään omat rutiinit eli jotenkin näin: 
 Keskeytysrutiineiden lohkokaaviot
Eli kun nappia painetaan, siitä seuraa keskeytys ja ohjelman suoritus siirtyy keskeytyskäsittelijään, jossa asetetaan pääohjelmassa käsiteltävä tieto tilasta, johon tulee siirtyä. Käsittelijässä huolehditaan myös ympäripyörähdysten estäminen. Keskeytyskäsittelijöitä ei tavallisten funktioiden tapaan kutsuta omasta koodista vaan niihin siirtyminen tapahtuu rautatasolla signaloituna. Keskeytyskäsittelijän suorittamiseen siirrytään mistä tahansa kohdasta ohjelmakoodia ja tätä siirtymistä voidaan kontrolloida vain sallimalla tai kieltämällä keskeytykset.

Pääohjelman lohkokaavio voisi karkealla tasolla näyttää vaikkapa tältä:
 Hahmotelma ohjaimen pääohjelmaksi

En ala käymään ajattelemaani toimintaa sen tarkemmin läpi, ohjelmointia osaavat pystyvät kyllä saamaan tuosta irti tarvittavan tiedon. Tärkeää tuossa on huomata se, että pikavaihteiden ohjaamiseen vaikuttaa myös käsijarrun, moottorin öljynpaineen (eli onko kone käynnissä vai ei) ja kytkinpolkimen tila. Vaihde voidaan valita milloin vain, mutta solenoideja ohjataan vain, jos käsijarru on pois päältä JA öljynpaine on normaali JA kytkinpoljinta ei ole painettu. Oleellista on myös se, että kun ohjausta aloitetaan suorittamaan, niin keskeytykset on kiellettävä siihen saakka kunnes edellinen on käsitelty loppuun. Käsittelyn aikana tapahtuva mahdollinen uusi keskeytys ja tilakoneen tilan muutos voisi johtaa kummallisuuksiin.

Tässä vaiheessa en ole vielä miettinyt tai selvittänyt tarvittavia ajastuksia ja viiveitä, mutta ne selviävät matkan varrella. Keskeytyskäsittelijätkin tulevat toiminnaltaan yllä olevaa karkeaa hahmotelmaa monimutkaisemmiksi. Niissä täytyy ottaa huomioon ja osata käsitellä mm. mekaanisissa kytkimissä aina esiintyvä värähtely. Jos värähtelyä ei huomioida, niin yhdestä napin painalluksesta seuraisi lukemattomia keskeytyksiä jännitteen heiluessa 10-30 ms ajan ylös ja alas.

Softakin on siis tekemistä vaille valmis... 

Piirilevy


Ideana on siis tehdä piirilevy (PCB eli Printed Circuit Board), joka sopii suoraan kortilla olevaan DIL-28 (leveään) kantaan, ja levyllä on paikka läpiladottavalle DIL-28 (kapeassa) kotelossa olevalle ATmega8:lle.

Suunnitteluohjelmana käytän Autodesk Eaglen ilmaisversiota, sillä pystyy tekemään tälläisen pienen ja yksinkertaisen piirilevyn valmistajalle toimitettavat aineistot. Kytkentäkaavio on hyvin yksinkertainen eli tehdään vain vedot aiemmin esillä olleen kaavion perusteella prosessoreiden pinnien välille:
Piirikaavio ATmega8 kytkennästä ST62T15:n DIL-28-kantaan

Piirilevystä tulee myös varsin yksinkertainen, tarvitaan kuitenkin kaksipuoleinen FR4-levy. Ainoa ongelma on mekaaninen eli miten saadaan piirilevylle alkuperäisen ohjainkortin DIL-28 holkkikantaan sopivat pinnit? Tämän ongelman ajattelin ratkaista siten, että  teen PCB:lle DIL-28 mitoituksella läpivientireiät, joihin juotan holkkikannasta puretut "tapit". Piirilevyn koko on n. 20x38 mm ja se tulee näyttämään jotakuinkin tälläiseltä:

 Piirilevyn komponentti(ylä)puoli

Piirilevyn juotos(ala)puoli

Tästä voi katsella piirilevyn 3D-mallinnusta (hiiren vasen=pyöritä, oikea=siirrä, scroll=zoom). Levyn mallinnuksessa silkscreenit eli pintatekstit eivät vastaa todellisuutta, koska olen käyttänyt muita kuin oletuksia. Todelliset tekstimerkinnät näkyvät noissa yllä olevissa kuvissa. Aivan todellisuutta malli ei siis vastaa, mutta aika hyvän kuvan siitä kuitenkin saa.

Seuraavaksi levy tilaukseen. Toimittajia löytyy mm. Aliexpressistä ja tilasinkin tällä kertaa yhdeltä tarjoajalta 10 kpl erän hintaan $16,00 (sis. pk.) eli n. 1,30 euroa/kpl. Aiemmin olen käyttänyt myös PCBway:n palveluita, ei halvin paikka, mutta tilaaminen on tehty tosi helpoksi, ja hinta-arvionkin saa saman tein. Kirjautumalla omilla asiakastunnuksilla sivuille, niiltä näkee realiaikaisesti tilauksen tilan ja mm. piirilevyn etenemisen tuotannossa vaiheittain.

Valmistajat haluavat levyn eri kerrosten layout -tiedot yleensä ns. Gerber -formaatissa, joka on ASCII-muotoisen 2D-vektoridatatiedoston kuvausmuoto. Tämä on teollisuudessa piirilevyvalmistajien ja heidän käyttämiensä CAD/CAM-ohjelmistojen de facto -standardi, mutta valitettavasti tiedostoja lähetettäessä usein joutuu venyttelemään sen asian kanssa, että oman suunnitteluohjelman tuottama data on yhteensopiva valmistajan vaatimusten kanssa.

Tyypillinen yhteensopimattomuusongelma syntyy siitä, että ainakaan kinuskien ohjelmat eivät oletuksena tunnu hyväksyvän mitoiksi millimetrejä (metriset mitat 3.4 formaatissa) vaan vaativat tuumia (imperial, 2.4). Todennäköisesti syy on kuitenkin siinä, että ohjelmia ei osata käyttää, koska tyypillisesti nämä asiat on valittavissa tiedostoja luettaessa. Eli gerber -tiedostoja piirilevyn suunnitteluohjelmasta luotaessa tulee lähtökohtaisesti käyttää tuumamitoitusta ja numerot 2.4-formaatissa. Sama koskee tietenkin myös poraustietoja (Excellon -tiedostot). Tässä projektissa Eaglessa käyttämäni CAM-määrittelytiedosto löytyy tästä.

Gerber -tiedostot on aina syytä tarkistaa visuaaalisesti sopivalla ohjelmalla ennen toimittamista piirilevyvalmistajalle. Ilmaisohjelmiakin on, mutta itse olen käyttänyt muutaman kympin hintaista GerbView -sovellusta, siitä on ladattavissa myös 30 päivää toimiva kokeiluversio. On myös nettisaitteja, joihin pystyy lataamaan gerber-tiedostot ja tarkastamaan visuaalisesti, että tiedot näyttävät oikeilta. Online -toiminnoillakin näkee ainakin karkeimmat virheet kuten poraustietojen virheellisen kohdistuksen. Online Gerber Viewer on yksi tälläinen nettisaitti.

Ammattikäytössä paljon käytetty ohjelma on CAM350, siitäkin saa pyytämällä kokeiluversion, jota koeajan jälkeenkin voi käyttää gerber -tiedostojen visualisointiin. Muutoksia sillä koeajan umpeutumisen jälkeen ei enää voi tehdä, mutta gerber -tiedostojen näyttö onnistuu. CAM350 ei ole niitä helppokäyttöisimpiä ohjelmia, mutta sillä pystyy ilmeisesti tekemään paljon, kunhan ohjelman käyttöä on riittävästi opiskellut. Pelkkää katseluun ja pieniin korjauksiin tai tiedostomuotojen konvertointiin GerbView on huomattavan paljon kevyempi ja helppokäyttöisempi ohjelma.

Piirilevyn valmistusajaksi on luvattu 3-4 päivää, mutta toimitus Suomeen kestänee tyypilliset 2-3 viikkoa, koska valitsin halvimman (ja hitaimman) toimitusvaihtoehdon. Odotusaikana voi käynnistellä softan tekemistä, siiitä kirjoittelenkin sitten lähipäivinä.

sunnuntai 22. huhtikuuta 2018

Korvaava prosessori

Uuden mikrokontrollerin valinta

Masinistien keskustelupalstalla minulle on ehdotettu prossun vaihdon sijasta koko kortin uudelleen toteuttamista vaikkapa Arduinon kehitysalustalla ja siihen liitettävällä tarpeellisella lisäelektroniikalla. En itse pidä tälläistä lähestymistä kovin järkevänä. Kehitysalustat on tarkoitettu kehitykseen, ei lopputuotteen tekemiseen. En näe tarpeellisena käyttää vaikkapa Arduinon korttia ja rakentaa sen päälle lisää elektroniikkaa ainakin seuraavilla perusteilla:
  • Arduinoissa käytetyt liittimet eivät ole ainakaan ajoneuvokäytössä riittävän luotettavia
  • tarvittaisiin joka tapauksessa toinen kortti, jolle pitäisi toteuttaa tarvittava ohjauselektroniikka (prossu olisi järkevämpää ympätä samalle kortille!)
  • Arduinossa on paljon loppukäytössä tarpeetonta tavaraa (mm. USB-liitäntä ja sen ohjauksen ja pääprossun flässäyksen hoitava toinen prosessori)
  • Arduinon kortilta puuttuu mm. jännitelähde
  • Mekaniikkaongelmat: miten korttiviritelmä kiinnitetään luotettavasti ja saadaan sopimaan alkuperäisen kortin paikalle? 
  • Hinta: Arduino maksaa 20-30 euroa, pelkkä prosessori 2-3 euroa
Arduino Uno-kehitysalusta
 
Sen sijaan Arduinoissa käytetyt Atmelin RISC-prosessoriperheestä löytyy tähänkin projektiin sopiva mikrokontrolleri. Vaatimuksina mm. seuraavaa:
  • 5V käyttöjännite
  • 28-jalkainen läpiladottava kotelo (helpompi ja luotettavampi juotettavuus kotioloissa kuin pintaliitoskotelolla. Lisäksi koska ohjelma pitää flashata ja todennäköisesti myös HW-debugata, niin jalallisen kotelon käsittely on helpompaa kuin pintaliitosversion.)
  • ST62T15:sta vastaava RESET-toiminto, riittävä määärä GPIO-pinnejä
  • 8 Mhz kellotaajuus (voidaan hyödyntää alkuperäisen kortin kidettä)
 Vanhalla kortilla käytetty ST62T15 on nykyisiin mikrokontrollereihin verrattuna kovin vaatimaton:
  • ohjelmamuistiana OTP (One Time Programable memory) 1836 tavua, RAMia 64 tavua
  • 20 GPIO-pinniä
  • 1 8-bittinen ajastin (timer)
  • 5 keskeytysvektoria, joista 2 ulkoista valituille GPIO-pinneille, 1 NMI-keskeytyslinja (NMI ei käytössä DPS-ohjainkortilla)
Koska itselläni on kokemusta Atmelin mikrokontrollereista ja niiden ohjelmointiin tarvittavat softat ja kehitysalustat H/W-debuggereineen, niin prossun valinta on aika helppo. Atmelilta/Microchipilta löytyy siis tähänkin tarkoitukseen sopiva mikrokontrolleri, joka tuntee mallinimen ATmega8. Lisäksi näitä prossuja sattuu olemaan kourallinen sekä kiinakopioina että alkuperäisinä miljoonalaatikossa, joten valinta on silläkin perusteella helppoa. Suorituskykyä, muistia ja muita ominaisuuksia on vähintään riittävästi verrattuna ST62T15:een...
Atmel ATmega8 DIL-28-kotelossa

Seuraavaksi sitten pistetäänkin prossut rinnakkain, selvitetään mitkä nastat ovat nykyisellä kortilla käytössä ja katsotaan nastojen vastaavuudet:

 ATmega8

ST62T15

NMI, TEST ja TIMER on ST62T15:ssa yhdistetty GND:en. Kun katsotaan mihin ST62T15:n pinneihin DPS-ohjainkortin liittimen signaalit yhdistyvät, saadaan seuraava kaavio. Huom. lähtösignaalit on kuvattu vain loogisesti eli ne eivät mene suoraan prossulta liittimelle vaan välissä on elektroniikkaa, jota signaalit ohjaavat.  Tulosignaalit on galvaanisesti erotettu optoerottimilla:
Signaalit kortin liitin - ST62T15 - ATmega8

Tästä päästäänkin sitten määrittämään yhteydet ST62T15:n ja ATmega8:n välille (ne on jo merkitty yllä olevaan kuvaan). ATmega8:ssa ulkoisille keskeytyksille voidaan konfiguroida vain GPIO-pinnit PD0 ja PD1, joten pikavaihteen vaihtokytkimiltä tulevat signaalit pitää yhdistää näihin pinneihin, koska painokytkimiä on järkevä softassa käsitellä keskeytysten avulla. Muita keskeytyksiä softassa ei tulla tarvitsemaankaan vaan IO:t käsitellään tarvittaessa pollaamalla. Muiden GPIO-pinnien yhteyksillä ei ole merkitystä koska ne voidaan softassa konfata tarpeen mukaan.

Muut ATmega8:n pinnit kytketään datalehden mukaisesti (esim. AVcc pitää kytkeä käyttöjännitteeseen vaikka AD-muunnin ei olekaan käytössä) tai vastaaviin ST62T15:n pinneihin (RESET, XTAL1, XTAL2 jne.). Kuvassa keltaisina on alkuperäisen prosessorin pinninumerot merkittyinä vastaavien ATmega8:n pinnien kohdille:
ATmega8 > ST62T15
 
Tästä edetään sitten piirtämällä piirikaavio ja muodostamalla siitä piirilevy. Kun olen itse joutunut tekemään harrasteprojekteissa piirilevyjä, olen käyttänyt Autodesk Eaglen ilmaisversiota. Piirilevyt tulen tilaamaan Kiinasta, sieltä saa edullisesti laadukkaitakin levyjä. Koska tässä ei tulla tarvitsemaan monikerroslevyjä vaan tavallisia kaksipuoleisia FR4:a, niin laatu on riittävä ja sen varmistaminen helppoa.
 

lauantai 21. huhtikuuta 2018

DPS-pikavaihteet

Pikavaihteet


Ensimmäinen blogikirjoitukseni herätti joitain kysymyksiä harrastajissa, joille traktorin voimansiirtojärjestelmät eivät ole tuttuja. En minäkään varsinkaan niiden mekaniikkaa tunne, mutta joitain asioita on jäänyt mieleen. Tämä projekti keskittyy vain vaihteiston ohjauspuolen elektroniikkaan, mutta ehkä lyhyt katsaus vaihteiston käyttöön on paikallaan.

DPS-painonapit (Valtra 6800:n ohjekirja)


Hannu Niskanen Valtralta kirjoitteli Koneviestissä 4/94 seuraavaa:
"Pikavaihteella tarkoitetaan vaihdetta, joka voidaan vaihtaa ilman kytkintä vedon säilyessä
lähes koko välityksen vaihdon ajan. Momentti ei siirry täysin häviöittä vaihteiden
vaihtamisen ajan. Pikavaihteet sijoitettiin erilleen perus- ja aluevaihteista, jolloin
kaikkien vaihteiden lukumäärä kertaantui kaksinkertaiseksi. Sanalla pikavaihde tarkoitetaan
yleisesti kaksiportaista powershift-vaihdetta. Moniportaisista pikavaihteista
käytetään yleisesti powershift-nimeä. Pikavaihteen rakenteita on kaksi erilaista. Ne
on toteutettu joko planeettapyörästöllä tai omana erillisenä, pienenä vaihdelaatikkona.
"

-94 jälkeen vaihteita on tullut lisää ja Valtrassakin on sähköisesti ohjattu kolmiportainen DPS-pikavaihteisto, joka on mekaanisesti kytkimen ja vaihdelaatikon välissä oleva planeettavaihteisto. Planeettavaihteistoa ohjataan hydraulisesti ja hydrauliikan ohjaus puolestaan tapahtuu kahdella solenoidilla. Näillä saadaan siis kolme eri vaihtoehtoista tilaa eli jompi kumpi vetää tai molemmat vetävät. Tässä projektissa käsitellään näiden kahden solenoidin ohjaamiseen liittyvää elektroniikkaa eli käytännössä pikavaihteiston ohjaamiseen suunniteltua DPS-ohjainkorttia.

Perusliitännöiltään DPS-ohjainkortti on alla olevan kuvan mukainen. Vasemmalla tulot, oikealla lähdöt:
DPS-ohjainkortin liitännät
 
 Ohjainkorteista on ainakin kolme eri toteutusta käytettyjen komponenttien ja kytkentöjen suhteen, mutta liitännöiltään ja toiminnaltaan nämä kortit ovat yhteensopivia ja keskenään vaihtokelpoisia. Varaosana myydään vain uusinta versiota ja se siis sopii myös vanhempiin traktorimalleihin. Valtran HiTech-malleissa pikavaihteiden ohjaukseen ei ole erillistä korttia vaan ohjaus on toteutettu Autocontrol-keskusyksikössä. Fyysisesti erillinen 18-napaisella liittimellä varustettu DPS-ohjainkortti sijaitsee ohjaamon oikeanpuoleisen kytkinpaneelin alapinnassa:

vm. 1999 Valtra 6800:n DPS-ohjainkortti
(varaosana hankittu uusin malli) 

Kytkentäkaaviosta ohjainkortti löytyy tunnuksella A10:
Ote vm. 1999 Valtra 6800:n kytkentäkaaviosta
 

keskiviikko 18. huhtikuuta 2018

Projekti: DPS-ohjainkortti

DPS-ohjainkortin uudistusprojekti alkaa


Muutamana viime vuotena on tullut harrastusluonteisesti puuhasteltua Valtran traktoreiden elektroniikan kanssa. Tosin kokemukseni rajoittuu pääasiassa Delta Power Shift (DPS) -pikavaihteiston ohjauselektroniikkaan, mutta joitain muitakin korjausprojekteja olen satunnaisesti tehnyt.

Nettisivullani dokumentoin aiemmin muutaman DPS-ohjainkortin korjauksen ja pikku hiljaa korttien korjaamisen myötä myös tyypilliset viat ovat tulleet tutuiksi. Lyhyesti sanottuna tavallisimpia vikoja ovat
  • magneettiventtiileiden solenoideja ohjaavien puolijohdereleiden  "palaminen"
  • kortin jännitelähteen elektrolyyttikondensaattoreiden kuivuminen
  • kortin ensimmäisissä versioissa prosessorin muistin vioittuminen tai tyhjeneminen
DPS-ohjainkortti vm. 1995

Nyt käsiin on jäänyt muutama prossuviallinen kortti, joiden korjaaminen ensialkuun on tuntunut mahdottomalta. Kortissa käytettyä ikivanhaa SGS-Thomson Microelectronicsin (nyk. STMicroelectronics) aikoinaan valmistamaa 8-bittistä ST62T15-prosessoria ei juurikaan ole saatavissa tai jos on, hinnat ovat aivan järjettömät (jopa $80-150/kpl). Lisäksi prosessorin ohjelmoinnissa ja tietojen tallentamisessa ohjelmamuistiin tarvittavia erikoistyökaluja ei käytännössä enää mistään löydy. Pitäisi myös saada ohjelma kopioitua toimivan kortin prosessorin muistista, tämäkään toimenpide ei onnistu kovin helposti. Tai sitten en vaan osaa...

ST62T15


Tästä syntyi ajatus, että voisin yrittää harrastusmielessä korvata kortilla olevan viallisen prosessorin jollain edullisella yleisesti saatavilla olevalla nykyaikaisella mikrokontrollerilla. Koska alkuperäinen prosessori on kortilla kannassa, niin tämän kannan päälle pitäisi suunnitella ja valmistuttaa pieni piirikortti, jolle juotettaisiin pienemmässä kotelossa oleva korvaava prosessori, ja pikkuprossun GPIO-pinnit johdotettaisiin kortin ulkoreunaan asennettavien pinnien kautta alkuperäiseen kantaan vastaaviin tuloihin ja lähtöihin.

Lisäksi tarvitaan tietenkin uuden prosessorin ohjelmointi. Tämä onkin projektin vaikein osuus, mutta ei mahdotonta, koska ohjaus on varsin yksinkertainen, ja tuloja on kortille rajallinen määrä. Ohjainkortin toiminnallisuuden olen aiemmin määrittänyt kortin kytkennän selvittämällä, tekemällä kortille testipenkin sekä vielä käytännössä kokeilemalla. Ohjelmoinnissa ei pitäisi olla ylivoimaisia esteitä, sulautettua softaa on tullut kirjoiteltua leipätyönä jo aika pitkään.

Suoraan alkuperäiseen kantaan sopivaa helposti ohjelmoitavaa prosessoria ei taatusti löydy, joten tämän helpompaa ratkaisua tuskin on olemassa. Yksinkertaisin ratkaisu olisi tietenkin hakea lähimmästä Valtran varaosamyymälästä uusi kortti, mutta kun itselläni ei traktoria ole, niin eipä myöskään ole tarvetta laittaa lähes tonnia toimivaan korttiin. Tavoitteena on siis saada muutamalla kympillä (ja x tunnilla töitä...) toimiva ohjainkortti.  Ja tietenkin samalla oppia itsekin lisää...

Eli projekti alkakoon. Ei varmaan järkevä, jos tuntihintaa laskee, mutta harrastemielessä mielenkiintoinen ja haastava. Homma voisi edetä seuraavassa järjestyksessä sillä aikataululla, kun aikaa yleensäkään sattuu näille harrastuksille olemaan:
  1. Korvaavan prosessorin valinta
  2. Vanhan ja uuden prossun pinnien vastaavuuksien selvittäminen
  3. Piirikortin suunnittelu ja valmistuttaminen
  4. Kehitystyökalujen ja -alustojen selvittäminen
  5. Alkuperäisen ohjainkortin toimintojen ja sekvenssien dokumentointi
  6. Ohjelman suunnittelu ja toteutus
  7. Uuden prosessorin ohjelman testaus ja debuggaus DPS-kortin testipenkissä
  8. Uudistetun kortin testaaminen traktorissa
  9. Oman (piraatti)ohjainkortin suunnittelu ja toteutus (toteutuu tai sitten ei...)
Blogi jatkuu tässä järjestyksessä eli seuraavalla kerralla kirjoittelen korvaavan prosessorin valinnasta.