發表文章

python serial 模組使用方法 #1

一、概述     pyserial模組封裝了對串列埠的訪問。 二、特性     在支援的平臺上有統一的介面。     通過python屬性訪問串列埠設定。     支援不同的位元組大小、停止位、校驗位和流控設定。     可以有或者沒有接收超時。      類似檔案的API,例如read和write,也支援readline等。     支援二進位制傳輸,沒有null消除,沒有cr-lf轉換。 三、系統要求     python 2.3及以上版本,包括py3k。 四、使用方法和例項 1、匯入pyserial模組 pip install pyserial (for Power shell) import serial 2、開啟序列口 // 開啟串列埠0, 9600,8N1,連線超時0.5秒 import serial ①選擇裝置 ser=serial.Serial(“/dev/ttyUSB0”,9600,timeout=0.5) #使用USB連線序列口 ser=serial.Serial(“/dev/ttyAMA0”,9600,timeout=0.5) #使用樹莓派的GPIO口連線序列口 ser=serial.Serial(1,9600,timeout=0.5)#winsows系統使用com1口連線序列口 ser=serial.Serial(“com1”,9600,timeout=0.5)#winsows系統使用com1口連線序列口 ser=serial.Serial(“/dev/ttyS1”,9600,timeout=0.5)#Linux系統使用com1口連線序列口 print ser.name#列印裝置名稱 print ser.port#列印裝置名 ser.open() #開啟埠 s = ser.read(10)#從埠讀10個位元組 ser.write(“hello”)#向埠寫資料 ser.close()#關閉埠 data = ser.re...

常見的動力電池 SOC 估算方法

電池技術發展至今,用來估算SOC的方法已經出現了很多種,既有傳統的電流積分法、電池內阻法、放電試驗法、開路電壓法、負載電壓法,也有較為創新的Kalman濾波法、模糊邏輯理論法和神經網絡法等,各種估算方法都有自己的優缺點,下面對常用的幾種SOC方法進行簡要介紹: (1)電流積分法 電流積分法也叫安時計量法,是目前在電池管理系統領域中應用較為普遍的SOC估算方法之一,其本質是在電池進行充電或放電時,通過累積充進或放出的電量來估算電池的SOC,同時根據放電率和電池溫度對估算出的SOC進行一定的補償 。如果將電池在充放電初始狀態時的SOC值定義為SOCt0,那麼t時刻後的電池剩餘容量SOC則為: 式中,Q為電池額定容量,n為充放電效率,也叫庫侖效率,其值由電池充放電倍率和溫度影響係數決定,i為t時刻的電流。與其它SOC估算方法相比,電流積分法相對簡單可靠,並且可以動態地估算電池的SOC值,因此被廣泛使用。但該方法也存在兩方面的局限性:其一,電流積分法需要提前獲得電池的初始 SOC 值,並且要對流入或流出電池的電流進行精確採集,才能使估算誤差儘可能小;其二,該方法只是以電池的外部特徵作為SOC估算依據,在一定程度上忽視了電池自放電率、老化程度和充放電倍率對電池SOC的影響,長期使用也會導致測量誤差不斷累積擴大,因此需要引入相關修正係數對累積誤差進行糾正。 (2)放電試驗法 放電試驗法是將目標電池進行持續的恆流放電直到電池的截止電壓,將此放電過程所用的時間乘以放電電流的大小值,即作為電池的剩餘容量。該方法一般作為電池 SOC 估算的標定方法或者用在蓄電池的後期維護工作上,在不知道電池 SOC 值的情況下採用此方法,相對簡單、可靠,並且結果也比較準確,同時對不同種類的蓄電池都有效。但是放電試驗法也存在兩點不足:第一,該方法的試驗過程需要花費大量的時間;第二,使用此方法時需要將目標電池從電動汽車上取下,因此該方法不能用來計算處於工作狀態下的動力電池。 (3)開路電壓法 開路電壓法是根據電池的開路電壓(Open Circuit Voltage, OCV)與電池內部鋰離子濃度之間的變化關係,間接地擬合出它與電池SOC之間的一一對應關係。在進行實際操作時,需要將電池充滿電量後以固定的放電倍率(一般取1C)進行放電,直到電池的截止電壓時停止放電,根據該放電過程...

U-BOOT的啟動流程及移植

U-BOOT的啟動流程及移植 摘要: 嵌入式 系統 一般沒有通用的bootloader,u-boot是功能強大的bootloader開發 軟件 ,但相對也比較復雜。文中對u-boot的啟動流程作了介紹,詳細給出了u-boot在S3C2410開發板上的移植方法和步驟。   關鍵詞:bootloader;u-boot;嵌入式系統;移植;S3C44B0 1.Bootloader及u-boot簡介 Bootloader代碼是芯片復位后進入操作系統之前執行的一段代碼,主要用於完成由硬件啟動到操作系統啟動的過渡,從而為操作系統提供基本的運行環境,如初始化CPU、堆棧、存儲器系統等。Bootloader 代碼與CPU 芯片的內核結構、具體型號、 應用 系統的配置及使用的操作系統等因素有關,其功能類似於P機的BIOS 程序 。由於Bootloader和CPU及 電路 板的配置情況有關,因此不可能有通用的Bootloader ,開發時需要用戶根據具體情況進行移植。嵌入式Linux系統中常用的Bootloader有 arm boot、redboot、blob、u-boot等,其中u-boot是當前比較流行,功能比較強大的Bootloader,可以支持多種體系結構,但相對也比較復雜。Bootloader的實現依賴於CPU的體系結構,大多數Bootloader都分為stage1和stag2兩大部分。Bootloader的基本原理見參考文獻。 u-boot是sourceforge網站上的一個開放源代碼的項目。它可對 PowerPC、Mpc5xx、Mpc8xx、Mpc82xx、Mpc7xx、Mpc74xx、arm(ARM7、ARM9、StrongARM、Xscale)、MIPS(4kc、5kc)、X86等處理器提供支持,支持的嵌入式操作系統有Linux、Vx-Works、NetBSD、QNX、RTEMS、ARTOS、LynxOS等,主要用來開發嵌入式系統初始化代碼Bootloader。軟件的主站點是 http://sourceforge.net/projects/   u-boot。u-boot最初是由denx( www.denx.de )的PPC-boot發展而來的,它對PowerPC系列處理器的支持最完善,對Linux 操作系統的支持最好。源代碼開放的...

python 之分割參數 getopt

圖片
python 之 分割参数getopt os下有个方法walk,非常的好用,用来生成一个generator。每次可以得到一个三元tupple,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。  1. 导入getopt, sys 模块 2. 分析命令行参数 3. 处理结果 第一步很简单,只需要: import getopt, sys 第二步处理方法如下(以Python 手册上的例子为例): Python代码   try :       opts, args = getopt.getopt(sys.argv[ 1 :],  "ho:" , [ "help" ,  "output=" ])   except  getopt.GetoptError:        # print help information and exit:    1. 处理所使用的函数叫getopt() ,因为是直接使用import 导入的getopt 模块,所以要加上限定getopt 才可以。 2. 使用sys.argv[1:] 过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)。 3. 使用短格式分析串"ho:" 。当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":" 号 。所以"ho:" 就表示"h" 是一个开关选项;"o:" 则表示后面应该带一个参数。 4. 使用长格式分析串列表:["help", "output="] 。长格式串也可以有开关状态,即后面不跟"=" 号。如果跟一个等号则表示后面还应有一个参数 。这个长格式表示"help" 是一个开关选项;"output=" 则表示后面应该带一个参数。 5. 调用getopt 函数。函数返回两个列表:opts 和args 。opts 为分析出的格式信息。args 为不属...