To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.robotics.handyboardOpen lugnet.robotics.handyboard in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / Handy Board / 5775
5774  |  5776
Subject: 
RE: Polaroid 6500 Sonar Problem
Newsgroups: 
lugnet.robotics.handyboard
Date: 
Tue, 9 Mar 1999 05:40:34 GMT
Original-From: 
Edgar Leatherman <[eleather@]AntiSpam[imagixx.net]>
Viewed: 
900 times
  
Hi,

On this page
(http://lcs.www.media.mit.edu/groups/el/projects/handy-board/software/sonar.
html)
it says to install a .1uF capacitor at C7 on the sonar board. My team
basically did everything you are talking about, plus install the cap, and
everything seems to work fine for us... hope this helps, I'm not sure what
the capacitor does though.

E Leatherman

-----Original Message-----
From: rmtmd [mailto:rmt@lvcm.com]
Sent: Monday, March 08, 1999 10:40 PM
To: handyboard@media.mit.edu
Subject: Polaroid 6500 Sonar Problem


I'm having difficulty getting my sonar rangefinder to work properly.

I've got a fully operational Handy Board with a fully operational
Expansion Board plugged into it (both purchased assembled from Gleason
and used extensively already without difficulty).  I've soldered the nine
pin flex cable adapter into the appropriate place on the top of the
expansion board, and I've got the flex cable plugged into it and into the
adapter on the sonar driver board I purchased assembled from Wirz.  I've
soldered a solid core wire to pad J12 on the expansion board and plugged
the other end into the digital input numbered "7" on the Handy Board
itself (first hole on right in the single row header next to the power
expansion header).

Running Interactive C 3.1 (commercial version from Newton Labs), I loaded
"sonar.c" (Fred Martins' driver code) to test everything.  When I invoked
the "sonar_display();" function, I heard the transducer clicking rapidly.
The LCD display updated in sync with the clicks.  So far so good.

The display, however, did not change significantly, when, holding the
transducer by it's wires, not by its body, I pointed it at flat surfaces
at varying distances from it ranging from a few feet to five or ten feet
away.  I kept getting a number around 1450 to 1460 on the LCD as the
value of "result," which holds the result of the call to the ranging
function, "sonar_closeup();".  Occasionally numbers up to 1800 or so
flash on momentarily, but for the most part the numbers being
continuously updated run in the 1450s to 1460s.

I've tried substituting "sonar_sample();" for the call to
"sonar_closeup();" in the "sonar_display();" function's body, to no
avail.  If the returned value on the LCD represents the number of half
milliseconds elapsed, then, I seem to be reading a constant distance of
about .3 feet (1450 ticks / 2000 ticks/ms = 0.725 ms; 0.725 ms / 2 = .362
ms, or the time for sound to travel ONE way to target; .362 ms / 1.1
ft/ms {speed of sound} = .33 ft).

HELP!

Ross M. Tonkens, M.D.
Medical Director
Primary Care of Nevada
100 North Green Valley Parkway
Suite 240
Henderson, NV 89014

702 914-7120  VOICE
702 914-7129  FAX

I've reproduced Fred Martin's driver code below rather than referring
everyone to the URL where I downloaded it.

/*
sonar.c
Polaroid 6500 routines for Handy Board / Interactive C
by Fred Martin, fredm@media.mit.edu
Sat Nov 22 13:57:35 1997

echo signal is connected to tic3/pa0;
init signal is pd5 (SS);
binh signal is pd4 (SCK)
*/

void sonar_init() {
bit_set(0x1009, 0x30); /* ddrd */
bit_set(0x1021, 1); /* at tctl2, */
bit_clear(0x1021, 2); /* set tic3 for rising edge */
}


int sonar_sample() {
int start_time;

poke(0x1023, 1); /* clear
tic3 flag */

start_time= peekword(0x100e); /* capture start time */
bit_set(0x1008, 0x20); /* trigger pulse */

while (!(peek(0x1000) & 0x1)) { /* wait until receive echo */
if ((peekword(0x100e) - start_time) < 0) {
/* if too much time has elapsed, abort */
bit_clear(0x1008, 0x20);
return -1;
}
defer(); /*
let others run while waiting */
}

bit_clear(0x1008, 0x20); /* clear pulse trigger */

return peekword(0x1014) - start_time; /* tic3 has time of echo */
}

int sonar_closeup() {
int start_time;

poke(0x1023, 1); /* clear
tic3 flag */
start_time= peekword(0x100e);
poke(0x1008, 0x20);

while ((peekword(0x100e) - start_time) < 1000);

bit_set(0x1008, 0x30); /* turn on BINH */

while (!(peek(0x1000) & 0x01)) {
if ((peekword(0x100e) - start_time) < 0) {
/* if too much time has elapsed, abort */
bit_clear(0x1008, 0x30);
return -1;
}
defer();
}

bit_clear(0x1008, 0x30);

return peekword(0x1014) - start_time; /* 0x1014 is tic3 */
}

void sonar_display() {

    int result;

    sonar_init();

while (1) {
result= sonar_closeup();
if (result != -1) printf("%d\n", result);
else printf("*******\n");
msleep(50L);
}
}




Message is in Reply To:
  Polaroid 6500 Sonar Problem
 
I'm having difficulty getting my sonar rangefinder to work properly. I've got a fully operational Handy Board with a fully operational Expansion Board plugged into it (both purchased assembled from Gleason and used extensively already without (...) (25 years ago, 9-Mar-99, to lugnet.robotics.handyboard)

3 Messages in This Thread:


Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR