STM32 #10. DAC делаем Синус

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ธ.ค. 2024

ความคิดเห็น • 44

  • @ИгорьРубацкий-ч1о
    @ИгорьРубацкий-ч1о 2 ปีที่แล้ว +1

    Спасибо за Ваш труд и уроки. Всех Вам благ.

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Спасибо Вам большое за тёплые слова

  • @TDMLab
    @TDMLab 2 ปีที่แล้ว +7

    👍Чтобы выходной сигнал не искажался около нуля, необходимо отключить встроенный буфер. Для тестов на осциллограф можно напрямую, а в схемах имеет смысл поставить внешний буфер на ОУ с двуполярным питанием.
    Где-то на середине синуса наблюдается странный излом, да и в целом похоже, что форма искажена. Я бы использовал внешнюю табличную генерацию точек. Должно быть все красиво.

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +3

      Возможно действительно встроенный буфер сделал своё дело. Форма норм, а на середине есть небольшой действительно переход.

    • @ElliottGrosvenor
      @ElliottGrosvenor 2 ปีที่แล้ว

      Я тоже не понял, зачем в цикле все точки пересчитывать снова и снова.

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Ну вы даёте. Чтобы синус был непрерывный во времени.

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Проверил с выключенным все же буфером, излом сохранился, дело точно не в нем. Буфер как бы и не должен влиять на форму, на то он и буфер...

    • @oldbrowze3678
      @oldbrowze3678 2 ปีที่แล้ว +1

      @@NRelectronics имеется ввиду, что достаточно один раз создать массив значений, а уже в цикле подставлять из массива

  • @Сергеймиролюбов-э6г
    @Сергеймиролюбов-э6г 2 ปีที่แล้ว

    Благодарю за информацию, интерестно

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Пожалуйста, заходите ещё.

  • @antonGoldinov
    @antonGoldinov ปีที่แล้ว

    Как Вы это все поняли) моё увожения

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Сам до сих пор не понимаю как я это понял)) спасибо Вам!

  • @denisgluk431
    @denisgluk431 ปีที่แล้ว

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

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Даведите руки до этого.

  • @makhsumbairamov939
    @makhsumbairamov939 ปีที่แล้ว

    можете обьяснить как вы код подключили в синусу в этой программе amcap

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Не совсем понял вопрос. Как я подключил синус или программу amcap?

  • @kalobyte
    @kalobyte 2 ปีที่แล้ว +2

    не совсем понял, зачем ты создал массив sine_value, если ты только одно значение там храниш и оно у тебя выводится сразу же в цап

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว +1

      Это с первого примера остаток, когда просто числа были.

  • @ewfreg5nythyhtewt4w
    @ewfreg5nythyhtewt4w 7 หลายเดือนก่อน +1

    число PI чуть чуть неточное в коде :D

    • @NRelectronics
      @NRelectronics  7 หลายเดือนก่อน +1

      Чуть чуть можно 😀👍

  • @toshibamaster2210
    @toshibamaster2210 2 หลายเดือนก่อน

    как сделать синусоиду симетричную относительно нуля и чтобы во время инициализации котролера не было выброса ?

    • @NRelectronics
      @NRelectronics  2 หลายเดือนก่อน

      Запрограммировать)

    • @toshibamaster2210
      @toshibamaster2210 2 หลายเดือนก่อน

      @@NRelectronics цап и шим однополярные если делать смещение 3.3 / 2 на буферном ОУ то до инициализации МК выходное напряжение уйдет в минус. при чем зесь программирование ??

    • @NRelectronics
      @NRelectronics  2 หลายเดือนก่อน

      Программирование всегда необходимо. В минус не уйдет при одноподярном питании. Значит синус схемотехникой надо "смещать" вниз.

  • @Mishukan404
    @Mishukan404 11 หลายเดือนก่อน

    Не получается получить контролируемые значения частоты синуса через прерывания TIM6_DAC_IRQHandler(). :( Хотябы 1 МГц. Юзаю G431.Запихиваю в обработчик функцию HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, sin_table[i++]); само собой обнуляя i при достижении 256. i берется из табличных значений, что быстрее чем по формуле. Все равно в лучшем случае какие-то жалкие сотни герц. Счет TIM6 до 1, прескейлер 0. Частота мк 150МГц. Не ужели изза тормознутости функции? или я туплю?

    • @NRelectronics
      @NRelectronics  11 หลายเดือนก่อน

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

    • @Mishukan404
      @Mishukan404 11 หลายเดือนก่อน

      @@NRelectronics Да понять бы где :( Голоу уже сломал :( Вот содержимое обработчика и настройки таймера.
      Вроде всё правильно. А на выходе имею 1.7 кГц при частоте мк 150мГц.
      Массив со значениями sin_table взял из комментов ниже
      void TIM6_DAC_IRQHandler(void)
      {
      HAL_TIM_IRQHandler(&htim6);
      HAL_DAC_IRQHandler(&hdac1);
      static uint32_t i = 0;
      HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, sin_table[i++]);
      if (i > 255) i = 0;
      }
      htim6.Instance = TIM6;
      htim6.Init.Prescaler = 0;
      htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
      htim6.Init.Period = 1;
      htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

    • @NRelectronics
      @NRelectronics  11 หลายเดือนก่อน

      В обработчике не вижу что отсутствует сброс какого либо флага по попаданию в него. Это общий момент работы обработчиков.

  • @odissey2
    @odissey2 3 หลายเดือนก่อน

    Синус,однако, получился весьма условный. В чём причина? Ведь DAC весьма неплохой.

    • @NRelectronics
      @NRelectronics  3 หลายเดือนก่อน

      мало точек видимо ...

    • @odissey2
      @odissey2 3 หลายเดือนก่อน

      @@NRelectronics для 256 точек странная форма. Может нужен выходной буффер?

    • @NRelectronics
      @NRelectronics  3 หลายเดือนก่อน

      думаю нет, не перегружен выход

  • @alex225559
    @alex225559 ปีที่แล้ว

    Как то стнус больше на треугольник похож со скруглёнными вершинами

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Так и получается синус))

    • @alex225559
      @alex225559 ปีที่แล้ว

      @@NRelectronics я часто вижу синус/косинус с преобразователей , как то немного по другому выглядит , или в STM линейность DAC не совсем линейная .

    • @by0uki
      @by0uki ปีที่แล้ว

      @@alex225559как будто цикл отрабатывает напрямую без таймера, и синус кривой из-за того что расчет разных значений синуса происходит за разное количество тактов

    • @marina16350
      @marina16350 9 หลายเดือนก่อน

      Для второго примера синтеза синуса по 256 отсчетам через 12р DAC.
      Сначала в инициализационной части, перед вечным циклом должна быть рассчитана таблица отсчетов sin_value[256] по правильной формуле:
      for (unsigned int i=0; i

  • @IgorChudakov
    @IgorChudakov ปีที่แล้ว

    0xFFF != 4096 😏

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Где такое, было? Допускаю что оговорка, подскажите где?