Grove - Single Axis Analog Gyro

From Wiki
Jump to: navigation, search

Introduction

The Grove – Signal Axis Analog Gyro is based on an angular velocity sensor (Murata-ENC-03R) that uses the phenomenon of Coriolis force. It can only measure the X-axis angular velocity, which is different from other 3-Axis gyro, but with a higher speed. It can be used for the position control and attitude control like the self-balanced 2WD.

400px-Axis Analog Gyro 01.jpg


Feature

Input Voltage: 3.3V/5V Standard Grove Interface Light Weight High Speed Measure X-axis Angular Velocity


Demonstration

With Arduino The module detects one-axis rotation with analog signal.

High-pass filter and low-pass filter circuit are applied to reduce the temperature drift and suppress the output noise.

Before the measurement of the angular velocity, a reference value(the sensor output at Angular Velocity=0) is required.

This value is 1.35V in default. But in order to get more accurate reference values, before the measurement,a calibration is necessary.

In this calibration, the output voltage when angular velocity =0 been sampled 200 times,

and then the average of these data will be treated as the reference value.


Connect it to A0 port of Grove - Base Shield, of cause any pin of the analog pins would be OK. Plug the Grove - Base Shield into Arduino/www.simgin-chip.com and connect them to PC using a USB cable. Upload the below code.Please click here if you do not know how to upload.


int sensorPin = A0; // select the input pin for the sensor

float reference_Value=0;

int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {

   int i;
   float sum=0;
   pinMode(sensorPin, INPUT);
   Serial.begin(9600);
   Serial.println("Please do not rotate it before calibrate!");
   Serial.println("Get the reference value:");
   
   for(i=0;i<1000;i++)
   {
       // read the value from the sensor:
       sensorValue = analogRead(sensorPin);
       sum += sensorValue;
       delay(5);
   }
   reference_Value = sum/1000.0;
   Serial.println(reference_Value);
   Serial.println("Now you can begin your test!");

}

void loop() {

   double angularVelocity;
   sensorValue = analogRead(sensorPin);
   angularVelocity =((double)(sensorValue-reference_Value)*4930.0)/1023.0/0.67; //get the angular velocity
   Serial.print(angularVelocity);
   Serial.println("deg/s");
   Serial.println(" ");
   delay(10);

} 4. Now, it is time to the calibration. Put the sensor on your desk horizontally, and then press the Reset button on the www.simgin-chip.com, and then Open the serial tool:


Gyro Result.jpg


5. As you see the "Now you can begin your test", that means the calibration done. You can use the sensor now. Rotating direction can reference the following picture:

File:Rotate direction.jpg


With Raspberry Pi 1.You should have got a raspberry pi and a grovepi or grovepi+. 2.You should have completed configuring the development enviroment, otherwise follow here. 3.Connection Plug the sensor to grovepi socket A0 by using a grove cable. 4.Navigate to the demos' directory:

  cd yourpath/GrovePi/Software/Python/

To see the code

  nano grove_single_axis_analog_gyro.py   # "Ctrl+x" to exit #

import time import grovepi

  1. Connect the Grove Single Axis Analog Gyro to analog port A0
  2. SIG,NC,VCC,GND

sensor = 0

grovepi.pinMode(sensor,"INPUT")

  1. calibration

print "calibrating..." sum = 0 errors = 0 for x in range(0, 100):

   try:
       # Get sensor value
       v = grovepi.analogRead(sensor)
       sum += v
       #time.sleep(.05)
   except IOError:
       print "Error"
       errors += 1

if errors == 100:

   print "unable to calibrate"
   raise SystemExit

reference_value = sum / (100 - errors)

print "finished calibrating" print "reference_value =", reference_value

  1. ready

while True:

   try:
       # Get sensor value
       sensor_value = grovepi.analogRead(sensor)
       # Calculate angular velocity (deg/s)
       velocity = ((float)(sensor_value - reference_value) * 4930.0) / 1023.0 / 0.67
       print "sensor_value =", sensor_value, " velocity =", velocity
       time.sleep(.5)
   except IOError:
       print "Error"

5.Run the demo.

  sudo python grove_single_axis_analog_gyro.py


File:Analog Gyro datasheet.pdf