色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

Raspberry Pi 3擴展板的特性與控制應用

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-01-22 09:02 ? 次閱讀

有些小企業的工業作業需要同時滿足惡劣工作環境、高 I/O 能力和復雜功能要求,可編程邏輯控制器 (PLC) 正好可以勝任。盡管存在簡化版 PLC,但設計師現在也可以選擇多種低成本的開源硬件和軟件解決方案,以實現有效的工業監視和控制。

Raspberry Pi Foundation 的微小型 Raspberry Pi 3 及其相關的擴展板就是此類解決方案的一個實例。本文將介紹 Raspberry Pi 3 的主要特征,然后討論如何使用它來監視和控制應用。

Raspberry Pi 為何適用于小企業工業控制

對于很多較小作業規模而言,Raspberry Pi 3 平臺提供了一種性能卓越的低成本解決方案。Raspberry Pi 3 開發板結合了基于 Broadcom ARM? Cortex?-A53 的處理器、1 GB RAM、數字接口Wi-Fi藍牙連接,完全能夠勝任專門的工業自動化任務。處理器本身就是一個高性能的片上系統 (SoC) 器件,集成了具有 512 KB L2 緩沖的四核 ARM Cortex-A53 CPU 以及 54 個排列成三組的 GPIO。

每個 GPIO 分別支持最少兩種、最多六種替代性功能,包括脈寬調制器、時鐘和串行接口。開發人員可以將任何未分配的 GPIO 用作可提供最多 16 毫安 (mA) 電流(每組 GPIO 總電流最多為 50 mA)的中斷線、輸入或輸出。

與 Raspberry Pi 系列中的其他產品一樣,Raspberry Pi 3 充分簡化了嵌入式開發,初學者亦能輕松上手,同時仍不失足夠強大,可以滿足經驗豐富的開發人員更復雜、更強大的處理要求。

開始時,開發人員只需將開發板的視頻端口連接到顯示器并將其 USB 端口連接到鍵盤和鼠標。對于軟件設計,開發人員則有著廣泛的生態系統基礎支撐,受到 Raspberry Pi Foundation 的基于 Linux 的免費 Raspbian 操作系統支持,且該操作系統可通過該開發板的微型 SD 接口從存儲卡加載。

增加工業處理能力

除了具有高性能和易開發的優勢以外,Raspberry Pi 用于擴展其功能的簡化方法也非常適合工業自動化應用的各種要求。需要增加硬件的能力時,開發人員只需將一塊被稱為 HAT(頂部安裝硬件)的擴展板插到 Raspberry Pi 3 開發板上即可。與更復雜的工業系統一樣,HAT 提供了用于識別 HAT 以及根據需要自動配置 GPIO 和驅動程序的標準方法。因此,開發人員只需插入 Pimoroni PIM213 Automation HAT(圖 1),即可針對工業應用立即將自己的 Raspberry Pi 系統升級。

圖 1:開發人員可以通過連接專用的擴展板(例如 Pimoroni Automation HAT)來升級用于實現工業自動化的基礎 Raspberry Pi 3 開發板。(圖片來源:Pimoroni)

專為監測和控制自動化系統而設計的 Pimoroni Automation HAT 組合了多個 I/O 通道,包括模擬和數字輸入、供電型輸出以及繼電器控制。除了支持 24 伏 (V) 電壓以外,這些 I/O 通道還提供大容量的輸入和輸出緩存。例如,繼電器輸出支持最大 2 安 (A) 的電流,足以驅動低功耗的 24 伏零件,如 Crouzet 81 546 001 電磁閥。

對于使用 Automation Hat 進行的軟件開發,Pimoroni 提供了一個相關的 Python 模塊,只需要編寫幾行代碼,就可使用 HAT 的硬件功能。當導入到 Python 程序時,Pimoroni 模塊會創建軟件對象,以控制模擬輸入、數字輸入、數字輸出、繼電器輸出和 LED 燈,所有這些功能都包含相應的低級別讀/寫功能(列表 1)。

class AnalogInput(object):

type = 'Analog Input'

def __init__(self, channel, max_voltage, led):

self._en_auto_lights = True

self.channel = channel

self.value = 0

self.max_voltage = float(max_voltage)

self.light = SNLight(led)

def auto_light(self, value):

self._en_auto_lights = value

return True

def read(self):

"""Return the read voltage of the analog input"""

return round(self.value * self.max_voltage, 2)

def _update(self):

self.value = ads1015.read(self.channel)

def _auto_lights(self):

if self._en_auto_lights:

adc = self.value

self.light.write(max(0.0,min(1.0,adc)))

列表 1:Pimoroni 用于 Automation HAT 的 Python 模塊可通過處理詳細事務處理,如從板載模數轉換器 (ADC) 讀取讀數,而簡化開發工作。(圖片來源:Pimoroni)

每個對象都可以識別相應的通道和其他相關數據。例如,當創建時,模擬輸入對象包含關聯引腳的最大電壓(請參見列表 1 中的 init 函數)。為了執行模數轉換器 (ADC) 轉換,ADC 對象會調用底層的 ADC 模塊(列表 1 中的 ads1015.read)。隨后,ADC 模塊會執行設置 ADC 和執行轉換所需的低級別 I2C 事務處理,然后返回有用格式的值(列表 2)。

class ads1015:

def __init__(self, i2c_bus=None, addr=ADDR):

self._over_voltage = [False] * 4

self.i2c_bus = i2c_bus

if not hasattr(i2c_bus, "write_i2c_block_data") or not hasattr(i2c_bus, "read_i2c_block_data"):

raise TypeError("Object given for i2c_bus must implement write_i2c_block_data and read_i2c_block_data")

self.addr = addr

def read(self, channel=0, programmable_gain=PGA_4_096V, samples_per_second=1600):

# sane defaults

config = 0x0003 | 0x0100

config |= SAMPLES_PER_SECOND_MAP[samples_per_second]

config |= CHANNEL_MAP[channel]

config |= PROGRAMMABLE_GAIN_MAP[programmable_gain]

# set "single shot" mode

config |= 0x8000

# write single conversion flag

self.i2c_bus.write_i2c_block_data(self.addr, REG_CFG, [(config >> 8) & 0xFF, config & 0xFF])

delay = (1.0 / samples_per_second) + 0.0001

time.sleep(delay)

data = self.i2c_bus.read_i2c_block_data(self.addr, REG_CONV)

value = ((data[0] << 4) | (data[1] >> 4))

if value & 0x800:

value -= 1 << 12

value /= 2047.0 # Divide down to percentage of FS

value *= float(programmable_gain)

value /= 3300.0 # Divide by VCC

return value

...

列表 2:用于 ADC 轉換的更高級別函數調用會調用一個讀取例程,此例程會執行 I2C 總線寫入以開始進行轉換,并休眠足夠長的時間以便轉換完成,然后執行 I2C 總線讀取以收集結果。(圖片來源:Pimoroni)

但對于開發人員而言,當讀取模擬值時,只需對模擬對象的指定模擬輸入 (.one) 執行高級別讀取功能 (.read()):

value = automationhat.analog.one.read()

資源庫允許使用這種簡單模型實現其他的 HAT 功能,因此打開或關閉繼電器也是一個簡單的調用:

automationhat.relay.write(1) # 1 = ON, 0 = OFF

靈活的選擇

Pimoroni Automation HAT 提供了小型工業自動化應用所需的基本 IO 功能,但開發人員可以選擇多種可用的 HAT,以實現工業自動化等專業應用所需的各種功能。例如,Adafruit 3013 RTC HAT 提供實時時鐘 (RTC) 功能,這并非開發板本身的標準功能。Raspberry Pi 設計師希望開發人員始終將開發板連接到因特網,以便能夠使用標準的網絡時間協議 (NTP) 保持時鐘時間。因此,對于因設計本意或意外與因特網斷開連接的設計,需要使用外部 RTC,例如 Adafruit RTC HAT。

當增加 RTC 等功能時,開發人員在工業自動化設計中無需只使用一個 HAT。開發人員可以在 Raspberry Pi 開發板上疊接多個 HAT。盡管大多數 HAT 經過專門設計可進行疊接,但開發人員可能需要增加疊接針座(例如 Adafruit 的 2223)以完成裝配,或者增加 M2.5 支座以防止 HAT 相互接觸或與基板接觸。

開發人員可以使用疊接針座和支座輕松疊接 HAT,例如 Adafruit 2348 電機 HAT,以增加很多工業自動化應用所需的電機驅動器。每個 2348 電機 HAT 都可以驅動兩個步進電機或四個直流電機。實際上,開發人員可以疊接多達 32 塊這樣的擴展板,以支持最多 64 個步進電機或 128 個直流電機(圖 2)。

圖 2:開發人員可以疊接多個 Adafruit 2348 電機 HAT,以便在設計中支持最多 64 個步進電機或 128 個直流電機。(圖片來源:Adafruit)

與 Pimoroni Automation HAT 一樣,可以使用幾個簡單的 Python 命令對 Adafruit 2348 電機 HAT 進行編程。Adafruit 針對電機 HAT 的采樣軟件甚至具有基本設計模式,能夠使用 Python 線程模塊并行運行多個電機(列表 3)。

from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor, Adafruit_StepperMotor

import threading

# create a default object, no changes to I2C address or frequency

mh = Adafruit_MotorHAT()

# create empty threads (these will hold the stepper 1 and 2 threads)

st1 = threading.Thread()

st2 = threading.Thread()

...

myStepper1 = mh.getStepper(200, 1) # 200 steps/rev, motor port #1

myStepper2 = mh.getStepper(200, 2) # 200 steps/rev, motor port #1

myStepper1.setSpeed(60) # 30 RPM

myStepper2.setSpeed(60) # 30 RPM

stepstyles = [Adafruit_MotorHAT.SINGLE, Adafruit_MotorHAT.DOUBLE, Adafruit_MotorHAT.INTERLEAVE, Adafruit_MotorHAT.MICROSTEP]

def stepper_worker(stepper, numsteps, direction, style):

#print("Steppin!")

stepper.step(numsteps, direction, style)

#print("Done")

while (True):

if not st1.isAlive():

randomdir = random.randint(0, 1)

if (randomdir == 0):

dir = Adafruit_MotorHAT.FORWARD

else:

dir = Adafruit_MotorHAT.BACKWARD

randomsteps = random.randint(10,50)

st1 = threading.Thread(target=stepper_worker, args=(myStepper1, randomsteps, dir, stepstyles[random.randint(0,3)],))

st1.start()

if not st2.isAlive():

randomdir = random.randint(0, 1)

if (randomdir == 0):

dir = Adafruit_MotorHAT.FORWARD

else:

dir = Adafruit_MotorHAT.BACKWARD

randomsteps = random.randint(10,50)

print("%d steps" % randomsteps)

st2 = threading.Thread(target=stepper_worker, args=(myStepper2, randomsteps, dir, stepstyles[random.randint(0,3)],))

st2.start()

列表 3:Adafruit 的電機 HAT Python 模塊包含采樣軟件,例如此代碼片段就展示了如何使用簡單控制命令和 Python 線程模塊來控制一對步進電機。(圖片來源:Adafruit)

對于可用 HAT 中未提供的功能,開發人員不需要限制自己只使用 HAT 格式。利用 DFRobot DFR0327 Arduino 盾板、Seeed Technology GrovePi+ 入門套件和 MikroElektronika MIKROE-2756 click 盾板,開發人員能夠分別獲得大量的可用 Arduino 盾板、Grove 器件和 MikroBUS click 板。

使用這些開發板時,開發人員可以通過連接 MikroElektronika MIKROE-988 CAN click 板,快速添加標準 CAN 接口支持,或通過連接 MikroElektronika MIKROE-1296 4 至 20 mA 電流回路 Click 板,添加 4 至 20 mA 的電流回路。

完成小企業設計

即使為基于 Raspberry Pi 的設計快速配置了所需的擴展功能后,開發人員通常也需要花費時間構建相應的用戶界面。而使用 Raspberry Pi 3 之后,開發人員就可以將設計連接到 Adafruit 的 IO 云服務,從而為用戶提供自動化流程的圖形化反饋和控制。云服務允許開發人員創建簡單的數據和流程信息饋送(列表 4),并構建儀表板以允許用戶從臺式機、智能手機或其他移動設備上的任何 Web 瀏覽器監視和控制項目(圖 3)。

# Import library and create instance of REST client.

from Adafruit_IO import Client

aio = Client('YOUR ADAFRUIT IO KEY')

# Send the value 100 to a feed called 'Foo'.

aio.send('Foo', 100)

列表 4:開發人員可以輕松地將數據從工業自動化應用傳輸到 Adafruit IO 云服務,進行顯示和控制。(圖片來源:Adafruit)

Raspberry Pi 3擴展板的特性與控制應用

圖 3:開發人員可以顯示來自基于 Raspberry Pi 3 的工業自動化應用的信息,并使用 Adafruit IO 儀表板提供控制。(圖片來源:Adafruit)

簡單的軟件開發、豐富的擴展板和高性能的 Raspberry Pi 組合提供了一個適合小型工業自動化應用的解決方案。但在某些這樣的應用中,與使用 RTC 的配置(例如 Adafruit 3013 RTC HAT)相比,開發人員可能需要更嚴格的定時控制。

3013 RTC HAT 基于 Maxim Integrated DS3231 RTC IC,提供了兩個可編程報警功能和一個方波輸出信號。開發人員可以使用報警功能在指定日期、時、分、秒生成中斷,或者使用方波在 1 赫茲 (Hz) 頻率生成中斷。對于需要以快于 1 Hz 的定期中斷的應用,開發人員需要使用處理器的系統定時器開發定制軟件功能,或者構建能夠以所需的速率生成中斷的定制硬件計數器。

在需要更快的定時分辨率的應用中,同樣重要的要求將變成確定性響應延遲。在高速率下,標準 Raspbian 操作系統中的響應延遲變化可能會影響精度。盡管標準系統可能以微秒級分辨率提供具有足夠確定性的響應,但開發人員可能需要借助使用 Linux PREEMPT_RT 補丁的方法來滿足更嚴格、更具確定性的分辨率要求。

總結

傳統 PLC 提供的能力通常超出小規模制造業、加工業和原型開發車間的大多數較小工業作業的要求和預算。對于這些應用,操作員面臨的要求通常較低,Raspberry Pi 3 完全可以勝任。

開發人員可以使用 Raspberry Pi 3 和相應的擴展板,快速實施能夠滿足廣泛小企業作業要求的專用工業自動化系統。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16406

    瀏覽量

    178665
  • 監視
    +關注

    關注

    0

    文章

    73

    瀏覽量

    18774
收藏 人收藏

    評論

    相關推薦

    GraspIO Cloudio:一款Raspberry Pi不簡單的擴展板

    GraspIO Cloudio,我們可以這樣來看: 一款配有移動平臺,適用于端對端物聯網開發和部署;一款Raspberry Pi 擴展板,為iPhone、iPad和Android 設備提供拖放式編程
    的頭像 發表于 08-20 09:56 ?5181次閱讀

    DIY一個樹莓派擴展板

     Arduino的擴展板被稱為Shield,而樹莓派的擴展板則稱作HAT(Hardware Attached on Top),意為附加在樹莓派頂上的硬件板卡。下面就帶著大家從零開始設計一塊開源的樹莓派擴展板,暫名為
    發表于 08-04 14:37 ?7451次閱讀

    如何使用Raspberry Pi 3進行快速開發

    Raspberry Pi 3 使用其四核處理器,并可提供比單核 Pi Zero 多一倍的內存。對于需要較小設計封裝,但又對 Pi Zero
    的頭像 發表于 02-25 08:10 ?6705次閱讀
    如何使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>3</b>進行快速開發

    【Embedded Pi申請】基于Raspberry Pi的智能家居遠程控制系統

    地提高其擴展能力以及代碼的可移植能力。故提出了基于Raspberry Pi的智能家居遠程控制系統的申請。項目描述:該項目主要分為3大部分:智
    發表于 11-24 09:33

    LN香蕉派擴展板使用教程

    /forum.php?LN_Hub_32IO擴展板使用:http://forum.lemaker.org/cn/forum.php?LeMaker、Banana PiRaspberry Pi
    發表于 08-04 18:01

    Raspberry Pi平臺的擴展板有哪幾種?

    Raspberry Pi平臺的擴展板有哪幾種?它們都有些什么功能?
    發表于 06-16 07:28

    一個Raspberry Pi擴展板

    描述clumsyMIDI - 樹莓派擴展板一個 Raspberry Pi 擴展板,包含一個 MIDI 接口、DAC 和 OLED 顯示器,只需要通孔焊接技能。這主要用作mt32-
    發表于 07-29 06:12

    采用Raspberry Pi 3擴展板對工業控制設計(附代碼)

    對于很多較小作業規模而言,Raspberry Pi 3 平臺提供了一種性能卓越的低成本解決方案。Raspberry Pi
    發表于 05-04 15:40 ?51次下載
    采用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>3</b>和<b class='flag-5'>擴展板</b>對工業<b class='flag-5'>控制</b>設計(附代碼)

    微雪電子2.23寸OLED擴展板介紹

    樹莓派2.23寸OLED擴展板 - 128×32分辯率 支持SPI/I2C 基于Raspberry Pi 40pin GPIO接口,適用于Raspberry
    的頭像 發表于 11-21 16:54 ?1812次閱讀
    微雪電子2.23寸OLED<b class='flag-5'>擴展板</b>介紹

    微雪電子PoE以太網供電擴展板介紹

    Raspberry Pi PoE HAT 樹莓派3B+以太網供電擴展板 帶隔離開關 散熱風扇 型號 Raspberry
    的頭像 發表于 12-30 10:21 ?2227次閱讀
    微雪電子PoE以太網供電<b class='flag-5'>擴展板</b>介紹

    微雪電子Raspberry Pi 3 Model擴展板簡介

    Raspberry Pi 3 Model B+ 樹莓派3B+ 多功能擴展板套件 帶傳感器擴展板
    的頭像 發表于 12-20 11:23 ?1661次閱讀
    微雪電子<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>3</b> Model<b class='flag-5'>擴展板</b>簡介

    dfrobot樹莓派UPS電源擴展板(Zero版)簡介

    DFRobot UPS HAT for Raspberry Pi Zero是一款針對Raspberry Pi ZERO系列的不間斷電源擴展板
    的頭像 發表于 01-07 09:15 ?2239次閱讀
    dfrobot樹莓派UPS電源<b class='flag-5'>擴展板</b>(Zero版)簡介

    dfrobot樹莓派4B/3B+ IO擴展板簡介

    IO Expansion HAT是一款專為Raspberry Pi 開發的IO擴展板擴展板將樹莓派IO口均引出,包含數字端口、模擬端口、
    的頭像 發表于 01-07 10:40 ?6600次閱讀
    dfrobot樹莓派4B/<b class='flag-5'>3</b>B+ IO<b class='flag-5'>擴展板</b>簡介

    Raspberry Pi Zero的擴展板BassCrab uHAT

    電子發燒友網站提供《Raspberry Pi Zero的擴展板BassCrab uHAT.zip》資料免費下載
    發表于 08-22 15:49 ?2次下載
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero的<b class='flag-5'>擴展板</b>BassCrab uHAT

    如何用Raspberry Pi制作動作控制感應燈

    本教程將帶你一步步制作一款動作控制感應燈。該項目使用的設備包括:Raspberry Pi Model B,Dexter Industries的GrovePi擴展板,以及超聲波傳感器和繼
    的頭像 發表于 02-24 17:25 ?871次閱讀
    如何用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>制作動作<b class='flag-5'>控制</b>感應燈
    主站蜘蛛池模板: 欧美一区二区视频在线观看| 内射少妇36P九色| 年轻老师毛茸茸自由性| 亚洲视频在线免费看| 国产色精品久久人妻无码看片| 热思思| 99re久久热最新地址一| 两性色午夜视频免费国产| 2018久久视频在线视频观看| 麻豆成人AV久久无码精品| 97色伦图区97色伦综合图区| 男生J桶进女人P又色又爽又黄| 99精品视频| 日本一在线中文字幕| 国产精品18久久久久网站| 亚洲AV电影天堂男人的天堂| 国外成人电台| 在线观看成人免费视频| 美女伊人网| 处破女免费播放| 性派对xxxhd| 久久精品免费电影| caoporn 超碰在线视频| 视频成人永久免费下载| 韩国女人高潮嗷嗷叫视频| 长泽梓黑人初解禁bdd07| 欧美s00老人| 俄罗斯videosbest8| 亚洲精品视频久久| 美女叉腿掰阴大胆艺术照| 俄罗斯12x13x处| 亚洲日本在线不卡二区| 浓毛BWBWBWBWBW日本| 国产成人久视频免费| 一本道手机无码在线看| 欧美区一区二| 国产囗交10p| 99久久久无码国产精品免费人妻| 睡觉被偷偷进入magnet| 久久精品99热超碰| 抽插妇女疯狂视频|