Форум РадиоКот https://radiokot.ru/forum/ |
|
Убийца IPho... Wacom (Intuos/Cintiq) https://radiokot.ru/forum/viewtopic.php?f=3&t=132915 |
Страница 1 из 1 |
Автор: | spiderman'60 [ Пн июн 27, 2016 15:24:36 ] |
Заголовок сообщения: | Убийца IPho... Wacom (Intuos/Cintiq) |
Здравствуйте, уважаемые радиокоты! Сам я далёк от электронного ремесла, но в качестве хобби пытаюсь сделать (хоть в каком-нибудь первом приближении) графический планшет (для тех, кто не в курсе, что это: https://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BF%D0%BB%D0%B0%D0%BD%D1%88%D0%B5%D1%82). Что имеется на сегодняшний день АЦП AD9280, ATtiny44A и Raspberry Pi для произведения каких-либо осмысленных действий с АЦП и микроконтроллером: Печатная плата с типа антеннами, предназначенная для определения положения пера вдоль одной оси (Х или У): Общая линия земли, от которой отходят все эти спирали, у которых другие концы подключены каждый к своей линии питания - всего 32 штуки. Размеры одной антенны: 6мм x ~200мм. Перо: На ферритовый стержень намотано 50 витков медного провода диаметром 0.1 мм, подключено к АЦП. Схема: Катушка LPEN - это перо, подключенное к АЦП; катушки L1-L4 - это 4 подключенные антенны на печатной плате (остальные не подключены никак); RB-P - это Raspberry Pi, которая даёт команды микроконтроллеру, чтобы тот начал по очереди включать катушки L1-L4 и АЦП для считывания уровня сигнала с пера, результат с АЦП идёт напрямую в Raspberry Pi. Принцип работы: катушка в пере - это раз, катушка на печатной плате - это два, "переменный" ток по печатной плате - это три, индуцированный ток в пере - это четыре. Переменный ток получается путём смены логического нуля на логическую единицу на одной из ножек микроконтроллера. Ножка подключена к базе транзистора, который порождает ток по одной из подключённых антенн печатной платы. Скачок тока по антенне индуцирует ток в пере. Прошивка микроконтроллера: СпойлерКод: #include <avr/io.h> #include <avr/power.h> #include <util/delay.h> #include "basic.h" #define ADC_CLK_PORT B #define ADC_CLK_PIN 2 #define RBP_REQ_PORT B #define RBP_REQ_PIN 0 #define RBP_RESP_PORT B #define RBP_RESP_PIN 1 #define TBL_CLK_0_PORT A #define TBL_CLK_0_PIN 0 #define TBL_CLK_1_PORT A #define TBL_CLK_1_PIN 1 #define TBL_CLK_2_PORT A #define TBL_CLK_2_PIN 2 #define TBL_CLK_3_PORT A #define TBL_CLK_3_PIN 3 int main(void) { clock_prescale_set(clock_div_1); /* Configure pins */ CONF_IN(RBP_REQ); CONF_OUT(RBP_RESP); CONF_OUT(ADC_CLK); CONF_OUT(TBL_CLK_0); CONF_OUT(TBL_CLK_1); CONF_OUT(TBL_CLK_2); CONF_OUT(TBL_CLK_3); /* Init state */ SET_0(RBP_RESP); SET_1(ADC_CLK); SET_0(TBL_CLK_0); SET_0(TBL_CLK_1); SET_0(TBL_CLK_2); SET_0(TBL_CLK_3); again: /* Process L1 */ WAIT_1(RBP_REQ); SET_1(RBP_RESP); WAIT_0(RBP_REQ); SET_0(ADC_CLK); SET_1(TBL_CLK_0); SET_1(ADC_CLK); SET_0(TBL_CLK_0); SET_0(RBP_RESP); /* Process L2 */ WAIT_1(RBP_REQ); SET_1(RBP_RESP); WAIT_0(RBP_REQ); SET_0(ADC_CLK); SET_1(TBL_CLK_1); SET_1(ADC_CLK); SET_0(TBL_CLK_1); SET_0(RBP_RESP); /* Process L3 */ WAIT_1(RBP_REQ); SET_1(RBP_RESP); WAIT_0(RBP_REQ); SET_0(ADC_CLK); SET_1(TBL_CLK_2); SET_1(ADC_CLK); SET_0(TBL_CLK_2); SET_0(RBP_RESP); /* Process L4 */ WAIT_1(RBP_REQ); SET_1(RBP_RESP); WAIT_0(RBP_REQ); SET_0(ADC_CLK); SET_1(TBL_CLK_3); SET_1(ADC_CLK); SET_0(TBL_CLK_3); SET_0(RBP_RESP); goto again; return 0; } Алгоритм: ждёт команды от Raspberry Pi, потом запускает АЦП (ADC_CLK <- 0), открывает вентиль для катшуки L1 (TBL_CLK_0 <- 1), останавливает АЦП (ADC_CLK <- 1), закрывает вентиль (TBL_CLK_0 <- 0), сигнализирует о готовности Raspberry Pi (RBP_RESP <- 0). Raspberry Pi считывает данные с АЦП и даёт команду микроконтроллеру для следующей итерации, где отработают таким же образом антенны L2-L4. А потом всё по новой. Демонстрация "работы": [youtube]https://youtu.be/SSN1l0t94m4[/youtube] На телевизоре samsung можно видеть в углу серое окно. На нём отрисовывается красными столбиками уровень сигналов с 4-х антенн в зависимости от положения пера. Максимальный уровень сигнала: ~600 милливольт. Всё бы хорошо, но... Помехи (?) [youtube]https://youtu.be/Qkl-XJdk7PY[/youtube] При неподвижном пере уровень сигнала прыгает очень сильно. Для его более-менее стабилизации я использую сглаживающий программный фильтр. На видео видны дёрганья на графиках и в неком числовом виде (то, что прыгают десятые доли - это уже очень плохо). Даже когда к АЦП ничего не подключено уровень сигнала с него не постоянный, а прыгающий +- 100 милливольт (а иногда и больше). По-хорошему, на аппаратном уровне сигнал должен быть как можно более стабильным, чтобы его можно было трактовать как есть без прибегания к программной фильтрации (которая требует несколько десятков сэмплов, что плохо сказывается на отзывчивости в целом). Немонотонный сигнал с антенн Когда перо начинает двигаться от границы двух антенн к центру одной из антенн, уровень сигнала начинает повышатся для обоих антенн (не в равной степени, между прочим. Сигнал повышается быстрее для той антенны, в сторону которой движется перо). Потом внезапно сигнал для отдаляющейся антенны резко спадает до почти нуля и остаётся только сигнал для приближающейся антенны. Здесь нужно, чтобы при движении пера уровень сигнала менялся по вполне себе определённому закону, чтобы для минимального изменения положения пера можно было бы сопоставить некую монотонную функцию. С её помощью можно будет получить физические координаты пера. Может быть, у кого-нибудь есть мысли, что можно сделать, чтобы решить эти проблемы? |
Автор: | sa-ta [ Вт июн 28, 2016 15:56:59 ] |
Заголовок сообщения: | Re: Убийца IPho... Wacom (Intuos/Cintiq) |
могу выложить кишочки пера 3 ваком.. если интересно. |
Автор: | spiderman'60 [ Вт июн 28, 2016 19:18:38 ] |
Заголовок сообщения: | Re: Убийца IPho... Wacom (Intuos/Cintiq) |
sa-ta писал(а): могу выложить кишочки пера 3 ваком.. если интересно. Спасибо, но я уже видел внутренности вакомов на форуме http://forum.bongofish.co.uk/ - там люди из Intuos'ов делают типа Cintiq'и. Как я понял, там всё достаточно тонко нужно настроить, чтобы перо работало беспроводно - чтобы такое проделать необходимы точные инструменты... а это немного не тот посыл первоначальной моей идеи. В общем, попробую достать осциллограф, может он прояснит ситуацию... |
Автор: | sa-ta [ Вт июн 28, 2016 20:45:04 ] | |||
Заголовок сообщения: | Re: Убийца IPho... Wacom (Intuos/Cintiq) | |||
spiderman'60 писал(а): Как я понял, там всё достаточно тонко нужно настроить, чтобы перо работало беспроводно - чтобы такое проделать необходимы точные инструменты... ну не знаю, что вы там видели - но в пере емкости на соплях и несколько подстроечников..
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |