顯示具有 李進衛 標籤的文章。 顯示所有文章
顯示具有 李進衛 標籤的文章。 顯示所有文章

2024年10月6日 星期日

TTGO T-DISPLAY 殘影問題的處理

 TTGO T-DISPLAY 專案

這個專案其實很容易達成也很早就提供給需求單位使用了,只是我卡瘡抓一隻蟲在癢使用TFT display 在使用當中卻發現他奶奶的殘影,這個問題處理了將近兩個星期一直沒有好的解決方案

我在網路搜尋了很久也沒有人有這個方面的經驗,我用過好幾種方法都沒有用

後來在TFT_eSPI的範例程式找到了方法


真是魯死人,提供文字顏色竟然不開默認,TMD

tft.setTextColor(TFT_GREEN, TFT_BLACK, true);

True 一定要加上去

還有位移的部分會殘留字體,這個日後在處理目前我還是沒有好的方法處理它。

V11:

新增一個read_betty_data()的處理程序

這個程序將電池資料間隔一段時間處理,避免讀取頻繁導致資料錯誤。

在電流的讀取方面還是存在缺陷,我不知道當充電當中移除電源存在著資料無法立即更新的缺陷,但是使用Serial從終端機看起來電池IC的資料一直無法更新。


程式設計 : 李進衛


2024年10月5日 星期六

碳膜電阻器的特性和金屬皮膜的特性

 

碳膜電阻器由沉積在陶瓷或玻璃基板上的碳薄膜製成。電阻器的阻值由薄膜的厚度決定。碳膜電阻器價格相對便宜,具有良好的精度和穩定性。但是,它們可能噪音大且溫度係數高。

金屬膜電阻器由沉積在陶瓷或玻璃基板上的金屬薄膜製成。電阻器的阻值由薄膜的厚度決定。金屬膜電阻比碳膜電阻貴,但也更準確、穩定、無噪音。它們還具有較低的溫度係數。

對於音頻濾波電路,重要的是使用低噪聲和高穩定性的電阻。金屬膜電阻器是音頻濾波電路比碳膜電阻器更好的選擇。

下表總結了碳膜電阻和金屬膜電阻的特性:

特徵

碳膜電阻

金屬膜電阻器

成本

物美價廉

更貴

準確性

好的

出色的

穩定

好的

出色的

噪音

高的

低的

溫度係數

高的

低的



加註: 程式設計 : 李進衛 比較好搜尋

那一種電阻器比較適合使用在Audio 的filter電路

金屬氧化皮膜電阻器的特性和金屬皮膜的特性

金屬氧化膜電阻器 (MOFR) 由沉積在陶瓷基板上的金屬氧化物薄膜製成。電阻器的阻值由薄膜的厚度決定。MOFR 比金屬膜電阻器更昂貴,但它們也更準確、穩定且無噪聲。它們還具有較低的溫度係數。

金屬膜電阻器 (MFR) 由沉積在陶瓷或玻璃基板上的金屬薄膜製成。電阻器的阻值由薄膜的厚度決定。MFR 比 MOFR 便宜,但它們的準確性、穩定性和無噪聲性也較差。它們還具有更高的溫度係數。

對於音頻濾波電路,重要的是使用低噪聲和高穩定性的電阻。與 MFR 相比,MOFR 是音頻濾波器電路的更好選擇。

下表總結了 MOFR 和 MFR 的特性:

特徵

金屬氧化膜電阻器

金屬膜電阻器

成本

更貴

不會那麼貴

準確性

出色的

好的

穩定

出色的

好的

噪音

低的

高的

溫度係數

低的

高的

加註: 程式設計 : 李進衛

比較容易搜尋


PCB 維修指引大綱

 前言:

針對電子產品日趨複雜,為了提升維修品質與效率故撰寫此份文件供維修人員指引與依循。

第一章節 零件的判定

二極體

檔位轉在DIODE檔位紅棒接P黑棒接N順向偏壓為0.5V~0.7V,蕭特基二極體0.2~0.3V

P通道


  1. 將數位三用電錶轉在 檔位,三用電錶顯示

  2. 將紅棒放在D極,黑棒放在S極如下圖

  1. 將紅棒放在S極,黑幫放在D極此時MOSFET內部二極體處於逆向偏壓狀態應沒有電壓。

  2. 將三用電錶轉到Ω檔此時將紅棒放在D極,黑棒放在S極阻抗應為無窮大或 這幾MΩ,此為OK。

  3. 將紅棒放在G極黑棒放在D或S阻抗應為無窮大。


N通道


量測方法如上


BAV70 接腳圖

量測方法同二極體


MMBT4401接腳



Micro SD 腳位圖,使用Diode檔位量測可以量測到順向偏壓0.5~0.7V

量測方法同P 通道MOSFET


MCU / DSP / BGA / SRAM/Flash memory IO 腳量測

數位IC IO腳量測


  1. 將三用電錶轉在DIODE檔位 三用電錶的LCD螢幕顯示

  2. 將紅棒接在數位IC的GND,黑棒放在想要量測的PIN。

  1. 移動黑棒量測。

  2. 正常的偏壓為0.4V~0.7V之間,如果沒有偏壓表示PIN OPEN,如果電壓趨近於0V表示該腳對地短路。

  3. 將黑幫接地。

  4. 紅棒如上圖量測,正常電壓為1.2~1.8 之間,如果沒有偏壓表示PIN OPEN,如果電壓趨近於0V表示該腳對地短路。


案例:分享

機種:RK3288微電腦 PCB 分析報告

日期:2021-07-01 

序號:

客人返修品拆解分析


不良現象:

  1. 無法開機

  2. USB Fail。

  3. 無法進入測試模式

進一步分析:

  1. 確認POWER_GOOD,PWR_EN,PMIC_PWRON,PWR_HOLD ROCK2 GPIO 經使用三用電錶確認都OK。

  2. 拆解散熱片以及上蓋,量測ROCK2 U2294 ACT8846 發現第5pin 對地短路,導致所有的ROCK2 失去3V3,1V8,2V電壓,以至於無法開機。


分析12PCS皆是此PIN 短路

  1. USB Fail 量測ROCK2 22PIN 24PIN 都沒有偏壓使用ohm 檔位量測發現呈現短路,RK3288 CPU GPIO燒毀。6PCS


類比電路維修指引

  1. Audio 故障

    1. 增益Gain 

      1. 所謂的增益所指的是放大倍數常見的故障為增益過大或者過小甚至無聲音輸出。

      2. 電壓確認

      3. 負迴授電阻阻值確認

      4. 迴路正確任

上圖為典型的反向放大器當產生Gain的問題時首先要確認的是所有的通道都不良還是侷限於該通道,如果是所有的通道都不良那麼首先就要檢查+- 電源是否正常。

首先使用三用電表Ω檔量測OP AMP 輸入輸出腳,以圖為例我們應該量測6,7腳所得到的電阻值應該為趨近於R513的阻值如果阻抗很高或者很低都是錯誤的,應該檢查電容C242是否短路,R513電阻是否短路或者開路,量測點應該是IC 的腳,不是焊點理由是焊點有可能浸潤不足開路,外觀看不出來。

標準的量測點如紅色箭頭

為了避免焊錫包焊造成誤判三用表探針點應如紅色箭頭所指位置量測。

電路解說


  1. S/N訊號雜訊比

    1. 比較所需訊號的強度與背景雜訊的強度。

    2. 常見到的狀況是電源波動異常

    3. 濾波器不良

    4. 測試使用的信號線本身不良

    5. 濾波器電阻錯誤電容錯誤,冷焊,短路,缺件,銅箔斷路

處理這個問題必須知道測試軟體所測到的信號大小和雜音nois的大小再來抓問題。


  1. THD+N

    1. 一般常見的是靜音電晶體漏電,或者電晶體燒毀,因為我們的機子通常是本身的輸出端接到輸入端,如果有phantom Power 48V打開的狀況電源會直接灌到輸入端導致靜音電晶體燒毀。

    2. 濾波電路不良,這個必須一級一級的確認。

    3. 濾波電路冷焊,短路缺件,零件破裂。



分析:

  1. 現象可以重現。

  2. 更換R28.29測試


在實務的維修中,常見的是更換電阻,或電容器,也有發現是交連電容器的故障。

沒有聲音的輸出:

  1. 檢查其他的輸出是否有信號,如果有就表示只有該通道有問題。

  2. 檢查電源。

  3. 檢查輸出端是否短路,開路?

案例:

不良現象描述:

測試大耳機OK ,測試小耳機 NG


從測試的數據我們發現幾乎沒有任何信號,輸出信號準位接近Noise  

結果是耳機座接觸片變形導致沒有聲音輸出


Arduino_U8G2_顯示中文建立手冊

 [Arduino技巧]使用u8g2函式庫建立自訂字庫,讓OLED顯示中文

20231211

下午 02:42


傑森創工的LCM 模組不錯我我常常買大家可以參考看看

下面是我小小研究心得

OLED 中文 LCD 中文 中文字庫

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image001.png

 

 

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image002.png

 

 

 

[Arduino技巧]使用u8g2函式庫建立自訂字庫,讓OLED顯示中文

Jason Chu 13日 3月 2020 on 教學與範例, Arduino 5 min read

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image003.jpg

 

Arduino的絕大多數的顯示設備,都無法直接顯示中文,除了少數內建中文字庫的LCD。但像是我們常用的OLED就跟中文有些無緣了。一般的解決方法就是用圖形在顯示中文內容,這方法其實也算是可行了。但還有更厲害的招式,就是使用u8g2的顯示器函式庫,它有自訂字型庫的功能,透過它,我們可以自訂自己的字庫!

為何是自訂字庫,而不是「直接」使用字型呢?大家想想,隨便一個中文字型檔,沒有3MB以上不太可能吧,但我們的Arduino開發板不論是記憶體或儲存空間,都是小得可憐,怎麼可能把完整的中文字型載入呢?所以我們就轉個彎,把一些常用的中文字,其實一般Arduino專案常用的中文字也就幾十個或百來字,把這些字存成一個自己的字庫,這樣以後就能像顯示英文一樣的顯示中文了!

而要用到這個功能,就要靠u8g2函式了,有關u8g2的基本使用,請參考傑森以前的文章:

一套u8g2函式庫,玩遍所有OLED

有一點要注意,就算透過程式管理員,安裝了u8g2的函式庫,但並不會安裝我們等一下要用到的工具,所以還是要去自行下載。

https://github.com/olikraus/u8g2

我們主要是需要u8g2/tools/font/這個目錄,所以直接把tools整個目前Copy到電腦上的「Documents\Arduino\libraries\U8g2」目錄中。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image004.png

 

進到「u8g2\tools\font\bdfconv」目錄,會看到「bdfconv.exe」這個Dos程式,我們就是要靠它來轉檔的。

我們首先要把需要的字型加入一個「U8g2\tools\font\build\chinese1.map」檔案裡。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image005.png

 

用記事本打開它,會看到裡面已經有一些文字的unicode碼,我們只要把想加的文字,加到後面去就可以了。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image006.png

 

處理的方法很簡單,找一個軟體或是線上服務,能把文字轉成unicode碼的就可以了。傑森這裡找到一個線上服務,大家可以參考看看。

https://www.ifreesite.com/unicode-ascii-ansi.htm

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image007.png

 

圖中大家可以發現,每一個字後面都加了一個英文的逗號,這個主要是為了方便啦。

接下來把轉好的unicode碼,一個一個的貼到chinese1.ma裡,一字一行,而且大家也發現了,chinese1.map裡的格式是:「$91CC」,而unicode碼的格式是:「」,所以只要把「u」換成「$」就可以了,這件事可以由記事本中的「取代」來完成,不用自己一個字一個字去改。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image008.png

 

然後貼到chinese1.map裡就可以了。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image009.png

 

接著用CMD視窗到DOS環境中,執行以下指令:

Win +R  就會彈出一個視窗,在視窗輸入CMD 按下確定

就會跳出DOS視窗

Cd\

D:

cd\onedrive\文件\Arduino\libraries\U8g2\tools\font\bdfconv

再下達下列DOS命令

bdfconv.exe -v ../bdf/unifont.bdf -b 0 -f 1 -M ../build/chinese1.map -d ../bdf/7x13.bdf -n u8g2_font_unifont -o u8g2_font_unifont.c

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image010.png

 

完成轉碼後,字庫代碼會在u8g2_font_unifont.c檔案中,用記事本打開,把陣列內容複制起來。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image011.png

 

接著打開「U8g2srcclibu8g2_fonts.c」這個檔案,找到「u8g2_font_unifont_t_chinese1」這個陣列。

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image012.png

 

把剛才從u8g2_font_unifont.c裡複制的內容,取代「u8g2_font_unifont_t_chinese1」這個陣列內容,記得連陣列大小的文字也要改成新的哦!(這點漏掉真的不行啊!!)

C:\AC5C54A5\F7453C23-9E18-4839-BB74-AD2DA9A4D73D.files\image013.png

 

我們來寫支程式來測試看看吧!以下是簡單顯示文字的程式碼,只是多了一行啟用UTF8文字功能,這樣我們才能顯示中文哦!

u8g2.enableUTF8Print(); //啟用UTF8文字的功能

1

大家都試試吧,在OLED顯示中文"字",真的不難哦!

#include <Arduino.h>

#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI

#include <SPI.h>

#endif

#ifdef U8X8_HAVE_HW_I2C

#include <Wire.h>

#endif

//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ D2, /* data=*/ D1, /* reset=*/ U8X8_PIN_NONE);

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

//U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

 

void setup(void) {

u8g2.begin();

u8g2.enableUTF8Print(); //啟用UTF8文字的功能

}

void loop(void) {

u8g2.setFont(u8g2_font_unifont_t_chinese1); //使用我們做好的字型

u8g2.firstPage();

do {

u8g2.setCursor(0, 14);

u8g2.print("傑森創工");

u8g2.setCursor(0, 35);

u8g2.print("中文完成,太強了!");

u8g2.setCursor(0, 60);

u8g2.print("時間 16:28");

} while ( u8g2.nextPage() );

delay(1000);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

本文主要是參考了以下的網站,萬分感謝!

https://blog.csdn.net/menghuanbeike/article/details/75666266

Share this post

 

Facebook 

 

Twitter

[Arduino技巧] ST7920 LCD也能用u8g2函式庫,連自訂的中文字庫也能用!

很多人都受夠了單調又制式的1602 LCD了吧,ST7920提供我們另外一種選擇,大尺寸、128x64高解析度,可以顯示文字及圖形,價格也合理,如果再搭配上u8g2函式庫,就真的是完美了!…

[Arduino範例] 一套u8g2函式庫,玩遍所有OLED

u8g2函式庫,它算是u8glib的新版本,它對顯示器的支援超強大的!舉凡常見的OLED,像是SSD1306和SH1106,或是其它各種TFT LCD,都在它的支援範圍,真的是學一招就無敵了!…

 

來自 <https://blog.jmaker.com.tw/chinese_oled/

 


建立電腦字形到U8G2步驟

適用範圍:

ESP8266,ESP32,TTGO

Arduino UNO不建議使用因為記憶體不夠

步驟一

到電腦C:\Windows\Font路徑下選擇一個字形檔

ttf檔案拷貝D:\onedrive\文件\Arduino\libraries\U8g2\tools\font\otf2bdf\otf2bdf3-win32這個目錄之下

進入命令模式


進入DOS 命令視窗

將ttf檔案轉成bdf格式

在DOS下達:

cd\Users\Leecw\OneDrive\文件\Arduino\libraries\U8g2\tools\font\otf2bdf\otf2bdf3-win32

下達:

set tmpdir=%temp%

建立一個暫存區

下達下列命令:

otf2bdf -r 72 -p 24 -o kaishu7224.bdf kaishu.ttf

轉出一個名稱為kaishu7224.bdf

再將kaishu7224.bdf copy到D:\onedrive\文件\Arduino\libraries\U8g2\tools\font\bdf

這個目錄底下


//我所建立的字形

//***********************************************************

//目前我將常使用到的字先建立,字如下


亞,弘,電,科,技,股,份,有,限,公,司,生,技,課,成,功,失,敗,現,在,日,期,時,間,完,成,電,壓,電,流,

李,進,衛,黃,信,學,維,修,測,試,邱,盈,繼,

一,二,三,四,五,六,七,八,九,十,百,千,萬,億,月,日,年,請,稍,待,等,一,下,是,的,阿,林,宗,民,鄭,進,來,哥,秋,菊,翠,敏,幹,冷,涼,卡,好,警,告,太,高,低,主,星,期,棋,宇,喆,品,筠,育,鋒,楊,麗,玉,剩,餘,量,上,下,左,右,按,推,前,後,目,連,線,中,充,放,不,良,核,心,溫,度,設,計,平,均,氣,壓,晴,天,陰,雨,颱,風,強,弱,程,式,韌,體,軟

開關注意通知載燒錄會道人正治具手機示波器頻率振幅耐大小長短遠近新舊社市

自己新增加的字形要放在使用VSC或者NotePAD++等文字編輯軟體將轉換出來的程式碼放在u8g2_fonts.c內,然後使用VSC或者NotePAD++等文字編輯軟體打開u8g2.h 加入

將這一段程式碼copy然後貼到u8g2_fonts.c中


開啟u8g2.h

extern const uint8_t u8g2_font_unifont_kaishu7216 [] U8G2_FONT_SECTION("u8g2_font_unifont_kaishu7216");

將這一段加在u8g2.h 中如此便大功告成


程式設計 : 李進衛

如何使用終端機軟體收集來自於Arduino的資料

  將治具使用Micro USB cable 連上電腦 開啟終端機軟體 選擇 Serial🡪按下OK File🡪Log…  設定log file要存放位置,建議檔案名稱直接取名為*.CSV 例如:20231224.csv 按下治具Reset按鍵開始收集資料