Датчик магнитного поля MMC2120MG



 Нашел небольшой пример с использованием датчика магнитного поля MMC2120MG, он же цифровой компас. Датчик измеряет значение магнитного поля по двум осям с разрешением 12 бит.

Подключение

Для подключения к контроллеру, датчик имеет протокол I2C и постоянный адрес на шине h60. Напряжение питания датчика может варьироваться в пределах 2,7-5,5 В.

Демонстрационный код написан в Bascom-AVR. Данные прочитанные с датчика передаются в компьютер по протоколу UART

$regfile = “m8def.dat”

$crystal = 8000000

$framesize = 64

$swstack = 64

$hwstack = 64

$baud = 9600

$lib “i2c_twi.lbx”

Config Pinb.6 = Input

Portb.6 = 1

Config Pinb.7 = Input

Portb.7 = 1

Config Pind.5 = Input

Portd.5 = 1

Taster1 Alias Pinb.6

Taster2 Alias Pinb.7

Taster3 Alias Pind.5

Config Portd.7 = Output

Config Portd.6 = Output

Config Portb.0 = Output

Led_gl Alias Portd.7

Led_rt Alias Portd.6

Led_gr Alias Portb.0

Config Twi = 400000

Config Scl = Portc.5

Config Sda = Portc.4

Const Cmp_w = &H60

Const Cmp_r = &H61

Dim I As Byte

Dim Dat(5) As Byte

Dim X As Word

Dim Y As Word

I2cinit

Do

I2cstart

I2cwbyte Cmp_w

I2cwbyte &H00

I2cwbyte &B00000010

I2cstop

 

Waitms 1

 

I2cstart

I2cwbyte Cmp_w

I2cwbyte &H00

I2cwbyte &B00000100

I2cstop

 

Waitms 5

 

I2cstart

I2cwbyte Cmp_w

I2cwbyte &H00

I2cwbyte &H01

I2cstop

 

Waitms 5

 

I2cstart

I2cwbyte Cmp_w

I2cwbyte &H00

I2cstart

I2cwbyte Cmp_r

 

For I = 1 To 4

I2crbyte Dat(i) , Ack

Next

I2crbyte Dat(5) , Nack

I2cstop

Dat(2) = Dat(2) And &B0000_1111

Dat(4) = Dat(4) And &B0000_1111

X = Dat(2) * 256

X = X + Dat(3)

Y = Dat(4) * 256

Y = Y + Dat(5)

 

Print X ; ” ” ; Y

 

Waitms 40

 

Toggle Led_rt

Loop

End

График построенный из данных принятых в терминал:

Демонстрационное видео работы:

Источник: http://www.mtahlers.de/index.php/elektronik/sensoren/mmc2120mg

 



Категория: Разное

Написать коментарий

*
= 4 + 1

Добавить изображение

Последние статьи