嵌入式系統開發實作

【PSoC 5LP實戰應用】 第二篇:火焰報警器

實驗說明:

PSoC GPIO控制的實現,本文將利用PSoC晶片實現基本的軟體和硬體功能,其主要內容是GPIO控制程序的設計與學習。它將單獨控制兩個數位訊號端口,分別為數位輸入訊號與輸出訊號,並搭配LCD螢幕作為顯示效果。

  • 此實驗將製作一個火焰警報器,火焰傳感器(即紅外接收三極管)是機器人專門用來搜尋火源的傳感器,本傳感器對火焰特別靈敏。
  • 火焰傳感器利用紅外線對火焰非常敏感的特點,使用特製的紅外線接收管來檢測火焰,然後把火焰的亮度轉化為高低變化的電位訊號,輸入到PSoC中央處理器,PSoC再根據訊號的變化做出相應的程序處理。

材料:

  • PSoC 5LP 開發板
  • USB 傳輸線
  • 火焰感測器
  • 蜂鳴器
  • 杜邦線

 

購買網址:shop.mirotek.com.tw

 

PSoC Creator 設計流程:

【建構 PSoC 專案

建立專案(在功能表[File] ➔ [New] ➔ [Project…])

  • 選擇Empty PSoC 5LP Design
  • Name : 輸入專案名稱
  • Location : 檔案儲存路徑
  • 確認完成後,點擊“OK”

【添加自定義元件 – 配置LCD】

1. 拖曳組件目錄下的LCD顯示元件並將其放置於工作窗口內(Component Catalog->Display->Character LCD)。

2. 點擊Schematic的LCD_Char_1組件打開配置窗口。

3. 按照如下方式配置LCD端口:

  • Name: LCD
  • LCD Custom Character Set: None
  • Include ASCII to Number Conversion Routines:打勾
  • 其餘選項皆為默認值
  • 確認完成後,點擊“OK”

【添加自定義元件 – 配置GPIO】

PSoC系列中基本上每隻I/O腳都提供下面狀態的設定值。

  • High Impedance Analog

高阻抗類比輸入,用來做類比訊號輸入使用,雖說是用來做輸入的,但是使用內部D/A的時候也是使用這個類型的腳位做輸出。

  • High Impedance Digital

高阻抗數位輸入,基本上這個I/O腳設定之後會變成一高阻抗的I/O腳,用來做輸入使用,因為高阻抗才能夠對外部輸入的電壓很敏感,故一般高阻抗輸入的時候,外面所連接的I/O腳都是呈低阻抗。

  • Resistive Pull Up

內置上拉電阻,此模式,可以用來做輸入、輸出使用,也就是說它可以同時存在兩種狀態(不須切換),但是通常我都是用來做輸入狀態比較多。

  • Resistive Pull Down

內置下拉電阻,這個模式與Resistive Pull Up大致相同,只是一個是上拉,另外一個是下拉。

  • Strong Drive

低阻抗輸出模式,在這個狀態下,I/O腳呈現一低阻抗狀態,以便可以輸出Hi/Low訊號。

 

▼ 配置蜂鳴器數位訊號輸出端口

1. 拖曳並將數位端口的組件放置於作窗口內(Component Catalog-> Ports and Pins->Digital Output Pin)

2. 點擊Schematic的Pin_1打開配置窗口。

3. 在Type標籤下,按照如下方式配置數位端口:

  • Name:Buzzer
  • 選擇Digital Output選項,但不選HW Connection(表示由軟體控制)選項

 

4. 在General標籤下進行如下配置

  • Drive Mode:Strong Drive
  • 其餘選項皆為默認值
  • 確認完成後,點擊“OK”

 

配置火焰感測器數位訊號輸入端口

1. 拖曳並將數位端口的組件放置於作窗口內(Component Catalog-> Ports and Pins->Digital Input Pin)

2. 點擊Schematic的Pin_1打開配置窗口。

3. 在Type標籤下,按照如下方式配置數位端口:

  • Name: isFlamePin
  • 選擇Digital Input選項,但不選HW Connection(表示由軟體控制)選項

 

4. 在General標籤下進行如下配置

  • Drive Mode: High Impedance Digital
  • 其餘選項皆為默認值
  • 確認完成後,點擊“OK”

 

▼ 配置完成後的Schematic如下圖

【配置引腳】

引腳配置步驟如下:

  1. 在Workspace Explorer窗口點擊cydwr。
  2. LCD選擇引腳為P2[6:0]
  3. Buzzer選擇引腳為P3[4]
  4. isFlamePin選擇引腳為P3[5]

 

接線說明:

▼ 有源蜂鳴器接線方式請參考下表:

 

▼ 火焰感測器接線方式請參考下表:

 

編譯:

▼ 點擊Program,將會產生各組件的函式庫。

 

程式:

在Workspace Explorer窗口點擊main.c。
/* ========================================
 *
 * Copyright YOUR COMPANY, THE YEAR
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF your company.
 *
 * ========================================
*/
#include <project.h> 

int main()
{
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    uint8 val=0;
    LCD_Start();    //啟動LCD1602A
    LCD_Position(0,0);  //移動LCD游標到 0行,0列
    LCD_PrintString("Hi Mirotek");  //在LCD上顯示字串"Hi Mirotek"
    /* CyGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */
    for(;;)
    {
        /* Place your application code here. */
        //FLAME detection
        val= isFlamePin_Read();
        LCD_Position(1,0); 
        if(val==1){
            LCD_PrintString("         ");
            Buzzer_Write(0);    //無火源訊號時,蜂鳴器不工作
        }else{
            LCD_PrintString("FLAME !!!");
            Buzzer_Write(1);    //檢測到火源訊號時,蜂鳴器發報警
        }
    }
}

/* [] END OF FILE */

 

實驗結果:

當檢測到火源訊號時,蜂鳴器發報警聲響,並讓LCD字串顯示”FLAME !!!”;

 

 

👍爆款推薦:程式學習套件組 

購買網址:shop.mirotek.com.tw

 

 

 

相關文章