Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED

Composants et fournitures

Composant Quantité Notes
Arduino Nano R3 1 Tout modèle Arduino devrait fonctionner
Écran OLED SH1106 I2C 128x64 pixels (4 broches) 1
Module DDS AD9833 1
Encodeur rotatif avec bouton-poussoir 1 Nécessite un fer à souder
Module encodeur rotatif (pour montage sur breadboard) 1 Meilleur pour le prototypage sur breadboard
Module relais 5V (optionnel) 1 Optionnel, pour changer le mode de couplage AC/DC
Relais reed 5V 500 Ω 1 Idéal pour les petits signaux, se connecte directement aux broches Arduino (10 mA)
Condensateur 10 µF 1
Condensateur 10 nF (polyester) 1
Module alimentation AC-DC 100-220V vers 5V (optionnel) 1 Pour alimenter le circuit sans USB

Outils nécessaires

Applications et services en ligne

À propos du projet

Depuis longtemps, je repoussais l'achat d'un oscilloscope. Maintenant que j'en ai un, il me fallait aussi un générateur de signaux peu coûteux pour mes loisirs, indispensable pour diagnostiquer des circuits audio et bien plus. Allier électronique et informatique, le mieux est de le faire soi-même avec Arduino.

Fonctionnalités

JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED

Note importante

SOYEZ EXTRÊMEMENT PRUDENT lors de l'utilisation de la tension secteur ! Risque de choc électrique et de dommages corporels. Prenez soin de votre vie, vous n'en avez qu'une !

Références rapides

JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED

Prototype

JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED
JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED
JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED
JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED

J'ai utilisé un module relais pré-assemblé avec contacts 10A, n'ayant pas de micro relais reed sous la main. Ce serait le meilleur choix pour éviter transistors, diodes et résistances quand les relais de puissance ne sont pas nécessaires. Une broche numérique Arduino ne peut délivrer que 40 mA maximum, donc on ne peut pas connecter directement un relais électromécanique avec une bobine de 120/150 Ω.

Code source

Le projet se compose de trois fichiers :

JX_Wave_Generator_8.7.7.ino (extrait)

/* Copyright (c) 2020 Janux – Licence MIT */
#include "JXWG_Defs.h"
#include "JXWG_Graphics.h"

void setup() {
  // Configuration encodeur (avec ou sans résistances pull-up)
  pinMode(PinA, INPUT);
  pinMode(PinB, INPUT);
  pinMode(PinS, INPUT);
  digitalWrite(PinA, HIGH);
  digitalWrite(PinB, HIGH);
  digitalWrite(PinS, HIGH);

  pinMode(PinCoupling, OUTPUT);
  Encoder.setDebounceDelay(5);
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  Wire.begin();
  TWBR = 5; // I2C à 615 kHz
  attachInterrupt(digitalPinToInterrupt(PinS), encoderSwitch, FALLING);
  DDS_Init();
  setConfig(); // Charge la config et valeurs de démarrage
}

void loop() {
  JX_WaveGenerator_MAIN();
}

// Fonction principale – machine d'états selon le mode (LOGARITHMIC, SINGLEDIGIT, SWEEP, OPTIONS, etc.)
void JX_WaveGenerator_MAIN() {
  // ... logique de contrôle par encodeur rotatif ...
  // Gestion des modes : fréquence, type d'onde, couplage, balayage (sweep)
  // Affichage OLED, sauvegarde config en EEPROM, économiseur d'écran
}

JXWG_Defs.h – Définitions principales

#ifndef JXWG_Defs
#define JXWG_Defs

#include 
#include 
#include 
#include 

#define DEBUG 0
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);

#define PinA 5
#define PinB 4
#define PinS 3
SimpleRotary Encoder(PinA, PinB, PinS);

// Modes de fonctionnement
#define LOGARITHMIC 0
#define SINGLEDIGIT 1
#define SWEEP 2
#define OPTIONS 3
#define OPTMODE 4
#define OPTWAVE 5
#define OPTCOUP 6
#define OPTSWEEP 7
#define SWEEPEDIT 8
#define DIGITCHANGE 9

#define PinCoupling 7

// Constantes d'affichage
#define XPOS 28
#define YPOS 21
#define DELTAX 12
#define DELTAY 4
#define SMALL 1
#define BIG 2
#define CW 1
#define CCW 2
#define PUSH 1
#define LONGPUSH 1
#define MAXDIGIT 6

// Types d'onde
#define SQUARE 0
#define SINE 1
#define TRIANGLE 2

// Modes de couplage
#define AC 0
#define DC 1
#define OFF 2

// Statut balayage
#define STILL 0
#define BREAK 1
#define PAUSE 2

// Broches AD9833
#define DDS_FSY 9
#define DDS_CLK 10
#define DDS_DAT 11

// Registres AD9833
#define wSquare 0x28
#define wSine 0x00
#define wTriangle 0x02

// Variables globales, structure de config EEPROM, macros utilitaires...
#endif

JXWG_Graphics.h – Icônes (extrait)

#ifndef JXWG_Graphics
#define JXWG_Graphics

// Icônes 25x16 stockées en PROGMEM : imgLog, imgDigit, imgSweep, imgSqr, imgSin, imgTri,
// imgCoAc, imgCoDc, imgCoOff, imgSwMax, imgSwMin, imgSwOpt, imgSwStep, imgSwStart,
// imgSwPause, imgTurn, imgSwRun, imgSwPsd, et versions small (9x8)
// Total : 1148 octets de mémoire programme
#endif

Schémas

JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED
JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED

Processus de fabrication

  1. Photographie Haute Vitesse : Capturez les Gouttes d'Eau avec Arduino Nano
  2. Construire un Spybot Arduino piloté par Bluetooth
  3. FlickMote : Télécommande IR à gestes pour maison connectée
  4. TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
  5. Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
  6. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  7. Solutions d'alimentation optimisées pour projets Arduino
  8. Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth
  9. Connecter un module GPS NEO‑6M à l'Arduino Mega : Guide pas à pas