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

maanantai 23. huhtikuuta 2018

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.
 

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.