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

Осциллограф 10 Гц-50 кГц для самостоятельного изготовления на ЖК-дисплее 128x64

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

Arduino Nano R3
× 1
Конденсатор 100 мкФ
× 1
ЖК-дисплей ST7920 128x64
× 1
Поворотный потенциометр (общий)
× 2
Кнопочный переключатель, мгновенный
× 3

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

Паяльник (общий)

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

IDE Arduino

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

В этом проекте описывается способ создания простого осциллографа с диапазоном частот от 10 Гц до 50 кГц. Это чрезвычайно большой диапазон, учитывая, что в устройстве не используется внешний чип цифроаналогового преобразователя, а используется только Arduino.

Результат отображается на относительно большом ЖК-экране (ST7920) с разрешением 128x64 пикселей. Область отображения измерений 96x64, а область отображения информации 32x64, где отображается частота тестового сигнала, Vpp и т. Д.

Он чрезвычайно прост в сборке и состоит всего из нескольких компонентов:

- Ардуино Нано

- ЖК-дисплей ST7920 с разрешением 128x64

- три переключателя без фиксации

- два потенциомера

- и один конденсатор 100 мкФ

Устройство имеет несколько функций, таких как:автоматический запуск (отображение очень стабильное), Скорость сканирования:0,02 мс / дел ~ 10 мс / дел, в соответствии с 1-2-5 переносом и делением на девять уровней и функцией удержания:замораживание формы сигнала и параметров дисплея. Этот проект опубликован в блоге Wu Hanqing, где вы можете найти исходный код. Я внес минимальные изменения, потому что строил осциллограф на основе оборудования одного из моих предыдущих проектов. Как вы можете видеть на видео, инструмент имеет очень четкий обзор благодаря большому экрану, а также удивительно хороший автоматический запуск. Положение изображения по вертикали регулируется потенциометром 50 кОм, а контрастность - потенциометром 10 кОм. Я тестировал осциллограф с генератором синусоидальных и прямоугольных сигналов.

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

Код

  • Код Arduino
Код Arduino C / C ++
 #include  U8GLIB_ST7920_128X64_4X u8g (6, 5, 4); int Input =A0; int Key_add =8; int Key_sub =9; int Key_hold =10; int x, y; int i, i1, i2, V_min, V_max, V_mid, t, t0, t1, sta, Key =1, hold =0; long Freq; float Vpp; int 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, 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, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0 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, 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, 0x00, 0x08, 0x10, 0x00, 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, 0x00FF, 0x00FC, 0x 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x01, 0xE3, 0xDF, 0xB6, 0x600, 0x00, 0x 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x6D, 0x9B, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF 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, 0x00x, 0x00, 0x00 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 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, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0C, 0x0F8, 0x00, 0x0F 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, 0xFF, 0x80 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x0F, 0x30, 0xC6, 0xCF, 0xF8x00, 0x00, 0x00, 0xF8, 0x00, 0x00 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00x, 0x00x, 0x00B 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x3C, 0xF9, 0xE0, 0x00, 0x00, 0x08, 0x08 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00FF, 0xFF, 0xE 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, 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, 0x0 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, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 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, 0x00, 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 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, 0x0E 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x 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, 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, 0x00 0x00, 0x00, 0x00, 0x00}; void setup () {pinMode (Key_add, ВХОД); digitalWrite (Key_add, HIGH); pinMode (Key_sub, ВХОД); digitalWrite (Key_sub, HIGH); pinMode (Key_hold, ВХОД); digitalWrite (Key_hold, ВЫСОКИЙ); ADMUX =0x60; ADCSRA =0xe2; u8g.setFont (u8g_font_5x7); u8g.firstPage (); сделать {u8g.drawBitmapP (0, 0, 16, 64, L); } while (u8g.nextPage ()); задержка (2000); } void loop () {образец (); Мера( ); Преобразовать (); Key_scan (); если (удерживать ==0) {u8g.firstPage (); делать {рисовать (); } while (u8g.nextPage ()); }} void sample () {for (i =0; i <192; i ++) {Buffer [i] =ADCH; переключатель (Ключ) {case 1:break; случай 2:delayMicroseconds (4); ломать; случай 3:delayMicroseconds (10); ломать; случай 4:delayMicroseconds (23); ломать; случай 5:delayMicroseconds (60); ломать; случай 6:delayMicroseconds (123); ломать; case 7:delayMicroseconds (248); ломать; case 8:delayMicroseconds (623); ломать; case 9:delayMicroseconds (1247); ломать; по умолчанию:перерыв; }}} void Measure () {V_max =Buffer [0]; V_min =буфер [0]; for (i =0; i <192; i ++) {if (Buffer [i]> V_max) V_max =Buffer [i]; если (Buffer [i]  =V_mid) {i1 =i; ломать; }} for (i =i1 + 1; i <98 + i1; i ++) {if (Buffer [i]  =V_mid) {i2 =i; ломать; }} t =i2-i1; если (t> 0) Freq =8000 / t; else Freq =0;} void Transform () {for (sta =0; sta <96; sta ++) {if (Buffer [sta] <128 &&Buffer [sta + 2]> 128) break; } for (i =0; i <96; i ++) Y [i] =63- (Buffer [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); для (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, "В / дел"); 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)»); переключатель (Ключ) {case 1:u8g.drawStr (98,14, "0,02"); u8g.setPrintPos (98, 62); u8g.print (Freq * 50); ломать; случай 2:u8g.drawStr (98,14, "0,05"); u8g.setPrintPos (98, 62); u8g.print (Freq * 20); ломать; случай 3:u8g.drawStr (98,14, "0,1"); u8g.setPrintPos (98, 62); u8g.print (Freq * 10); ломать; случай 4:u8g.drawStr (98,14, "0,2"); u8g.setPrintPos (98, 62); u8g.print (Freq * 5); ломать; случай 5:u8g.drawStr (98,14, "0,5"); u8g.setPrintPos (98, 62); u8g.print (Freq * 2); ломать; case 6:u8g.drawStr (98,14, "1"); u8g.setPrintPos (98, 62); u8g.print (Freq); ломать; case 7:u8g.drawStr (98,14, "2"); u8g.setPrintPos (98, 62); u8g.print (Freq / 2); ломать; case 8:u8g.drawStr (98,14, "5"); u8g.setPrintPos (98, 62); u8g.print (Freq / 5); ломать; case 9:u8g.drawStr (98,14, "10"); u8g.setPrintPos (98, 62); u8g.print (Freq / 10); ломать; по умолчанию:перерыв; }} void Key_scan () {if (digitalRead (Key_add) ==LOW) {while (digitalRead (Key_add) ==LOW); Ключ ++; if (Key ==10) Key =9; задержка (10); } если (digitalRead (Key_sub) ==LOW) {while (digitalRead (Key_sub) ==LOW); Ключ--; если (Ключ ==0) Ключ =1; задержка (10); } if (digitalRead (Key_hold) ==LOW) {while (digitalRead (Key_hold) ==LOW); держать =~ держать; задержка (10); }} 

Схема


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

  1. Музыкальный визуализатор DIY LUMAZOID для Arduino
  2. DIY Простой осциллограф Arduino 20 кГц на ЖК-дисплее Nokia 5110
  3. Железный человек
  4. Найди меня
  5. Светодиодная матрица + датчик движения дверной дисплей [Arduino Holiday]
  6. Управление увлажнителем Arduino
  7. DIY вольтметр с Arduino и дисплеем Nokia 5110
  8. Сонар с использованием Arduino и отображение при обработке IDE
  9. MobBob:самостоятельный робот Arduino, управляемый смартфоном Android
  10. Осциллограф 10 Гц-50 кГц для самостоятельного изготовления на ЖК-дисплее 128x64