HOME > 電子工作
ATmega328Pを用いて簡易オシロスコープ(リアルタイム・オシロスコープ)をつくる

はじめに
ATmega328Pを用いて簡易オシロスコープ(リアルタイム・オシロスコープ)を制作しましたのでご紹介します。ATmega328PのADC変換時間は、安定して取得するためには、20μsほど掛かるため、制作した簡易オシロスコープのサンプリングレートは、50KS/sです。
用意するもの
制作に必要なものは下記の通りです。
- ガーバーファイル
:PCBWayなどに、基板製造依頼してください。
- Arduino Bootloader書込済(5V 16MHz仕様) ATmega328Pを1つ
- CH340E USBシリアル変換モジュール Type-Cを1つ
- C基板用アクリルパネル(アクリル板) 2mm厚(透明)を2つ
- スペーサー M3 5mm TP-5SMを4つ
- 3mmプラネジ(5mm)を4つ
- 3mm六角ナット M3を4つ
- スペーサー M3 18mm TP-18を4つ
- I2Cバス用双方向電圧レベル変換モジュール(FXMA2102)を1つ:3.3V←→5Vのレベル変換に用います
- 3mm赤色LED 625nm 70度 OSR5JA3Z74Aを1つ
- クリスタル(水晶発振子) 16MHzを1つ
- 積層セラミックコンデンサー 22pF50V C0G 5mmを1つ
- スライドスイッチ ISH-1260-HA-Gを1つ:5V、3.3Vの切り替え
- BNCコネクター BNC-J 基板取付型横向きを2つ
- 低損失レギュレーター LP2950L-33-T92 3.3V100mAを1つ:5Vから3.3Vをつくる
- タクトスイッチを1つ:マイコンRESET
- 積層セラミックコンデンサー 0.1μF50V X7R 2.54mmを3つ
- 積層セラミックコンデンサー 10μF50V X7S 5mmを1つ
- ダイオード 1N4148を2つ
- 多回転半固定ボリューム 3006P 20kΩを1つ:分圧
- カーボン抵抗(炭素皮膜抵抗) 1/4W15kΩを1つ:分圧
- カーボン抵抗(炭素皮膜抵抗) 1/6W1kΩを1:保護
- カーボン抵抗(炭素皮膜抵抗) 1/6W4.7kΩを2つ:プルアップ抵抗
- カーボン抵抗(炭素皮膜抵抗) 1/6W10kΩを1つ
- カーボン抵抗(炭素皮膜抵抗) 1/6W330Ωを1つ
![]() |
▲ 開発当初はユニバーサル基板を使ったが、 写真の基板はPCBWayに発注した。 |
回路図
簡易オシロスコープの回路は上図のようになります。
信号入力の回路は、分圧により、0V-10Vを入力することができます。Wave Generatorの回路は、レベル変換することにより、スイッチで3.3Vと5Vが選択できます。
信号入力の回路は、分圧により、0V-10Vを入力することができます。Wave Generatorの回路は、レベル変換することにより、スイッチで3.3Vと5Vが選択できます。
1)信号入力は、18kΩの抵抗と20kΩのボリュームで分圧しています。1:1になうよう、ボリュームで調整します。
2)3.3V←→5Vのレベル変換するのには、I2Cバス用レベル変換モジュール FXMA2102を利用します。

レベル変換モジュールに何を選択するか、またプルアップ抵抗の抵抗値を何にするかによって、高周波数信号の波形がなまってきます。 色々なPICマイコンへの書き込みで試しましたが、FXMA2102でもいけます。プルアップ抵抗の抵抗値は ATmega328Pでは4.7kΩがいいようです。
ソフトウェア
オシロスコープ操作
下記のように、PCとUSB接続(仮想COM、UART)して、PCより操作します。
Windows用ソフト(2025.5.26更新)
1)簡易オシロスコープのCH1にターゲットの信号を入力します。
2)PCとUSB接続(仮想COM、UART)して、PCより簡易オシロスコープを操作します。自作のWindows用ソフトを作成しましたので、下記に紹介します。
Windows用ソフト(2025.5.26更新)

![]() |
簡易オシロスコープをPCとUSB接続して、PC側より、Windows用ソフトを起動します。 |
![]() |
入力信号をOffします。 |
![]() |
トリガーを設定します。 |
![]() |
入力信号をOnすると、トリガーにより、波形を捉えることができます。 |
終わりに
以上です。この他にも、自作PICライタを制作したりしています。