Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY Простой осциллограф Arduino 20 кГц на ЖК-дисплее Nokia 5110

Компоненты и расходные материалы

Arduino Nano R3
× 1
ЖК-дисплей Nokia 5110 (PCD8544)
× 1
Резистор 10 кОм
× 4
Резистор 4,75 кОм
× 1
Резистор 330 Ом
× 1
Кнопочный переключатель, мгновенный
× 4

Необходимые инструменты и машины

Паяльник (универсальный)
Проволока для припоя, без свинца

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

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

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

- кнопка «УДЕРЖАТЬ» - служит для фиксации текущего состояния экрана

- Кнопка синхронизации, позволяющая установить уровень синхронизации.

- И кнопки «+» и «-», которые управляют разверткой, уровнем синхронизации и перемещают изображение сигнала в режиме HOLD.

На экране Nokia 5110 каждая ячейка по вертикали - 1 В, по горизонтали одна ячейка равна разрешению сканирования, которое имеет (следующие) значения:0,1, 0,2, 0,5, 1,0, 2,0, 5,0, 10,0, 20,0 и 50,0 мс. . Значение развертки изменяется с помощью кнопок «+» и «-», которые отображаются в верхнем левом углу. Уровень запуска отображается в виде небольшой полосы в левой части экрана, а напряжение запуска отображается в правом верхнем углу экрана. Этот проект опубликован на странице arduino.ru, где вы можете прочитать более подробную информацию.

Устройство очень простое в сборке и состоит всего из нескольких компонентов - микроконтроллера Arduino Nano

- ЖК-дисплей Nokia N5110

- четыре кнопки

- четыре подтягивающих резистора

- Входной разъем

- И выключатель питания, и светодиод

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

Наконец, устройство помещается в подходящий ящик из ПВХ и покрывается самоклеящимися обоями.

Код

  • Код Arduino
Код Arduino C / C ++
 #include  #include  #include  Adafruit_PCD8544 display =Adafruit_PCD8544 (7, 6, 5, 4, 3); // CLK, DIN, DC, CE, RST |||| VCC +3,3 В, BL ++ 200 OM ++ 3,3 В int izm, x, y, u, i2, zz, hold, h0, h1, h2, raz =0, menu, sss =512, u_dig, data [168 ] {}; долгое время без знака, раз; число с плавающей запятой на байт 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); // удерживаем pinMode (13, INPUT); // синх ADMUX =0b01000000; // 0B0100000 10 бит A0 // 0B01100000 8 бит 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) ==ВЫСОКИЙ) {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;} если (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  5000) {break;}} h0 =0; // СИНХРОНИЗАЦИЯ times =micros (); в то время как (я <167) {я ++; delayMicroseconds (zz); ads (); данные [i] =izm; // ИЗМЕРЕНИЕ 10 бит} i =0; times =micros () - times; Serial.println (раз); } //////////////////// ВЫХОД НА ДИСПЛЕЕ ////////////////////////// ///// 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); в то время как (я <167) {я ++; 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 («мСм»); 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);} время =миллис ();} display.display (); } // цикл void ads () {//////// 10 бит /////////// do {ADCSRA | =(1 < 

Схема


Производственный процесс

  1. Умные жалюзи
  2. Простой датчик препятствий с Arduino
  3. DIY вольтметр с Arduino и дисплеем Nokia 5110
  4. Осциллограф 10 Гц-50 кГц для самостоятельного изготовления на ЖК-дисплее 128x64
  5. Простое измерительное колесо с поворотным энкодером, сделанное своими руками
  6. Простой хронометр Arduino
  7. DIY Простой измеритель емкости с автоматическим выбором диапазона (10pF-10000microF)
  8. Друг AI LCD!
  9. Изолированный аналоговый вход для Arduino
  10. Простой будильник с DS1302 RTC