ヘルシオAX-L1をArduinoで改造

中古のヘルシオAX-L1をメルカリで500円でゲットしました。 油汚れまくり、板金ボコボコ、プラパーツバキバキでしたが、壊れてなく(?)ラッキーな買い物でした。 しかし、使いづらいのがノブ 回すのですが、狙った番号にならない。通り過ぎちゃう。 なので、Arduinoで改造しました。 普段使うのは自動温めの3番,手動温めの29番なので、それを一瞬でできるようにプッシュスイッチをつけました。 ポチッとすると3番,29番になるような感じです。 ノブはロータリーエンコーダなので、パルス信号が出ています。 ポチった時にArduinoからパルス信号をだしてノブを模擬します。 3番がノブ3回転分なら、Arduinoから3回転分のパルスを出します。 いざヘルシオを開封 ノブの波形を見てみます。 適当に線を伸ばして 波形はしっかり2相ズレて出力されています。 回さないと3.3Vだったのでプルアップされています。 ノブ、スイッチの両方で動作するような回路にします。 といってもダイオードを入れただけです。 ダイオードのアノード側はヘルシオのロータリーエンコーダに並列に接続します。 スイッチを接続したポートはArduinoの内部プルアップとしました。 一応シミュレーションで見てみると大丈夫そうです。 スイッチを押してロータリーエンコーダを回していない時は、ダイオードが導通するためスイッチのプルアップ抵抗とロータリーエンコーダのプルアップ抵抗の両方から電流が流れます。 プルアップ抵抗が同値なら2倍の電流が流れますが、抵抗値はおそらく数kΩで電流は大した事ないので問題ないと思います。 ちなみにシミュレーション上の電圧などの定数は動作を見るためだけだったので適当です。 回路図はkicadで書きました。 githubにあげました。 atooshi-note/AX-L1 Arduinoのプログラムもgithubにあげてあります。 スイッチは以下の4つ実装します。 ノブ左1回転(left)、自動温め(atatame)、手動温め(syudou)、ノブ右1回転(right) 手動温めは29番で29回転は多いので後ろから数えています。 ノブ左1回転(left) 自動温め(atatame) 手動温め(syudou) ノブ右1回転(right) 動作が確認できたので、きれいに付けて ブレッドボードで最終動作確認して 基板に実装して固定。むき出し 便利!! 以上

2024/03/23 · Last updated on 2024/04/01 · 1 min · 39 words

Arduinoで1HzのPWMを生成する

ArduinoではanalogWrite(pin,value)でPWM変調した矩形波を出力することができます。 通常のPWM周波数は490Hzや997Hzなのですが、 今回は、PWM周波数を1Hzとしたお話です。 analogWrite()は使わず、AVRライクな書き方をして、実現します。 ATmega328のデータシートとニラメッコしながらレジスタを設定します。 できればレジスタなんか面倒くさいしよくわからないから触りたくなかったんですけど、それしか方法がない! PWMとは この辺は自分の覚書でもあるので、わかる方はすっ飛ばしてください(^^) PWMは Pulse Width Modulation の頭文字をとったもので、文字通りパルス幅変調です。 矩形波の幅を自在に調整して、平均電圧を上げたり下げたりできます。 例えば、5Vの電圧をONしっぱなし(5Vだしっぱなし)なら平均電圧はもちろん5Vです。 ですが、PWMで周期T中のオン時間Tonの割合Duty( = Ton / T )が50%の矩形波を出していれば、平均電圧は 5V * 50% = 2.5V となり、半分の電圧を出していることになります。 これをLEDに繋げれば、ちょっと薄暗く点きますね。 こんな感じでDutyを色々変えれば、電圧を調整できることがわかります。 analogWrite関数では、analogWrite(pin,value)のvalueがDutyに相当します。 valueは0~255(= 8bit = 2^8 = 256)の値とします。 なぜ1Hz? 詳しくは別記事で紹介予定ですが、低温調理器で使うSSRを制御するためです(^^) SSRはAC電圧(交流電圧)を制御します。 PWMは、DC電圧(直流電圧)ではDutyで平均値として取り出せますが、ACだとDuty=50%としても半分の電圧にはなりません。 また、50Hzという遅い周波数を制御するので、ArduinoデフォルトのPWM周波数では早すぎました。 そこで、1Hzとしました。 ArduinoのPWM ところでPWMはタイマーという機能で実現しています。 これはArduinoに限らず、PICやmbedなどの他のマイコンもそうです。 ArduinoはATmega328というMicrochip社(旧Atmel社)のマイコンをメインチップとして載せています。 Arduinoには(というか、ATmega328)には以下の3つのタイマー(正確にはTimer/Counter)があり、Arduinoではそれぞれ以下のような役割になっています。(Unoの例です) Timer/Counter ビット数 Arduinoでのpin番号 Arduinoでの役割 ArduinoでのPWM周波数 Timer0 8bit 5,6 普通のデジタルピン,delay(),millis(),micros() PWM出すなら997Hz Timer1 16bit 9,10 普通のデジタルピン PWM出すなら490Hz Timer2 8bit 3,11 普通のデジタルピン,tone() 同上 タイマーは3つのうちどれを使ってもいいですが、Arduinoの機能としてあるdelay()やtone()でTimer0やTimer2を使っているので、Timer0や2のPWM周波数を変更してしまうと影響が出てしまいます。 例えば、delay(500)と書けば500msのウエイトが本来発生しますが、変更すると同じように書いても500msではなくなってしまいます。 ですので、何も使ってなさそうなTimer1(9か10pinのどちらか)を使うことにします。...

2020/05/30 · Last updated on 2022/05/12 · 3 min · 610 words

macOS Catalinaでは中華Arduino互換機(CH340G)がそのまま認識された

Amazonで売っている(売ってた)HiLetgoのarduino互換機 ArduinoのUSBシリアル通信部分にはATmega16U2やFT***が使われていて、これらはMacでも標準で認識しますが、安いArduino互換機に使われているCH340Gは別途ドライバを当てないと認識しない、という考えだったのですが、 何もしなくても認識しました という話です(macOS Catalinaにて) 参考サイトさんにてMojaveにて別途ドライバが不要との紹介をされていたので、より新しいCatalinaでも認識するだろうと思ってやりましたらいけました。情報ありがとうございます(^^) 具体的には、ArduinoをMacに接続すると、シリアルポートに表示がでますので選択します。 私の場合は、”/dev/cu.usbserial-1420”とでました。 ボードはNano、プロセッサはOld Bootloaderとします。 ちなみに、石の表面には何も書いてませんでした(^^) 本稿とは直接関係ないですが、入力の3端子レギュレータはAMS1117-5Vを使用しています。(5V出力) http://www.advanced-monolithic.com/pdf/ds1117.pdf 本家?はナショセミのLM1117だと思いますが、こちらは20Vまで入力できますが、AMS1117は15Vまでしか入力できませんので注意が必要です。 どちらにしろ12Vで使うには問題なさそうです。(が15Vだと結構ギリなので電源の品質が悪くてリプルが12Vを超えるようなら要注意です。) 参考

2020/05/10 · Last updated on 2020/05/10 · 1 min · 16 words