CAN/RS232 Shield

CAN/RS232 Shield, bir CAN-FD alıcı-vericisini bir RS-232 alıcı-vericisiyle birleştirir; böylece OpenMV Cam, tek bir shield üzerinden geniş giriş gücü ve ters voltaj korumasıyla araçlar, denetleyiciler ve eski seri ekipmanlarla iletişim kurabilir.

CAN/RS232 Shield

Tam veri sayfası, fotoğraflar ve sipariş için CAN/RS232 Shield ürün sayfasına bakın.

Öne çıkanlar

  • Kart üzerinde sonlandırma ve filtreleme ile 8 Mb/s CAN-FD

  • Entegre filtreleme ile 1 Mb/s RS-232

  • 6-36 V giriş, ters voltaja dayanıklı

  • ±36 V aşırı voltaj korumalı 0-5 V ADC girişi

  • Kamera senkronizasyon tetikleyicileri için kısa devre korumalı 0-5 V dijital G/Ç

Pin çıkışı

CAN/RS232 Shield Pin Çıkışı

Pin referansı

Pin

Fonksiyon

P1

CAN TX → alıcı-verici girişi (varsayılan)

P2

CAN TX → alıcı-verici girişi (alternatif)

P3

CAN RX ← alıcı-verici çıkışı

P4

RS-232 TX → hattı sürer

P5

RS-232 RX ← hattı alır

P6

Seviye kaydırmalı AIN geri okuması (P6 üzerinde 0–3,3 V)

P10

SYN — terminal bloğu üzerinde açık-drenajlı dijital G/Ç

PWR girişi

Terminal bloğu üzerinde 6–36 V geniş giriş (ters voltaja dayanıklı)

AIN girişi

Terminal bloğu üzerinde analog giriş

VIN çıkışı

Kart üzerindeki regülatörden 600 mA’e kadar 5,4 V

3,3V hattı

Shield’in kart üzerindeki elektroniğini besler

GND hattı

Ortak toprak

Not

AIN, ±36 V’a kadar aşırı voltaj korumalıdır ve varsayılan olarak 0–5 V’luk bir voltaj girişidir; P6 üzerinde 0–3,3 V’a ölçeklenir. AIN’i 4–20 mA akım döngüsü girişine geçirmek için shield’in ön yüzündeki 4–20 mA mod şöntünü köprüleyin.

Not

SYN, kamera tarafında 3,3 V’a ve SYN terminal tarafında 5 V’a çekilen açık-drenajlı bir dijital hattır. Varsayılan olarak bir giriştir — shield, SYN üzerindeki 0–5 V’u P10 üzerinde 0–3,3 V’a seviye kaydırır. P10’u bir çıkışa çevirip P10 üzerindeki 0–3,3 V’u SYN üzerinde 0–5 V’a seviye kaydırmak için kart üzerindeki lehim atlama telini değiştirin.

Not

P1, P2, P3, P4, P5, P6 ve P10 pinlerinin her biri ilgisiz kullanım için geri kazanılabilir. P1, P3, P4, P5, P6 ve P10 varsayılan olarak bağlıdır — P1, P3, P6 ve P10 arka yüzdeki lehim atlama telleri aracılığıyla, P4 ve P5 ön yüzdeki lehim atlama telleri aracılığıyla. Serbest bırakmak istediğiniz herhangi bir pindeki atlama telini açın. P2 varsayılan olarak bağlı değildir: bunun yerine CAN TX’i P2’ye yönlendirmek için arka yüzdeki atlama telini köprüleyin (ve P1’i serbest bırakmak için P1’in arka yüzdeki atlama telini açın).

Not

P1/P2 ayrımı, shield’in işlemci aileleri arasında çalışması için vardır. OpenMV Cam IMXRT kartları (RT1062) CAN’i P1’e yönlendirebilir, bu nedenle varsayılan eşlemeyi kullanırlar. STM32 kartları CAN çevre birimiyle P1’e ulaşamaz, bu nedenle alternatifi kullanmak için P2’nin arka yüzdeki atlama telini köprüleyin (ve P1’inkini açın).

Not

CAN veri yolu sonlandırması varsayılan olarak bağlıdır — CANH ile CANL arasında, orta noktada toprağa bir kondansatör ile seri olarak iki 60 Ω yarıya bölünmüştür (120 Ω AC-bağlamalı bölünmüş sonlandırma). Her yarıyı bağımsız olarak ayırmak için iki lehim pedini açın.

Kullanım

Not

Aşağıdaki CAN(0) ve UART(1) çevre birimi numaraları IMXRT eşlemesini (varsayılan P1 kablolaması) izler. Başka bir işlemcide bu pinlere bağlı veri yolu farklı olabilir — kartınızın referansını kontrol edin.

CAN-FD çerçeveleri gönderin ve alın — TX P1 (varsayılan) veya P2 (alternatif) üzerinde, RX P3 üzerinde:

from machine import CAN

can = CAN(2, 1_000_000)
can.set_filters(None)
can.send(0x123, b"\xDE\xAD\xBE\xEF")
print(can.recv())

P4 (TX) / P5 (RX) üzerinde RS-232 ile baytları yankılayın:

from machine import UART

uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())

AIN terminal bloğu girişini seviye kaydırmalı P6 pini aracılığıyla okuyun:

from machine import ADC
import time

ain = ADC("P6")

while True:
    v = ain.read_u16() * 3.3 / 65535
    print("AIN:", v * (5.0 / 3.3), "V")
    time.sleep_ms(100)

SYN hattındaki bir düşen kenara tepki verin — örneğin, SYN’i düşüğe çeken başka bir cihazla kamerayı senkronize etmek için:

from machine import Pin

def on_sync(pin):
    print("SYN falling edge")

syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)