最大1MHzのDIYシンプル方形波ジェネレータ
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 3 | |||
![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
これは、基本的にTimerOneライブラリを使用する単純な方形波ジェネレータで、ピン9で約5Hz〜1 Mhzの範囲のPWM信号を生成でき、デューティサイクルを0〜100%に調整できます。
>デバイスの構築は非常に簡単で、いくつかのコンポーネントのみで構成されています:
-ArduinoNanoマイクロコントローラー
-LCDディスプレイ
-3つのプルアップ抵抗
-および3つのプッシュボタン
<図>
パルスジェネレータには、Arduinoのデジタル入力6および7に接続されたボタンを使用してパルス繰り返し周期を調整する機能があります。 13入力ピンを使用すると、デューティサイクルを調整できます。 LCD 16×2インジケーターの1行目には、持続時間とデューティサイクルの読み取り値が表示され、2行目には周波数の読み取り値が表示されます。パルス繰り返し周期を調整するための最小ステップは1μsであるため、周波数は離散的に変化します。たとえば、1μsは1 MHz、2μsは500 kHz、3μsは333.333 Hzなど、周波数が低下すると、調整のスムーズさが増します。これは、より高い周波数では非常に実用的ではありませんが、それは単純さの代償です。以前のビデオの1つで、同様のデバイスの構築について説明しましたが、これらの欠点がなく、範囲がはるかに広いが、構築がより複雑な専用のDDSチップの助けを借りています
出力信号を視覚化するために、小さなシングルチャネルオシロスコープを使用します。最後に、デバイスは適切なボックスに取り付けられます。これは、電子工学研究所のもう1つの便利なツールです。
コード
- Arduinoコード
Arduinoコード C / C ++
#include#include LiquidCrystal lcd(12、11、5、4、3、2); // RS、E、D4、D5、D6、D7unsigned long t =1000 、f、k =512; //デフォルト1000μs(1000 Hz)、蛇行、パルスバイトk1、kn、kn1、kn2; int drive、drive0; void setup(){lcd.begin(16、2); // LCD 16X2 pinMode(9、OUTPUT); pinMode(6、INPUT); //入力6のボタンpinMode(7、INPUT); //入力7のボタンpinMode(13、INPUT); //入力13のボタン} void loop(){Timer1.initialize(t ); //期間Timer1.pwm(9、k); // k-曲線因子0-1023。 kn =digitalRead(6); //ボタン入力6(-パルス周期)kn1 =digitalRead(7); //ボタン入力7(+パルス周期)kn2 =digitalRead(13); //ボタン入力13(+円の塗りつぶしfactor)if(kn ==HIGH){//周期を減らすdrive ++; if(drive <30){t =t-1; } //ボタンを長時間押し続けると、パルスの補正else if(drive> 30 &&drive <60){t =t-10; } else if(drive> =60 &&drive <100){t =t-100; } else if(drive> =100){t =t-1000; }} else {drive =0; } if(kn1 ==HIGH){//ピリオドdrive0 ++を追加します; if(drive0 <30){t =t + 1; //ボタンを長時間押し続けると、} else if(drive0> 30 &&drive0 <60){t =t +10;の修正} else if(drive0> =60 &&drive0 <100){t =t + 100; } else if(drive0> =100){t =t + 1000; }} else {drive0 =0; } if(t ==0 || t> 300000){// t =1の場合、パルス幅を最小に制限します。 } if(t> 200000 &&t <300000){//パルス幅をt =200000に制限します; } f =1000000 / t; //頻度を計算しますk1 =k * 100/1024; //%フィルファクターを計算if(kn2 ==HIGH){//フィルファクターを調整するためのボタン(k =k + 16からの円内; // 1024から16をステップ(よりスムーズな調整のために8を実行できます)} if(k ==1024){k =0;} //インジケーターに情報を表示lcd.setCursor(0,0); lcd.print( "T ="); lcd.print(t); lcd.print( "us"); lcd.setCursor(12,0); lcd.print(k1); lcd.print( "%"); lcd.setCursor(0,1); lcd.print( "F ="); lcd .print(f); lcd.print( "Hz"); delay(300); lcd.setCursor(0,0); lcd.print( ""); lcd.setCursor(0,1); lcd.print( "");}
回路図

製造プロセス