2012年
11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2012-11-08 ADCのノイズ低減

_ AVRでSLEEP

AVR tiny261のADCを使って、電圧などを表示するようなものを作っていたのだが、ADCの読みが少し揺れるので、ノイズ低減のためにSLEEPさせたときにADCを読むことにした。まずは

#include <avr/sleep.h>

として、MCUCRのSM1,SM0とSEを設定する。USIやアナログ比較器も止めておいた。そして、sleep_mode()でSLEEPしてくれるようだ。ADCの終了で割り込みがかかるので、その中で適切な処理をして、メインルーチンに戻ったら、またすぐにSLEEPさせるという感じにした。あまりノイズは減った気はしないけど、無事に動いたからいいか。

AVRのADCは10bitしかないので、少し不足を感じるときがある。せめて、12bitぐらいあれば良いのに。また、読み取りを安定化させるために、積算したりしても、ノイズはそれなりに拾ってしまうのは、周辺の回路やグランドが良くないのかな。