RCカーのラップと時間の自動計算システム

少し前に、アナログAMBを収集しました。それはMyLapsです。 知らない人にとっては、これはラジコンモデル、ゴーカート、モータースポーツのサークルを数える非常に洗練されたシステムです。 MyLapsの完成したキットのコストは宇宙的なものです。 私の仕事は、クローンまたは最も互換性のあるクローンを作成することでした。 私が今持っているもの。



背景



少し前まで、私は積極的に自動モデリングに関与していました。 時々、私は最寄りの都市で多かれ少なかれ大規模な競技に出かけ始めました(もちろん、ウラジミール、ザレチヌイ、もちろん夏にチュメニに行きたいです)。 いくつかの写真、私は品質について謝罪します:







要するに-このスポーツは非常に引っ張られました。



すぐに、サークルを数える独自のシステムを作成する方法について考え始めました(以降、本文では彼女の呼び方は「セリフ」です)。 最初の試みはRFIDタグに基づいて実装され、アクティブなものに作り直しました。 アイデアはまあまあです。 パス幅全体をカバーし、衝突を避けるために、いくつかのデコーダーといくつかのループが必要でした。



ラベル自体:



搬送周波数は125 kHzから500 kHzに増加しましたが、特に結果はありませんでした。

活発なグーグル検索の後、 私はrctech.netに投稿を見つけました。 ハワードも何かを始めました。 使用した検出器と増幅回路もレイアウトしました。



すでにここで、私はオリジナルのAMBトランスポンダーで動作し、自作のデコーダーを作り始めました。 そして、彼のWiFiベースのインターフェースを作りましたが、プロジェクトはこれまでのところ腐敗しています:







今何を持っていますか



そのようなブラックボックスデコーダは次のとおりです。



そのようなスカーフの中:



ループアンプ:



検出ループ自体:



そしてトランスポンダー:





今日は、トランスポンダーがどのように動作し、100 µsで13バイトの識別子を非常に高速に送信するかをより詳細に検討したいと思います。



トランスポンダー



これは元のトランスポンダーがどのように見えるかです:

AMBrc dp



MRT(AMBクローン)



AMB RC4ハイブリッド



ハワードトランスポンダーは次のようになります。





そして回路:



それらに関するより詳細なトピックはrctech.netにあります。 興味があれば-読んでください。



私は彼らの工芸のスキームから始めます:



と写真:





最初に目を引くのは、ボードの周りのコイルです。 これはアンテナと呼ばれます。 図では、これはL1です。 共振のために、100pFのコンデンサがそれに接続されています。 元のAMBトランスポンダーのキャリアは5 MHzです。 データ転送方式はBPSK、つまり位相シフトです。 おそらく、わかりやすくするためにいくつかの波形を示します。









そしていくつかのハワード波形:









ハワードは、最新の波形について、まだアナログの位相シフト検出器をテストしているようです。



電源回路に関しては、5V LDOスタビライザーは高価であるため、5.1Vで200オームの抵抗とツェナーダイオードを使用できます。



Attiny25をコントローラーとして使用する理由はいくつかあります。



1.組み込みの64 MHzジェネレーター。これは役に立ちません

2. DebugWireプログラミング

3. 20 MHzで動作します。

4.興味深いPWM動作モードがあり、これは私にとって便利です。



興味深いPWMモードから始めます。







5番目と6番目の脚を逆位相で動作させることができ、これにより外部の不要なストラップの一部が削除されます。

タイマーの初期化:



// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 20000,000 kHz // Mode: PWMA top=OCR1C // OC1A output: Non-Inv., /OC1A connected // OC1B output: Disconnected // Timer1 Overflow Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off PLLCSR=0x00; TCCR1=0x51; GTCCR=0x00; TCNT1=0x00; OCR1A=2; OCR1B=0x00; OCR1C=3;
      
      







これにより、タイマーが5 MHzで動作し、PWM出力で矩形パルスが生成されます。



情報の各ビットは800nsごとに送信され、これは20 MHzで16マシンクロックサイクルです。 このような高速転送を実装するには、コードを送信する前に、各ビットをメモリの個別のバイトに書き込む必要がありました。 別の簡単な方法は思いつきませんでした。



送信された13バイトのうち、最初の2バイトは常に0x79 0x16です。 ハワードはそれらを前文と呼んでいます。 これらのバイトは後で便利になります。 これらのバイトで、FPGAは有効な信号を生成し、ラベルがループを通過したことをコトラーに通知します。



したがって、残りの11バイトを転送する前に、88バイトのRAMに分散させる必要があります。



 do { if (RFID_Buffer_ee[RFIDBufferPtr]&mask) { buffer[RFIDBit_Count]=1; } else { buffer[RFIDBit_Count]=0; } mask>>=1; if (!mask) { mask=0x80; RFIDBufferPtr++; } RFIDBit_Count++; } while (RFIDBit_Count<TransBuffSize);
      
      







最初の2バイトを転送してもあまり賢くはなりませんでした。



  //  TCCR1=0x51; // 8 delay_us(8); //transmit 0x79 0x16 NoPhaseChange NOP PhaseChange NOP PhaseChange NOP PhaseChange NOP PhaseChange NOP NoPhaseChange NOP NoPhaseChange NOP PhaseChange NOP NoPhaseChange NOP NoPhaseChange NOP NoPhaseChange NOP PhaseChange NOP NoPhaseChange NOP PhaseChange NOP PhaseChange NOP NoPhaseChange #asm("nop"); #asm("nop");
      
      







ただし、PhaseChangeとNoPhaseChange自体です。 フェーズを変更するには、4メジャーのタイマーをオフにしてオンにします。 タイマーレジスタの値の各レコードだけに2サイクルかかります。 まあ、何もしないためには、4つの措置を待つだけです。



 #define PhaseChange TCCR1=0x50; TCCR1=0x51; #define NoPhaseChange #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #define NOP #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop"); #asm("nop");
      
      







したがって、最初の2バイトの送信は非常に馬鹿です。



実際、残りの11バイトの送信:



 for (i=0;i<TransBuffSize;i++) { if (!buffer[i]) { #asm("nop"); #asm("nop"); #asm("nop");} else { TCCR1=0x50; TCCR1=0x51; }; }
      
      







ここでは、他の場合は1マシンサイクルが削除されます。



BPSK検出器の後の信号は次のようになります。







ちなみに、各コードの転送間隔は1msから2msまでランダムに変化します



論理的な問題は、何を伝える必要があるかです。 プロトコルについては後で説明しますが、今のところ、私が持っている元のトランスポンダーのコードを提供します。



 //flash char RFID_Buffer_ee[BuffSize]={0xEF,0xD4,0xFE,0xF6,0xE1,0xD1,0x22,0xCD,0xCC,0x3C,0}; //9887001: //flash char RFID_Buffer_ee[BuffSize]={0x3B,0x21,0xC7,0x1F,0xF7,0xFE,0x3E,0xFE,0xC3,0x3F,0}; //9577130: flash char RFID_Buffer_ee[BuffSize]={0x0D,0xAE,0xAD,0xB2,0x49,0x89,0xB9,0x64,0xB3,0x33,0x48}; //8087916: //flash char RFID_Buffer_ee[BuffSize]={0x00,0xEF,0x35,0xEF,0x0E,0x26,0x0A,0xD8,0x3F,0xCF,0x48}; //8110984: //flash char RFID_Buffer_ee[BuffSize]={0xE1,0x2A,0xD9,0xE1,0xEE,0xD9,0x4E,0x07,0x83,0x0F,0x40}; //5495805: //flash char RFID_Buffer_ee[BuffSize]={0x35,0xD1,0x1E,0x21,0x2A,0x10,0x5D,0xd0,0x7F,0xCF,0x40}; //3472238: //flash char RFID_Buffer_ee[BuffSize]={0xDA,0xE4,0x2B,0x24,0x27,0xEF,0x87,0x31,0x4F,0x33,0x00}; //8959711: //flash char RFID_Buffer_ee[BuffSize]={0xD4,0x14,0xC7,0xCB,0xDF,0xD6,0x9A,0x17,0xBF,0xF0,0x40}; //8361115 //flash char RFID_Buffer_ee[BuffSize]={0xDA,0x0B,0x2B,0x14,0xFC,0xC7,0x2C,0xC2,0xF3,0x03,0x04}; //8718039:
      
      







送信されたコードとトランスポンダー番号の関係が見つかりませんでした。 オリジナルのセリフAMBrc3を使用したトランスポンダーのクローンは、次のように機能します。お互いが見えたら、停止します。 問題はまだ追加送信された情報にあると思われます。



 EC84418105A6B5BD70CF0000 E12AD9E1EED94E07830F4001 E12AD9E7EED94E07C30F4002 E12AD9E1EED94E07830F4002 38A8F9C1ECA67A7E4FCC4002 E12AD9E1EED94E07830F4002 E12AD9E1EED9CE07830F4000 E12BDBE1EED94E07830F4000 E12AD9E1EED94E07830F4000 E12AD9E1EED94E07830F4001 E27B5E0BC356B9B98CC24001 E12BD9E1EED94E07830F4001 F12AD9E1EED94E07830F4000 E12AD9E1EED94E07830F4002 E12AD9E1EED94E07830F4002 E242145FC145858D4CCF0023 E12AD9E1EED94E07830F4000 E12AD9E1EED94E07830F4004 D417A27CD8B9BA4E40CC4002 E12AD9E1EED94E07830F4002 E12AD9E1EED94E07830F4023 E12AD9E1EED94E07830F4000 E12AD9E1EED94E07830F4000 E12AD9E1EED94E07830F4000 E12AD9E1EED94E07830F4000 E12BD9E1EED94E07830F4001 E12AD9E1EED94E07830F4002 E12AD9E1EED94E07830F4002 E12AD9E1EED94E07830F4000 3B14155CCA79B54D73000002 E12AD9E1EED94E07830F4002 E243145FC145858D4CCF0000 E12AD9E1EED94E07830F4000 E12A58E1EED94E07830F4002 E12AD9E1EED94E07830FC000
      
      





干渉のために見えにくいですが、識別子(E12AD9E1EED94E07830F40)を持つ3つの区画ごとに、追加情報(D417A27CD8B9BA4E40CC40)を含む別の区画が送信されます。

競技会ではトランスポンダーしかチェックできないという事実によって、すべてが複雑になっています。 約4,000ユーロのセリフコストで、誰も私に遊びを与えません。



競技会ではトランスポンダーしかチェックできないという事実によって、すべてが複雑になっています。 約4,000ユーロのセリフコストで、誰も私に遊びを与えません。



エミュレーション用のファイル



プロテウスでどのように機能するかを見たい人のために、 私はここで質問





結論の代わりに



次の記事では、BPSK検出器について少し説明します(回路の半分はrctech.netから取得され、FPGAに詰め込まれます)が、デコーダーのソフトウェア部分については詳しく説明します。 Rs-232で動作するAMB20およびAMBRcプロトコル、元のAMBトランスポンダーとの互換性の実装方法について説明します



All Articles