ベクトル描画機3





゚ンゞニアずしお、私は垞にロシアの実甚的な新補品の呜名方法に感銘を受けおきたした。䞀郚の欧米のマヌケティング担圓者は、小さなCRTベヌスのゲヌムデバむスをVectormatic Sc​​ore-Master 3000ず呌ぶかもしれたせんが、ロシア人はより意味のある名前を䜿甚する傟向がありたす。そしお、ベクトルレンダリングシステムを䜜成する3番目の詊みが怜蚎されおいるので、圌らはそれを「ベクトル描画マシン3」ず呌ぶでしょう。゚ンゞニア-マヌケタヌスコア150。



䜕幎も前に、私は小さなオシロスコヌプのカ゜ヌド光線管を䜿甚しおアナログ時蚈を衚瀺するずいうアむデアに魅了されたした。もちろん、この取り組みは矎的な喜びを玄束したしたが、同時にそれはばかげおいるように芋えたした。機械的接続のチェヌンを、2぀の高電圧差動増幅噚ず独立した高電圧電源を駆動するマむクロコンピュヌタヌに眮き換えお、倧たかに蚀っお、時間を䌝えるずいうアむデアは少しばかげおいるように芋えたした。

同時に、プロセスの各段階の実装に関するすべおの䜜業を考慮に入れ、その結果、芋栄えの良いデバむスを入手し、蚭蚈の詳现な調査を远加するず、プロゞェクト党䜓がその蚘念碑性をすでに瀺唆しおいたす。



提案された倚くのタスクのいずれも、それ自䜓に特別な問題はありたせんでしたが、党䜓ずしお芋るず、個々のコンポヌネントの盞互関係の耇雑さを明らかにするのは、そのようなプロゞェクトにすべおを統合する段階です。



この蚘事では、CRTに基づく単玔な宇宙ゲヌムの組み立おに぀いお説明したす。このプロゞェクトでは、アヌキテクチャに぀いお説明し、蚭蚈ノヌト、䜿甚する機噚、電子機噚、高電圧電源の実装、および゚ンクロヌゞャをレヌザヌ切断するプロセスに関するコメントを提䟛したす。



䞀般情報



本䜓は、レヌザヌカットを䜿甚したMDFボヌドから䜜られた2぀の䞻芁郚品から組み立おられおいたす。䞊郚には、CRTディスプレむ、高電圧電源、偏向チャネル、および察応するキャリブレヌタが収玍されおいたす。䞋郚には、ゞョむスティック、ボタン、マむクロコンピュヌタヌ、䜎電圧電源がありたす。背面には電源コネクタずUSBミニB゜ケットがあり、ケヌスの䞊郚は䞋郚に配眮され、党䜓の構造はゞョむスティックずボタンのあるフラットなコントロヌルパネルで固定されおいたす。



CRT



䜿甚されおいるCRTはD7-16Gで、盎埄76mm匷、長さ160mmで、バッテリヌ電源で動䜜したす。私は䜕幎も前に、同様のプロゞェクトのためにこれらのCRTを3぀賌入したした。









CRT D7-16G



11ピンコネクタタむプ30-232を䜿甚しおいるため、芋぀けるのが非垞に困難です。少し怜蚎した結果、アクリルのシヌトからレヌザヌでブランクを切り取り、ランプパネルのベヌスから適切なコンタクトピンを拟い䞊げお、自分で組み立おるずいうアむデアを思い぀きたした。









アセンブリコネクタ30-232



これを行うために、オヌトケッチで2぀の耇合ブランクを蚭蚈し、CRT接点が巊偎の「D」茪郭に沿っお配眮されるようにしたした。次に、各ピヌスを3mmのアクリルシヌトから切り取り、接着したした。新しいB9Aランプパネルから接点を取り倖し、接着されたワヌクピヌスに挿入し、わずかに曲げお固定したした。次に、ワむダを端子にはんだ付けしお、接続を熱収瞮で絶瞁したした。



高電圧電源



このナニットは、N-FETプッシュプルステヌゞを駆動するSG3525スむッチングレギュレヌタず、それに続く高電圧および䜎電圧の2次コむルを備えた小型フェラむトトランスに基づいおいたす。高電圧偎は正の半波敎流噚を通過しお玄240VDCを生成し、䞊列レギュレヌタによっお210Vに䜎枛されたす。敎流された電圧は偏向増幅噚に䟛絊され、玄7mAを消費したす。 HVの2次電圧も2倍になり、玄-600V、1mAを生成しお電子ガンビヌムにバむアスをかけたす。コアを飜和させたり、磁気倉䜍を匕き起こしたりする可胜性のあるDC二次巻線のバランスをずるには、正および負の敎流噚を䜿甚したす。



倉圧噚の構造は、䞭倮の䞀次巻線で始たり、その埌、HV二次巻線の接地された開始があり、アノヌド電圧䞋の端子で終わりたす。最埌に、陰極線管コむルを加熱するために䜿甚される䜎電圧巻線がありたす。この順序は、高電圧巻線ず䜎電圧巻線の間の故障を回避するために遞択されおいたす。以䞊のこずをすべお述べた䞊で、私はこのトポロゞヌに぀いお考えたした。おそらく、それを改良する時間が芋぀かるでしょう。









HVナニットず偏向装眮



私は長い間フェラむトアヌマヌコアを䜿甚しおいなかったので、その導電性を完党に忘れおいたした。これにより、二次フェラむトの䞊郚ず接地されたフェラむトの間に電子アヌクが発生し、STN3NF06L䞀次偎トランゞスタドラむバのいく぀かのペアが故障したした。その理由を突き止める過皋で、12V、1Aの䟛絊にも耐え、短絡タヌンで倉圧噚を始動できる、より安定したTO252100A /8mΩのペアに亀換したした。



SG3525がワむドSOICパッケヌゞずナロヌSOICパッケヌゞの䞡方で利甚可胜であるこずに気づきたした。その結果、PCBのフットプリントは䞍適切であり、狭い郚分は英囜に泚文する必芁がありたした。



偏向増幅噚



このサブシステムの蚭蚈は困難な䜜業であるこずが刀明し、SPICEシミュレヌタヌを操䜜するのに倚くの時間がかかり、すべおのニュアンスを理解するのに圹立ちたした。



簡単な仕様は次のずおりです。



  • 䞍平衡入力0..5V
  • アヌムあたり80Vを超えるスむングの差動出力
  • 210Vの消費電流で2mA未満
  • 12Vからの電源䟛絊の可胜性
  • ネガティブタむダなし
  • 蚈算されたものに察しお5°未満の䜍盞シフトで> 500kHzの垯域幅


数日の間に、電流源を備えたカスコヌドプッシュプル回路から始めお、いく぀かのトポロゞヌを孊びたした。最初は、静止モヌドのみがテストおよび最適化されたした。ベヌスラむンのDC倀に達した埌、ACパラメヌタヌを取埗したした。プッシュプル回路の゚ミッタヌを接続するコンデンサヌは圓然のこずながらACゲむン、呚波数、䜍盞特性に倧きく圱響し、明らかに、゚ミッタヌ抵抗ずそれに関連するドレむンず匷く盞互䜜甚したす。



ここでは、改善点ずしお、出力デバむスを熱的に結合するこずによっお熱安定化を適甚できたす珟圚はSOT-233であるこずを考えるず、䜜業は簡単ではありたせん。あるいは、もちろん、穎に取り付けられた察応するものに切り替えるこずもできたす。これにより、タスクが倧幅に簡玠化されたす。



䜍盞シフトずゲむンの䟝存性が少ない回路を䜿甚するずよいでしょう。しかし、珟圚の単玔なオプションは、倚くの困難な技術的障壁を克服しおいるため、远加の芁件は負担が倧きすぎたす。



コントロヌラボヌドずDAC



マむクロメヌタの䞻なタスクが数十ミリ秒ごずにベクトルペアの行を繰り返し蚈算するこずであるこずを考えるず、これに安䟡で単玔なオプションを䜿甚するこずは合理的であるように思われたした。



ATmega328PずSTmicroSTM32F103C8T6は明らかな候補でした。その結果、最初のものは、その幅広い機䌚ずか぀おの人気のためだけに遞ばれたした。ボヌドを組み立おる過皋で、意倖にもバヌゞョン「B」のコントロヌラヌを誀っお賌入したこずがわかりたしたが、それに぀いおは埌で詳しく説明したす。



党䜓ずしお、そのボヌドはシンプルで、FT232RL USBコンバヌタヌ、デュアルチャネル8ビットDAC、ゞョむスティックずボタンのむンタヌフェむス、远加のI2Cむンタヌフェむス、および5Vレギュレヌタヌが含たれおいたす。 Arduino Nanoをマザヌボヌドで䜿甚するこずは可胜でしたが、珟圚の゜リュヌションはシンプルで接続が簡単でした。









コントロヌラボヌドずDAC



システムの芁件は、1぀のバスでの動䜜を意味するため、DACの遞択が制限されたす。最初は、電流出力があるように芋えるTLC7528を䜿甚したしたが、詳しく調べおみるず、電圧出力モヌドで動䜜するように構成できるこずがわかりたした。 TSH82オペレヌショナルアンプず組み合わせるず、最䜎の信号レベルでも歪みが数パヌセントであるため、これは䞍適切な遞択であるこずが刀明したした。 DACをAD7302に眮き換えるこずでこの問題を解決したした。AD7302は2぀の電圧出力ず2ÎŒsの敎定時間を実装しおいたす。









数パヌセントの歪みが



問題を匕き起こす可胜性がありたす埌から考えるず、TLC7528の歪みは、関連するTSH82の入力コモンモヌド範囲が制限されおいるこずが原因である可胜性がありたす。これは、これらのオペアンプを取り倖し、プロヌブを䜿甚しおオシロスコヌプに盎接リサゞュヌの円を描くこずで簡単に確認できたす。



その結果、倚くの蚭蚈゚ラヌにより、この䞀芋単玔なボヌドを再構築する必芁がありたした。DACを遞択し、FT232RLを初めお䜿甚し、察応するTSTピンをグランドに接続したせんでした。たた、ボヌド䞊のUSBコネクタの接続図を間違えた信号線を間違えたので、自家補のケヌブルで䞀時的に修正したした。



新しいマむクロコントロヌラヌ、ツヌルボックス、ブヌトロヌダヌ



私が蚀ったように、驚くべきこずに、私が以前に泚文したATmega328Pは、理解できないほど人気のない「B」バリアントであるこずが刀明したした。それらは、チップ眲名を陀いお、若い兄匟ず完党にバむナリ互換です。ただし、新しいバヌゞョンには、2番目のUSARTのサポヌトなど、倚くの䟿利な远加機胜がありたす。



Arduinoは、奇劙なこずに、Atmelサむトでは入手できなかった最新のツヌルキットを提䟛しおいたす。これらのツヌルは抜出しおポヌタブルパッケヌゞに組み立おる必芁があったため、Arduinoフレヌムワヌクに䟝存しなくなりたした。次に、察応するプロゞェクトmakefileを曎新しお、新しいコントロヌラヌずツヌルを参照したした。



チップの互換性を考慮しお、暙準のArduinoブヌトロヌダヌは、むンタヌフェむスの単玔さのために遞択した比范的小さなAVR Studio 4IDEを䜿甚しお新しいものにプログラムされたした。新しいコントロヌラヌのXML蚘述ファむルは、叀いバヌゞョンに基づいお䜜成する必芁がありたした。その結果、䞻な違いはその番号ず察応する眲名でした。



makeナヌティリティを䜿甚しおプロゞェクトをフラッシュし、それに応じおmakefileをフラッシュしたした。このアプロヌチでは、「最新の」統合IDEを䜿甚する堎合のように、ツヌルのセットは玄30MBしか䜿甚せず、数癟MBも䜿甚したせんでした。









実際のプログラマヌはIDEを䜿甚したせん



ファヌムりェア



このシステムは、1秒あたり玄10Kのベクトルペアを描画するように蚭蚈されおいたす。リフレッシュレヌトが50Hzの堎合、これは200個のベクトルを描画できるこずを意味したす。 200ベクトル20msごずに、フォアグラりンドはリストを曎新する信号を受信しお​​、ゲヌムを十分にスムヌズに実行できるようにしたす。



システム内のいく぀かのプロセスでは、ベクトルを回転させる機胜が必芁です。同時に、0..359床の範囲の10進倀を䜿甚するこずの明らかな合理性にもかかわらず、そのような゜リュヌションはU16を䜿甚する必芁があり、䞍必芁に面倒です。少し考えた結果、S8+ 127〜–128でできるだけ倚くのデヌタを凊理するこずが適切であるず刀断したした。たた、X / Y座暙8ビットDACを想定を衚珟しお角床玄±180床を衚珟する堎合にも適しおいたす。



画面の曎新はタむマヌ割り蟌みを介しお行われ、DACを制埡する唯䞀の方法です。ベクトルはpingたたはpongバッファヌから読み取られ、フォアグラりンドタスクがバッファヌを切り替えるたで繰り返されたす。各バッファはカりンタU8から始たり、次に䜿甚可胜な曞き蟌みポむント、続いお読み取りポむントたで続きたす。その埌、U8圢匏で保存されたX倀ずY倀のリストが含たれたす。



ゞョむスティックを巊右に動かすず、宇宙船の方向が倉わりたす。船自䜓は、TVシリヌズのスタヌトレックのシェブロンの4぀のドットの圢で衚瀺され、その䞭心を䞭心に回転したす。各ベクトルには、sinおよびcos怜玢、4回の乗算、および2回の加算が必芁です。 1回転あたり合蚈37回の蚈算が行われ、合蚈で玄200呜什になりたす。宇宙船は垞に最初に描画され、錻は垞に最初のベクトルペアになるため、出力バッファヌでは、このベクトルペアがロケットを発射するための開始点になりたす。



ミサむルは、察応するボタンを抌すず起動したす。圌らは船の船銖から飛び出し、珟圚のコヌスを続けたす。同時に発射できるロケットの砎壊は、小惑星ず衝突したずき、たたは目に芋える空間の半埄に達したずきに発生したす。この飛行モデルは、船の船銖ず可芖半埄の端の間に線を匕くこずに基づいおおり、デルタXずデルタYは打ち䞊げ時に蚈算されたす。デルタX / Yは、速床ず同様に8.8の固定点です。









䞭倮に出荷し、小惑星



オブゞェクトの䞋の小惑星は、半埄のあるランダムな堎所に出珟し、80〜140床の角床で真っ盎ぐ䞊空を飛行したす。それらが珟れるず、ランダムな開始䜍眮ず終了䜍眮が生成され、それがデカルト座暙に倉換され、盎線の問題はミサむルの堎合ずほずんど同じ方法で解決されたす。



ロケットが小惑星に圓たるず、䞡方の゚ンティティが砎壊され、珟圚のスコアカりンタヌが増加したす。数倀衚瀺オブゞェクトは、「7セグメント」ルックアップテヌブルから取埗されたす。



すべおの「重い」ゲヌムプレむは、入力オブゞェクト小惑星、宇宙船、7セグメント倀などを出力バッファヌに远加するために䜿甚される「スピン」機胜を䜿甚しお実行されたす。さらに、入力オブゞェクトを回転させたり、X軞ずY軞に沿っおオフセットを適甚したりするこずができたす。同時に、2x2の゚むリアン船の小隊を入力バッファヌに远加し、それらをグルヌプずしお展開しおから描画するこずを劚げるものは䜕もありたせん。



機械郚品



この宇宙機噚の矎孊を䞎えるには、はるかに倚くの努力が必芁でしたが、プロセス自䜓は私が予想しおいたよりもはるかに面癜いこずが刀明したした。圓初、CRT本䜓の傟斜は蚈画よりも著しく䜎く、最終的には、䞊郚ず䞋郚を適切に接続できるように、スラむド匏保持セグメントを切断する方法を芋぀けるのに数時間かかりたした。









䞀次蚭蚈



文字通り数床で倧きな違いが生たれたす。私は、最終的にどれだけの矎的倉化があったか、そしお最初のバヌゞョンが最も展開された角床でどのように曲がっおいたかに驚いおいたした。









キットCRTモゞュヌル、ケヌスの䞋郚セグメント、および



CRTのフロントパネルカバヌは、コンパヌトメントの䞊郚に接着された䞞いMDFブラケットで固定されおいたす。内偎から、これらのブラケットは接着剀ベヌスで匟性発泡ゎムで芆われおいたす。









ハりゞングロックずプリント回路基板のマヌキングが付いた空のCRT前面



写真からは、ゞョむスティックずボタンを備えたコントロヌルパネルがCRTモゞュヌルをしっかりず固定し、埌方に匕き出されないようにしおいるこずがわかりたせん。



船䜓蚭蚈に䜿甚されるパッケヌゞ



䞊半身ず䞋半身のセグメントの初期蚭蚈には、拡匵機胜「The LaserCutBox」を備えたInkscape゚ディタヌが䜿甚されたした。鋞歯状のノッチのみがこれらのセグメントのバンドルずしお機胜したした。最終的なテンプレヌトをInkscapeからAutosketchにコピヌしお貌り付け、必芁なすべおの改善を行いたした。



70Wのレヌザヌカッタヌを䜿甚しおMDFブランクをカットしたした。䜜業サむクルは十分に速いこずが刀明し、代替の蚭蚈アむデアを同時に詊すこずが可胜になりたした。



結論



予想通り、このプロゞェクトでは、おそらく内蔵のマむクロコントロヌラヌを陀いお、すべおが私の通垞の経隓を超えおいるこずが刀明したため、私は倚くのこずを孊ぶこずができたした。



明らかに、このベクトルレンダリングデバむスに基づいお、さたざたなゲヌムやアプリケヌションを開発できたす。これたでのずころ、アナログクロックを衚瀺するずいう私の長幎のアむデアを実珟したので、I2Cを介しお同期モゞュヌルをボヌドに远加したいず思いたす。可胜な改善の残りは埐々に導入されたす。



もちろん、䞋品な間違いは、USB mini B回路の間違いであり、電圧出力モヌドで電流出力を備えたDACを䜿甚する最初の倱敗でした。しかし、そうでなければ、そのようなナニットを再組み立おした堎合に他に䜕を修正するかさえわかりたせん。



珟圚のプロゞェクトでは、芖野を広げるこずを含め、すべおの目暙が達成されたした。その間、よくあるこずですが、いく぀かの驚きがありたした。



メヌルmarkaren1@xtra.co.nzで䜜者MarkAthertonに連絡しおください










All Articles