Logs
Consultez les logs.
OK
Liste des données
Consultez la liste des données.
OK
Loading...
Formulaire
Saisissez vos données.
Enregistrer
Annuler

Vues
319

Introduction


ReadyScope est un oscilloscope à échantillonnage à 4 canaux (tensions de 0 à 5V), avec des fréquences jusqu'à 3kHz. Il a été réalisé à base de la carte Arduino. Il dispose d'un générateur de signal PWM (signal rectangulaire) et d'une sortie d'onde carrée (signal carré). Il peut également identifier automatiquement la valeur de la résistance ou du condensateur à l'aide de 3 échelles pour une meilleure approximation. Il a été testé sur l'ordinateur à base du simulateur de circuits électroniques Proteus. Il communique les échantillons de données à l'ordinateur à travers le port série UART. Il présente les signaux sur l'ordinateur grâce une IHM développée à base du langage de programmation Processing.

image.png


Création d'un projet Arduino


// Google Chrome (Télécharger l'éditeur Arduino)
https://www.arduino.cc/en/software
Software > Download options > Windows win 10 and never, 64 bits
Just Download > Just Download

// Windows (Installer l'éditeur Arduino)
Double clic > arduino-ide_2.3.4_Windows_64bit.exe > J'accepte
Juste pour moi (admins) > Suivant
Dossier d'installation > C:\Users\admins\AppData\Local\Programs\Arduino IDE
Cocher > Lancer Arduino IDE
Installer > Fermer
Autoriser > Autoriser
Oui > Installer > Installer > Installer > Installer
Oui

// Google Chrome (Télécharger le simulateur Proteus)
https://www.labcenter.com/
Circuit Simulation Software > Download Now
Download Proteus Professional Demonstration
Email > youremail@domain.com
Cocher > Receive our demo resource mailchimp emails
Submit
...
Aller dans la boite email
Cliquer sur le bouton > Proteus Demo Download
...
Le téléchargement démarre

// Windows (Installer le simulateur Proteus)
Double clic > prodemo.exe > Oui > Next
Cocher > I accept the terms of this agreement > Next > Typical
Run Proteus 8 Demonstration
...
L'installation démarre

// Arduino (Créer un projet)
File > New Project

// Arduino (Enregistrer le projet)
Tools > Save As
Emplacement > v11
Nom du fichier > ReadyScope
Enregistrer

// Arduino (Sélectionner une carte)
Tools > Board > Arduino AVR Boards > Arduino UNO
Emplacement > v11
Nom du fichier > ReadyScope
Enregistrer

// Arduino (Autoriser les informations de compilation)
File > Preferences
Show verbose output during > Cocher > Compile
OK

// Arduino (Editer le programme Arduino)
int led = 13;
...
void setup() {
  pinMode(led, OUTPUT);
}
...
void loop() {
  digitalWrite(led, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  delay(500);
}

// Arduino (Compiler le projet)
Sketch > Verify/Compile
...
Identifier > "C:\\Users\\admins\\AppData\\Local\\arduino\\sketches\\B5DB2962406473CC2FF3A779F9052EFC/ReadyScope.ino.hex

// Windows (Configurer le fichier HEX)
Copier > B5DB2962406473CC2FF3A779F9052EFC/ReadyScope.ino.hex
Coller > Proteus/ReadyScope.ino.hex

// Google Chrome (Télécharger Arduino Library for Proteus)
https://goalmdcat.com/arduino-uno-library-for-proteus/
Download Arduino UNO Library for Proteus

// Windows (Configurer Arduino Library for Proteus)
Copier > ArduinoUnoTEP.LIB
Copier > ArduinoUnoTEP.IDX
Coller > C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\LIBRARY

// Proteus (Créer un projet Proteus)
File > New Sketch
Name > ReadyScope.pdsprj
Path > v11
Cocher > New Project
Next > DEFAULT > Next
Cocher > Do not create a PCB layout
Next
Cocher > No Firmware Project
Next > Finish

// Proteus (Créer le schéma électrique)
Schematic Capture
P > Arduino UNO R3 > OK
P > LED-YELLOW > OK
P > RES > OK

image.png

// Proteus (Configurer le fichier HEX)
Schematic Capture
Arduino UNO R3 > Clic droit > Edit Properties
Program File > ReadyScope.ino.hex
OK

// Proteus (Démarrer le simulateur)
Schematic Capture
Run the simulation
...
La diode LED se met à clignoter toutes les (500ms) sur la broche (13).
...

image.png

// Google Chrome (Accéder aux ressources en ligne)
...
// setup()
> https://www.arduino.cc/reference/fr/language/structure/sketch/setup/
...
// loop()
> https://www.arduino.cc/reference/fr/language/structure/sketch/loop/
...
// pinMode()
> https://docs.arduino.cc/language-reference/en/functions/digital-io/pinMode/
...
// digitalWrite()
> https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalwrite/
...
// delay()
> https://docs.arduino.cc/language-reference/en/functions/time/delay/
...


Initialisation du générateur PWM (MLI)


// Arduino (Configurer la librairie TimerOne)
Sketch > Include Library > Manage Libraries
Barre de recherche > TimerOne
TimerOne > Install

// Arduino (Editer le programme Arduino)
#include <TimerOne.h>
...
unsigned long pwmP = 20000;
byte pwmPon = 10;
...
void setup() {
  ...
  pinMode(10, OUTPUT);
  Timer1.initialize(pwmP);
  Timer1.pwm(9, map(pwmPon, 0, 100, 0, 1023));
  Timer1.attachInterrupt(callback);
  ...
}
...
void loop() {
  // code soruce
}
...
void callback(){
  digitalWrite(10, digitalRead(10)^1);
}

// Arduino (Commenter une portion de code)
Sélectionner la portion de code
Edit > Comment/Uncomment

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un signal carré sur la broche (10).
Chaque phase du signal carré (Ton, Toff) dure (20ms) soit (20.000µs) soit (50Hz).
...
La carte Arduino affiche un signal PWM sur la broche (9).
Le signal PWM a une période de (20ms) soit (20.000µs) soit (50Hz).
...

image.png

image.png

// Google Chrome (Accéder aux ressources en ligne)
...
// TimerOne
// Timer1.initialize()
// Timer1.pwm()
// Timer1.attachInterrupt()
> https://www.pjrc.com/teensy/td_libs_TimerOne.html
...
// PWM (Pulse Width Modulation) - MLI (Modulation Largeur Impulsions)
> https://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion
...


Initialisation du port série (UART)


// Arduino (Editer le programme Arduino)
...
#define versao "v1.5"
...
void setup() {
  ...
  Serial.begin(9600);
  Serial.println();
  Serial.print(">init=");
  Serial.println(versao);
  ...
}
...

// Proteus (Configurer le débit en bauds UART)
Virtual Terminal > Clic droit > Edit Properties
Baude Rate > 9600 > OK

// Proteus (Exclure l'oscilloscope de la simulation)
Oscilloscope > Clic droit > Edit Properties
Cocher > Exclude from Simulation > OK

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message d'initialisation sur le port série du terminal virtuel.

image.png

image.png

// Google Chrome (Accéder aux ressources en ligne)
...
// Serial.begin()
> https://docs.arduino.cc/language-reference/en/functions/communication/serial/begin/
...
// Serial.println()
> https://docs.arduino.cc/language-reference/en/functions/communication/serial/println/
...
// Serial.print()
> https://docs.arduino.cc/language-reference/en/functions/communication/serial/print/
...
// Port série - UART - RS232
> https://fr.wikipedia.org/wiki/RS-232
...


Initialisation du sélecteur de multiplexeur (2-bit)


// Arduino (Editer le programme Arduino)
...
#define pinA 7
#define pinB 8
...
byte entrada = 0;
...
void setup() {
  ...
  pinMode(pinA, OUTPUT);
  pinMode(pinB, OUTPUT);
  selecionar(2);
  ...
}
...
void selecionar(byte e){
  entrada=e;
  digitalWrite(pinA, bitRead(entrada, 0));
  digitalWrite(pinB, bitRead(entrada, 1));
}

// Proteus (Configurer la taille des pas de la grille)
View > Snap 50th

// Proteus (Ajouter un texte)
2D Graphics Text Mode (A)
C > COMPONENT
Cliquer sur une zone vide
String > S1
Horizontal > Center
Vertical > Middle
Global Style > COMPONENT
Height > 0.1in
OK

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche une valeur de sélection d'un multiplexeur sur 2 bits (S1, S0) connecté aux broches (8, 7).
...
La carte Arduino affiche une valeur décimal (2) soit une valeur binaire (10) qui correspond à la sélection la sortie (2) du multiplexeur.
...

image.png

// Google Chrome (Accéder aux ressources en ligne)
...
// bitRead()
> https://docs.arduino.cc/language-reference/en/functions/bits-and-bytes/bitRead/
...


Initialisation du port série virtuel


// Google Chrome (Télécharger Virtual Serial Port Emulator VSPE)
https://eterlogic.com/Products.VSPE_Download.html
Download VSPE 64 bit (x64)

// Windows (Installer Virtual Serial Port Emulator VSPE)
SetupVSPE_64_1.5.1.191.zip > Extraire
SetupVSPE_64.msi > Next
Cocher > I accept the terms in the License Agreement
Next 
Destination Folder > C:\Program Files\Eterlogic Software\Virtual Serial Ports Emulator (x64)\
Next > Installer > Oui
Finsih

// VSPE (Créer une paire de ports série)
Device > Create new device
Device type > Virtual Pair
Suivant
Virtual serial port 1 > COM1
Virtual serial port 2 > COM2
Terminer

// Windows (Afficher les ports série)
Bouton Windows > Gestionnaire de périphériques
Ports (COM et LPT)

image.png

// Google Chrome (Télécharger RealTerm)
https://sourceforge.net/projects/realterm/files/
Download Last Version

// Windows (Installer RealTerm)
Realterm_2.0.0.70_Signed_Wrapper_setup.exe > Double clic > Oui
Next > Next
Destination Folder > C:\Program Files (x86)\BEL\Realterm\
Next > Install > Finish

// RealTerm (Configurer le port série)
Port
Baud > 9600
Port > 2=\VSPE_SERIAL2
Change
...

// Proteus (Configurer le connecteur port série physique)
COMPIM > Clic droit > Edit Properties
Pysical Port > COM1
Pysical Baud Rate > 9600
Virtual Baud Rate > 9600
Terminer

// Arduino (Editer le programme Arduino)
...
byte entrada = 0;
...
void loop() {
  lerSerial();
}
...
void lerSerial() {
  char c;
  ...
  if (Serial.available() > 0) {
    c = Serial.read();
    switch (c) {
      case 'h':
        printHelp();
        break;
      default:
        Serial.print("erro c=");
        Serial.println(c, HEX);
        break;
    }
  }
}
...
void printHelp() {
  Serial.println("-----------------------");
  Serial.print("! ReadyScope ");
  Serial.print(versao);
  Serial.println(" - youremail@domain.com !");
  Serial.println("-----------------------");
}
...

// Arduino (Refactoriser un symbole)
Clic droit sur le symbole > Change All Occurrences
versao > version

// Arduino (Formater le code)
Clic droit sur le code > Formater Document

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur la touche (h) du terminal > Pour envoyer la commande (h)
...
La carte Arduino affiche le message d'aide sur le terminal.
...

image.png

image.png

// Google Chrome (Accéder aux ressources en ligne)
...
// Serial.available()
> https://docs.arduino.cc/language-reference/en/functions/communication/serial/available/
...
// Serial.read()
> https://docs.arduino.cc/language-reference/en/functions/communication/serial/read/
...


Initialisation du délai de lecture des données (dt)


// Arduino (Editer le programme Arduino)
...
unsigned int dt = 4;
char unidade='m';
...
void lerSerial() {
  char c;
  int k;
  ...
  if (Serial.available() > 0) {
    c = Serial.read();
    switch (c) {
      ...
      case 'd':
        k = Serial.parseInt();
        if (k >= 1 && k <= 30000) {
          dt = k;
        }
        c = Serial.read();
        if (c == 'u' || c == 'm') {
          unidade = c;
        } else {
          unidade = 'm';
          dt *= 1000;
        }
        Serial.print("dt=");
        Serial.print(dt);
        Serial.println(unidade);
        break;
      ...
    }
  }
}
...

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (d100m) du terminal > Pour envoyer la commande (d)
...
La carte Arduino met la valeur (100) dans la varibale (dt).
La carte Arduino met la valeur (m) dans la varibale (unidade).
...
La carte Arduino configure l'intervalle d'acquisition des données à une durée de (100ms).
...
Par défaut, la carte Arduino utilise un intervalle d'acquisition des données d'une durée de (4000ms) soit (4s).
...

image.png

image.png

// Google Chrome (Accéder aux ressources en ligne)
...
// Serial.parseInt()
> https://www.arduino.cc/reference/tr/language/functions/communication/serial/parseint/
...


Initialisation du nombre de lecture (q)


// Arduino (Editer le programme Arduino)
...
int q = 100;
int qmax=100;
...
void lerSerial() {
  ...
  if (Serial.available() > 0) {
    c = Serial.read();
    switch (c) {
      ...
      case 'q':
        k = Serial.parseInt();
        c = Serial.read();
        if (k >= 1 && k <= qmax) {
          q = k;
        }
        Serial.print("q=");
        Serial.println(q);
        break;
      ...
    }
  }
}
...

image.png

image.png

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (q50) du terminal > Pour envoyer la commande (q)
...
La carte Arduino met la valeur (50) dans la varibale (q).
...
La carte Arduino configure le nombre de lecture des données à une valeur de (50).
...
Par défaut, la carte Arduino utilise un nombre de lecture des données d'une valeur de (100).
...


Initialisation des canaux actifs (Ch)


// Arduino (Editer le programme Arduino)
...
boolean Ch[] = { true, true, true, true };
...
void lerSerial() {
  ...
  char c2;
  ...
  if (Serial.available() > 0) {
    c = Serial.read();
    switch (c) {
      ...
      case 'c':
        delay(100);
        c = Serial.read();
        delay(100);
        c2 = Serial.read();
        if (c >= '0' && c <= '3') {
          if (c2 == 'o') {
            Ch[c - '0'] = true;
          } else if (c2 == 'x') {
            Ch[c - '0'] = false;
          }
          calcBuffer();
        }
        for (k = 0; k < 4; k++) {
          Serial.print("Ch");
          Serial.print(k);
          Serial.print("=");
          Serial.print(Ch[k]);
          Serial.print(";");
        }
        Serial.println();
        break;
      ...
    }
  }
}
...
void calcBuffer() {
  // code source
}
...

// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (c3x) du terminal > Pour envoyer la commande (c)
...
La carte Arduino met la valeur (false) dans la varibale (Ch[3]).
...
Par défaut, la carte Arduino utilise 4 canaux avec les valeurs à (true).
...

image.png

image.png


Initialisation des valeurs initiales des canaux (chi)


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (c3x) du terminal > Pour envoyer la commande (c)
...
La carte Arduino met la valeur (false) dans la varibale (ch[3]).
La carte Arduino met la valeur (3) dans la varibale (chq).
La carte Arduino met la valeur (130) dans la varibale (qmax).
La carte Arduino met la valeur (0) dans la varibale (chi[0]).
La carte Arduino met la valeur (130) dans la varibale (chi[1]).
La carte Arduino met la valeur (260) dans la varibale (chi[2]).
La carte Arduino laisse la valeur (300) dans la varibale (chi[3]).
...
Par défaut, la carte Arduino laisse la valeur (300) dans la varibale (chi[3]).
...

image.png

image.png


Initialisation de la sélection d'un canal (canalTrigger)


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (t3) du terminal > Pour envoyer la commande (t)
...
La carte Arduino met la valeur ('3') dans la varibale (canalTrigger).
...
Par défaut, la carte Arduino laisse la valeur ('x') dans la varibale (canalTrigger) pour la sélection de tous les canaux.
...

image.png

image.png


Initialisation de la tension de déclenchement (canalTrigger)


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (tv512) du terminal > Pour envoyer la commande (t)
...
La carte Arduino met la valeur (512) dans la varibale (vtrigger).
...
Par défaut, la carte Arduino laisse la valeur (0) dans la varibale (vtrigger) soit (0V).
...

image.png

image.png


Initialisation de l'envoi du nombre de lecture de données (q)


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (1) du terminal > Pour envoyer la commande (1)
...
La carte Arduino met la valeur (true) dans la varibale (uma).
La carte Arduino met la valeur (false) dans la varibale (varias).
La carte Arduino met la valeur (false) dans la varibale (fluxo).
...
Par défaut, la carte Arduino laisse la valeur (false) dans la varibale (uma).
...

image.png

image.png


Initialisation de l'envoi des données sans enregistrement


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (fo) du terminal > Pour envoyer la commande (f)
...
La carte Arduino met la valeur (true) dans la varibale (fluxo).
La carte Arduino met la valeur (false) dans la varibale (varias).
La carte Arduino met la valeur (false) dans la varibale (uma).
...
La carte Arduino met la valeur (false) dans la varibale (fluxo).
...

image.png

image.png


Initialisation de l'envoi de plusieurs échantillons


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (vo) du terminal > Pour envoyer la commande (v)
...
La carte Arduino met la valeur (true) dans la varibale (varias).
...
Par défaut, la carte Arduino laisse la valeur (false) dans la varibale (varias).
...

image.png

image.png


Initialisation de l'envoi de la valeur de la résistance A5


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (ro) du terminal > Pour envoyer la commande (r)
...
La carte Arduino met la valeur (true) dans la varibale (lerRC).
La carte Arduino met la valeur (0) dans la varibale (dtRC).
...
Par défaut, la carte Arduino laisse la valeur (false) dans la varibale (lerRC).
...

image.png

image.png


Initialisation de l'arrêt et du redémarrage du générateur PWM


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (sx) du terminal > Pour envoyer la commande (s)
...
La carte Arduino arrête le générateur PWM.
...
Appuyer sur les touches (so) du terminal > Pour envoyer la commande (s)
...
La carte Arduino redémarre le générateur PWM.
...

image.png

image.png


Initialisation de la fréquence du signal PWM


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (p25m) du terminal > Pour envoyer la commande (p)
...
La carte Arduino met la valeur (25000) dans la veraible (pwmP) qui correspond à une période de (25ms) soit une fréquence de (40Hz).
...
Par défaut, la carte Arduino laisse la valeur (20000) dans la varibale (pwmP) qui correspond à une période de (20ms) soit une fréquence de (50Hz).
...

image.png

image.png

image.png


Initialisation de la largeur d'impulsion du signal PWM


// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (o50) du terminal > Pour envoyer la commande (o)
...
La carte Arduino met la valeur (50) dans la veraible (pwmPon) qui correspond à une largeur d'impulsion de (50%).
...
Appuyer sur les touches (so) du terminal > Pour envoyer la commande (s)
...
Par défaut, la carte Arduino laisse la valeur (10) dans la veraible (pwmPon) qui correspond à une largeur d'impulsion de (10%).
...

image.png

image.png

image.png


Affichage des configurations du générateur de signal PWM


// Proteus (Démarrer la simulation)
// Proteus (Démarrer la simulation)
Configurer le fichier HEX
Démarrer la simulation
...
La carte Arduino affiche un message sur le terminal connecté au port série de l'ordinateur.
...
Appuyer sur les touches (?) du terminal > Pour envoyer la commande (?)
...
La carte Arduino affiche les configurations du générateur PWM.
...

image.png

image.png


Suite


À suivre...