Перейти к содержанию

ukr823f

Members
  • Постов

    323
  • Зарегистрирован

  • Посещение

Информация о ukr823f

  • День рождения 07.04.1985

Информация

  • Пол
    Мужчина
  • Город
    Ростов

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    микроконтроллеры

Посетители профиля

2 893 просмотра профиля

Достижения ukr823f

Энтузиаст

Энтузиаст (6/14)

  • 10 постов на форуме
  • Месяц на форуме
  • Год на форуме
  • Неделя на форуме

Последние значки

5

Репутация

  1. Правильно добавил смещение? Осталось еще разобраться насколько это добавленное смещение будет минимизировать ложные сигналы.
  2. Проверил - напряжение 0.10 Вольт на датчике в статичном положении
  3. Не совсем понял как это реализовать. После компаратора стоит МК STM32, который и обрабатывает сформированный меандр .
  4. Я бы не против, чтобы такое не делать. Но бывают ситуации когда без этого "колхоза" ну вот прям никак. Например - установка более новых двигателей с коробкой передач в старые кузова. В современных авто нет датчиков скорости , и все данные о скорости движения авто берется с АБС блока, который в кан шину уже шлет готовую полученную скорость. Но вот в старых кузовах блок АБС такое не умеет, а более новый ЭБУ двигателя, ждет скорости по кан шине :). Как и приборная панель более современная для примера.
  5. Приветствую всех. такой вот вопрос возник. Задача - подключиться параллельно к индуктивным датчикам ABS автомобиля, для получения данных о скоростях вращения колес. Датчики двухпроводные, индуктивные. Уровни напряжений от 200мВ (при малых частотах вращения колес) до 6-12 Вольт ( при высоких частотах вращения колес). Набросал такую схему на компараторе LM293 , и она вроде как работает но не стабильно. Во первых выскакивает ошибка по датчику ABS, во вторых ложные срабатывания появляются, из за чего не стабильно считывается скорость. Может кто подсказать что изменить/добавить в схеме, чтобы работало стабильно? (ошибка вроде ка возникает, после подключения такой схемы к датчику ABS. так как падает сопротивление между землей и сигнальным проводом. Без этой схемы сопротивление около 1.2 кОм, с подключенной схемой - 200 Ом. )
  6. Что то среднее между AD8495 и LMV358 Ну а вообще пусть это будет +- по цене в районе AD8495 но доступное всегда в наличии
  7. Вы можете посоветовать на ваше усмотрение достойный вариант ОУ под однополярное питание для работы с термопарой К-типа . Ну и относительной доступностью так как AD8495 тяжело что то достать)
  8. Посоветовали использовать OP07. Но у меня такой вопрос - питание однополярное 5В. Будет ли нормально OP07 работать? Если что - это я делаю двухканальный термометр на базе термопар К-типа/ Диапазон 100-1000 (1200) градусов Верхний предел по выходному напряжению - 4.5 Вольт
  9. почитал, +- понял про напряжение смещения ОУ. А как тогда скажем так синхронизировать два сдвоенных ОУ, (считай 4 канала) - чтобы измерения были одинаковые при подаче сигнала от одного источника?
  10. Здравствуйте. Столкнулся с такой проблемой - сигнал один и тот же 0-20 mV подаётся на операционные усилители 2шт. ОУ - LMV358. Напряжение питания 5В. При входном напряжении на все каналы 11мВ (подключено всё к одному датчику) - на выходе имеем разброс сигнала от 0.8В до 1В. Что в кодах АЦП естественно - вообще какая то дичь получается. Вопрос - как такой может вообще происходить??? и как сделать так чтобы сигнал на выходе был одним и тем же??? На входе то одинаковый. Пробовал кидать перемычку от массы одного резистора 1К (который на землю идёт) на массу второго резистора 1К... Сигнал немного выравнивается но разница всё же есть...
  11. ukr823f

    USB HID Keyboard STM32F4

    Приветствую всех. Столкнулся с непонимаем -как раьотает код. Делаю имитацию медиа кнопок для управления громкостью, переключением треков в аудиоплеере, запуск аудиоплеера. На STM32F4 собрал простенький проект - просто изменяется громкость вверх и вниз. Сначала собран был просто проект стандартный как все делают в уроках - управление мышью, но потом правдами и неправдами откорректировал дескриптор репорта под мультимедийные кнопки в файле usb_hid.c а так же отредактировал дескриптор конфигцрации USBD_HID_CfgDesc. /* USB HID device Configuration Descriptor */ __ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END = { 0x09, /* bLength: Configuration Descriptor size */ USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ USB_HID_CONFIG_DESC_SIZ, /* wTotalLength: Bytes returned */ 0x00, 0x01, /*bNumInterfaces: 1 interface*/ 0x01, /*bConfigurationValue: Configuration value*/ 0x00, /*iConfiguration: Index of string descriptor describing the configuration*/ 0xE0, /*bmAttributes: bus powered and Support Remote Wake-up */ 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ /************** Descriptor of Joystick Mouse interface ****************/ /* 09 */ 0x09, /*bLength: Interface Descriptor size*/ USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/ 0x00, /*bInterfaceNumber: Number of Interface*/ 0x00, /*bAlternateSetting: Alternate setting*/ 0x01, /*bNumEndpoints*/ 0x03, /*bInterfaceClass: HID*/ 0x00, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/ 0x01, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/ 0, /*iInterface: Index of string descriptor*/ /******************** Descriptor of Joystick Mouse HID ********************/ /* 18 */ 0x09, /*bLength: HID Descriptor size*/ HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/ 0x11, /*bcdHID: HID Class Spec release number*/ 0x01, 0x00, /*bCountryCode: Hardware target country*/ 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/ 0x22, /*bDescriptorType*/ HID_CUSTOM_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/ 0x00, /******************** Descriptor of Mouse endpoint ********************/ /* 27 */ 0x07, /*bLength: Endpoint Descriptor size*/ USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/ HID_EPIN_ADDR, /*bEndpointAddress: Endpoint Address (IN)*/ 0x03, /*bmAttributes: Interrupt endpoint*/ HID_EPIN_SIZE, /*wMaxPacketSize: 4 Byte max */ 0x00, HID_FS_BINTERVAL, /*bInterval: Polling Interval (10 ms)*/ /* 34 */ } ; __ALIGN_BEGIN static uint8_t HID_CUSTOM_ReportDesc[78] __ALIGN_END = { // 78 bytes //------------------------------------------------------------------------------------------// 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x06, // Usage (Keyboard) 0xA1, 0x01, // Collection (Application) 0x85, 0x01, // Report ID (1) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) 0x19, 0xE0, // Usage Minimum (0xE0) 0x29, 0xE7, // Usage Maximum (0xE7) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x95, 0x03, // Report Count (3) 0x75, 0x08, // Report Size (8) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x64, // Logical Maximum (100) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x19, 0x00, // Usage Minimum (0x00) 0x29, 0x65, // Usage Maximum (0x65) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection //------------------------------------------------------------------------------------------// 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x02, // Report ID (2) 0x05, 0x0C, // Usage Page (Consumer) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) 0x09, 0xB5, // Usage (Scan Next Track) 0x09, 0xB6, // Usage (Scan Previous Track) 0x09, 0xB7, // Usage (Stop) 0x09, 0xB8, // Usage (Eject) 0x09, 0xCD, // Usage (Play/Pause) 0x09, 0xE2, // Usage (Mute) 0x09, 0xE9, // Usage (Volume Increment) 0x09, 0xEA, // Usage (Volume Decrement) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection //------------------------------------------------------------------------------------------// }; в основной main файл добавил дефайны. и вот ВОПРОС 1- откуда взялись эти коды??? я перепроверил кучу описаний - с этими кодами ничего не совпадает. Но с ними то всё работает))) , Я пробовал банально 0x40 менять на 0x41 - и ничего не работало. Вот где описание - откуда взялись эти коды и как они работают? // USB media codes #define USB_HID_SCAN_NEXT 0x01 #define USB_HID_SCAN_PREV 0x02 #define USB_HID_STOP 0x04 #define USB_HID_EJECT 0x08 #define USB_HID_PAUSE 0x10 #define USB_HID_MUTE 0x20 #define USB_HID_VOL_UP 0x40 #define USB_HID_VOL_DEC 0x80 Отправка репорта происходит вот этой функцией. Где buffer[0]=2; - Это я так понимаю ID репорта, то есть как раз вот оно - 0x85, 0x02, // Report ID (2) в описание кастом репорта. if(counter<255) { counter++; } else { counter=0; buffer[0]=2; buffer[1]=USB_HID_VOL_UP; USBD_HID_SendReport(&hUsbDeviceFS, buffer, sizeof(buffer)); //Отправка репорта с кодом... } HAL_Delay(2); Если я отправляю код который описан в библиотеках и репорте - то есть за Volume Increment отвечает - 0XE9 То получаю в анализаторе USB вот такие данные как будто нажаты одновременно все кнопки. А вот если 0x80 - то в анализаторе всё чётко и красиво - нажата кнопка Volume Decrement Помогите пожалуйста разобраться в HID устройстве управления мультимедиа. Ну и сторонний вопрос - Это устройство в ANDROID будет точно так же как и в WINDOWS работать? то есть управлять громкостью, переключать треки, отключать звук и т.д или в ANDROID нужно отправлять совсем другие коды???
  12. Поищите такое словосочетание - Дребезг контактов, и как обойти Дребезг контактов
  13. А ещё - Напрмиер если в МК два АЦП. ADC0 и ADC1. Можно например ADC0 - использовать 15 каналов для измерения регулярных каналов, а ADC1 настроить только на инжектированные каналы для работы с мультиплексорами (2-3 штуки). Итого - получается мы не будем мешать работать модулей и т.д и код обработки уменьшиться . Так получиться сделать? И ещё - часть подключаемых датчиков - 0-5Вольт сигнал выдают (тот же дад и т.д). я так понимаю нужно ставить ОУ в качестве повторителя напряжения и на выходе ОУ ставить резистивный делитель, чтобы преобразовать сигнал из 0-5В в 0-3.3Вольт. Сейчас стою перед выбором МК. Или STM32F103R8xx использовать с их 3.3вольтами, или Atmega64 с 5 вольтами и более удобным использованием АЦП.
  14. То есть я например два мультиплексора вешаю на два инжектированных канала и читаю их грубо говоря раз в секунду, а остальные каналы использую как регулярные через ДМА (то есть в автоматическом режиме)?
×
×
  • Создать...