Tokes

Members
  • Публикации

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

  • Посещение

Репутация

6 Обычный

О Tokes

  • Звание
    Осваивающийся

Информация

  • Пол
    Мужчина
  • Город
    Гомель

Электроника

  • Стаж в электронике
    3-5 лет
  • Оборудование
    lukey702, ОМЛ3М, Victor88E, AutoprogSE, RLC-2.

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

1 805 просмотров профиля
  1. Вопросы От Начинающих По Мк

    Скажите, пожалуйста, все ли переменные, значение которых может измениться в прерывании нужно помечать словом volatile? Может, есть какие-то устоявшиеся правила на этот счёт?
  2. Как считать CRC в CAN Шине

    В официальной документации протокола я нашёл что-то типа этого: CRC SEQUENCE The frame check sequence is derived from a cyclic redundancy code best suited for frames with bit counts less than 127 bits (BCH Code). In order to carry out the CRC calculation the polynomial to be divided is defined as the polynomial, the coefficients of which are given by the destuffed bit stream consisting of START OF FRAME, ARBITRATION FIELD, CONTROL FIELD, DATA FIELD (if present) and, for the 15 lowest coefficients, by 0. This polynomial is divided (the coefficients are calculated modulo-2) by the generator-polynomial: X15 + X14 + X10 + X8 + X7 + X4 + X3 + 1. The remainder of this polynomial division is the CRC SEQUENCE transmitted over the bus. In order to implement this function, a 15 bit shift register CRC_RG(14:0) can be used. If NXTBIT denotes the next bit of the bit stream, given by the destuffed bit sequence from START OF FRAME until the end of the DATA FIELD, the CRC SEQUENCE is calculated as follows: CRC_RG = 0; // initialize shift register REPEAT CRCNXT = NXTBIT EXOR CRC_RG(14); CRC_RG(14:1) = CRC_RG(13:0); // shift left by CRC_RG(0) = 0; // 1 position IF CRCNXT THEN CRC_RG(14:0) = CRC_RG(14:0) EXOR (4599hex); ENDIF UNTIL (CRC SEQUENCE starts or there is an ERROR condition) After the transmission / reception of the last bit of the DATA FIELD, CRC_RG contains the CRC sequence. Я с трудом могу переложить это на Си. Помогите допилить этот вариант, пожалуйста unsigned int CRC_RG = 0; // initialize shift register while (CRC SEQUENCE starts or there is an ERROR condition) { CRCNXT = NXTBIT ^ CRC_RG(14); CRC_RG(14:1) = CRC_RG(13:0); // shift left by CRC_RG(0) = 0; // 1 position if (CRCNXT) CRC_RG(14:0) = CRC_RG(14:0) ^ 0x4599); }
  3. Как считать CRC в CAN Шине

    @Vascom , не могли бы вы пояснить, почему он опущен в числе, а в формуле указан? @dev , вставил я в этот код свои данные - uint8_t data[] = { 0xF0, 0x7D, 0x7D, 0x00, 0x00, 0x00, 0xF0, 0xFF }; , на выходе получилось другое число - 0x3E58. Что никак не похоже на 0x72FC. p.s. пробовал инвертировать, т.е. считать с 8 по 1 байт - всё равно не то.
  4. Выбор цифрового аудиопроцессора

    В процессе ремонта всяких аудиосистем, в том числе с усилителями на двухполярном питании часто сталкивался с аудиопроцессорами PT2322. Возможно, вам подойдёт эта микросхема. Она достаточно дешёвая.Правда, шестиканальная, но вместе в процессором PT2323, добавив четыре усилителя можно превратить систему в целый домашний кинотеатр Описание микросхем по ссылкам ниже. http://pdf.datasheetcatalog.com/datasheets/70/499857_DS.pdf http://pdf.datasheetcatalog.com/datasheets/105/493266_DS.pdf
  5. Здравствуйте. Отчаялся найти хорошее пояснение с примерами как считать CRC CAN frame. Ранее с CRC не сталкивался. Пишут, что вот это: x^15 + x^14 + x^10 + x^8 + x^7 + x^4 + x^3 + 1 - есть полином, он же многочлен CRC-15 конкретно для CAN шины. Есть у меня кадр CAN сообщения от SOF до EOF. Какие именно я должен взять данные и что конкретно я должен с ними сделать. Возвращаясь к полиному. Пишут, что HEX его - 0x4599. То есть в бинарном представлении 0100 0101 1001 1001. Я вижу, что все "x" в степени соответствуют их порядковому номеру справа-налево. Кроме x^15. Он тут равен нулю. Так что значит всё же эта запись, как её читать правильно? Например, конкретный пакет с уже посчитанным CRC: DATA, 0x0CF00400, 0x8, 0xF0 0x7D 0x7D 0x00 0x00 0x00 0xF0 0xFF, 0x72FC, ACK Дайте информацию, пожалуйста, как конкретно эта CRC получилась.
  6. Габариты силового трансформатора не дадут это сделать. Слишком мал он для этого. Буду другой блок переделывать - там попробую снять около 300 Вт. Полумост всё-таки.
  7. В общем Учитывая большую разбежку в температурах радиатора и транзисторов на этом радиаторе предположил, что либо радиатор плохой, либо термопрокладки подустали. Нанёс небольшое количество термопасты между радиатором и термопрокладкой и транзистором и термопрокладкой. Включил, проверил. На 85 Вт радиатор нагрелся за 10 минут до 54 градусов, транзисторы до 80, а без термопасты при нагрузке 66 Вт транзисторы были уже за 100. Результат считаю приемлемым.
  8. Так а косяк-то в чём? Я не знаю, есть ли он вообще. Поделитесь приемлемыми температурами в таких конструкциях. И какие основания возвращать родные номиналы? Разве нет способа узнать причину такого нагрева косвенно, через измерения? Какая температура должна быть под такой нагрузкой?
  9. Собственно, радиаторы и место, где цеплял термопару через термопасту КПТ-8: Осциллограммы при нагрузке в 40 Вт: Осциллограммы при нагрузке в 66 Вт: Хороший обдув кулером, на первом фото видно. При этом замеры температуры с выдержкой около 5 минут после каждого изменения нагрузки: 40 Вт - радиатор 38, транзисторы 60 50 ВТ - радиатор 42, транзисторы 70 66 Вт - радиатор 45, транзисторы 100 Осциллограммы привёл только для 40 и 66 Вт. Что скажете?
  10. Забыл добавить - 13007 поменял на 13009. При этом резисторы в их базах по 22 Ома менял на 10 Ом и резистор R23 пробовал уменьшить аж до 150 Ом - ощутимой разницы в нагреве не заметил. Поэтому и спросил про резисторы. Температура указана при работе без обдува кулером. Мне просто важно понять, работает ли блок питания в оптимальном режиме. Я могу снять осциллограммы везде, где скажете под разными нагрузками, возможно это поможет понять от чего такой нагрев. А то я читаю, что люди не занимающиеся электроникой переделывают и получают при мощности 200 Вт температуру радиатора в 37 градусов, а у меня 20 Вт и уже 40 градусов. 40 Вт и 60 градусов. Обидно даже, что каких-то знаний не хватает
  11. Окей. Какими способами можно уменьшить нагрев транзисторов, кроме как "кулер посильнее и радиатор поболее"? Вопросы про резисторы актуальны.
  12. Исходя из чего подбирается R23 цепи раскачки, R5, R6, R8 в цепи базы транзистора 13007 по схеме?
  13. Первичку не менял, после перемотки замотал второй слой как было. А как определить в норме ли демпферы и раскачка ключей? Видимых косяков с осциллографа не видно, но может, я плохо смотрю? Может, какие-нибудь осциллограммы сфоткать?
  14. Всем привет. Переделывал блок под лабораторный. Ограничение тока поставил в 8 А. Напряжение - 30 В. трансформатор перематывал. Почему-то решил делать без средней точки, поэтому на выходе диодный мост. Не пищит, не шипит. Вроде всё работает отлично, только при нагрузке в 40 Вт транзисторы на радиаторе под вентилятором греются до 60 градусов. Сильнее греть не решился. Как узнать причину этого нагрева и вообще есть ли повод беспокоится? 40 Вт вроде не большая нагрузка для такого БП. Осциллограф такой себе, но есть. Что измерить, что посмотреть?
  15. Вопросы От Начинающих По Мк

    Про компаратор знаю, отключён сразу за неиспользованием. Спасибо за помощь!