n_shinichi’s blog

日々の備忘録、 趣味のあれこれなど紹介 (すみません、メニュー、リンク、カテゴリー分けがうまくできてません、★記事一覧★で見てください...) NHK魔改造の夜ではDンソーのベテランアドバイザーってことで出ました♪

MENU

ハーフインチサイズ マイクロロボ作る♪ モータ制御検討ボードできた! コイル駆動動作確認

先回のATtiny3217はちっぷが小さいので

 ブレッドボードにマイコン仕立てて使いやすいように準備した。

 でも3217はなんかよくわからんことになったのでしばし保留...として

 次のマイコンはATtiny1614。

 こちらはチップがでかい。4x9mmほどあって3217の2倍サイズ。

 

でもって足つきSOPでもってピンが減ったからブレッドボードに

 準備するほどでもなくなった。

 

でもって作ったモータ制御検討マイコンボードがこちら。

ボードと言っちゃったけど基板物はなく

部品のリードで接続組んだ空中配線。

これは回路初心者にはお勧めできないです。

 悪い見本です。。。

とりあえず回路に仕立てるのは早いですが

配線の組み換えは面倒なので

回路変更が頻繁にある場合は不向きです。

 

リードが3次元で交差してるので

 取り扱いも十分注意が必要です。

 変に上から押すといろんなとこがショートします。。。

 

回路は、

先日の赤外線リモコンでLチカ の回路 に、振動モータを分解して

取り外したコアレスコイルを2個、Vf:2VのオレンジLED

で中性点負荷付けたのを2組。

コイル駆動はドライバレス。

必要に応じてPWMで負荷制限。

 

スケッチは定期点滅マイコン動作中確認LED(青) と、

コイル駆動のタイミングを各々独立で動かすので

TSS 【Time Sharing System】の仕組みを入れて

制御からdelay()関数を削除したものに変更です。

リアルタイム的に動作が必要な制御では

基本的にLoop()のなかではdelay()は使わない。

 

とりあえずはレジスタ使うとか割込み使うとか手間掛けて

負荷の小さい処理にはせず、ESPマイコンでやってる方法まんまを

移植してみた。

後々、ATtinyでは処理が重くて変えないといけない...かも。

 

ESPマイコンでよくやるTSSはこんな感じです。

unsigned long ms10,ms500;

char LED_sw;

setUP() {

}

void loop() {

 if (millis() >  ms10){

 

        10m毎に行う処理

        赤外線通信でコイルSW周期切り替え

 

   ms10+=10;

 }

 

 if (millis() >  ms500){

 

        500m毎に行う処理 たとえば 1sec周期Lチカ

   if(LED_sw == 1) {digitalWrite(LED_pin, HIGH);  LED_sw = 0;}

   else                    {digitalWrite(LEO_pin,  LOW);  LED_sw = 1;}

 

   ms500+=500;

 }

}

ちょっとしたことでメモリー消費が増えるの目立つ。

16kBしかないのは要注意、、、

これまでM5の4MBとかで使い慣れてたから気を付けないと。

モリーM5の1/200以下だな。。。

 

Lチカと赤外線通信(受信)だけでもう17%メモリ消費・・・

送信が入ってたら35%だった。

送信、しばし使わないので抜いてみたら17%まで減った。

 

演算もちょっと余計なことしてる。

けど、、、ひとにやさしい。

ESPマイコンではなんの問題もなく使えてたけど

処理能力、メモリがとても小さいATtinyでは

いずれ厳しくなるかも。

 

動作テストの様子です。