Cours:Multimetre : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Programmation sur SimulIDE)
 
(31 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
=Planning=
 
=Planning=
  
*Lundi : 8h30-12h30 14h-17h
+
*Mercredi : 8h30-12h30  14h-17h
**dossier jusqu'à 15h
+
** montage et test de la carte / routage / programmation sur SimulIDE
**routage de 15h à 17h
+
*Jeudi : 8h30-12h30 14h-17h
*Mardi : montage de la carte
+
** étude théorique
*Mercredi : programmation
+
*Vendredi : 8h30-17h '''(prévoir le déjeuner sur place)'''
 +
** programmation : 8h30-14h30 
 +
** évaluation: 14h30-17h
 +
 
 +
=KiCad=
 +
* tutoriels KiCad
 +
Saisie de schéma
 +
 
 +
** https://www.youtube.com/watch?v=Aj7RpaX0Y7o
 +
Réalisation d'un PCB
 +
 
 +
** https://www.youtube.com/watch?v=bUd8mijAkp8
  
 
=Fichiers=
 
=Fichiers=
  
 +
'''*Fichiers Kicad'''
 +
**[[Media:2024 FichierEtudiantKiCad.zip]]
 +
'''*Fichiers SimulIDE'''
 +
**[[Media:TEST modes.sim1]]
 
*liens tinkercad
 
*liens tinkercad
 
**[https://www.tinkercad.com/things/jgsCCo0HmtU simulation pour ohmmètre]
 
**[https://www.tinkercad.com/things/jgsCCo0HmtU simulation pour ohmmètre]
Ligne 23 : Ligne 38 :
 
==Vérification du fonctionnement de la carte==
 
==Vérification du fonctionnement de la carte==
  
*Télécharger le fichier suivant et le {{Rouge|décompresser !}}
+
*Télécharger le fichier suivant qui contient le programme de test à uploader dans l'Arduino.:
[[Media:TestMultimetre.ino.hex.zip]]
+
[[Media:test_multimetre.ino.hex|test_multimetre.ino.hex]]
*Programmer dans un terminal avec la ligne de commande suivante :
+
 
  avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:testMultimetre.ino.hex:i
+
*Ouvrir un terminal (console en mode texte) avec la ligne de commande suivante :
 +
  avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Test_multimetre.ino.hex:i
 +
 
 +
 
 +
Une fois le programme téléchargé dans l'arduino nano, lancer un environnement Arduino IDE (sans programme) et démarrer le terminal de l'Arduino: le programme de test attend des commandes à travers un menu pour tester les différents composants de la carte.
 +
 
 +
Remarque 1  : le port USB0 est parfois à remplacer par le port USB1  et la vitesse de transmission (115200 bit/s) est parfois à positionner à la moitié (57600).
 +
 
 +
Remarque 2 : le deuxième fichier (.asm) contient le source du programme (en Assembleur!!). bon courage ;)
  
 
==Programmation sur tinkercad==
 
==Programmation sur tinkercad==
Ligne 32 : Ligne 55 :
 
https://www.tinkercad.com/things/dSQS8on1FL6
 
https://www.tinkercad.com/things/dSQS8on1FL6
  
 +
==Programmation sur SimulIDE==
 +
 +
réglages pour utiliser le compilateur Arduino avec SimulIDE : <br>
 +
 +
Aller dans les paramètres (Settings) de SimulIDE et effectuer le paramétrage proposé dans le lien suivant pour pouvoir utiliser le compilateur Arduino avec SimulIDE. <br>
 +
 +
 +
**[[Media:Arduino sous SimulIDE.jpg]]
 +
 +
==Editeur série==
 +
 +
<source lang=cpp>
 +
 +
void setup()
 +
{
 +
  Serial.begin(9600);
 +
}
 +
void loop()
 +
{
 +
  Serial.println("running");
 +
  delay(1000);
 +
}
 +
 +
</source>
  
==Fonction affiche==
+
==Interruption associée à l'appui sur un bouton==
 +
 
 +
<source lang=cpp>
 +
 
 +
void maFonction()
 +
{
 +
  // actions à réaliser à chaque appui
 +
}
 +
 
 +
void setup()
 +
{
 +
  attachInterrupt(numInterruption,maFonction,typeDeChangement);
 +
  // numInterruption : 0 ou 1 selon la broche utilisée ( D2 ou D3 )
 +
  // typeDeChangement : FALLING ou RISING ou CHANGE
 +
}
 +
 
 +
void loop()
 +
{
 +
  // si (mode 1)  : mesure de résistance
 +
  // alors …
 +
  // sinon si (mode 2) : mesure de tension
 +
  // alors …
 +
  // sinon si (mode 3) : mesure de courant
 +
  // alors …
 +
}
 +
 
 +
</source>
 +
 
 +
==Fonction affiche7sgt==
  
 
<source lang=cpp>
 
<source lang=cpp>
Ligne 46 : Ligne 121 :
 
affiche7sgt(i);          // permettra d'afficher le chiffre i (entre 0 et 9 ! )
 
affiche7sgt(i);          // permettra d'afficher le chiffre i (entre 0 et 9 ! )
 
affiche7sgt(n%10);        // permettra d'afficher la valeur des unités de n
 
affiche7sgt(n%10);        // permettra d'afficher la valeur des unités de n
 +
</source>
 +
 +
==Fonction multiplexage==
 +
 +
<source lang=cpp>
 +
 +
#include <TimerOne.h>
 +
volatile int valeur=0; // volatile est nécessaire lorsqu'on utilise attachInterrupt
 +
int digit=1;          // variable qui indique sur quel digit on affiche la valeur
 +
 +
void multiplexage()
 +
{
 +
    // la variable digit change de valeur à chaque exécution de la fonction (de 1 à 4)
 +
    // si        digit vaut 1, on affiche la valeur des unités de la variable valeur
 +
    // sinon si  digit vaut 2, on affiche la valeur des dizaines de la variable valeur
 +
    // ...
 +
 +
}
 +
 +
void setup() {
 +
  //initialiser les choses à initialiser !
 +
  //mise en place de l'action périodique
 +
  Timer1.initialize(5000);
 +
  Timer1.attachInterrupt(multiplexage);
 +
}
 +
 +
void loop()
 +
{
 +
    valeur = valeur + 1 ;
 +
    delay(100);
 +
}
 
</source>
 
</source>

Version actuelle datée du 4 novembre 2025 à 11:17

Planning

  • Mercredi : 8h30-12h30 14h-17h
    • montage et test de la carte / routage / programmation sur SimulIDE
  • Jeudi : 8h30-12h30 14h-17h
    • étude théorique
  • Vendredi : 8h30-17h (prévoir le déjeuner sur place)
    • programmation : 8h30-14h30
    • évaluation: 14h30-17h

KiCad

  • tutoriels KiCad

Saisie de schéma

Réalisation d'un PCB

Fichiers

*Fichiers Kicad

*Fichiers SimulIDE

Programmation

Vérification du fonctionnement de la carte

  • Télécharger le fichier suivant qui contient le programme de test à uploader dans l'Arduino.:

test_multimetre.ino.hex

  • Ouvrir un terminal (console en mode texte) avec la ligne de commande suivante :
avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Test_multimetre.ino.hex:i


Une fois le programme téléchargé dans l'arduino nano, lancer un environnement Arduino IDE (sans programme) et démarrer le terminal de l'Arduino: le programme de test attend des commandes à travers un menu pour tester les différents composants de la carte.

Remarque 1  : le port USB0 est parfois à remplacer par le port USB1 et la vitesse de transmission (115200 bit/s) est parfois à positionner à la moitié (57600).

Remarque 2 : le deuxième fichier (.asm) contient le source du programme (en Assembleur!!). bon courage ;)

Programmation sur tinkercad

https://www.tinkercad.com/things/dSQS8on1FL6

Programmation sur SimulIDE

réglages pour utiliser le compilateur Arduino avec SimulIDE :

Aller dans les paramètres (Settings) de SimulIDE et effectuer le paramétrage proposé dans le lien suivant pour pouvoir utiliser le compilateur Arduino avec SimulIDE.


Editeur série

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  Serial.println("running");
  delay(1000);
}

Interruption associée à l'appui sur un bouton

void maFonction()
{
   // actions à réaliser à chaque appui
}

void setup()
{
   attachInterrupt(numInterruption,maFonction,typeDeChangement);
   // numInterruption : 0 ou 1 selon la broche utilisée ( D2 ou D3 )
   // typeDeChangement : FALLING ou RISING ou CHANGE
}

void loop()
{
   // si (mode 1)   : mesure de résistance
   // alors …
   // sinon si (mode 2) : mesure de tension
   // alors …
   // sinon si (mode 3) : mesure de courant
   // alors …
}

Fonction affiche7sgt

// ! bien déclarer les broches en sorties !
void affiche7sgt(uint8_t n)
{
  PORTB=(PORTB&0xf0)|(n&0x0f);
}

// exemple d'utilisation
affiche7sgt(2);           // permettra d'afficher la valeur 2
affiche7sgt(i);           // permettra d'afficher le chiffre i (entre 0 et 9 ! )
affiche7sgt(n%10);        // permettra d'afficher la valeur des unités de n

Fonction multiplexage

#include <TimerOne.h>
volatile int valeur=0; // volatile est nécessaire lorsqu'on utilise attachInterrupt
int digit=1;           // variable qui indique sur quel digit on affiche la valeur

void multiplexage()
{
    // la variable digit change de valeur à chaque exécution de la fonction (de 1 à 4)
    // si         digit vaut 1, on affiche la valeur des unités de la variable valeur
    // sinon si   digit vaut 2, on affiche la valeur des dizaines de la variable valeur
    // ...

}

void setup() {
  //initialiser les choses à initialiser !
  //mise en place de l'action périodique
  Timer1.initialize(5000);
  Timer1.attachInterrupt(multiplexage);
}

void loop()
{
     valeur = valeur + 1 ;
     delay(100);
}