Show Posts
Pages: [1] 2 3 ... 41
1  International / Megatopic / Re: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo on: July 16, 2014, 07:52:06 am
ci sono grosse differenze tra Multiwii 2.1 e la versione 2.3 ???
ho provato a caricare la 2.3 e il quad era ingestibile, non riuscivo nemmeno a staccarlo da terra che si ribaltava...ho rimesso la 2.1 e vola che è una meraviglia.
Probabilmente era solo questione di modificare qualche parametro nella 2.3 e sarebbe andato tutto bene, ma se non ci sono grosse differenze tengo la 2.1
2  International / Software / Re: calcolo percentuale pendenza on: June 18, 2014, 09:11:54 am
eh hai ragione, inoltre pedalando, la bici continua a oscillare, soprattutto in salita...ci vorrebbe un trucchetto smart per evitare tutte ste cose e approssimare la pendenza usando altre informazioni xD
è anche vero che non devo progettare il sistema di guida di un F35, quindi potrei fregarmene del fatto che in curva le letture sono sballate.
si potrebbe fare una cosa del genere (???): tengo solo le letture dell'asse Y che sono contemporanee ad una lettura dell'asse X in cui è piano (cioè uguale alla lettura di calibrazione iniziale). Quindi le letture in cui la bici è inclinata sono scartate...

EDIT: ah non ho visto la modifica del post

EDIT2: si mi serve altro paracetamolo
3  International / Software / Re: calcolo percentuale pendenza on: June 18, 2014, 08:50:59 am
ecco era proprio quello che volevo sentire smiley-grin
dunque i passaggi dovrebbero essere questi:
- accensione: calcolo il modulo del vettore G da fermo oppure uso la costante.
- ad ogni passaggio del sensore sullo switch reed:
  - calcolo la velocità
  - calcolo l'accelerazione avendo la nuova velocità, quella vecchia e l'intervallo di tempo
  - correggo il valore dell'asse Y dell'accelerometro con l'accelerazione calcolata
  - (facoltativo) calcolo il modulo del vettore G usando la Y corretta e confronto col valore calcolato all'inizio
  - calcolo la pendenza avendo la Y corretta.

Ora mi viene in mente un'altro "problema": Mettiamo che una volta finito tutto il progetto io avrò il mio PCB con tutti i componenti saldati. Lo monto sulla bici e mi accorgo che l'accelerometro non è perfettamente orizzontale. E' possibile spostare lo zero dell'accelerometro in modo da regolarlo in base a come è montato? basta salvarsi il valore letto all'accensione e toglierlo in tutte le altre letture?
4  International / Software / Re: calcolo percentuale pendenza on: June 18, 2014, 07:48:04 am
quindi non c'è speranza di utilizzare solo l'accelerometro per il calcolo della pendenza?
Avendo la velocità e quindi anche l'accelerazione ad ogni istante, non è possibile correggere (facendo un compromesso in termini di precisione) i dati dell'accelerometro?
L'unico giroscopio che ho a casa è quello del telecomando WII che avevo usato nella prima versione del quadricottero...
5  International / Software / Re: calcolo percentuale pendenza on: June 18, 2014, 06:23:02 am
grazie per l'aiuto, praticamente il metodo che usi tu è giusto, a me non funzionava perchè nell'ultimo calcolo in cui usi la funzione tan() gli passavo l'angolo in gradi, quando invece lo vuole in radianti, quindi occhio a non fare il mio stesso errore smiley-grin
in ogni caso, la libreria che sto usando fa lo stesso calcolo e in più fa la media di n letture, il tutto in modo trasparente, quindi è comoda.
La libreria ritorna un valore che è 100 se l'accelerazione è 1G, quindi moltiplico per 1,11 (= 100 / 90) e ottengo i gradi, dato che quando ho 1G sono a 90 gradi. Poi trasformo in radianti (PI/180) e posso calcolarmi la pendenza in percentuale.
Ora quello che mi interessa è l'intervento di 'lesto'. Quello che ho capito è che se si è in movimento si è sottoposti ad altre accelerazioni, oltre a quella dovuta alla forza gravitazionale, quindi le misurazioni dell'accelerometro andrebbero corrette. ma come? Approfondisci il discorso!!! smiley-grin

EDIT: @Davide311, se ti va, dato che abbiamo un progetto in comune possiamo tenere aggiornato questo thread con eventuali domande o dubbi e se mai riusciamo ad arrivare alla fine del progetto facciamo un post nella sezione megatopic mettendo insieme il tutto
6  International / Software / Re: calcolo percentuale pendenza on: June 17, 2014, 03:41:22 am
intendi che dovrei fare il rapporto tra i valori delle forze g sugli assi x e y? ed è finita li?
m% = 100 * (delta_gY / delta_gX)

EDIT: Ho risolto, ho usato una libreria che ho trovato sul playground e mi sono accorto che la funzione tangente vuole i valori in radianti e non in gradi, per quello mi venivano numeri strani nei conti posto il mio codice finale:
Code:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <math.h>
#include <AcceleroMMA7361.h>

#define SCLK 7
#define DIN 6
#define DC 5
#define CS 4
#define RST 3

#define LM35_PIN A3

#define X_PIN A0
#define Y_PIN A1
#define Z_PIN A2

Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, DC, CS, RST);
 
float angle_x;
float angle_y;
float angle_z;

float per_x;
float per_y;
float per_z;

AcceleroMMA7361 accelero;

int x;
int y;
int z;

// Define values for LM35
int val = 0;
float temp;

void setup()   {
 
  Serial.begin(9600);
  analogReference(EXTERNAL);

  // Initialize the LCD
  display.begin();
  display.setContrast(25);
  display.setTextSize(1);
  display.setTextColor(BLACK);
 
  accelero.begin(13, 12, 11, 10, X_PIN, Y_PIN, Z_PIN);
  accelero.setARefVoltage(3.3);                   //sets the AREF voltage to 3.3V
  accelero.setSensitivity(HIGH);                   // HIGH sets the sensitivity to +/-1.5G, LOW to +/-6G
  accelero.calibrate();
 
 
}

void loop() {
 
  getTemp();
 
  y = accelero.getYAccel();
 
  angle_y = y * 1.11 * PI/180; // in radianti: 100 = 1g => 100 / 90° = 1.11
  per_y = 100 * tan(angle_y);
 
  display.clearDisplay();
  display.setCursor(0,0);
  display.print("% = ");
  display.println(per_y);
  display.print("t = ");
  display.println(temp);
  display.display();
 
 
  delay(500); 
 
}

void getTemp()
{
  val = analogRead(LM35_PIN);
  temp = val * 0.322265625;
}
7  International / Software / Re: calcolo percentuale pendenza on: June 16, 2014, 06:09:05 pm
a me interessa sapere la percentuale %, ma credo sia collegata all'angolo (forse mi sbaglio).
in ogni caso con quel codice ottengo prima i "g" per ogni asse, e da quelli calcolo l'angolo in °.
ora avendo l'angolo posso calcolare la % con la formula (wikipedia)
m% = 100 * tan(angolo)
così dovrebbe andare giusto?
8  International / Software / Re: calcolo percentuale pendenza on: June 16, 2014, 01:43:55 pm
ho trovato un altro codice che mi convince di più per il calcolo, però non capisco perchè sull'asse y che dovrebbe essere il mio "pitch" ho 350 gradi, non dovrebbe essere 0?
stessa cosa per l'asse x che è a 13 gradi quando mi aspetterei un valore prossimo allo 0...

Quote
void getAngles()
{
  value_x = analogRead(X_PIN);
  value_y = analogRead(Y_PIN);
  value_z = analogRead(Z_PIN);
  
  xv=(value_x / 1024.0 * ADC_ref - zero_x) / sensitivity_x;
  Serial.print ("x= ");
  Serial.print (xv);
  Serial.print(" g ");
  
  yv=(value_y / 1024.0 * ADC_ref - zero_y) / sensitivity_y;
  Serial.print ("y= ");
  Serial.print (yv);
  Serial.print(" g ");
  
  zv=(value_z / 1024.0 * ADC_ref - zero_z) / sensitivity_z;
  Serial.print ("z= ");
  Serial.print (zv);
  Serial.print(" g ");
  Serial.print("\n");
  
  Serial.print("Rotation ");
  
  Serial.print("x= ");
  angle_x =atan2(-yv,-zv)*57.2957795+180;
  Serial.print(angle_x);
  Serial.print(" deg");
  Serial.print(" ");
  
  Serial.print("y= ");
  angle_y =atan2(-xv,-zv)*57.2957795+180;
  Serial.print(angle_y);
  Serial.print(" deg");
  Serial.print(" ");
  
  Serial.print("z= ");
  angle_z =atan2(-yv,-xv)*57.2957795+180;
  Serial.print(angle_z);
  Serial.print(" deg");
  Serial.print("\n");

}


EDIT: ho capito che dovrebbe essere questione d aggiustare lo zero dei valori, magari fare anche la media di una decina di letture.
9  International / Software / Re: calcolo percentuale pendenza on: June 16, 2014, 09:27:46 am
giusto, mi sono scordato di metterlo, è l' MMA7361.
10  International / Software / Re: calcolo percentuale pendenza on: June 16, 2014, 06:09:29 am
grazie per la risposta, con l'accelerometro in piano sulla scrivania ho i seguenti valori:
x = 497
y = 555
z = 680
purtroppo non sono stabili ma continuano a variare ad ogni lettura rimanendo comunque in un range ristretto.
Ora se faccio come mi hai consigliato ottengo:
Angolo YZ = 555/680 * 100 = 81.61 %
sicuro che sia giusto? devo per caso calibrare l'accelerometro nel setup() ? se si come?
11  International / Software / calcolo percentuale pendenza on: June 15, 2014, 11:29:54 am
Ciao, dopo molto tempo ho ripreso in mano l'arduino UNO che ho e ho deciso di farmi un computer home-made per la bicicletta.
Le funzioni sono le solite standard (velocità, distanza, tempo ecc.) però voglio avere la possibilità di visualizzare sullo schermo anche la pendenza della strada che sto percorrendo. Dunque come posso fare, utilizzando i valori dei 3 assi dell'accelerometro?
In questo momento l'accelerometro è collegato così:
SL -> 3.3v
0g -> non collegato
GS -> GND
ST -> GND
VCC -> 3.3v

EDIT: ho dimenticato il codice che sto usando:

Code:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <math.h>

#define SCLK 7
#define DIN 6
#define DC 5
#define CS 4
#define RST 3

#define LM35_PIN A3

Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, DC, CS, RST);

// Define the axis variables
int x = 0;
int y = 0;
int z = 0;

double angleYZ = 0;
double angleXZ = 0;

// Define values for LM35
int val;
float temp;

void setup()   {
 
  Serial.begin(9600);
  analogReference(EXTERNAL);   // HO COLLEGATO AREF AI 3.3V

  // Initialize the LCD
  display.begin();
  display.setContrast(25);
  display.setTextSize(1);
  display.setTextColor(BLACK);
 
}


void loop() {
 
  x = analogRead(0);
  y = analogRead(1);
  z = analogRead(2);
 
  x = map (x, 0, 1023, -511, 511);
  y = map (y, 0, 1023, -511, 511);
  z = map (z, 0, 1023, -511, 511);
 
  angleYZ = atan ((double) y / (double) z);
  angleYZ = angleYZ * 57,2958;
 
  angleXZ = atan ((double) x / (double) z);
  angleXZ = angleXZ * 57,2958;
 
  val = analogRead(LM35_PIN);
  temp = val * 0.322265625;
 
  display.clearDisplay();
  display.setCursor(0,0);
  display.print("YZ = ");
  display.println(angleYZ);
  display.print("XZ = ");
  display.println(angleXZ);
 
  display.print("temp = ");
  display.println(temp);
 
  display.display();
 
  Serial.print("\nx: ");
  Serial.print(x);
  Serial.print("\ty: ");
  Serial.print(y);
  Serial.print("\tz: ");
  Serial.print(z);
  delay(100); 
 
 
 
}
12  International / Megatopic / Re: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo on: January 01, 2013, 09:29:25 am
esaustivo come sempre e complimenti a quel ragazzino del video!
però non mi attira per niente fare volo acrobatico, mi piace la tranquillità e pacatezza del mio quadricottero, siamo in sintonia smiley-wink
13  International / Megatopic / Re: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo on: December 31, 2012, 09:07:57 am
wow non sapevo che un elicottero modificasse il passo dell'elica per aumentare o diminuire le forze, grazie della lezioncina smiley-grin ho visto un po di video, e in effetti di manutenzione se ne deve fare molta essendoci tutta quella meccanica.
Adesso che mi avete spiegato tutte queste cose però mi sorge un dubbio: perchè non si può utilizzare la stessa elettronica che si usa nei quadri per il controllo dell'assetto?? cioè un elicottero non riuscirebbe a stabilizzarsi da solo avendo a disposizione un accelerometro?
14  International / Megatopic / Re: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo on: December 30, 2012, 01:00:03 pm
ah okok pensavo esistessero modelli preassemblati...grazie mille dei consigli!
al di là dei possibili danni, che poi sono presenti anche nella costruzione di un quadri, c'è davvero così tanta differenza tra il pilotare un elicottero e un quadricottero con solo il giroscopio??
15  International / Megatopic / Re: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo on: December 30, 2012, 10:32:11 am
Grazie mille, in effetti sospettavo che gli elicotteri fossero più complessi sia da costruire che da settare. Tutta quella meccanica mi fa paura xD
Infatti ho voluto chiedere a voi prima di fare cose azzardate.  Riguardo ai soldi, il progetto è tutto suo, io sto finanziando un'altro splendido hobby al momento, ma l'ho già avvertito dei possibili costi quindi sta a lui. Comunque gli dirò che è meglio prendere un elicottero già assemblato e capire come funziona quello ed imparare a farlo volare...non voglio vedermi scoppiare un elicottero in faccia :-S
avete consigli riguardo un elicottero rc già pronto all'uso per un principiante?
Pages: [1] 2 3 ... 41