Skip to main content

Basic Oscilloscope Using Arduino

As I am a poor person ,I can not afford an oscilloscope even most entry one. Currently I am working on switching power converters so I badly need to see the waveform. 
Then I thought to build a DIY scope with the components I already have. I searched the web and found the solution.

I have arduino uno and downloaded Processing IDE from this link http://processing.org/

I used 555 timer as a simple square wave oscillator. and connected it with arduino analog inputs. Connected arduino board with USB cable to my laptop.
now here I have done two steps .
Upload code to the arduino IDE.
code is here-
#define ANALOG_IN 0

void setup() {
  Serial.begin(9600); 
  //Serial.begin(115200); 
}

void loop() {
  int val = analogRead(ANALOG_IN);                                              
  Serial.write( 0xff );                                                         
  Serial.write( (val >> 8) & 0xff );                                            
  Serial.write( val & 0xff );
}
Step two
Upload code to the Processing IDE
Code is here-

import processing.serial.*;

Serial port;  // Create object from Serial class
int val;      // Data received from the serial port
int[] values;
float zoom;

void setup() 
{
  size(1280, 480);
  // Open the port that the board is connected to and use the same speed (9600 bps)
  port = new Serial(this, Serial.list()[0], 9600);
  values = new int[width];
  zoom = 1.0f;
  smooth();
}

int getY(int val) {
  return (int)(height - val / 1023.0f * (height - 1));
}

int getValue() {
  int value = -1;
  while (port.available() >= 3) {
    if (port.read() == 0xff) {
      value = (port.read() << 8) | (port.read());
    }
  }
  return value;
}

void pushValue(int value) {
  for (int i=0; i<width-1; i++)
    values[i] = values[i+1];
  values[width-1] = value;
}

void drawLines() {
  stroke(255);
  
  int displayWidth = (int) (width / zoom);
  
  int k = values.length - displayWidth;
  
  int x0 = 0;
  int y0 = getY(values[k]);
  for (int i=1; i<displayWidth; i++) {
    k++;
    int x1 = (int) (i * (width-1) / (displayWidth-1));
    int y1 = getY(values[k]);
    line(x0, y0, x1, y1);
    x0 = x1;
    y0 = y1;
  }
}

void drawGrid() {
  stroke(255, 0, 0);
  line(0, height/2, width, height/2);
}

void keyReleased() {
  switch (key) {
    case '+':
      zoom *= 2.0f;
      println(zoom);
      if ( (int) (width / zoom) <= 1 )
        zoom /= 2.0f;
      break;
    case '-':
      zoom /= 2.0f;
      if (zoom < 1.0f)
        zoom *= 2.0f;
      break;
  }
}

void draw()
{
  background(0);
  drawGrid();
  val = getValue();
  if (val != -1) {
    pushValue(val);
  }
  drawLines();
}

Here Is my Prototype-


Comments

Popular posts from this blog

কীভাবে নিজের হাতে বানাবেন এফ এম ট্রান্সমিটার। আসুন সবকিছু বুঝে করি।

কেমন আছেন সবাই? অনেক দিন পর আবার পোস্ট করছি।

রেডিও ট্রান্সমিটার নিয়ে অনেক পোস্ট হয়েছে। সবগুলোইখুব ভালো ছিল। কিন্তু কমেন্টগুলো পড়ে মনে হচ্ছিল পাঠকেরা আর একটু গভীরে জানতে চায়।কয়েক টা বিসেশ ইনফরমেশনের অভাবে তারা সেশ অবধি সফল হতে পারে না। আমিও কিছুদিন আগে এদের দলেই ছিলাম। যাই হোক, কথা না বাড়িয়ে শুরু করি। এফ এম কথার পুরো মানে হল ফ্রিকুয়েন্সি মডিউলেশন। সোজা কথায় একটা ফ্রিকুয়েন্সি কে আর একটা ফ্রিকুয়েন্সির প্যাকেটের ভিতর পুরে সাপ্লাই দেওয়া। এই ফ্রিকুয়েন্সির রেঞ্জ টা পড়ে ভেরী হাই ফ্রিকুয়েন্সী রেঞ্জে(VHF). ৮৮ থেকে ১০৮ মেগা সাইকেলস প্রতি সেকেন্ড।

পুরো সারকিট টা কে কয়েক টা ভাগে ভাগ করে নিলে বুঝতে সুবিধা হবে। ১।অসিলেটর পারট- এই পারট তা মূলত ক্যারিয়ার ফ্রিকুয়েন্সী তইরি করে। একটা ক্যাপাসিটর আর একটা ইন্ডাক্টার এর প্যারালাল কানেকশন এই কাজ টা করে থাকে। এটাই ট্রান্সমিটারের সবচেয়ে সেন্সিটিভ অংশ। এবার অসিলেটর এর ফ্রিকুয়েন্সী কত হবে সেটা বের করতে হবে নিচের সূত্র দিয়ে f = 1 / 2 x √LC = Hz   Where f is the frequency in hertz, x is the coil length, C is the capacitance of trimmer in Farads, and L is the inductan…

Make Three phase full wave rectifier circuit.

We know that three phase power supply is a very efficient way to supply power. Most of the industrial purpose three phase power is supplied. But sometimes industry need a high power DC supply to drive some special device like trolley buses, cranes etc. So, we need to rectify the three phase AC power supply to DC. There are mainly two methods of three phase full wave rectification 1. Three phase full wave uncontrolled bridge rectifier and 2. Full wave control rectifier. Three phase full wave uncontrolled bridge-



The uncontrolled version of three phase full wave bridge rectifier can be constructer by connecting by connecting six diodes in bridge configuration across the three phase AC power supply. Look the picture carefully Six diodes rectifies the three phase power supply then a large capacitor is used at the bridge output terminals across the load in order to minimize the ripple contents in the wave across the load. This in turn results in a constant output voltage which is pulsating DC i…

Basics of stepper motor

Basics of stepper motor
A stepper motor is a widely used device that converts electrical pulses to equivalent mechanical movement with high accuracy.
A stepper motor is widely used in disk drivers ,dot matrix printers , robotics and many other automatic applications.
Construction-
Stepper motor has a permanent magnet rotor that is also called shaft. The most common stepper motor has four stator winding and they are paired with a center-tapped common.
These types of motors are generally called “four phase stepper motor”.  Centre tap needs to change the direction of current flow in each two coils when a winding is grounded. This change in direction in current in stator coil changes the polarity of electromagnetic stator. It helps to control the direction of movement of shaft. 

A conventional motor runs freely, but in stepper motor the shaft moves in a fixed repeatable increment which allows one to move it to a precise position. This repeatable fixed movement is possible by using …