|
0 / 0 / 0
Регистрация: 22.03.2026
Сообщений: 7
|
|
Балансирующий робот на STM32 в среде keil23.03.2026, 16:11. Показов 861. Ответов 27
Добрый день уважаемые форумчане.
Немного предыстории вопроса... Дети решили собрать своего балансирующего робота на шаговых моторчиках. Они имеют небольшой опыт на ардуино. Ну по крайней мере светодиодами научились мигать. Но интерес вроде не пропал. Я начал немного изучать вопрос и оказалось, что для реализации их задумки потребуются довольно серьезные вычисления. Управление моторчиками (генерация степ/дир), опрос датчиков и пр. В общем решили, что ардуинки будет не хватать. Через некоторое время пришли к выводу, что лучше будет если в качестве контроллера использовать что-то побыстрее и поумнее. Выбор пал на отладочную платку на базе stm32f103c8t6. А в качестве среды разработки keil. Первое знакомство с этим контроллером у меня было очень давно. Около 10 лет назад. Многое уже забыл. И основная работа ни как не связана с конструированием и электроникой. Но пока есть желание у детей попробую заинтересовать их этой сферой. Платку и st-link нашел, Что известно на текущий момент: Необходимо 2 счетчика для генерации сигналов степ/дир. на 2 мотора. Возможно в природе существуют библиотеки управления шаговыми моторами. Но мне такое не известно (пока) Датчик гироскопа имеет интерфейс i2c Еще есть 4 аналоговых датчика приближения. Пока точных характеристик не подобрали. Подключение блютус шилда для управления с телефона. Так как сейчас пока сложно оценить сколько потребуется различных программных модулей решили еще и free rtos изучить и поставить. И вот спустя некоторое время нам удалось подключиться к плате и даже загрузили на нее блинк светодиода ![]() Сегодня получилось поднять freertos и запустить два потока. В одном светодиод. В другом вычисления тестовые. Некоторые модули удалось найти в своих старых архивах. Вопрос: Существуют ли какие-то библиотеки для работы с i2c (cmsis) для работы с данным контроллером? st.com не доступен. Похоже банят адреса из РФ. Вопрос 2: После загрузки прошивки на контроллер, он начинает работать только после нажатия кнопки ресет на плате. Это как-то лечится?
0
|
|
| 23.03.2026, 16:11 | |
|
Ответы с готовыми решениями:
27
Сравнить программные продукты Keil uVision 5.11.2.0 и Keil ARM 5.29.0.0 Вопрос по среде keil Программа ФВЧ в среде Keil |
|
|
|
| 23.03.2026, 16:27 | |
|
1. I2C (TWI) у stm32 встроенный (аппаратный). В интернете смотришь любой пример работы с и2с через cmsis и сразу используешь.
2. В настройках кейла на вкладке прошивки должна быть включена опция "Reset and Run".
1
|
|
|
Windows must die
|
|||||||
| 23.03.2026, 16:33 | |||||||
|
Кстати, вам ведь флоаты наверняка в вычислениях понадобятся, поэтому Cortex-M3 вам точно не нужен: он флоаты не умеет. Берите Cortex-M4, рекомендую STM32G431. Для начала надо выбрать: у какого достаточно таймеров, т.к. на каждый ШД нужен один таймер для генерирования сигнала CLK. Насчет "кайла" я категорически против: нельзя детей приручать ко всякой гадости! Поставьте им хоть vscode, абы это был обычный IDE, без выкрутасов. Идеальный вариант - работать в линуксе, т.к. маздай все равно в России скоро запретят, да и зачем детей приучать к фашистской идеологии?
1
|
|||||||
|
0 / 0 / 0
Регистрация: 22.03.2026
Сообщений: 7
|
|
| 23.03.2026, 16:36 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2026
Сообщений: 7
|
||
| 23.03.2026, 18:25 [ТС] | ||
|
F103C8 сейчас есть уже в наличии. Поищу STM32G431. Но пока будет подопытным экземпляром. Нужна в виде отладочной платы. Чертить эл.схемы и разводить платы - нет такой задачи, да и времени столько нет. Все же это должны делать дети, а я только "направлять" (хотя пока сам до конца не понимаю куда направлять ![]() зы. Usart тоже нашел. подключили к компу. Уже можно вывести какое-то сообщение ззы. есть вариант использования драйверов с шиной i2c. Тогда не нужно будет генерировать шаги и как следствие снизится требование к железке. Изучаю вопрос.
0
|
||
|
Windows must die
|
|
| 23.03.2026, 18:38 | |
|
С генерированием шагов проблем не будет: там флоаты не нужны. У меня даже STM32F072 справлялся на ура (ссылку на гитхаб я выше дал).
Флоаты для некоторых датчиков могут понадобиться. А могут и не понадобиться. Но F103 — такая забаженная штука, что замучаетесь errata читать! И для работы с I2C нужно очень строго следовать документации. И тоже в errata посматривать. Дети хоть английский знают? Иначе самому все делать придется…
0
|
|
|
0 / 0 / 0
Регистрация: 22.03.2026
Сообщений: 7
|
|||
| 23.03.2026, 18:45 [ТС] | |||
|
От датчиков вообще код Int будет (с АЦП) С математикой пока не сильно разбирался. Но там что-то подобное PID системы. И подбором коэф можно обеспечить устойчивость робота. Есть ли какие группы в максе на тему stm32? я не смог найти.
0
|
|||
|
Windows must die
|
|||||
| 23.03.2026, 18:59 | |||||
|
До того, как начинать с МК, нужно внимательно прочитать datasheet, manual и errata. Еще неплохо почитать различные appnout'ы. Я ж и говорю: пока английский не будет на уровне "уверенно читаю техническую литературу", в микроконтроллеры лучше и не соваться, иначе будет только хуже: уровень абдурины или калокуба - и конец! Очень редко люди могут вылезти из этого болота. Поэтому если уж и учить, то сразу учить правильно: никаких абдурин, калокубов, маздаев и прочей дряни, превращающей мозг в кашу. Добавлено через 1 минуту Вы на реддите больше помощи найдете, чем там! А еще неплохо на stackoverflow заглянуть, да и по гитхабу пошукать.
0
|
|||||
|
0 / 0 / 0
Регистрация: 22.03.2026
Сообщений: 7
|
||
| 23.03.2026, 19:11 [ТС] | ||
|
Пытаюсь помочь детям (своим) робота такого сделать. В свободное от работы время. И может их это увлечет. Когда-то давно пытался использовать CubeMX, чисто ради интереса, но ни чего путного не вышло. Слишком непонятный комбайн.
0
|
||
|
Windows must die
|
|||
| 23.03.2026, 19:21 | |||
|
Скажем, те же кватернионы - штука и не для каждого взрослого понятная… А без кватернионов невозможно ориентироваться в пространстве. Да много чего нужно знать, прежде чем за роботов браться. Но, возможно, им будет интересно. Пусть сначала английский подучат, да и в линуксе хотя бы bash и основы разработки на С освоят. Качайте с github CMSIS, готовьте Makefile, стартап и ld-скрипт, читайте документацию - и можно будет начинать светодиодиком мигать. Причем, некоторые вещи удобно делать в отладчике: чтобы своими руками "пощупать", как те или иные изменения в регистрах МК сказываются на периферии.
1
|
|||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,701
|
|
| 24.03.2026, 08:54 | |
|
0
|
|
|
339 / 98 / 6
Регистрация: 19.07.2024
Сообщений: 543
|
||||||
| 24.03.2026, 17:16 | ||||||
|
То, что решили сразу работать под РТОС - правильно! И не слушайте персонажей, не сумевших освоить РТОС, и потому хаящих её. ![]() Добавлено через 2 минуты Добавлено через 4 минуты Это неверный путь. Изучайте блок I2C в контроллере. Нет там ничего сложного. Хотя говорят, что I2C у старых F103 плохой. Тут не могу ничего сказать - сам я плотно работал только с новыми STM32F103VE. Там никаких проблем в работе I2C нет.Добавлено через 2 минуты Правильный путь!Добавлено через 2 минуты
0
|
||||||
|
|
||
| 24.03.2026, 17:24 | ||
|
Принтер немного неправильно сравнивать с тем, что хочет автор. В принтере все движения обычно рассчитаны заранее. Автору же необходимо фактически в реальном времени считывать и обрабатывать сигналы с датчиков, сразу же управляя несколькими ШД...
0
|
||
|
339 / 98 / 6
Регистрация: 19.07.2024
Сообщений: 543
|
|||
| 24.03.2026, 17:34 | |||
|
Хватит или нет быстродействия - зависит от алгоритма и от умений автора. STM32F103 не такой уж и тормозной МК - 72МГц если подходить с умом - хватит для многого. И для нескольких ПИД-регуляторов - хватит вполне. Даже если они будут выполняться на частоте в несколько десятков кГц. А несколько десятков кГц - куда ещё плавнее то? Для балансирвоки робота (что бы под этим не понималось) - думаю и 1...10 кГц должно хватить. PS: 72МГц/10кГц = 7200 тактов. Если не использовать эмулированную плавучку, а только fixed point, то 7200 тактов на расчёт, это = дофига! PPS: И да, кстати - здесь тоже "все движения нужно рассчитывать заранее". Как и в 3D-принтере. Никакой разницы.
0
|
|||
|
|
||
| 24.03.2026, 17:44 | ||
|
jcxz, ну я имел в виду примерно следующее: принтер может постоять "подумать" секунду-две, ничего страшного не произойдет. Робот же за это время может тупо упасть набок.
Плавность здесь заключается в том, чтобы отслеживать и реагировать на бОльшее кол-во точек в интервалах. Если МК "слабоват", то до воздействия на ШД может пройти значительное время и оно будет с запозданием. Промежуточные точки регулирования "потеряются" и система начнет раскачиваться.. Я конечно не утверждаю на 100%, что автору точно не подходит его МК к его задаче. Тем более, до конца не ясна структура поделки: сколько ШД/датчиков и их взаимодействие. Но очень может быть, что автор упрется в "железные" ограничения МК и будет долго вокруг этого ходить. Я бы все-таки для таких вещей взял бы камень чутка помощнее.. Добавлено через 2 минуты
0
|
||
|
339 / 98 / 6
Регистрация: 19.07.2024
Сообщений: 543
|
|||
| 24.03.2026, 17:53 | |||
![]() Не может он такого. Иначе получится сопля на детали. Или ещё какой брак. Печать должна идти непрерывно! Без каких-либо остановок. Остановка это - баг. Так как пластик из экструдера течёт непрерывно. С установившейся скоростью вытекания, определяемой текущей температурой экструдера.
0
|
|||
|
|
|||
| 24.03.2026, 18:03 | |||
|
У автора вопроса - конкретное регулирование объекта с неизвестными векторами движения, которые определяются буквально на ходу. Реакция на эти движения должна быть незамедлительная..
0
|
|||
|
Windows must die
|
|
| 24.03.2026, 18:16 | |
|
Чего вы спорите, пока вообще непонятно, что там в итоге в этом роботе будет! А то, вполне возможно, что даже Cortex-M0+ за глаза хватит (если избавиться от деления).
Главное - всякие "калокубы" и "ртоси" не тащить, иначе и H7 не хватит ☺
0
|
|
| 24.03.2026, 18:16 | |
|
Помогаю со студенческими работами здесь
20
В среде Keil 5 при повторном запуске в режиме эмуляции программа виснет STM32 + KEIL. Найти смещение функции в прошивке
C++ в Keil + STM32 CMSIS STM32 проект в Keil - это просто Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
|
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
На примере нетипового документа разработанного в конфигурации КА2.
В качестве источника данных указан регистр накопления, в который записываются данные о. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|