Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Погрузись в захватывающий шутер!

FRAGEN

Шутер, Экшены, Шутер от первого лица

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
48
AxGxP
AxGxP
7 лет назад

Ардуино могла быть в 25 раз быстрее! Разница скорости Arduino vs. AVR vs. STM32.⁠⁠

Провел тест, для сравнения скорости выполнения программы на Arduino, AVR и STM32. Результаты мягко говоря удивили. Тестовая программа написанная в Atmel Studio выполнилась в 25 раз быстрее чем на Arduino, но одном и том-же процессоре.

Ардуино могла быть в 25 раз быстрее! Разница скорости Arduino vs. AVR vs. STM32. Arduino, Avr, Stm32, Stm32f103, Тест скорости, Сравнение, Видео, Длиннопост

Еще больше удивило, что AVR обогнал STM32. И дело тут не в архитектуре процессора, не в задержках вызванных ограниченной скоростью доступа к памяти программы (flash latency). Причина в медленных функциях STDPeriph. Многие действия, которые могли бы выполниться за один такт выполняются в лучшем случае за пять, так как находятся внутри функции. Если бы перед оглашением таких функций стояла директива "inline" размер кода и скорость выполнения были-бы значительно выше. После замены медленных функций на прямое обращение к регистрам скорость STM32 утроилась. В CubeMX дела обстоят еще хуже из-за усложненных обработчиков прерываний, callback функций и т.д.

Ардуино могла быть в 25 раз быстрее! Разница скорости Arduino vs. AVR vs. STM32. Arduino, Avr, Stm32, Stm32f103, Тест скорости, Сравнение, Видео, Длиннопост

Производители выпускают все более мощные процессоры, но львиная часть производительности хоронится в дебрях программных уровней, и это явление наблюдается не только в среде микроконтроллеров, а и в компьютерах, операционных системах, и даже там где Вы это читаете. А между тем, переусложненный код приводит не только к замедлению выполнения программ, но и к повышенному расходу электроэнергии.


Остается только надеяться, что наступит светлое будущее и мы сможем избавится от накопившейся избыточности кода, вызванной желанием все упрощать. Или может компьютеры научатся сами для себя писать программы, как знать.

Показать полностью 2 1
[моё] Arduino Avr Stm32 Stm32f103 Тест скорости Сравнение Видео Длиннопост
47
2
Mi1ka
Mi1ka
7 лет назад

Простой стабилизатор напряжения на основе LM317T⁠⁠

Привет, Друзья! У меня есть парочка контроллеров Arduino Pro Mini, которые были куплены на Aliexpress по цене пару баксов за штуку. И естественно захотелось заюзать контролер в своих проектах. Я давай искать как Pro Mini питать током и каким именно. В интернетах пишут, что в Pro Mini встоенный стабилизатор тока и котроллер можно запитать током до 12 вольт и 1-1,5 Ампер, по аналогии с Arduino Nano. Подав такое напряжение на плату, с удивлением наблюдал всем известный сизый дымок. Понял, что напряжение и ток нужно снизить до значений как у USB в ПК. Для своего проекта заложил блок питания на 12 вольт и 2 ампера и понятно, что проще будет использовать понижающее устройство, для питания контроллера. Как раз в наличии имеется парочка линейных стабилизаторов LM317T, вот я и решил их использовать в деле. Раньше я делал лабораторный блок питания на основе этой же микросхемы, поэтому проблем быть не должно. Тем более нашел в сети конструкцию стабилизатора всего из 4-х деталек, что есть жирный плюс в пользу миниатюрности.


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

Простой стабилизатор напряжения на основе LM317T Ремонт техники, Arduino, Сообщество arduino, Радиолюбители, Stm32, Длиннопост, Микроконтроллеры, Своими руками

Есть там схемы и для управления током в паре с напряжением, но мне они показались сложны из-за дополнительных деталек в виде транзисторов, резисторов и диодов.


Чуть углубившись в сеть, нашел схему по проще где она предлагает регулировку как напряжения, так и тока.

Простой стабилизатор напряжения на основе LM317T Ремонт техники, Arduino, Сообщество arduino, Радиолюбители, Stm32, Длиннопост, Микроконтроллеры, Своими руками

И эта схема оказалась самым верным решением. Просчитал схему и появилась нужда в резисторе на 2 ома, которого у меня нет и наверно не бывает (может и есть, но я не видел). В итоге сопротивление сделал сам в популярном корпусе “намотал на картонку”.

Простой стабилизатор напряжения на основе LM317T Ремонт техники, Arduino, Сообщество arduino, Радиолюбители, Stm32, Длиннопост, Микроконтроллеры, Своими руками

Схема на 5вольт и 0.5 ампер получилась следующей:

Простой стабилизатор напряжения на основе LM317T Ремонт техники, Arduino, Сообщество arduino, Радиолюбители, Stm32, Длиннопост, Микроконтроллеры, Своими руками

С помощью R1 можно настроить ограничение по току. А R2 и R3 определяют ограничение напряжения.


Вот больше инфографики:

Простой стабилизатор напряжения на основе LM317T Ремонт техники, Arduino, Сообщество arduino, Радиолюбители, Stm32, Длиннопост, Микроконтроллеры, Своими руками

И вот как получилось в проекте:

Простой стабилизатор напряжения на основе LM317T Ремонт техники, Arduino, Сообщество arduino, Радиолюбители, Stm32, Длиннопост, Микроконтроллеры, Своими руками

Нужных мне резисторов под рукой не оказалось, так я решил использовать переменные.

Схема получилась на удивление простая, работоспособная и живучая. Уверен, что буду использовать дальше такой метод.


В итоге хочу сказать, что нашел для себя простой способ понизить ток/напряжение простыми и доступными средствами.


Какие еще аналогичные средства можно использовать? Какие недостатки у этой схемы? Варианты?


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


Спасибо за внимание, всем пока!

Показать полностью 6
[моё] Ремонт техники Arduino Сообщество arduino Радиолюбители Stm32 Длиннопост Микроконтроллеры Своими руками
66
114
ComradeBulkin
ComradeBulkin
7 лет назад
Сообщество Ремонтёров

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL⁠⁠

Долго думал над содержанием, но всё-таки решил написать статью-сравнение Atmega vs STM32 и немного пройтись по Arduino vs HAL.


Предыдущие статьи:


Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Windows 10

Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Linux

STM32 от Булкина. Урок 1: Вводный, где мы немножко похулиганим


Вступление


Давайте немного определимся с понятиями и что же мы будем сравнивать.


Для начала зададимся вопросом, а корректно ли сравнивать 8-битную архитектуру МК Atmega/ATtiny и 32-битную ARM STM32?


Собственно, в этой статье я обсуждаю преимущества, которая даёт 32-битная архитектура в целом, а также преимущества МК STM32 относительно МК Atmega/ATtiny в частности. Вопрос из той же оперы, как стоит ли переходить с процессоров i486 на i7.


Я сам занимаюсь автоматикой. Так что и вижу я картину с точки зрения автоматики, в основном промышленной.


Немного теории о 8 битах


Часто сталкивался с заблуждением, что программа на 8-ми битных МК оперирует только 8-ми битными данными, потому смысла в переходе на 32-битные МК нет. На самом деле, например, простые целочисленные данные и указатели в 8-ми битных МК являются 16-ти битными. Поэтому, утрируя, при работе с такими данными, МК тратит дополнительные такты там, где 32-битное ядро тратит всего один. Плюс для доступа к таким данным 8-ми битный МК производит дополнительные операции чтения/записи и операции со стеком. На деле это дополнительно приводит и к увеличению объема прошивки, и к увеличению потребления памяти.


32-битные же МК могут легко оперировать 8-, 16- и 32-битными данными за такт. Плюс наличие готовых команд для доступа к ним и преобразования, т.н. набор команд Thumb.


А что с производительностью?


Тут можно обратиться к сухим синтетическим тестам, например CoreMark. Он хорош ещё и тем, что даёт показатель CoreMark/MHz. Просто навскидку из таблицы:


- ATmega2560 (на частоте 8МГц): 0.53 CoreMark/MHz

- ATmega644 (на частоте 20МГц): 0.54 CoreMark/MHz

- STM32F103RB (на частоте 72МГц): 1.50 CoreMark/MHz

- STM32F051C8 (на частоте 48МГц): 2.20 CoreMark/MHz


Ещё раз подчеркиваю, это показатель производительности на МГц частоты. Общая производительность вообще разгромная:


- ATmega2560 (на частоте 8МГц): 4.25 CoreMark

- ATmega644 (на частоте 20МГц): 10.21 CoreMark

- STM32F103RB (на частоте 72МГц): 108.26 CoreMark

- STM32F051C8 (на частоте 48МГц): 105.61 CoreMark


Я привёл примеры наиболее используемых МК из готовой таблицы.


Если ещё коснуться ARM, то они имеют набор команд Thumb, которые позволяют делать, например, множественные пересылки данных одной командой.


Давайте сюда ещё прибавим модуль FPU, который есть на всех STM32 начиная с серий F3xx. Значительно ускоряет вычисления с плавающей точкой. Конечно, можно изгаляться с псевдо-плавающей точкой, типа умножать такие числа на 1000 и считать их целыми. Но на деле это далеко не всегда возможно и удобно.


И ещё потом добавим DMA, который на порядок ускоряет работу с периферией и не только.


Выходит очень вкусно, я считаю.

А что с потреблением?


Тут всё по канонам. В сравнении с 32-бит, 8-битные МК производят в 4 раза больше циклов обращения к памяти и большее количество команд для копирования того же объема данных. Также, например, ARM позволяют выполнять по 2 команды Thumb за такт. У 32-бит меньше работы, меньше потребление.


Если говорить про переход в спящий режим, то у ARM есть фишка - проснулись по прерыванию, отработали его и сразу заснули. С учётом того, что отработает он быстрее, чем AVR 8-бит, потребление будет значительно меньше.


Также это всё значит, что и работаем на пониженном напряжении. Это 3.3В у STM32 против 5В у Atmega. Конечно, у Atmega можно снизить напряжение, но придётся снижать и частоту в разы. Если брать те же 3.3В, то придётся снизить частоту до 10МГц.


Это кстати, ещё преимущество для STM32. Далеко не вся периферия работает на 5В, поэтому приходится ставить дополнительный регулятор напряжения для неё при использовании ATmega/ATtiny.


Хотя, чего греха таить, я сам предпочитаю использовать импульсный регулятор на входе на 4.5-5В и потом опускаю линейником до 3.3В. Это особенно важно там, где используются ADC/DAC.

Ну и не забудем про такую серию у STM32, как Lxxx. Это МК с ультра-низким потреблением. Хотя они дороговаты. Но у них, зато, есть ещё и EEPROM на борту, как у Atmega/ATtiny.

А что с ценой?


Тут вообще момент прекрасный. Если брать прям вот аналогичный в плане ног и периферии STM32, выигрыш значительный. Плюс можно сэкономить на RTC и USB.


Если брать современную серию STM32 на Cortex M4 и Cortex M7, это F3xx и выше, там цена выше, конечно, но и плюшек море.


Замучил уже, сравнивай в таблице!

Я решил разбить сравнение на 4 части:


Микро: ATtiny861A-SU vs STM32F030F4P6

Мини: ATmega328P-AU vs STM32F103C8T6

Средне: ATmega644PA-AU vs STM32F303CBT6

Макси: ATmega2560-16AU vs STM32F405VGT6


Линейка чипов огромная о обоих производителей. Я выбирал такие чипы, которые схожи по ногам, более менее по памяти и периферии. В каждом пункте ниже дам немного описаний, почему и как.
Я намеренно не сравниваю отладочные платы, особенно с Ali. Их вообще надо использовать только для отладки софта и разработки готового устройства. Мы же серьёзные люди, да?
Я не буду брать цены с Ali, только Российские поставщики. Я не буду давать тут рекламу, могу в комментах ответить, где я покупаю. Всегда есть, где подороже, а где подешевле. Нам важны относительные цены. К тому же, через неделю они могут поменяться, все зависит от курса $.

И ещё. Указать корректное количество каналов PWM может быть не везде просто. Поэтому пишу везде приставку “до”. Я считаю количество тех, которые можно вывести всей кучей на разные ноги.


Я везде в STM32 отмечаю наличие CRC32. Это очень важная и нужная фишка. Позволяет считать контрольные суммы налету. Очень нужно, если пишете свой протокол обмена данными, например. Для того же Modbus можно приспособить.


Все фотки самих чипов я делал на планшет, цифры сейчас нет под рукой. Все фото мои личные, фотал чипы из своих запасов.

Микро: ATtiny861A-SU vs STM32F030F4P6


Собственно решение для минимальных задач. Выбирал МК по доступности, количеству ног ну и более-менее нормальной периферии.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Слева ATtiny, справа STM32. Разница в размерах впечатляет, особенно как узнаешь возможности этой финтифлюшки.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Мини: ATmega328P-AU vs STM32F103C8T6

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Слева ATmega, справа STM32. При схожих размерах, ног у STM32 больше.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Средне: ATmega644PA-AU vs STM32F303CBT6


По опыту прошлой разработки знаю, что первым делом, когда 328-й уже не хватает, но 2560 ещё как-то слишком, ATmega644 лучший вариант. 44 ноги, периферия побогаче, памяти побольше и стоит по-божески. Думал включить сюда ATmega1284, но стоит у нас непотребных денег, решил всё-таки учесть цену.


Относительно STM32F303CB стоит заметить, что это очень сбалансированный чип по всем параметрам. Богатая периферия, много памяти, нормальная цена. Есть FPU, аппаратная поддержка RS485 (умеет аппаратно дёргать ногой направления передачи данных) и куча других плюшек.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Слева ATmega, справа STM32. При сравнимом количестве ног, размер у STM32 меньше.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Макси: ATmega2560-16AU vs STM32F405VGT6


Ну выбор МК от AVR в этой категории очевиден. STM32F405 выбрал также из-за его сбалансированности. А ещё вкусной цене при таких-то характеристиках.

STM32 от Булкина. Atmega и Arduino vs STM32 и HAL Stm32, Atmega, Attiny, Arduino, Длиннопост

Выводы


Конечно, сложно сравнивать такие вещи. Если делать подробный анализ, утонешь в тоннах текста. Если чего-то не обсудить, куча людей будет возмущаться, а почему про это не сказал, а почему это не отметил. Всё куплено!


Где-то года полтора назад я сам наткнулся на подобное сравнение и был ошарашен. К тому моменту уже больше года у меня было несколько отладочных плат на STM32 и я всё никак не мог к ним подступиться. Но тогда твёрдо решил добить. Отложил дела и потратил месяц на изучение. Через вопли, бури возмущения, сопли и ярость. А теперь не понимаю, как я раньше жил на Atmega’х и Arduino.


Ладно. Хочу отметить некоторые вещи, которые здорово влияют на выбор с обеих сторон.


Плюсы Arduino и вообще.


Конечно же сама экосистема. Огромная база знаний, огромное коммьюнити.

Библиотеки есть подо всё, прям вообще.

Доступность шилдов подо всё и вся.

Чрезвычайно низкий порог вхождения, вот для любого.

На борту есть EEPROM, это очень удобно и круто.

Отдельно стоит отметить, что даже без Arduino программировать под Atmel довольно легко. Библиотеки, Atmel Studio и прочее.


Но есть и глобальные недостатки.


Из-за того же простого порога вхождения, качество библиотек в подавляющей своей массе просто ужасное. Я б даже сказал, отвратительное.

На Arduino нет нормальной отладки. Serial.print() - это нефига не отладка.

С Atmega никогда не получишь нормальной производительности. Нормального планировщика не воткнёшь. Они есть, конечно, даже FreeRTOS можно воткнуть, но памяти и так мало, а планировщики очень голодные. Потому не сделаешь нормальный интерфейс с хорошим откликом, не сделаешь контроллер с сотней прерываний и несколькими десятками устройств на периферии.

Куча народу (не все, конечно) возомнили себя крутыми спецами и штампуют дерьмо на отладочных платах и шилдах. Частенько промышленное дерьмо. Это, у меня лично, вызывает дикое негодование.

Сама по себе платформа, не смотря даже на то, что и STM32 тоже может работать с Arduino, подразумевает усреднение. Отсюда даже на нормальных чипах ты получаешь кастрата. И по-любому приходится лезть в дебри. Ну и в чём смысл тогда?

Если касаться Atmel Studio - это тяжелейший монстр, который даже на моем i5 с 24Gb и SSD тормозит так, как Quake на 486-м.


А что сказать хорошего про STM32?


Платформа изначально очень производительная. Как я писал выше, нет кучи недостатков 8-битных МК.

У тебя всегда изначально куча периферии. И ты выбираешь, на какие ноги её вешать и плату разводишь, как тебе удобно. А МК уже конфигурируешь исходя из этого.

Из неочевидного, например, на любую ногу можно сделать как PullUP, так и PullDown. А это очень облегчает проектировку плат, поверьте.

HAL, на самом деле, очень мощный инструмент. Хотя некоторые его хают за громоздкость, но на деле это в основном набор готовых #define, которые сильно облегчают написание и чтение кода. И переносимость!

Отладка практически на любом инструменте, почти в любой среде работает на ура из коробки. А это в любой момент все переменные, как на ладони. И точки, и даже графики. Я вообще не пользуюсь ничем, что выводило бы данные в консоль. Зачем? Тратить время на написание этих шаблонов, которые потом вычищать из продакшена?

STM32CubeMX вообще панацея. За пару минут переносится код на почти любой другой STM32. Что-то поменял? Нет проблем, галочки расставил, пересобрал проект и всё!

Тот же SPI на F405 можно запустить на 41Мбит! Я просто EEPROM на SPI пользую на 21Мбит. А ещё прибавьте к нему DMA и вообще красота! Летает!

А наличие USB и RTC почти во всех STM32?


Ладно, плюсами можно до бесконечности. Что из минусов есть:


Довольно трудный вход. Разобраться сходу не получится, нужно иметь базис.

Библиотек в свободном доступе не то чтобы нет. Есть и много. Но они либо под устаревший StdPerif, либо заточены под конкретного человека и его собственный набор библиотек. Либо и то, и другое сразу. Так, чтобы почти без доработки большая редкость. К сожалению, сложно абстрагировать библиотеку в STM32, они часто повязаны друг с другом и заточены подо что-то конкретное

Так что да, вам придётся писать свои библиотеки довольно часто. Даже под элементарные вещи вроде LCD1602

Вас будет бесить написание HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET) в сравнении с digitaWrite(LED1, HIGH). Вас будет бесить, что вы должны ВСЕГДА указывать размер буфера приёма. Ведь какая красота в Arduino Serial.available()! Нет, в STM32 мы тоже можете сделать подобное, но придётся взрыть тонны документации, чтоб понять некоторые неочевидные, но элементарные вещи.

Вас будет бесить переход к C99 после C++, но потом даже будете этому рады.

Вас будет бесить объем и количество документации по STM32. Но потом вы проникнетесь и увидите лаконичность и очень грамотную подачу относительно документации Atmel.

На борту нет EEPROM, кроме серии STM32Lxxxx, которая дорогая, как изумруд.


Стоит ещё отметить такую штуку, как Mbed. Довольно крутая вещь для IoT. Большое коммьюнити, мощная поддержка. Куча библиотек для всего. Хотя для моих задач не очень подходит. Посмотрите, если в чистом виде STM32 пугает. STM выпускает платы Nucleo под эту платформу. Так что есть готовые решения, есть =)


Ладно. Всего не отметишь. Обо всём не расскажешь. Каждый должен сам решить, стоит ли. Я вот прошел этот рубеж и безумно этому рад. Я не пошёл по простому пути Arduino -> RPi и в результате имею сейчас гораздо более мощные инструменты. Конечно, одноплатки нужны и они крутые. Туда и Linux можно накатить, и сервачок поднять с БД. Но это другая опера.


На сегодня всё, удачи!

Показать полностью 7
[моё] Stm32 Atmega Attiny Arduino Длиннопост
129
127
ComradeBulkin
ComradeBulkin
7 лет назад
Сообщество Ремонтёров

Темы будущих уроков по STM32⁠⁠

На волне вчерашнего поста https://pikabu.ru/story/18_podrobneyshikh_urokov_po_programm...


Есть идеи по написанию уроков по различным темам в разрезе STM32. Приглашаю @DmitryAR, @witiliar, @XanderEVG, @Arimf, @Alexey9, @slonofil, и @AlexGyver к обсуждению. Сам я занимаюсь разработкой и проектированием автоматики для отопительных систем на биотопливе, готов говорить в этом разрезе.


Собственно не вижу смысла говорить об основах языка, вроде типов данных. @AlexGyver это уже осветил. Но может стоит это преподнести в разрезе C99, а не C++?


Вот темы, которые я бы мог осветить, по разделам:


Основы программирования в разрезе C99 и STM32:

- #define: хитрости и приёмы

- SWITCH/CASE или IF/ELSE: когда и где применять

- Битовые операции: хитрости и приёмы


Фишки в разрезе STM32:

- FreeRTOS: планировщик, семафоры, стэки

- CubeMX и HAL: как сохранить переносимость кода, как искать нужные функции, где искать примеры и прочее

- Настройка таймеров, их различия, где искать информацию в документации по их параметрам

- RTC

- ADC и DAC

- Обработчик ошибок с задержками с использованием FreeRTOS (собственная библиотека)

- Простая Round Robin База данных (собственная библиотека)



Среда программирования и аппаратная отладка:

- Настройка собственной среды под Linux и Windows

- Настройка Sublime Text, System Workbench for STM32, KEIL

- Отдельно по KEIL: стилизация под Monokai, дебагинг, трэйсинг, настройка компилятора

- Логический анализатор (могу рассказать про Saleae Logic)


Модули:

- Принципы работы шин I2C, SPI. Их достоинства и недостатки. Различные режимы: Polling, Interrupt, DMA

- Watchdog: IWDG и WWDG - назначение, настройка

- Использование 7-сегментных дисплеев: подключение напрямую к МК и с помощью драйвера MAXIM MAX6950/MAX6951 (собственная библиотека)

- SPI EEPROM STM M95xxx (собственная библиотека)

- I2C расширители портов NXP PCA9671 и PCF8574  (собственная библиотека)


Проектирование схем и хитрости:

- Как правильно разводить резонаторы

- Дребезг кнопок: триггеры Шмитта и RS-триггер

- Защита портов (в разрезе дискретных и аналоговых для токовых петель)

- Импульсные и линейные регуляторы напряжения:  подбор элементной базы, разводка

- Реле: электромагнитные и твердотельные. Схемы подключения и различия использования

- В разрезе твердотельных реле особенно хочу остановиться на снабберных цепях

- Энкодеры

- Токовая петля

- Onewrire

- RS485 и Modbus (может имеет смысл рассмотреть их отдельно). По Modbus могу преподнести материал по адаптации FreeModbus Slave и собственную реализацию Modbus Master с использованием DMA и FreeRTOS

- Подключение датчика температуры PT100 напрямую (без звезды) с использованием ОУ в схеме стабилизации тока

- Фазовое регулирование напряжения: датчик нуля, табличные расчёты, таймеры


Проектирование готовых изделий:

- Проектирование плат в KiCAD: принципы работы, создание деталей, 3D-моделей и прочее

- Проектирование готового изделия в FreeCAD: сборочный чертёж, 3D-модель и т.д.


Отдельно могу поговорить об учёте и хранении радиодеталей, тем более, что использую самописную программу для этого.


Ну и на закуску, вот несколько готовых изделий:

Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Показать полностью 5
[моё] Arduino Программирование Микроконтроллеры Stm32 Длиннопост Ремонт техники
102
104
techn0man1ac
techn0man1ac
8 лет назад
Arduino & Pi

Цифровой VU meter на базе STM32, анонс⁠⁠

Почему анонс? Потому что хочу понять, стоит ли тратить на это время.
Разумеется всё в контексте поста "Недорогая STM32 плата + Arduino IDE":
http://pikabu.ru/story/nedorogaya_stm32_plata__arduino_ide_4...

[моё] Vu meter Stm32 Цифровой Techn0man1ac Mrподелкинц Arduino Видео
47
32
KeyAnyPress
KeyAnyPress
8 лет назад
Arduino & Pi

Очередной пост ВиО. Готовьте свои вопросы, господа.⁠⁠

Очередной пост ВиО. Готовьте свои вопросы, господа. Arduino, Raspberry pi, Stm32, Вио, Помощь, Полезное

Добрый день подписчики сообщества и Пикабушники.

Вот и свежий пост вопросов и ответов.

В прошлом посте было много хороших вопросов и почти все получили ответы. Надеюсь в этот раз все будет идентично. Пусть каждый найдет тут ответ на интересующий вопрос.


Приступим :)


Уважаемые Пикабушники не интересующиеся данной тематикой. Дабы в дальнейшем вы не видели этих постов поставьте тег ВиО в игнор. Заранее спасибо.


З.Ы. Господа, не забывайте что у Arduino и Pi есть свое сообщество на Пикабу.

Не проходите мимо. Подпишитесь. :)

http://pikabu.ru/community/arduino

Показать полностью
Arduino Raspberry pi Stm32 Вио Помощь Полезное
60
27
techn0man1ac
techn0man1ac
8 лет назад
Arduino & Pi

Stm32f103 и Arduino IDE, проект №0⁠⁠

Arduino IDE sketch:

https://vk.com/doc256435878_444331607


Дешевая STM32 плата + Arduino IDE:

https://geektimes.ru/post/277928/

stm32f103 запрограммировал в Arduino IDE. Частота PWM равна 20 KHz:

pwmtimer.setPeriod(50); // 20 KHz, PWMresolution = 3600


Показан пример плавного старта DC двигателя. Практической пользы пока что не имеет, просто демонстрация возможностей stm32f103.

Stm32f103 и Arduino IDE, проект №0 Stm32f103, Arduino, Stm32, Отладочная плата, Mrподелкинц, Techn0man1ac, Видео, Длиннопост

Шпаргалка по частоте ШИМ при помощи функции setPeriod()(актуально для среды разработки Arduino IDE) (с) http://stm32duino.com/viewtopic.php?p=12493#p12493 .

Stm32f103 и Arduino IDE, проект №0 Stm32f103, Arduino, Stm32, Отладочная плата, Mrподелкинц, Techn0man1ac, Видео, Длиннопост

Схема выглядит вот так, только вместо 12 36В, а вместо составного TIP122 отечественный КТ827, резистор на 1 кОм, диод какой-то на 10 А 200В.

By Techn0man1ac aka MrПоделкинЦ

Показать полностью 2
[моё] Stm32f103 Arduino Stm32 Отладочная плата Mrподелкинц Techn0man1ac Видео Длиннопост
12
187
KeyAnyPress
KeyAnyPress
8 лет назад
Arduino & Pi

Расширители портов или что делать когда ног не осталось но очень надо!⁠⁠

Здравствуйте уважаемые пикабушники и читатели сообщества Arduino & Pi.

Сегодня снова небольшой обзорчик товаров с али но с небольшой объединяющей темой.

Этой темой сегодня будет "Расширители портов"


Думаю каждый из тех кто программирует микроконтроллеры сталкивался с ситуацией когда нужна еще пара пинов и проект будет то что нужно. Как правило это происходит когда вы добавляете в проект новую фичу. Увы, часто от нее приходится отказаться из-за нехватки свободных или портов с необходимыми функциями. Но сегодня я постараюсь описать самые полезные расширители портов от китайцев.

Поехали.



Итак, в самом начале, бесспорный лидер по цене и полезности.

Да я помню что уже обозревал этот модуль. Но повторение - мать учения. Кому-то я думаю повторный обзор этого модуля поможет. :)


PCF8574/PCF8574A

Расширители портов или что делать когда ног не осталось но очень надо! Arduino, Модуль, Полезное, Обзор Али, Stm32, Длиннопост

Этот расширитель портов не работает с ШИМ но отлично добавляет 8 портов через I2C. Есть версия расширителя под китайские экраны 1602/2004 но в них можно использовать всего 7 портов из-за разводки (но при стоимости чуть выше 70 центов я думаю это не проблема)


Расширитель несет в себе 8 квази двунаправленных портов. Т.е. расширитель может как открывать/закрывать порт из кода так и отлавливать это событие. В отличии от очень популярных сдвиговых регистров которые могут работать или как приемник сигнала или управлять сигналом на выходах. Есть правда в нем один минус. Открываемые порты подтягиваются не к питание а на ноль. Что в свою очередь несет некоторые ограничения в использовании. Но в противовес этому можно поставить очень простую работу с модулем без какой либо библиотеки.


На расширителе имеется 9й вход (int) для получения сигнала об изменении состояния других входов расширителя. Подключается в любой свободный порт и отслеживается состояние через него.


Применение: Подключение символьных экранов типа 1602/2004, подключение кнопок и энкодеров по i2c, подключение кнопочных/пленочных клавиатур через i2c, управление светодиодами, сегментными индикаторами.


Стоимость расширителя на Aliexpress начинается от 43 рублей за версию на 7 портов

и от 75 рублей за версию на 8 портов.

7 портов - http://9505.ru/5782

8 портов - http://9505.ru/7384



Следующим в нашем списке идет копия расширителя портов от Adafruit.

PCA9685 PWM Module (Arduino PWM Module)

Расширители портов или что делать когда ног не осталось но очень надо! Arduino, Модуль, Полезное, Обзор Али, Stm32, Длиннопост

По мне это очень полезный модуль. Дополнительные 16 ШИМ выводов это мощно.

В общем модeль имеет 16 выходов ШИМ по 12 бит каждый. 4096 уровней ШИМ на канал.

Работает модуль через I2C интерфейс со всеми вытекающими. Частота ШИМ настраивается от 24 до 1526 Гц хотя на плате указано от 40 до 1000 Гц.

Питание микросхемы и портов вывода может быть разделено. Питание микросхемы допускается в передлах от 3 до 5 вольт. Т.е. согласование логических уровней для управления микросхемой не требуется. Максимальное напряжение которое может выдержать микросхема - 6 вольт.

На плате присутствует место под фильтрующий конденсатор. Иногда модули приходят без него т.ч. советую вам его распаять.


Этот модуль идеально подойдет для работы с PCF8574 в тандеме. Главное не забудьте поставить перемычки на А0-А5 для настройки I2C адреса.


Применение: Управление светодиодами/светодиодными матрицами, сервомоторами, устройствами с управляющим сигналом ШИМ.


Стоимость на AliExpress начинается от 110 рубликов.

http://9505.ru/2355


Для тех кому интерфейс SPI ближе могут приобрести аналог этой микросхемы.

TLC5940 в DIP корпусе.

Стоимость этой микросхемы на AliExpress начинается от 70 рублей за штуку.

http://9505.ru/8468



Пройдем к следующему типу портов. АЦП.

Очень часто в наших проектах нам не хватает еще одного-двух портов с АЦП. Но в данном случае нам поможет расширитель АЦП на 4 порта.

ADS1115 ADC Module (Arduino ADC Module)

Расширители портов или что делать когда ног не осталось но очень надо! Arduino, Модуль, Полезное, Обзор Али, Stm32, Длиннопост

Сам по себе модуль очень компактный и подключается опять же через интерфейс I2C. 12bit.

Плюсами этого модуля можно назвать низкое энергопотребление (порядка 150мкА в режиме работы), встроенный усилитель входного сигнала, программируемая частота дискретизации, режим пониженного энергопотребления и выходной компаратор.


Всего в микросхеме имеется 4 входа (AIN0-AIN3), которые могут использоваться как два дифференциальных входа для измерения разности напряжения между входами, либо как 4 отдельных несимметричных входа, в этом случае напряжение измеряется между одним из входов и общим проводом. Встроенный усилитель дает возможность измерения малых напряжений, не ограничивая разрешение АЦП. Модуль имеет всего 4 варианта адреса I2C в зависимости от того к какому из входов будет подключен вход ADDR (доступны для подключения пины DVV, GND, SCL, SDA). По умолчанию адрес модуля 1001000 (0x48).


Еще одна приятная особенность этого модуля - наличие оповещения от компаратора по линии ALRT при окончании преобразования. Что позволяет не опрашивать постоянно устройство для получения данных а действовать по прерыванию от самого модуля.


Стоимость данного модуля на AliExpress начинается от 118 рублей.

http://9505.ru/4593


Если у вас есть желание подробней прочитать про данную микросхему - можете почитать по данной ссылке. http://radiolaba.ru/microcotrollers/ads1115-opisanie-i-podkl...



Далее на повестке у нас обратная трансформация сигнала. ЦАП.

Преобразователь АЦП/ЦАП на базе PCF8591 (Arduino DAC Module)

Расширители портов или что делать когда ног не осталось но очень надо! Arduino, Модуль, Полезное, Обзор Али, Stm32, Длиннопост

Начнем с того что этот модуль имеет один большой минус. Разрешение каждого входа/выхода у него всего 8 бит, что хуже чем у Arduino. Но этот модуль мы должны рассмотреть т.к. в нем много того что не умеет ардуина.


Модуль имеет 4 аналоговых входа (АЦП, он же ADC), 1 аналоговый выход (ЦАП, он же DAC), разрешение каждого входа/выхода 8 бит. Управляется по шине I2C. Рабочее напряжение 2.5 - 6В. Модуль может сравнивать напряжение из 2 и более источников и выдавать результат управляющему микроконтроллеру в 4 байта со значением по каждому входу.


Как вы могли заметить на модуле распаян потенциометр (10к), термистор и фоторезистор.

Они тут не просто так. Они для отладки и тестов преобразователя ЦАП. Три джампера на модуле присоединяют эти элементы ко входным портам модуля для экспериментов и отладки программы.


Модуль конечно очень интересный но на мой взгляд разрешение маловато.


Стоимость модуля на AliExpress начинается от 68 рублей (в комплекте идут провода для подключения)

http://9505.ru/4994



Кому нужно большее разрешение - прошу любить и жаловать

Преобразователь ЦАП на MCP4725

Расширители портов или что делать когда ног не осталось но очень надо! Arduino, Модуль, Полезное, Обзор Али, Stm32, Длиннопост

Очень маленький модуль со всего 1 каналом преобразования ЦАП 12бит. Клон модуля от Adafruit с одним отличием, отсутствует вход A0. Модуль подключается по шине I2C и имеет всего 2 адреса т.ч. на одну шину получится повесить только 2 таких модуля. Модуль имеет eeprom память для записи последнего преобразования и может работать как от 3.3 вольта так и от 5 вольт.


В чем же интерес данного модуля помимо большего разрешения. Во первых у него есть собственный EEPROM. В нем хранятся данные о последнем преобразовании. т.ч. вы в любой момент можете взять эти данные. Во вторых модуль работает через Fast Mode I2C т.е. 3.4Mbps.


Преобразованные данные снимаются с пина OUT.


Более детально ознакомиться с работой можете тут -

https://learn.adafruit.com/mcp4725-12-bit-dac-tutorial


Стоимость модуля на AliExpress начинается от 70 рублей. К комплекте с модулем только гребенка для макетной платы.

http://9505.ru/4374


Ну и в заключение хотелось бы показать маленький экранчик с низкой ценой и тач экраном :)

2.0" TFT Sensor lcd + stilus

Расширители портов или что делать когда ног не осталось но очень надо! Arduino, Модуль, Полезное, Обзор Али, Stm32, Длиннопост

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

Разрешение экрана: 240X320

Встроенный микроконтроллер с оперативной памятью: S6D1121

Монитор поддерживается Arduino библиотекой: UTFT


Этого я думаю более чем достаточно перед тем как узнать что стоит он всего 177 рублей да еще и стилус в подарок. Я заказал себе несколько  т.к. это подарок богов относительно дорогущего 1.8" tft со слотом для карточки.


Еще раз повторю.

Стоимость этого экрана на AliExpress составляет смешных 177 рублей. В подарок еще идет стилус.

http://9505.ru/6554



На этом сегодняшний обзор я закончу.

Надеюсь вы найдете для себя то что вы искали и что хоть кому-то этот пост будет полезен.

Удачных вам компиляций, минимум багов и быстрых доставок.


P.S. Простите меня за такие короткие ссылки. :( Пикабу что-то делает с короткими ссылками али поэтому приходится делать вот так :(


Не забывайте подписываться на наше сообщество "Arduino & Pi"

http://pikabu.ru/community/arduino

Показать полностью 6
Arduino Модуль Полезное Обзор Али Stm32 Длиннопост
37
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии