Тензоджойстик на трёх весовых датчиках.
Ещё компактнее и дешевле!
( Первая часть: Тензоджойстик на четырёх весовых датчиках )
Так как модуль HX711 намного дешевле весового датчика, имеет смысл сократить количество весовых датчиков до трёх. Я попробовал это сделать и так получился джойстик с тремя весовыми датчиками и с тремя модулями HX711.
Три весовых датчика расположены на основании джойстика так, чтобы образовался круговой массив с шагом 120 градусов. Вес руки не смещает центровку, давление на каждую балку компенсируется давлением на две другие балки, так как косинус 120 градусов равен -0,5.
На всех трёх модулях HX711 перемычка установлена в положение "80Hz".
В Ардуино синхронно считывается последовательный код с контактов DTA, DTB, DTC, по общему управляющему сигналу SCK3, идущему из Ардуино.
Тензобалки закреплены на основании так, чтобы образовался круговой массив из трёх балок с шагом 120 градусов, симметричный относительно центра. Угол установки датчиков относительно РУС может быть любым. Угол задаётся в скетче.
Таким образом, весовые датчики могут быть установлены "звездой":
#define rotation_angle 30
#define rotation_angle 30
#define rotation_angle 0
или "треугольником":
#define rotation_angle 120
#define rotation_angle 120
В конце концов, я выбрал расположение весовых датчиков треугольником.
В самой удобной зоне на основании слева от РУС остаётся ещё больше места для кнопок и дополнительных осей, по сравнению с вариантом с четырьмя весовыми датчиками.
#define rotation_angle 120
вид снизу на весовые датчики
Новый эскиз разметки верхней треугольной и нижней квадратной панелей сразу для всех моих вариантов крепления балок в Spint-Layout 6.0:
Разметка: Tenzo3_Holes.lay6
Настройки скетча
Обновлённый скетч LoadCellsJoy_221117.rar поддерживает РУС с четырьмя или с тремя весовыми датчиками. Настройки скетча в основном остались прежние. Добавилось лишь несколько новых настроек.
#define useHX711 2
0 - используется 4 весовых датчика и 2 ОУ INA122
1 - используется 4 весовых датчика и 2 модуля HX711
2 - используется 3 весовых датчика и 3 модуля HX711 ( новый вариант )
Для варианта с тремя весовыми датчиками добавлены настройки контактов Arduino Pro Micro, к которым подключены три модуля HX711 с общим сигналом SCK3:
#define SCK3 4 // D4/A6 - SCK3
#define DTA 5 // D5 - A channel
#define DTB 6 // D6/A7 - B channel
#define DTC 7 // D7 - C channel
Правильное направление отклонения РУС при любом расположении весовых датчиков на основании задаётся настройками:
#define rotation_angle 120
#define invertX 0
#define invertY 0
Иногда может понадобиться поменять местами контакты в любых из двух каналов DTA, DTB, DTC.
В варианте с тремя весовыми датчиками к каждому модулю HX711 подключен только один весовой модуль. Поэтому чувствительность отклонения РУС от прикладываемого усилия увеличилась ровно в два раза. В результате мне пришлось увеличить hardstick и softstick тоже ровно в два раза:
#define hardstick 2*512
#define softstick 2*200
Это привело к уменьшению шума РУС тоже в два раза, что, в свою очередь, позволяет увеличить вдвое выходной диапазон осей X и Y:
#define maxaxe 4094
Все остальные настройки скетча не изменились.
Видео
Ссылки
Скетч LoadCellsJoy_221117.rar
Разметка Tenzo3_Holes.lay6
Первая часть: Тензоджойстик на четырёх весовых датчиках
Третья часть: Почти FFB Тензоджойстик.