2016/1/12
前回のものは改善されなかったのでそのままにして
本題に移った。
作成目標は
・AD9851×2
これらをひとつの基板上にジャンパー線を使わずに配線する。
昨年のものを引き継ぎつつ、フィルターを取り除き、Arduinoを裏から差し込む形で実現予定。
この回路図を元に設計する。
作成した回路図が下図。
なおアンプ部は何を使うのか確認していなかったため
とりあえず除いてある。追加予定。
昨年のものを参考にしているため用途不明(ジャンパー線用?)のconn1、conn2があるため要確認。
Arduinoのピンに合わせたフットプリントを作成し、CvPcbを実行後PcbNewでとりあえず配置してみたものが下図。
アンプとconn1,2を仮としているためとりあえず形になるか試してみただけに過ぎないが
左:GNDゾーン
右:AGNDゾーン
とした場合にこのような配置がいいのではないかと思われる。
確認事項
・アンプの有無、種類。
・VDD,VCC電源。
・conn1,2の用途。
・穴、配線のプリント可能な大きさ。
2015-12-12
前回、スケマは終わったので
今回はレイアウトをする。
Pcbnewを開いてデザインルールなどを設定後、前回作成したネットリスト読み込んだ。
とりあえずばらばらに配置してみると、RV1,RV2が資料と違うフットプリントだった。
資料のものと同じものに変更しようとしたが、ない。
いろいろ試してみると、ライブラリが同じファイル内にあるが認識されていないことが原因ではないかということで
CvPcb→設定→ライブラリ→フットプリントライブラリファイル
にライブラリを追加し、ユーザー定義パスをそのライブラリがある場所に設定すると探していたフットプリントが表示された。
資料どおりに配置した。
RV1,RV2のピン配置が違ったので修正し、
Q1は形がいびつなので修正するためにモジュールエディタを開き、
ライブラリからモジュールを読み込み→Q1と同様のものを選択→新規ライブラリ作成
→名称を設定
パッドと図形を設定後、保存しようとしたがエラー。
保存場所やライブラリを変えてみたが改善されなかった。
次回はこの改善からはじめようと思う。
2015-12-11
KiCadの学習に取り掛かった。
まずは資料を参考にして作成した。
ライブラリエディタでコンポーネントを作成した。
IOピンのエレクトリックタイプは双方向とし
GNDは電源入力とした。
次に資料どおりにコンポーネントと電源を配置した。
このとき3ピンの可変抵抗のコンポーネント場所がわからずにとりあえず2ピンのものを置いている。
後に発見したがdeviceのPOTがそれであった。
配線を行った。特に変わったことはしていない。
ここでアノテーションをし、ERCを実行したところ画面下のほうの電源周りがエラーをはいたので電源にFLAGをたてた。
FLAGを立てなくてもできると聞いたのでいろいろ試行(ピンの編集など)したがエラーは消えなかった。そこで元に戻してみると今度はなぜか上の電源がエラーをはくようになった。
電源周りはエラーがよくわからないので解消していこうと思う。
ネットリストを作成し部品表を生成。
その後CvPcbを実行。
RV1,2は資料ではPOTYPが割り当てられているが、探しても見当たらなかった。
また、自動絞込みも機能するときとしないときがあり、よくわからなかった。
フットプリントは何に何を割り当てるべきかわからないのでそこも学習しようと思う。
7/16
前回できなかった[Analog read pin example]だが
今回改めて実行してみたら問題なく正しい値が表示された。
前回の問題の原因は分からずじまいだが正しく動作しているのでこのまま続けようと思う。
7/7
まずLabVIEWをインストール。評価版だが問題なく起動した。
次にVI Package Managerをインストール。
起動したら[LabVIEW Interface for Arduino]を選択し、左上のInstall and upgradeを実行。
次にNI_VISAをインストール。
そして、LabVIEWを起動しArduinoのサンプル[Analog Read Pin Example]を開いた。
しかし、実行しようとすると
このようなエラーコードをはいてしまった。
Arduino Resourceに何も表示されないので、Arduinoのドライバーに問題があると思い再インストールしてみたが同様なエラーをはいた。
VISAはちゃんとインストールされており原因はわからない。
Arduinoでは[COM3]とでており認識されていた。
LabVIEWが評価版なことに原因があるのかもしれない。
後日また検証してみる。
6/18
3.3Vの出力を得るためにUSB可変安定化電源モジュール作成した。
最初は、はんだごてを300度に設定していて上手くいかなかった。はんだは焦げてしまい、ミスも多くなってしまった。
400度に設定すると上手くいったが、たまにはんだが溶けないときがあった。はんだを別のものにしたらよく溶け、よくなじみ、はんだ付けがしやすかった。
色々な要因により手間がかかったが、はんだの感覚は取り戻せた気がする。
6/4
温度によりLEDの色を変化させるプログラム。
----------------------------------------------------------------
const float RefV=1.1;
float temp1, temp2, temp3, temp4, temp5;
void setup(){
// シリアル通信の設定
Serial.begin(9600);
// AD変換の参照電圧を内部参照(1.1V)とする。
analogReference(INTERNAL);
}
void loop(){
// 使用変数の宣言
int i1, i2, i3; // 各LEDの電流値
// 温度データの取得
int indata=analogRead(0);
float temp = (RefV/1024)*indata/0.01;
temp5 = temp4;
temp4 = temp3;
temp3 = temp2;
temp2 = temp1;
temp1 = temp;
temp = (temp1+temp2+temp3+temp4+temp5) / 5;
// 青色(blue)用の電流値設定
/* f
低温領域(T<Tc1)のみ値をとるようにする
*/
float currmax1 = 255;
float currmin1 = 10;
float Tmin1 = 22;
float Tc1 = 26;
if (temp < Tc1)
{
if (temp < Tmin1)
{
i1=int(currmax1);
}
else
{
i1=int( (currmin1-currmax1)*(temp-Tc1)/(Tc1-Tmin1)+currmin1);
}
}
else
{
i1=int(currmin1);
}
// 緑色(green)用の電流値設定
/*
中温領域(Tmin2<T<Tmax2)のみ値をとるようにする
*/
float currmax2 = 255;
float currmin2 = 10;
float Tmin2 = 22;
float Tc2 = 26;
float Tcw2 = 1;
float Tmax2 = 30;
if (temp > Tmin2) {
if (temp < Tmax2) {
if (temp < Tc2 - Tcw2) {
i2=int( (currmax2-currmin2)*(temp-Tmin2)/( (Tc2-Tcw2)-Tmin2)+currmin2);
}
else {
if (temp > Tc2 + Tcw2) {
i2=int( (currmin2-currmax2)*(temp-Tmax2)/(Tmax2-(Tc2+Tcw2))+currmin2);
}
else {
i2=int(currmax2);
}
}
}
else{
i2=int(currmin2);
}
}
else{
i2=int(currmin2);
}
if (i2>255) {
i2=255;
}
// 赤色(red)用の電流値設定
/*
高温領域(Tc3<T)のみ値をとるようにする
*/
float currmax3 = 255;
float currmin3 = 10;
float Tc3 = 26;
float Tmax3 = 30;
if (temp > Tc3) {
if (temp < Tmax3) {
i3=int( (currmax3-currmin3)*(temp-Tc3)/(Tmax3-Tc3)+currmin3);
}
else {
i3=int(currmax3);
}
}
else{
i3=int(currmin3);
}
// 設定電流値のシリアル出力
Serial.print("T=");
Serial.print(temp);
Serial.print(" C, blue = ");
Serial.print(i1);
Serial.print(", green = ");
Serial.print(i2);
Serial.print(", red= ");
Serial.print(i3);
Serial.print(", sum= ");
Serial.println(i1+i2+i3);
// 設定電流値の電流出力
analogWrite(9,i1);
analogWrite(10,i2);
analogWrite(11,i3);
}
------------------------
このサイトを参考に学習した。