Målet med projektet är ganska oklart, men i stora drag handlar det om att bygga ett nätverk parallellt med modelljärnvägen för att sätta signaler, växlar etc. I framtiden finns det oändligt med möjligheter, men jag har bestämt mig för att få igång de enkla delarna först. En av idéerna är att man ska klara konfigurationen utan att blanda in datorer eller avancerade programmeringsstationer. Så mycket som möjligt ska gå automatiskt. Kan jag få in resten på ett block dip-switchar så är jag nöjd, men det blir nog andra möjligheter att konfigurera också.
I motsats till de flesta i modelljärnvägssegmentet så är jag elektroniknörd som gillar modelljärnvägen som applikation, inte omvänt. Det betyder också att jag inte behöver vara 100 % verklighetskorrekt, bara funktionen blir vettig ur min synvinkel.
Så, lite systemdata att dregla eller gnälla över:
* I²C-buss
* AVR-baserade noder längs rälsen
* C och lite C++
* (i framtiden) en masternod baserad på t.ex. Cortex M3
Jag hoppas att I²C-bussen ska visa sig tillräckligt störtålig, annars får jag rota fram ett alternativ. Det är trots allt inte tänkt att det ska bli så långa sträckor rent fysiskt, och det blir nog låg hastighet.
Huruvida jag ska bli kvar på AVR eller lämna dem för något annat vet jag heller inte. Det bli nog en lite större utredning när jag har kommit lite längre. Jag har byggt alla tre nuvarande noder med Mega8/Mega88, så jag fortsätter med det ett tag till. Problemet är dock att jag kommer köra slut på programminnet.
Oki, nu till hårdvaran

Jag börjar med en bunt som jag gjorde i vintras/våras. AVR-kortet utan display är faktiskt ännu äldre, det är nämligen CPU-kortet från datamekatronikkursen (LTH, 2007). Jag har byggt på med diverse adaptrar, och det agerar nu en nod som ska sitta längs järnvägen, i min terminologi "block". Kortet med displayen är den så kallade "debugnoden". Det har även en serieport till datorn. Tanken är att noder ska kunna skicka felmeddelanden hit, och att den ska kunna övervaka bussen och plocka åt sig allt som användaren/utvecklaren vill se. Tyvärr så måste jag byta CPU eftersom mega8 saknar bitmask-registret på I²C-delen, så den kan inte övervaka bussen på samma sätt som en mega88 kan. Displayen i kommer från kinabeställningen.
Vidare så ser ni en schematisk signal (8 LEDs för generell användning/test). Jag har hittat på ett system med drivkrets på varje signal, på både gott och ont. Jag går in på det lite mer nästa gång jag tar tag i signalerna.

Korten är ritade i StripCAD. Jag tycker det är ett trevligt sätt att prototypa. Visst, det blir inte så kul om man ska massproducera, men där är jag inte idag. När jag har funktionen och har bestämt mig slutgiltigt för CPU och buss ska jag nog cadda upp och låta tillverka några kort. Konstruktionsmetoden med StripCAD kräver kort med lödbanor (till skillnad från kort med öar eller DIL-anpassade trehålsbanor). Denna variant verkar vara allt mer udda. De senaste har jag köpt från Swech. Tyvärr verkar inte kinesen som har borrat hålen i korten varit riktigt nykter, men det är mest en kosmetisk fråga och de var billiga.
Här följer vårens produktioner. Kortet med plintarna är ett optokort för att detektera spänning samt ström på rälsen. I det första läget är det bara tanken att jag ska se om det finns något på rälsen eller inte. Jag har dock sneglat lite på andra ritningar och jag borde ha goda chanser att plocka upp RailCom med denna hårdvaran (återkoppling från tåg). Mitt digitalsystem har dock inget stöd för RailCom, så detta kommer jag inte kunna testa på ett bra tag.

Jag testade att göra en "riktig" signal, så liten jag kunde med den hårdvara jag hade tillgänglig. Materialet är enkelsidigt glasfiberlaminat. Jag "dremlade" ut formen. Min kära ritspenna kom fram och skrapade fram rätt mönster i kopparn med kontakt hela vägen ner på ena sidan i stolpen. LED:arna är också från Swech, 0402 som är monterade upp och ner. Vissa av färgerna hade en förmåga att tappa benen. Samtiga hade en förmåga att flyga åt helsike när jag tryckte till med min pincett. Menmen, under mikroskop gick det bra att montera dem och få det rakt. Jag monterade virtrådar (AWG30) som tyvärr kändes brutalt stora i förhållande till resten. Den fick en ingjutning i det fantastiska materialet smältlim, som sedan skars till rimliga dimensioner. Lite svart tusch så var det fullbordat. Smältlim användes dessutom med utomordentligt resultat till att gjuta linser framför alla LED:ar. Största missen var att jag inte hittade någon mindre borr än 1 mm. Vi får se om det blir en update på detta, jag har skaffat lite godis som kan hjälpa till. För er som oroar er för att signalen faktiskt kommer att bli alldeles för liten för N-skala så ska ni ta det lugnt. Jag lovar att ta fram rätt mått innan jag serieproducerar något. Förresten ser det ändå inte realistiskt ut utan solskydd, och det vill jag inte ha för då ser man ju inget snett ovanifrån....

Nu till det nya kortet. Jag behöver minst två noder för att kunna skriva klart mjukvaran och testa kommunikationen lite grann. Den ena kommer att vara patchad från det gamla kortet, men jag behöver en riktig nod. Jag provade att använda ProtoCad istället för StripCAD, och det gick bra att importera en StripCAD-fil direkt. Den flyttade bara alla texterna


Här ser vi kortet utan några kretsar. En fördel med färgutskrifterna från ProtoCad är att det är lättare att hitta kryssen där banor ska kapas, speciellt om de gömmer sig under komponenter. Ett tips som jag lärde mig nyligen är att färgmärka de kapningar man har slutfört, så är det lättare att kolla igenom ett kort. Kapningarna gör jag också med ritspennan. Det går ju faktiskt fortare än att borra. Avslutar man sedan med en kniv för att ta bort fnaset är det idiotsäkert mot kortslutningar (om man inte skapar dem när man löder).

Färdigmonterat, ska testas snart, uppdatering kommer.

Förresten har Atmel snålat på sin logga, eller har jag fått ett ful-chip?

Jämförelse mot tidigare chip:
