Virkort/Kopplingskort
Styrelektroniken kopplas ihop på ett eller flera virkort.
Virkort
Hösten 2023 konstruerades ett nytt virkort dedikerat för robotbyggen, med JTAG, matningsspänning, två ATmega1284 med mera färdigt.

Att göra detta har flera fördelar i form av att det underlättar för studenterna, och det går snabbare att komma igång.
Det har dock även nackdelen att flexibiliteten blir mindre.
Så här ska/bör virkorten användas:
- Virkortet får sin matningsspänning antingen via batterieliminator (rund "Pwr"-kontakt), eller via en 10-polig kabel från roboten, som ska sitta i IDC-kontakt 1.
Kabeln får inte kopplas in i någon annan IDC kontakt, då det kan orsaka backströmmar som kan skada komponenter.
- Virkortet har två AVR:er (ATmega1284), som är identiskt kopplade.
- AVR:erna har varsin liggande 10-polig JTAG-kontakt, för programmering med JTAG ICE3.
- AVR:erna har varsin reset-knapp.
Det finns möjlighet att vira ihop reseten så att båda AVR:erna kontrolleras av båda knapparna.
Det finns även möjlighet att vira in yttre resetknapp.
- Det finns plats för en EXO3:a som förser båda AVR:erna med klockpulser.
Vid behov av separata EXO3:or, prata med din handledare.
- Respektive AVR kan konfigureras till att använda externa klockpulser från EXO3 eller inbyggd intern klock-oscillator (vanligen 8 MHz).
- AVR:erna har även varsin FTDI-kontakt för UART.
FTDI-kontaktens "svarta" ände ska anslutas till pinne 1, markerad på kortet med "1A" respektive "1B".
- Det finns tolv stycken 3-pinlister med [Gnd, Pwr, Data], för anslutning av t.ex. IR-sensorer eller servon.
- 3-pinlisterna har färdig filtrerad mantningsspänning lämplig för sensorer, men för servon bör matning viras in från stiftlister med 5V och GND för bättre drivförmåga.
- Det finns tre 16-poliga och fyra 10-poliga IDC-kontakter.
De 16-poliga kan användas t.ex. för att ansluta till nivåshiftaren.
De 10-poliga kan användas t.ex. till tejpsensormodulen.
- Det finns en vir-yta för att kunna vira in mer utrustning vid behov.
Om denna yta är för liten, så går det att koppla till ett äldre virkort, som bara har viryta.

Det förenklade elektriska schemat ovan illustrerar några olika färdiglödda delar av kretskortet.
- På ATmegan är de flesta pinnar kvadratiskt ritade. Dessa kan viras.
Övriga (mindre) pinnar är avklippta. Dessa ska inte viras.
- FTDI-anlutningen är kopplad TxD till RxD och vice versa.
Utöver vad som är ritat, så finns gemensam jord, samt att FTDI'ns CTS är jordad.
- De 3-poliga stiftlisterna har jord, matningsspänning och data.
Matningsspänningen är skyddad bakom ett RC-filter, för att minska störningar på virkortets 5V-nät.
Det går att vira in sig på matningsspänningen och datan.
För anslutning av servo, kan man behöva "vira förbi" resistorn i RC-filtret, för att servot ska få tillräckligt med ström.
- JTAG-kontakten är även ansluten till jord och Vcc.
- EXO3:an är ansluten så att den odelade frekvensen går in på XTAL1 på båda AVR:erna.
Det är upp till säkringarna i ATmegan att avgöra om ATmegan ska drivas av EXO3:an eller av interna oscillatorn.
- Som synes är AREF inte ansluten. Denna kan dock behöva beaktas om A/D-omvandlaren i AVR:en används.
- Alla stående IDC-kontakter har pinnarna 1-2 anslutna till jord, och 3-4 anslutna till Vcc.
- Virkortet har ett antal avkopplingskondensatorer mellan Gnd och Vcc, för att motverka störningar på matningsspänningen.
Evalueringskortet Eva
Eva är vårt evalueringskort för ATmega + sensorer/styrdon.

Det är ganska mycket färdigkopplat på kortet.
Resten kan viras eller kopplas med dupont-sladdar (labb-sladdar) utifrån behov.
Därför finns det gott om pinnar att koppla/vira/mäta på.
Mitt på kortet, fast på undersidan, sitter ATmegan.
Alla benen har virstift som sticker upp för koppling eller mätning.
Att placera ATmegan på undersidan gör stiften lättillgängliga ovanifrån, och frigör massa plats för text.
En kort rundvandring, från övre vänstra hörnet och moturs:
- Två 3-pin stiftlister med jord, Vcc och signal, avsedda för våra IR-baserade avståndssensorer. Signalerna är färdigdragna till pinnarna A0 och A1 på ATmegan.
- Två 4-pin stiftlister. Samma sak här. Det fjärde benet är avsett att mäta på. Dessa är kopplade via ett lågpassfilter till ATmegans A2 och A3.
- Tre 5-pin stiftlister. Jord, Vcc, samt tre ben som sitter ihop undertill. Dessa kan du koppla vart du vill, t.ex. till en PWM-utgång, ifall du vill testa ett servo.
- Till vänster om ATmegan finns två 6-pin stiftlister för FTDI. Här kan du koppla in en sladd för USB <-> UART. ATmega1284 har två UART:er, så därför finns det två stiftlister. Notera att det är viktigt att koppla FTDI-sladden åt rätt håll här.
- Det finns även en 4-pin stiftlist för I2C ifall man vill koppla in något.
- Nere till vänster finns en 10-pin IDC-kontakt avsedd för vår tejpsensormodul. Den är färdigkopplad till ATmegan, enligt texten på kortet.
Observera att tejpsensormodulen kräver separat matningsspänning, varför det även finns en skruvplint för 5V.
- Det finns en viryta på 8x12 hål, med tillhörande stift för Vcc och jord på sidorna. Här kan du koppla in diverse annat som du vill testa.
- Söder om virytan finns en bred metallyta märkt "ESD". Ta i den här först, så får du en trygg elektrostatisk urladdning (ESD) som inte skadar någon elektronik.
- Nere till höger finns en generell 10-pin IDC-kontakt av samma sort som på virkorten. Om du vill koppla in en ytterligare tejpsensormodul, så finns det en 5V-kontakt till här.
- Ovanför det så finns det 8 lysdioder kopplade mellan portD och Vcc. Dessa tänds när portD-pinnarna tvingas låga. Detta ger en pull-up-effekt på portD, vilket kan vara bra till UART:en.
- Nere till höger: En generell 16-pin IDC-kontakt. Likadan som på virkorten.
- Straxt till höger om ATmegan: En EXO3:a eller kristall, som genererar 16 Mhz.
- Ovanför EXO3:an finns en 6-pin stiftlist för SPI ifall man vill koppla in något.
- Uppe till höger finns en 16-pin IDC-kontakt märkt "Lvlshifter". Denna kan anslutas till vår nivåskiftare för RaspberryPi. Den har I2C och SPI direktanslutna till ATmegan, samt några generella kontakter, som kan kopplas eller mätas på.
- Vi har en Reset-knapp, som egentligen är gul.
- En liggande 10-pin IDC märkt "JTAG" är till för att programmera ATmegan. Koppla in programmeringssladden från JTAG ICE här. Kopplar du in den någon annanstans, så går nog JTAG ICE sönder, och den kostar åtskilliga hundralappar.
- Det finns även en TVS-diod (saknas på bilden), som skyddar kortet mot en del otäcka spänningar.
- Slutligen har vi den runda Pwr-kontakten. Koppla in 5V här. Samma polaritet som våra andra kort.
De 2+2+3 stiftlister uppe till vänster har en egen lågpassfiltrerad matningsspänning, för att inte störa eller störas.
Kopplar du in flera samtidiga grejer, så kan de dock störa varandra via matningsspänningen.
Du kan hitta schemat som PDF här.
EVA-demo.c är ett litet C-program som läser den analoga spänningen på ingång ADC2 (t ex från en IR-avståndssensor), och sedan skriver ut det omvandlade digitala värdet via UART0. Till detta behövs alltså en IR-avståndssensor och en s k FTDI-kabel för inkoppling till en virtuell serieport (via USB) till datorn.
För att se utskrifter till datorns serieport kan man använda programmet Tera Term (i Windows). Där behöver man ställ in dels rätt hastihet (115200 bps) dels hanteringen av new-line (till AUTO).
- Starta Tera Term, och välj Serial (istf TCP/IP), samt välj den serieport som är "USB Serial Port" (kanske COM4).
- Under Setup / Serial port, ändra Speed till 115200.
- Under Terminal / New-line, ändra Receive till AUTO.
Om allt är rätt uppkopplat (och EVA kör demot) ska det nu gå att se sampelvärden (motsvarande den analoga spänningen på ADC2). Om utskrifterna går för fort kan man lägga in en delay (t ex _delay_ms(500)) i huvudloopen. Se C-programmering på AVR för tips om hur man kan göra det.
Äldre virkort

Våra äldre virkort innehåller ett fåtal IDC-kontakter, avkopplingskondensatorer, samt i övrigt bara en stor viryta.
Numera kan ett sådant virkort anslutas via en 16-polig IDC-kabel till det nya kortet, ifall ett projekt behöver mer yta att vira på (t.ex. en LCD).
Även projekt med designer som inte matchar den färdigbyggda delen av de nya virkorten, kan implementeras på ett gammalt kort.