Digitala Projekt
Wyland-Yutani Range Finder

Tor Andersson
Glenn Kennard

Abstract

In the digital project course we built an electronic device to transmit an ultrasonic pulse sequence and measure the time taken for the echoes to return. The measured distance is displayed on an alphanumeric LCD.

1  Inledning

I kursen digitala projekt skall man bygga en elektronisk grunka styrd av digitala komponenter. Vi ville experimentera lite med ultraljud och beslöt oss därför för att bygga en avståndsmätare som skickar ut en ultraljudspuls och mäter tiden det tar för ekot att komma tillbaks.

Vi tycker om blinkande lampor så vi satte fast några lysdioder också.

2  Mikroprocessor

Vår avståndsmätare behöver inte särskilt mycket minne:

Eftersom HC11:an har lagom mycket minne (512 byte) och en inbygd pulsackumulator och timerkrets valde vi att bygga vårt projekt runt en sådan. Att man slipper vira databussar och dylikt ser vi som en liten bonus.

3  Skärm

Till en början hade vi tänkt oss en visningsyta byggd med blinkande röda lysdioder och en röd alfanumerisk LED-display. De planerna fick vi dock skrota efter två dagars slit med att förgäves försöka få den fina alfanumeriska display-modulen att lysa som vi vill. Avsaknaden av datablad för just den modellen vi hade var nog ett av de huvudsakliga skälen. Istället pluggade vi i en alfanumerisk LCD som fungerade vid första försöket. Då blev vi glada.

En SHARP Dot-Matrix LCD Unit styrs med några kontrollbitar och en åttabitars databuss. Kontrollsignalerna RS, RW och E kopplade vi till port C. Vi kopplade databussen till port B, vilket tyvärr innebär att vi inte kan läsa från den. Det får man betrakta som en liten rest från den ursprungliga designen med en alfanumerisk LED.

4  Sändare och mottagare

Tyvärr krävs en del analog elektronik för att hantera ultraljuds-sändaren och mottagaren. På ett ben (port A) på mikroprocessorn generar vi en ca 40 kHz fyrkantsvåg (PING-signalen) som vi förstärker med hjälp av en operationsförstäkare. För att få en lagom stark utsignal använde vi oss av en sekundär spänningskälla på plus minus åtta volt.

Den analoga utsignalen från mottagarelementet (dvs ECHO-signalen) förstärker vi med en operationsförstärkare och sen använder vi en sista operationsförstärkare (komparator) för att trigga och generera en digital puls in till tre olika ben på port A. Vi valde att koppla ekosignalen till tre ben så att vi kunde testa lite olika sätt att detektera ekopulsen i mjukvaran.

För att successivt öka känsligheten på mottagaren efter hand som tiden går efter att pulståget skickats iväg byggde vi en dämpningskrets. En kondensator laddas upp när pulståget skickas och sen laddas den successivt ur. Hastigheten på urladdningen bestäms av urladdnings-potentiometern. Kondensatorn påverkar, tillsammans med omslagsnivå-potentiometern omslgsnivån på komparatorn.

Vi hade lite problem med att insignalen blev väldigt känslig för brus. Det visade sig att spänningen till insignalförstärkaren låg och flöt när ingen insignal togs emot. Dessa variationer förstärktes och genererade så pass mycket falska mätsignaler att det var nästan omöjligt att urskilja de äkta bland dessa. Problemet visade sig bero på att vi hade designat vår WYRF för att använda bipolära operationsförstärkare, medans kretsarna vi fick använda var CMOS-kretsar. Efter en hel del huvudbry, lite handpåläggning, en avklippt sladd som inte satt där den skulle, och en resistans över mottagarens piezoelement så fick vi till slut en klar och tydlig signal ända upp till två meters avstånd.

5  Mjukvara

Mjukvaran består av tre moduler. En modul för att hantera LCD-skärmen och lysdioderna (disp). En modul för att hantera ivägskickning av pulståget och tidtagning av ekot (echo). Slutligen så har vi huvudmodulen som innehåller styrlogik och periodiskt skickar iväg ett pulståg, mäter tiden och presenterar resultatet. Huvudmodulen har även hand om initiering av hårdvaran och kalibrering av mätvärden.

Till en början hade vi tänkt oss ha ett avbrottsstyrt program där vi plockar tiden från timingkretsen via ett avbrott. Eftersom insignalen var lite väl brusig så fick vi backa och använda oss av en loop som ligger och rå-pollar så snabbt den kan och returnerar medelvärdet på tiden av alla höga samplingar.

Se bilaga för källkodslistning.

A  Digitaldelen

B  Analogdelen