Skip to content

Commit 1cf66e5

Browse files
committed
начало
0 parents  commit 1cf66e5

File tree

8 files changed

+1340
-0
lines changed

8 files changed

+1340
-0
lines changed

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2022 Roman Sklyar S-LAB
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# MT6701-Arduino-Library
2+
<p align="center"><img src="/images/mt6701_module.jpg"></p>
3+
4+
## Еще магнытные датчики
5+
* [AS5600](https://github.com/S-LABc/AMS-AS5600-Arduino-Library)
6+
* [AS5601](https://github.com/S-LABc/AMS-AS5601-Arduino-Library)
7+
8+
## Предупреждение
9+
* Библиотека не проверялась полностью. Возможны ошибки. Используя бибилиотеку вы берете все риски на себя
10+
* Реализованы не все возможности датчика. Для взаимодействия с регистрами датчика можно использовать эти методы:
11+
```C++
12+
// Чтение содержимого регистра
13+
uint8_t MT_RequestSingleRegister(uint8_t _reg_addr);
14+
// Запись нового содержимого в регистр
15+
void MT_WriteOneByte(uint8_t _reg_addr, uint8_t _payload);
16+
```
17+
* Все доступные методы, константы, типы данных можно посмотреть [тут](https://github.com/S-LABc/MT6701-Arduino-Library/blob/main/src/MT6701_I2C.h)
18+
19+
## Ссылки
20+
* [Даташит MT6701](http://www.magntek.com.cn/upload/MT6701_Rev.1.5.pdf)
21+
* [Страница MT6701](http://www.magntek.com.cn/en/list/177/559.htm)
22+
* [Корпус для тестов](https://github.com/S-LABc/AMS-AS5600-Arduino-Library/tree/main/addons/AS5600-Case-STL)
23+
* [Видео с моим мнением](https://youtu.be/GnFONlue2t0)

examples/MT6701_test/MT6701_test.ino

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/*
2+
* MT6701_test
3+
*
4+
* Демонстрация некоторых возможнойстей библиотеки MT6701_I2C.h для датчика MT6701
5+
*
6+
* Документация к датчику:
7+
* http://www.magntek.com.cn/upload/MT6701_Rev.1.5.pdf
8+
*
9+
* Все методы можно посмотреть в файле MT6701_I2C.h или тут
10+
* https://github.com/S-LABc/MT6701-Arduino-Library/blob/main/src/MT6701_I2C.h
11+
*
12+
* Контакты:
13+
** YouTube - https://www.youtube.com/channel/UCbkE52YKRphgkvQtdwzQbZQ
14+
** Telegram - https://www.t.me/slabyt
15+
** GitHub - https://github.com/S-LABc
16+
** Gmail - romansklyar15@gmail.com
17+
*
18+
* Copyright (C) 2022. v1.0 / Скляр Роман S-LAB
19+
*/
20+
21+
#include <MT6701_I2C.h>
22+
23+
// раскомментировать для заупска функции сохранения значений
24+
//#define SAVE_VALUES
25+
26+
/*
27+
* STM32_MT6701_MODE_PIN PC13
28+
* ESP32_MT6701_MODE_PIN 2
29+
* ARDUINO_MT6701_MODE_PIN 3
30+
* или любой другой
31+
*
32+
* MT6701I2C_MODE_I2C_SSI - притягивает контакт MODE к VCC
33+
* MT6701I2C_MODE_UVW_ABZ - притягивает контакт MODE к GND
34+
*/
35+
MT6701I2C SensorI2C(&Wire);
36+
//MT6701I2C SensorI2C(&Wire, ARDUINO_MT6701_MODE_PIN, MT6701I2C_MODE_I2C_SSI);
37+
38+
void setup() {
39+
Serial.begin(115200);
40+
41+
SensorI2C.begin();
42+
43+
//SensorI2C.setClock100kHz();
44+
SensorI2C.setClock400kHz();
45+
//SensorI2C.setClock1MHz();
46+
//SensorI2C.setClock(200000); // другое значение частоты
47+
48+
while(!Serial) {}
49+
50+
while(!SensorI2C.isConnected()) {
51+
Serial.println("Датчик не обнаружен");
52+
delay(500);
53+
}
54+
}
55+
56+
57+
void loop() {
58+
#ifdef SAVE_VALUES
59+
saveNewSettings();
60+
#else
61+
readValues();
62+
#endif
63+
}
64+
65+
void readValues() {
66+
Serial.print("Raw: ");
67+
Serial.println(SensorI2C.getRawAngle());
68+
69+
Serial.print("Degrees: ");
70+
Serial.println(SensorI2C.getDegreesAngle());
71+
72+
Serial.print("Radians: ");
73+
Serial.println(SensorI2C.getRadiansAngle());
74+
75+
Serial.print("Resolution UVW: ");
76+
Serial.println(SensorI2C.getOutputResolutionUVW()); // setOutputResolutionUVW()
77+
78+
Serial.print("Resolution ABZ: ");
79+
Serial.println(SensorI2C.getOutputResolutionABZ()); // setOutputResolutionABZ()
80+
81+
Serial.print("Output Type: ");
82+
MT6701I2COutputType output_type = SensorI2C.getOutputType();
83+
if(output_type == MT6701I2_OUTPUT_TYPE_ABZ) { // setOutputTypeABZ()
84+
Serial.println("ABZ");
85+
} else if(output_type == MT6701I2_OUTPUT_TYPE_UVW) { // setOutputTypeUVW()
86+
Serial.println("UVW");
87+
}
88+
89+
Serial.print("Output Mode: ");
90+
MT6701I2COutputMode output_mode = SensorI2C.getOutputMode();
91+
if(output_mode == MT6701I2_OUTPUT_MODE_ANALOG) { // setOutputModeAnalog()
92+
Serial.println("ANALOG");
93+
} else if(output_mode == MT6701I2_OUTPUT_MODE_PWM) { // setOutputModePWM()
94+
Serial.println("PWM");
95+
}
96+
97+
Serial.print("Rotation Direction: ");
98+
MT6701I2CDirection output_dir = SensorI2C.getOutputRotationDirection();
99+
if(output_dir == MT6701I2_DIRECTION_CLOCKWISE) { // setOutputRotationDirectionClockwise()
100+
Serial.println("CLOCKWISE");
101+
} else if(output_dir == MT6701I2_DIRECTION_COUNTERCLOCKWISE) { // setOutputRotationDirectionCounterclockwise()
102+
Serial.println("COUNTERCLOCKWISE");
103+
}
104+
105+
Serial.println();
106+
107+
delay(200);
108+
}
109+
110+
void saveNewSettings() {
111+
Serial.print("Write Resolution ABZ: ");
112+
word new_res_abz = 732;
113+
if(SensorI2C.setOutputResolutionABZVerify(new_res_abz)) {
114+
Serial.println("OK");
115+
} else {
116+
Serial.println("ERROR");
117+
}
118+
119+
Serial.print("Write Output Mode PWM: ");
120+
if(SensorI2C.setOutputModePWMVerify()) {
121+
Serial.println("OK");
122+
} else {
123+
Serial.println("ERROR");
124+
}
125+
126+
Serial.print("Write Rotation Direction Clockwise: ");
127+
if(SensorI2C.setOutputRotationDirectionClockwiseVerify()) {
128+
Serial.println("OK");
129+
} else {
130+
Serial.println("ERROR");
131+
}
132+
133+
Serial.println("Saving New Values...");
134+
SensorI2C.saveNewValues();
135+
delay(700); // >600мс
136+
Serial.println("Saved Successfully. Reconnect Power");
137+
138+
while(1) {}
139+
}

images/mt6701_module.jpg

372 KB
Loading

keywords.txt

+203
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
#######################################
2+
# Syntax Coloring Map For MT6701_I2C
3+
#######################################
4+
5+
#######################################
6+
# Datatypes (KEYWORD1)
7+
#######################################
8+
9+
MT6701_I2C KEYWORD1
10+
SensorI2C KEYWORD1
11+
12+
#######################################
13+
# Methods and Functions (KEYWORD2)
14+
#######################################
15+
16+
MT6701I2C KEYWORD2
17+
18+
MT_RequestSingleRegister KEYWORD2
19+
MT_WriteOneByte KEYWORD2
20+
21+
begin KEYWORD2
22+
setClock KEYWORD2
23+
setClock100kHz KEYWORD2
24+
setClock400kHz KEYWORD2
25+
setClock1MHz KEYWORD2
26+
end KEYWORD2
27+
28+
saveNewValues KEYWORD2
29+
30+
isConnected KEYWORD2
31+
32+
enableI2CorSSI KEYWORD2
33+
enableUVWorABZ KEYWORD2
34+
35+
getRawAngle KEYWORD2
36+
getDegreesAngle KEYWORD2
37+
getRadiansAngle KEYWORD2
38+
39+
getConfigurationOutputType KEYWORD2
40+
setConfigurationOutputTypeABZ KEYWORD2
41+
setConfigurationOutputTypeABZVerify KEYWORD2
42+
setConfigurationOutputTypeUVW KEYWORD2
43+
setConfigurationOutputTypeUVWVerify KEYWORD2
44+
45+
getOutputType KEYWORD2
46+
setOutputTypeABZ KEYWORD2
47+
setOutputTypeABZVerify KEYWORD2
48+
setOutputTypeUVW KEYWORD2
49+
setOutputTypeUVWVerify KEYWORD2
50+
51+
getOutputRotationDirection KEYWORD2
52+
setOutputRotationDirectionCounterclockwise KEYWORD2
53+
setOutputRotationDirectionCounterclockwiseVerify KEYWORD2
54+
setOutputRotationDirectionClockwise KEYWORD2
55+
setOutputRotationDirectionClockwiseVerify KEYWORD2
56+
57+
getOutputResolutionUVW KEYWORD2
58+
setOutputResolutionUVW KEYWORD2
59+
setOutputResolutionUVWVerify KEYWORD2
60+
61+
getOutputResolutionABZ KEYWORD2
62+
setOutputResolutionABZ KEYWORD2
63+
setOutputResolutionABZVerify KEYWORD2
64+
65+
getZPulseWidth KEYWORD2
66+
setZPulseWidth1LSB KEYWORD2
67+
setZPulseWidth1LSBVerify KEYWORD2
68+
setZPulseWidth2LSB KEYWORD2
69+
setZPulseWidth2LSBVerify KEYWORD2
70+
setZPulseWidth4LSB KEYWORD2
71+
setZPulseWidth4LSBVerify KEYWORD2
72+
setZPulseWidth8LSB KEYWORD2
73+
setZPulseWidth8LSBVerify KEYWORD2
74+
setZPulseWidth12LSB KEYWORD2
75+
setZPulseWidth12LSBVerify KEYWORD2
76+
setZPulseWidth16LSB KEYWORD2
77+
setZPulseWidth16LSBVerify KEYWORD2
78+
setZPulseWidth180DEG KEYWORD2
79+
setZPulseWidth180DEGVerify KEYWORD2
80+
81+
getZeroDegreePositionData KEYWORD2
82+
setZeroDegreePositionData KEYWORD2
83+
setZeroDegreePositionDataVerify KEYWORD2
84+
85+
getFrequencyPWM KEYWORD2
86+
setFrequencyPWM9944 KEYWORD2
87+
setFrequencyPWM9944Verify KEYWORD2
88+
setFrequencyPWM4972 KEYWORD2
89+
setFrequencyPWM4972Verify KEYWORD2
90+
91+
getPolarityPWM KEYWORD2
92+
setPolarityPWMHigh KEYWORD2
93+
setPolarityPWMHighVerify KEYWORD2
94+
setPolarityPWMLow KEYWORD2
95+
setPolarityPWMLowVerify KEYWORD2
96+
97+
getOutputMode KEYWORD2
98+
setOutputModeAnalog KEYWORD2
99+
setOutputModeAnalogVerify KEYWORD2
100+
setOutputModePWM KEYWORD2
101+
setOutputModePWMVerify KEYWORD2
102+
103+
#######################################
104+
# Constants (LITERAL1)
105+
#######################################
106+
107+
MT6701_I2C_CLOCK_100KHZ LITERAL1
108+
MT6701_I2C_CLOCK_400KHZ LITERAL1
109+
MT6701_I2C_CLOCK_1MHZ LITERAL1
110+
MT6701_I2C_ADDRESS LITERAL1
111+
112+
STM32_MT6701_MODE_PIN LITERAL1
113+
ESP32_MT6701_MODE_PIN LITERAL1
114+
ARDUINO_MT6701_MODE_PIN LITERAL1
115+
116+
MT6701_I2C_ANGLE_DATA_REG_H LITERAL1
117+
MT6701_I2C_ANGLE_DATA_REG_L LITERAL1
118+
119+
MT6701_I2C_EEPROM_UVW_MUX_REG LITERAL1
120+
MT6701_I2C_EEPROM_UVW_MUX_BIT LITERAL1
121+
122+
MT6701_I2C_EEPROM_ABZ_MUX_DIR_REG LITERAL1
123+
MT6701_I2C_EEPROM_ABZ_MUX_BIT LITERAL1
124+
125+
MT6701_I2C_EEPROM_DIR_REG LITERAL1
126+
MT6701_I2C_EEPROM_DIR_BIT LITERAL1
127+
128+
MT6701_I2C_EEPROM_UVW_RES_REG LITERAL1
129+
MT6701_I2C_EEPROM_UVW_MUX_BIT_S LITERAL1
130+
131+
MT6701_I2C_EEPROM_ABZ_RES_REG_H LITERAL1
132+
MT6701_I2C_EEPROM_ABZ_RES_REG_L LITERAL1
133+
MT6701_I2C_EEPROM_ABZ_MUX_BIT_S LITERAL1
134+
135+
MT6701_I2C_EEPROM_HYST_REG_H LITERAL1
136+
MT6701_I2C_EEPROM_HYST_REG_L LITERAL1
137+
138+
MT6701_I2C_EEPROM_Z_PULSE_WIDTH_REG LITERAL1
139+
MT6701_I2C_EEPROM_Z_PULSE_WIDTH_BIT_S LITERAL1
140+
141+
MT6701_I2C_EEPROM_ZERO_REG_H LITERAL1
142+
MT6701_I2C_EEPROM_ZERO_REG_L LITERAL1
143+
144+
MT6701_I2C_EEPROM_PWM_FREQ_REG LITERAL1
145+
MT6701_I2C_EEPROM_PWM_FREQ_BIT LITERAL1
146+
147+
MT6701_I2C_EEPROM_PWM_POL_REG LITERAL1
148+
MT6701_I2C_EEPROM_PWM_POL_BIT LITERAL1
149+
150+
MT6701_I2C_EEPROM_OUT_MODE_REG LITERAL1
151+
MT6701_I2C_EEPROM_OUT_MODE_BIT LITERAL1
152+
153+
MT6701_I2C_EEPROM_A_START_REG_H LITERAL1
154+
MT6701_I2C_EEPROM_A_START_REG_L LITERAL1
155+
156+
MT6701_I2C_EEPROM_A_STOP_REG_H LITERAL1
157+
MT6701_I2C_EEPROM_A_STOP_REG_L LITERAL1
158+
MT6701_I2C_EEPROM_A_STOP_BIT_S LITERAL1
159+
160+
MT6701_I2C_EEPROM_PROG_KEY_REG LITERAL1
161+
MT6701_I2C_EEPROM_PROG_KEY_VALUE LITERAL1
162+
MT6701_I2C_EEPROM_PROG_CMD_REG LITERAL1
163+
MT6701_I2C_EEPROM_PROG_CMD_VALUE LITERAL1
164+
165+
MT6701I2CConfigurationOutputType LITERAL1
166+
MT6701I2_CONFIG_OUTPUT_TYPE_UVW LITERAL1
167+
MT6701I2_CONFIG_OUTPUT_TYPE_A_B_Z LITERAL1
168+
169+
MT6701I2COutputType LITERAL1
170+
MT6701I2_OUTPUT_TYPE_ABZ LITERAL1
171+
MT6701I2_OUTPUT_TYPE_UVW LITERAL1
172+
173+
MT6701I2CDirection LITERAL1
174+
MT6701I2_DIRECTION_COUNTERCLOCKWISE LITERAL1
175+
MT6701I2_DIRECTION_CLOCKWISE LITERAL1
176+
177+
MT6701I2CZPulseWidth LITERAL1
178+
MT6701I2_Z_PULSE_WIDTH_1LSB LITERAL1
179+
MT6701I2_Z_PULSE_WIDTH_2LSB LITERAL1
180+
MT6701I2_Z_PULSE_WIDTH_4LSB LITERAL1
181+
MT6701I2_Z_PULSE_WIDTH_8LSB LITERAL1
182+
MT6701I2_Z_PULSE_WIDTH_12LSB LITERAL1
183+
MT6701I2_Z_PULSE_WIDTH_16LSB LITERAL1
184+
MT6701I2_Z_PULSE_WIDTH_180DEG LITERAL1
185+
MT6701I2_Z_PULSE_WIDTH_1LSB_2 LITERAL1
186+
187+
MT6701I2CFrequencyPWM LITERAL1
188+
MT6701I2_PWM_FREQUENCY_9944 LITERAL1
189+
MT6701I2_PWM_FREQUENCY_4972 LITERAL1
190+
191+
MT6701I2CPolarityPWM LITERAL1
192+
MT6701I2_PWM_POLARITY_HIGH LITERAL1
193+
MT6701I2_PWM_POLARITY_LOW LITERAL1
194+
195+
MT6701I2COutputMode LITERAL1
196+
MT6701I2_OUTPUT_MODE_ANALOG LITERAL1
197+
MT6701I2_OUTPUT_MODE_PWM LITERAL1
198+
199+
MT6701I2C_DEFAULT_REPORT_ERROR LITERAL1
200+
MT6701I2C_DEFAULT_REPORT_OK LITERAL1
201+
202+
MT6701I2C_MODE_I2C_SSI LITERAL1
203+
MT6701I2C_MODE_UVW_ABZ LITERAL1

0 commit comments

Comments
 (0)