マイクロコントローラーなしでPWMを生成する最も簡単な方法は何ですか?


15

サーボモーターを制御するマイクロコントローラーなしでPWMを生成するための高速でエレガントな方法は何ですか?ポテンショメータまたはその他の方法で、固定周期でデューティサイクルを制御します。

  • 混乱してすみません、私は趣味のサーボを制御したいです。

サーボ制御システムの一部としてモーターを制御するという意味ですか、それとも「ホビーサーボ」を制御することを求めているのですか?私の答えへの追加を参照してください。
オリンラスロップ

1
なぜPWMが必要なのですか?PWMは、多くの場合、マイクロがアナログ制御機能を近似するための単なる方法です。本当に必要なのがアナログ電圧または電流である場合、おそらくそれを行うためのはるかに良い方法があります。
光子

2
@ThePhoton趣味のサーボを制御している場合、PWMは制御信号として必要です。
ニックジョンソン

固定期間の要件を削除する場合、デルタシグマ発振器は非常に簡単なソリューションになります。単一のオペアンプといくつかの抵抗器/コンデンサを使用した実装を見てきました。これは、RCサーボについて話していないことを前提としています。
ジッピー

1
@jippie-デルタシグマ発振器とは何ですか?デルタシグマADCには発振器が必要であることは知っていますが、実際にはコンバータ自体の一部ではないため、それは一般的なものであると常に思っていました。
-stevenvh

回答:


25

GASP!」555タイマーを「astable」モードで使用することをお勧めします。必要なものはすべてリンクで見つけることができますが、私はあなたのためにここにそれらをコピーしました!

非安定モードでは、可変PWM周波数が提供され、調整可能なデューティサイクルも可能になります(リンク内の高時間および低時間の方程式)。

回路:

555タイマー、非安定モード

注:電源電圧の低下の影響を減らすために、Vcc(正のリード)とGND(負のリード)の間に電解キャップを追加します。

PWM周波数:

非安定モードでの555タイマーの出力周波数

この投稿の他の人と比較して、私の答えに対するいくつかの弁護。他のほとんどの回答では、一般的な三角波/コンパレータ法など、可変PWM信号を生成するために中間波形が必要です。あなたの問題を解決するための中間段階として、三角波発生器(それ自体が重要な回路)を構築することにはあまり意味がありません。

555は優れたアナログチップであり、必要なことだけを行います。人々が彼らを嫌いにならないように。


2
私は555が好きですが、@ supercatは、単一の555では固定周波数の可変デューティ比信号を提供できないという点で正しいと思います。CはR1 + R2を介して充電され、R2を介して放電されます。R2を増やすと、オン時間とオフ時間の両方が増えるため、期間も長くなります。R1を増やすと、オンタイムだけでなく期間も増えます。Cを増やすと、期間を含むすべての時間を増やします。2つの555が必要です。1つは、非安定モードで周期を決定し、2番目の周期をトリガーして、単安定モードでデューティ比を決定します。
テラクラボ

5
「必要なものはすべてリンクにあります」。いいえ。それは適切な回答方法ではありません。ここに詳細を入力してください。
-stevenvh

1
私は555を嫌いではありません、私は人々がそれらをすべてのための最良の解決策として言及しないことを望みます。単一の555は、ホビーサーボを制御する最良の方法ではありません。
-stevenvh

1
@Telaclavo-あなたは正しいです。デューティサイクルを変更して周波数を一定に保つことはできません。ただし、WoutervanOoijenが言及しているように、サーボを実行するために厳密に固定された周波数は必要ありません。デューティサイクルを変更すると、パルス周波数に約10〜20%(概算)のウォブルが発生する可能性があります。これは、ほとんどのサーボで十分な精度です。繰り返しになりますが、サーボを制御するためにデューティサイクルを調整する必要はありません。
kevlar1818

2
@stevenvhウィキペディアが死んだとき私に知らせてください。たとえそうだとしても、ディーンが上記のコメントで示したように、555は(いたとしても)いたるところにあるので、古い本、小さなブログ、またはそれらに関する情報のある趣味のWebサイトを見つけるのは難しいでしょう。
kevlar1818

8

アナログ制御のデューティサイクルでPWMを実現するYe Olde Phashionedの方法は、アナログ制御信号を三角波と比較することです。目的のPWM周波数で動作する三角波ジェネレーターを作成します。これはコンパレータの負入力に供給され、アナログ制御信号は正入力に供給されます。結果はフルハイまたはフルローのいずれかですが、デューティサイクルは制御信号に直線的に比例します。たとえば、初期のクラスDオーディオアンプはこの原理に基づいて機能していました。

多くの場合、PWMは超線形である必要はなかったので、三角波は完全に直線のエッジを持つ必要はありません。それらを少し指数関数にすることで、回路を簡素化できます。

追加:

マークレイジスは、「サーボモーター」と言うときは、模型飛行機などで使用されている小さな位置制御ホビーモーターを指している可能性があると指摘しました。私の答えは、モーターを駆動したい強さに比例したアナログ電圧があると仮定して、モーターを制御することに当てはまります。これらの「ホビーサーボ」には適用されません。それらは、その用語の常識ではPWMによって制御されるのではなく、通常20〜50ミリ秒ごとに繰り返される1〜2ミリ秒である必要があるパルスの幅によって制御されます。この質問が本当に趣味のサーボに関するものである場合、それを明確にするために修正する必要があります。


これでタスクは完了しますが、@ pstanはサーボを駆動したいので、実装に関数ジェネレーターを使用することはおそらくあまり移植性がないことに注意することが重要です。
kevlar1818

1
一般に、サーボモーターのデューティサイクルは非常に低く、10%以下です。また、サーボは平均値ではなくパルス幅を直接使用するため、パルス幅と繰り返し率を分離する回路を使用することをお勧めします。
Markrages

1
@kevlar:私は自分の答えを再確認しましたが、関数ジェネレーターについてはまだ言及していません。私が言ったのは、三角波か何か十分なものが必要だということです。これらのいずれかを作成するために関数ジェネレーターは必要ありません。
オリンラスロップ

@Markrages:え?モーターは、パルス列が十分に速い場合、パルス列の平均を確認します。ほとんどのモーターでは、数百Hzで十分です。サーボ部分は、OPが尋ねなかった制御スキームによって実現されます。モーターをどれだけ強く駆動するかに比例するアナログレベルをすでに持っているようです。
オリンラスロップ

@Markrages:20ミリ秒ごとに1〜2ミリ秒のパルスを必要とする趣味のサーボについて話しているのは、私にただ起こりました。あなたのコメントはその観点からは理にかなっていますが、OPは趣味のサーボについてはまったく言及していません。
オリンラスロップ

7

三角波。コンパレータ。制御しきい値。それが基本的な方法です。

PP

ここに画像の説明を入力してください

最初に50Hzの方形波を生成します。最も簡単な方法:

ここに画像の説明を入力してください

Ω

方形波をMMV(Monostable MultiVibrator)に送ります。あなたはLM555でこれを行う、またはのようなロジックデバイスを使用することができます74HC123A。後者を使用する場合、パルス時間はREバツT そして CEバツT

T=REバツT×CEバツT

の時間 μs、k単位のRΩ、およびnFのC。

1msと2msの間で変化するパルス幅を得るには、C = 100nFとR = 10kを使用しますΩ 10kと直列Ω ポットメーター。

2つのLM555でこれを行うこともできましたが、外部コンポーネントがさらに必要になります。

編集(マイクロコントローラーについて)
私は、マイクロコントローラーを除外することは近視眼的であるというOlin(コメントを参照)に同意します(Olinは「愚かな」と言いました)。マイクロコントローラ用の開発が複雑だった時代がありましたが、今日ではそれは真実ではありません。数ユーロのプログラミングインターフェイスを使用することもできます。このソリューションは非常に簡単に見えるので、コントローラー以外のソリューションは競合できません。ATTiny5(OlinはPIC10F220)を使用します。電源接続にデカップリングコンデンサを接続し、ADC入力にポットメータを接続します。それでおしまい!3(3)コンポーネント。ADCの読み取り値をパルス幅出力に変換するのは非常に簡単なので、初心者プログラマーであってもほとんどばかげています。

それらを使い始めると、マイクロコントローラーは他のICやディスクリートコンポーネントよりも簡単で柔軟なソリューションを提供することが多いことがわかります。

メモ
他の質問から、マイクロコントローラーを使用していることわかります。ここでそれらを避けたいのはなぜですか?


三角波を取得する方法は何ですか?
m.Alin

1
@ m.Alin-非常にきれいな三角形が必要な場合、これが適切な方法です。しかし、発振器のインバーター入力も三角形に近似していますが、勾配は実際には指数関数的です。
-stevenvh

1
ローカルで言えば、555はここで74HCT1G14よりも安いです。+1 BTW。\
標準Sandun

3
@stevenvh「非常にきれいな三角形が必要な場合、これが適切な方法です。」あなたの論理では、これはまったく受け入れられません。非常に有益で完全な回答にこれを含めてください。
kevlar1818

2
@pstan-スペックが高すぎない場合は、おそらく555回路を使用します。完璧とはほど遠いです。周波数はデューティサイクルによって変化し、制御は線形ではありません。三角形ジェネレータ +コンパレータは、これらの欠点を解決します。
-stevenvh

4

PWM信号を生成する最も簡単な方法は、鋸歯状波または三角波をアナログコンパレータの一方の入力に供給し、制御電圧をもう一方の入力に供給することです。純粋な三角波が得られない場合、方形波をRCフィルターに通してフィルターの出力が約1 / 4VDDと3 / 4VDDの間でスイングし、制御電圧をスケーリングすることにより、合理的に近似することができます0.01%のデューティサイクルを生成する制御電圧は、フィルタリングされた方形波の最低電圧に変換され、99.99%のデューティサイクルを生成する制御電圧は、フィルタリングされた方形波の最高電圧に変換されます方形波。これにより、振幅に完全に線形比例しないパルス幅が得られますが、多くの目的には十分に近いです。


1
そして、これは... NE555回路は次のようにkevlar1818が提案したんですまさに
CEESメイジャー

2
@CeesMeijer:ポスターは、可変デューティサイクルと固定期間を要求しました。単一の555を使用して制御電圧を固定周波数の可変デューティサイクル波に変換する方法は知りません。ただし、コンパレーターに入力する三角形のような波を生成すると非常にうまく機能します。
-supercat

この回路を作成してから20年が経ったので、これを調べなければなりませんでした。そして確かにあなたは正しい。外部トリガーを使用して、一定の周波数を取得しました。ただし、2つ目の555を使用できます。
Cees Meijer

2

UCC3803のような低電圧(BiCMOS)電源制御ICの使用をお勧めします。動作周波数は簡単なRとCで簡単に設定でき、デューティサイクル制御はポテンショメータで簡単に行えます。5Vレールで動作します。

TI UC3842データシートからの抜粋

UCC3803は、UCx84xシリーズのPWMコントローラーとピン互換です。簡単なPWMを行いたい場合は、R1、2N2222、および5k ISENSE調整ポットを省略して上記の回路図を使用できます(ピン3をグランドに接続するだけです)。エラーアンプの調整ポットと直列の2つの4.7k抵抗を省略してVrefとGndに直接移動するか、調整が不要な場合は明示的な分圧器を使用することもできます。(デューティサイクルを簡単に変更する必要があるかどうかは指定しませんでした)。

このICは、約1Aの電流を駆動できます。(サーボモーターにPWM入力がある場合、これは重要なポイントです。)


「実際にモーターに電力を供給するために外部ドライバーが必要な場合があります」。本気ですか?私はいつもPWM入力は単なる低電流信号レベルだと思っていました。電源については、サーボには3番目の接続があります。
-stevenvh

また、デューティサイクルがわずか5〜10%であることを覚えています。それは、電力を供給する適切な方法です。
-stevenvh

これはいいね。しかし、依然として多くの外部コンポーネントがカウントされます。
スタンダードサンダン

UEMIG:不要なEMIジェネレーターのように見えます。:-(
stevenvh

また、最低10Vの入力が必要なようです。たぶん最良の選択ではない
...-stevenvh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.