Bonjour,
Je suis en pleine découverte de l'arduino
J'aurais aimer savoir comment faire un compteur de vitesse ?
merci
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
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
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
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....
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 ?
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
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 ? 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 ?