質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

1468閲覧

Arduino同士のハードウェアシリアルについて

Alyn

総合スコア51

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2021/12/07 04:29

Arduino MegaとDueでハードウェアシリアルで通信することはできますでしょうか?

UARTの規格に電圧レベルについての記述が見つからず、動作電圧が異なるとされているこのArduino同士で通信できるかが分かりません。

CANであればドミナントとリセッシブで電圧の定義があったりするのですが……

UARTに電圧レベルの定義があれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/12/07 04:36

回路図が提供されているのでご自分で確認されてはいかがでしょうか。
Alyn

2021/12/07 04:44

申し訳ございませんがマイコンの回路図が読めるほどの知識量があれば質問はいたしません。
guest

回答2

0

ベストアンサー

"UART"に共通の規格はありませんが、IC(マイコン)毎の規格はあって、それを読むことになります。

Arduino Megaならこれの355ページにVIH(入力を確実にHとみなす電圧)は5V電源の場合0.6Vcc=0.6*5V=3.0Vとあります。また、VOH(出力電圧)はVCC5Vで20mA流したとき4.2Vが最低出てくることになっています。

一方Arduino Dueならここの1378ページにAbsolute Maximum Rating(絶対最大定格:少しでも、一瞬でも超えれば製品の性能・動作を保証しない値)があって、ピン入力電圧は4.0Vとなっています。また、VOH(出力電圧)は1379ページに、ほとんど電流を流さない場合VDDIO-0.2Vを保証されています。VDDIOはArduino Dueでは3.3Vでつまり3.1V以上は出る、ということ。

つまり、3.3V電源のDueのTx->5V電源のMegaのRxの接続は、DueがHで最低3.1Vを出力してMegaは3.0V以上をHとみなすのでHをちゃんと認識できます(Lはいうまでもなく)から、接続可能です。
(世の中にはVIHの最低が0.7*Vccやもっと高い値のIC/マイコンもあります)

一方、MegaのTx->DueのRxは、Megaは最低でも4.2Vを出すのでこれはDueが壊れても文句を言えない電圧なので「つないではいけない」ということになります。
まぁ、アマチュアレベルで壊れてもいいから少しでも動いてくれれば、というのなら、多分数キロΩの抵抗を介してつなげば実力的には「なかなか壊れない」ぐらいにはなるとでしょうが...少なくともこころあるプロなら自分では絶対やらないし他人にも薦めないですね。
しっかりつなぐなら、レベルコンバータとかレベルシフタというロジックレベルの変換器を介してつなぐ、低速(MHzには至らないくらい)でそこそこでいいならおよそ5Vの出力を2:3に抵抗分圧して入力に繋げば、少なくともそれが原因で壊れることはない、ということにはなります。

投稿2021/12/07 13:15

thkana

総合スコア7659

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alyn

2021/12/07 13:18

詳細に教えてくださりありがとうございます!
guest

0

UARTの素の入出力はCPUのロジックレベルとなります
それぞれのCPUの電源電圧を調べればいいかと。

まあ、動作電圧が異なると言っても、5Vと3.3Vですんで、間に1K程度の抵抗を挟んで接続すれば壊れることはないでしょう

投稿2021/12/07 04:39

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alyn

2021/12/07 04:54

ありがとうございます。 2点だけ質問させてください。 ①ロジックレベルと動作電圧は同じ意味になりますでしょうか。 ②抵抗器を挟んだ場合に動作が不安定になるような不具合は起こり得るのでしょうか。
y_waiwai

2021/12/07 05:08

たいていの場合、同じ意味になります まあ、Arduinoに限って言えば、同じ、と言い切っていいかと。 間に抵抗を挟むと、信号の波形がなまったりして速度が低下しますが、シリアルの転送速度なら、1K程度ではほとんど影響はありません まあ、CANなんかで1Mbpsなんか出す場合は話が変わってきますが
Alyn

2021/12/07 05:12

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問