2015年7月28日 星期二

桌上型冷氣

記得大學時曾聽過一個交大做機器人的教授提過,
真正要研究一門學問,
連最根本的細節都要瞭解.

所以為了補足工程領域的知識,
就只好透過實作來做一些爛東西來學習 (它到現在CP值都還沒超過電風扇 T_T)
------------------------------------------------------------------------

目前設計的模型如圖所示,
最前面是放濾網和電腦用的4 pin風扇,
把中間核心的致冷片產生的冷氣抽出來,
而致冷片產生的熱量透過後面導熱金屬經由散熱風扇抽掉.
(中間有留空間放冰塊,如果有需要的話)
就是這個簡單的設計.

------------------------------------------------------------------------
致冷晶片的原理大致上是利用半導體元件的特性,
一塊N型半導體與一塊P行半導體材料聯成電偶對,
在電路中接通直流電留後,會產生能量的轉移.
當電流由N型元件流向P型元件的接頭吸收熱量,就成為冷端.
反之,電流由P型元件流向N型元件的接頭釋放熱量,就成為熱端.
吸收熱量和放出熱量的大小由電流大小決定.
所以熱端的散熱和電流的安培數是主要讓機器能有用的關鍵.

買的致冷器型號是TECI-12703,
127為致冷元件的電偶對數,0.3為允許電流值(安培),
致冷元件的極限電壓近似於電偶對數x0.11,V=127x0.11=13.97(V)

------------------------------------------------------------------------
最後零件和材料齊了以後,
搞定電壓和安培是件麻煩的事情,
如果之後要接MCU板子,
來控制電路,必須要+繼電器來控制大電流,
因為USB最多只能供5v的電壓,
而致冷片其實超耗電,至少要12v 3安培的電流(還有更高的),
能源轉換率也只有40% (傳統冷氣壓縮機有95%).

------------------



最後補這張暫時的模型,
之後如果有時間STM32MCU控制板接上去,
透過程式就能做更多事情了

------------------


arduino Leonardo 測試 Code
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX | TX
int relay1=8;                                   //set relay 1 at pin No.8
int iLedPin        = 13;

void setup() 
{
  //pinMode(7, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  //digitalWrite(7, HIGH);

  pinMode(relay1,OUTPUT);       //set relay to out put
  delay(1000);
  Serial.begin(57600);
  mySerial.begin(9600);
}

char inByte=0;
int i=0;
void loop() {
    
  delay(1000);
  
  if (mySerial.available())
  {
    if(i==0)
    {
        Serial.write("H");
      digitalWrite(relay1,HIGH);
      i=1;
    }
    else
    {
      i=0;
      Serial.write("L");
      digitalWrite(relay1,LOW); 
    }
    Serial.write(mySerial.read());
  }
  
  if (Serial.available())
  { 
    mySerial.write(Serial.read());
  }
}

------------------
android code

public void Reg()
{
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (!mBluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
((Activity)mContext).startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
// Otherwise, setup the chat session
}

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
((Activity)mContext).registerReceiver(mReceiver, filter);
}


public final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {

if (BluetoothDevice.ACTION_FOUND.equals(intent.getAction())) {

BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.d(this.getClass().getName(), "device.getName = " + device.getName());
Toast.makeText(mContext, device.getName(), Toast.LENGTH_SHORT).show();

if (device.getName().equals("HC-05")){
try {
Log.d(this.getClass().getName(),"Connect success = " + device.getName());

mBluetoothAdapter.cancelDiscovery();

mBluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);
mBluetoothSocket.connect();

mOutputStream = mBluetoothSocket.getOutputStream();

String message = "h";
mOutputStream.write(message.getBytes());
mOutputStream.flush();

} catch (IOException e) {
Log.d(this.getClass().getName(),"Exception = " + e.getMessage());
}
}
}
}
};

------------------

參考資料:

沒有留言:

張貼留言