Я собрал ПИД регулятор на Uno, ускорил analogRead работая с регистрами.
Но захотелось большего: разрядов АЦП и скорости регулирования, вот
и пересобрал всё на STM32G030K8 , и оно даже заработало под Arduino IDE
STM32 core и т д.
Но беда в том, что на Uno АЦП цифрует за 70мкС, а на STM - за 200+ мкС.
Вот эта строчка: Apress=analogRead(PA0);
Есть ли решение ускорить АЦП ? Хелп!
Если тактирование STM32G030K8 1 КГц или делители шины APxx стоят х10, тактирующие АЦП, чему вы удивляетесь?
Если можно изменить настройки тактирования и делителя, подскажите, как это сделать. Поиск мне не помог, я искал что-то типа analogReadSamplingTime. Хотелось бы получить минимальные значения времени оцифровки и оценить шум, чтобы выбрать яастоту дискретизации.
https://www.st.com/en/microcontrollers-microprocessors/stm32g030k8.html
Analog-to-digital converter (ADC)
A native 12-bit analog-to-digital converter is embedded into STM32G030x6/x8 devices. It can be extended to 16-bit resolution through hardware oversampling. The ADC has up to 16 external channels and 3 internal channels (temperature sensor, voltage reference, V BAT monitoring). It performs conversions in single-shot or scan mode. In scan mode, automatic conversion is performed on a selected group of analog inputs. The ADC frequency is independent from the CPU frequency, allowing maximum sampling rate of ~2 MSps even with a low CPU speed. An auto-shutdown function guarantees that the ADC is powered off except during the active conversion phase.
The ADC can be served by the DMA controller. It can operate in the whole V DD supply range.
The ADC features a hardware oversampler up to 256 samples, improving the resolution to 16 bits (refer to AN2668).
An analog watchdog feature allows very precise monitoring of the converted voltage of one, some or all scanned channels. An interrupt is generated when the converted voltage is outside the programmed thresholds.
The events generated by the general-purpose timers (TIMx) can be internally connected to the ADC start triggers, to allow the application to synchronize A/D conversions with timers.
Я только так и не нашел в ДШ как этим управлять)))
ЗЫ: Я с STM32 еще на “Вы” ))
ЗЫ2: @b707 куда-то пропал. Он же плотно на STM32 “сидит”. Подсказал бы чего…
Про скорость АЦП пишут и до 5 мкс можно разогнать. Вопрос -как это сделать под ардуино иде.
Точно так же, как и под любую другую IDE - путем занесения в определенные регистры МК определенных значений.
Единственный известный мне путь - читать дэйташит.
А цель то какая? Что регулируем? Какая постоянная времени процессов, которые регулируем? Это базовая величина от которой зависят необходимые характеристики оцифровки. Завышение требований к аппаратуре характерно для людей не разбирающихся в вопросе. Нормальный инженер не будет искать минимальные значения. Будет искать оптимальные.
цель моего посещения форума: задать вопрос тому, кто на практике умеет настраивать скорость АЦП именно в ардуино иде c STM32 core . А поговорить про инженеров и даташиты могу в моем универе - там они так деньги получают.
Ну тогда мне в этой ветке точно делать нечего )))
В описании камня 12-bit, 0.4 µs ADC …
На какой частоте вы запустили МК ?
Я установил под ардуино иде STM32 core с гитхаба, там нашлась “плата” и мой проц. В настройках выбор частоты МК отсутствует
Тогда вам в читалку … искать функции выставления частоты МК и ADC … я не вкуривал что там выставляет пакет для ардуино по умолчанию для этого типа камней … пишу в KEIL обычно … на ASM …
это чудесно! подскажите, как поставить кейл в связке с кубМХ - у меня перестала работать куб иде + куб мх - просят на сервер, но чтото меня не пускает к ним. обходы не освоил.
KEIL для меня самодостаточен - всякие свистоперделки типа пакет для ардуино, куб, … … мне изучать не интересно …
Генеришь в кубе программу для cubeide с необходимыми таймингами и переносишь подпрограммы настройки частоты в программу ардуины. Если установлено ядро от STM то всё сработает штатно. А так по умолчанию в ядре STM частоты выставлены по максимуму.
ну чего опять тут разговаривать, ни схемы (хотя бы тактирования), не указания что за плата, самопал или шилд какой, ни кода…
скорее всего в ардуино иде никаких специальных команд для этого нет. Нужно дописывать самому через ХАЛ или СМ-СИС… не знач что там у них. С СТМ аддоном дел не имел.
Ну я регулировал скорость АЦП на stm32. Только я имел дело с моделями f103 и f407, и лезть в дэйташит, чтобы выяснить, чем от них отличается g030, мне лень. Тем более, что я пользоваться последним в ближайшее время не собираюсь.
Осталось выяснить, почему там установлена такая низкая частота.
Вообще, по моему опыту, при уменьшении времени, отводимого для АЦП, ухудшается линейность. Вполне возможно, что низкая частота преобразования связана именно с указанным обстоятельством и особенностями конкретного “камня”.
Так что Вы решите ля себя, готовы ли Вы к калибровке АЦП, есть ли у Вас для этого необходимое оборудования и знания.
Ну либо, как вариант, перейти на другой камень, у которого подобных проблем изначально нет.
Для нормальной точности надо нормальный внешний АЦП с точным опорным напряжением …
И для ПИД скорость не всегда решает !!!