Tachymètre Arduino

Problème d'affichage

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

c’est temps si, je découvre arduino. magnifique. Mon projet est de construire une scie circulaire 7’’ dont le plateau coulisse. J’aimerai gérer précisément la vitesse de rotation de la lame de scie circulaire. Mes recherche mon conduits sur le tachymètre via arduino. Je ne vous cache pas que je reprends un labo présenter sur youtube. How to make Arduino based Digital Tachometer │RPM Counter

J’ai suivis le schéma de connexion schéma voici ma connexion image 0 image 1

voici la Arduino Nano Mega328P image 2

Le code est le suivant :`

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,6,5,4,3) ;

float value=0 ;
float rev=0 ;
int rpm ;
int oldtime=0 ;
int time ;

void isr() //interrupt service routine
{
rev++ ;
}

void setup()
{
lcd.begin(16,2) ;                //initialize LCD
attachInterrupt(0,isr,RISING) ;              //attaching the interrupt
}

void loop()
{
delay(1000) ;
detachInterrupt(0) ;           //detaches the interrupt
time=millis()-oldtime ;        //finds the time 
rpm=(rev/time)*60000 ;         //calculates rpm
oldtime=millis() ;             //saves the current time
rev=0 ;
lcd.clear() ;
lcd.setCursor(0,0) ;
lcd.print("___TACHOMETER___") ;
lcd.setCursor(0,1) ;
lcd.print(     rpm) ;
lcd.print(" RPM") ; 
lcd.print("   ") ;
attachInterrupt(0,isr,RISING) ;

}

`

Une fois le code vérifier puis téléversé

Type de carte : Nano

Proceseur : ATMega328

Port : 14 (pour moi)

Lors du téléversement, les diodes (rouge et la 2ème verte) clignote durant l’écriture. J’en conclus que c’est ok pour cette étape.

Je débranche USB puis je branche sous 9v le toute. L’écran n’affiche que ligne (barre de carré) alors que la configuration est bien sur (16,2)

Résultat négatif

Après mainte vérification du câblage et test de continuité, je cale à saisir le problème.

Auriez-vous une idée, indication pour les plus chevronnés

Merci d’avance de votre aide

`

+0 -0

Salut,

Alors j’ai regardé tes schémas et je pense qu’il est bien déjà de travailler avec les pins de ta carte en tête.

Image utilisateur

Je ne suis pas le membre le plus expérimenté mais je vais essayer de t’aider.

Déjà, sur ta breadboard tu as des lignes entières disponibles pour l’alimentation, mais tu ne semble pas t’en servir. ça fait un circuit plus propre. Ce sont les deux lignes rouges et bleus avec marqué + et - : tu amènes ta masse et ton alimentation sur ces lignes et après tu peux te placer sur ces lignes pour alimenter ce que tu veux.

De ce que je peux voir, il me semble que tu as mélangé un peu tout les pins de data et ils ne sont pas reliés au bon endroit sur la carte, ce qui expliquerait pourquoi tu as des carrés blancs.

Une autre bonne pratique est de relié tout ce que tu n’utilises pas comme pins du LCD à la masse.

Voici un schéma trouvé sur le site de l’arduino: Image utilisateur

Essaye de le refaire en repartant de la, et évite d’avoir des fils qui se croisent aussi.

PS: met tes images dans la balise image : ![LEGENDE](URL image) c’est plus pratique pour nous :)

Bon courage !

+0 -0

tes images ne marchent pas parce que tu n’as pas un lien direct vers l’image. tu dois clique droit sur ton image et faire copier l’adresse de l’image: c’est ce lien là que tu dois mettre entre parenthèses

Maintenant, c’est plus propre !

En fait tu t’es encore trompé. Si tu regardes mon schema que je t’ai donné, ça fait:

  • D2 (arduino) -> DB7 (LCD)

  • D3 (arduino) -> DB6 (LCD)

  • D4 (arduino) -> DB5 (LCD)

  • D5 (arduino) -> DB4 (LCD)

+0 -0

je suis revenu à la configuration de base qui correspond à un branchement 4bits.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
```arduino
#include <LiquidCrystal.h>

const int RS=12; //declaration constante de broche
const int E=11; //declaration constante de broche

const int D7=3; //declaration constante de broche
const int D6=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D4=6; //declaration constante de broche

//Vérifier les broches !
LiquidCrystal lcd(RS,E,D7,D6,D5,D4); //liaison 4 bits de données

``` puis ponté les PINS LCD DB0 à DB3 sur la masse PIN LCD VSS ou PIN Aduino GNG entre D2 et RST. Toujours les fameux carré.

la commnade LCD.begin(16,2); calibre l’écran –> 16 digits pour 2 lignes

+0 -0

Je me suis trompé en écrivant lcd begin : P Tu as quand même une boucle avec un afffichage dedans ou pas ?

essaye de tourner ton potentiomètre aussi, j’ai souvenir d’avoir eu un problème avec ça aussi.

Je regarde pendant ce temps quelles peuvent être les autres sources de ton problème.

+0 -0

l’affichage donne uniquement des rectangle blanc que se soit en position bas au haut du potentiomètre.je tourne le potentiomètre à chaque test.

j’ai une question de null. une fois le téléversement fait, il ne reste plus qu’à débrancher USb puis à alimenter?

le code est le suivant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <LiquidCrystal.h>

const int RS=12; //declaration constante de broche
const int E=11; //declaration constante de broche

const int D7=3; //declaration constante de broche
const int D6=4; //declaration constante de broche
const int D5=5; //declaration constante de broche
const int D4=6; //declaration constante de broche

//Vérifier les broches !
LiquidCrystal lcd(RS,E,D7,D6,D5,D4); //liaison 4 bits de données

float value=0 ;
float rev=0 ;
int rpm ;
int oldtime=0 ;
int time ;

void isr() //interrupt service routine
{
rev++ ;
}

void setup()
{
lcd.begin(16,2) ;                //initialize LCD
attachInterrupt(0,isr,RISING) ;              //attaching the interrupt
}

void loop()
{
delay(1000) ;
detachInterrupt(0) ;           //detaches the interrupt
time=millis()-oldtime ;        //finds the time 
rpm=(rev/time)*60000 ;         //calculates rpm
oldtime=millis() ;             //saves the current time
rev=0 ;
lcd.clear() ;
lcd.setCursor(0,0) ;
lcd.print("___TACHOMETER___") ;
lcd.setCursor(0,1) ;
lcd.print(     rpm) ;
lcd.print(" RPM") ; 
lcd.print("   ") ;
attachInterrupt(0,isr,RISING) ;

}
+0 -0

aujourd’hui, j’ai vérifié toutes les soudures (LCD + Nano) ainsi que le test de continuité. j’ai fait le test avec cette configuration de connexion :connexion selon vidéo youtube

J’ai fait les test selon la connexion 4bits selon arduinoconnexion selon 4bits arduino

Voici le récapitulatif des connexions (datas "test1" - "test2") tableau connexions test1 & test2

J’ai aussi mis un potentiomètre type 3296W 103 10k et changer aussi le 3362P 200Ohm

Le code (j’ai changé la correspondance des PINS datas selon le test1 / test2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <LiquidCrystal.h>

const int RS=12; //declaration constante de broche
const int E=11; //declaration constante de broche

const int D7=2; //declaration constante de broche
const int D6=3; //declaration constante de broche
const int D5=4; //declaration constante de broche
const int D4=5; //declaration constante de broche

//Vérifier les broches !
LiquidCrystal lcd(RS,E,D7,D6,D5,D4); //liaison 4 bits de données

float value=0 ;
float rev=0 ;
int rpm ;
int oldtime=0 ;
int time ;

void isr() //interrupt service routine
{
rev++ ;
}

void setup()
{
lcd.begin(16,2) ;                //initialize LCD
lcd.print("test") ;
attachInterrupt(0,isr,RISING) ;              //attaching the interrupt
}

void loop()
{
delay(1000) ;
detachInterrupt(0) ;           //detaches the interrupt
time=millis()-oldtime ;        //finds the time 
rpm=(rev/time)*60000 ;         //calculates rpm
oldtime=millis() ;             //saves the current time
rev=0 ;
lcd.clear() ;
lcd.setCursor(0,0) ;
lcd.print("___TACHOMETER___") ;
delay(1000) ;
lcd.setCursor(0,1) ;
lcd.print(     rpm) ;
lcd.print(" RPM") ; 
lcd.print("   ") ;
delay(1000) ;
attachInterrupt(0,isr,RISING) ;

}

toujours c’est fameux carré blanc.

+0 -0

Honnêtement j’ai l’impression que ton LCD est le problème. Tu avais un bon branchement et un bon code. Tu as changé le potentiomètre.

Est ce que tu as une autre carte arduino classique pour essayer ?

Où as tu acheté ton écran ? Est ce qu’il ne semble pas endommagé ?

Tu peux laisser l’alimentation via usb, tu n’es pas obligé de débranché. C’est juste que tu ne pourras pas avoir de grosse charge. Ex: moteur (de toute façon dans tout les cas une sortie arduino ne peut sortir que 50mA max)

Désolé, la réparation de panne matériel à distance c’est difficile :(

+0 -0

Ah oui.. Aliexpress c’est pas cher mais des fois on ne sait pas sur quoi on tombe. J’ai lu avant hier quelqu’un qui avait commandé des atmega, a l’intérieur c’était tout autre chose.. Bonne chose pour détecter que c’est latmega qui est defaillant !

Bravo pour ta persévérance sinon :)

+0 -0

il reste plus qu’à remplacer l’écran pour être sur du bon branchement & code. comme je vis en thailande depuis peu, il me faut passer par aliexpress (plus rapide), sinon je dois monter sur BKK (escence) ça chère… je donne suite une fois le nouvel écran reçu. merci pour ton aide

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte