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...

  • Сообщения

    • Да это я ищу приключений - еще не решил, чем заняться, чтобы скучно не было на карантине - вроде бы сабвуфер достаточно работоёмкая вещь - и для рук, и для головы, а с другой стороны, - и послушать как следует не удастся в многоквартирном доме, и место много займет - жена не одобрит... ) А динамика ещё и нет  
    • А как же халява?) вот посмотри на платку - ни те снаберов - ни Агромные дросселя на выходе - и радиаторов здоровых не надо - ток плюсы одни - осталось ток разобраться 
    • Хуже он лишь при кривых замерах. У меня УНЧ А-класса с тепловыделением по 25В на ключ спокойно жил на слюде. Радиатор до 70-80 градусов разогревал за считанные минуты. Вы ее, кстати, термопастой то мазали хоть? И надеюсь не той кпт-8, что по 15р за банку... Хуже всех проводит тепло силикон, на нем транзисторы у меня перегревались. Со слюдой и керамикой проблем не было никаких.   В принципе и ваш не полностью ошибочен, только интерпретировать результаты нужно верно. Транзистор в пластике должен быть холоднее в n раз чем в металле для обеспечения нормальной работы кристалла, вот и все. Т.е. если при работе корпус греется так, что кристалл переваливает за 90 градусов, то в данной схеме пластику не место.
    • И еще вопрос (не по теме малость) Многие пишут что - молотилки гадят в сеть, это как? Типа нужен ККМ. Тогда допустим, я собрал с ККМ, а вот сосед не хороший без него и гадит в сеть. Вопрос - у меня в сети это как то отразиться? На нее и перешел
    • Угу.да на той же,более продвинутой ,чем ирки-сг3525.И забыть как страшный сон весь этот гемор.
    • Вот исходя из этого я и нашёл себе оптимальное решение - молотилка Ни какой мозго ё...ки Собрал и радуешься. А тут как почитаешь... Е...ут себе мозг.... Ну нах... 

  • Фрезерно-гравировальный ЧПУ станок CNC 3018 Pro/CNC 3018 различной комплектацией

  • 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...