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 / 7201
7200  |  7202
Subject: 
Re: Piezo Rate Gyro and HB
Newsgroups: 
lugnet.robotics.handyboard
Date: 
Thu, 9 Dec 1999 17:53:49 GMT
Original-From: 
Thomas Hauri <thomas.hauri@zhwinAVOIDSPAM.ch>
Viewed: 
3754 times
  
Hi Jan

good job. I've done exactly the same thing :)))) I only use some assembler code to measure the time. In fact I have
some code, that lets you measure a frequency or a pulsewidth ranging from about 30 Hz to 30kHz.
If anyone wants the code (i've supplied it many times to other people from ths list) just send me a mail.
Unfortunately Fred hasn't put the code on the HB home page yet, maybe sometime he will :)))) (hi Fred)

cu
Tom



Jan Liphardt wrote:

> Hi,
> 
> FYI, it is possible (and indeed pretty easy) to attach a small piezo
> rate
> gyro to the HB. I used the hitec GY-130 (availible for about 100$ from
> Tower Hobbies). It modifies a PWM signal - the pulse width increases or
> decreases depending on the rate of rotation around the gyro axis.
> 
> I used one servo port on the extension board to provide the
> PWM signal:
> 
> init_expbd_servos(action) ;        /*initialize servos*/
> 
> pos_servo_0 = 1500;                /* 0 to 3000 are valid */
> 
> and measured the pulse width with TIC3:
> 
> while(1)
>  {
>     temp = gyro_sample();
>     if((temp < 5000) && (temp > 100)) {printf("gyro rate: %d\n",temp)}
>     sleep(0.1);
> }
> 
> int gyro_sample() {
>     int start_pulse;
>     int end_pulse;
> 
>     int TFLG1 = 0x1023;        /* Timer flags, 8-bit reg*/
>     int TMSK1= 0x1022;        /* Timer Interrupt Masks, 8-bit reg*/
>     int TCTL2 = 0x1021;        /* Timer control 2, 8-bit reg, interupt
> edge*/
> 
>     bit_set(TCTL2, 1);         /* at tctl2, */
>     bit_clear(TCTL2, 2);       /* set tic3 for rising edge */
> 
>     poke(TFLG1, 1);              /* clear tic3 flag */
> 
>     while (!(peek(0x1000) & 0x1)) { /*do nothing*/; }
> 
>    start_pulse = peekword(0x1014);   /* tic3 has time of echo */
> 
>    bit_set(TCTL2, 2);           /*    at tctl2, */
>    bit_clear(TCTL2, 1);         /*   set tic3 for falling edge */
>    poke(TFLG1, 1);               /*   clear tic3 flag*/
> 
>    while (peekword(0x1014) == start_pulse){ /*do nothing until 0x1014
> actually changes*/; }
> 
>    end_pulse = peekword(0x1014);   /* tic3 has time of echo */
> 
>    if ((end_pulse <0)  && (start_pulse < 0 ))
>             { return (end_pulse + (- start_pulse));}
> 
>     if ((end_pulse > 0)   && (start_pulse > 0 ))
>              { return(end_pulse - start_pulse); }
> 
>     if ((end_pulse <0)   && (start_pulse > 0))
>              {return( (32767 + end_pulse) + (32767 - start_pulse) );}
> 
>     if ((end_pulse >0)   && (start_pulse < 0 ))
>              {return ( (end_pulse) + (- start_pulse) ); }
> 
> }
> 
> Sorry about the terrible code - I've only had my HB since yesterday! It
> does work,
> though.
> 
> Jan
> 
> Jan Liphardt
> Dept. of Physics
> UC Berkeley
> (510) 642 1440

--
Thomas Hauri

ZHW Zuercher Hochschule Winterthur
Zurich University of applied sciences

IMS Institute of Mechatronic Systems

Technikumstr.9 /PF
CH-8401 Winterthur
Switzerland

Phone : +41 52 267 74 79
Fax    :  +41 52 268 74 79
Mail  :   Thomas.Hauri@zhwin.ch
HP    :   http://www.zhwin.ch



1 Message in This Thread:

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

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