Jump to content
Карен Григорян

проблема с АЦП в stm32 при симуляции в Proteus

Recommended Posts

Posted (edited)

Здравствуйте, товарищи форумчане!

У меня вот такая проблемка: есть такая схема:

image.png.44a66c942a602b7fd28b8bee50f06f7b.png

По сути тут stm32 на который подаётся некоторое постоянное напряжение, а именно на вход PA1. МК получает его, приводит в цифровую форму (разрядность АЦП равна восьми) и выводит их при помощи восьми GPIO выводов, а именно PB0-PB7. Эти выводы соединены со схемой ЦАП, которая преобразует значение, полученное от stm32 обратно в аналоговую форму и выводит в пробнике R2(1).

Проблема в том результат выводится не верный. Точнее говоря не всегда верный. Когда я подаю 1В, то на выходе получаю 0,99В, что верно. Но когда, например, подаю 300мВ, то получаю 1.8В, что совсем не верно. Код прошивки предельно прост:

  while (1)
  {
        HAL_ADC_Start_IT(&hadc1);
        HAL_Delay(10);

}

Код колбека прерывания:

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
    if(hadc->Instance == ADC1) //check if the interrupt comes from ACD1
    {
      int adc = HAL_ADC_GetValue(&hadc1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,(adc>>0)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,(adc>>1)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,(adc>>2)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,(adc>>3)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,(adc>>4)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,(adc>>5)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,(adc>>6)&1);
            HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,(adc>>7)&1);
    }
        }

На всякий случай вот настройка АЦП в stm32:

image.png.1299783535650086a3f09c69189fb8a7.png

Вот пример неправильного вычисления:

image.png.179d6bcbbbd0f4590fe34936fb2c1ce6.png

Edited by Карен Григорян

Share this post


Link to post
Share on other sites
Posted (edited)

Ну, потомучто это протеус, не стоит ему доверять на все сто. Да и в реальной схеме можете столкнуться с такой проблемой. Перед использованием АЦП его желательно откалибровать перед запуском.

Edited by Yuriy.pv

Share this post


Link to post
Share on other sites

Повышаем уровень передаваемой мощности в однопарной сети Ethernet

В статье приведено описание новых гибридных разъемов для использования в SPE-приложениях. По сравнению с традиционными разъемами, в основе структуры которых лежит технология PoDL (Power over Data Line), предлагаемое решение содержит в себе дополнительные контакты питания, но сохраняет при этом компактные размеры. А работа с более высокими значениями тока значительно расширяет возможности применения предлагаемых разъемов в различных топологиях, по сравнению с PoDL.
Подробнее

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Приглашаем на вебинар «Новинки и решения Traco для промышленных и отраслевых приложений» (28.10.2021) Компэл приглашает 28 октября всех желающих принять участие в вебинаре, где будет рассмотрена новая и перспективная продукция компании Traco для промышленного и отраслевого применений. Вы узнаете про новые серии DC/DC- и AC/DC-преобразователей как для промышленных, так и для отраслевых применений, в том числе для железнодорожных и медицинских. Мы подробно рассмотрим сильные стороны и преимущества продукции Traco, а также коснемся практических вопросов, связанных с измерением уровня шумов, промывкой изделий после пайки и отдельно разберем, как отличить поддельный ИП Traco от оригинала. Подробнее о программе>>
    • Лишь бы меряться - кто сверху, кто снизу...
    • Угу.мы так и поняли!!!Особенно принтеры самсунг мл1210-которых еще и в помине тогда не было. Общение о маленьких детальках,неотредактированных в фоторедакторе,а выложенные практически на"простынях",отбивают охоту!!!Вон,фалконист-"любитель простыней"-сразу предупредит!!!
    • Когда измеряешь штангелем свой организм, надо ставить не лайк, а диагноз
    • Кто из вас кого опередил, ребята...  не имеет значения.  Бареттер всё это  знал ещё на 24ом году стажа... да и разных новых диодов у него в шкафу целыми коробками. А сейчас ... гораздо интереснее сделать фото маленькой детальки на большом листе бумаги, чтобы пообщаться. Только и всего. ЗЫ: Время то идёт... Причём беспощадно для всех нас.

  • Удобные коннекторы для соединений в машине

  • Similar Content

    • By Fordli
      Я написал программу последовательного порта с stm32, OP отправляет число, а затем возвращает число, но возвращаемое число - это какой-то неизвестный символ, скорость передачи синхронизирована 9608, стоп-биты данных и т.д. одинаковы, от tx до rx, все еще грязный код.
      Я поменял 3 помощника для отладки последовательного интерфейса, но они все одинаковые, кто-нибудь знает? Спасибо за ваш ответ.
    • By Solver
      Вопрос такой: как запросить содержимое корневого каталога при использовании библиотеки lfs.h. При этом я имею дело с чужим кодом и там файловая система уже отформатирована (когда-то) и смонтирована (при запуске устройства). Оперировать с каталогами и файлами имена которых я заведомо знаю (или сам создаю) у меня получатся, но для текущей задачи это мне никак не помогает.
      Вероятно мой вопрос очень простой и для многих очевидный, но я тем не менее не смог с наскока найти на него ответ ни в гугле, ни в lfs.h. Очень извиняюсь за невежество, я новичек
    • By hwmaker
      Добрый день.
      На проект требуется программист микроконтроллеров STM32 с пониманием Ethernet.
      Проект:
      плата работает под управлением STM32F413VGT6, представляет собой SIP-приставку для домофона.
      Для связи с Ethernet используется микросхема ENC424J600-I/P - мост SPI <-> Ethernet.
      Ниже приведено краткое описание функционала:
      Устройство должно обеспечивать:
          1.    Прием голоса из домофоной линии и оцифровка с помощью встроенного в контроллер АЦП.
          2.    Передача голоса по сети Ethernet по протоколу RTP. В качестве транспорта использовать UDP.
          3.    Прием голосовых сообщений по Ethernet по протоколу RTP и передачу их на встроенный ЦАП.
          4.    Микроконтроллер должен обеспечивать связь с внешним миром с помощью интерфейса Ethernet через микросхему ENC424J600-PT. 
          5.    Для установления соединения с сервером голосовых сообщений используется протокол SIP 2.0. с поддержкой методов, описанных в RFC 3261. 
          6.  Прием и отработку команд, приходящих по MQTT: открыть входную дверь, открыть шлагбаум и т.п.
          7.  WEB-интерфейс для удаленных настроект и мониторинга рабочих параметров устройства.
          8. Для работу через VPN-роутер контроллер должен поддерживать STUN.
          
      Есть проект для микроконтроллера для аналогичного устройства. Там используется STM32L475RET6.
      Для связи с Ethernet используется так же ENC424J600-I/P.
      Устройство успешно звонить по SIP на сервер. Выполняет приходящие MQTT-команды по открыванию дверей.
      Требуется: 
          поправить ПО под STM32F413VGT6, 
          добавить WEB-интерфейс, 
          добавить возможность удаленного обновления ПО через WEB-интерфейс,
          добавить возможность перезагрузки устройства через WEB-интерфейс,
          добавить возможность хранения данных абонентов во FLASH микроконтроллера и возможность синрохизации этих данных с сервером,
          добавить STUN, 
          исправить метод определения квартиры в которую звонят.
      Есть ТЗ на ПО.
    • By Uhbif
      Хочу сделать вольтамперметр на базе STM32L151, есть ли какие нибудь особенности при разводке платы? Свой вариант прикрепляю ниже. Буду благодарен за дельные комментарии. 
      ВА-30.dch
    • By dim21841
      Добрый день.
      Прошу помощи в выборе контроллера stm32 под следующую задачу:
      Bluetooth HC-05 (1 uart) необходимо связывать по uart с:
      1) MAX232 (2 uart) по 9600, иногда 115200,
      2) с Atmega328 (3 uart) по 115200.
      Задача stm32 выставлять скорость на hc-05 и соединять между собой нужные uart в соответствии с выбором (4 switch в dip-8 корпусе).
      Кто может что-то посоветовать?
      В stm32 пока совсем начинающий.
      STM32 выбрал потому что в перспективе хочу добавить возможность параллельно  выводить данные и на lcd.
      Зарание благодарен за помощь.
×
×
  • Create New...