| Ваш IP: 18.206.241.26 | Online(25) - гости: 15, боты: 10 | Загрузка сервера: 0.96 ::::::::::::

Простой осциллограф на Arduino Nano (Uno)

На основе Arduino Nano (Uno) можно собрать простой осциллограф имеющий минимальный функционал. Максимальная частота сигнала которую может отобразить экран осциллографа 20 кГц (7 импульсов на ширину экрана), максимальное входное напряжение 5 В.

Осциллограф управляется четырьмя кнопками:

  • Кнопка «HOLD» — режим паузы, кнопками «+» и  «-» можно перемещать изображение сигнала вправо и влево.
  • Кнопка «Синхронизации» — позволяет задавать уровень синхронизации.
  • Кнопки «+» и  «-» — управление разверткой, уровнем синхронизации и перемещение изображения сигнала в режиме HOLD.

На экране Nokia 5110 отображается размерная сетка, по вертикали каждая клетка равна 1 В, по горизонтали одна клетка равна разрешению развертки которая имеет следующие значения: 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0 и 50.0 мс. Значение развертки меняется кнопками «+» и  «-«, которое отображается в левом верхнем углу.

Уровень синхронизации отображается в виде небольшой полосы в левой части экрана, а напряжение срабатывания синхронизации отображается в правом верхнем углу экрана.

При маленьком уровне сигнала можно масштабировать шкалу напряжения, для этого перейдите в режим ручной регулировки синхронизации, уменьшите уровень синхронизации до нижней клетки, после чего одно деление шкалы станет равным 0,4 В, если снова уровень синхронизации уменьшить до одной нижней клетки то деление шкалы станет равной 0,2 В. В нижней части экрана появиться значение 0.4 V или 0.2 V, когда надписей нет, значить одно деление шкалы равно 1 В / дел.

Подключение

  • D10 — кнопка «+»
  • D11 — кнопка «-«
  • D12 — кнопка HOLD
  • D13 — кнопка синхронизации
  • A0 — аналоговый вход осциллографа, сигнала подается через резистор 4.7 кОм
  • D9 — тестовый выход генератора 500 Гц
  • Экран — 7, 6, 5, 4, 3  CLK ,DIN ,DC ,CE , RST. На VCC подается +3,3 В, на BL подается питание 3,3 В через резистор 200 Ом или 5 В через резистор 300 Ом.

Библиотеки

Adafruit_PCD8544.zip

Adafruit_GFX.zip

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <SPI.h>
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,hold,h0,h1,h2,raz=0,menu,sss=512,u_dig,data[168]{};
unsigned long time,times;
float per;
byte i;
 
void setup() {Serial.begin(9600);
    display.begin();display.clearDisplay();display.display();
    display.setContrast(40); // установка контраста
    display.setTextSize(1);  // установка размера шрифта
    display.setTextColor(BLACK); // установка цвета текста
    pinMode(10,INPUT);  // +
    pinMode(11,INPUT);  // -
    pinMode(12,INPUT);  // hold
    pinMode(13,INPUT);  // синх
    ADMUX  = 0b01000000; // 0B0100000 10 bit A0 // 0B01100000 8 bit A0
    ADCSRA = 0b11110010;// CLK/4;
    analogWrite (9, 127); // PWM 9 ВЫХОД
}
 
void loop() {
///////////////////////////УПРАВЛЕНИЕ КНОПОК//////////////////////////////
 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); // установка позиции курсора
/////////////////////////ВРЕМЯ РАЗВЕРТКИ откалибровано по генератору ////////////////////////////
  if(raz==0){zz=1;h2=2;per=0.1;}
  if(raz==1){zz=1;h2=1;per=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()-time>0){
 
 ads();while(izm<sss){ads();h0++;if(h0>5000){break;}}h0=0;// СИНХРОНИЗАЦИЯ
 times=micros();
 while(i<167){i++;delayMicroseconds(zz);
  ads();data[i]=izm; // ИЗМЕРЕНИЕ 10 bit
  }i=0;times=micros()-times;
  Serial.println(times);
 }
////////////////////ВЫВОД НА ЭКРАН///////////////////////////////
  if(millis()-time>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.2V");}
    else{u_dig=25;}
     display.setCursor(0,0);
 while(i<167){i++;setka();
    display.drawLine(i*h2-i2, 47-data[i]/u_dig,i*h2-i2+h2-1, 47-data[i+1]/u_dig, BLACK);}i=0;
    display.print(per,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, BLACK);}
    time=millis();
}
   display.display();    
}// loop
 
void ads(){ //////// 10 bit ///////////
  do{ADCSRA |= (1 << ADSC);} 
  while((ADCSRA & (1 << ADIF)) == 0);izm = (ADCL|ADCH << 8);} 
  ////////////////// 8 bit ///////////
  // ПОТРЕБУЕТСЯ ИЗМИНЕНИЕ ВСЕХ ПОПРАВОЧНЫХ ПЕРЕМЕННЫХ (sss, u_dig)
  // while ((ADCSRA & 0x10)==0);
  //   ADCSRA|=0x10;
  //   izm = ADCH;
 
void setka(){
 for(y=8;y<47;y=y+8){
 for(x=0;x<83;x=x+4){
   display.drawPixel(x, y, BLACK);}}
 
 for(x=0;x<83;x=x+26){
 for(y=10;y<47;y=y+4){
   display.drawPixel(x, y, BLACK);}}
}

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Карманная СВ-радиостанция (27МГц)

    Радиостанция работает на частоте 27МГц и может связываться с аналогичной радиостанцией на расстояние до 2 км на открытой местности и до 500 м в городских условиях. Приемный тракт выполнен на 2-х микросхемах К174ПС1 К157ХА2 по схеме с минимальным кол-вом контуров. S1 показан в положении ПРИЕМ. Вх.сигнал от антенны через секцию …Подробнее...
  • ПРИНЦИП ДЕЙСТВИЯ И УСТРОЙСТВО ТРАНЗИСТОРОВ

    Транзистором называется полупроводниковый прибор, предназначенный для усиления и генерирования электрических колебаний. Он представляет собой кристалл, помещенный в корпус, снабженный выводами. Кристалл изготовляют из полупроводникового материала. По своим электрическим свойствам полупроводники занимают некоторое промежуточное положение между проводниками и непроводниками тока (изоляторами). Небольшой кристалл полупроводникового материала (полупроводника) после соответствующей технологической обработки становится …Подробнее...
  • Передатчик на 28,0МГц

    Передатчик выполнен по классической схеме. L1 — 14 витков провода ПЭЛ 0,35, L2 — 2 витка ПЭЛ 0,5. Число витков последней катушки желательно подобрать. Каркас катушек — унифицированный с подстроечником из феррита диаметром 2,8 мм. L4 — бескаркасная, состоит из 10 витков ПЭЛ — 1,0 , намотана на оправке диаметром …Подробнее...
  • Двух-полярный источник питания от напряжения 9В

    Двух-полярный источник питания от напряжения 9В

    При  питании уст-в от элементов питания иногда возникает необходимость в двух полярном источнике напряжения. Можно конечно применить два элемента питания, но так же можно сделать простой преобразователь одно полярного напряжения в двух полярное. Предложенная схема позволяет от одного элемента напряжением 9 В (Крона) получить отрицательное напряжение -9 В. Схема преобразователя …Подробнее...
  • Радиомикрофон (88-108МГц)

    Микрофонный усилитель собран на VT1 VT2 и охвачен глубокой ООС через R5. Задающий генератор РЧ собран по схеме с общей базой. ЧМ осуществляется при помощи варикапа VD1 на который подается сигнал с микрофонного усилителя через C4R10. Напряжение питания стабилизировано параметрическим стабилизатором на стабилитроне VD2. Сигнал генератора РЧ усиливается усилителем на …Подробнее...