つれづれなる備忘録

日々の発見をあるがままに綴る

TinkercadによるArduinoシミュレーション37 ~ 反転シュミットトリガ発振周期

 今回は前回の補足として反転シュミットトリガを利用した発振回路の周期の計算値とTinkercadのシミュレーションの値の差を埋めるため、Tinkercad上で反転シュミットトリガの閾値を調べたのでこれを紹介する。

atatat.hatenablog.com

1. 反転シュミットトリガを利用した発振回路の周期

 前回のキャパシタ、抵抗値と74HC14のデータシートの閾値値からパルス周期を計算した場合は43.9msで、Tinkercadのシミュレーションでは35.5msで少し差があった。そこで、データシートの閾値の代わりにVTLHとVTHL,VH,VL「シュミットトリガ回路」の解説(4) - しなぷすのハード製作記の図42の要領で、Tinkercadシミュレーション上の入力波形の最小値、最大値および出力波形のLOW,HIGH電圧から取得して、前回使用したパルス周期を設計計算式:

 \displaystyle T=CR \left( \ln \dfrac{V_{H}-V_{THL}}{V_{H}-V_{TLH}}+\ln \dfrac{V_{TLH}-V_{L}}{V_{THL}-V_{L}} \right)

で再計算する。

2. 反転シュミットトリガの入出力波形電圧取得

 前回の接続の反転シュミットトリガを利用した発振回路から入力をArduinoのアナログ入力ピンA0,出力をA1に接続する。また波形の様子がわかるようにオシロスコープにも接続する。なおキャパシタは前回と同じく48uF,抵抗は1kΩにしている。それぞれのアナログピンに入力される電圧値を取得して、下図のように入力電圧の最小値がVTHL、最大値がVTLHまた、出力波形から,VH,VLもそれぞれ取得する。なおpulseInを同時に使用するとアナログピンの入力電圧が連続的に取得されなくなるので、pulseInのスケッチと接続(使わなければ接続していても問題ないが)は除去した。

反転シュミットトリガの閾値取得
反転シュミットトリガの閾値取得

スケッチは以下のようにしたが、アナログ入力A0,A1のそれぞれの電圧最大、最小を取得するようにしている。少なくとも波形の1周期分の入力電圧を取得して、最大・最小電圧を決定する必要があるが、今回はcntを適当な数に設定することで調整している。cntが規定数達した段階で入力・出力波形の最大・最小値をシリアルモニタに表示するようにしている。

int cnt=0;
float vin,vmin=5,vout,vmax=0,vomax=0,vomin=5;
int a0,a1;
void setup()
{
  Serial.begin(9600);    
}

void loop()
{

  a0=analogRead(A0);//入力電圧読み出し(0-1023)
  a1=analogRead(A1); //出力電圧読み出し(0-1023)

  vin=(float)a0/1023*5; //電圧値に変換
  vout=(float)a1/1023*5;//電圧値に変換
  if(vin<vmin){
    vmin=vin;
  }
  if(vin>vmax){
    vmax=vin;
  }
  if(vout>vomax){
    vomax=vout;
  }
  if(vout<vomin){
    vomin=vout;
  }
 
  if(cnt==1000){ //カウントは適当に設定

    Serial.print("Vmax: ");
    Serial.println(vmax);
    Serial.print("Vmin: ");
    Serial.println(vmin);
    Serial.print("Vo max ");
    Serial.println(vomax);
    Serial.print("Vo min ");
    Serial.println(vomin);
    
    cnt=0;
    vmin=5;
    vmax=0;
    vomax=0;
    vomin=0;
  }

 cnt++;
}

3. 実行結果

 上記の条件でTinkercadシミュレーションを実行した結果VH=4.33V,VL=0V,VTLH=2.61V, VTHL=1.88Vが得られた。さらにC=48uF, R=1kΩとして上の式でパルス計算するとT=32.7msが得られた。Tinkercadのシミュレーションでは35.5msだったので、設計計算式の結果とだいぶ近づいてきている。

なおVcc=4.5Vの場合の閾値電圧のばらつきはデータシート(http://akizukidenshi.com/download/ds/Toshiba/TC74HC14AP_datasheet_ja_20140301.pdf)から以下の関係になっている。

電圧 最小 標準 最大
VTLH 2.3 2.7 3.15
VTHL 1.13 1.6 2.0

今回はArduinoからVccを供給しているので5Vとなるが、Vcc=4.5Vの閾値のばらつきの範囲内に収まっている。

4. まとめ

 今回はTinkercad上で反転シュミットトリガの閾値を調べた上で、発振回路の周期を設計計算式で計算した結果がTinkercadのシミュレーションの値に近づいたことを紹介した。