How To Make Oscilloscope using AVR


  • Measured frequency: 10Hz - 7.7 kHz
  • Voltage input: 24V AC / 30V DC (by using 1:10 prob)
  • Power supply: 12V DC
  • Liquid Display Crystal: Graphical 128x64 pixels
  • Measurement display area: 100x64 pixels
  • Information displaying area: 28x64 pixels
  • Triggering: Auto

Circuit Diagram

The operating voltage of the circuit is 12V DC. By this voltage, the power supply is producing 2 voltages. +8.2V for IC1 and +5V for IC2 and IC3. This circuit can measure from +2.5V to -2.5V or from 0 to +5V dependent by S1 position (AC or DC input). By using probe with 1:10 division you can measure almost 10 times higher voltages. Moreover, with S2 you can make an extra division by 2 the input voltage.

Programming The ATmega32
Burn the ATmega32 with AVR_oscilloscope.hex  and select external crystal at the fuses section.
After that, you Must disable the JTAG interface from your ATmega32 microController. If you don't do that, the mega32 will show you the initial screen and when it go to the oscilloscope screen it will restart immediately to the initial screen and it will stay there for ever.

The fuses that must be set in ATmega32 microcontroller.
The only 2 things you have to calibrate is the LCD contrast trimmer P2 and the P1, to move the beam at the center of the LCD. To do that, apply only the power supply to the circuit and adjust the P2 up to the point you will see clear the appeared pixels on the screen. Then, adjust the P1 up to the point the beam is moved at the middle of the LCD (at the horizontal line of the cross).

   You can move the beam up or down the screen by pressing the buttons S8 or S4 correspondingly to measure the voltage of the signal. 1 volt is taking up 1 square height.

With S7 and S3 you can increase or decrease the measurement speed. The minimum speed of a waveform that can be displayed on LCD is 460Hz. If you want to view a lower frequency waveform, for example 30 Hz,  you can press the S7 to shrink the waveform or S3 to extend the waveform up to the maximum sampling rate.

This oscilloscope has an automatic trigger. That means, if you have a continuous signal (ex a triagle waveform) the auto trigger will work perfect. If your signal is not stable (ex a serial transmittion) you can freeze the screen by pressing S6 switch. At his case you can get a snapshoot of your measurment signal. By the time you release the S6, the snapshoot will end.

PCB (101x160mm) and components placement.

Changes on v2.00 (firmware was updated)

  • Indication for Volts peak-to-peak, DC volts and frequency of the measured waveform is appeared on LCD.
  • Increased the sampling rate up to 7.7kHz. From 2300Hz the frequency indication is not very accurate because the frequency calculation is based on the took-up pixels on LCD of the waveform for one period.
Source Code

See AVR oscilloscope V2.00 in action.

AVR oscilloscope V2.00

Fb Comments
Comments :


Post a Comment