2017年11月14日 星期二

學習171114.火燄感應模塊3針,火災警報器

學習171114.火燄感應模塊3針,火災警報器

此模塊感應紅色火燄或波長760~1100nm光源,
輸入DC3.3V~5V,輸出數位訊號,
常態輸出高電平,有感應時輸出低電位,↓



數位開關可使用內建範例Digital>Button,
將模塊輸出腳接在Arduino的Pin2,↓

上傳程式後UNO板上的Pin13燈常亮,
取火靠近感應器,勿太接近以免燒壞設備注意安全,
當有感應時Pin13燈熄滅,可調整板上電位鈕控制敏感度,
火燄越大感應距離可越遠,實測發現對藍色火燄沒反應,


若以上沒問題,將程式底部修改,Pin13的HIGH與LOW參數相反,
使常態燈不亮,有感應時亮燈,
並加裝有源蜂鳴器在Pin13,即成了火災警報器,↓






www.ee543.com

2017年8月8日 星期二

學習170808.光電測轉速模塊MH測TT減速馬達

學習170808.光電測轉速模塊MH測TT減速馬達

準備以下硬體並安裝↓
Arduino UNO R3
光電測轉速模塊MH
公對母杜邦線
TT減速馬達
20格輪盤



此光電模塊輸出數位訊號,A0腳位是無效的,先搭配內建數位開關程式來測試,
可參考學習131數位開關,接好硬體上傳內建範例Digital>Button↓


上傳後取金屬起子紙板塑膠尺等物在感應槽來回移動,UNO內建P13燈會隨訊號熄亮,
測試一些材料後會發現此模塊無法感應部分塑膠材質,
確認模塊沒問題,來測試TT減速馬達的轉速,此搭配20格輪盤及18650電池,↓

此模塊和對射式光電感應模塊FC33功能是相同的,可參考學習170513,
程式也一樣,找出拼圖上傳打開監視小窗↓

{
  pinMode( 2 , INPUT);
  Serial.begin(9600);
}

void loop()
{
  _ABVAR_1_BTS = digitalRead(2) ;
  if (( ( _ABVAR_1_BTS ) != ( _ABVAR_2_BTL ) ))
  {
    if (( ( _ABVAR_1_BTS ) == ( HIGH ) ))
    {
      _ABVAR_3_count = ( _ABVAR_3_count + 1 ) ;
      Serial.print(_ABVAR_3_count);
      Serial.println();
    }
  }
  _ABVAR_2_BTL = _ABVAR_1_BTS ;
  delay( 10 );
}

通電啟動馬達就會開始計數,計時60秒後約1600,除以20格後約80RPM,
此為特殊齒輪比馬達,測其他一般的TT馬達約180RPM,
注意電腦與Arduimo的通信速率為9600,只要速度高於9600就會漏數,
就要過減速齒輪或降低光柵格數
影片



www.ee543.com

2017年7月28日 星期五

學習170724.反射式紅外線避障模塊

學習170724.反射式紅外線避障模塊

此模塊功能為物件接近時,輸出數位訊號,
輸入電壓DC3.3V~5V,GND及Vcc+,
由紅外線發射器發出訊號,反波後由接收器接收,
常態輸出高電平,有物接近時輸出低電位,↓


數位開關可參考學習131,130等按鍵控制LED燈,
使用內建範例Digital>Button,
將模塊輸出腳接在Arduino的Pin2,↓

上傳程式後在無物靠近狀態下UNO板上的燈常亮,
當有物件靠近時Pin13燈熄滅,
也可修改程式使相反有物亮燈,無物熄燈,↓

可調整模塊上的電位器,來控制接近的距離反應,
每種材質及顏色都會影響紅外線的接收距離,
此模塊可裝在自動車上,作接近物件時的判斷,
因此驅動馬達時需搭配馬達驅動板或繼電器使用,


www.ee543.com


2017年5月26日 星期五

學習170527.4針可調光敏模塊

學習170527.4針可調光敏模塊

之前學習了使用光敏電阻讀取數據來控制燈開關,
而此模塊可輸出數位訊號及類比數據,
並帶有電位器,可直接調整以搭配環境光源來觸發訊號,


類比訊號可參考學習310接收類比訊號
使用內建範例Basics>AnalogReadSerial,
將模塊的類比訊號腳接上UNO板的A0,上傳後開啟監控視窗,取得類比數據,


另可參考學習340光控感光燈,
將環境數據達到某個數值,則啟動內建P13LED燈


數位開關可參考學習131,130等按鍵控制LED燈,
使用內建範例Digital>Button,
將模塊的數位輸出腳接在Arduino的Pin2
調整模塊電位器,當環境亮時輸出低電平,環境暗時輸出高電平,
以啟動控制P13LED燈,



此模塊的數位輸出已搭配電位器設計,
可在環境暗時直接輸出高電以點亮LED燈,
因此可不需要Arduino,可直接接上外部LED燈,
但輸出電流低,若要啟動其他設備需搭配低電平電位器,
以下影片前部當環境暗時啟動燈,後部影片則相反的當環境亮時才啟動馬達,




www.ee543.com

2017年5月15日 星期一

Arduino170513.對射式光電感應模塊FC33測馬達轉速計數器

學習170513.對射式光電感應模塊FC33測馬達轉速計數器

在學習按鍵計數器完成後,要搭配光電感應模塊來測馬達電機轉速,
此模塊主晶片為LM393,響應時間約10uS,腳位為訊號/GND/VCC,
內建帶燈,在有物件遮蔽時輸出高電位內建燈熄,
反之無遮蔽時輸出低電位內建燈亮↓


準備以下硬體並安裝↓
Arduino UNO R3
對射式光電感應模塊FC33
公對母杜邦線
馬達(最好RPM1000以下,此篇安裝TT馬達)
光柵輪盤或風扇片



此篇單純測試轉速,所以馬達另外供電啟動,和Arduino無直接連接↓


和學習"按鍵計數器"一樣的拼圖程式,將閃燈去除,時間修改為10ms,
此模塊反應時間為10us,而1000000us=1秒,即1秒可達100000次,
理論上應可測試RPM60萬轉速,但需Arduino及程式等搭配,
在網上有許多換算過直接顯示RPM的程式,但每個程式測試後的誤差很大,

所以此用簡單的計數程式,不換算轉速,用手動計時的方式,減少UNO板的計算負擔↓

bool _ABVAR_1_BTS= false ;
bool _ABVAR_2_BTL= false ;
int _ABVAR_3_count = 0 ;

void setup()
{
  pinMode( 2 , INPUT);
  Serial.begin(9600);
}

void loop()
{
  _ABVAR_1_BTS = digitalRead(2) ;
  if (( ( _ABVAR_1_BTS ) != ( _ABVAR_2_BTL ) ))
  {
    if (( ( _ABVAR_1_BTS ) == ( HIGH ) ))
    {
      _ABVAR_3_count = ( _ABVAR_3_count + 1 ) ;
      Serial.print(_ABVAR_3_count);
      Serial.println();
    }
  }
  _ABVAR_2_BTL = _ABVAR_1_BTS ;
  delay( 10 );
}


上傳後打開電腦的監視小窗,啟動馬達就會開始計數,除以20格後約180RPM,
為了測試模塊反應時間,將光柵輪盤換成了風扇片,由20格降低為3次,
並接上外接顯示LED,另參考學習螢幕轉接板IIC/I2C


因Block積木沒有完美對應外接I2C螢幕,所以手寫修改程式↓

#include <Wire.h>
#include <LiquidCrystal_I2C.h> //務必先安裝資料庫
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //注意0x3F螢幕位址

bool _ABVAR_1_BTS= false ;
bool _ABVAR_2_BTL= false ;
int _ABVAR_3_count = 0 ;

void setup()
{
  pinMode( 2 , INPUT);
  Serial.begin(9600);
  lcd.begin(16, 2); //初始化16字元2行

  for(int i = 0; i < 2; i++) {
    lcd.backlight();
    delay(200);
    lcd.noBacklight();
    delay(200);
  }
  lcd.backlight(); //閃爍2次後點亮背光
  lcd.setCursor(0, 0); //第一行顯示
  lcd.print("0");
}

void loop()
{
  _ABVAR_1_BTS = digitalRead(2) ;
  if (( ( _ABVAR_1_BTS ) != ( _ABVAR_2_BTL ) ))
  {
    if (( ( _ABVAR_1_BTS ) == ( HIGH ) ))
    {
      _ABVAR_3_count = ( _ABVAR_3_count + 1 ) ;
      Serial.print(_ABVAR_3_count);
      Serial.println();
      lcd.clear();
      lcd.print(_ABVAR_3_count);
    }
  }
  _ABVAR_2_BTL = _ABVAR_1_BTS ;
  delay( 5 );
}

經過測試20格的光柵輪盤或3葉風扇片,換算為RPM後誤差不大,
而外接I2C螢幕後計數變慢了,誤差變大,
所以建議還是用電腦監視小窗會較理想,不要再增加程式的負擔,
影片


測試過幾種不同馬達後發現,由於Arduimo的通信速率為9600,
1分鐘為60秒=60000ms/9600=6.25ms,
因此只要快於該速度回傳到電腦監控螢幕就會漏數,
若要測高轉速馬達,建議過減速齒輪或減少轉盤空格,
或是修改程式不要每次高低訊號都回傳電腦螢幕,



www.ee543.com

2017年4月21日 星期五

修電蚊拍+改電蚊拍

修電蚊拍+改電蚊拍

新的電蚊拍用一段時間後,就會變的無力,
網路上許多文章都告知原因是電容的擊穿問題,
但拆解玩過幾支後發現,大多是電網因氧化提高了電阻,
造成電蚊只能短時間昏迷麻痺而無法擊斃,
除了電網氧化影響,還有電池及電容的老化的問題,
若手邊無電容無電池可換,就先把網面清理試試吧,
另電網電壓超過1000V,千萬不要拿一般電表量測電網電壓,

拆解時外表容易看到2個螺絲,另外還有2~3個螺絲,
隱藏在貼紙下,注意拆殼時先取金屬起子在電網上放電,
確認電容裡無電以免被電到,↓

取下螺絲拆蓋,此款是內建充電池,除了拍蚊時的壓按開關,
還有一個關閉電源的切換開關,尾端有插頭直接充電用,↓

用三用電表量測電池2端,電池種類很多種,電壓都不太相同,
此款量測為DC2.67V,算是低了些,不過還可充電正常使用,
有些拍使用不可充電的乾電池,則為1.5V*2=3V,
有試改過使用18650電池也沒問題,充電式的電池應經常保持電力,
若到完全沒電又放著,就無法再蓄電了,↓

取下電路板,此款是充電式的,電路板接插頭的部分是充電器功能,
另前半部是從電池經過線圈升壓到電容,再一次放電到電網,
可在網路上搜尋電蚊拍電路圖,細部不同但原理相同,↓

發現大電容附近有明顯蠟質物影響燒焊,不知是不是電容的流出物,↓

取下最大的電容,一般為223J2KV的麥拉電容又稱薄膜電容,
此功能是將升壓的電流,儲存在此,再一次瞬間放電,
當電容的容量越大,所能放出的電流就越強,
而電容使用一段時間蓄電力就會降低或擊穿,
當擊穿時用電表可量測為短路狀態則為完全故障,
若只是降低電容量用一般電表是無法量測的,↓

準備2個新的電容,223J2KV,該標示2KV=2000V,
223=22*10^3次方=22000pF=0.022uF,J為正負差5%,
為加強電擊效果,將電容並接提升容量為2倍即0.044uF,↓


麥拉電容無極性,無分邊,將新電容焊上原腳位孔,並剪去多長的腳,↓


因安裝空間問題,另一個電容焊在板的背面,一樣不分極性,↓


都焊上後不急著安裝,取一字起子沿網邊拆開膠框取下電網,
共有3片,接線內正外負,用砂紙鋼刷等去除網上氧化物,
若有變形一併整形,會發現電網的金屬顏色差異很大,↓

都完成了就裝回,找實驗體去囉,不過通常都躲起來了,↓


近日蚊過多,另找一支老將維護,拆殼後先測電池是否正常,
電壓為4.28V沒問題,↓

取下最大的電容,一樣是使用223J 2000V,
這次要換上容量更大的563J,比223J*2更大,
因為563J2KV比較大顆,要注意空間,不過裝過大多都是可行的↓


電路板設計大同小異,一樣是後半部充電器,前半部升壓蓄電,↓


焊好電容先不裝回,沿著膠框拆下電網處理氧化及整形,
圖片砂紙附近磨過後的顏色明顯亮白,↓

563J2KV比較大顆,裝回"喬"一下就OK,老將重出江湖擊殺敵軍去,↓

要剛好找到實驗體並錄影實在困難,補上電擊蒼蠅後的結果,
雙眼大頭連著脊椎神經在電網上,身體已支離破碎,
屍首分離~慘不忍睹~千萬不要拿去惡作劇呀,↓


www.ee543.com

2017年4月11日 星期二

Arduino學習.按鍵計數器

Arduino學習.按鍵計數器

會用按鍵來控制LED燈後,此篇要用按鍵來計算次數,
並顯示在監控螢幕上,準備硬體安裝
開關*1
10K1k電阻*1
接線

外掛ArduBlock找出拼圖

上傳後打開監控畫面,並壓下按鍵,正常情形下,在未通路前GND訊號經過電阻到P2,當按鍵被壓下,高電位被傳送到P2腳位時,則變數count+1,並顯示在監控畫面上,此時應會發現,當按鍵一直被壓著,就會一直計算,因此需另多加判斷式,來判斷P2是否放手回復,才算一次↓
設定變數BTS和BTL是按下和放手,二種不同狀態,來判斷P2腳位是否有高位和低位的變化,當有變化時才計一次,沒變化時就不計次,此程式可運用在如光電感應器.近接開關或計算馬達轉速等等計數使用

bool _ABVAR_1_BTS= false ;
bool _ABVAR_2_BTL= false ;
int _ABVAR_3_count = 0 ;

void setup()
{
  pinMode( 2 , INPUT);
  pinMode( 13 , OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  _ABVAR_1_BTS = digitalRead(2) ;
  if (( ( _ABVAR_1_BTS ) != ( _ABVAR_2_BTL ) ))
  {
    if (( ( _ABVAR_1_BTS ) == ( HIGH ) ))
    {
      digitalWrite( 13 , HIGH );
      _ABVAR_3_count = ( _ABVAR_3_count + 1 ) ;
      Serial.print(_ABVAR_3_count);
      Serial.println();
    }
  }
  _ABVAR_2_BTL = _ABVAR_1_BTS ;
  digitalWrite( 13 , LOW );
  delay( 50 );
}

求知若渴,虛心若愚

2017年3月24日 星期五

Arduino學習.繼電器控制電磁計數器跳表

Arduino學習.繼電器控制電磁計數器跳表

目標要按下按鈕或感應訊號時,透過繼電器驅動計數器,
並要測試計數器的時間反應極限,
由於此計數器是使用12V電力,而UNO僅輸出5V電力,
故需另接繼電器來驅動計數器跳表,

準備的硬體有
LED燈*1
220或330歐電阻*1
10K或1K電阻*1
開關*1
面包板*1
線材
電磁計數器*1
繼電器*1
DC9~12V電力

可先參考學習130.按鍵控制LED燈,

在開關常態時電阻連接GND,使之接收低電位訊號,
此次積木程式利用了內建P13的LED燈,
在觸發按鍵為高電位訊號後,P13的LED燈快閃10次,
一亮一滅的時間為50ms+50ms,
若沒問題則可連接硬體繼電器及計數器,
 
這次是搭配高電位觸發的繼電器,
腳位分別是+5V,GND,訊號,
而計數器是12V的,但測試9v電池可驅動,
所以一線接電池負,另一線接繼電器,於NO常開腳再接到電池正,
建議P13測試無誤後建議改回P11,
因為UNO板在開啟時P13燈會閃動而觸發繼電器,

完成軟硬體後,按下按鈕使計數器跳表10下,
可修改50ms時間差,測試計數器的時差極限,
測試後14+14=24毫秒已是極限,再快就會出現漏數,







2017年3月23日 星期四

Arduino學習.水滴感應模塊

Arduino學習.水滴感應模塊

準備以下硬體並安裝↓
Arduino
水滴感應模塊
公對母接線

以下腳位定義,連線到Arduino上
.S=輸出模擬類比訊號Analog,接到Arduino的A0腳位
.+=+5Vcc
.-=GND


硬體連線好後打開Arduino的內建範例,檔案>範例>Basics>AnalogReadSerial↓
 


建議將最下方delay時間改為1000,上傳後開啟監控視窗↓



一開始的數據是0,滴些水到感應線上,監控數據開始變化,水滴越多,數據就越高↓



以上可取得數據約0~290之間,將這數據轉換成13腳LED閃爍時間,
可參考類比控制閃燈課程http://ee543.blogspot.tw/2016/01/arduino321.html
設定變數名A為閃爍時間,當水滴量大於50時點亮LED, 水滴量越大閃爍越快↓


int _ABVAR_1_A = 0 ;

void setup()
{
  Serial.begin(9600);
  pinMode( 13 , OUTPUT);
}

void loop()
{
  _ABVAR_1_A = map ( analogRead(0) , 0 , 290 , 290 , 10 )  ;
  Serial.print(analogRead(0));
  Serial.println();
  if (( ( analogRead(0) ) > ( 50 ) ))
  {
    digitalWrite( 13 , HIGH );
    delay( _ABVAR_1_A );
    digitalWrite( 13 , LOW );
    delay( _ABVAR_1_A );
  }
}

上傳後打開監視窗,並滴水到感應器,看看P13燈的反應,
自己試試改接馬達,模擬車輛遇雨天時自動啟動雨刷速度,


www.ee543.com