Go Down

Topic: How to interface LISY300 Gyroscope Module with arduino (Read 798 times) previous topic - next topic

I have LISY300 Gyroscope Module and I want to interface this module with arduino, but I cannot. Please I need help.
This is the datasheet of the module.http://www.parallax.com/Portals/0/Downloads/docs/prod/sens/27922-LISY300GyroscopeModuleV1.0.pdf
@BARDINI

AWOL

Quote
I want to interface this module with arduino, but I cannot

Why not?
What's the problem?
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

#2
May 11, 2013, 07:42 pm Last Edit: May 11, 2013, 09:46 pm by ahmedaimar Reason: 1
Quote

Why not?
What's the problem?

I connect serial data output with analog pin Ao, but the reading isn't reliable.
This is my code.
Code: [Select]
/*
gyro sketch
displays the rotation rate on the Serial Monitor
*/
const int inputPin = 0; // analog input 0

int rotationRate = 0;
void setup()
{
Serial.begin(9600); // sets the serial port to 9600
pinMode(powerDownPin, OUTPUT);
digitalWrite(powerDownPin, LOW); // gyro not in power down mode
}
void loop()
{
rotationRate = analogRead(inputPin); // read the gyro output
Serial.print("rotation rate is ");
Serial.println(rotationRate);
delay(100); // wait 100ms for next reading
}
@BARDINI

AWOL

"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

tobyb121

Why are you doing analog read of the sensor?? It communicates with SPI

Quote

What's that?

I modify it. if you have an idea about how to use this module please send it to me.
@BARDINI


Why are you doing analog read of the sensor?? It communicates with SPI

Can you give an example about how to communicate this module with SPI ??
@BARDINI

AWOL

Have you looked in the Playground?
Google searches?
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.


Have you looked in the Playground?
Google searches?

Of course. i found a code but i can't understand it.
Code: [Select]

' =========================================================================
'
'   File...... LISY300 Test V1.6.bs2
'   Purpose... Demo LISY300 Gyroscope Module
'   Author.... Daniel Harris, Parallax, Inc.
'   E-mail.... support@parallax.com
'   Started... 11-15-2009
'   Updated... 09-10-2010
'
'   {$STAMP BS2}
'   {$PBASIC 2.5}
'
' =========================================================================


' -----[ Program Description ]---------------------------------------------

' This program test the LISY300 Gyroscope Module (#27922) by returning the
' ADC value.  The ADC is 10 bits and returns a value from 0 - 1023 at max
' ranges.  Typically when the Gyroscope Module is sitting idle the return
' value should be close to 512 (+/- 24).  As the Gyroscope rotates in a
' clockwise manner the values go down relative to the speed at which the
' gyroscope is rotating.  Conversely when the gyroscope is rotating in a
' counter-clockwise manner the values go up relative to the speed at which
' the gyroscope is rotating.
'
' This demo calibrates the program and displays a graphical representation
' of the magnitude of rotation with a horizontal bar graph.  It reports an
' APPROXIMATION of how many degrees per second the module is rotating as
' well as which direction the module is rotating and the raw output.
' Please read the documentation to determine how to accurately calculate
' sensor yaw.

' -----[ Revision History ]------------------------------------------------

' V1.6 - 9/10/10 Spiced up the original test code to demo the gyroscope module.

' -----[ I/O Definitions ]-------------------------------------------------

Dout            PIN     0               ' P0 <-- Dout (LISY300.2)
SCLK            PIN     1               ' P1 --> SCLK (LISY300.4)
CSn             PIN     2               ' P2 --> /CS  (LISY300.5)


' -----[ Constants ]-------------------------------------------------------

CW              CON     1
CCW             CON     0

divisions       CON     64              ' Adjust this value to change the
                                        ' width of the horizontal bar graph.

' -----[ Variables ]-------------------------------------------------------

raw             VAR     Word            ' Raw ADC Result Value
delta           VAR     Word            ' Center calculated raw change
center          VAR     Word            ' Calibrated static rotation value
ticks           VAR     Byte            ' Number of tick marks to display
i               VAR     Byte            ' Loop counter variable
CWorCCW         VAR     Bit             ' Are we rotating CW (1) or CCW (0)?


' -----[ EEPROM Data ]-----------------------------------------------------



' -----[ Initialization ]--------------------------------------------------

Initialization:
  HIGH CSn              ' Disable communication with sensor (active low)
  LOW SCLK
  PAUSE 250

  GOSUB Calibrate       ' Do an initial calibration to initialize the program.

  DEBUG CLS
  DEBUG REP "*"\38, CR, "Parallax LISY300 Gyroscope Module Demo", CR, REP "*"\38




' -----[ Program Code ]----------------------------------------------------

Main:
  DO

    GOSUB Read_Gyro
    GOSUB Do_Math

    ' Display our data
    DEBUG CRSRXY, 0, 4
    DEBUG CLREOL


    ticks = (delta * (divisions/2)) / center     'calculate the number of tick marks to display

    IF ticks > 0 THEN   'if we have tick marks to print, then print them

      IF CWorCCW = CCW THEN          'moving counter clockwise
        DEBUG CRSRX, (divisions / 2)-ticks, "<", REP "="\ticks-1, CR
        DEBUG "Rotating approx. ", DEC delta, " deg/sec COUNTER Clockwise", CLREOL, CR

      ELSE  'CWorCCW = CW             moving clockwise
        DEBUG CRSRX, (divisions / 2), REP "="\ticks-1, ">", CR
        DEBUG "Rotating approx. ", DEC delta, " deg/sec Clockwise", CLREOL, CR
      ENDIF

    ELSE

      'not rotating fast enough to display ticks, so place a center line and print status
      DEBUG CRSRX, (divisions / 2), "|", CR
      DEBUG "Minimal Rotation.  Approx. ", DEC delta, " deg/sec rotation.", CLREOL, CR
    ENDIF

    'print the raw value received from the ADC
    DEBUG CR, "Raw ADC Value:", DEC5 raw, CR

  LOOP

  END


' -----[ Subroutines ]-----------------------------------------------------

' Read_Gyro communicates with the gyroscope module to retrieve the digitized sensor readings.
' Communicates via SPI protocol.  Stores result into 'raw'.
Read_Gyro:
  LOW CSn          ' Enable communication with sensor (active low)
  SHIFTIN Dout, SCLK, MSBPOST, [raw\13]  ' Get the data
  HIGH CSn         ' Disable communication with sensor (active low)
  RETURN



' Due to manufacturing differences, reported static sensor values can vary.  The program
' should update 'center' to compensate.  Make sure that the module is still during calibration!
Calibrate:
  center = 0

  FOR i = 1 TO 8   'quickly take 8 readings to average the static rotation value
    GOSUB Read_Gyro
    center = center + raw
  NEXT

  center = center >> 3         'Take the average of the readings, divide by 8 (= 2^3)
  RETURN



' Do_Math conditions the raw data a bit so that we can make use of that data.
Do_Math:

  delta = (raw - center)  'find the magnitude of change from the center position.  (Can be negative!)
                          'One decimal change is roughly equivelant to one degree of rotation per second.

  CWorCCW = (($8000 & delta) >> 15) 'Saves the sign bit of delta to CWorCCW, this way we can
                                    '  determine if we are moving CW or CCW.
                                    'A negative delta (CWorCCW bit set) means we are moving CW.
                                    'A positive delta (CWorCCW bit cleared) means we are moving CCW.

  IF CWorCCW = CW THEN
    delta = -delta      'we cannot divide with a negative number, so negate the negative to make positive
  ENDIF


  RETURN
@BARDINI

AWOL

Quote
i found a code but i can't understand it

No, me neither.
You didn't find that in the Playground.
Try Googling "lisy300 Arduino"
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

JimEli

http://wiring.org.co/learning/basics/gyrolisy300al.html

tobyb121

What module are you actually using. You can get an LISY300 which is just the chip broken out, giving you an analogue output, or you can have something like the link in your original post that uses SPI.

Go Up