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

Oscilloscope DIY 10Hz-50kHz sur écran LCD 128x64

Composants et fournitures

Arduino Nano R3
× 1
Condensateur 100 µF
× 1
ST7920 LCD 128x64
× 1
Potentiomètre rotatif (générique)
× 2
Bouton-poussoir, momentané
× 3

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Ce projet décrit un moyen de créer un oscilloscope simple qui a une plage de 10 Hz à 50 kHz. Il s'agit d'une gamme extrêmement large, étant donné que l'appareil n'utilise pas de puce de conversion numérique-analogique externe, mais uniquement Arduino.

Le résultat est affiché sur un écran LCD relativement grand (ST7920) avec une résolution de 128x64 pixels. La zone d'affichage des mesures est de 96 x 64 et la zone d'affichage des informations est de 32 x 64, où s'affiche la fréquence du signal de test, Vpp, etc.

C'est extrêmement simple à construire et ne comprend que quelques composants :

-Arduino Nano

- Écran LCD ST7920 avec résolution 128x64

- trois interrupteurs momentanés

- deux potentiomères

- et un condensateur 100 microF

L'appareil a plusieurs fonctions telles que :déclenchement automatique (affichage très stable), vitesse de balayage :0,02 ms/div ~ 10 ms/div, selon 1-2-5 carry et division en neuf niveaux et fonction Hold :gel de la forme d'onde et des paramètres d'affichage. Ce projet est publié sur le blog de Wu Hanqing où vous pouvez trouver le code original. J'ai apporté des modifications minimes car je construisais l'oscilloscope sur la base du matériel d'un de mes projets précédents. Comme vous pouvez le voir dans la vidéo, l'instrument a une vue très claire grâce au grand écran, ainsi qu'un déclencheur automatique étonnamment bon. La position verticale de l'image se règle avec le potentiomètre de 50 kohms, et le contraste avec le potentiomètre de 10 kohms. J'ai testé l'oscilloscope avec un générateur de signal sinusoïdal et rectangulaire.

Enfin, même s'il ne s'agit pas d'un instrument professionnel ou très utilisable, il peut tout de même être utilisé à des fins pédagogiques ou dans votre laboratoire, pour tester des signaux basse fréquence, surtout sachant que l'appareil est très simple à réaliser et extrêmement bon marché.

Code

  • Code Arduino
Code ArduinoC/C++
#include U8GLIB_ST7920_128X64_4X u8g(6, 5, 4); entier Entrée =A0; int Key_add =8; int Key_sub =9 ; int Key_hold =10; entier x,y; int i,i1,i2,V_min,V_max,V_mid,t,t0,t1,sta,Key=1,hold=0 ; longue fréquence ; flotteur Vpp ; entier Y[96]; int Buffer[192]; const uint8_t L[] PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x01, 0xE3, 0xDF, 0xB6, 0x6F, 0x8F,00 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x6D, 0x9B, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF 0x33, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x03, 0xF 3, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x33, 0x1B, 0xB6, 0x6C, 0x9B, 0x00, 0x00, 10 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00,x 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x08, 0x10, 0x0C, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 x08, 0x10, 0x0E, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x08, 0x10, 0x0E, 0x01, 0xFF, 0,x00, 0x80 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x0F, 0x30, 0xC6, 0xCF, 0xF8, 0x00, 0, 0 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x3C, 0xF9, 0xE0, 0x00, 0x00, 0x08, x 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x106, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0 0, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0,x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0E 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 0x00, 0x00, 0x00, 0x00} ; void setup ( ) { pinMode (Key_add, INPUT); digitalWrite(Key_add,HIGH); pinMode (Key_sub, INPUT); digitalWrite(Key_sub,HIGH); pinMode (Key_hold, INPUT); digitalWrite(Key_hold,HIGH); ADMUX=0x60 ; ADCSRA=0xe2 ; u8g.setFont(u8g_font_5x7) ; u8g.premièrePage(); do { u8g.drawBitmapP( 0, 0, 16, 64, L); } while( u8g.page suivante() ); retard (2000); } boucle vide( ) { échantillon( ); Mesure( ); Transformer( ); Key_scan( ); if(hold==0) { u8g.firstPage( ); faire { dessiner( ); } while( u8g.page suivante( )); } } void sample( ) { for(i =0;i <192;i++) { Buffer[i] =ADCH; switch(Key) { case 1 :break; cas 2 :délaiMicrosecondes(4) ; Pause; cas 3 :délaiMicrosecondes(10) ; Pause; cas 4:délaiMicrosecondes(23); Pause; cas 5:délaiMicrosecondes(60); Pause; cas 6 :délaiMicrosecondes(123); Pause; cas 7 :délaiMicrosecondes(248) ; Pause; cas 8 :délaiMicrosecondes (623) ; Pause; cas 9 :délaiMicrosecondes (1247); Pause; par défaut :pause ; } }} void Measure(){ V_max=Buffer[0]; V_min=Tampon[0] ; for(i=0;i<192;i++) { if(Tampon[i]>V_max) V_max=Tampon[i]; if(Tampon[i]=V_mid) { i1=i; Pause; } } for(i=i1+1;i<98+i1;i++) { if(Buffer[i]=V_mid) { i2=i; Pause; } } t=i2-i1; si(t>0) Fréq=8000/t; else Freq=0;} void Transform( ) { for(sta=0;sta<96;sta++) { if(Buffer[sta]<128&&Buffer[sta+2]>128) break; } pour(i =0;i <96;i++) Y[i] =63-(Tampon[i+sta]>>2) ; }void draw( ) { for(x =0;x <95;x++) u8g.drawLine(x,Y[x],x,Y[x+1]); u8g.drawFrame(0,0,97,64); u8g.drawLine(48,0,48,63); u8g.drawLine(0,32,96,32); for(x=0;x<96;x+=8) u8g.drawLine(x,31,x,33); for(y=0;y<64;y+=8) u8g.drawLine(47,y,49,y);for(x=8;x<96;x+=8) { for(y=8;y<64;y+=8) u8g.drawPixel(x,y); } u8g.drawStr(98,7,"MS/div"); u8g.drawStr(98,23,"V/div"); u8g.drawStr(98,30,"0.324"); u8g.drawStr(98,40,"Vpp"); u8g.setPrintPos(98, 47); u8g.print(Vpp); u8g.drawStr(118,47,"V"); u8g.drawStr(98,55,"F(HZ)"); switch(Key) { cas 1 :u8g.drawStr(98,14,"0.02"); u8g.setPrintPos( 98, 62); u8g.print (Fréq * 50); Pause; cas 2 :u8g.drawStr(98,14,"0.05"); u8g.setPrintPos( 98, 62); u8g.print(Fréq*20); Pause; cas 3 :u8g.drawStr(98,14", 0,1"); u8g.setPrintPos( 98, 62); u8g.print(Fréq*10) ; Pause; cas 4:u8g.drawStr(98,14", 0.2"); u8g.setPrintPos( 98, 62); u8g.print(Fréq*5) ; Pause; cas 5:u8g.drawStr(98,14", 0.5"); u8g.setPrintPos( 98, 62); u8g.print(Fréq*2) ; Pause; cas 6 :u8g.drawStr(98,14", 1"); u8g.setPrintPos( 98, 62); u8g.print(Fréq); Pause; cas 7 :u8g.drawStr(98,14", 2"); u8g.setPrintPos( 98, 62); u8g.print(Fréq/2); Pause; cas 8 :u8g.drawStr(98,14", 5"); u8g.setPrintPos( 98, 62); u8g.print(Fréq/5); Pause; cas 9 :u8g.drawStr(98,14", 10"); u8g.setPrintPos( 98, 62); u8g.print(Fréq/10); Pause; par défaut :pause ; }} void Key_scan(){ if(digitalRead(Key_add)==LOW) { while(digitalRead(Key_add)==LOW); Clé++ ; if(Clé==10) Clé=9; retard(10) ; } if(digitalRead(Key_sub)==LOW) { while(digitalRead(Key_sub)==LOW); Clé--; if(Clé==0) Clé=1 ; retard(10) ; } if(digitalRead(Key_hold)==LOW) { while(digitalRead(Key_hold)==LOW); tenir=~tenir ; retard(10) ; }} 

Schémas


Processus de fabrication

  1. Visualiseur de musique Arduino DIY LUMAZOID
  2. Oscilloscope Arduino 20 kHz simple bricolage sur écran LCD Nokia 5110
  3. Iron Man
  4. Trouvez-moi
  5. Affichage de porte à matrice LED + détecteur de mouvement [Arduino Holiday]
  6. Contrôle de l'humidificateur Arduino
  7. Voltmètre DIY avec Arduino et un écran Nokia 5110
  8. Sonar utilisant arduino et affichage lors du traitement de l'IDE
  9. MobBob :Robot Arduino DIY contrôlé par smartphone Android