
市販のARMマイコンについての質問です
ヴイストン株式会社のビュートローバーARMという商品Ⅽ言語の学習のために使っています、
ロータリーエンコーダを取り付けてモーターの回転数を測り、速度を調整しようとしたのですが
本に載っているサンプルと同じようにプログラムを写してもうまく動きません
(前後にカクカクした動きで前に進まない)
自分でもプログラムが少しおかしいような気はするのですが、色々ためしても上手く動きませんでした
もしわかる方がみえたら、アドバイスお願いします
本に載っていたサンプルのコードです
int main (void)
{
//制御周期の設定[単位:Hz 範囲:30.0~]
const unsigned short MainCycle = 60;
Init(MainCycle);//CPUの初期設定
InitEncoder();
ClearEncoder();
LED(3);
while(getSW() != 1); //ボタンが押されるまで待つ
while(getSW()== 1);
while(1){
//エンコーダの値を格納する変数
long L_enc_cnt,R_enc_cnt;
//速度を格納する変数
double L_speed,R_speed;
//1週前のエンコーダの値を格納する変数
static long Old_L_enc = 0,Old_R_enc = 0;
//モータ出力変数
static short mtr_out_L = 0,mtr_out_R = 0;
Sync();
//エンコーダ値を取得
GetEncoder(&L_enc_cnt,&R_enc_cnt);
//エンコーダ値から速度を速度を算出
L_speed = (double)(L_enc_cnt - Old_L_enc)* 0.173*60.0;
R_speed = (double)(R_enc_cnt - Old_R_enc)* 0.173*60.0;
//加速させる速度を求め、モータ出力に加算(積分)
//目標は60mm/secゲインは5.0とする
mtr_out_L += 5.0*(60-L_speed);
mtr_out_R += 5.0*(-60-R_speed);
//モータの速度を設定
Mtr_Run_lv(mtr_out_L,mtr_out_R,0,0,0,0);
//次の周期のため現在のエンコーダ値を変数に代入
Old_L_enc = L_enc_cnt;
Old_R_enc = R_enc_cnt;
}
}
あまり詳しいことはわかりませんので少し説明に誤りがあるかもしれません
質問があればわかる範囲でお答えさせていただきます
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
APIの仕様と各値の単位(次元)が分からないと答えられないと思います。
雰囲気的にはGetEncoder()がモータのステップ値の取得、
Mtr_Run_lv()がモータの位置指令でしょうか。
>(前後にカクカクした動きで前に進まない)
素人考えではあり得るかなと思うのは、目標位相を指定するのであれば位置(位相)の指定が間違っている(360°回って後ろになっているとか)とか、相対的な位相を指定するのであれば与える入力値がゼロ付近でプラスとマイナス交互に与えられてしまっているとかかなと思います。
キットの中にシミュレータとかないのでしょうか。
指令値を確かめる手段がないと原因を特定しづらいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- イヤホン・ヘッドホン・補聴器 こちらのイヤホンですが、少し前からずっとAmazonでランキング1位でして、信じられないぐらい安くて 4 2023/08/11 21:28
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- 扇風機・冷風機・サーキュレーター サーキュレーターのスイッチのボタンが全部沈んで上がって来なくなりました。他はまったく問題ないので直し 3 2023/07/19 12:08
- 工学 UCHIDA製、小型電動ロクロに使われているモータは? 3 2023/07/01 18:40
- その他(パソコン・スマホ・電化製品) windows 2000のスロットにGPIBカードを装着できますか。 1 2022/09/10 21:47
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでのself.print()作成について
-
Java Silverサンプル問題について
-
「すでに開かれている」の意味...
-
System.out.printで空文字
-
ファイル書き込みに関して
-
JAVA CSV加工について
-
Eclipseのコンソールを常に表示...
-
VHDLでこんな事できますか?
-
tomcat5.5のログファイル名称の...
-
java勉強中に、ユニコード、エ...
-
1~100までの数字を表示したい
-
flush()とclose()について
-
double型の減算がうまくいかない
-
ダブルクォーテーション(””)...
-
GIF画像生成
-
Log4Jではログを改行できない?
-
System.err. printlnとSystem.o...
-
javaプログラムの実行時間
-
CSVファイルへ出力
-
Javaで改行などが出来ないのです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
Javaで改行などが出来ないのです。
-
1~100までの数字を表示し、か...
-
system.out.printが出力されない
-
1~100までの数字を表示したい
-
System.out.printlnの出力先
-
一定のスペースを空けて端を揃...
-
flush()とclose()について
-
Log4jで機能毎に別ファイルへ出...
-
Tomcatが無応答となる現象が起...
-
行列の表示
-
InputStreamはreadが1回しかで...
-
数字文字列をパック10進数に変...
-
switch分が機能しません。
-
System.out.printlnの意味がよ...
-
JavaScriptの変数をjavaのメソ...
-
Log4Jではログを改行できない?
-
テキストエリアで改行する
-
【SQLServer接続のJSPの記述を...
-
CSVファイルへ出力
おすすめ情報