Grove-Single Axis Analog Gyro
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.
Model:SEN05091P
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.
1.Connect it to A0 port of Grove - Base Shield, of cause any pin of the analog pins would be OK.
2.Plug the Grove - Base Shield into Arduino/Seeeduino and connect them to PC using a USB cable.
3.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 Seeeduino, and then Open the serial tool:
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:
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 grovesingleaxisanaloggyro.py # "Ctrl+x" to exit #
import time import grovepi #Connect the Grove Single Axis Analog Gyro to analog port A0 #SIG,NC,VCC,GND sensor = 0 grovepi.pinMode(sensor,"INPUT") #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 #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 grovesingleaxisanaloggyro.py