Show Posts
|
|
Pages: 1 2 [3] 4 5 6
|
|
32
|
International / Français / Re: Fonction mathématique Coordonnées GPS
|
on: December 02, 2011, 12:21:14 pm
|
|
Pour des petites distances, une bonne approximation: 1 minute de latitude vaut 1852m (c'est le mille marin) 1 minute de longitude vaut 1852*cos(latitude) Donc D² = ((Lat2-Lat1) + ((Longi2-Longi1)*cos(Lat))²) * 1852
|
|
|
|
|
35
|
International / Français / Re: balances3d
|
on: November 18, 2011, 02:05:03 pm
|
C'est à dire que je fais ce montage (photo jointe) et que je récupère 4 canaux sur 0x68 et 4 autres sur 0x69? (Avant de cramer des composants, je préfère demander, n'est-ce-pas?) Merci
|
|
|
|
|
39
|
International / Français / Re: balance 3axes
|
on: October 15, 2011, 11:29:18 am
|
|
Bonjour,
J'ai refait les tests en paramettrant sur 16 bits, je récupère un entier et là, miracle, ça va seul. C'est pas satisfaisant sur le fond (j'ai vraiment pas tout compris) mais ça convient pour mon application. Voilà, je vais pouvoir brancher mes ponts comme ça, avec un gain à 8x
Merci encore pour votre aide.
|
|
|
|
|
40
|
International / Français / Re: balance 3axes
|
on: October 13, 2011, 12:46:54 pm
|
Oui, bon, je galère: j'ai compris  et corrigé mon code en fonction de tes conseils, al1fch: int i = 0; while(Wire.available()) { buffer[i] = Wire.receive(); i++; } Wire.endTransmission(); //Combine bytes into integer int signe = 1; long value = (long) buffer[0] << 16 | buffer[1] << 8 | buffer[2]; if (bitRead(value,17) == 1) //c'est négatif { bitWrite(value,17,0);// on laisse le bit de signe //!! avec bitWrite(value,16,0), ca regle le probleme, du moins avec ma pile, mais bon! signe = -1; value = ~ value;//on inverse chaque bit } bon, j'ai pas encore ajouté 1 (mode 'pinaillage' OFF) Vous ne pensez pas que la méthode de récupération de la valeur est peut-être en cause?
|
|
|
|
|
42
|
International / Français / Re: balance 3axes
|
on: October 12, 2011, 07:16:53 am
|
mode 'pinaillage' OFF Bon, c'était juste pour ma compréhension. C'est à la notion de "valeurs possibles" qu'il faut que je réfléchisse, plutôt que valeur max? C'est peut-être (sans doute) mon adaptation du code de JCW qui est en cause, mais il semble que celui-ci ne fait aucun effort pour connaître la polarité. Dans certains cas, ça peut être sans intérêt, mais pour mes ponts de jauges, j'ai besoin de la mesure signée. Il faudrait vérifier dans la doc du convertisseur comment sont codés les nombres négatifs c'est le MSB: 1-> négatif 0->positif 0101101010000101010110 1483094 1110000100000000100001 -1589281 Enfin, si j'ai bien compris. C'est peut-être un peu plus compliqué!?
|
|
|
|
|
43
|
International / Français / Re: balance 3axes
|
on: October 12, 2011, 05:20:24 am
|
Merci, c'est lumineux!  En toute rigueur, avec 17 bits, la valeur max est 131071? pour le signe et le msb, Pas de soucis. par contre, nouvelle surprise, quand je branche correctement ma pile, j'obtiens: 0101101010000101010110 1483094 bien, et en inversant la polarité 1110000100000000100001 -1589281  0.1V, ça me fait un peu de peine!
|
|
|
|
|
44
|
International / Français / Re: balance 3axes
|
on: October 11, 2011, 02:57:48 pm
|
Ça y est, j'ai monté le machin sur mon arduino uno. j'ai pompé sans tout bien comprendre: #define analogPlug 0x68 // analogPlug I2C address
#include <Wire.h> byte buffer[3]; // Array to store values
void setup() { Serial.begin(9600); Wire.begin(); wire.beginTransmission(analogplug); // Set analoogPlug settings // chanel1, continuous,18-bit, gain x1 wire.send(0x1c); wire.endTransmission(); }
void loop() { // Read the analogPlug
Wire.beginTransmission(analogPlug); Wire.requestFrom(analogPlug,3); // Read 3 bytes 18-bit i = 0; while(Wire.available()) { buffer[i] = Wire.receive(); i++; } Wire.endTransmission();
//Combine bytes into integer long value = (long) buffer[0] << 16 | buffer[1] << 8 | buffer[2]; long uvolt = round(value * 2048/131.072); // Print out what we have Serial.println(uvolt/10); delay(400); // wait for a second }
résultat: avec une vieille pile de1.5v, j'obtiens 147871, ce qui colle assez bien avec mon multimetre. en court circuit, j'ai un beau 0 mais en mettant la même pile à l'envers, tuedieux! j'ai -45312! j'essaie de comprendre avec le MSB, mais surtout, je n'ai pas encore bien compris pourquoi cette ligne: uvolt = round(value * 2048/131.072); sans aide, peut-être que j'y arriverais, mais un petit coup de main n'est-ce-pas....
|
|
|
|
|