至於為什麼一次買那麼多支呢?沒辦法,單買一支的話運費都比較貴了QAQ
原本想要買IN-13的,不過電路都差不多複雜,於是就買便宜的吧
這次的真空管是顯示長條型的,電源需求140V,藉由改變電流來控制顯示的長度
電路圖如下:
這個電路有兩個作用,第一是當作溫度計,第二是他可以藉由DAC讓Arduino來控制
上面的LM34出來後,用OPA放大十倍,直接送入IN-9的電流控制區
下面的是用DAC7571輸出送入IN-9的電流控制區
電路先用麵包版驗證:
目前驗證成功啦~~旁邊有兩台三用電表,一個是顯示DAC輸出電壓(V),一個是顯示IN-9的電流(mA)
可以看出來目前的設定是Vin / 500 = I
電路還需要一些的細部調整,主要是Vin和I的比值,這是藉由電路圖中的R1所調整,還在想說要不要用IN-9上端得比較沒那麼線性的部分(大概10mA UP)
電路還需要一些的細部調整,主要是Vin和I的比值,這是藉由電路圖中的R1所調整,還在想說要不要用IN-9上端得比較沒那麼線性的部分(大概10mA UP)
至於DAC7571,這是一個非常簡易的DAC IC,基本上就是一個12bit的可變電阻配上一個內建的Rail-to-Rail OPA buffer,溝通方式是i2C,而且這一切都濃縮在一個SOT-6的封裝裏
6支針腳已經是最精簡了,一組電源一個輸出兩個溝通一個位置選擇
放在Layout的電路板上真是省空間Y(^_^)Y
以下是控制DAC7571的CODE:
#include <Wire.h>
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.println("ADC Test");
}
void loop() {
for (int i = 0;i<=4096;i++){ //12bit = 4096 step
writeADC(i);
Serial.println(i);
delay(3);
}
}
int writeADC(int value){
byte a = value%256; //Wire send one byte at a time so use this to split a int
byte b = value/256;
Wire.beginTransmission(0x4C); //A0=LOW
Wire.write(b);
Wire.write(a);
Wire.endTransmission();
}
#include <Wire.h>
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.println("ADC Test");
}
void loop() {
for (int i = 0;i<=4096;i++){ //12bit = 4096 step
writeADC(i);
Serial.println(i);
delay(3);
}
}
int writeADC(int value){
byte a = value%256; //Wire send one byte at a time so use this to split a int
byte b = value/256;
Wire.beginTransmission(0x4C); //A0=LOW
Wire.write(b);
Wire.write(a);
Wire.endTransmission();
}