Compteur vitesse

Bonjour,
Je suis en pleine découverte de l'arduino :slight_smile:
J'aurais aimer savoir comment faire un compteur de vitesse ?
merci :wink:

deja explique, ton projet, un compteur de vitesse pour velo? voiture? a pied? en avion? ou soucoupe volante?

la vitesse se compte avec la rotation d'un objet, d'une roue par exemple, dont on connait le diamètre en mesurant le nombre de révolution dans un temps donné, on peut en connaitre la vitesse circonférencielle

il y a plusieur maniere de mesurer, avec un capteur optique, une fourche optique, ou un capteur de lumiere ou capteur magnetique, ou cpateur effet hall

Pour mesurer les tours/minutes (ou seconde) :

http://www.arduino.cc/playground/Main/ReadingRPM

pour rappel un tour de roue correspond à un déplacement donné (x).
La durée entre 2 impulsions te donnera le temps pour parcourir la distance x donc tu as la vitesse.
v = x / t

et pour finir tu as mille et un exemple sur google

alors c'est pour un compteur de vitesse sur une voiture :slight_smile:
sauf que je n'arrive pas a savoir quel capteur prendre.
Je compte le mettre sur l'axe du moyeu qui fait tourner la roue

gurvandu22:
alors c'est pour un compteur de vitesse sur une voiture :slight_smile:
sauf que je n'arrive pas a savoir quel capteur prendre.
Je compte le mettre sur l'axe du moyeu qui fait tourner la roue

bonjour,
quelle voiture?
ca serait pas plus simple de se repiquer ailleurs que sur la roue?

j'aurais fait un test sur une voiture ici une vielle citroen ax pour ensuite l'installer sur un tracteur agricole qui ne possède pas de compteur digital.
je comptai mettre le capteur sur l'arbre de sortie de boite. (pour la citroen)

bonne soirée :slight_smile:

sur l'ax de mémoire, il y a le cable tachimètre qui sort de la boite.
tu peux faire une cage et mettre ton montage dedans par exemple.

en general toutes les voitures ont un cable pour connaitre la vitesse de la voiture...

on peut aider, mais stp soit plus precis dans tes demandes, car un capteur de vitesse, c'est vague....
c'est quoi ton tracteur? tu as des infos sur ton tracteur?

surtout que les tracteurs et voiture, c'est complètement différent, la technologique des tracteurs et voitures sont différentes surtout il y a 30ans. Maintenant ça se ressemble beaucoup.

A ta place, et surtout pour un tracteur, je me ferais pas trop c.... :slight_smile:
shiled gps et hop, tu as la vitesse sans te prendre la tête pour savoir où te repiquer.

bonjour,
c'est un IH 745 des années 85 donc pas de compteur précis sauf que pour l’épandage d'engrais par exemple ils faut rouler a une vitesse donnée pour éviter les gaspillage d'ou mon choix de faire un compteur précis.
Ca ne s’arrête pas la j'aimerais bien faire un compte tour digital et un compteur tour de prisse de force.
Pour ce qui est de moderniser la commande du relevage je vais installer un servomoteur associée a un potentiomètre (procédé relativement simple).

Pour retourner au sujet principal il n'y a pas de tachymètre sur la boite du tracteur. Le gps est assez précis et réactif ? :slight_smile:

au passage voici le code pour le servomoteur et le potentiomètre les led's sont la pour matérialiser la hauteur du relevage
code:

#include <Servo.h>
Servo Monservo;
int potentiometre = A0;
int valeur;

const int L1 = 2;
const int L2 = 3;
const int L3 = 4;
const int L4 = 5;
const int L5 = 6;
const int L6 = 7;
const int L7 = 8;
const int L8 = 9;
const int L9 = 10;
const int L10 = 11;

void setup()

{
Monservo.attach(7);

pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
pinMode(L9, OUTPUT);
pinMode(L10, OUTPUT);
}

void loop()
{

valeur = analogRead (potentiometre);
valeur = map(valeur, 0, 1023, 0, 179);
Monservo. write(valeur);
delay(15);

if (015) digitalWrite(L1, HIGH);
else digitalWrite(L1, LOW);

if (1530) digitalWrite(L1 + L2, HIGH);
else digitalWrite(L1 + L2, LOW);

if (3045) digitalWrite(L1 + L2 + L3, HIGH);
else digitalWrite(L1 + L2 + L3, LOW);

if (4560) digitalWrite(L1 + L2 + L3 + L4, HIGH);
else digitalWrite(L1 + L2 + L3 + L4, LOW);

if (6075) digitalWrite(L1 + L2 + L3 + L4 + L5, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5, LOW);

if (7590) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6, LOW);

if (90105) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7, LOW);

if (105120) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8, LOW);

if (120135) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9, LOW);

if (135150) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9 + L10, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9 + L10, LOW);

}

TOUTES LES CRITIQUES SONT LES BIENVENUES :slight_smile:

code entre balise code, merci.
oui le gps est réactif et précis.

tu as essayé de compiler ton code?

comment ça code entre balise code ?
oui et ça marche

entre les balise [.code][./code] sans les points .

#include <Servo.h>
Servo Monservo;
int potentiometre = A0;
int valeur;


const int L1 = 2; 
const int L2 = 3;
const int L3 = 4; 
const int L4 = 5;
const int L5 = 6;
const int L6 = 7;
const int L7 = 8;
const int L8 = 9;
const int L9 = 10;
const int L10 = 11;




void setup()

{
Monservo.attach(7);


pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT); 
pinMode(L3, OUTPUT); 
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
pinMode(L9, OUTPUT);
pinMode(L10, OUTPUT);
}



void loop() 
{

valeur = analogRead (potentiometre);
valeur = map(valeur, 0, 1023, 0, 179);
Monservo. write(valeur);
delay(15);

if (0<valeur>15) digitalWrite(L1, HIGH); 
else digitalWrite(L1, LOW);

if (15<valeur>30) digitalWrite(L1 + L2, HIGH); 
else digitalWrite(L1 + L2, LOW);

if (30<valeur>45) digitalWrite(L1 + L2 + L3, HIGH); 
else digitalWrite(L1 + L2 + L3, LOW);

if (45<valeur>60) digitalWrite(L1 + L2 + L3 + L4, HIGH); 
else digitalWrite(L1 + L2 + L3 + L4, LOW);

if (60<valeur>75) digitalWrite(L1 + L2 + L3 + L4 + L5, HIGH); 
else digitalWrite(L1 + L2 + L3 + L4 + L5, LOW);

if (75<valeur>90) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6, HIGH); 
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6, LOW);

if (90<valeur>105) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7, HIGH); 
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7, LOW);

if (105<valeur>120) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8, HIGH); 
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8, LOW);

if (120<valeur>135) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9, LOW);

if (135<valeur>150) digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9 + L10, HIGH);
else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9 + L10, LOW);



}

c'est mieux ? :slight_smile: merci ^^'

tu l'as compilé, mais l'as tu essayé?

compiler oui essayer non
j'attend l'arduino qui arrive d'ici fin du mois

je ne pensais pas qu'une ligne comme celle ci se compilerait:

else digitalWrite(L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8, LOW);

de toutes les façons, si tu considères le 1er if pour une valeur de 0 à 15, tu allumes une led

et dès le if suivant, avec le else, tu vas éteindre ta led.
de meme pour les else des if suivants...

tu ne pense pas que ça fonctionnerait ?