Loggning av ljusintensitet

Loggning av ljusintensitet och presentation av data på en VGA skärm

Detta projekt handlar om konstruktion av ett inbyggt system som loggar ljusintensiteten i en lokal. Systemet är en första prototyp. Loggad data plottas på en VGA skärm och samplingsfrekvensen kan ändras av slutanvändaren. För konstruktionen används en BeMicro Max 10 kort, som med ett tilläggsgränssnittskort kopplas till en VGA-skärm. Nios II är det program som används för buggning och validering. Konstruktionen är skriven i c i Nios II miljö. Instruktioner för hur programmet ska användas presenteras på skärmen när programmet startas.

Systemarkitektur (”top-down”)

Sampling av ljusintensitet startar så fort som anvädaren startatar programmet. Default frekvensen för sampling är 5Hz och både grafiskt och numeriskt värde visas på skärmen. Med två knappar kan samplingsfrekvensen ändras uppåt eller neråt. För algoritmen används en tillståndsmaskin med fyra tillstånd. Grundprincipen för hela programmet är att data läsas och skrivas på VGA-skärmen med ett antal drivrutiner bl. a. print_char, print_str, print_vline o.s.v. Se figur 5 för algoritmens arkitektur.

VGA-hårdvaran

VGA interfacen består av tre utgångar (RGB) som styr elektronkanoner. Det finns också HSYNC och VSYNC, se figur 6. Det är ett enkelt kort med två kontakter och tre motstånd och anslutningar. Det kopplas på via en Pmod monterad på BeMicro kortet.

Loggning

ADC samplar kanalerna i ordningen, lagrar varje prov i minnet och endast när alla sex prover har förvärvats kommer ”klar” signalen skickas. Exakt hur och var proverna ska lagras beror på ADC konfigurationsläget. ADC lagrar varje prov i successiva minnesplatser i on-chip RAM (RAM i ADC IP block).

På sekvensadress finns ett tillgängliga register; kommandoregistret. Detta är en 32-bitars register. Inställning av bit 0, gör en samplingssekvens och bit 1 ställer ADC i “kontinuerligt” läge. “Kontinuerligt” läge innebär att när en sekvens har avslutad, startar en ny sekvens automatiskt.

I samplingslager lagras alla samplingar i den ordning som bestäms av sekvens setup. Det första samplet ska hämtas av en IORD med offset 0, det andra samplet med en offset 1 o.s.v.

På Bemicro-kortet finns en LDR-sensor. Detta är ett ljusberoende motstånd, vars resistans minskar med ljusintensiteten; motståndet är låg när det belyses och motståndet är hög när det är mörkt. LDR är en spänningsdelare och när det är mörkt (LDR hög) kommer spänningen att sjunka och när det är ljust (LDR låg) kommer spänningen att öka. Sampelvärdena kommer därmed att öka med ljusintensiteten.

Konstruktionsbeskrivning

Konstruktionen är skriven i c i Nios II miljö. När användaren startar programmet, informeras slutanvändaren med text hur programmet ska användas t.ex. hur samplingsfrekvensen ändras. Samplingsfrekvens är beräknad och har definierats i koden.

 Validering

Konstruktionen är testad på kortet. Det innebär att programmet har laddats på kortet och har testats i olika ljusstyrkor. Ljusintensitetet i rummet har varierats med dimmer. Resultatet på både det numeriska värdet och det plottade grafen stämmer mycket väl med förväntad resultat.

Leave a Reply

Your email address will not be published. Required fields are marked *

Erfaren HW- Mjukvarukonstruktör, testare, verifierare, VHDL-programmerare och administratör