Faire un oscilloscope numérique via Arduino: 3 étapes

Faire un oscilloscope numérique via Arduino: 3 étapes

Table des matières:

Anonim

Souvent vu des gens qui fabriquent un oscilloscope numérique en ligne, DSO doit avoir une unité de conversion numérique-analogique, selon un circuit de conversion d / un peut être divisé en deux modes: 1. Puce ADC spéciale + puce unique, 2. utilisation du compteur ADC à puce unique à l'intérieur le convertisseur. Pour le premier modèle que j'ai essayé deux (voir mon blog: http://blog.Sina.com.CN/ntwhq), ce circuit est un peu plus complexe, le composant est plus difficile à compléter, il est difficile pour les débutants. La deuxième structure est relativement simple, facile à réaliser, mais présente un inconvénient majeur, c’est-à-dire qu’avec une bande passante étroite, l’une des œuvres les plus typiques est celle des amis étrangers de http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope. htm, la bande passante de l'oscilloscope seulement 7.7KHz. Utilisateurs domestiques et production AVR à puce unique STC, mais la bande passante réelle est inférieure à 10 kHz.Vous pouvez également choisir d’utiliser Fusion PCB pour créer un circuit imprimé plutôt que de le souder vous-même.

Provisions:

Étape 1: code

Récemment vu un ami réseau avec un oscilloscope Arduino, il peut être plus facile que la deuxième méthode ci-dessus, mais leurs résultats ne sont pas idéaux, la bande passante est étroite. Je voulais donc essayer et voir et il n'y a pas de bon moyen de résoudre ce problème. Produit par l'expérience, et modifie constamment le code, et l'amélioration du taux d'échantillonnage de conversion d / a, de très bons résultats ont été obtenus.

Les principaux paramètres du produit final: Réponse en fréquence: 10Hz-50KHz Alimentation: 5V Écran LCD: 128x64 (ST7920) Zone d'affichage des mesures: 96x64 Affichage des informations: 32x64, affiche la fréquence du signal de test, Vpp, etc. Sync: déclenchements de front montant Vitesse de numérisation: 0,02 ms / div ~ 10 ms / div, transportant neuf fonctions 1-2-5 Hold: fige le signal affiché et les paramètres Deuxièmement, test de base Le principal avantage du projet Arduino réside dans ses ressources riches et inutiles. beaucoup de connaissance de la SCM. J'ai fait en utilisant un LCD u8glib de référentiel, le rendant plus facile à programmer, ou un lecteur LCD vous coûtera beaucoup de temps. Téléchargement de U8glib: u8glib_arduino_v1.13.zip (989.55 Ko, téléchargements: 2577) Voici mon premier circuit d’essai pour le bâtiment Arduino UNO, en 12864 LCD LCD utilisant le contrôle ST7920. Tant que la méthode de saisie du code suivant, compilée après le téléchargement, permet d’accomplir les fonctions de base de l’oscilloscope numérique, ne serait-il pas plus simple? # Inclure // instruction U8GLIB_ST7920_128X64_4X u8g (13, 12, 11); Déclaration LCD SPI Com: SCK = 13, MOSI = 12, CS = 11 int x, y; Coordonnées de point peintes int Buffer 128; Tableau de stockage en mémoire cache void setup () {} Sample void sample () {pour (x = 0; x <128; x ++) Tampon x = analogRead (A0); Échantillonnage de signal pour (x = 0; x <128; x ++) Tampon x = 63- (tampon x >> 4); Calculer les valeurs y} Affichage void draw () {pour (x = 0; x <127; x ++) u8g.drawLine (x, tampon x, x, tampon x + 1); Tracez deux lignes u8g.drawLine (64,0,64,63); Tracez les axes u8g.drawLine (0,32,128,32); Pour (x = 0; x <128; x + = 8) // trace l’échelle de l’axe u8g.drawLine (x, 31, x, 33); pour (x = 0; x <64; x + = 8) u8g.drawLine (63, x, 65, x); u8g.drawFrame (0,0, 128, 64); Dessiner la bordure} void loop () {sample (); Échantillon u8g.firstPage (); Effacer l’écran ne dessine (); Afficher tout le temps (u8g.nextPage ());

}

Étape 2: Circuit

À l’aide du circuit de test, mon Arduino est mesuré directement à l’aide de la fonction analogRead () pour effectuer une conversion ad / a pour une vitesse de conversion d’environ 111 µs, de sorte que sa bande passante est principalement de 1KHz, la priorité suivante est d’améliorer la vitesse de conversion numérique conversion, tout en ajoutant d'autres fonctionnalités.

Troisièmement, les derniers programmes Voici le dernier code source à utiliser, s'il vous plaît garder mon LOGO de démarrage, HA HA. Arduino_oscilloscope.zip (2.72 KB, téléchargements: 2710)

La puce de programme 1.1V ADC utilise la référence de tension mentionnée ci-dessus; si vous souhaitez utiliser une tension de référence externe de 5 V, programmez le programme ADMUX = 0xe0; À: ADMUX = 0x60; Vpp = (V_max-V_min) * 1.1 / 255; lire: Vpp = (V_max-V_min) * 5/255;

Utiliser Fusion PCB peut faire un meilleur circuit imprimé.

Quatrièmement, des expériences faites à la machine utilisant l’Arduino UNO ci-dessus, la carte actuelle avec l’Arduino PRO mini, afin d’avoir un volume plus faible.

Schéma:

Liste des composants principaux: Nom du numéro Arduino PRO mini 1 LCD12864 LCD (ST7920) 1 condensateur électrolytique (100 μ 25V) 1 potentiomètre (50k) 1 plaque à trous 3 interrupteur d'alimentation 1 pile 1 interrupteur à bouton-poussoir (avec batterie rechargeable, 7e) 1 boîtier 1

1, soudage Arduino PRO mini PIN.

2, composants de carte de circuit de soudage

3, faisant la plaque trou LCD

4, assembler des cartes de circuit

5, faisant le cas, j’ai utilisé une restructuration du coffre au trésor avec boîtier en plastique, à la place appropriée sur le trou.

6, assemblée

Chargez le circuit imprimé dans le boîtier, avec le panneau blanc épais, fixé à l’intérieur du panneau avant.

Étape 3: Télécharger et tester

En raison de l'Arduino PRO mini ne tourne pas le circuit du port série USB, donc pour transférer via un téléchargement du port série USB avant de télécharger le programme.

Le débogage de l’oscilloscope est très simple, il suffit de régler le potentiomètre 50k au centre des lignes de balayage horizontales. J'utilise une source de signal de générateur de signal.

LOGO de démarrage

Essai:

quelques explications

1, il s’agit de l’un des oscilloscopes numériques les plus simples; vous pouvez encore vous améliorer grâce à cela;

2, vous avez peut-être remarqué que je n'utilise pas le port d'E / S 0-7, qui est un micro-ordinateur et une bouche mono-puce AVR 8 bits, c'est ce que j'ai préparé pour les mises à niveau ultérieures, en utilisant une puce ADC spéciale, peut être utilisé comme entrée de données, si vous êtes intéressé par l'oscilloscope, alors je considérerai la mise à niveau;

3, le travail a été précipité et ont des défauts et des carences de, s'il vous plaît aviser, vous avez des questions que vous pouvez canalso ici.