電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>實時SD卡故障檢測系統(tǒng)

實時SD卡故障檢測系統(tǒng)

2022-12-13 | zip | 0.28 MB | 次下載 | 免費

資料介紹

描述

介紹

在某些系統(tǒng)上,例如 3D 打印機,存儲卡用于保存打印文件。因此,在打印開始和打印過程中檢查存儲卡連接非常重要。

因此,在任何連接或卡故障的情況下,系統(tǒng)必須能夠檢測到故障并在系統(tǒng)LCD 屏幕上通知用戶。

除了 3D 打印機,這種方法還可以用于任何使用存儲卡的系統(tǒng)或設(shè)備。

因此,我們提出了一個電路來測試解決方案,如圖 1 所示。

接下來,我們將創(chuàng)建并解釋一種算法,用于在系統(tǒng)執(zhí)行過程中檢測存儲卡的故障或未連接。

?
poYBAGOX2qeAWBQCAAGJoFEsmGM529.png
圖 1 - 溶液測試電路。
?

項目發(fā)展

構(gòu)建代碼的邏輯非常簡單。我們需要在開始(void setup 函數(shù))和代碼執(zhí)行期間(循環(huán)函數(shù)內(nèi)部)檢查卡是否已連接。

如果未檢測到卡,則必須在LCD屏幕上輸入一條消息以通知用戶,如圖 2 所示。

?
pYYBAGOX2rSAOp7yAAF1RwSB_XE687.jpg
圖 2 - 失敗或卡斷開的消息。
?

這樣,用戶將卡片插入,系統(tǒng)將再次重新運行,并顯示“卡片已連接!”的消息,如圖 3 所示。

?
pYYBAGOX2ryASFdEAAFgREFtJhc88.jpeg
圖 3 - 已連接消息卡。
?

系統(tǒng)驗證SD卡狀態(tài)后,系統(tǒng)將等待用戶按下按鈕,開始對10個ADC值在SD卡中的存儲處理。此時,它將顯示如圖 4 所示的消息。

?
pYYBAGOX2suAQ2SbAAF4biKskck54.jpeg
圖 4 - 用戶按下按鈕以啟動存儲過程的消息。
?

用戶按下按鈕后,系統(tǒng)會在SD 卡中存儲 10 個單位的 ADC 值,并在屏幕上顯示信息:“正在存儲數(shù)據(jù)...”和“成功完成”,通知存儲過程結(jié)束。這些消息如下所示。

?
?
?
?
pYYBAGOX2s-AeCH3AAFG-iI6eUg36.jpeg
?
1 / 2 ?圖 5 - (1) 存儲數(shù)據(jù)的消息和 (2) 成功完成的消息。
?

在所有這些過程之后,系統(tǒng)回到循環(huán)的開始并再次啟動所有邏輯。

此后,我們將介紹和討論為解決該問題而開發(fā)的代碼。

編程邏輯

根據(jù)下面的代碼,插入了所用元素的庫:LCD 顯示器、SD 卡并聲明了代碼的所有變量。

#include <SD.h>
#include <SPI.h>
#include <LiquidCrystal.h>
  
File myFile;
  
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  
#define AnalogPin A0
  
int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO
int DigitalValue = 0;
byte samples = 0;
bool SDCardTest = 0, ControlState = 0, LCDControl = 0;

在這個代碼塊之后,我們將在下面展示 void 循環(huán)函數(shù)。可以看到,Display LCD和 Serial 已初始化。之后,進行了第一次測試以驗證我們的SD 卡是否已連接或失敗。

void setup()
{ 
   Serial.begin(9600); // Define BaundRate
   lcd.begin(16, 2);
   pinMode(pinoSS, OUTPUT); // Declara pinoSS como saída
     delay(500);
   lcd.clear();    
   do
   {
     if (SD.begin()) 
     { // Inicializa o SD Card
       lcd.setCursor(6,0);
       lcd.print("Card");
       lcd.setCursor(3,1);
       lcd.print("Connected!");
       delay(2000);
       SDCardTest = 1;
     } 
       else 
     {
       lcd.clear();
       Serial.println("imprimindo segunda mensagem de erro.");
       lcd.setCursor(1,0);
       lcd.print("Failed or Card");
       lcd.setCursor(2,1);
       lcd.print("disconnected");
       SDCardTest = 0;
     }
   }while(SDCardTest == 0);
     
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Press the button");
     lcd.setCursor(1,1);
     lcd.print("To store data");
}

有一個 do-while 循環(huán)來驗證SD 卡。在此過程中,系統(tǒng)會對 SD 卡進行初始化。如果初始化過程正常發(fā)生,那么SD卡就沒有問題了。但是,如果出現(xiàn)任何問題,系統(tǒng)將初始化SD 卡。

這種方式將在顯示 LCD中顯示“失敗或卡斷開”消息,并且變量 SDCardTest 將接收值 0。該變量將用于控制循環(huán)執(zhí)行。

解決問題并重新連接SD卡后,將顯示消息“按下按鈕存儲數(shù)據(jù)”。

在此之后,將執(zhí)行 void 循環(huán)函數(shù)中的命令。void 循環(huán)函數(shù)的代碼如下所示。

void loop()
{
          bool Button = digitalRead(8);
  
          if(LCDControl == 0)
          {
           lcd.setCursor(0,0);
           lcd.print("Press the button");
           lcd.setCursor(1,1);
           lcd.print("To store data");
           LCDControl = 1;
          }
         
         if(Button == 0 && ControlState == 1)
         {
           ControlState = 0;  
         }    
         if(Button == 1 && ControlState == 0)
         {
           myFile = SD.open("silicioslab.txt", FILE_WRITE); // Create/Open File the txt
           delay(500);
           lcd.clear();
           lcd.setCursor(4,0);
           lcd.print("Storing");
           lcd.setCursor(4,1);
           lcd.print("data...");
           do
           {              
             DigitalValue = analogRead(AnalogPin);
             myFile.println(DigitalValue);
             delay(400);
             samples++;
           }while(samples < 10);
  
           samples = 0;
  
           lcd.clear();
  
           lcd.setCursor(4,0);
           lcd.print("Finished");
           lcd.setCursor(2,1);
           lcd.print("Successfully");            
           delay(2000);
           myFile.close(); //Close file
           LCDControl = 0;
           ControlState = 0;
         }
  
         do
         {
           if (SD.begin()) 
           {
               SDCardTest = 1;          
           } 
             else
           {
             lcd.clear();
             lcd.setCursor(1,0);
             lcd.print("Failed or Card");
             lcd.setCursor(2,1);
             lcd.print("disconnected");
             SDCardTest = 0; 
             LCDControl = 0;   
             Serial.println("Verificando problema...");     
           }
         }while(SDCardTest == 0);
}

在 void 循環(huán)函數(shù)中,將讀取按鈕的狀態(tài)以驗證我們的用戶是否按下了按鈕在要讀取的按鈕之后,有以下情況:

if(LCDControl == 0)
{
  lcd.setCursor(0,0);
  lcd.print("Press the button");
  lcd.setCursor(1,1);
  lcd.print("To store data");
  LCDControl = 1;
}

此條件用于允許“按下按鈕存儲數(shù)據(jù)”消息僅顯示一次。這可以防止文本多次顯示,并可能在屏幕上產(chǎn)生奇怪的效果。

之后,如果按下按鈕,文件將打開,10 個值將保存在SD 卡中,隨后出現(xiàn)“Finishing Successfully”消息,通知該過程完成。

最后,文件將被關(guān)閉。因此,系統(tǒng)將多次驗證SD 卡。

致謝

感謝PCBWay支持我們的 YouTube 頻道并生產(chǎn)和組裝質(zhì)量更好的 PCB。

Silícios 實驗室感謝UTSOURCE提供電子元件。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費