Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

DIY Simple 20 kHz Arduino Oscilloscope no Nokia 5110 LCD

Componentes e suprimentos

Arduino Nano R3
× 1
Tela LCD Nokia 5110 (PCD8544)
× 1
Resistor 10k ohm
× 4
Resistor 4,75 k ohm
× 1
Resistor 330 ohm
× 1
Botão de pressão, momentâneo
× 4

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Arame de solda, sem chumbo

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Desta vez, mostrarei como fazer um osciloscópio Arduino simples. A frequência máxima do sinal que o osciloscópio pode exibir é 20 kHz e a tensão máxima de entrada é 5 V sem um divisor de tensão.

O osciloscópio é controlado por quatro botões:

- Botão "HOLD" - que serve para congelar o estado atual da tela

- Botão de sincronização que permite definir o nível de sincronização.

- E os botões "+" e "-" que controlam a varredura, o nível de sincronização e movem a imagem do sinal no modo HOLD.

Na tela do Nokia 5110, verticalmente cada célula tem 1 V, horizontalmente uma célula é igual à resolução da varredura, que tem os seguintes valores de:0,1, 0,2, 0,5, 1,0, 2,0, 5,0, 10,0, 20,0 e 50,0 ms . O valor da varredura é alterado com os botões "+" e "-", que são exibidos no canto superior esquerdo. O nível de disparo é exibido como uma pequena barra no lado esquerdo da tela e a tensão de disparo é exibida no canto superior direito da tela. Este projeto está publicado na página arduino.ru onde você pode ler mais detalhes.

O dispositivo é extremamente simples de construir e consiste em apenas alguns componentes - microcontrolador Arduino Nano

- Visor LCD Nokia N5110

- quatro botões

- quatro resistores pull-down

- Conector de entrada

- E interruptor de alimentação e led

Testei o osciloscópio com gerador de sinal senoidal e retangular. Mesmo não sendo um instrumento profissional ou muito utilizável, ainda pode ser utilizado para fins educacionais ou em seu laboratório, para testar sinais de baixa frequência, principalmente sabendo que o dispositivo é muito fácil de fazer e extremamente barato.

Por fim, o dispositivo é colocado em uma caixa adequada de PVC e revestida com papel de parede autoadesivo.

Código

  • código Arduino
Código do Arduino C / C ++
 #include  #include  #include  Adafruit_PCD8544 display =Adafruit_PCD8544 (7, 6, 5, 4, 3); // CLK, DIN, DC, CE, RST |||| VCC +3,3 V, BL ++ 200 OM ++ 3,3 V int izm, x, y, u, i2, zz, manter, h0, h1, h2, raz =0, menu, sss =512, u_dig, dados [168 ] {}; muito tempo sem sinal, tempos; float por; byte i; void setup () {Serial.begin (9600); display.begin (); display.clearDisplay (); display.display (); display.setContrast (40); // configuração de contraste display.setTextSize (1); // definindo o tamanho da fonte display.setTextColor (BLACK); // definindo a cor do texto pinMode (10, INPUT); // + pinMode (11, INPUT); // - pinMode (12, INPUT); // mantenha pinMode (13, INPUT); // синх ADMUX =0b01000000; // 0B0100000 10 bits A0 // 0B01100000 8 bits A0 ADCSRA =0b11110010; // CLK / 4; analogWrite (9, 127); // PWM 9 OUTPUT} void loop () {///////////////////////////// BUTTON CONTROL ////////// ////////////////////// if (menu ==0) {if (digitalRead (10) ==HIGH) {if (hold ==0) {raz ++;} if (hold ==1) {i2 =i2 + 1;} delay (100);} if (digitalRead (11) ==HIGH) {if (hold ==0) {raz -;} if (hold ==1 &&hold> 0) {i2 =i2-1;} delay (100);}} if (digitalRead (12) ==HIGH) {hold ++; i2 =0; delay (100);} if (digitalRead (13) ==HIGH) {menu ++; delay (100);} if (hold> 1) {hold =0;} if (menu> 1 || menu <0) {menu =0;} if (raz <=0) {raz =0;} if (raz> 8) {raz =8;} if (menu ==1) {hold =0; if (digitalRead (10) ==HIGH) {sss + =24; delay (100);} if (digitalRead (11) ==HIGH) {sss- =24; delay (100);} if (sss> 1023) { sss =1023;} if (sss <0) {sss =0;}} display.setCursor (0,0); // definindo posição do cursor /////////////////////////// SWEEP TIME calibrado pelo gerador ///////////////// ///////////// if (raz ==0) {zz =1; h2 =2; per =0.1;} if (raz ==1) {zz =1; h2 =1; por =0,2;} if (raz ==2) {zz =12; h2 =1; per =0,5;} if (raz ==3) {zz =32; h2 =1; per =1;} if (raz ==4) {zz =75; h2 =1; per =2;} if (raz ==5) {zz =200; h2 =1; per =5;} if (raz ==6) {zz =380; h2 =1; per =10;} if (raz ==7) {zz =750; h2 =1; per =20;} if (raz ==8) {zz =1900; h2 =1; per =50;} //////////////////////////////////////////////////// ///////////////////// if (hold ==0 &&millis () - tempo> 0) {ads (); while (izm  5000) {break;}} h0 =0; // tempos de SINCRONIZAÇÃO =micros (); enquanto (i <167) {i ++; atrasoMicrossegundos (zz); anúncios (); dados [i] =izm; // MEDIÇÃO 10 bits} i =0; times =micros () - times; Serial.println (vezes); } ////////////////////// OUTPUT ON DISPLAY //////////////////////////// ///// if (millis () - tempo> 100) {display.clearDisplay (); if (sss <204 &&sss> 100) {u_dig =10; display.setCursor (0,40); display.print ("0.4V");} else if (sss <100) {u_dig =5; display.setCursor (0,40); display.print ("0,2 V");} else {u_dig =25;} display.setCursor (0,0); enquanto (i <167) {i ++; setka (); display.drawLine (i * h2-i2, 47-dados [i] / u_dig, i * h2-i2 + h2-1, 47-dados [i + 1] / u_dig, PRETO);} i =0; display.print (por, 1); display.print ("mS"); if (menu ==0) {if (hold ==1) {display.print ("HOLD");} else {display.print ("AUTO");}} if (menu ==1) {display.print (sss / 200.0,1); display.print ("V");} if (menu ==1) {display.drawLine (0, 48-sss / u_dig, 4, 48-sss / u_dig, PRETO);} tempo =milis ();} display.display (); } // loop void ads () {//////// 10 bit ///////////// do {ADCSRA | =(1 < 

Esquemas


Processo de manufatura

  1. Smart Blinds
  2. Sensor de obstáculo simples com Arduino
  3. Voltímetro DIY com Arduino e um visor Nokia 5110
  4. Osciloscópio DIY 10Hz-50kHz em tela LCD 128x64
  5. Roda de medição simples DIY com codificador rotativo
  6. Cronômetro Arduino simples
  7. Medidor de capacitância DIY Simple Autorange (10pF-10000microF)
  8. Amigo do AI LCD!
  9. Uma entrada analógica isolada para Arduino
  10. Despertador simples com DS1302 RTC