Skip to content

Commit 1e45439

Browse files
committed
Create burnMaxAngleAndConfigurationValue_Serial.ino
1 parent 2f73fe9 commit 1e45439

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
/*
2+
* burnMaxAngleAndConfigurationValue_Serial
3+
*
4+
* Сохранение в энергонезависимую память датчика AS5600(AS5600L) значений
5+
* установленных методами setMaxAngle() и setRawConfigurationValue()
6+
*
7+
* ============ !!! ВАЖНО !!! ============
8+
* Этот скетч не проверялся на реальном датчике!
9+
* Метод burnMaxAngleAndConfigurationValue() не проверялся на реальном датчике!
10+
* Если значение ZMCO > 0, то выполнение метода burnMaxAngleAndConfigurationValue() запишет только конфигурации!
11+
* Если значение ZMCO = 0, то выполнить burnMaxAngleAndConfigurationValue() можно полностью!
12+
* Ответственность за все действия вы берете на себя!
13+
*
14+
* Подключение:
15+
* AS5600 Board
16+
* VCC -> +3V3
17+
* GND -> GND
18+
* DIR -> GND
19+
* SDA -> SDA
20+
* SCL -> SCL
21+
*
22+
* Примеяания:
23+
* 1. Если используется плата с логическими уровнями 5В, то
24+
* необходимо удалить резистор R1 (0 Ом) с платы датчика,
25+
* а вывод VCC подкючить к 5В питанию!
26+
*
27+
* Проверка:
28+
* 1. Подключить датчик согласно распиновке
29+
* 2. Загрузить скетч в плату
30+
* 3. Открыть "Монитор порта"
31+
* 4. Следовать дальнейшим инструкциям
32+
*
33+
* Документация к датчику:
34+
* https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf
35+
*
36+
* Больше информации в WiKi:
37+
* https://github.com/S-LABc/AMS-AS5600-Arduino-Library/wiki
38+
*
39+
* Контакты:
40+
** GitHub - https://github.com/S-LABc
41+
** Gmail - romansklyar15@gmail.com
42+
*
43+
* Copyright (C) 2022. v1.0 / Скляр Роман S-LAB
44+
*/
45+
46+
// Подключаем библиотеку
47+
#include <AMS_AS5600.h>
48+
49+
// УКАЖИТЕ ТУТ СВОИ ЗНАЧЕНИЯ
50+
#define R_CONFIG 0x1745
51+
#define M_ANGLE 1627
52+
53+
// Создаем объект Sensor с указанием ссылки на объект Wire
54+
AS5600 Sensor(&Wire);
55+
56+
void setup() {
57+
Serial.begin(115200);
58+
59+
// Запускаем соединение
60+
Sensor.begin();
61+
// Настраиваем шину I2C на 400кГц
62+
Sensor.setClock();
63+
//Можно на друие частоты, но работает не на всех микроконтроллерах
64+
//Sensor.setClock(AS5600_I2C_CLOCK_100KHZ); // 100кГц
65+
//Sensor.setClock(AS5600_I2C_CLOCK_1MHZ); // 1МГц
66+
//Sensor.setClock(725000); // Пользовательское значение 725кГц
67+
68+
// Устанавливаем значение максимального угла
69+
Sensor.setMaxAngle(M_ANGLE);
70+
//Sensor.setMaxAngleViaRawAngle(); // Установить новое начальное положение MANG используя нынешнее положение магнита (getRawAngle)
71+
// Устанавливаем значение конфигураций
72+
Sensor.setRawConfigurationValue(R_CONFIG);
73+
// Можно устанавливать отдельными методами, например:
74+
// setPowerMode(), enableLowPowerMode1(), enablePWMFrequency920Hz ...
75+
76+
Serial.println("!ВНИМАНИЕ!");
77+
Serial.println("Записать значения можно 1 раз!");
78+
Serial.println("Если ZMCO > 0, то запишутся только конфигурации");
79+
Serial.println("Если ZMCO = 0, то запишется все");
80+
Serial.println("");
81+
Serial.print("Сейчас значение регистра ZMCO = ");
82+
byte count = Sensor.getBurnPositionsCount();
83+
Serial.println(count);
84+
Serial.println("");
85+
Serial.println("Будут установены следующие значения:");
86+
Serial.print("Макимальный угол - ");
87+
Serial.println(Sensor.getMaxAngle());
88+
Serial.print("Конфигурации - ");
89+
Serial.println(Sensor.getRawConfigurationValue());
90+
Serial.println("Для подтверждения отправьте символ Y");
91+
92+
while(1) {
93+
byte c;
94+
if(Serial.available())
95+
c = Serial.read();
96+
if(c == 'Y') {
97+
break;
98+
}
99+
delay(100);
100+
}
101+
102+
Serial.println();
103+
Serial.println("Принято! Запись значений началась");
104+
105+
AS5600BurnReports report = Sensor.burnMaxAngleAndConfigurationValue();
106+
// Если не нужна заводская проверка записанного
107+
//AS5600BurnReports report = Sensor.burnMaxAngleAndConfigurationValue(AS5600_FLAG_SPECIAL_VERIFY_DISABLE);
108+
switch (report) {
109+
case AS5600_BURN_REPROT_SENSOR_NOT_CONNECTED:
110+
Serial.println("Датчик не обнаружен на шине I2C");
111+
break;
112+
case AS5600_BURN_REPROT_MAGNET_NOT_FOUND:
113+
Serial.println("Датчик не обнаружил магнит");
114+
break;
115+
case AS5600_BURN_REPROT_WRITE_OK:
116+
Serial.println("Макимальный угол и конфигурации записаны (с проверкой)");
117+
break;
118+
case AS5600_BURN_REPROT_WRITE_WRONG:
119+
Serial.println("Макимальный угол и конфигурации записать не удалось");
120+
break;
121+
case AS5600_BURN_REPROT_WRITE_OK_WITHOUT_VERIFY:
122+
Serial.println("Макимальный угол и конфигурации записаны (без проверки)");
123+
break;
124+
case AS5600_BURN_REPROT_ANGLE_VALUE_TOO_SMALL:
125+
Serial.println("Значение максимального угла меньше AS5600_MIN_ANGLE_VALUE_DEC");
126+
break;
127+
case AS5600_BURN_REPROT_WRITE_OK_WITHOUT_MAXANGLE:
128+
Serial.println("Записаны только конфигурации (с проверкой)");
129+
break;
130+
case AS5600_BURN_REPROT_WRITE_OK_WITHOUT_VERIFY_WITHOUT_MAXANGLE:
131+
Serial.println("Записаны только конфигурации (без проверки)");
132+
break;
133+
default:
134+
Serial.println("Неизвестное значение отчета");
135+
break;
136+
}
137+
138+
Serial.println("КОНЕЦ ПРОГРАММЫ");
139+
}
140+
141+
void loop() {
142+
143+
}

0 commit comments

Comments
 (0)