Skip to content

Commit 7ee0995

Browse files
committed
start
0 parents  commit 7ee0995

29 files changed

+2735
-0
lines changed

LICENSE

Lines changed: 21 additions & 0 deletions
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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# AMS-AS5600-Arduino-Library
2+
![Header Picture](images/as5600_aliexpress.jpg)
3+
4+
## Описание
5+
Наиболее полня и удобная библиотека Arduino для работы с магнитным датчиком положения AS5600
6+
7+
## Особенности
8+
* Полная поддержка всех функций датчика
9+
* Работает со стандартным объектом **Wire**
10+
* Поддержка на множестве платформ: *STM32, AVR, ESP32 ...*
11+
* Имеет методы с верифкацией (проверкой)
12+
* [3D-модель](addons/AS5600-Case-STL/) кейса для тестов
13+
* Имеет несколько встроенных [примеров](examples/): *упрвление громкостью, [приложение AS5600 Visually](addons/AS5600-Visually/), вывод значений на дисплей SSD1306, HTML-страница ...*
14+
15+
## AS5600 Visually
16+
* Позволяет наблюдать за положением магнита, пинимая данные из COM-Port
17+
18+
![Visually UI](images/visually_software.jpg)
19+
20+
## Изображения
21+
![Base](images/as5600_base.jpg)
22+
23+
![Case](images/as5600_case_live.jpg)
24+
25+
![Case STL](images/assembly_case_stl.jpg)
26+
27+
## Ссылки
28+
* [Даташит AS5600](https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf)
29+
* [Страница AS5600](https://ams.com/en/as5600)
30+
* [Ядро Роджера](https://github.com/rogerclarkmelbourne/Arduino_STM32)
31+
* [Ядро официальное](https://github.com/stm32duino/Arduino_Core_STM32)
152 KB
Binary file not shown.
182 KB
Binary file not shown.
99.4 KB
Binary file not shown.
178 KB
Binary file not shown.
192 KB
Binary file not shown.

addons/AS5600-Visually/readme.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
AS5600 Visually.exe
2+
3+
как пользоваться:
4+
1. Подключить плату ардуино с записанным скетчем к компьютеру
5+
2. Запустить программу и выбрать нужный com port
6+
3. Нажать Connect
7+
4. Менять положение мгнита
8+
9+
примечание:
10+
1. ADC Raw Angle - значения АЦП
11+
2. DEGREE Angle - угол в градусах
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
/*
2+
* AngleToHtml_ESP32Server
3+
*
4+
* Демонтрация вывода данных от датчика AS5600 на веб страницу браузера
5+
* с использовнием платформы ESP32
6+
*
7+
* Подключение:
8+
* AS5600 ESP32
9+
* VCC -> +3V3
10+
* GND -> GND
11+
* DIR -> GND
12+
* SDA -> GPIO21
13+
* SCL -> GPIO22
14+
*
15+
* Проверка:
16+
* 1. Подключить датчик согласно распиновке
17+
* 2. Загрузить скетч в плату модуля
18+
* 3. Открыть список WiFi сетей
19+
* 4. Подключиться к сети ESP32 с паролем 01234567
20+
* 5. Перейти в браурезе по адресу 192.168.2.1
21+
* 6. Менять положение магнита и нажимать кнопку на странице
22+
*
23+
* Кусок кода с сервером и страницей взят отсюда:
24+
* https://arduino-tex.ru/news/15/urok-1-veb-server-esp32-esp8266-v-srede-arduino-ide.html
25+
*
26+
* Документация к датчику:
27+
* https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf
28+
*
29+
* Зависимости:
30+
* https://github.com/espressif/arduino-esp32
31+
*
32+
* Контакты:
33+
** YouTube - https://www.youtube.com/channel/UCbkE52YKRphgkvQtdwzQbZQ
34+
** Telegram - https://www.t.me/slabyt
35+
** GitHub - https://github.com/S-LABc
36+
** Gmail - romansklyar15@gmail.com
37+
*
38+
* Copyright (C) 2022. v1.0 / Скляр Роман S-LAB
39+
*/
40+
41+
// Подключаем библиотеки
42+
#include <AMS_AS5600.h>
43+
#include <WiFi.h>
44+
#include <WebServer.h>
45+
46+
// Имя сети и пароль
47+
const char* ssid = "ESP32";
48+
const char* password = "01234567";
49+
// Настройки IP адреса
50+
IPAddress local_ip(192,168,2,1); // Адрес который надо ввести в браузер
51+
IPAddress gateway(192,168,2,1);
52+
IPAddress subnet(255,255,255,0);
53+
WebServer server(80);
54+
55+
// Создаем объект Sensor с указанием ссылки на объект Wire
56+
AS5600 Sensor(&Wire);
57+
58+
void setup() {
59+
// Запускаем соединение с датчиком
60+
Sensor.begin();
61+
// Настраиваем шину I2C на 400кГц
62+
Sensor.setClock();
63+
64+
// Настройки точки доступа
65+
WiFi.softAP(ssid, password);
66+
WiFi.softAPConfig(local_ip, gateway, subnet);
67+
delay(100);
68+
// Обработчик главной директории
69+
server.on("/", handle_main);
70+
// Запускаем сервер
71+
server.begin();
72+
}
73+
74+
void loop() {
75+
// Обработчик запросов от браузера
76+
server.handleClient();
77+
}
78+
79+
// Обработчик корневой директории
80+
void handle_main() {
81+
server.send(200, "text/html", sendHTML(Sensor.getRawAngle())); // Отправляем угол на страницу и передаем ее в браузер
82+
}
83+
84+
// Веб страница
85+
String sendHTML(uint16_t _raw_ang){
86+
String html = "<!DOCTYPE html> <html>\n";
87+
html +="<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
88+
html +="<title>AS5600 Web UI</title>\n";
89+
html +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
90+
html +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
91+
html +=".button {display: block;width: 80px;background-color: #3498db;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 18px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";
92+
html +=".btn {background-color: #34495e;}\n";
93+
html +=".btn:active {background-color: #2c3e50;}\n";
94+
html +="p {font-size: 24px;color: #888;margin-bottom: 10px;}\n";
95+
html +="</style>\n";
96+
html +="</head>\n";
97+
html +="<body>\n";
98+
html +="<h2>AMS AS5600</h2>\n";
99+
html +="<div>Обновляйте страницу, меняя положение магнита</div>\n";
100+
html +="<p>АЦП: " + String(_raw_ang) + "</p>";
101+
html +="<p>Угол: " + String(_raw_ang * 0.08791) + "</p>"; // 360/4095=0.0879120879120879, 5 знаков после точки для АЦП 12 бит достаточно
102+
html +="<a class=\"button btn\" href=\"/\">Обновить</a>\n";
103+
html +="</body>\n";
104+
html +="</html>\n";
105+
106+
return html;
107+
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/*
2+
* ChangeDirection_Serial
3+
*
4+
* Демонтрация смены положительного направления вращения датчика AS5600
5+
*
6+
* Подключение:
7+
* AS5600 Board
8+
* VCC -> +3V3
9+
* GND -> GND
10+
* DIR -> PIN_BOARD
11+
* SDA -> SDA
12+
* SCL -> SCL
13+
*
14+
* Примеяания:
15+
* 1. Если используется плата с логическими уровнями 5В, то
16+
* необходимо удалить резистор R1 (0 Ом) с платы датчика,
17+
* а вывод VCC подкючить к 5В питанию!
18+
*
19+
* Проверка:
20+
* 1. Подключить датчик согласно распиновке
21+
* 2. Загрузить скетч в плату
22+
* 3. Открыть "Монитор порта"
23+
* 4. Смотреть как меняются значения
24+
*
25+
* Документация к датчику:
26+
* https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf
27+
*
28+
* Контакты:
29+
** YouTube - https://www.youtube.com/channel/UCbkE52YKRphgkvQtdwzQbZQ
30+
** Telegram - https://www.t.me/slabyt
31+
** GitHub - https://github.com/S-LABc
32+
** Gmail - romansklyar15@gmail.com
33+
*
34+
* Copyright (C) 2022. v1.0 / Скляр Роман S-LAB
35+
*/
36+
37+
// Подключаем библиотеку
38+
#include <AMS_AS5600.h>
39+
40+
/*
41+
* Создаем объект Sensor с указанием ссылки на объект Wire
42+
* и вывода микроконтроллера куда подключен контакт DIR датчика
43+
* при необходимости можно указать направление (по умолчнаю по часовой стрелке)
44+
*
45+
* STM32_AS5600_DEF_PIN -> PC13
46+
* ESP32_AS5600_DEF_PIN -> 4
47+
* ARDUINO_AS5600_DEF_PIN -> 3
48+
*/
49+
AS5600 Sensor(&Wire, STM32_AS5600_DEF_PIN);
50+
51+
// Тоже самое с указанием положительного направления против часовой стрелки
52+
//AS5600 Sensor(&Wire, STM32_AS5600_DEF_PIN, AS5600_DIRECTION_POLARITY_COUNTERCLOCKWISE);
53+
54+
// Тоже самое с указанием положительного направления по часовой стрелке
55+
//AS5600 Sensor(&Wire, STM32_AS5600_DEF_PIN, AS5600_DIRECTION_POLARITY_CLOCKWISE);
56+
57+
// Для хранения времени
58+
uint32_t last_time = 0;
59+
60+
void setup() {
61+
Serial.begin(115200);
62+
63+
// Запускаем соединение
64+
Sensor.begin();
65+
// Настраиваем шину I2C на 400кГц
66+
Sensor.setClock();
67+
68+
/* setDirection() и reverseDirection() работают только
69+
* если указан контакт МК при создании объекта Sensor
70+
*/
71+
// Положительное направление против часовой стрелки
72+
//Sensor.setDirection(AS5600_DIRECTION_POLARITY_COUNTERCLOCKWISE);
73+
// Положительное направление по часовой стрелке
74+
//Sensor.setDirection(AS5600_DIRECTION_POLARITY_CLOCKWISE);
75+
}
76+
77+
void loop() {
78+
if(millis() - last_time > 5000) { // Если прошло больше пяти секунд
79+
Sensor.reverseDirection(); // Сменить направление на противоположное
80+
81+
if(Sensor.getDirection()) { // Если 1, против часовой стрелки
82+
Serial.println();
83+
Serial.println("Direction COUNTERCLOCKWISE:");
84+
}else { // Если 0, по часовой стрелке
85+
Serial.println();
86+
Serial.println("Direction CLOCKWISE:");
87+
}
88+
89+
last_time = millis(); // Запомнить время
90+
}
91+
92+
Serial.println(Sensor.getRawAngle()); // Выводим текущее значение угла в формате АЦП
93+
delay(100);
94+
}

0 commit comments

Comments
 (0)