Arduino初心者熱烈大歓迎質問スレ part30
レス数が900を超えています。1000を超えると表示できなくなるよ。
>>826
はいありがとう。なるほど、内蔵レギュレータ用のコンデンサ端子なら必要ですね。
別のマイコンで同様の端子のコンデンサを、指定より小さいものにしていて、
「なんか動作が不安定」で悩まされたことを思い出しました。 ArduinoでUSBホストをやったことはないし、
ほかのマイコンでもHIDのホストはやったことがないけれど、
USBホストシールドでHIDホストをやってる人がいた
https://okiraku-camera.tokyo/blog/?p=8092
HIDだから使いようによっては、ホスト→デバイスのデータもできるかな。
Leonardoなら、HIDデバイスにもなるから、通信できるのでは。 arduino とロードセルで500g以下(少数第1位迄)が計量できるものを作ろう
としてます。
ロードセルはamazonでビーム型で1kgまで測れるやつで組んでみました。
500gの分銅で計測してみたのですが、分銅をのせたあと、取り除くと
重量表示が2~3g程度になり、0に戻りません。ロードセルがひずんだ
ままなんでしょうか?量り台を軽く持ち上げてやると0にもどるという・・・。
ロードセルってこんなもんなんですか?
安価に使えて正確に測量できるセンサーってほかにないものでしょうか。
よろしくお願いします。 そんなもん
市販のキッチンスケールでも同じ問題は起こる んなことないよ。どっかに不具合がある。ロードセル自体の不具合かもしらんけど
1kgのなら小数点第二位まで計測できるよ。実際に作って使ってるよ >>832
プログラムは秋月のやつを使っていますか? >>833
いまコード見返したら、ライブラリはこれを参考にしたかな。秋月のコードは見てないな。
他にいくつか試したけどこれがしっくり来た(んだと思うw 作ったのは数年前なんで)
https://github.com/olkal/HX711_ADC
このライブラリをたたき台にして、あと7セグ表示、ターレボタン、PCSポタンとか付けてる
いくつかライブラリがあったから試してみてわ?
>>834
ずっと電子工作やってれば中華でも良い中華と悪い中華の見分けぐらい出来るでしょ? 思い出したけど、値は結構ドリフトするよ。
HX711のサンプルレートを80SPSに出来るけど
デフォの10SPSのままのほうが実用的だと思うわ。
あとはコードの方でサンプルの取り方んお調整が必要 ×あとはコードの方でサンプルの取り方のんお調整が必要
○あとはコードの方でサンプルの取り方の調整が必要
疲れてるわ。寝る >>835-837
ありがとう。
明日ソースを見て実行してみますm(__)m。 温度、湿度、明るさを記録していました。
ただ、屋根の下で霧などはありますが雨はほぼ確実にかからない場所なのですが屋外で使っていると2年位でかなり錆びてしまいました
100Vを5Vに変換するUSB部分も含めて屋外で年単位で使うのにはどうすればいいでしょうかね? >>839
KEYENCEやOMRONへ仕様をまとめてメールしたら、工業用のセンサー等を紹介してくれます。 >>839
基板の防湿コーティングだと思う
それとACアダプタの熱がマイコンによく伝わるようにしたら結露が防げるかもしれない >>835
ソースを試してみました。
これ、いいですね。キャリブレーションが簡単にできます。
計測数値のずれですけど、配線がわずかに干渉してたみたいで、
経路を直したらずいぶん改善されました(0.5程度の表示までもどるように)。
あとは計測するときのおもりの載せる位置の問題なのですが。
ロードセルには60x60mm程度の載せ台を作ってねじ止めしていいます。
計測対象のおもりを載せる位置によって計測値にばらつきが出ます。
これを回避するには、ロードセルを2個使ってモーメントの影響を受けないように
するとかしないとだめですかね? 松下のインパクトドライバーの充電器壊れてるの見たら基板表面が透明の薄くて固いので塗装?されてた
エポキシかな? >>843
ウレタンでポッティングしてあんじゃね? >>843
アマゾンで防湿コーティングで検索して出てくるgootのはシリコン、サンハヤトのはポリビニール系樹脂だな クレ5−56とか半年毎くらいに吹き付けといたらアカンのか コートスプレーならハヤコートとか。使ったことないけど。 Arduinoに直接関係はないのですが、seeed のGrove-RS485
を入手して遊んでいますが、TXDENを操作しなくても送信と受信が出来るんです。
https://i.imgur.com/vDoHqod.png
これが回路図なのですが、ピンクで囲んだ部分。
*REとDE が 5Vに接続しています。
トランシーバーは、この場合、送信は出来て受信は出来ないのかな
と思っていましたが、両方問題なく出来てしまいます。
https://www.maximintegrated.com/jp/products/interface/transceivers/MAX13487E.html
この中に、「AutoDirection制御付き」という事があります。
これがつまり、TXDEN の操作は必要ないという機能なのでしょうか?
もし、そうなら、この機能の注意点とかありますか? >>853
その回路図のMAX13487Eのシンボルが間違っているだけ
MAX13487Eのシンボルを作るのが面倒くさかったのでしょう 俺みたいな爺さんの戯言だけど
回路図を描くのは基板製作の為に行うネットリスト生成ツールとしか考えていない人が多い気がする
回路図を他人に見てもらうという考えが無いんだな カメレス
>>752
> 水晶ごとに発振周波数の前提にしている負荷容量があること、外付けする容量ではなくICや実装時に結果的に発生する容量も込みであること
肝心な事が抜けている。
負荷容量は、水晶のL成分と負荷容量のC成分で共振回路を形成する。
コルピッツ発振回路で調べるといい。
余談
負荷容量、俺的には水晶屋がマイコン屋に分かりやす〜く説明するための造語だと思ってる。
あの容量は共振回路の一部であって、負荷ではないからさ。 ProMicro安いの探してるんですが、
蟻/item/32788040866.html
これ、ProMicroですよね?写真を見る限り、32U4乗ってるんだけど、
ATmega328とも書いてて、ボード選択ではMicroを選んでる。
どっちなんでしょう? >>857
> ATmega328とも書いてて
英語読めないの? うわ983円もすんのか、pico買えちゃうじゃん
前は300円台だったのに3倍近いな ProMicroとか300円切ってた時代に買ってたな 124円のdigisparkで充分だったのでProMicroは買わなかった
PC用のTVリモコンとして今も使ってる >>858
まだ小学生なので、簡単な英文しか読めません。 >>857>>858
TZT Pro Micro ATmega32U4 5V 16MHz Replace ATmega328 For arduino Pro Mini With 2 Row Pin Header For Leonardo Mini Usb Interface
我らTZTが販売するPro Micro!ATmega32U4マイコン搭載!こちら5Vで16MHz動作のバージョンです!!
Pro MiniなどATmega328Pが乗ったボードから乗り換えにもオススメ!!レオナルドと同じ小型のUSBコネクタ!2列分のピンヘッダ付き!
と書いてあると思う。 >>ID:JsSOhLtJ
自分から水掛け論に持ち込んだ挙句に自滅w >>871
「素晴らし理屈を発見した俺偉い頭良い」は>>868に対して言ってるのですよ
人にバカというものがバカ。これは名言ですよ。
これに似たもので「ディベートに於いて誹謗中傷はご法度」というものもあります。
なぜなら誹謗中傷したほうが、結果不利になる。結局、不利益を被ることになる。
日本は幼少期からディベートについてもっと学習させたほうがいい。 「人にバカというもの」はバカだといってるのでそいつ自身もバカに他ならない。
「人をバカ呼ばわりしてはいけません。」と、普遍的な表現を使えばいいだけのこと。
勝手に「名言」扱いしてよく考えずに使うから結局負け犬の遠吠えになる。 7segとネオピクセルとロータリーエンコーダーを同時に使用したいです。
7segはダイナミック点灯をms2タイマーで制御したいのですが、ロータリーエンコーダーも出来ればタイマーで動きを感知したい。
複数の用途にタイマーを使う方法は関数にしてまとめれば良いのでしょうか? analogWriteによるPWM出力のデューティ(%)って
(指令値/255)×100 %
ってことで良いですか?
分母が256でないのがちょっと気持ち悪いですが >>875
ロータリーエンコーダーをタイマーで云々が意味分からん
B相を割り込みトリガーにしてその時にA相がONしてるかOFFしてるか調べるんじゃないの? >>877
ロータリーエンコーダをタイマのカウンタで、カウントしたいって事じゃないかな? >>875
1つずつタイマー割り振ると足りなくなるので
millis()で次のイベント処理までの経過時間を計る方法があるよ
7セグのダイナミック点灯は60fps以下だとチラついてしまうから16msの優先処理にして
ネオピクセルは100ms周期でイベント処理するとかメインループに書く
ロータリーエンコーダーは割り込みで処理するけど
こっちも前回の割り込み時間millis()を保持して
50ms以内ならチャタリングとみなして無視するか
0.1uFのコンデンサを入れてハード的に処理する方法もあるよ >>880
10個のテクニックが盛り込まれた回答! >>876
分母自体は256
255を指定するとDigitalWriteのHIGHが呼び出される
なので254と255の間にパルス幅に1つ飛びがある
なんでこうなってるかはD7とD8の隙間50milと同じような設計上の問題 >>882
ありがとうございます
(i)指令値が0-254の場合:(指令値/256)×100 %
(ii)指令値が255の場合:100 %
ということですか。
厳密さが必要とされる場面では少し気を付けた方がいいかもしれませんね
勉強になりました >>883
ああ、この問題があるのはUnoで言うとD5とD6だけ(タイマー0がFast PWM Modeで使用)なので
D9とD10(タイマー1をPhase Correct PWM Modeで使用)
D3とD11(タイマー2をPhase Correct PWM Modeで使用)
についてはそのグリッチは無い(こちらは分母自体が255のため)
他のArduinoについては自分でコアのソースを見てくれ >>884
ありがとうございます
私が使おうとしていたピンはUNOのD9-11なので場合分けはしなくて済みそうです それのせいでタイマー0に関しては自分で実装しないとanalogWriteでデューティ比50%は決して出せない
しかしタイマー0を弄るとmillsと(殆ど使わないがdelay)が死ぬ >>886
タイマー0を使ったD5、D6なら分母が256なので128を指令すれば50%になる...という話ではないのですか? >>886
ん?逆じゃね・・・?
タイマー0を使うところは分母が256でタイマー1と2は255だから
50%が出せるのはむしろタイマー0のほうな気がする
analogWriteで127指定したらたぶんD5とD6はぴったり50%が出るけどD3,9,10,11は50.2:49.8くらいになるんじゃないかな・・・?たぶん >>880
全部やってみます。
ありがとうございます ちょっと気になったのでチェックしてみた
UNOにて analogWrite(127)で出力
https://i.imgur.com/uG8c4r7.png (D5,D6)
https://i.imgur.com/x8Hnghh.png (D3,D9,D10,D11)
888さんの言う通りの結果だった >>890
D3の方は127/255で49.8%になるのはわかるんだけど、D5の方ではなぜ127/256がちょうど50%になるんだろう? >>892
D5,D6の場合(Fast PWM mode)
OCR0A=0; で強制的に0に設定したらHighの時間が0usではなく4usになった
OCR0A=1; この場合だとHighの時間8usでした OCR0A=127;なら512us
Timer0とOCR0Aの比較で一致した瞬間にLowではなくカウントアップ時にLowに変わるようです 高速PWMモードだと比較値が0のとき1パルス分の長さのHIGHが出るAVRの仕様
データシートの81ページの頭に書いてある
位相PWMモードだと0と255がそれぞれLOWとHIGHになる
データシートの82ページの上から2割位の所に書いてある
なぜタイマー0だけが高速PWMモードなのかというのは恐らくだけど
delayとmillis実装のための割込にも使っていてプリスケーラ1/64でTOP値0xFFの8bitタイマーなら
周波数が976.5625になるから1msのカウントを組みやすかったのかなと
かつそれでanalogWriteの値を他の位相PWMモードのと合わせようとした結果
分解能が1違うからdutyの端っこを2つ纏めることになってシワ寄せを受けている ちなみに高速PWMモードだと出力を完全に止めるにはタイマーを止めるかポートの制御をタイマーから切り離すしかない つまり
(i)D5,D6:((指令値+1)/256)×100 %
(ii)D3,D9,D10,D11:(指令値/255)×100 %
ってことでいい? >>896
arduinoではanalogWriteの0と255はタイマから切り離してLo/Hiという特別な扱い
なのでD5とD6だけ式だけじゃ表せない(0のとき強制オフ) >>897
では
(i)D5,D6
(ia)指令値が0:0%
(ib)指令値が1-255:((指令値+1)/256)×100 %
(ii)D3,D9,D10,D11:(指令値/255)×100 %
ならどうでしょう? AC100V機器にリレーで電源供給するとI2Cのディスプレイ表示が瞬間的に
文字化けしたりするんだけど簡易な対策はありますか? まずは原因をある程度絞り込まないと
例えばリレーのコントロールをマイコンから外して直接オンオフしても発生するのかとか
AC側の機器があるのかないのかとか
電源ラインのノイズ対策をちゃんとしてるか?とかブレッドボードで怪しい接続のままなのか基板にしてるのかとか >>901
I2Cディスプレイの電源に1000uFと0.1uFのコンデンサをつけるとだいたい解決する ちなみにモーター使う時みたいにリレーの電源両端に
パスコン入れるのは効果的でしょうか? >>908
リレーのコイルにはダイオード、接点にはコンデンサ 最近、arduinoをつかってみたのですが
デジタルピンをプルアップに設定して、内部プルアップ抵抗を使う事にして
ICから直でDIPスイッチに接続してるんですが、大丈夫ですよね?
ネットで見ると、プルアップで抵抗なしに
プルアップ設定で直結すると壊れるという記事もあるんですが・・・
とりあえず、書いたスケッチの動作確認では問題なく動作しております。
300〜10kΩ程度の抵抗をかますのが安全なのでしょうが、配線がゴチャゴチャするので
直結で問題なければこれで使いたいのですが・・・ クロスフェードを7セグでやってみたいんだけど、よく分からない。ダイナミック点灯で4桁でやりたいんだけど、参考になるスケッチとか無いかな? >>913
プルアップで直結自体は大丈夫だけど
スケッチの間違いで出力設定(high)になったら最大定格を超える電流が流れて、故障や誤作動の原因になる
出力設定でもdigitalRead()は機能するので間違いに気づかない事も考えられる
保険の意味では抵抗を入れといた方が良い >>911
絶縁リレー回路が絶縁されてないじゃん
あとベース抵抗510Ωは小さすぎ
そしてベース - エミッタ間にも抵抗を入れるべき >>916
LEDが2個直列になってて3.0V必要な事は指摘しなくていいのか
別電源にすれば絶縁にはなるぞ プルアップとかプルダウンとかプルツーとか何言ってるかさっぱりわからん >>917
GNDが共通だから別電源用意しても絶縁されてないって指摘してるんだよ
リレーなんか使わずにオムロンとかのゼロクロス付きのSSRにすればいいのに リレーノイズの者です
コンデンサとダイオードを追加して無事に解決しました
アドバイスくれた方々に感謝 iphone単独でスケッチの書き込みとか出来たら超捗るのに…
PC経由してリモートならあるんだよな確か >>915
ありがとう
保険で抵抗つけときます
人にあげる可能性もあるし I2CのEEPROM(24LC256)への書き込みの質問です
Wire.beginTransmission(deviceaddress);
Wire.write(eeaddress >> 8); // MSB of EEPROM Address
Wire.write(eeaddress & 0xFF); // LSB of EEPROM Address
Wire.write(data, length);
Wire.endTransmission();
length = 8byteまではうまく書き込めるのですが、
もしかして最大8byte単位という制限がありますか。 連投すみません。ページをまたがった連続書き込みはできないということに気が付いていませんでした。
一旦、質問を引かせていただき、自分で試してみます。 ググって探せました。
1. EEPROMは通常64アドレス分が1ページになっている(モデルによって違う)
2. Wire.write(data, length);でページをまたがった書き込みは出来ない
64byte以上の配列を書き込む時は上記の考慮が必要でした。 レス数が900を超えています。1000を超えると表示できなくなるよ。