顯示具有 電子電路設計 標籤的文章。 顯示所有文章
顯示具有 電子電路設計 標籤的文章。 顯示所有文章

2016年5月28日 星期六

改造UT61E (未完)

前言:
   今日,本來要使用電表(ut61E)發現,它沒電了. 因它並沒有auto-sleep.
而其實在購買時,就是看見它的可改造性(誤).

因此,找了一下並實驗其auto-sleep function.
最主要的還是它本身所使用的ES51922a已有這一function
而因為為了"通訊(RS232 format)"而關閉它.
故只需要將它對應的pin 腳,改掉(或是用外部開關,即可)

正確的作法(參照ref link),是以它的通訊線上依Photointerrupter(GP1S50)

來做,但因我手上沒有其它的元件及工具,所以我目前暫時

用一個外部滑動開關用..

其它,則要找時間去補上....















































ref:
web:

 UT61E Auto Power Off Modification
http://www.designelectronics.com.au/DesignElectronics_UT61E-APO.htm
 UT61E拆机图+ 也D 完美版 自动关机功能
http://forum.eepw.com.cn/thread/240616/1

file:
https://drive.google.com/open?id=0B2uYQcUgyMUJTXROX01ucV9GdFE


2013年12月21日 星期六

建立嵌入式系統-1

我一直在想不論是誰,經過一小小段時間的磨練。好像都可以成為韌體工程師。

比如我目前所在的,怎麼連一個碰都沒碰過的,經過2~3月就可以handle一個案子了。

 

若是如此,那本科的到底差在那裡了。

我想除了,

上手的時間外,以過去經驗來學習新東西及解決問題能力外。

個人覺得還在個更為重要的"正確的開發方法"。

"若只是時間的問題;那還有什麼價值的"

因為時間才是重點。

但雖然我知道,卻不知如何去做起。只能不斷不斷地亂吸收有的沒的資訊。

這本"建立嵌入式系統-傑出軟體的設計模式"

是一本相當不錯的書我想就從這開始吧。

裡面的內容有系統架構、硬體(測試及處理錯誤)、輪出及輪入與計時器、動作流程(排程、事件、中斷)、週邊通訊、更新程式、

功耗、數學(嵌入式)

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

就像是解數學(在設計時也應該把它現象具現化數值化),問題、變數及條件。

Q.

開關去抖動(Deboucing switch)

var.

其持續時間的長短(取決於使用的開關)

需考慮程式寫法,可能會有多個。

limit.

反應時間.

 

1.問題分析

按鍵debouce,我們都知道的東西。但我們只知加上個delay time去判斷有效否? 沒有詳細去觀察它。

它正確名稱為" 跳動數位按鈕訊號,bouncy digital button signal",而不論是採用poll or interrupt對這個都會

產生反應,而系統對 開關抖動(switch bouncing)的原因來自機械或電子效應。

image

可以見到其中有3個不確定的狀態 都是在上/下邊緣時的雜訊,這些就是抖動bounce現象

而要去除這些則需要比反應取樣,並出現連續一致的就系統按鈕狀態已經改變。

2.條件(需求)

以一般的打字來算,平均一分鐘120字(每字5個字元)。即一分鐘按600次,故10 time/s=100ms。

而系統必須在一半的時間內判斷按下按鍵,所以是50mS。

加上其所使用的按鍵的datasheet,對於按下/放開的時間(設12.5 ms 內),則可以知以10mS(低於反應時間)

約有5次的sample來判判。

3.變數

由持續時間的長短,:

    The current raw reading of the I/O line(raw data)
    A counter to determine how long the raw reading has been consistent (counter)
    The debounced button value used by the rest of the code (debounce button)

ps.因程式簡化,新增一個changed變數。

read button:
if raw reading same as debounced button value,
    reset the counter //counter set number,no change,long press
else
    decrement the counter
if the counter is zero,
    set debounced button value to raw reading
    set changed to true
    reset the counter
    
main loop:
if time to read button,
    read button
if button changed and button is no longer pressed
    set button changed to false
    set the delay period (reset or halve it)
if time to toggle the LED,
    toggle LED
repeat



 


另一個例子是:


使用計時器


現在有一個要求是,每按下按鈕時改變LED閃爍的速度(6.5,8.5 and 10Hz)。


background:


其中 要求來關關LED,需以需要時間的"精確度"。


而系統中精確度來自輸入時脈(clock)的" 正確性" 及" 準確性"。


計時器的組成:


image


image



其中,Prescale register(預先倍率暫存器)是相當重要的一點,


將時脈值除以特定數字,讓計時器以較慢的速度增加。


問題:


現在有一個要求是,每按下按鈕時改變LED閃爍的速度(6.5,8.5 and 10Hz)。


條件(需求):


6.5,8.5 and 10Hz。容許誤差範圍。


其各timer register的設定範圍。(8bit/16bit)


變數:


main clock souce and how much? (4MHz)


各timer的register設定。(prescale register(預先倍率),time counter(輸入頻率),compare register(比對) and action register(動作))


 


由以上可以得到。


timerFrequency = clockIn/(prescaler * compareReg)


在已知clock In,只需改prescaler 及compareReg來得到其timerFrequency


 


其中,以10Hz閃爍(on/off)所以需要20Hz來on or off動作。


A.若不使用prescale (set =1)則 其compareReg = 4M/(20)=2x 10^5(超過compareReg大小255)


B.而prescale (1023,10bits),可以先求prescaler * compareReg的總數再找各別的,所以


    prescaler * compareReg= 4M/20,


    prescaler(8bit) * compareReg(10bit)=200,000, compareReg set 200, prescaler set 1000


另一個8.5Hz,若以相同的話?


    prescaler * compareReg = 4M/17 = 235294.1


    set prescaler = 923, compareReg =


因為沒法整除,所以必須將誤差代入(以最好計算)


error = 100*(goal frequency – actual)/goal


所以要以疊代計算。


image


          |                         |


          |                        \/


          | <--------------  set new prescaler


        


image



 


Pulse Width Modulation (PWM)


若有一個新增一個按鈕來控制亮度。


image

2013年12月8日 星期日

有線~無線楖論(2)

在前篇中 有線~無線楖論(1)中對於網路模式TCP/IP的介紹,

 

接下來是對於有線通訊在 embeddend system的

 

So Many Ways of Communicating,其中最重要的是where does the clock come from?

image

其中對於我所使用的embeddend system中,最重要的是前三層的(physical, data link and network)

簡單的話就是 。並以I2C為例

physical: 電氣特性, 其幾條線其工作電壓是多少

data link :而是CRC檢查及定義出多少bit資料為一個封包(frame)

networ: 定義IP, 即其裝置的位址,address.

 

其中physical

中可分為Serial 及parall and synchronous/asynchronous , half/full duxplex

serial 串列即指一個time slace只能傳一個單位的資料:

parall 並列即指其可傳多於1個單位的資料.

synchronous: 同步則指的是二端必須同時做傳送動作(同步),即使有一端是沒有資料也要傳。

                   suart(use-are) synchronous receiver/transmitter,常見的有SPI

asynchrouous: 即二端是不需要同步動作的,而是以各自講好的機制(bit rate) protcol動作。

asynchronous receiver/transmitter

half duxplex :而其線材, 若只有一條線做為transfer and recevice則為半雙工。像是I2C(SDA)

full duxplex :其recevice and transfer各有一個時,則為全雙工, SPI.(SOMI, SIMO), RS232

image

對於I2C而言:

1.clock generate:

    is generate from master, which is exlicit. and because clock generater by master so it is not precise.

2. it have 3 wires(scl,sda,gnd) ,and it connect all peripherals ,so it control complex.

3. it is asynchronous . the master and slave only one wire to transfer data.

4. half duplex , only one sda.

5. there  address. and to select the via chip.

6. 3.4M bits/sec

7.

 

data link:

一個傳送單位frame 或 檢查CRC。

NetWork :

IP , system address.

 

I2C drivers invariably include a state machine to deal with the complexity of switching
the direction of the bus between the master transmitting and the slave transmitting.
The master starts communication by sending a 7-bit address and whether it wants to
read from or write to the slave. The slave with that address then sends an acknowledgement (ACK). Next, the master sends a command to (or reads from) the slave and
the interaction proceeds. When the communication is complete, the master sends a
stop bit.

 

p.s: 上次有同事,因為datasheet沒寫明是I2C或SPI or other的通訊介面。自己認為是I2C 等porting後,才發現不會動。

可見這些的重要性。

有線~無線楖論(1)

 

前日,在量測產品的Radio Testing(FCC)時覺得自己完全不了解wireless的基礎。也剛好看一個系列在介紹網路系統。

這也正好很網路的觀點來看wirelss的一些名詞內容(module,CSMA/CD,PSK,OFDM,FHSS.ie..)

 

而從有線到 無線,都是我們日常會碰到的通訊介面。 有線的串列USB 、無線wireless (2.4G,Sub 1G, 802.11 and Bluetooth)

然而這二者的差別及相同處?

 

1.base OSI and TCP/IP module

一直以來,對於這二個modele我一直聽到。但這二者到底有什麼差別及用途,都不太清楚明確。

其實有前'後及實作'理論上的差別。

image

TCP/IP :

從名稱就知是一開始就就用的。而就實作上也是以"此"為主。

其各layer 的定義如下:以internet為主

Link Layer : RJ45 ,

位於整個網路架構的最底層,負責制定資料傳輸的「實體」規格

Internet Layer : IP ,

網路層能夠提供實體介面網路卡1個邏輯上的位置,也就是我們常聽到的IP位址,此IP位址是唯一的(或至少在同層級的網路中是如此),所以資訊才能夠傳輸到正確的目的地。此層會將資料的目的地和來源地寫入,如同我們在信件上填入收件人和寄件者。

除了賦予每個網路介面卡邏輯IP位址外,IP還定義了資料封包該如何繞送的規則,如同郵局有各地區的小據點,也有大型的轉運站,藉由這些規則,選擇較佳的傳送路徑,將東西正確傳遞

Transport Layer:

資料經過了應用層之後,下一層便是傳輸層,此層對應用層傳送過來的資料進行處理,建立2台電腦之間可靠的傳輸。在此層常見的2種協定為TCP與UDP,絕大多數應用層協定都會選擇TCP,因為TCP提供一連串偵錯、重送、資料順序、流量控管等實作,確保2台電腦之間的連線正常

Application Layer :

HTTP,應用層的協定非常多,像是網頁HTTP、郵件POP3、檔案FTP

 

而在OSI中

,則是從通訊介面理論上的module,共有7個layer而各layer都可對映到TCP/IP的各別的layer

而且在 網路的設備也都用這個來區分,像是Hub 是L1 , switch L2 and router is L3。

因為它是以通訊理論上來區分,所以它也可以對所有的通訊介面分類(I2C,USB,SPI,UART),有些會取消或合併。

從上圖中,可以看到相對於TCP/IP module中有些是沒有的 Link Layer(TCP/IP) 合併physical and data lin Layer(OSI).

或是TCP/IP中的application layer 合併到 session , presentation and application(OSI)。

而在OSI module中,有

1.physical :同TCP/IP ,link layer

定義實際在媒介上的傳輸標準,大多直接拿取其它相關組織的規格直接使用,如IEEE電機電子工程師協會制定的一系列802標準

2.data link :

決定何時資料可由實體傳輸媒介發送,也包含錯誤偵測機制

3.network:

邏輯定址、繞送、傳輸路徑選擇,維護2端點之間的連線。基本上就是IP協定所執行的工作。

4.Transport :

確保會議層與網路層之間傳遞的資料沒有遺失、重複,還有錯誤復原以及流量控管等功能。

5.session:

負責交談如何開始、控制、結束。就像是有個會議主持人負責招集,制定開會流程,開會完後宣布散會。

6.presenation:

定義與轉換資料格式,如ASCII和EDCBIC文字編碼的轉換,我們才能夠在不同的電腦上看到相同的資訊,加解密動作也由OSI指定在此層中處理。

7.application:

提供應用程式與其它主機上程式溝通的介面,也提供使用者應用程式存取網路上資源服務

 

http://www.techbang.com/posts/15859-network-architecture-2-arpanet-history-and-introduction-to-mac-ip-dns-concepts-review?page=5&related_post=true

2013年9月25日 星期三

2013年8月30日 星期五

SPI(Serial Peripheral Interface)

Overview

  • Serial interface
  • Synchronous
  • Master-Slave
  • Data Exchange

其中Synchronous protocol

  1. 資料沿著clock(SCK)來傳送
  2. 當data 需改變及被讀取時,對clock 控制
  3. 因為是同步(synchronous),所以化的clock rate是可變的,不像RS-232等的通訊

Master-Slave protocol

  • 只有一個master可以去控制SCK(clock)
  • 直到其clock signal 出現才可以傳送資料
  • all slave 都是由master clock來控制
  • slave device 可能不會去管clock

Data Exchange protocol

  • data is being clocked out,new data is clocked in
  • data is exchanged-no device is only transmitter or receive only
  • the master controls the exchange by the clock line

它在"transmits" data一筆後,必先去讀取進來的資料,若進來的資料不可讀時

這一筆的資料,就會loss並且其SPI module變成disable as result.

 

SS(CS) pin define: Slave Select/Chip Select. the master wisch to staart an SPI data exchange between that slave device and itself.

it often used to improve noise (to reset the SPI slave so that it is ready to receive the next byte)

 

Data(MOSI/MISO): data is only output during the rising or falling edge of SCK.

而data會在相對的負edge(+->-)來latche;並確認資料正確後讀取

image

pin descritor:

SS(chip Select or Slave Select):

when this signal go to low ,the slave will listend for SPI clock and data

SCK(serial clock):

to control when data in/out

SDO(serial data out):

this signal carries the data sent out of the device.

SDI(serial data input):

this signal carries the data sent into the device.

image

image

SSPSR (shift register) for SPI module. it shift data in and out of the device . the data travels in a loop to the next shift register

image

image

 

image

image

 

74HC595+ SPI =expander(output)

&4HC165+SPI=

自強基金協會-上課心得Stellaris EKS_LM3S3748

image

image

image

image

image

image

image

image

image

 

其中,特別的是為了可以在多個開發工具(不同cpu/compiler..)

將其環境,以bat file 來加以設定.而非固定

path=C:\Program Files\Putty;%path%

set MCU_ROOT=c:
path=%MCU_ROOT%\UnxUtils\winXpBin;%MCU_ROOT%\UnxUtils\bin;%MCU_ROOT%\UnxUtils\usr\local\wbin;%path%

path=C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin;%path%

Caption

電容器,基本構造為二塊相距很近並且中間夾著絶緣体(固体、氣体及液体)的導電極皮來構成一個簡單的電容器。當電容器的兩極分別帶有正、負電荷時,由於異性電荷的相互吸引,它們能儲存在電容器中,所以電容器實質上是儲存電能的元件。而電容器儲存電荷的能力越大,它的電容量就愈大。電容器具有阻止直流電通過,而允許交流通過(同時有阻疑作用)的特性。

  1. 振蘯
  2. 調諧
  3. 濾波
  4. 旁路
  5. 藉合

以其結構:

  • 固定式
  • 可變

以其介質:

  • 紙介
  • 瓷介
  • 有機薄膜
  • 電解
  • 空氣

"電容器的電性能及應用場合在很大程度是取介功介質的特性"

 

固定式電容:

 

主要參數:

  1. 電容量
  2. 額定直流工作電壓
  3. 電容量允許誤差

電容量,儲存電荷的能力大小,由其電容本身的構造決定。電容器的極皮面積愈大,介質越蒲,介電常數(由介質決定)愈大,其所得電容量愈大,反之則愈小。

 

電容器的額定直流工作電壓,"耐壓"。當電容器的工作電壓超過耐壓,就會擊穿裡面的介質,造成其不可修複。

 

電容器的誤差,是指它的容量的實際值和標準值的百分比。通常分為3個等級。

1.+- 5%

2.+- 10%

3.+- 20% .

ps.普通鋁質電解電容的誤差大,+-30~~+ – 100%

 

電容值標注方法:

1.直接標注:

大都標注在元件上,標準容量、耐壓及誤差。

規定是:

容量用小數點時,則省略的單位微法(uF)。若是整數時,則省略的是皮法(pF)。

而對於幾~千微法的大電容器,其標式單位應不可省略。另外,若是零點零幾的,常會去省略整數"0"省略。

0.001uF==>.001uF。

而對於較小的,則其標示法普通為"數字符號法"。其用法為用2-4位數和一個字母表示電容量。

其中數字表示有效數值,字母表示量級,即p(皮法 10^-12F),n(表毫微法10^-9);u(表微法10^-6);m(表毫法10^-3)。.同時字母表示其小數點位置。1p5==1.5 x 10^-12F。而其誤差為字母表示,F=+-1%; G=+-2%;J=+- 5%;K=+- 10%;L=+- 15%;M=+-20%;

N=+-30%。

 

另外也有"用數碼標示法",其規則是:三個數字。一及二為有效數字,第三則是其倍乘數。其單位為皮法(pF)。

104K=10 x10^4x 10^-12=10x10^-8=0.1uF +-10%。

使用時,注意其特定使用條件;

1.紙介電容不能用於高頻電路。

2.容量足夠,直流耐壓毫的電解,不能代替交流電路(如電動機啓動)中的電容器。

3.有極性的電容器不能用於純交流電路,但可以用於脈動直流電路。

4.多電容串/並聯,其計算方法和電阻相反。

5.需較大的無極電容時,可用有極性電解電容器反向串聯後代替。

負極對負極或正極對正極串聯後,就變為無極性電解器其大小為一半。

--||----||---

   +  +

6.電容器在接入時,應檢查是否有短路、漏電和斷路,並校對其數值後使用。

image

Diode 二極管(体)

功用:

整流、濾波 及 開關。

其結構有:

點接觸式:接觸面積小,故其通過電流小。用於高頻檢波及微弱交流的整流。

面接觸式:其PN接面大,使其通過電流大,用於大交流的整流。

硅平面型:一般類型,其穩定性高,多用於開關、脈沖及高頻電路。

特性:

正向,小電阻。反正,大電阻。

同可能會因其電流過大而燒毀。

電氣特性:

1.最大整流電流(Ifm),指二極体在長其連續工作時,允許正向通過PN接面的"最大平均電流"。

2.最高反向工作電壓(Urm),指反向君在二極体二端而不致引起PN擊穿的最大電壓。實際選擇二倍的二極体。

3.正向電壓降(Uf),愈小愈好,導通時兩端產生的正向壓降。

4.反向電流(Ir),指diode在規定溫度和最高反向電壓下其反相電流。愈小愈好。

5.最高工作頻率(Fm),因其接面中的電容影響,其二極体可應用的工作頻率的上限。檢波'整流時。

 

檢測方法:

好壞,以電表(RX100 或 RX1K)量測。

正向小(Ge, 200~500;Si,3K;反向大。

 

使用常識;

1.電路中作用、型號及主要參數要求。

在整流中,需反向電壓及整流電流。小信號時,多使用Ge(0.2);信號強時,用Si(0.65,耐高溫及不易擊穿)

焊接其,極性正確外,其引線不要短於0.8cm,離根部3mm以內不可彎,可以其焊接時應用60W(2~3 S,需用夾子散熱)

C.安裝位置,其散熱。工作在高頻或脈沖時其引線要短,不應用長引線來散熱。而其最大整流電流Irm是指在"電阻或電感負載時的半波平均值;若用於電容負載時,則應降低20%使用)

D.可用二個diode來代替高電流/電壓 diode.

 

===============================================

穩壓二極体(齊納),用來穩定工作電壓的二極体。

普通的二極体外加反向電壓到一定數值後,反向電流會加大到燒毀(擊穿)。而齊納二極体卻可以在反向擊穿下工作,只要限制其工作電流)

使其PN接反被擊穿後,其端電壓在一定範圍內不隨反向電流而變化。

其相關的參數有;

1.穩定電壓(Uz);指穩壓二極体在起穩壓作作的範圍,其兩端的反向電壓值,"穩壓值"(需實測,並隨溫度改變)

2.工作電流(Iz);指在穩壓下其反向工作電流。(由負到正向)

3.最大工作電流(Izm);穩壓二極体長期工作時,所允許通過的最大反向電流值。

4.最大消耗功率(Pm): Uz X Iz

5.動態電阻(Rz);穩壓(反向)下,其電阻變化小。delta Rz.

 

實際電路中,其穩壓電流要取大一點(Izm的 1/2~1/5) 。並以最大功率及穩壓,反求其Iz.

 

檢測方法;

跟一般dideo一樣。

使用常識;

1.遵循三要點;

a,配合合適的限流電阻,

b.反相

c.在工作溫度中,要求穩壓二極体Izm' Pzm

d.可串聯其VD(齊納)。但不可並接。

e.焊接時,散熱

f.可以普通二極体+齊納組合。或是用三極体(9013)中的B, E(6~9),Iz=10mA.做穩壓

g.具溫度補償的穩壓二極体(3根),有一根不用(用於測量,分析)

Interfacing microcontrollers to external devices

在microcontroller(MCU)中,來連接外部設備(device)時,一般的MCU可以直接連接TTL level的(eg. display,sound,motor,relay..)而對於其它(CMOS)的準備也可以接上IC來驅動(MX232)。但最主要的並不是其voltage(電壓)而是其電流(current)。(其MCU的驅動單位,功率 p=vi)

而在不同品牌MCU、不同類型(8x51,AVR,PCI及ARM)中,甚至不同port (pin)都有不同的驅動能力。

問題:

若在你需要連接10個LED,且每個都要20mA. 則你需要200mA.

A.

准雙向I/O埠/弱上拉(標
準8051輸出模式)、強推挽輸出/強上拉、僅為輸入(高阻)
或開漏輸出功能

image

image

image

image

image

A1.定其為標準的輸入/出 腳位

加上bjt amplifying transistor

image

其中R3為為限流電阻,其計算方法為粗約計算

設 diode requires Id=20mA, transistor Ic=100mA, VDD=5V.

R3=5/0.02=250K . 而R1及R2為voltage divider.

A2.

使用Darlington array driver(ULN2002)來代替個別的transistor,

每個腳位可提供100mA的驅動能力。

 

B.情況二,外接功率高的裝置(light bulb,110v)

B1.以relay 取代diode.

這時,你不能將relay直接接到MCU上,因為其relay switch時會damage port ping

It is important to add VD1 backward diode which protects transistor high voltage ‘spikes’ produced when the relay coil is switching

image

 

輸入時,

1.

image

有些MCU有內建其R(pull register),即只需接上switch即可。

image

image

image

image

image

image

image

image

image

image

2.

image