На прохання Вадима UY7VV запрограмував йому Ардуино 2560 для поворотки з графічним екраном (дисплеєм). Ідею я підглянув у двох індусів, тоді вона мені сподобалася. Ну екран краще коли круглий :-) Але алгоритм мені здався незграбним і я кинувся вигадувати свій.
Але поплатився за свою самовпевненість. На раненем етапі цілком влаштовувала помилка в один-два градуса. Ну і правда, подивитеся на "шкалу" повороток Yaesu, наприклад. Точніше за 2-3 градуси все одно не визначити. І не факт, що стрілка (антена) точно обернеться на потрібний азимут....... Калібрувати потрібно :-(
Але любителів "точної" цифрової техніки цим не переконати. У мене в душі теж такий живе. Написаний мною код - напівплагіат, втім я цього і не приховую: якщо якусь роботу зробив сусід по парті, то чому не скористатися плодами його праці? :-)
Перше, з чим я став боротися - інтервал між натисненнями кнопок :- ( Менше 3-х секунд не виходить. Працює не стабільно. Враження неначе кнопки старі, протерті. Як ті, якими грали в Контер Страйк :-) Ну гаразд, це можна було б і не помітити. Але ось помилка в 3 градуси (іноді менше) засмучує грунтовно.
Тут немає "опорної" напруги, яку зазвичай отримують або з энкодера або з потенціометра. Кут, на який треба повернути, задається в цифровому виді кнопками. І помилку обчислювати можна тільки в градусах. Причому цілих. Той момент, який мені спочатку дуже сподобався, - мала швидкість при старті і стопі - обертається при такому розкладі вгадуванням на скільки потрібно "затримати" мотор щоб він не "проскочив" вказаний кут. Тобто потрібно вводити поправку в обчислення. Помилку (у градусах) менше двох ставити не можна, інакше виникнуть автоколивання, а з урахуванням розгону і зупинки часто буває що поворотка зупиняється на 3 градуси більше ніж замовили з кнопок :- ( Или менше :-(
В принципі якщо цію помилку манкірувати, то все працює як потрібно для практичного застосування. Але баба Яга проти. Куди простіший управлятель (учбовий: -) працює з більшою точністю зупинки. Я спробував застосувати математику, тобто переводив вказаний кнопкакми кут в одиниці АЦП (доступно 1023), але при цьому точніше визначити кут не виходить із-за погрішності обчислень. INT, FLOAT DUBLE :- ( Може неохайно робив, хоча витратив вечір суботи і ось вже півдня воскресіння.... Може у кого є ідеї трохи краще? Буду вдячний.