STM32 + N канальный транзер

Тема в разделе "Силовая электроника", создана пользователем Kisa9000, 27 июн 2019.

  1. Kisa9000

    Kisa9000 Нуб

    Приветствую уважаемые мега мозги данного форума!
    Прошу тапками не кидаться. Задачка у меня есть подключить на stm32f103c8t6 18 транзисторов ну и собственно через ШИМ ими управлять. Шимов аппаратных на этом камне вроде как 16, поэтому захотелось использовать программный шим на одном таймере. Ну это конечно все хорошо, но для начала решил я поиграться с одним транзистором и аппаратным шимом, ну и тут меня уже ожидала мозготрепка. Подключил к ноге STMки через резистор на 10кОм ногу транзистора, шим подаю и ничего не происходит.
    ШИМ 100% есть и регулируется ( на осциллографе удалось посмотреть). В качестве нагрузки кинул метр светодиодной ленты (потребление примерно 1А), при включении всей этой темы лента просто горит и все. Использую DMN3404L (Транзистор), ну и даташит внизу оставлю.
     

    Вложения:

  2. DetSimen

    DetSimen Спамовредитель Модератор

    во первых - 10 кОм в любом случае - много
    во вторых - нет схемы, нет обсуждения
     
  3. parovoZZ

    parovoZZ Гуру

    Постоянную времени получившейся RC цепочки посчитал или считаешь, что это не надо при наличии форума? На профильных форумах за такие вопросы получают сразу бан.
     
    DetSimen нравится это.
  4. b707

    b707 Гуру

    По-моему вы не вполне понимаете, что такое "аппаратный ШИМ". Аппаратные ШИМ тоже сделаны на таймерах, если задействовать все аппаратные ШИМ - свободных таймеров для программного ШИМ не останется
     
  5. Kisa9000

    Kisa9000 Нуб

    Shematic.png
     
  6. Kisa9000

    Kisa9000 Нуб

    Я хотел сделать все ШИМы программными.
     
  7. b707

    b707 Гуру

    а кто будет gate к земле притягивать? Пушкин? - поэтому-то транзистор и открыт всегда.
    Вот для этой подтяжки ваши 10к и сгодятся. А в цепь затвора поставьте резистор на 2 порядка меньше
     
    DetSimen нравится это.
  8. DetSimen

    DetSimen Спамовредитель Модератор

    Естесственно, у него затвор зарядился, и заряду стекать некуда, вот он и открыт. Схемотехник из тебя так себе.
     
  9. DetSimen

    DetSimen Спамовредитель Модератор

    ШИМ то, матьтваю, какой частоты?
     
  10. Kisa9000

    Kisa9000 Нуб

    шим 100кгц
     
  11. parovoZZ

    parovoZZ Гуру

    софтварный у него шим. Чево непонятново?
     
  12. parovoZZ

    parovoZZ Гуру

    а чо не мегагерц?
     
  13. parovoZZ

    parovoZZ Гуру

    Ну конечно. Через паразитный диод запитка идет. Попутал чета.
     
  14. parovoZZ

    parovoZZ Гуру

    Как некуда? Через тот же резистор и нижнее плечо на землю.
     
  15. parovoZZ

    parovoZZ Гуру

    Для 100 кГц и 10 кОм в затворе входная емкость транзистора должна быть не более 150 pF. Пусть и с жутким нагревом, но работать будет. Теперь смотри в даташите входную емкость своего транзистора.
     
  16. Kisa9000

    Kisa9000 Нуб

    Я сейчас уже перекинул 10 кОМ на притяжку Gate к земле, на ногу микрухи повесил 500 оМ, ну и я так понял 100кГц много...поэтому поставил просто 400Гц. Регулировка есть, но еле видимая, полностью не гаснет. Да и если отцепить транзистор от микрухи все равно горит, то есть Gate просто через 10кОм висит на земле.
     
  17. b707

    b707 Гуру

    снова давайте схему и еще код
     
  18. parovoZZ

    parovoZZ Гуру

    Затвор полностью замкни на землю. Если ток течет в цепи, значит транзистор в помойку. Ну это если есть полная уверенность в том, что сток не перепутан с истоком.
     
  19. Kisa9000

    Kisa9000 Нуб

    Shematic.png
    Код (C++):

    HAL_TIM_Base_Start_IT(&htim4);
    HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);

    while(1)
    {
    HAL_ADC_Start(&hadc1);
            HAL_ADC_PollForConversion(&hadc1,100);
            pwm = HAL_ADC_GetValue(&hadc1) / (4096 / 250);
            HAL_ADC_Stop(&hadc1);
            TIM4 -> CCR1 = pwm;
    }


    static void MX_TIM4_Init(void)
    {

      /* USER CODE BEGIN TIM4_Init 0 */

      /* USER CODE END TIM4_Init 0 */

      TIM_ClockConfigTypeDef sClockSourceConfig = {0};
      TIM_MasterConfigTypeDef sMasterConfig = {0};
      TIM_OC_InitTypeDef sConfigOC = {0};

      /* USER CODE BEGIN TIM4_Init 1 */

      /* USER CODE END TIM4_Init 1 */
      htim4.Instance = TIM4;
      htim4.Init.Prescaler = 719;
      htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
      htim4.Init.Period = 250;
      htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
      htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
      if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
      {
        Error_Handler();
      }
      sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
      if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
      {
        Error_Handler();
      }
      if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
      {
        Error_Handler();
      }
      sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
      sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
      if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
      {
        Error_Handler();
      }
      sConfigOC.OCMode = TIM_OCMODE_PWM1;
      sConfigOC.Pulse = 0;
      sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
      sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
      if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
      {
        Error_Handler();
      }
      /* USER CODE BEGIN TIM4_Init 2 */

      /* USER CODE END TIM4_Init 2 */
      HAL_TIM_MspPostInit(&htim4);

    }
     
  20. b707

    b707 Гуру

    по коду - это либо какой-то обрывок, либо просто бредятина, скорее последнее. Что за цикл while . висящий вне процедур и функций? Где main() ? Инициализацию TIM4 написали, а где она запускается?

    Если вы в Си третий день (а очень похоже) - начните с ардуино и мигания диодиками, не лезьте сразу в HAL - не осилите