Digitalt oscilloskop på
PC via parallellporten




Av
August Bering
Andreas nevalainen





Målet var att implementera ett så enkelt och billigt digitalt oscilloskop som möjligt innehållande
de vanligaste funktionerna. Oscilloskopet visar sina data i ett Windowsprogram på en vanlig hemma PC.
Insamplingen skulle vara så enkel och flexibel som möjligt, därför används en enchipsdator direkt
kopplad till en AD-omvandlare. Detta ger en måttlig samplingshastighet, men en mycket enkel design.
Oscilloskopet skulle uppfylla följande krav:

I ett kommersiellt oscilloskop finns många finesser som inte är möjliga att implementera med den enkla
lösning som används här. Dels på grund av att minnet endast är 512 byte, dels att det inte finns något
riktigt ingångssteg. Det finns dock en hel del funktioner som är möjliga att utöka implementationen med,
till exempel:

Oscilloskopet fungerar enligt följande:
Triggning:
AVR-processorn läser kontinuerligt in värden från AD-omvandlaren i högsta möjliga hastighet.
Värdena jämförs sedan med triggvärdet och det kontrolleras om det är en stigande eller fallande flank.
Sampling:
När triggpuls fås börjar insamplingen till minnet (buffern är 512 bytes stor). Eventuellt delay för
inställning av samplingshastighet sker med nop-instruktioner. När minnet är fullt överförs hela
buffern till datorn via SPI.
PC-delen:
Vågformen ritas upp i ett fönster i Windows, i fönstret kan även triggningen ställas.

Eftersom en enkel konstruktion eftersträvades valdes Amtels AVR ATmega16 som är en 8-bitars enchipsdator
med en maximal beräkningskapacitet av 16 MIPS vid 16 MHz. Nackdelen är att den enbart har 1Kb minne, vilket
är i minsta laget för ett oscilloskop. Fördelen är att det inte behövs några andra kretsar än en AD-omvandlare.
ATmega16 innehåller även en inbyggd AD-omvandlare, den är dock långsam men smidig att använda vid programtestning.
Den AD-omvanlare som används här är National Semiconductors ADC0820, det är en 8-bitars omvandlare och har en
omvandlingstid på 1.5ms.


Kopplingsschema

För kommunikation mellan PC:n och oscilloskopet används parallellporten. Den är ansluten till AVR-processorn
via SPI, Serial Peripheral Interface. Detta är ett seriellt protokoll och skälet till att vi inte använder ett
parallellt är att det inte stöds av hårdvara i AVR:n. Det gör däremot SPI och simuleras i mjukvara under Windows.
Den stora arbetsuppgiften i detta projekt låg i att programmeringen och att få den att fungera korrekt.
Programkoden är till största del skriven i C, det är enbart visningsfönstret i Windows som är skrivet i C++.
För den som är intresserad av kretsen och vill ha utförligare information om dess funktion finns den kompletta
rapporten här. Det finns även möjlighet att ladda ner alla källkoderna här i packat format.