lördag 31 maj 2008

Great success!

Jaa, tro det eller ej, men vårt projekt (på betygsnivån 3) är nu fungerande och nästan klart! Sensorerna hålls mittemot varandra på ca en meters avstånd, och passerande människor räknas och antalet visas på den tillhörande displayen. Sensorerna bör dock hållas i midjehöjd eller högre, då sensorer i benhöjd räknar varje ben som en person (såklart).

Idag ska vi skriva rapport, planera hur sensorerna ska monteras för redovisningen samt få vårt system att funka även när vi har programmerat enkapseldatorn, tagit lös den och satt fast den på ett kopplingsdäck.

Mera bilder

Det här är en bild från typ förra veckan, när Edvin testar våra sensorer mha oscilloskopet.




Och en rörig koppling!





fredag 30 maj 2008

en gammal länk

http://ltc.cit.cornell.edu/courses/ee476/FinalProjects/s2004/ddb25/complete2.htm

Här är en länk till en mottagarkrets som inte funkade för oss. Enjoy!

Update

Våran räckvidd för ultraljudet ligger bara på ca 3decimeter, det hade vi tänkt lösa med ytterligare förstärkning. Detta misslyckades då mottagaren kände av sändaren direkt och inte ekot. Så nu har vi fått ge upp vår grundläggande idé att mäta avstånd från sändare till objekt, person. Vi har gått över till att fästa mottagaren på andra sidan dörröppningen vilket medför att vi får utveckla en helt ny kod men vi slipper hantera mottagningen av den direkta signalen från sändaren. Vi har byggt en attrapp av papp och plast för att sätta upp sändare och mottagare mitt emot varandra i något som kan liknas vid en dörröppning och vi har även gjort vår prototyp mer mobil genom att koppla fast sladdar för att frigöra kapseldatorn från utvecklingskortet. Vi har även beställt en 12volts adapter för att slippa böka med kopplingsbordet som strömkälla.

Den nya algoritmen då sändare och mottagare är på skilda sidor av ingången gick ut på att utlösa ett input capture varje gång signalen ändrades mellan en etta och nolla. När signalen blockeras så är den en etta, därför så jämförde vi den föregående summan passerade klockcykler med den nuvarande summan passerade klockcykler, vilka bör skiljas avsevärt om en person gått förbi, för att räkna upp timern. Detta funkade dock inte. Vi kunde läsa av det registret som uppdateras vid input capture med räknarens värde vilket vi ansåg bekräftade att ett capture inträffade, men vi lyckades däremot inte få respektive interrupt funktion att utföras trots att input capture var påslaget och global interrupt funktionalitet var påslaget.

Idag skall vi istället för att göra ett capture vid signaländring helt enkelt göra en provtagning av ettor och nollor, om en övervägande majoritet av proven är ettor så bör det vara en människa där.

Vår schmitt-trigger ger en mycket större del nollor än ettor vilket gör att chipet kan ha svårt att detektera ettorna. Det bör vara jämt fördelat då det bara är en fyrkantsvåg som skickas. Detta har blivit löst genom att använda en spänningsdelare som förskjuter signalens centrering från 0volt till en högre spänning vilket gör att schmitt triggern ger flera nollor (logisk nolla ges av hög volt då schmitt triggern även inverterar).

Vi har nu även fått ta hänsyn till att utskrivningen på displayen är en tidskritisk process. Displayen har en pinne för respektive segment som ska lysa, för att spara in på antal pinnar så har tillverkaren implementerat styrpinnar som väljer vilken uppsättning av segment som ska lysa. Vi har tre uppsättningar av segment som alltså kan visa max 999. Displayen kan med andra ord endast visa antingen ental, tiotal eller hundratal åt gången så vi måste uppdatera displayen kontinuerligt för att ge illusionen av en konstant uppvisning av antal människor. Vi utgick från att moderna tv apparater har 100Hz, med en timer försökte vi uppnå detta genom att utgå från kapseldatorns klockhastighet, detta funkade inte. Istället så provade vi oss fram att göra en compare match vid olika intervall. När vi hittade ett som funkat så halverade vi intervallet för att kunna köra displayen så långsamt som möjlig för att få processorkraft till annat men ändå kunna se tydliga siffror på displayen.

onsdag 28 maj 2008

STORA framsteg

Vår schmittrigger funkade inte alls bra, men det berodde på att den var sönder så så fort vi fick en ny så blev allt jättefint!

Sensorerna reagerar nu när man sätter tex en hand ovanför dem, och timern räknar och displayen visar hur många gånger något gått förbi. Så det är verkligen stora hopp framåt, med tanke på att vi suttit och kämpat med vår förstärkare i ca en vecka.

Det som vi ska fila på idag är att se till att räknaren inte räknas upp utan att något får ljudvågen att studsa på ett bra ställe (alltså att vår siffra ska öka om och endast om något går förbi på rätt avstånd).

tisdag 27 maj 2008

Framsteg!

Igår fick vi äntligen vår förstärkare att fungera som vi ville, efter många om och men. Nu är nästa steg att få Schmitt-triggern att göra det vi vill.

Vi har börjat fundera lite på rapporten också. Vårt mål just nu är att få igång sensorn och behandla den data vi kan läsa av från den, för att kunna avgöra om någon går förbi och i så fall öka siffran på displayen. Om vi får allt det att funka så har vi kommit upp i betygsnivå 3, och då kommer vi satsa på att skriva rapport och kanske få lite tid över till den andra kursen den här perioden :)

torsdag 22 maj 2008

Förstärkning

Idag har vi ägnat mycket tid åt att pyssla med våra el-prylar vi fick igår; op-förstärkare, schmittrigger och inverterare. Vår inverterarkrets fungerade inte riktigt som vi ville, så vi ska koppla in ännu en op-förstärkare där istället. 

Här är en länk till ett projekt på Cornell University som vi tagit mycket inspiration av: http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2007/jjl49_mar97/jjl49_mar97/index.htm

Några bilder från dagen:

Jocke kodar.




tisdag 20 maj 2008

Dagens prestation

Idag har jag gjort en djupdykning i databladet för att få rätsida på hur vi ska hantera timers. Vi ska använda en för att skapa en fyrkantsvåg och en ytterligare för att ta tid från när signalen skickas från ultraljudssändare till att den tas emot med ultraljudsmottagaren. Jag känner att jag lyckats få bra koll på hur jag ska ställa in timersarna för våra syften men måste även ta reda på hur jag i koden ska starta och stoppa dem.

måndag 19 maj 2008

Seg måndag

Idag har många timmars arbete gett väldigt lite utdelning. Efter mycket läsande om PWM:en så visade det sig att den bara kan generera 7kHz, resp 14kHz i fast mode. Våra ultraljudssensorer kräver 40kHz. För att generera en signal så får vi istället använda en timer som byter tillstånd på en pinne 80 000 ggr/s, i.e. 40kHz. 

Förstärkarkretsarna är fortfarande förvirrande. 

Att använda en timer för att ta tid från att en signal skickas till att den tas emot är även det oklart. Det finns färdig kod i databladet för det vid användning av en annan processor men pga att registren har andra namn i Atmega16 och att de är dåligt kommenterade i det givna exemplet så har vi ändå inte fått dom att funka än. Egentligen bör det kunna fixas väldigt snabbt om det kan redas ut vilka register som är vilka.

lördag 17 maj 2008

Att göra

Läsa om PWM funktionaliteten i chipet för att generera en fyrkantsvåg till ultraljudssändaren.

Läsa på om hur man ställer in en av chipets timers för att ta tid från att sändaren skickar ut ultraljud till att mottagaren känner av det

Sätta sig in i hur förstärkar-kretsarna ska konstrueras till ultraljuds sändare/mottagare. Beställning av operationsförstärkare, schmitt trigger och inverterare är klar. Ett exempel på hur det kan konstrueras finns på länken som förhoppningsvis är nedanför(?)

Detta bör ej ta mer än en dag att utföra, lämpligtvis företar sig en person en av de ovanstående uppgifterna. Detta måste ske snarast nästa vecka och ger oss en utgångspunkt för att gå vidare med projektet. Nästa steg bör vara att konstruera kod för att tolka signalerna samt möjighet att skicka interrupts då en person registrerats.

fredag 16 maj 2008

Displayen funkar!

Ja, nu har vi fått vår display att visa siffrorna precis som vi vill. Jag kan säga att det har tagit längre tid än vad det borde, pga diverse små enerverande men långvariga fel. Men nu är det förlåtet och displayen skriver ut vadän vi ber den om!

Vi har även fått våra sensorer idag, så äntligen kan vi börja jobba på riktigt. Vi har beställt ytterligare förstärkare mm som vi behöver, hoppas de kommer snabbt så vi kan fixa ihop allt.

Och imorgon kommer Edvin hem!

fredag 9 maj 2008

Fredag

Idag har vi typ ingenting att göra. Vi funderar lite på vad vi kommer behöva göra i framtiden, och har tagit reda på att ljudets hastighet i 23-gradig luft är 343 m/s.

Edvin kommer vara bortrest en vecka nu också...

torsdag 8 maj 2008

Dag 3

Idag har vi filat på vår displayfunktion, vi har skrivit jättefina binära koder för hur segmenten ska lysa.

Vi har även lekt lite med sensorn vi fick av Lars, fast utan några större framsteg. Vi kopplade in den i funktionsgenerator och oscilloskop, men vi fick inte den signal vi ville. I skrivande stund håller Rikard på och kollar på det, så vi får se!

Vi har bestämt oss för vilka sensorer vi vill ha, så förhoppningsvis ska vi få våra grejer så småningom!

onsdag 7 maj 2008

Dag 2, forts

Nu har vi haft möte med Lars. Vi fick 2 st sensorer som vi ska försöka använda, tills vidare.

Det som vi måste lägga till i vårt projekt för att uppfylla kraven är någon slags seriell kommunikation, så vi ska kommunicera med datorn så den kan läsa av infon från sensorerna.

Vi har även fått info om att det blir bättre prestanda om vi använder skilda mottagare och sändare, jämfört med en enda enhet.

Angående att vi måste ha 2 tidskritiska processer, så trodde vi först att vi måste ha någon inbyggd klocka (onödigt för oss egentligen), men sen kom vi överens med Lars om att våra två sensorer på var sida om dörrhålet gildes som två skilda tidskritiska processer.

Så här har vi bockat av betygskraven:

Betyg 3:
- interagera via analoga signaler : sensorer
- interagera via digitala signaler: display
- intern timer för tidskritisk process: intern timer används för att beräkna avstånd mha pingade sensorer
- programmet ska bestå av minst ännu en process: displayutskrivning

Betyg 4:
- 2 kritiska processer ska köras samtidigt: våra två sensorer körs samtidigt
- seriell kommunikation: kommunikation med PC

Betyg 5:
- sätta sig in i funktion hos avancerad komponent el. dyl.: Lagra infon på USB-minne

Dag 2 : Första kodsessionen

Idag sitter vi i labbet och funderar lite på hur vi ska koda displayen att lysa som vi vill. Vi har skrivit mer eller mindre fullständig kod, och fastän att vi inte har displayen här så tänker vi oss att vi vet ungefär hur den kommer fungera.

Det vi funderar på nu, är vilken typ en pinne har!

Innan dagen är slut ska även Lars komma hit och slutligen godkänna vårt projektupplägg. Imorgon eftermiddag beräknas vår display komma (det blev en grön!), och förhoppningsvis ska Rikard ha hjälpt oss hitta en optimal sensor. Annars blir det en PING-sensor, som säkert också kommer gå bra.

tisdag 6 maj 2008

Första gången i labben!

Idag har vi handledningstillfällle i labben, och vi har diskuterat igenom vår idé. Huvudtanken är en personräknare, som finns i tex ett dörrhål, och räknar varje person som går förbi och visar antalet på en display.
Så här ser vår idé ut hittills:

Steg 1: En sensor som märker om någon går förbi.
Steg 2.1: En display visar antalet personer som gått förbi. Displayen skall kunna nollställas.
Steg 2.2: Vi lägger till en sensor till, som ska finnas på andra sidan dörrhålet. Då kan två personer gå i bredd i dörrhålet och båda räknas.
Steg 3: Lagra infon på ett USB-minne.

Vi har tänkt använda en ultraljudssensor. Och så funderar vi på en 3x7-segmentsdisplay.

fredag 2 maj 2008

Tjena världen!

Nu kommer första inlägget på vår projektblogg för inbyggda system.