• ベストアンサー

PICのPWMについてのプログラム

先程似たような質問してしまいましたが変更します。 PICを使い外部からのアナログ音声約0.5秒をPIC内臓のAD変換機能を使用してPIC内に格納します。 元々スイッチを2つ付けて1つを押したら上記のようになり、もう1つを押したら格納されているデジタルデータがPWM波となりポートBから出力される物を作りたいです。 出力された波形はローパスフィルターを通りDA変換されてアナログ音が外部に出る。 『0.5秒しか録音できないレコーダ』みたいなものをつくりたいというのが全体図です。 AD変換やDA変換はなんとか解るのですがPICからPWM波を出力する回路(プログラム)がよく解りません。 知っている方いましたら力を貸してもらえませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

>PICで出力する時間を制御したりするとまたプログラムが難しくなるんでしょうか? 例えば10KHz8bitでサンプリングされたデータであれば、 直接DAコンバータを持つ物に対しては、10KHz周期で8bitデータを一度出力してやれば終わりですが、 PWMを使う場合はその8bitを出力するためにもう一段時分割して処理を行う必要があります。 8bit出力であれば、例えば10KHzを更に400分割してその値に応じた回数出力ビットをオンにして残りをオフにするということになります。 (400は適当で根拠なし。ただし、最低256以上である程度の大きさが必要と思われる) まあ、それほど難しいプログラムではないとも言えますが。 もっとも、私もそういう物は作ったことがないので誤解している可能性もありますが。 簡単なのはハードウェア的に簡単という意味ではないかと思いますが。 必要な部品数や配線が少ないですから。 あと、PICにはPWM出力が可能な物があるみたいですね。 多分、これを使うなら私が書いたような処理は不要でしょうから、簡単にできると思います。

その他の回答 (2)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

Pulse Width ModulationのPWMでパルス幅変調でしょうから、 PIC自体のすることは単に出力をonにする時間を制御するだけでしょう。 offからonに変化するタイミングの時間で周波数が決定し、 onになっている時間で音量を制御していると思います。 ~~__~~__~~__~~__ これが周波数が下がると ~~~___~~~___~~~___ 音量を下げると ~_____~______~______ 上げると ~~~~~_~~~~~~_~~~~~~_ となるような感じです。 元のデータは音量だけだと思うので、多分周波数固定で 音量に応じて連続してonとなる時間を制御するんだろうと思います。 あとは、データのサンプリングレートとpicの処理可能時間から適当に。 DA変換使えるならその方が楽でしょう。ポートは複数使いますが。 というか、DA変換ができるならPWM使う必要はないと思いますが。 結局、PWM+フィルタでDA変換しているわけですから。

tfa
質問者

お礼

回答ありがとうございます。 元々DA変換するのにPWMとフィルタ使った方が簡単だし楽だと言われたのでこれを使うことにしてました。 PICで出力する時間を制御したりするとまたプログラムが難しくなるんでしょうか? PICのプログラム作成はあまりやったことがなくAD変換のプログラムも本などに載っているサンプルなどを見ながらやったくらいでして・・。

回答No.1

PICのA/Dを使うのでしたらR-2RのD/A(+ローパスフィルタ+アンプ)でそのまま出力させるのが一番楽に思えます。音質にこだわらなければ8ビットぐらいでも十分でしょう。(PICのピンが足りない?) PCM→PWMは計算すればできそうですが、よく分かりません。ごめんなさい。

tfa
質問者

お礼

回答ありがとうございます。 とりあえず一番簡単な方法でDAする方法を探していますので教えて頂いたR-2Rついてもっと調べてみます。

関連するQ&A