こんにちは。KKTの方です。
特に進捗が無いので買い物記事になりました。
AliExpressで買ったATmega8が届きました。
静電気対策とかしてらっしゃるんですかね
近づいて写真取るのがめんどうだったので刻印が写っていませんが明らかに本物とは違うので動くか心配になってきました。
試しに適当なソースを書き込んでみたところ、普通にシグネチャも返って来て書き込めました。普通に使えるじゃん
また後日他の個体やピン、ペリフェラルのチェックをしようと思います。
それでは、今日はこの辺で
免責事項
注意、免責事項について
・高電圧、大電流その他高エネルギを扱う実験を行う際にはくれぐれも安全に配慮し、細心の注意を払って行うようにしてください。
・当ブログの記事を参考にして発生した損害についてFEL研究室はいかなる責任も負えませんでご了承ください。
・高電圧、大電流その他高エネルギを扱う実験を行う際にはくれぐれも安全に配慮し、細心の注意を払って行うようにしてください。
・当ブログの記事を参考にして発生した損害についてFEL研究室はいかなる責任も負えませんでご了承ください。
2018年12月9日日曜日
2018年12月7日金曜日
W5500モジュールを動かしてみる
ご無沙汰しております。KKTの方です。
季節の変わり目ですから体調を崩される方も多いかもしれませんが如何お過ごしでしょうか。私は既に2回くらい軽い風邪をひきました。
さて、世間はIoT一色ということで流行に乗って私もインターネットなるものに自作機器をつなぎたくなってきました。そこで、マイコン等で簡単にLANに繋げて遊べるものはないかと探していたところWiznetという会社からEthernetの便利なICがあったので紹介します。
W5500
https://www.wiznet.io/product-item/w5500/
ネットワーク初心者なので用語がいまいちよくわかっていないのですが、簡単に言うとW5500に対してSPIでいろいろ書き込んでやるだけでTCP/IPで他の機器と情報をやり取りすることができるようです。DIPパッケージは無く、QFPだけみたいなので今回はモジュール化されたものをAliで購入しました。激安でビビりました。
いいじゃん。
本当はもうちょっと突っ込んだ記事を書くつもりでしたが力尽きたのでまた次回詳細は書こうと思います。ちなみに現在はATtiny13AでW5500と通信させて簡易httpサーバーにするところまでできました。
それでは、今日はこの辺で
季節の変わり目ですから体調を崩される方も多いかもしれませんが如何お過ごしでしょうか。私は既に2回くらい軽い風邪をひきました。
さて、世間はIoT一色ということで流行に乗って私もインターネットなるものに自作機器をつなぎたくなってきました。そこで、マイコン等で簡単にLANに繋げて遊べるものはないかと探していたところWiznetという会社からEthernetの便利なICがあったので紹介します。
W5500
https://www.wiznet.io/product-item/w5500/
ネットワーク初心者なので用語がいまいちよくわかっていないのですが、簡単に言うとW5500に対してSPIでいろいろ書き込んでやるだけでTCP/IPで他の機器と情報をやり取りすることができるようです。DIPパッケージは無く、QFPだけみたいなので今回はモジュール化されたものをAliで購入しました。激安でビビりました。
で、届いたのがこちら
いいじゃん。
本当はもうちょっと突っ込んだ記事を書くつもりでしたが力尽きたのでまた次回詳細は書こうと思います。ちなみに現在はATtiny13AでW5500と通信させて簡易httpサーバーにするところまでできました。
それでは、今日はこの辺で
ラベル:
Aliexpress,
AVR,
ソフト
2018年9月16日日曜日
Orange Piで遊ぶ -i2c編-
なかたです。好物はOrange Pi。
今回はOrange Pi oneでBME280を使ってみる記事です。
とはいってもi2c-toolsインストールするだけです。
本編だけだと5行でいいので動作環境の話から入ります。
Orange Piの公式ページにも沢山OSがあるので用途に合わせてOSをダウンロードしましょう。
少し前は公式のOSはbaidu cloudからしかダウンロードできなかったり安定しなかったり色々問題があったみたいですが最近は結構充実してそう(?)
記事書く際に知ったんですがoneとかPCにもAndroid7.0のイメージが追加されててびっくりしました。
個人的にはOrange Pi oneについてはArmbianでいいんじゃないかと思ってます。
公式のUbuntuとかが安定してなかった頃から安定していて比較的ユーザーも多くトラブルシューティングがし易そう(個人の意見です)。
他試してみておすすめとか駄目なやつとかあったらコメントで教えてください
*1
SCLとSDAはOPIoのSCLとSDAにつないで上手く動かなかったときはOPIoのSCL1とSDA1につなぐといいかも
*2
今回はOrange Pi oneでBME280を使ってみる記事です。
とはいってもi2c-toolsインストールするだけです。
OS
OSはArmbianを使っています。Orange Piの公式ページにも沢山OSがあるので用途に合わせてOSをダウンロードしましょう。
少し前は公式のOSはbaidu cloudからしかダウンロードできなかったり安定しなかったり色々問題があったみたいですが最近は結構充実してそう(?)
記事書く際に知ったんですがoneとかPCにもAndroid7.0のイメージが追加されててびっくりしました。
個人的にはOrange Pi oneについてはArmbianでいいんじゃないかと思ってます。
公式のUbuntuとかが安定してなかった頃から安定していて比較的ユーザーも多くトラブルシューティングがし易そう(個人の意見です)。
あると便利なパッケージ
ぶっちゃけパッケージについては必要なときに必要なのダウンロードしたらいいと思います。
個人的なおすすめはRaspberry Piのrpi.gpioの互換のopi.gpioとかですかね。
rpi.gpioを使って書かれたプログラムなら「import RPi.GPIO as GPIO」を「import OPi.GPIO as GPIO」にしてピンと配線だけ見直せばほぼ動くと思います。
ちなみにwiring piの互換にはWiringOPってのがあります。
こっちは割と有名なんでググったら導入法が日本語のページで出てくると思います。
GPIOの内訳
ググったらそれっぽい画像出ると思いますが一応公式のダウンロードページ貼っときます。
ついでにうちの子から読みだしたやつも貼っときます。
PhysicalとNameだけ見とけばいいと思います。
図のGPIOピンの右上に白色三角が見えると思います。そこがPhysicalの一番ピンです。
2番ピンはその下、三番ピンは一番ピンの左です。
… 5 3 1
… 6 4 2
こんな感じ。
PhysicalとNameだけ見とけばいいと思います。
図のGPIOピンの右上に白色三角が見えると思います。そこがPhysicalの一番ピンです。
2番ピンはその下、三番ピンは一番ピンの左です。
… 5 3 1
… 6 4 2
こんな感じ。
おまけ
・Orange PiはAliExpressに公式ストアがあるのでそこから買いましょう。Amazonでは割高なため買わない事
・Orange PiにはRaspberry Piと違ってシリアル通信端子があり、USB接続してTeratermとかで開くと起動ログがみれるので起動しないときのエラーが見れる。
注意する点としてはシリアル通信速度を115200にすること
・Orange Pi oneの電源端子はPSPと同じなため百均等でも購入可。でも今時あんまり見かけないのでこれおすすめ。
ちなみに電源も百均等で売ってる200円のスマホの充電器で可。
・Armbianの初期設定一覧
言語設定
「dpkg-reconfigure locales」
タイムゾーン設定
「dpkg-reconfigure tzdata」
キーボードの言語設定
「dpkg-reconfigure keyboard-configuration」
・Armbianの初期設定一覧
言語設定
「dpkg-reconfigure locales」
タイムゾーン設定
「dpkg-reconfigure tzdata」
キーボードの言語設定
「dpkg-reconfigure keyboard-configuration」
本編
- Armbianが入ったOrange Pi one(以下OPIo)を用意します。
- 「$sudo apt-get install i2c-tools python-smbus」でこいつらをインストール
- BME280とOPIoを配線*1
- スイッチサイエンスさんが出してるサンプルプログラムを使う。*2
- うごいた!完!
*1
SCLとSDAはOPIoのSCLとSDAにつないで上手く動かなかったときはOPIoのSCL1とSDA1につなぐといいかも
*2
「$ git clone https://github.com/SWITCHSCIENCE/BME280.git
$ cd BME280/Python27/
$ python bme280_sample.py 」
$ cd BME280/Python27/
$ python bme280_sample.py 」
2018年9月10日月曜日
Orange Piのススメ
お久しぶりです。
なかたです。好物はOrange Pi。
今回はSBC(Single Board Computer)の一つであるOrange Piの紹介の記事です。
SBCではRaspberry Piが有名で広く取り扱われています。Raspberry Piにはzeroから3までのモデルがあり、基本的に数字がでかいほうが強いです。
少し例外としてzeroは処理速度等は3にかなり劣りますが低価格、サイズの点で3を上回る手ごろさです。また、1を超える処理速度も持っているようです。*1
しかし、Orange PiはRaspberry Piのzeroと同価格帯で2を上回る程のスペックを持っています。*2
価格サイズ処理速度のどれを取っても優れていますが問題点もあります。
一つ目はOrange Piは日本の技適を取っていないため、無線lanが使えないという点です。
二つ目はRaspberry Piと比較するとユーザーが少なく、トラブルが発生した場合解決しにくいという点です。
一つ目の問題点は無線を搭載してないモデルのものを選べばよく(無線を搭載してない分更に性能の良いものが多い)、二つ目もまぁなんとかなります。
まとめると「お金に余裕があって初めてのSBC」という方にはやはりRaspberry Piがおすすめですが、「はした金でなんか面白い事したい」という方には断然Orange Piをおすすめします。
Orange Piには様々なモデルがあり、用途によって向き不向きがあります。
電子工作に使いたい人やとりあえず遊んでみたい人、初めてOrange Piを買う人にはOrange Pi one がおすすめです。これは有線LANのみ搭載で10$を切り、なおかつ安定したOSもあるとっても使いやすいSBCです。
その他ギガビットLAN搭載でAndroid7.0が動いたりもするOrange Pi one plus等様々なモデルがあるので興味を持ったら是非調べてみてください。
次回はOrange Pi oneでなんか作る記事でも書きます。
*1: » Raspberry PiとOrange Piのベンチマーク https://qiita.com/izuna/items/ad6b8270ddb6763ff509 参照
*2: » Orange Pi Zero のベンチマーク https://www.mztn.org/dragon/opizero1.html 参照
Web拍手返信定期
>なかたはNT京都に来ますか?
KKT曰く「なかたくんおると思ってた」らしいので多分行きました
>KKTの描いたうずまき
昨日KKTのおうちで遊んだけど相変わらず不審者してたからそのうち通報されてそう
>いつも楽しく肺炎してます。
病院いって
>なたかさん記事ありがとうございます!!!!!
!!!!!!!
こちらこそいつも閲覧ありがとうございます。
記事書いてなさ過ぎてGoogleアカウント忘れてました。
なかたです。好物はOrange Pi。
今回はSBC(Single Board Computer)の一つであるOrange Piの紹介の記事です。
SBCではRaspberry Piが有名で広く取り扱われています。Raspberry Piにはzeroから3までのモデルがあり、基本的に数字がでかいほうが強いです。
少し例外としてzeroは処理速度等は3にかなり劣りますが低価格、サイズの点で3を上回る手ごろさです。また、1を超える処理速度も持っているようです。*1
しかし、Orange PiはRaspberry Piのzeroと同価格帯で2を上回る程のスペックを持っています。*2
価格サイズ処理速度のどれを取っても優れていますが問題点もあります。
一つ目はOrange Piは日本の技適を取っていないため、無線lanが使えないという点です。
二つ目はRaspberry Piと比較するとユーザーが少なく、トラブルが発生した場合解決しにくいという点です。
一つ目の問題点は無線を搭載してないモデルのものを選べばよく(無線を搭載してない分更に性能の良いものが多い)、二つ目もまぁなんとかなります。
まとめると「お金に余裕があって初めてのSBC」という方にはやはりRaspberry Piがおすすめですが、「はした金でなんか面白い事したい」という方には断然Orange Piをおすすめします。
Orange Piには様々なモデルがあり、用途によって向き不向きがあります。
電子工作に使いたい人やとりあえず遊んでみたい人、初めてOrange Piを買う人にはOrange Pi one がおすすめです。これは有線LANのみ搭載で10$を切り、なおかつ安定したOSもあるとっても使いやすいSBCです。
その他ギガビットLAN搭載でAndroid7.0が動いたりもするOrange Pi one plus等様々なモデルがあるので興味を持ったら是非調べてみてください。
次回はOrange Pi oneでなんか作る記事でも書きます。
*1: » Raspberry PiとOrange Piのベンチマーク https://qiita.com/izuna/items/ad6b8270ddb6763ff509 参照
*2: » Orange Pi Zero のベンチマーク https://www.mztn.org/dragon/opizero1.html 参照
Web拍手返信定期
>なかたはNT京都に来ますか?
KKT曰く「なかたくんおると思ってた」らしいので多分行きました
>KKTの描いたうずまき
昨日KKTのおうちで遊んだけど相変わらず不審者してたからそのうち通報されてそう
>いつも楽しく肺炎してます。
病院いって
>なたかさん記事ありがとうございます!!!!!
!!!!!!!
こちらこそいつも閲覧ありがとうございます。
記事書いてなさ過ぎてGoogleアカウント忘れてました。
2018年7月1日日曜日
ハウス「完熟トマトのハヤシライスソース」を食べた
本日、ハウス食品の「完熟トマトのハヤシライスソース」を購入し作ってみました。ずいぶん前からあるハヤシライスのルウです。
300円くらいだったと思います。この1箱あれば10食分くらい作れるようです。今回は1/2箱分使い、指定の量(箱の裏側に記載)を無視した量の鶏肉(今日安かったので)・玉ねぎ・人参を使用し、さらにマッシュルームは入れずにソースを作ってみました。
オイシェ・・・おいしい。トマトは隠し味という感じではなく、かなり主張が激しいです。トマトがすきな人向けかも。今回はケチなのでルウ1/2箱分使ってソースを作ったので完食まで数日かかる予定です。お肉やマッシュウーム(入れてない)や人参ととても合うソースだったので、おいしかったです。
参考文献
1.『ハウス「完熟トマトのハヤシライスソース」を食べた』 by 海苔巻の観察日記 http://alicetozoe.blogspot.com/2018/04/blog-post.html
それでは、今日はこの辺で
300円くらいだったと思います。この1箱あれば10食分くらい作れるようです。今回は1/2箱分使い、指定の量(箱の裏側に記載)を無視した量の鶏肉(今日安かったので)・玉ねぎ・人参を使用し、さらにマッシュルームは入れずにソースを作ってみました。
オイシェ・・・おいしい。トマトは隠し味という感じではなく、かなり主張が激しいです。トマトがすきな人向けかも。今回はケチなのでルウ1/2箱分使ってソースを作ったので完食まで数日かかる予定です。お肉やマッシュウーム(入れてない)や人参ととても合うソースだったので、おいしかったです。
参考文献
1.『ハウス「完熟トマトのハヤシライスソース」を食べた』 by 海苔巻の観察日記 http://alicetozoe.blogspot.com/2018/04/blog-post.html
それでは、今日はこの辺で
2018年3月26日月曜日
NT京都2018に出展してきた
お久しぶりです。KKTの方です。
ここで告知したかは覚えてないですが、題名の通りNT京都2018に出展してきました。
出展の様子です。
出展物はIHです。毎年同じような光景になってしまうのはなぜでしょうか。
なんか既視感のあるIH(おままごと用)。
来てくださった方、ありがとうございました。
Web拍手反応
>X線出しまくってると被曝するぞ
X線のやつやりたい
>山形県の魅力を教えてください!
山形県ってフルーツがおいしそう…と思ってググったところフルーツがおいしいそうです。
それではまた
2018年2月16日金曜日
2018年2月4日日曜日
AVRで正確にタイマー割り込みを使いたい
お久しぶりです。随分と間が空いてしまったような気がします。
日付が変わったところですが、昨日は節分という祝日でした。豆まきをしたり、恵方巻きを食べたりするのが一般的ですが、私はスパゲッティを食べたことを報告しておきます。
AVRでタイマー割り込みを使う時に、普段はメインルーチンを回していて、一定期間ごとにタイマー割り込みが入るような構成になることがよくあると思います。しかし最近、そんな感じのプログラムを組んでいて、タイマー割り込みを使っているのに何故か僅かに割り込みの周期が遅れる現象に嵌ったので、原因と解決方法(?)を書き留めておくことしにしました。
まずATMega8にこんなアセンブラのプログラムを書き込んで走らせてみます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
.include "m8def.inc"
//ATmega8 lfuse = 0xe1 = 0b1110_0001 hfuse = 0b1101_1001
//10MHzのセラロックで使いたいので lfuse = 1100_0011 hfuse = 0b1100_1001
//avrdude -c avrisp -P COM12 -b 19200 -p m8 -U lfuse:w:0b11001111:m -U hfuse:w:0b11001001:m
.EQU fclock = 10.0//[MHz]
.EQU freq = 15.734//[kHz]
//.EQU timervalue = (fclock/freq)*1000.0
//こうしたいがEQUシンボルは4バイトINT型
.EQU Htime = 635//[cycles]
.DEF temp = R16
.DEF temp2 = R17
.ORG $0000
RJMP RESET ;各種リセット
RETI//RJMP EXT_INT0 ;外部割り込み要求0
RETI//RJMP EXT_INT1 ;外部割り込み要求1
RETI//RJMP TIM2_COMP ;タイマ/カウンタ2比較一致
RETI//RJMP TIM2_OVF ;タイマ/カウンタ2溢れ
RETI//RJMP TIM1_CAPT ;タイマ/カウンタ1捕獲発生
RJMP VideoOut//RJMP TIM1_COMPA ;タイマ/カウンタ1比較A一致
RETI//RJMP TIM1_COMPB ;タイマ/カウンタ1比較B一致
RETI//RJMP TIM1_OVF ;タイマ/カウンタ1溢れ
RETI//RJMP TIM0_OVF ;タイマ/カウンタ0溢れ
RETI//RJMP SPI_STC ;SPI転送完了
RETI//RJMP USART_RXC ;USART受信完了
RETI//RJMP USART_DRE ;USART送信緩衝部空
RETI//RJMP USART_TXC ;USART送信完了
RETI//RJMP ADC ;A/D変換完了
RETI//RJMP EE_RDY ;EEPROM操作可
RETI//RJMP ANA_COMP ;アナログ比較器出力遷移
RETI//RJMP TWI ;2線直列インターフェース状態変化
RETI//RJMP SPM_RDY ;SPM命令操作可
Reset:
LDI R16,high(RAMEND)
OUT SPH,R16//スタックポインタ上位設定
LDI R16,low(RAMEND)
OUT SPL,R16//スタックポインタ下位設定
//スリープ設定
LDI temp,(1<<SE)//アイドル動作に設定する
OUT MCUCR,temp
//タイマ設定
//16bitレジスタに書き込む時は上から
LDI temp,high(Htime)
OUT OCR1AH,temp
LDI temp,low(Htime)
OUT OCR1AL,temp
//TCCR1Aは初期値のまま
LDI temp, (0<<COM1A1|0<<COM1A0|0<<FOC1A|0<<FOC1B|0<<WGM11|0<<WGM10)//タイマA比較一致有効
OUT TCCR1A,temp
LDI temp,(0<<TICIE1|1<<OCIE1A|0<<OCIE1B|0<<TOIE1)
OUT TIMSK,temp
LDI temp,
(0<<ICNC1|0<<ICES1|0<<WGM13|1<<WGM12|0<<CS12|0<<CS11|1<<CS10)
OUT TCCR1B,temp
LDI temp,(1<<PD0)
OUT DDRD,R16//PORTDの0ビット目を出力に設定
SEI
Main:
//SLEEP//待ち時間はスリープにしておく
RJMP Main
VideoOut:
SBI PORTD,0//high
CBI PORTD,0//low
RETI
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
改行が微妙に入ってしまって読みにくいことこの上無いのですがどうしたら良いのでしょうか。
まずReset:で色々な初期設定をして、Main:を無限ループさせて一定時間ごとに入るタイマー割り込みごとにパルスを出すようなプログラムです。SBI、CBI命令はそれぞれ2クロック掛かるので出るパルス幅は2クロック分、クロックが10MHzなので200nsということになります。タイマー割り込みの周期はHtimeというシンボルに入れたサイクル数になるようになっていて、クロックと周波数から自動で計算しようと思ったのですがコメントにもあるようにシンボルは4バイトのint型なので小数点以下の計算ができずだいぶざっくりなサイクル数になってしまうので諦めてサイクル数は手計算しました。Htimeに入れる周期は理想のサイクルから2か3くらい引かないと、タイマー割り込みの固定的な遅延時間で遅れるのでご注意ください、ってデータシートにも書いてると思います。
ラベルでピンと来た人もいらっしゃるかもしれませんが、これはビデオ信号の水平同期処理をタイマー割り込みでやろうとした時のソースの一部です。
とまぁタイマー割り込みで一定周期のパルスが出るだろうと動かしてみると下のような波形が出力されました。
なんとタイマー割り込みが入るタイミングが一定ではなくちょうど200nsずれて入っている時があるようです。これは遅延掃引で62.7us立ち上がりから遅らせている波形なのですが、ズレの部分の明るさがさほど変わらないことからたまーに遅れる(ないし早く割り込んでいる)どころでは無く頻繁に割り込み時間が変化してしまっていることもわかります。私はこれで相当悩んだのですが、結論から言うと原因は割り込みが入った瞬間に実行している命令の影響です。
データシート(https://www.mouser.com/ds/2/268/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_dat-1065398.pdf)の16ページを見ると割り込みの応答時間についての記述があります。
"... If an interrupt occurs during execution of a multi-cycle instruction, this instruction is completed before the interrupt is served. ..."
複数サイクル命令の実行中に割り込みが入ると、 命令が実行され終わってから割り込みが入ります。とのことです。
1サイクル命令なら何の問題もないのですが、RJMPやBR**系のジャンプが入る命令は2サイクル掛かりますし、SB**系やLPM等は3サイクルかかるものもあります。つまりこれらを実行中に割り込みが入ると、命令を実行し終えるまで割り込みが入れないので遅延が発生することになります。タイマー割り込みって言うんだったら勝手に正確に割り込みが入ってくれたらいいのにと思ったんですがそんなに甘くは無いみたいです。
上のプログラムは、割り込み待ちの時に回しているループのRJMPが2サイクル命令なのでRJMP命令を実行している時には2サイクル遅れ、RJMPを実行する前なら遅れないので設定数値通りと2サイクル遅れたパルスが出力されているようです。なおタイマー割り込みの周期を1サイクル小さくするか大きくするとこのズレは無くなります。
解決策としては、割り込み待ちの処理の命令を全て1サイクル命令にするというのが一番本質的な解決になるような気がしますがまず無理なので私はスリープを使うことにしています。スリープが許可されている状態でSLEEP命令が実行されるとプログラムはそこでスリープ状態に入り、以後の命令は実行されません。そこに割り込み等が入るとスリープから復帰し、また命令を実行し始めます。スリープから復帰する時には4サイクル掛かるのですが、逆に言えばスリープに入ってさへいれば遅延が4サイクルに固定されるということです。ですので、予めこのサイクルをタイマー設定の数値に計上しておいて、タイマー割り込みが入る前にスリープにさせることで設定値通りの割り込みが実現できるのではないかと思います。
Web拍手反応
>海外からのアクセスすごそう
ほぼ無いですね
> 綺麗に立方体ならんかったやつほんま草
あれステレオの片方だけ作ったところでやばいなって感じて放置してあります。時々鳴らしてみたりするんですがなんとも。
> 今更なんですけどHF SSTCの記事投稿の予定ってあるんですか?
そうですねぇ…。予定と言ってしまえばどうとでもなるのですが、今のところ無いです。書きたい記事ではあるのですがいまいち全体として再現性のあるものになら無さそうで結局写真集みたいになっちゃうかもしれません。
> 電子工作について質問しても良いでしょうか?
先日「矩形波」を「くけいは」と読むと知り、びっくりしました。そこで不安になったのですが、「方形波」ってなんて読むんでしょうか?是非ご教授頂ければと思います。
そんなこと聞かなくてもいいです。
> いっぱいのおっぱいがいる
> マ
ル
ク
ス
> あけましておめでとうございます。今年もFEL研究室をよろしくお願いします。
> なかた
おめでとうございます。マルクスのコメントは黙殺することにします。
> NTでは何を展示するんですか
NT京都2018に出展することにしました。KKTで申し込みしています。出展内容としては超音波関係の何か(未定)を持っていく予定です。また完成したら報告します。間に合わなければIHかテスラ持って行きます()。
それでは、今日はこの辺で
日付が変わったところですが、昨日は節分という祝日でした。豆まきをしたり、恵方巻きを食べたりするのが一般的ですが、私はスパゲッティを食べたことを報告しておきます。
AVRでタイマー割り込みを使う時に、普段はメインルーチンを回していて、一定期間ごとにタイマー割り込みが入るような構成になることがよくあると思います。しかし最近、そんな感じのプログラムを組んでいて、タイマー割り込みを使っているのに何故か僅かに割り込みの周期が遅れる現象に嵌ったので、原因と解決方法(?)を書き留めておくことしにしました。
まずATMega8にこんなアセンブラのプログラムを書き込んで走らせてみます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
.include "m8def.inc"
//ATmega8 lfuse = 0xe1 = 0b1110_0001 hfuse = 0b1101_1001
//10MHzのセラロックで使いたいので lfuse = 1100_0011 hfuse = 0b1100_1001
//avrdude -c avrisp -P COM12 -b 19200 -p m8 -U lfuse:w:0b11001111:m -U hfuse:w:0b11001001:m
.EQU fclock = 10.0//[MHz]
.EQU freq = 15.734//[kHz]
//.EQU timervalue = (fclock/freq)*1000.0
//こうしたいがEQUシンボルは4バイトINT型
.EQU Htime = 635//[cycles]
.DEF temp = R16
.DEF temp2 = R17
.ORG $0000
RJMP RESET ;各種リセット
RETI//RJMP EXT_INT0 ;外部割り込み要求0
RETI//RJMP EXT_INT1 ;外部割り込み要求1
RETI//RJMP TIM2_COMP ;タイマ/カウンタ2比較一致
RETI//RJMP TIM2_OVF ;タイマ/カウンタ2溢れ
RETI//RJMP TIM1_CAPT ;タイマ/カウンタ1捕獲発生
RJMP VideoOut//RJMP TIM1_COMPA ;タイマ/カウンタ1比較A一致
RETI//RJMP TIM1_COMPB ;タイマ/カウンタ1比較B一致
RETI//RJMP TIM1_OVF ;タイマ/カウンタ1溢れ
RETI//RJMP TIM0_OVF ;タイマ/カウンタ0溢れ
RETI//RJMP SPI_STC ;SPI転送完了
RETI//RJMP USART_RXC ;USART受信完了
RETI//RJMP USART_DRE ;USART送信緩衝部空
RETI//RJMP USART_TXC ;USART送信完了
RETI//RJMP ADC ;A/D変換完了
RETI//RJMP EE_RDY ;EEPROM操作可
RETI//RJMP ANA_COMP ;アナログ比較器出力遷移
RETI//RJMP TWI ;2線直列インターフェース状態変化
RETI//RJMP SPM_RDY ;SPM命令操作可
Reset:
LDI R16,high(RAMEND)
OUT SPH,R16//スタックポインタ上位設定
LDI R16,low(RAMEND)
OUT SPL,R16//スタックポインタ下位設定
//スリープ設定
LDI temp,(1<<SE)//アイドル動作に設定する
OUT MCUCR,temp
//タイマ設定
//16bitレジスタに書き込む時は上から
LDI temp,high(Htime)
OUT OCR1AH,temp
LDI temp,low(Htime)
OUT OCR1AL,temp
//TCCR1Aは初期値のまま
LDI temp, (0<<COM1A1|0<<COM1A0|0<<FOC1A|0<<FOC1B|0<<WGM11|0<<WGM10)//タイマA比較一致有効
OUT TCCR1A,temp
LDI temp,(0<<TICIE1|1<<OCIE1A|0<<OCIE1B|0<<TOIE1)
OUT TIMSK,temp
LDI temp,
(0<<ICNC1|0<<ICES1|0<<WGM13|1<<WGM12|0<<CS12|0<<CS11|1<<CS10)
OUT TCCR1B,temp
LDI temp,(1<<PD0)
OUT DDRD,R16//PORTDの0ビット目を出力に設定
SEI
Main:
//SLEEP//待ち時間はスリープにしておく
RJMP Main
VideoOut:
SBI PORTD,0//high
CBI PORTD,0//low
RETI
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
改行が微妙に入ってしまって読みにくいことこの上無いのですがどうしたら良いのでしょうか。
まずReset:で色々な初期設定をして、Main:を無限ループさせて一定時間ごとに入るタイマー割り込みごとにパルスを出すようなプログラムです。SBI、CBI命令はそれぞれ2クロック掛かるので出るパルス幅は2クロック分、クロックが10MHzなので200nsということになります。タイマー割り込みの周期はHtimeというシンボルに入れたサイクル数になるようになっていて、クロックと周波数から自動で計算しようと思ったのですがコメントにもあるようにシンボルは4バイトのint型なので小数点以下の計算ができずだいぶざっくりなサイクル数になってしまうので諦めてサイクル数は手計算しました。Htimeに入れる周期は理想のサイクルから2か3くらい引かないと、タイマー割り込みの固定的な遅延時間で遅れるのでご注意ください、ってデータシートにも書いてると思います。
ラベルでピンと来た人もいらっしゃるかもしれませんが、これはビデオ信号の水平同期処理をタイマー割り込みでやろうとした時のソースの一部です。
とまぁタイマー割り込みで一定周期のパルスが出るだろうと動かしてみると下のような波形が出力されました。
なんとタイマー割り込みが入るタイミングが一定ではなくちょうど200nsずれて入っている時があるようです。これは遅延掃引で62.7us立ち上がりから遅らせている波形なのですが、ズレの部分の明るさがさほど変わらないことからたまーに遅れる(ないし早く割り込んでいる)どころでは無く頻繁に割り込み時間が変化してしまっていることもわかります。私はこれで相当悩んだのですが、結論から言うと原因は割り込みが入った瞬間に実行している命令の影響です。
データシート(https://www.mouser.com/ds/2/268/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_dat-1065398.pdf)の16ページを見ると割り込みの応答時間についての記述があります。
"... If an interrupt occurs during execution of a multi-cycle instruction, this instruction is completed before the interrupt is served. ..."
複数サイクル命令の実行中に割り込みが入ると、 命令が実行され終わってから割り込みが入ります。とのことです。
1サイクル命令なら何の問題もないのですが、RJMPやBR**系のジャンプが入る命令は2サイクル掛かりますし、SB**系やLPM等は3サイクルかかるものもあります。つまりこれらを実行中に割り込みが入ると、命令を実行し終えるまで割り込みが入れないので遅延が発生することになります。タイマー割り込みって言うんだったら勝手に正確に割り込みが入ってくれたらいいのにと思ったんですがそんなに甘くは無いみたいです。
上のプログラムは、割り込み待ちの時に回しているループのRJMPが2サイクル命令なのでRJMP命令を実行している時には2サイクル遅れ、RJMPを実行する前なら遅れないので設定数値通りと2サイクル遅れたパルスが出力されているようです。なおタイマー割り込みの周期を1サイクル小さくするか大きくするとこのズレは無くなります。
解決策としては、割り込み待ちの処理の命令を全て1サイクル命令にするというのが一番本質的な解決になるような気がしますがまず無理なので私はスリープを使うことにしています。スリープが許可されている状態でSLEEP命令が実行されるとプログラムはそこでスリープ状態に入り、以後の命令は実行されません。そこに割り込み等が入るとスリープから復帰し、また命令を実行し始めます。スリープから復帰する時には4サイクル掛かるのですが、逆に言えばスリープに入ってさへいれば遅延が4サイクルに固定されるということです。ですので、予めこのサイクルをタイマー設定の数値に計上しておいて、タイマー割り込みが入る前にスリープにさせることで設定値通りの割り込みが実現できるのではないかと思います。
Web拍手反応
>海外からのアクセスすごそう
ほぼ無いですね
> 綺麗に立方体ならんかったやつほんま草
あれステレオの片方だけ作ったところでやばいなって感じて放置してあります。時々鳴らしてみたりするんですがなんとも。
> 今更なんですけどHF SSTCの記事投稿の予定ってあるんですか?
そうですねぇ…。予定と言ってしまえばどうとでもなるのですが、今のところ無いです。書きたい記事ではあるのですがいまいち全体として再現性のあるものになら無さそうで結局写真集みたいになっちゃうかもしれません。
> 電子工作について質問しても良いでしょうか?
先日「矩形波」を「くけいは」と読むと知り、びっくりしました。そこで不安になったのですが、「方形波」ってなんて読むんでしょうか?是非ご教授頂ければと思います。
そんなこと聞かなくてもいいです。
> いっぱいのおっぱいがいる
> マ
ル
ク
ス
> あけましておめでとうございます。今年もFEL研究室をよろしくお願いします。
> なかた
おめでとうございます。マルクスのコメントは黙殺することにします。
> NTでは何を展示するんですか
NT京都2018に出展することにしました。KKTで申し込みしています。出展内容としては超音波関係の何か(未定)を持っていく予定です。また完成したら報告します。間に合わなければIHかテスラ持って行きます()。
それでは、今日はこの辺で
2017年11月17日金曜日
部族の首飾りみたいなの
毎度お久しぶりと言っている気がしますがお久しぶりです。私です。
前アクセス数が~とか言ってて今見たら46000!?そんなに見るもんあるんですかね。何かを期待されているならその期待に応えないと、と思いますがよくわかないので書きたいことを書いていこうと思います。
ところでいつも題名で記事の内容を察する方も多いと思いますが今回はどうでしょうか?
紆余曲折あって飲料缶のプルタブを集めてしまったのですが、特に利用法も思い付かなかったのでどこかの部族が下げてそうな首飾りを作ってみました。
う~んなんかこうもうちょっとかっこよくなるかなと思ったんですがいかんせん地味ですね。
プルタブ洗った覚えが無いのであんまり綺麗じゃないかもです。
ちなみにこの紐、元は十字架が付いておりました。
Web拍手反応
> マルクス完成しましたか!
してないです。すいません。
> はやおでーす!
どうもー
> ティッシュ白くなってて
シリコングリスが分泌する男性いたら貴重なんでモテそう
> 中華CNC
> 欲しい!
>いかんせん情報量が少ないのでこういうサイトはありがたいです
中華CNCで基板掘る記事まだ書いてませんでした…。コツがわかりつつあるのでまた書きます…。
> Hello,Ms.KKT.
Ms.じゃないんですねぇ
> FEL研究室更新まだ?
>(チョットキイテ!)KKTはやく記事書いて
>おもしろスコップを新調しました(まぁオレにはおよばんけど)(・・・
>次はお前や(ポ ン)
>!
なんとかゼミの漫画メーカーの作品でこういうのがあるんですよ。
> オススメのおかずを教えてください
> オススメのおかずを教えてください
グルメ系ブログにするのはNG
それでは、今日はこの辺で。
2017年9月29日金曜日
100均のMDFでスピーカボックス製作
お久しぶりです。KKTと申します。
今の時期が最も過ごしやすいようで、実は朝と昼の差が激しかったりして微妙ですね。
題名の通りダイソーで売っているMDFでスピーカボックスを作ってみました。寝る前にちょっと音楽聞くようなスピーカが欲しいなと思ったのが作ろうと思ったきっかけです。結果だけが知りたい人のために一言言うなら、出来栄えは失敗集にするか迷ったくらいの出来です。
件のMDFはこれです。
100*100と言うキリが良い大きさで、6枚入り100円(108円)は非常にお買い得に見えます。
そしてスピーカはと言うと、東京のラヂオガーデンというお店で買った300円くらいのものです。
8Ω10Wと記載があります。
まずはMDFにスピーカが顔を出す穴を開けましょう。
ステレオですので二個作るということで、二枚重ねて加工しました。ちなみに大穴はホールソーと言う工具で開けました。一番安いのを買ったのですがいまいちでした。
ネジを通してスピーカを留めてみました。今のところ悪くないんじゃないでしょうか。
後ろはターミナルをつけたりしたかったのですがそれに近いものが無かったので線を出すことにしました。穴を小さめに開けてかなりキツく線が通っているので結び目も設けませんでした。
お気づきの方もいらっしゃると思いますが、実は正方形の板6枚だとなんというかうまいこと立方体にならないみたいです(?)。
さらに、家を探したところボンドがありません。エポキシがあったような気もしましたが、案の定B剤だけしかなかったのでこれもダメ。普通なら明日買ってきて作ることになると思うのですが、そもそもボンドや接着剤の待ち時間を待てるか怪しい男が明日に作業を持ち越すなど無理な話ですので両面テープで貼り付けることにしました。
両面テープが思いの外分厚いのでかなりかっこ悪くなりそうで心配になってきました。
うーん…。
だいぶダサくて笑いましたが箱にはなりました。
早速アンプに繋いで視聴してみたのですが、スピーカ裸よりはわずかにマシかと言う程度で残念ながら心地よく眠れそうにないです。両面テープの厚みのせいや、貼り付けが適当なせいで側面の板同士に隙間が結構あるみたいで、これは原因の1つだろうと推測しました。
隙間があるなら塞ごうということで、両面テープで隙間を埋めました。
音は割りとマシになったように思えるんですが、まだまだ安眠に貢献してくれそうにないのでどうにかしたいところです。あと見た目がアレすぎる。
という事でほぼ失敗しました。せっかちを治すのと、作業を丁寧にするのを心がけでまた製作してみようと思います。
珍しく木工まがいのことをしてみましたがいかがでしたでしょうか。
Web拍手反応
> Hi,Mr.KKT. This is Nakata desu.
なかたくん、ちょっと前に一度もWeb拍手のメッセージ送ったこと無いって言ってましたが嘘みたいですね。
> ボウゲイ^^
> ボウゲイ^^
捕鯨の間違いかな?
それでは、今日はこの辺で。
それでは、今日はこの辺で。
2017年9月3日日曜日
東京遠征2017
ご無沙汰しております。KKTの方です。
前回記事の通り30000アクセスありがとうございますなどと思っていたらもう35000を超えていてなんというかありがたいことです。
今回は東京遠征ということで、内容は主に前から行きたかったハムフェア2017についてです。私は無線は全くわからないのですがおもしろそうなジャンクがあるとの噂を聞いて行ってみました。
9月2日 夜行バスにて東京到着
5:30くらいだったので人が激少なかったです。
取り敢えず天丼てんやを下見。在(東)京中は二度か三度入りました。
この後秋葉原で人と合流したり部品を購入したりしました。
↑千石で売られていたArduinoのシールドです。
技適とかよくわかりませんが日本で使って良さそうならなんかしてみるかもしれません。
9月3日 ハムフェア
今回初めて東京ビッグサイトに来ました。あいにくの雨でしたが涼しくてむしろ過ごしやすかった。
なかなか変わったデザインの建物です。
わーい
企業のブースや一般の方が集まっているクラブのような団体が出展されていて、ジャンク部品などは後者の団体さんが出されていました。
購入した品物
おなじみの大きめ電解コンやチップ部品、スイッチング電源がお買い得でした。
あまり店頭では見られない円盤型のコンデンサや大きめのスイッチングトランスもあってつい買ってしまいました。
溶接機に使われていたんでしょうか。非常に強そうなチョークとトランスです。
余談ですが、宿は毎度おなじみおずやをお借りしました。
某動画に出て来るピングーの真似をしようとしてポップコーンを作りました。
まぁまぁおいしかったです。
あと同席していた海苔の者から大変貴重そうなおみやげも頂きました。
朱肉。
Web拍手反応
> ドンドコ!
> おぱんちゅ
> 背中痒いんやが....
> よすまい
> ちんぽこシコったろか?
> おぱんちゅ
> 背中痒いんやが....
> よすまい
> ちんぽこシコったろか?
うぃ
> なんとお呼びすれば...?
かかとくんって呼ばれる時あるけど推奨はKKTです。
> なんとお呼びすれば...?
かかとくんって呼ばれる時あるけど推奨はKKTです。
> ジョボ??
> 噂のジョボガハ!
あの…
> 噂のジョボガハ!
あの…
> 浮遊溶解をぜひしてほしい
浮遊溶解は一度だけ試したのですが適当に円錐な感じに銅管曲げただけじゃやっぱりうまいこと上がりませんでした。銅管がちゃんと曲げられさへすれば回路的に特に難しそうな部分は無さそうなのでまた試してみようと思います。
> こんにちは!記事わくわく!
工作系の記事が無くてすみません。
> こんにちは!記事わくわく!
工作系の記事が無くてすみません。
> 30000PVおめでとうございマズル
> 30000兆円でなにかつくってみるとかどうでしょうか
> いつも楽しみにしてます言語
> 30000兆円でなにかつくってみるとかどうでしょうか
> いつも楽しみにしてます言語
何するか全然決めてなかった。
> はやくいれて
> 今日も更新お疲れ様でした!
> 今日も更新お疲れ様でした!
いつもお世話になります。
> チュイッタァーの公式アカゥントができたらしいですね!
> チュイッタァーの公式アカゥントができたらしいですね!
よくご存知で!
こちらの方にございます。
なかたくんがBotの投稿を管理しており、今のところランダムでリンクを投稿しているようです。ご質問等は私またはなかたくんが手動でお返事いたします。
> >>回路についてはまた別の記事で動画とともにお送りする予定なのでよろしくお願いします。
> はやくいれて
あの記事のIHの回路は4046とMOSFETのフルブリッジだったと思います。諸事情で装置が現在手元に無いので新調するか戻ってきたら動画にしようと思います。
> >>回路についてはまた別の記事で動画とともにお送りする予定なのでよろしくお願いします。
> はやくいれて
あの記事のIHの回路は4046とMOSFETのフルブリッジだったと思います。諸事情で装置が現在手元に無いので新調するか戻ってきたら動画にしようと思います。
それでは、今日はこの辺で
2017年5月28日日曜日
中華CNC「CNC2418 ER11」でCADデータを切削してみる~二次元CADの場合~
どうも、KKTです。
今回は前回購入したCNCで加工までの流れをご覧に入れようと思います。
全体の流れとしては、
1.CADソフトで加工したい形状を描く
2.CAMソフトでGコードに変換するとともに切削条件等を決める
3.GRBLControllerでGコード読み込み切削する
という感じです。では早速やってみましょう。
1.CADソフトで加工したい形状を描く
まず対象の材料をどのように加工するのかを考えます。今回は基板のパターンでは無く単なる材料の切削、つまりアクリル等で部品やケースを作る時のことを考えます。
CADソフトはお好みのもので構わないと思いますが、今回は「Jw_cad」を使用しました。ホームページより最新版(Version 8.03a)をダウンロード、インストールして使用しました。
まず起動するとこんなんになると思います。
どうでもいいかもしれませんが、設定→基本設定の「用紙枠を表示する」にチェックを入れておくと見やすいです。
続いて、後のCAMソフトにデータを渡すための設定を行います。画面右のレイヤー一覧から、現在選択されている赤丸のレイヤー番号を1度右クリックします。
するとレイヤ一覧が開きますので以下のように(0)にORIGIN、(1)にCAMと名前を付けて閉じます。私は(3)にもAuxという名前を付けていますが、補助線用のレイヤなので必須ではありません。名前も適当で良いです。名前はレイヤの数字を1度クリックすると変えられます。この設定はCAMソフトで読み込まれるもので、ORIGINレイヤに存在する円の中心が原点に、CAMレイヤが切削データとしてそれぞれ読み込まれます。
さて、まずは作りたい形を②のレイヤに作りたい形状を描いてきます。後からわかりやすいように線の色を変えることをおすすめします。レイヤは数字を右クリックすると選択されます。
僕はこんな感じにしようと思います。
左と下にある直線は基準線なつもりで描いたのですが意味が無かったので無視してください。
さて、次はレイヤを①に切り替え、また違う色で掘るべき線をなぞっていきます。線モードで点の近くで右クリックするとそこから線が始まりますので、次の点近くでまた右クリックすると線をなぞることができます。
大きくなっているのは拡大しているからです。このような図形ではほとんど②レイヤで補助線を描く意味がありませんが、もっと複雑な図形になると大いに役に立つと思います。
最後に、原点を示す円を0番レイヤに描きます。念のため色を変えておきます。
原点を置く位置としては、図形の一番左端がわかりやすいと思います。円のアイコンをクリックして、円の中心を指定すれば描けます。半径はなんでも良いです。線の端や点を原点としたい場合も同様に右クリックすれば一番近い点(ないし線の端)が原点になります。実は上の画像ではTの下端の方がKの下端より下でしたのでこの後修正しています。
これで描画はおしまいです。一応レイヤの様子も載せておきます。
これでjw_cadでの作業は以上ですので、jww形式で保存しておきましょう。
2.CAMソフトでGコードに変換するとともに切削条件等を決める
使用するソフトは、NCVCというソフトです。ド定番のようなソフトらしいのですぐダウンロードはできるかと思います。デフォルトのフォルダにインストールした場合僕の環境では管理者権限の関係で一部の設定ファイルが書き込めなかったりしたので管理者権限で実行する必要があるかと思われます。起動したら、Read_jwから先程保存したファイルを読み込みましょう。
こうなりました。
なんかエラーが出る場合はなんとかしてください。
続いてオプション→切削パラメータの設定 を開き、「Init.nci」を開きます。取り敢えず以下のように設定して、新規保存しておきました。
主軸回転数は(rpm)となっていて、これがそのままS****というGコードとなって送られます。ちゃんとしたCNC加工機であれば主軸の回転速度が調速されるはずですが、購入したマシンでは0~1000の間で単にPWMのデューティ比が0~100%に変化するだけのようです。つまり最大が1000、最小が0なだけで正確な回転数では無いということですね。今回は音がやかましいのと、振動で精度が悪くなるのを考慮して500としました。
続いて送りはF****というGコードになる部分で切削加工の際、何mm/分で動かすかを指定するものです。試験的に60mm/min、1秒に1mmの速さです。
R点は切削時どれくらい刃物を上げるかです。切削する時は当然刃物は材料の表面より下にあるはずですが、切削が終わって刃物を別の場所に移動させる際そのままですと材料を削りながら移動することになったり刃物が折れたりするので一旦上げる必要があります。その高さをここで指定します。今回は5mm戻していますが、ワーク(切削対象)は平板の予定なのでもっと小さくても問題ありません。NCNVの設定では、加工中はすべてR点の高さに、加工終了後は切削原点の高さまで戻ります。
切り込みは刃物を材料の表面をどれくらい深く切削するかです。今回はMDFを切削予定なので結構深くしても問題無いですが、硬い材料を切削する時は深刻を使用して何回かに分けて切削するべきです。マイナスで指定しませんと意味が無いので注意。
カスタムヘッダー・フッターはデフォルトのままですと後の工程でエラーが出ますので以下のように修正しました。デフォルトとは別の名前に新規保存してデフォルトは残しておくことをおすすめします。
ヘッダー
{G90orG91}
{Spindle}M03
{Spindle}M03
フッター
M05
{G0XY_Initial}
M30
{G0XY_Initial}
M30
すべて設定できたらOKで閉じて、ファイル→NCデータの生成→標準生成 でOK押せば指定したフォルダに*.ncdというファイルが出来上がっています。一応中身をメモ帳なりで確認しましょう。
G90
S500M03
G00Z5.
G01Z-0.3F60.
Y17.221
G00Z5.
X9.788
G01Z-0.3
X0Y8.254
X10.156Y0.221
G00Z5.
X15.141Y-0.044
G01Z-0.3
Y17.177
G00Z5.
X24.929
G01Z-0.3
X15.141Y8.21
X25.297Y0.177
G00Z5.
X35.031Y0.448
G01Z-0.3
Y17.074
G00Z5.
X42.17
G01Z-0.3
X27.598
G00Z10.
M05
X0Y0
M30
S500M03
G00Z5.
G01Z-0.3F60.
Y17.221
G00Z5.
X9.788
G01Z-0.3
X0Y8.254
X10.156Y0.221
G00Z5.
X15.141Y-0.044
G01Z-0.3
Y17.177
G00Z5.
X24.929
G01Z-0.3
X15.141Y8.21
X25.297Y0.177
G00Z5.
X35.031Y0.448
G01Z-0.3
Y17.074
G00Z5.
X42.17
G01Z-0.3
X27.598
G00Z10.
M05
X0Y0
M30
Gコードはググったら出てきますのでプログラムがどんな流れで動いているのかは把握すべきだと思います。手打ちでプログラム書いた時や修正した時は、Z軸(刃物)が切り込んだままG0等の速送りが行われていると致命的なので確認しましょう。
最後に、出てきた*.ncdファイルの拡張子を.ncに変えておきます。
3.GRBLControllerでGコード読み込み切削する
使用するソフトはCandleというソフトです。以下よりダウンロードできます。
このソフトでシリアル接続されたCNCマシンに移動やGコードを送っての制御ができます。最新版をダウンロードしてみたところうまく動きませんでしたのでversion 0.8.4を使用したところうまく動作しました。ソフトを起動してCNC2418とPCをUSBケーブルで接続します。Service→Settingsを開くと設定画面が現れます。
Portは接続していれば再読込マークで認識されると思います。いくつかシリアルポートが存在するPCならデバイスマネージャなりから調べて設定します。変更したものだけ記載します。
Baudは115200で動きました。9600では動作しなかったような気がします。
Spindle Speed minは最小主軸回転数で0を設定します。
maxは1000にします。
認識されるとこんな感じになると思います。
説明の便宜上右の方の拡大図を用意しました。
右の方のJogという項目で各軸の手動送りができます。ボタン押すと動くと思います。送り量は①で指定します。スピードはSettingsで変えられたはずです。ほんとに操作したように動くので刃物を変なとこに当てて折ったりしないように注意しましょう。ワークやテーブルをいじったりする時は必ずContolのSafe Z(②番)を押すなりして刃物を安全な位置まで移動させましょう。図に書き忘れましたがZ軸はX+の字の上と下にある三角で操作します。
続いて原点の調整を行いましょう。まずワークをテーブルの中心付近にしっかり固定します。
付属していたバイス(?)の使い方がよくわかりませんが取り敢えず固定できているのでよしとします。
次にワークのどの位置を原点とするかを決めます。
今回は鉛筆で描いた四角の位置に文字を掘ることにしました。JogでXY軸を操作してこの四角の大体左下辺りまで持ってきます。
持ってきました。この状態でControlのZeroXY(③番)でここをXY原点とします。
Z軸の原点も当然設定しないといけないので、Zの送り量を0.01または0.1にして細心の注意を払いながら刃物の先端と材料の隙間が0くらいになるまで下げます。硬い材料だと失敗すると刃物が折れるの注意しましょう。なお材料に導電性があるものでしたらZ軸プローブなる機能で自動で設定できたりします。また基板加工の時にお話しようとおもいます。
導電性が無い材料の時、僕は紙を挟んで動かしながら0.1づつ下げていって紙が動かなくなるところで④番のZero Zを押します。
設定できたら②番で一旦上に上げて、紙を除きます。
CNCマシンは今設定した原点を元に加工します。加工する前には必ず設定しましょう。
次にCandleに2.で作成したNCデータを読み込みます。File→Openから開きましょう。
先程作ったデータが読み込まれました。なぜか一番左のKの字の線が見えませんがGコードを見る限り問題無いのでこのままいきます。原点を調整してあればこのままSendを押せば加工が始まります。加工中は今どこにいるのかがウィンドウ内に表示されます。おもしろい機能です。
しばらく待つと完成します。
まさかの失敗してます。
加工中の音でわかったんですけど、Tの直線を加工中にステッピングモータが脱調して縦線が少し短くなってしまいました。今までこんなことなかったのですが、Y軸の送りの抵抗が大きすぎるようです。油を差すなり組み立てをやり直すなりする必要があるようです。
以上が加工までの流れとなります。失敗してしまいましたが普通はうまくいくと思います。次回は本命の基板切削かもうちょっと発展した加工の記事となる予定です。お楽しみに。
Web拍手反応
> 次回はマルクスの記事です。
ちがいます。
> 5月中におじき出した経験談など教えてくださいな
あんまり工作してません。と言うかそんな月に何度もおじき出しているイメージなのでしょうか。怖気づく経験はそんな良くするものじゃないような…。
怖気づくとは違うかもしれませんがやらかしたことを貼っておきます。
見事にテーブルに傷を入れてしまいました。一生モンの傷です。
それでは、今日はこの辺で。
登録:
コメント (Atom)




























