Перейти к публикации

Рекомендованные сообщения

Опубликовано:

@WG_Magners Подскажи, пожалуйста:

Для ADS1115 Работает адресация? Можно подключить их 4 шт с разными адресами?

AS5600 сколько можно подключить? Если больше чем 1, то как назначать им адреса?

Опубликовано:
7 часов назад, =VCC=Ghash34 сказал:

а пины d+ и d- не могли перепутаться?

PA11 - D-

PA12 - D+

 

2 часа назад, MYCYJIbMAHUH сказал:

HT66F30

Документация говорит, что это микроконтроллер

Опубликовано:
2 часа назад, Johnet сказал:

@WG_Magners Подскажи, пожалуйста:

Для ADS1115 Работает адресация? Можно подключить их 4 шт с разными адресами?

AS5600 сколько можно подключить? Если больше чем 1, то как назначать им адреса?

Для ADS1115 есть 4 варианта адресов в зависимости от подключения ноги ADDR. Меняются только два бита в адресе, они и отображены в конфигураторе:

Screenshot_20200421-102649.thumb.png.9a656d041a42c57ef53ae7468cbbfa88.png

 

AS5600 можно подключать только одну штуку

  • Спасибо! 1
Опубликовано:
2 минуты назад, l3VGV сказал:

Так а шо там с VID/PID, получилось? Выдали?

Pull request так и висит, ребята видимо перестали этим заниматься. Последний раз они 4 месяца назад кому-то подтверждали PID

Опубликовано:

Грусть, тоска, печаль. 

 

Предлагаю использовать VID 0xBEEF, ну а пид уже как на душу ляжет.

 

ST врятли выдадут на любительский проект.

Опубликовано:
8 минут назад, l3VGV сказал:

Грусть, тоска, печаль. 

 

Предлагаю использовать VID 0xBEEF, ну а пид уже как на душу ляжет.

 

ST врятли выдадут на любительский проект.

Я не вижу смысла менять сейчас VID. Раз уж не дают легальный, то какая разница какой будет.

В дескрипторе указан производитель ST и стоит их VID (и PID по умолчанию это PID этой линейки контроллеров), так что вроде это даже не особо нарушение. Просто используем их железо без присвоения.

Могу ошибаться, не силен в этом вопросе

Опубликовано:

@WG_Magners Еще такой вопросик. Можно ли сделать так, что бы нельзя было выбрать номер канала, который устройство не содержит? А то сколько входных каналов не было бы можно выбрать любой из восьми? 

Опубликовано: (изменено)
3 минуты назад, Johnet сказал:

@WG_Magners Еще такой вопросик. Можно ли сделать так, что бы нельзя было выбрать номер канала, который устройство не содержит? А то сколько входных каналов не было бы можно выбрать любой из восьми? 

Сложновато( я хотел сделать, но не очень красиво получается. Может потом придумаю чего с этим.

Меня вообще этот конфигуратор бесит. Научусь нормально qt (надеюсь) и сяду переписывать

Изменено пользователем WG_Magners
Опубликовано:

Немного к теме про сложность обвязки внешних АЦП MCP320x. Вот все три варианта: 

IMG_20200421_195828.thumb.jpg.22b756312af16bb4b80d11dbc740ebad.jpg

IMG_20200421_200044.thumb.jpg.9ffd7e0e37994e194e64e6baf5590f85.jpg

 

Опубликовано:

Почитал немного исходники. Посравнивал свой код рабты 5010.

 

У вас всё на 64 делителе, а я запускал на 32. Но там начинается своя жизнь внутри кривой переферии SPI. Оно в принципе будет работать, на коротких проводах. Но нужно в код который выключает SPI по окончанию приёма добавить ожидание собственно приема лишнего байта, и очистку буфера.

 

У меня это в функции HAL_SPI_Receive, но смысл одинаковый. Оно даже в ерате описано. Если медленно жить то всё нормально. И провода можно, с локоть.

volitile uin8_t ttt;

  /* Check the end of the transaction */
  if((hspi->Init.Mode == SPI_MODE_MASTER)&&((hspi->Init.Direction == SPI_DIRECTION_1LINE)||(hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY)))
  {
    /* Disable SPI peripheral */
    __HAL_SPI_DISABLE(hspi);
    
    while(!__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)){};
    ttt = hspi->Instance->DR;
  }

 

 

 

Также посмотрел код адс1115, тоже есть некоторые сомнения. Надежный старт i2c переферии он не гарантирован, для 103 всех серий. А у вас это похоже не учтено. Там смысл в том, что иногда i2c может залипнуть, как при инициализации, так и во время работы(это я выяснил на собственно, крайне неприятном опыте). Нужно предусмотреть код который проверяет статусы возврата, и если что - перезапустить её. У меня вообще ногодрыгом сделано. Скорости там смешные, и это всё просто лишнее.

  /* USER CODE BEGIN I2C1_Init 2 */

  struct I2C_Module i2cm1;
  i2cm1.instance = hi2c1;
  i2cm1.sclPin  =GPIO_PIN_8;
  i2cm1.sclPort =GPIOB;

  i2cm1.sdaPin = GPIO_PIN_9;
  i2cm1.sdaPort =GPIOB;


  HAL_Delay(100);
  while(HAL_I2C_Master_Transmit(&hi2c1, ADS1115_ADDRESS, ADSwrite, 3, 100) != HAL_OK)
  {
      HAL_Delay(10);
      I2C_ClearBusyFlagErratum(&i2cm1);
      HAL_Delay(5);
  }

  /* USER CODE END I2C1_Init 2 */

 

 

void I2C_ClearBusyFlagErratum(struct I2C_Module* i2c)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  // 1. Clear PE bit.
  i2c->instance.Instance->CR1 &= ~(0x0001);

  //  2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level (Write 1 to GPIOx_ODR).
  GPIO_InitStructure.Mode         = GPIO_MODE_OUTPUT_OD;
  //GPIO_InitStructure.Alternate    = I2C_PIN_MAP;
  GPIO_InitStructure.Pull         = GPIO_PULLUP;
  GPIO_InitStructure.Speed        = GPIO_SPEED_FREQ_HIGH;

  GPIO_InitStructure.Pin          = i2c->sclPin;
  HAL_GPIO_Init(i2c->sclPort, &GPIO_InitStructure);
  HAL_GPIO_WritePin(i2c->sclPort, i2c->sclPin, GPIO_PIN_SET);
  HAL_Delay(1);

  GPIO_InitStructure.Pin          = i2c->sdaPin;
  HAL_GPIO_Init(i2c->sdaPort, &GPIO_InitStructure);
  HAL_GPIO_WritePin(i2c->sdaPort, i2c->sdaPin, GPIO_PIN_SET);
  HAL_Delay(1);

  // 3. Check SCL and SDA High level in GPIOx_IDR.
  while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sclPort, i2c->sclPin))
  {
    asm("nop");
  }

  while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sdaPort, i2c->sdaPin))
  {
    asm("nop");
  }

  // 4. Configure the SDA I/O as General Purpose Output Open-Drain, Low level (Write 0 to GPIOx_ODR).
  HAL_GPIO_WritePin(i2c->sdaPort, i2c->sdaPin, GPIO_PIN_RESET);
  HAL_Delay(1);

  //  5. Check SDA Low level in GPIOx_IDR.
  while (GPIO_PIN_RESET != HAL_GPIO_ReadPin(i2c->sdaPort, i2c->sdaPin))
  {
    asm("nop");
  }

  // 6. Configure the SCL I/O as General Purpose Output Open-Drain, Low level (Write 0 to GPIOx_ODR).
  HAL_GPIO_WritePin(i2c->sclPort, i2c->sclPin, GPIO_PIN_RESET);
  HAL_Delay(1);

  //  7. Check SCL Low level in GPIOx_IDR.
  while (GPIO_PIN_RESET != HAL_GPIO_ReadPin(i2c->sclPort, i2c->sclPin))
  {
    asm("nop");
  }

  // 8. Configure the SCL I/O as General Purpose Output Open-Drain, High level (Write 1 to GPIOx_ODR).
  HAL_GPIO_WritePin(i2c->sclPort, i2c->sclPin, GPIO_PIN_SET);
  HAL_Delay(1);

  // 9. Check SCL High level in GPIOx_IDR.
  while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sclPort, i2c->sclPin))
  {
    asm("nop");
  }

  // 10. Configure the SDA I/O as General Purpose Output Open-Drain , High level (Write 1 to GPIOx_ODR).
  HAL_GPIO_WritePin(i2c->sdaPort, i2c->sdaPin, GPIO_PIN_SET);
  HAL_Delay(1);

  // 11. Check SDA High level in GPIOx_IDR.
  while (GPIO_PIN_SET != HAL_GPIO_ReadPin(i2c->sdaPort, i2c->sdaPin))
  {
    asm("nop");
  }

  // 12. Configure the SCL and SDA I/Os as Alternate function Open-Drain.
  GPIO_InitStructure.Mode         = GPIO_MODE_AF_OD;
  //GPIO_InitStructure.Alternate    = I2C_PIN_MAP;

  GPIO_InitStructure.Pin          = i2c->sclPin;
  HAL_GPIO_Init(i2c->sclPort, &GPIO_InitStructure);
  HAL_Delay(1);

  GPIO_InitStructure.Pin          = i2c->sdaPin;
  HAL_GPIO_Init(i2c->sdaPort, &GPIO_InitStructure);
  HAL_Delay(1);

  // 13. Set SWRST bit in I2Cx_CR1 register.
  i2c->instance.Instance->CR1 |= 0x8000;

  asm("nop");
  HAL_Delay(1);

  // 14. Clear SWRST bit in I2Cx_CR1 register.
  i2c->instance.Instance->CR1 &= ~0x8000;

  asm("nop");
  HAL_Delay(1);

  // 15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register
  i2c->instance.Instance->CR1 |= 0x0001;
  HAL_Delay(1);

  // Call initialization function.
  HAL_I2C_Init(&(i2c->instance));
  HAL_Delay(1);
}

 

Опубликовано:
16 минут назад, l3VGV сказал:

64 делителе, а я запускал на 32

Это на какой частоте тактирования? TLE по даташиту не может в SPI быстрее частоты своего тактирования деленной пополам, т.е. 2МГц. У меня мк работает на 72Мгц, если делить на 32, то получается больше 2МГц. Поэтому делю на 64, и там выходит 1МГц с копейками (на осциллографе я видел 1.2 если правильно помню). Когда запускал на делителе 32 был некоторый процент ошибок, поэтому решил отказаться. Не так много там экономии ради того чтобы на предельных режимах работать.
У меня ж весь SPI на DMA, поэтому пусть себе ковыряется как угодно медленно, лишь бы успевал все датчики за 2мс опросить

 

26 минут назад, l3VGV сказал:

А у вас это похоже не учтено

Если я правильно понимаю о чем речь, то опрос флагов ошибок у меня идет в обработчике прерывания I2C1_ER_IRQHandler. I2C в 103м мерзопакостный, из-за того что  задействован ремап нельзя I2C в неблокирующем режиме использовать, они друг другу мешать будут :( Приходится процессорное время на опрос тратить. 

Если б начинал проект с этими знаниями - использовал бы другие ноги для SPI и I2C.

 

 

 

 

Опубликовано: (изменено)
13 минут назад, WG_Magners сказал:

Это на какой частоте тактирования?

Так это ещё и какие делители для APB выбирать.  Но смысл в том, что можно немного выше 2 подняться. если акуратно! А может мне просто повезло с конкретным экземпляром датчика.

 

У меня сейчас без дма, уходит примерно 10к тактов на опрос и подсчет CRC. Если датчиков 8, и опрашивать их хочется безумно часто, то экономия имеет смысл.

 

Кстате о CRC, сделайте массив из 256 элементов, заранее посчитайте туда всё. А потом по индексу во время работы получайте нужное, чтобы не считать каждый раз.

 

 

13 минут назад, WG_Magners сказал:

Если я правильно понимаю о чем речь, то опрос флагов ошибок у меня идет в обработчике прерывания I2C1_ER_IRQHandler

 

А желательно начать прямо в инициализации. Потому что есть шанс что не заведется. Я педали сделал. На столе стоят - работают. Под стол ставлю - не работают. Поднимаю проверить что не так - работают. Там защита от наводок с ума сходит иногда, и оно залипает. Если верно помню ерату.

 

 

13 минут назад, WG_Magners сказал:

I2C в 103м мерзопакостный

 

На данный момент не нашел ни одной перефирии, которая работала бы без косяков особенностей. Крайне сильно устал.

 

 

Изменено пользователем l3VGV
Опубликовано:
2 минуты назад, l3VGV сказал:

А желательно начать прямо в инициализации. Потому что есть шанс что не заведется

С таким ещё не сталкивался, но на всякий случай добавлю, спасибо. Еррату совсем недавно читал, но наверное пропустил этот момент

5 минут назад, l3VGV сказал:

ни одной перефирии

Но I2C - мой лидер по количеству доставленного геморроя. Пора организовывать клуб потерпевших от STM32)

Опубликовано:
uint8_t crcTable[256];

uint8_t CalcCRC(uint8_t * buf, uint8_t len) {
        const uint8_t * ptr = buf;
        uint8_t _crc = 0xFF;

        while(len--) _crc = crcTable[_crc ^ *ptr++];

        return ~_crc;
}

void CRCInit(void) {
        uint8_t _crc;
        for (int i = 0; i < 0x100; i++) {
                _crc = i;

                for (uint8_t bit = 0; bit < 8; bit++) _crc = (_crc & 0x80) ? ((_crc << 1) ^ 0x1D) : (_crc << 1);

                crcTable[i] = _crc;
        }
}




....
  
	  buf_to_crc[0] = 0;//was writen to 5010 as 00 comand
	  buf_to_crc[1] = 0b10001100;//was writen to 5010 as 0x8C comand

	  buf_to_crc[2] = data[0];
	  buf_to_crc[3] = data[1];
	  buf_to_crc[4] = data[2];
	  buf_to_crc[5] = data[3];

	  calced_crc = CalcCRC(buf_to_crc, 6);  
  
  ....

 

Опубликовано:

По результатам эксперементов с длинной проводов до 5010, предлагаю добавить настройку скорости SPI. Для особо длинных случаев(трехосевые педали и всякие огромные РУДы).

  • Нравится 1
  • Поддерживаю! 1
Опубликовано:
40 минут назад, l3VGV сказал:

По результатам эксперементов с длинной проводов до 5010, предлагаю добавить настройку скорости SPI. Для особо длинных случаев(трехосевые педали и всякие огромные РУДы).

Можно уточнить, во время экпериметов 5010 использовался с согласованием 3.3В<->5В?

Опубликовано:

Без преобразования уровней, просто воткнул всё на 5В толерант пины.

Опубликовано:
1 час назад, l3VGV сказал:

По результатам эксперементов с длинной проводов до 5010, предлагаю добавить настройку скорости SPI.

Хотелось бы какой то критерий для определения качества связи по SPI для того что бы пользователь мог бы выбирать скорость, в зависимости от количества ошибок на линии интерфейса.

Опубликовано:

Несовпадение CRC, единственный критерий. Не совпало - ошибка передачи.

Опубликовано: (изменено)
8 минут назад, l3VGV сказал:

Несовпадение CRC, единственный критерий. Не совпало - ошибка передачи.

@WG_Magners

Вот вот... Его бы и хотелось бы))) У того же мегамозга был счетчик ошибок в единицу времени для определения качества связи с каждым датчиком. Очень удобно.

Изменено пользователем Johnet
  • Поддерживаю! 1
Опубликовано:
59 минут назад, WG_Magners сказал:

Можно уточнить, во время экпериметов 5010 использовался с согласованием 3.3В<->5В?

 

Пусть тут будет

 

двунаправленный соглосоватор уровней. по скорости неясно, чот эти 10к резисторы, не внушают оптимизма.

image.png.9e37f2ab2bb91cd74dea74be6b4f5532.png

Опубликовано:
45 минут назад, l3VGV сказал:

Без преобразования уровней, просто воткнул всё на 5В толерант пины.

Скорее всего из-за этого проблема, а не из-за скорости. Выходной уровень логической единицы на МК не дотягивает до нижнего порога единицы в датчике. Мы с @=M=PiloT такие тесты проводили, 5010 при 5В работает, но "на тоненького". Как раз провода или уровень напряжения USB могут влиять. 

 

Для чистоты эксперимента лучше перепроверить на 5011 или с согласованием. Или если совсем грубо, бахнуть по питанию 5010 последовательный диод, чтоб уронить питание до ~4.5В, тем самым опустив нижную границу для лог. единицы.

Опубликовано:

Это врятли, там такой овершот судя скопу, что уровня точно хватает. Но регистры закажу, как приедут попробую, расскажу.

Опубликовано:
13 минут назад, l3VGV сказал:

Это врятли, там такой овершот судя скопу, что уровня точно хватает. Но регистры закажу, как приедут попробую, расскажу.

По документации на 5010 нижний уровень логической единицы равен 0.7*VCC, что при 5В питания уже 3.5В..

А если учесть что USB не возбраняется быть больше 5В, то вот вам и здрасьте.

1 час назад, Johnet сказал:

@WG_Magners

Вот вот... Его бы и хотелось бы))) У того же мегамозга был счетчик ошибок в единицу времени для определения качества связи с каждым датчиком. Очень удобно.

Внутри программы эти счётчики есть. Ок, добавлю в список фич на будущее

  • Нравится 1
Опубликовано:
2 часа назад, WG_Magners сказал:

Скорее всего из-за этого проблема, а не из-за скорости. Выходной уровень логической единицы на МК не дотягивает до нижнего порога единицы в датчике. Мы с @=M=PiloT такие тесты проводили, 5010 при 5В работает, но "на тоненького". Как раз провода или уровень напряжения USB могут влиять. 

 

Для чистоты эксперимента лучше перепроверить на 5011 или с согласованием. Или если совсем грубо, бахнуть по питанию 5010 последовательный диод, чтоб уронить питание до ~4.5В, тем самым опустив нижную границу для лог. единицы.

Исправление этой ошибки сопутствовала и удача и инструкция от автора ПО. Я собирал тестовый на столе для сборки устройств питаясь к ЮСБ через удлинитель ~4 метра, после сборки заюзал родной кабель джойстика в 1.5 метра и встал один датчик ТЛЕ5010, замерил питание по каналу 5 вольт, получил цитату:

Цитата

на ТЛЕ пин +5вольт показывает 4.98, с удлинителем 4.72 - видимо правильно идем

и в результате на 1.5 метра ЮСБ кабель получили 4.62 вольта заколхозив временно диод на 5 вольт дорожку, с тех пор ни одного падения ТЛЕ не зафиксировано.

Надежность теста 100%, с питанием вышло очень удачно, тк это позволило лицезреть "баг" на ранней стадии. Очень наглядно вышло.

2 часа назад, l3VGV сказал:

Это врятли, там такой овершот судя скопу, что уровня точно хватает. Но регистры закажу, как приедут попробую, расскажу.

ТЛЕ начинал работать ...ммм..ну очень похоже на "слайд шоу" когда фпс в игре падает, так?

Приложи палец на пины ТЛЕ затрагивая +и -, у меня так падало напряжение и ТЛЕ оживал.

 

Опубликовано:

Продолжаю изучение кода проекта.

 

Обратил внимание что для общения по сервисным делам выделен специальный репорт. А нет желания сделать всё скрытно через контрол ендпоинт?

 

Опубликовано: (изменено)
1 час назад, l3VGV сказал:

Продолжаю изучение кода проекта.

 

Обратил внимание что для общения по сервисным делам выделен специальный репорт. А нет желания сделать всё скрытно через контрол ендпоинт?

 

Я не знаю как мне со стороны ББ это организовывать.

Так у меня есть библиотека HID, которая худо-бедно после доработок меня удовлетворяет. А ковыряться самому в конечных точках на хосте у меня нет особого желания.

 

Если это предложение сделать лучше, чем есть - то я только за. У нас комьюнити уже потихоньку начинает делать pull request-ы

Изменено пользователем WG_Magners
Опубликовано: (изменено)

Я по примерно темже причинам сделал примерно также. Только не обновление фирмвари а установку текста на дисплей.

 

И иногда, оно намертво виснет. Прицепляю отладчик и жду фаулта - не виснет. Крайне деморализующее поведение.

 

 

Как только переделаю своё на вендор реквесты, то поделюсь результатами. Но ток постаринке. Через форумы.

 

 

Цитата

Илья Муромец рассказывает, как он сражался с Лернейской гидрой:
- Отрубаю ей голову - на её месте четыре вырастают. Четыре отрубаю - три вырастают. Три отрубаю - семь вырастают.
- Ну и чё?
- Полчаса рубил - никакой закономерности!

Примерно так и у нас, на Stm32.

Изменено пользователем l3VGV
  • 2 недели спустя...
Опубликовано: (изменено)

Наткнулся на такую штуковина #Aliexpress 163,40 руб.  14%OFF | AS5600 абсолютное значение энкодер код комплект PWM I2C Интерфейс Порты и разъёмы точность 12-разрядный модуль для бесщеточный PTZ Gimbal/поддона двигателя
https://a.aliexpress.ru/_eLPTgk не кто не пробовал? Или вот #Aliexpress 682,73 руб.  16%OFF | AS5048 Магнитный энкодер наборы ШИМ и SPI интерфейс точность 14 бит без держатель щетки as5048a поворотный датчик для бесщеточного двигателя
https://a.aliexpress.ru/_etgfPS

Изменено пользователем FlyingTiger_
  • Нравится 1
Опубликовано:
19 минут назад, FlyingTiger_ сказал:

Наткнулся на такую штуковина #Aliexpress 163,40 руб.  14%OFF | AS5600 абсолютное значение энкодер код комплект PWM I2C Интерфейс Порты и разъёмы точность 12-разрядный модуль для бесщеточный PTZ Gimbal/поддона двигателя
https://a.aliexpress.ru/_eLPTgk не кто не пробовал? Или вот #Aliexpress 682,73 руб.  16%OFF | AS5048 Магнитный энкодер наборы ШИМ и SPI интерфейс точность 14 бит без держатель щетки as5048a поворотный датчик для бесщеточного двигателя
https://a.aliexpress.ru/_etgfPS

AS5600 поддерживается в прошивке, AS5048 пока нет, но это временно.

 

AS5600 со спецификой: по цифре (I2C) нельзя подключить больше одного датчика, разрешение меньше чем у TLE501x (но можно подключить по аналоговому каналу). Есть возможность закалибровать диапазон измерений на самом датчике, в прошивке не поддерживается пока, оно конфликтует с калибровкой на контроллере.

AS5048 поинтереснее: подключается по SPI, можно подключать несколько датчиков по цифре, разрешение повыше, так же можно калибровать. В целом выглядит как альтернатива TLE501x, правда дороже.

Опубликовано:

А чем оно фундаментально лучше 5010/11?

1 час назад, FlyingTiger_ сказал:

Наткнулся на такую штуковина #Aliexpress 163,40 руб.  14%OFF | AS5600 абсолютное значение энкодер код комплект PWM I2C Интерфейс Порты и разъёмы точность 12-разрядный модуль для бесщеточный PTZ Gimbal/поддона двигателя
https://a.aliexpress.ru/_eLPTgk не кто не пробовал? Или вот #Aliexpress 682,73 руб.  16%OFF | AS5048 Магнитный энкодер наборы ШИМ и SPI интерфейс точность 14 бит без держатель щетки as5048a поворотный датчик для бесщеточного двигателя

 

Опубликовано:
4 часа назад, l3VGV сказал:

А чем оно фундаментально лучше 5010/11?

 

Да ничем. Разве что больше вариантов выходных интерфейсов.

За рубежом эти датчики почему-то больше котируются, возможно из-за того что у них более понятный производитель.

  • Нравится 1
Опубликовано:
16 часов назад, WG_Magners сказал:

AS5600 поддерживается в прошивке, AS5048 пока нет, но это временно.

 

AS5600 со спецификой: по цифре (I2C) нельзя подключить больше одного датчика, разрешение меньше чем у TLE501x (но можно подключить по аналоговому каналу). Есть возможность закалибровать диапазон измерений на самом датчике, в прошивке не поддерживается пока, оно конфликтует с калибровкой на контроллере.

AS5048 поинтереснее: подключается по SPI, можно подключать несколько датчиков по цифре, разрешение повыше, так же можно калибровать. В целом выглядит как альтернатива TLE501x, правда дороже.

Чего-то я подумал, судя по описанию, что это енкодер. 

Опубликовано:
5 часов назад, FlyingTiger_ сказал:

Чего-то я подумал, судя по описанию, что это енкодер. 

Описание лучше смотреть в документации к датчику, китайцы могут написать что угодно.

Из даташита: "эта бесконтакная система измеряет абсолютный угол поворота магнита диаметральной намагниченности"

Опубликовано:

Хороший магнитный энкодер ябы поставил. Энкодер и мс датчика. Там количество отсчетов на оборот можно такие найти, что на 60градусах будует 65к отсчетов. Кроме дисков есть и полосы, для линейных рудов. Но в свободной розничной продаже всего этого - нет.

Опубликовано: (изменено)
20 часов назад, l3VGV сказал:

полосы, для линейных рудов. Но в свободной розничной продаже всего этого - нет.

Да нет, Вот что нашел:

https://aliexpress.ru/item/4000418596985.html?spm=a2g0o.productlist.0.0.3c9e4d15tmYAjh&algo_pvid=0918cf9e-47f7-4227-9ea5-61c1469967c0&algo_expid=0918cf9e-47f7-4227-9ea5-61c1469967c0-3&btsid=0b8b034115884814717236477ed955&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

Например. 

Если не ошибаюсь, можно без переделок подключать... Конечно, недешево...

Изменено пользователем Johnet
Опубликовано: (изменено)
7 часов назад, Johnet сказал:

Вот что нашел

 Возможно оно. Полагаю ценник от длинны будет не совсем линейно масштабироваться.

 

Судя по разрешению в 5мкм, внутри может быть фиговина подобная той что в электронных штангелях(хотя написано магентик грид...).

 

Думал такую самостоятельно сделать, это не сложно. Потом всё задавила лень. Да и эти энкодеры они не абсолютные, т.е. каждое включение нужно искать ноль, или держать питание включеным, что для юсб в принципе возможно.

Изменено пользователем l3VGV
Опубликовано:
10 часов назад, Johnet сказал:

Например.

Линейный РУД, для чего? Чтоб за дорого лишить себя "угловой тактильости" положения РУДа?)) Не плати за эту идею ни рубля

Опубликовано:
12 часов назад, l3VGV сказал:

Да и эти энкодеры они не абсолютные, т.е. каждое включение нужно искать ноль,

Там у них канал сброса на 0 есть, т.е. кнопка нажимается при 0 положении.

 

9 часов назад, =M=PiloT сказал:

Линейный РУД, для чего?

Для любителей СУ-27, например.

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...