yj hung

FOC控制原理(Theory For FOC Control)之3

前言 上篇針對回授接收到訊號做分解後,這邊要進入輸入訊號的介紹 PWM到SPWM 因我們所要驅動的是三相逆便電路,如果單單開關會得到類似6步方波的控制不夠平滑,這邊我們想要使其平滑就要引入2個概念 PWM 面積等效定理 PWM相信有在控制馬達的都不陌生,基本上如下圖去控制操作電壓的佔比頻率,來達到等效電壓的效果 由上我們在進階一點把弦波全部等效成方波如下圖 這邊就延伸出2種控制波形 到目前為止我們就了解到單一相正弦波控制輸入PWM,下一步我們要延伸成3相來達成控制BLDC 三相電壓控制 由右圖我們可以列出上圖方程式,然後再由3組橋臂我們可以得到8種組合 這邊我們舉其中一個狀態為例如下圖,並由左至右逐步簡化最後得到最右邊的簡化圖 由上圖我們可以獲得以下方程式 由上面其中一種狀態推演,我們可以獲得下列全部狀態表格,然後在近一步圖形化成最右邊圖 但這邊得到的圖與網路給的標準圖方向不同,這邊就是重點所在abc 座標軸代表的是空間向量的方向,稱之為三相静止座標系,而不是馬達的等效模型,馬達模型上的向量轉換到三相静止座標軸上的向量需要做一个簡單的變換——負變正,正變負,做鏡向翻轉後就跟網路相同如下 有了向量組合,與PWM概念後接下來就是把其結合成SVPWM(Space vector PWM),下面3個為主要要點 輸出電壓由重復地開關兩個相鄰的有效向量與零向量 的動作產生 輸出電壓的 θ  角取決於兩個相鄰有效向量的相對開關時間 輸出電壓的幅值取決於兩個相鄰的有效向量與零向量的相對開關時間 由上面演算我們可以推得每個開關所需要經歷時間,就可以得到SPWM控制了這邊詳細的請參考SVPWM分析、各个扇区详细计算以及Matlab仿真,這篇真的很詳細 參考資訊 SVPWM分析、各个扇区详细计算以及Matlab仿真 FOC项目知识点总结四 | 从 PWM 到 SVPWM

FOC控制原理(Theory For FOC Control)之3 Read More »

FOC控制原理(Theory For FOC Control)之2

前言 在上章節介紹完馬達種類與簡單描述控制方法,這章節會進入數學模型與FOC控制方法深入介紹 控制狀態 這邊可以參考左圖轉動動態圖,可以看到不同的電流方向通過 讓定子產生磁場方向,轉子因異極相斥進而產生旋轉。 而這種旋轉狀態可以再細分為6種狀態,下面分別對各種狀態探討 上圖六種不同的電流方向把其表格化就可以獲的下圖,其中六個步驟正處於哪一步驟就取決於轉子位置,轉子位置通常可由Sensor感知或由無通電那一極感知返電動式去推算現在轉子位置 再由上圖把其電流圖表化就可以獲得下圖,而怎實現下圖就出現三相逆變電路(這邊就會對應BLDC的motor driver) PS:這邊注意上圖看起來很像六步方波驅動BLDC但細看會發現這邊是電流六步方波是電壓 三相逆變電路 上面電路的 VT 是指 IGBT 模塊,而在小功率驅動中一般使用 MOSFET 来當做開關,兩者皆為全控器件,用途可以等同MOS管,可以看作電壓控制的高速電子開關,在MOS管的極閘(上图中的High Drive和Low Drive)施加高電頻或者低電頻,就可以控制MOS原極和漏極的導通或者關閉。 在下圖中,我們打打第一组半橋的上橋臂、第二组和第三组半橋的下橋臂(其餘的關閉),即打開 V T 1 , V T 2 , V T 6 VT1,VT2,VT6VT1,VT2,VT6 ,那麼就可以讓電流從電源正極流過馬達的a相,流經b、c相,然後回到電源負極: 下圖為上面兩臂,下面一臂的情况: 通過控制三个半橋的不同開關狀態,我們可以控制電流在馬達中的不同流向了。 這樣,在任一瞬間,將有三个橋臂同時導通。可能是上面一個臂下面兩個臂,也有可能是上面兩個臂下面一個臂。因为每次換向都是在同一相上下兩個橋臂之間進行,因此也被稱為縱向換流。 Clarke’s Transformation與 Park’s Transformation 這邊先有一個概念,電流輸出要直接控制成弦波,對於元件要求與控制手段都是非常嚴苛的,因此有沒有甚麼方式可以把弦波轉呈線性呢?所以就演變出 Clarke與 Park 轉換,給各位看2張圖就會比較明這2個轉換是在幹嘛了˙ Clarke’s Transformation 其中Clarke’s Transformation是先把3個弦波簡化成2個旋波(這邊簡化方法簡單說是座標轉換) Park’s Transformation Park’s Transformation再來把2個弦波轉變成2線性直線 數學公式 首先我們看馬達在轉動時後的慣性坐標系

FOC控制原理(Theory For FOC Control)之2 Read More »

FOC控制原理(Theory For FOC Control)之1

前言 這邊探討的馬達為”Y型繞線無刷直流馬達”,會先從馬達種類=>轉動原理=>控制方法=>理論控制=>實作一步步做說明 馬達種類如下圖 馬達旋轉原理 下圖2個圓形磁鐵會因為上方磁鐵轉動,導致下方磁鐵因同極相斥異極相吸進而產生轉動 由上面可以知道當磁鐵相互垂直時(數學名詞為:正交)其力量效果最大,再透過改變通過線圈電流方向與大小(下圖),就可以讓合力方向形成的角度更加多元 轉動圖 教科書上馬達轉動圖 無刷馬達轉動圖 這邊可以看到上圖教科書上的馬達轉動外部是定磁鐵(定子),而轉動軸(轉子)是線圈,因通電搭配右手開掌定則產生旋轉,此結構是一般的有刷直流馬達。 而右圖線圈是固定(定子),轉動軸是由永久磁鐵(轉子)所組成的,就是一般的無刷直流馬達 有刷直流與無刷直流馬達比較表 無刷直流馬達控制方法 六步方波 這邊簡單說是把三個電壓輸入切分成6個區塊,利用不同電壓輸入讓馬達轉動(這邊可以參考BLDC FOC 控制原理) 我們這邊拿步驟一與二做解釋,可以看下圖因其中2者通電壓使其磁場合力方向(黃色虛線),馬達轉子就會轉到虛線位置以此類推達到反覆旋轉 FOC控制(Field Oriented Control) 如下圖,概念是用弦波電壓控制馬達,這邊將以FOC控制為主軸在後續章節深入探討介紹FOC控制與其數學理論 參考 FOC简介 FOC控制原理 电控入门之一(电机FOC,电机为什么能转) FOC项目知识点总结一 | 概念扫盲——从有刷直流电机到PMSM和BLDC

FOC控制原理(Theory For FOC Control)之1 Read More »

UART傳輸使用STM32 HAL實作TX/RX(STM32F401RE)

前言 因這邊需要寫一個UI介面去操控STM32 進而控制sensor,因此這邊開始去了解STM32UART傳輸 但本身也不是很喜歡使用UART去控制元件,原因在於傳輸不好寫,寫不好容易有data last或造成MCU流程卡死問題 因此這邊傳輸長度是已知,接收長度也是已知的狀態下去Coding UART傳輸,針對不定長度接收會放下最底下欄位供參考 環境 STM32CubeIDE Nucleo F401RE Board STM32CubeMX 設定步驟 STM32CUBEMX設定UART,關鍵是要打開UART中斷,以及打開TX/RX的DMA Enable UART IRQ Enable UART DMA channels PS:這邊會選擇DMA開啟的原因為避免Data lost與程式因為中斷而卡死,因如果單用IT中斷來說在中段接收時候如果程式運行太快 會導致資料lost,但DMA的缺點為你必須知道資料長度不然會無法順利執行下一步(因這邊UI與MCU撰寫都是由我編輯因此長度都是已知不會有例外) 涵式庫差異 傳輸 接收 輪詢(Polling):就是阻塞式詢問,CPU都不幹別的事了,就整天在那邊問你說:「現在有沒有要傳資料啊?」沒有要傳我就繼續等,總是在那邊詢問、等待。這種方最土法煉鋼、這就是輪詢的缺點,效率太低,占用cpu時間。 中斷(Interrupt):沒有收到數據時,執行其他的程序,收到數據後,進入中斷處理通訊。與輪詢相對來說,不用循環查詢狀態暫存器,可以有更多的時間運行其他程序。 DMA(Direct Memory Access):直接記憶體存取。串列數據的接收與發送由DMA處理,DMA說:「我把接收、傳送的資料放在記憶體的某個位置,你如果需要就自己去那個位置提取」。DMA也可以分為輪詢與中斷方式。資料的發送與接收都不用CPU干預,通過DMA進行。 CPU有更多的時間運行其他程序。 Coding sample 這邊照上面步驟CubeMX在宣告部分會多這3個 初始化 這邊選用的接收為HAL_UARTEx_ReceiveToIdle_DMA(&huart2, &uRx_Data1,14),主要原因為HAL_UARTEx_ReceiveToIdle_DMA,算是裡面比較進階的函數。他會在收滿資料,或是UART IDLE一個字元以後呼叫callback 這邊&uRx_Data1是宣告unsigned char uRx_Data1[14];去接收資料,因這邊傳輸近來資料為ASCII 非int 宣告成int接收部分需要在自己轉換 PS:轉換再UI端實現轉換或在STM32 MCU內都可以 這邊因為已知傳輸data格式為:x,x,xx……中間以逗號做為區隔分號為最後一碼確認結束且第一碼是分辨哪種模式 因此這邊接收到資料會先做第一碼判別,確認模式 字串連結 這邊因為使用”,”做為每個數字分隔”;”作為最後字元接收,過程中都是數字。這邊要注意因為進來的DATA為ASCII所以一定要扣除 ‘0’ 去使其轉變成INT格式 這邊輸出部分因為寫入下列範例printf資料UI部分就可以接收到了因此這邊沒再額外撰寫 參考資料

UART傳輸使用STM32 HAL實作TX/RX(STM32F401RE) Read More »

AMS_OSRAM Ambient Light Sensor  SFH 5721

前言 環境光感測器(英語:Ambient Light Sensor)是一種感光元件, 目前主要用於手機、筆電、平板等等顯示螢幕面板 目前AMS_OSRAM這邊有推出一款新的ALS SFH 5721 The SFH5721 Digital Ambient Light Sensor combines an array of photodiodes and wide dynamicrange readout channels to enable ambient light and infrared sensing. Features: Package: clear epoxy ESD: 2 kV acc. to ANSI/ESDA/JEDEC JS-001 (HBM) Adapted to human eye sensitivity (Vλ) Integrated and independent Infrared Detection Channel

AMS_OSRAM Ambient Light Sensor  SFH 5721 Read More »

AMS TCS3430 coding on STM32(Arduino)

    前言 該設備具有先進的環境傳感(ALS)和C IE 1931三刺激顏色控制(和C光傳感)。每個設備通道過濾器來使其能夠準確地測量環境環境,並根據光學特性來測量環境。顏色。這些用於計算色度、照度和色溫,所有這些都支持各種潛在的應用程序。 DFRobot_TCS3430 Nucleo-F401RE 連線 傳感器板子與上圖Nucleo-F401RE腳位對接部分硬件即完成   注意此板是3.3V非5V,與I2C的腳為傳感器板是含電阻的,如果是焊路電路板記得要外加電阻正常 編碼流程   首先在開始感應前先把TCS3430內的記憶體reset才不會造成I2C編寫指令錯誤   The Sensor Initialization         首先在開始Sensing前要先把TCS3430內的ADC等等全部重新設定,避免I2C寫入或讀取Fail     初始化表         初始化完成後即可抓取Data         其中getXData()等等涵式庫如下以此類推         額外設定     setWaitTimer/setALSGain/setHighGAIN     以上等等不同Gain設定最主要是影響感光程度可把其調整得更加敏感,Wait time主要是看檢測時間間隔用於節電     校正與Lux / CCT Calculations

AMS TCS3430 coding on STM32(Arduino) Read More »

AMS Time-of-Flight sensor ( TMF8801 )on STM32 -2

前言 上篇主要針對AMS TOF TMF8801初始化與FactoryCalib做初步介紹完了這邊介紹他如何獲取量測資訊與流程下圖表流程圖為主要我去彙整TMF8801上篇的流程圖上篇,不清楚的看官可以針對這表格再比對一下  Get sensor distancePeak data and Confidence 在抓取資訊後發現奇怪TMF8801怎只能抓取到最遠660mm!!! 後續花很長時間比對與AMS官網上放的Firmware 發現有些地方不同且網路資訊很多都沒寫到,重點官網上竟然Application Note也沒寫到 是需要做Firmware upload TMF8801才能達到官網規格最遠2.5M 解讀Firmware upload 首先先到官網下載Firmware開啟下圖的文件(用記事本即可) 程式代碼 主要加入這3個步驟把Data一個一個寫入因為STM32的MCU架構與MPU Linux系統不同,無法讀取外部檔案所以這邊是把data解析出來後存到陣列裡 第一步download_INT_RAM()主要先讓TMF8801 RAM全部初始化方便後續把data陸續寫入 第二步寫入Data 第3步相對簡單只是Datasheet要求的你把RAM寫入Data後要做一次復歸動作

AMS Time-of-Flight sensor ( TMF8801 )on STM32 -2 Read More »

SPI introduction and Coding on STM32

目錄 前言 一、SPI協議簡介 SPI物理層 SPI協議層 一、基本通訊程序 2. 通訊的攔截和停止信號 3.資料有效性 4. CPOL/CPHA 及通訊模式 二、STM32cubeMX設定 三、STM32 HAL庫中的SPI 1.SPI初始化結構體 一、SPI協議簡介 SPI 協議是由摩托羅拉公司提出的通訊協議(Serial Peripheral Interface),即通訊外圍設備面是全高速雙工的通訊協議,它被廣泛地在通訊設備與MCU之間使用,它被廣泛地在ADC、LCD等設備與MCU之間使用,3 條總線分別為SCK、MOSI、MISO,觸發選用SS SPI物理層 SS(Slave Select) SS(從設備選擇信號線,常稱為選片信號線,也稱為NSS、CS,以下用NSS表示,當有多個SPI從設備與SPI主機連接時,設備的選擇其他信號線) SCK 及任何一條信號線,我在每一個設備的SPI、MISO 線上,即從設備上,都共同使用這3 條信號;而從設備本身的這個NS NS 上有多少條信號線,本協議的多少個設備通過路由,有多少個從設備上選址,即線路上的設備地址,即上的設備並進行通訊協議;沒有設備地址,使用NSS信號線來探測,當主機要選擇從設備的時候,該從設備的信號線設置為低調它,即從該設備被選中有效片選,接著開始與被人的設備進行SPI通訊,所以SPI通訊以NSS線置NSS低作為被線信號,以簡單的說此PIN是主人使用Slave要接收訊號以及Master去跟Slave要數據需要觸發的腳位(類似I2C的地址概念) SCK(Serial Clock):信號線時鐘,用於通訊數據同步,它由通訊主機設備產生,決定通訊的頻率,不同的支持的最高頻率不一樣,如STM32的SPI時鐘頻率最大為fpclk/2 ,兩個設備之間通訊時,通訊設備之間的通訊低速 MOSI(主設備輸出/從輸入)主輸出:主設備輸出線,主機資源的資料設備從鏈路信號,從機由線索線輸入讀入發送的資料,即這條線索的方向為主機到從機 MISO Master Input,,Slave Output):從主設備輸出的資料輸入(從線索輸入設備,從線索輸入)方向為從機到主機 二、SPI協議層 一、基本通訊程序 是一個機器與信號源的信號源都來自主機,NSS、CK、MOS I 由主機控制產生而 MISO 的由主機產生,通過信號線讀取從機的信號線,MOSI (SS) 為各種稀有的 MISO 時間段才有效,我和 MISO 傳輸一個短期的資料 CPOL/CPHA 及通訊模式

SPI introduction and Coding on STM32 Read More »

AMS Time-of-Flight sensor ( TMF8801 ) -1

前言 A time-of-flight camera (ToF camera) is a range imaging camera system employing time-of-flight techniques to resolve distance between the camera and the subject for each point of the image, by measuring the round trip time of an artificial light signal provided by a laser or an LED.這邊選用SparkFun Qwiic Time-of-Flight Sensor TMF8801模組來當驅動模板搭配STM32F401RE的Nucleo-F401RE板子 這邊使用TMF8801與Nucleo-F401RE作為開發工具以下開始程式範例與接線說明 TMF8801介紹 TMF8801是2019年AMS推出的用于测量(dToF)距離的集成式模塊,號稱當時體積最小。這個Sensor可以精準測量0.02m至2.5m範圍,實際量測在100KLux陽光底下大約剩下60cm可以外加一些裝置最大只能Gan到1M,暗室下能夠測量到2.5m,2m以内基本都能量測到。相比VL53L0X測距模組,测量距離與準度是相對好些。 Features Direct ToF technology with high sensitivity

AMS Time-of-Flight sensor ( TMF8801 ) -1 Read More »

Shopping Cart