|
広告 このページはLinux+電子工作(ハード)のページです。 ちなみに使っているディストリビューションはDebianのunstable 主に秋月電子 Twitter始めました→@tantinjp 適当に作り語るblog/2012-09-09ブラシレスモーターを回してみるステッピングモーターも回したし、サーボモーターも回した。 ブラシレスは他のロータの角度を検出する必要があるのでモーターと違って多少面倒だ。 ローターの角度を検出する方法として、ホール素子を使う方法とコイルの起電力を検出する方法があって、特に後者をセンサレスと言う。 回すのが面倒だと言いつつも、実は専用のドライバICがあるのでそれを使えばそんなに大変じゃない。 でもどうせブラシレスモーターを回すならゴツいモーターを回そうと、ラジコン屋で売っている数十Aのモーターを買ってみた。 この位の電流だと、外部にFETをつなげるタイプにする必要があるし、ラジコン用だとホールセンサもついていないので、センサレスタイプにする必要がある。 で、選んだドライバがAllegro MicroSystems なかなか良さそうな石だけど、入手性が悪くて、Digi-keyでしか買えなかった。 SPI (シリアル)で設定ができて、単純にはRUNレジスタのRUNビットを1(初期値は0)にして、PWM端子にPWM信号を入れると回り出す。 最初、いくら設定しても回らなかったが、よくよく見てみたら突入電流が大きくて、ロジック用の電圧が降下していたためだった。 突入電流を抑えるために、抵抗を入れたり、もしかしたらA4960に突入電流用の機能があるかもしれないのでそれを使うなどの対策をしようかと思う。 continue on: [ブラシレスモーターを回してみる2]
Category: [motor] - 21:35:11
blog/2012-08-25無鉛ハンダ考環境に悪い、人体に悪いなどで最近のハンダは鉛が入っていない無鉛ハンダ(鉛フリーハンダ) 溶ける温度が高いし、ハンダ付け後のハンダもなにやら曇っていて見栄えが悪い。 さらに、ある人の話だと世の中にある鉛のほとんどは鉛蓄電池(車に使われているもの)でハンダに入っている鉛など微々たる物らしい。 そう考えると昔の鉛入りハンダでいいんじゃないかと思ってしまう。 しかし、世の中の流れには逆らえないのだろう。 Category: [独り言] - 16:08:36
blog/2012-08-17ノートPCのファンがうるさい家で使っているノートPC(Toshiba satellite L40 213Y)のファンが急に異音を出し始めた。 しょうがないので分解してみることに。 CPUの冷却ファンのため結構深くまで分解する必要があった。だた、掃除用の穴がすぐに開けられるのはすごいなあと思った。 ファンを取り出し、手で回してみると、なんとなく引っかかる感じがする。 ファンを分解すると、簡単にブレードが取り外せた。 ファンの型番(KDB0605HB)で検索すると、海外のサイトしか引っかからなかったので、何とか直してみようと、掃除してグリスをつけようとしたら、グリスが手元になかった。 ファンを組み立てて手で回してみると、最初の違和感はなくなっている感じ。 で、電源を入れたら、静か!異音が出始める前より静かになったんじゃないかと思う。 しばらくこれで使ってみる。 Category: [トラブル] - 01:29:21
blog/2012-07-27XBee経由でArduinoにアップロードXBee(透過モード)経由でArduinoに書き込もうとしたとき、両方のXBeeのDTRをつないでいても avrdude: stk500_getsync(): not in sync: resp=0x31 というエラーが出て使えない。 ただし、Arduino IDEの書き込みボタンを押した後、すぐにArduinoのリセットボタンを1、2回押すと書き込める。 DTRを使わずに書き込む方法 XBeeに関してXBeeに関して最近わかったこと
Category: [XBee] - 20:43:18
blog/2012-07-21秋月のジャイロ3continue form: [秋月のジャイロ2]
カルマンフィルタを用いることで、だいぶ安定するようになった。 秋月のジャイロモジュール カルマンフィルタに関してほとんど知らないので、なぜかは良く分からない。単純に加速度計のデータの方が重みがあるのかもしれない。 これで姿勢制御ができれば、いろいろなものに応用できる。 Category: [Sensor] - 12:38:18
blog/2012-07-19秋月のジャイロ2continue form: [秋月のジャイロ]
先日書いたように、秋月のジャイロ(ENC-03R)をいじくっている。 2番目の方でArduinoのスケッチが公開されている 使っているのは ちゃんと定数を設定していないけど、回転させて元の位置に戻すと、値もちゃんと戻る。 すばらしい。もうちょっといじってみる予定 continue on: [秋月のジャイロ3]
Category: [Sensor] - 12:27:10
blog/2012-07-17秋月のジャイロ倒立振子もおもしろそうだと思い、秋月のジャイロ ジャイロはそもそも角速度を出力するものなので、ジャイロの出力を積分すれば角度となるはず。 じゃあ、秋月の回路が悪いのかとなると、そうとも言えない。 メーカーの推奨回路となれば、きっと使えるはずだ ということで四苦八苦しながら、そのまま使っているが、うまくいかない とにかく最初の積分でドリフトを抑えないといけないと思うけど、どうやるのだろう? 他の方法は、加速度計の出力と比較して、ドリフトを抑えてしまう方法だけど、まだやっていない。この方法だと角度のドリフト、オフセットは抑えられるけど、角速度は難しい。 道は長そう。また、くじけそう continue on: [秋月のジャイロ2]
Category: [Sensor] - 22:52:06
blog/2012-07-04KiCADでXが落ちる。その2continue form: [KiCADでXが落ちる]
何も解決してないけど、どうもバグらしい。 continue on: [KiCADでXが落ちる件が解決]
blog/2012-06-30いよいよFPGAに?ArduinoだSHだ言っていたのに前の記事でまたPICに走って、落ち着きのないやつだなあと思われたかもしれない。 なぜ、また急にPICを取り扱うかというと実は「USB-Blasterもどき USB-BlasterはALTERA 今まではLinux上でFPGA/CPLDを開発する環境がほとんどなかったんです。書き込みも簡単ではなかったため、かなり敷居の高いことだったんです。 これはLinuxでFPGA/CPLDを開発しないわけにはいかないだろうということで、まず、件の開発環境「Quartus II」をインストールし、書き込みデバイスの「USB-Blasterもどき 「USB-Blasterもどき」を作るためにPICをプログラミングする必要があったわけです。 まあ、結局落ち着きのないことにはかわりないのだけれど Category: [FPGA,CPLD] - 01:21:14
blog/2012-06-26pk2cmdでPICに書き込む今まで、LinuxでPICに書き込むのに、「秋月のPICライター + akipic」から始まり、「自作のライター + Picprog」、「Writer509 そこで、Microchip PICkit 2ならMicrochip ということでこれからは、「PICkit 2 + pk2cmd」で書き込もうと思う。 言うまでもないかもしれないけど、「pk2cmd」にインストールのしかたを書いた。 Category: [PIC] - 01:13:26
blog/2012-06-23KiCADでXが落ちるプリント基板CADとしてKiCADを使っているのだけれど、PCBnewを使っていると、たまにXごと落ちる。 ゾーンを塗りつぶして仕上げ段階では、おそるおそる使っている。 検索してもうまい解がみつからないが、KiCAD + pyGerber2Gcode でGコードを作って、CNCでプリント基板を作るのが便利なので、このままなだめなだめ使っていこうかと思う。 continue on: [KiCADでXが落ちる。その2]
blog/2012-06-21SHクロスコンパイラ構築恨み節2continue form: [Renesas SH cross compiler]
で、まあ時間は掛かったけどクロスコンパイラの構築は何とかなったと。 レジスタ定義ファイルと呼ばれるらしいが、ルネサスのWebサイトで検索しても見つからない、ググっても見つからない。 なのに登録制! なんで? そんなこんなでヘッダーファイルも手に入れ、やっとこさコンパイルできる状況に。 sh-hitachi-elf-gcc: エラー:hoge.c: C++ コンパイラはこのシステムにインストールされていません と。 --enable-languages=c,c++ というオプションをつけるべきところを --enable-languages=c となっていたためだった。 そしてやっとコンパイルがうまくいった。 これは今までのググりのおかげですぐに見つかった。 先はまだまだありそうだ。 Linuxユーザーにまで気を使えないのかも知れないが、なんとかならないもんかなあ。 Category: [SH,H8] - 00:01:03
blog/2012-06-20Renesas SH cross compilerPICやArduinoだと非力なときがあるので、より速いCPUが使いたくなり、ルネサス で、開発環境を構築する必要があるので、まずはクロスコンパイラの構築をした。 AVRやPIC、ARMなどはLinux向けの開発ツールが出回っていて、いろいろなディストリビューションの公式パッケージになってたりするが、SHの場合、皆無に等しい。 クロスコンパイラの構築の仕方をググってみても、上の方に出てくるページでは内容が古かったりして、なかなか思うようにできない。 たとえば、binutilesのコンパイルのとき $ ../binutils-2.22/configure --prefix=/usr/local/sh_cross_4.7 --target=sh-coff $ make とやると書かれていたりするが、やってみると "sh-coff" This target is no longer supported in gas といわれる、targetの名前が変わっているのだ。 次にgccのコンパイルを始めるとconfigのときに checking for the correct version of gmp.h... no configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+. とでる。GMPやMPFR、MPCといったライブラリをインストールする必要があるらしい。 長くなるので一旦終わり continue on: [SHクロスコンパイラ構築恨み節2]
Category: [SH,H8] - 23:44:56
blog/2012-06-09Optibootを使ってみる3continue form: [Optibootを使ってみる2]
相変わらずOptibootはうまくいっていない。というか半ば諦めぎみ。誰かが解決してくれるまで待とうかな。 今まで分かったことは、いろいろ手を加えるとシリアルで送信受信はできる。少なくとも受信には問題ない。 あと、「getch()」だけでなく「verifySpace()」でもループから抜け出せなくなる。 これから何となく分かることは、どうもwatchdogが悪さをしているみたいだ。 で、どの辺が悪いのか。「watchdogConfig()」で時間を変化させているけど、ここを2回通るとおかしくなる。 というわけでwatchdogの設定でおかしくなっているみたい。 知っている人にしてみたら問題ではないのだろうけど、もう面倒くさいw blog/2012-06-02Optibootを使ってみる2continue form: [Optibootを使ってみる1]
まだOptibootはうまくいっていない ググってもなかなか情報が見つからないので、ソースを直接見ることにした。 まず、デバックのために「LED_DATA_FLASH」をつけてコンパイルする。具体的にはMakefileで atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DLED_DATA_FLASH=1' みたいにやる。これが定義されていれば、本来はLEDがつきっぱなし(または点滅?)になるはず。 /* Forever loop */ と書かれている部分のどこかで止まっている。 ソースを書き換えて、必ず送信するようにする。そしてターミナルでシリアル通信すると、ちゃんと送信してくるので、RS232のスピードなどはあっているらしい。 で、どこで止まっているかを見ると、受信するサブルーチン「getch」で引っかかっている。もっと言うと while(!(UART_SRA & _BV(RXC0))) ; という部分で抜け出せないでいるみたい。 ということは、受信できてないってことか。 とりあえず古いブートローダーのソースと見比べながら解決していこうと考えているけど、挫折するかも。 continue on: [Optibootを使ってみる3]
blog/2012-06-01Optibootを使ってみる1最近のArudinoのブートローダーはOptiboot ダウンロードページ $ make ボード名 とするとブートローダーができる。 ソースページ コンパイルは簡単にできた。できたブートローダーの書き込みもできる。 pins_arduino.h がない といわれる。 xxxxx.variant=eightanaloginputs を付け加えるとエラーは出てこない。 ところが、いざ書き込むと avrdude: stk500_recv(): programmer is not responding といわれる。 そういえば、Optibootを書き込んだ後、LEDが光らなかった。 ソースを見たが光りそうな雰囲気ではある。 考えられるのはコンパイルがうまくいっていないことと思う。でもエラーは出ていなかった。 今日はこの辺でギブアップ continue on: [Optibootを使ってみる2]
blog/2012-05-29FT232RLの問題FT232RLが認識しないという問題があった。 [89967.666991] usb 6-1.2: FTDI USB Serial Device converter now attached to ttyUSB0 [89971.127451] usb 6-1.2: usbfs: interface 0 claimed by ftdi_sio while 'brltty' sets config #1 [89971.127954] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [89971.127962] ftdi_sio 6-1.2:1.0: device disconnected どうも「brltty」というのが悪さをしているらしい。 # killall brltty とやったらこの問題は解決された Arduinoの問題continue form: [Arduinoのブートローダーをコンパイル]
前の記事でプログラムを書き込めないのはハードには問題なさそうと書いてしまったけど、実際には恥ずかしながらハードに問題があった TTLレベルで入力するところにRS-232Cレベルで入力してしまっていた。 avrdude: stk500_recv(): programmer is not responding って出るはずだ。 なぜこんなことになったかと言うとUSB経由でFT232RLで書き込む予定だったけど、FT232RLが認識しなかったので、USB-シリアル変換ケーブルで書き込みしてしまっていた。 それでも昔のボードに書き込めそうな雰囲気が出ていたので、気づかずに使ってしまっていた。 FT232RLを認識するようになったのでFT232RLから書き込んだら何の問題もなく書き込めた。 Category: [Arduino] - 11:43:50
Arduinoのブートローダーをコンパイル久しぶりにArduino互換ボードを作り、ブートローダーを書き込んでArduino IDEからプログラムを書き込もうとしたら avrdude: stk500_recv(): programmer is not responding というエラーが出て書き込めない。 ためしに以前作ったボード(動いていたボード)で試したが、今度は avrdude: stk500_getsync( ): not in sync: resp=xxxx というエラーが出てやはり書き込めない。 その以前作ったボードに再度ブートローダーを書き込んだら avrdude: stk500_recv(): programmer is not responding と新しいボードと同じエラーがでた。この辺でどうもハードの問題っぽくないかもと考えた。 もしかするとArduinoのバージョンが変わったためにうまくいかないのかと思い、再度ブートローダーをコンパイルした。ブートローダーのコンパイルに関しては、ここにまとめている ところが新しくコンパイルしたブートローダーを書き込もうとするとエラーが出て書き込めない。 以前はちゃんとコンパイルできて、ちゃんと書き込めたのに今はできなくなっている。 結局ブートローダーのコンパイルに関してはHow to: Compiling the Arduino Bootloader #if defined(EEPE)
while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete
#else
while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete
#endif
/*
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__)
while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete
#else
while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete
#endif
*/
と変える。これは「error: ‘EEWE’ undeclared」というエラーを出さないようにするため そしてMakefileの52行目付近で OPTIMIZE = -Os # OPTIMIZE = -O2 と変える。これは上述したコンパイル後のhexファイルが以前のものの2倍近くになっているという問題を解決してくれる。 で、このようにコンパイルしたブートローダーを書き込むとうまく行く。 しかし、相変わらず avrdude: stk500_recv(): programmer is not responding というエラーが出てArduino IDEからプログラムを書き込むことができない 以前うまく行ったときとの違いはArduinoのバージョンとかavrdude関連だと思う continue on: [Arduinoの問題]
広告 |