Pages: [1]   Go Down
Author Topic: [parte 1]lettura giroscopi analogici  (Read 3024 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10463
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hello
Sono giunto a conclusione del mio primo progettino per arduino...
Visto che è scritto a classi, le presento una alla volta, così nel caso è più comodo aiutare qualcuno che decida di riutilizzarle e abbia qualche dubbio/consiglio/richiesta ecc...
In oltre, guarda caso, le metterò in ordine di difficoltà, così può essere usato il tutto come tutorial da principiante a "esperto".
i link alle varie "lezioni":
parte 2 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1295216277
parte 3 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1295217572
parte 4 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1295218329
parte 5 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1295219016
parte 6 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1295219565
Partiamo dall'inizio: leggere un giroscopio analogico, e trasformare le sue letture da V/gradi a radianti/secondi...

Giroscopio.h:
Code:
#ifndef Giroscopio_h
#define Giroscopio_h

#include "WProgram.h"

class Giroscopio{
  public:
  float setPin(int);
  float leggi();
  private:
  int mid, gyroPin;
};
#endif

Giroscopio.cpp:
Code:
#import "Giroscopio.h"

static const float giroToRadiantAtSecond = (((5.0/1024.0)*1000)/0.67)/57.29578;

float Giroscopio::setPin(int pin){
  gyroPin=pin;
  mid = analogRead(gyroPin);
  int i;
  for (i=0; i < 1000;i++){
    mid = ( mid+analogRead(gyroPin) )/2;
  }
  return mid;
}

float Giroscopio::leggi(){
  int gyro=analogRead(gyroPin);
  if (gyro==mid-1 || gyro==mid+1){ //questa parte limita un poco il drift del gyro
    gyro=mid;
  }
  gyro = (gyro-mid)*giroToRadiantAtSecond;
  return gyro;
}

la variabile giroToRadiantAtSecond va settata in base al vostro giroscopio:
5.0 vuol dire che l'output va da 0 a 5 V
1024 è il valore massimo che ci restituirà l'analogRead
Ovvio che se il vostro gyro va a 3,3V i due valori sono da cambiare di conseguenza.

1000 è per portare i valori precedenti da V a mV, da non modificare

0.67 sono i °/mV dal datasheet del giroscopio
Anche questo valore è da modificare in base al vostro giroscopio

57.29578 è invece il valore necessario per passare da gradi a radianti. Se vi serve il valore in gradi potete tranquillamente togliere la divisione.
« Last Edit: January 16, 2011, 06:31:24 pm by lestofante » Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao lesto potresti aiutarmi? Ti spiego: ho un arduino Uno e vorrei realizzare un quadricottero utilizzando tutti i pezzi suggeriti su  AeroQuad.com, ovviamente tutti quelli compatibili con il mio arduino quindi la shield 1.8, giroscopio e accelerometro...  La variante sta nel fatto che lo voglio pilotare dal computer tramite i moduli XBee e Processing. Il mio problema quindi è: come modificare lo sketch Aeroquad.pde, che si trova qui http://code.google.com/p/aeroquad/downloads/list ,per il mio caso?  Ho aperto il file ma mi è sembrato molto complesso quindi non saprei programmare giroscopio e accelerometro... Se non richiede molto tempo, potresti semplificarmi lo sketch tagliando i pezzi che non servono e adattarlo per quanto possibile al mio caso?  Grazie mille.
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2309
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao lesto,
complimenti per il lavoro, e grazie della condivisione.

Solo... il progetto finale qual'è (per mio limite nonson riuscito ad evincerlo)?  :-[
Hai anche un filmatino youtube del risultato?
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10463
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dunque si tratta di un software per la stabilizzazione di un quadricottero.
Però, essendo tutto fatto a classi, ogni pezzo può essere usato indipendentemente, per questo l'ho diviso in varie discussioni
« Last Edit: January 18, 2011, 01:48:03 pm by lestofante » Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2309
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok,grazie lesto
Era per avere un quadro completo!
Bravo!
Logged

milano, italy
Offline Offline
Sr. Member
****
Karma: 1
Posts: 493
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

vogliamo sapere se vola  smiley nn hai qualche foto da mettere?  smiley-wink

c
Logged

milano, italy
Offline Offline
Sr. Member
****
Karma: 1
Posts: 493
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hai pensato anche per chi volesse usare il wii motion plus?  smiley
Logged

Pages: [1]   Go Up
Jump to: