Дошли руки попробовать аналоговый прецизионный акселерометр ADW22035 присланный мне от Anlog Devices. Благодаря большому шагу между выводами, подпаяться к датчику напрямую проводами можно без проблем. Датчик подключается ко входу аналого-цифрового преобразователя микроконтроллера. В качестве камня взят atmega8. Показания выводятся на знакосинтезирующий дисплей 16х2.
Для тестирования написал вот такой код в Bascom:
$regfile = “m8def.dat”
$crystal = 8000000
Config Lcdpin = Pin , Rs=Portc.0 , E=Portc.1, Db4=Portc.2, Db5=Portc.3, Db6=Portc.4, Db7=Portd.2
Config Lcd = 16 * 2
Cursor Blink
Cls
Lcd “AVRproject.ru”
Wait 1
Lowerline
Lcd “ADW22035 demo”
Wait 2
Cursor Noblink
Cursor Off
Cls
Dim Value As Integer ‘для приема данных с АЦП
Dim Valuemax As Integer
Dim Valuemin As Integer
Valuemin = 500
Valuemax=500
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Do
Start Adc ‘ запускаем преобразование
Value = Getadc(5) ‘ считываем в переменную значение напряжения с ADC5
Stop Adc ‘ останавливаем работу АЦП
If Value > Valuemax Then
Valuemax = Value
End If
If Value < Valuemin Then
Valuemin = Value
End If
Lcd Valuemax ‘ выводим значение на ЖКИ
Lowerline
Lcd Valuemin
Waitms 20
Cls
Loop
End
Суть кода такова: каждые ~20 миллисекунд происходит считывание напряжение с АЦП. При неподвижном положении датчика в горизонтальной плоскости, напряжение на выходе будет равна половине питания, тоесть 2,5 вольт. В таком положении в переменную Value будет записываться значение 1023/2 = 511 (плюс минус, смотря какой шум идет с ацп). Затем со значением этой переменной сравнивается максимальное и минимальное значение. По умолчанию в них находиться 500, а после первого считывания они принимают свои естественные значения. Максимально значение выводится на верхней строке дисплея, а минимальное- на нижней. Теперь если взять датчик и придать ему ускорени, то будет зафиксированы новые значения максимума/минимума.
Кстати, датчик измеряет ускорения до 18g. Поэтому при переворачивании датчика (без дополнительного ускорения) значения изменяются не особо сильно.
Еще один момент, соединение датчика с микроконтроллером должно происходить через конденсатор. Емкость конденсатора зависит от частоты опроса датчика. При частоте 50Гц как сделал это я, должен стоять емкостью 0,1мкф. Дополнительно можно глянуть в даташите на датчик.
Датчик пока не особо распространен в российских магазинах, ввиду своей проффесиональной предназначенности. Но все таки кое-где купить его можно http://rs-catalog.ru/index.php?dispatch=products.view&product_id=223956
Взято с: