Jump to content
Sign in to follow this  
Kirmayer

Как правильно проектировать устройства?

Recommended Posts

Изучаю электронику как хобби.

Сейчас имею на руках самодельную машинку на радиоуправлении. Электронная начинка выглядит как монстр Франкенштейна, управлением мотора занимается китайский клон odrive, связью модуль подсоединенный к Raspberry Pi (он же пользуется и как связующее звено для остальных модулей), различная периферия(экранчик, лампочки, руль, куча датчиков и сенсоров) в общей сложности подключены к двум ардуинкам и трём stm32f103.

Такой зоопарк следствие того что изначально это всё были разные эксперименты, а сейчас хочу объединить весь свой опыт в одном проекте. Всё это было пробным макетом, теперь же надо привести к красоте. Так как я уже давно хотел изучить Altium Designer собираюсь воссоздать машинку на самодельной плате. И тут у меня начался затуп: а как делать правильно? Сделать одну большую плату на одном мощном контроллере (stm32f407 к примеру), или же для каждой периферии отдельный модуль на слабом контроллере.

Собственно вопрос к профессионалам, есть ли какой-то свод правил как проектировать сложные устройства, или какого принципа рекомендуется придерживаться?

Share this post


Link to post
Share on other sites
10 часов назад, Kirmayer сказал:

есть ли какой-то свод правил как проектировать сложные устройства

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

Share this post


Link to post
Share on other sites

Взаимодействие устройств IoT от Microchip с облаком Google

Благодаря облачным технологиям появилась возможность реализовать сложные проекты на базе микроконтроллера путем перераспределения вычислительной нагрузки между микроконтроллером и облаком. Простые в использовании отладочные платы, такие как AVR- и PIC-IoT WG, позволяют выполнять ресурсоемкие вычисления, передавая их в облако.

Подробнее

Между распределением функций и их сосредоточением ищется компромисс. 

26.04.2020 в 21:26, Kirmayer сказал:

в общей сложности подключены к двум ардуинкам и трём stm32f103.

Я не знаю какие задачи решает твоя система но предполагаю, что это перебор.

Share this post


Link to post
Share on other sites

Вебинар «Решения Analog Devices для гальванической изоляции. Обзор технологий и новинок» (27.04.2021)

Компания «Компэл» и Analog Devices приглашают всех желающих 27/04/2021 принять участие в вебинаре, посвященном решениям Analog Devices для гальванической изоляции. В программе вебинара: технологии гальванической изоляции iCoupler, цифровые изоляторы, технология isoPower, гальванически изолированные интерфейсы (RS-485, CAN, USB, I2C, LVDS) и другое. Вебинар будет интересен разработчикам промышленной автоматики и медицинской техники.

Подробнее

26.04.2020 в 21:26, Kirmayer сказал:

к двум ардуинкам и трём stm32f103

А ЧЁ практически нейронная сеть:)

Да наверное это программно вероятно  проще каждый более менее важные узлы сделать со своим "мозгом" и обработанные сигналы обьеденять в центр. 

Share this post


Link to post
Share on other sites

WDR-60 от Mean Well – источник питания на DIN-рейку со сверхшироким входом

Компания Mean Well расширяет семейство одно- и двухфазных источников питания со сверхшироким диапазоном входного напряжения, предназначенных для монтажа на DIN-рейку, дополнив его серией WDR-60. Широкий температурный диапазон работы позволяет применять их для питания промышленных систем управления и контроля, устройств промышленной автоматизации и всевозможных стационарных электромеханических устройств, где важны надежность и безопасность.

Подробнее

26.04.2020 в 21:26, Kirmayer сказал:

подключены к двум ардуинкам

Ардуинки это зло. В них все завязано на готовый софт и готовую периферию. Все это не позволяет использовать оптимально все возможности микроконтроллера. Если действительно хотите изучать микроконтроллеры учитесь писать программы допустим на СИ

Share this post


Link to post
Share on other sites
1 час назад, musa56 сказал:

Если действительно хотите изучать микроконтроллеры учитесь писать программы допустим на СИ

Я бы ещё добавил, что чтобы научиться хорошо писать программы для микроконтроллеров на "С", надо перед этим хорошо разобраться и освоить написание программ на ассемблере хотя бы для одного контроллера.

Без этого гарантированы глупые ошибки и полное непонимание, "почему моя программа на "С" не работает". :)

Edited by Lexter

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. 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...
Sign in to follow this  

  • Сообщения

    • Модуль: Minijst E AC 546134503 ST Добрый день ув. Специалисты!  В вышеперечисленном модуле сгорел симистор управления двигателем BT138 800. Поменял симистор, реле RL2 и RL3, на всякий случай ULN2003A. Проработала 5 минут в режиме отжима, опять вылетел сим(Т1 и Т2 в КЗ.) Снова заменил симистор, поставил другой движок(б/у к 220 предварительно цеплял, работает ровно, щетки практически не искрят). Проработала в режиме отжима минут 20, при этом ток потребления двигателя был 1,5А ни каких скачков не зафиксировал. Опять вылетел симистор и следом ULN2003A, STM8S105K4T6C, стабилитрон  Bzv4 6.2v., сопротивление 33Ом (возле реле RL3). Заменил все что пыхнуло, поменял все электролиты, прошил STM8 (st-link'oм).Шил Flash и Eeprom. Сейчас при включении на экране 000000 и трещит реле RL3, чуть подмигивает дисплей с переодичностью один раз в 3сек. примерно. На катушке реле 4 Вольта, диоды живые. Отпаиваю реле, дисплей дёргаться перестает, на на экране так же нули, мигает индикатор кнопки play. На переключатель режимов не реагирует, работает только кнопка отсрочки запуска...   Пробовал менять MC908QC16CDZE(заказывал прошитую) результат тот же!!! ULN пробовал три штуки. Посоветуйте на что обратить внимание... Уже просто интересно, в чем проблема. Там менять то больше нечего! Ещё думаю может прошивка не подошла... Попробую сегодня стереть, stm8 и запустить модуль. По идее если дело в прошиве, щёлкать реле должно перестать? Заранее спасибо всем откликнувшимся!!!
    • Все платки проданы.
    • на сайт АудиоКиллера сходить, почитать... не пробовали?
    • Подскажите,какую схему лучше собрать?
    • @Belorusgomel  ниче не понравится: https://www.pcbway.com/project/member/shareproject/?bmbno=AEABD23F-925C-4F  ?  -)))
    • Вообще-то нужна 1 калория, это раза в 4 больше чем джоуль. 
  • Similar Content

    • By admin
      В видео поговорим об энергоэффективности микроконтроллеров. Сравним потребление в режима сна arduino, blue pill с STM32F103 и представителя новой линейки энергоэффективных микроконтроллеров от st — STM32L552.
      Подробную информацию об линейке L5 можно найти тут: https://www.compel.ru/lib/143383
      Пи тест часть 1: https://youtu.be/ozu1IUjH1_Q
      Пи тест часть 2: https://youtu.be/uLOWYE-JJpA
    • By Dj_Grander Z Play
      У меня есть ESP32Cam которая берет кадры (240*176пкс. QQVGA) и пересылает их серверу по UDP. С этой частью проекта проблем нет всё работает всё ОК. Но хочу прикрутить получение данных по UDP от того же сервера причем с достаточно приличной частотой. Кто пробовал работать с такими модулями, не подскажете не будет и помехой работа с камерой, работе с сервером по UDP-протоколу. У меня есть сомнения по поводу того не будет ли эспешка в момент взятия кадра зацикливаеся на этом и в этот момент не сможет принять сообщения от сервера и управлять периферией. Подскажите пожалуйста кто может т.к. работаю с этими камнями впервые. Заранее спасибо.
    • By Nikolay_R
      Добрый день! В данный момент прохожу производственную преддипломную практику (сам учусь в УРТК). Стоит задача соединить Lego EV3 и Raspberry PI по I2C интерфейсу. До этого, при работе с другими устройствами, у меня никогда не было проблем с I2C интерфейсом, но в данной связке "EV3-RPI" - начались ошибки. Перед описанием ошибок, уточню, что EV3 - Master, а Raspberry - Slave, т.к. EV3 умеет работать только в режиме Master.
      Первое, что бросается в глаза, это практически постоянная передача в эфир SLA пакета (адреса Slave-устройства). По-факту, именно с этого и должна начинаться передача, но в данном случае, её попросту не происходит. А, если быть точнее, то происходит она только каждый шестой раз.
      Следующая проблема заключается в том, что обмен данными не всегда происходит до конца. Даже если EV3 отправляет свой пакет (два байта), то ответ от Raspberry (он тоже два байта) приходит через-раз, а то и ещё реже.
      я также пробовал соединять EV3 с Arduino, Arduino с Raspberry, что бы найти причину, но там всё отлично работало и ошибок было ноль. Стабильный обмен двумя байтами, как и нужно.

      Очень нужна помощь в устранении данных ошибок!


      P.S: У EV3 используется нестандартный уровень лог. единицы (там он 4.3в) и обычные конверторы уровней уже не работают с ним. Поэтому, мне пришлось перепаивать его под другие номиналы подтягивающих резисторов, что бы всё заработало. В его работе нареканий нет.

      Ниже показаны осциллограммы работы I2C между различными устройствами, которые были задействованы.


    • By YetiSPb
      Здравствуйте. Мои знания в электронике малы, но мне необходимо подружить датчик давления и модуль тока и напряжения, если это возможно.
      Итак, есть датчик дифференциального давления NPH-8-172DH и модуль тока и напряжения CJMCU-219 для Arduino .
      Если я правильно понял то датчик отдаёт два сигнал нала в mV. Пины 5, 6 вход отдают данный по давлению на входе, пины 4, 10 по давлению на выходе.
      Возможно ли измерить сигнал датчика модулем CJMCU-219?  Какое должно на датчик подаваться напряжение и какой должен быть ток? Как правильно подключить датчик и модуль дуг у дугу правильно?
    • Guest kaisarali1997ss@gmail.com
      By Guest kaisarali1997ss@gmail.com
      Доброго времени суток.
      Не смог реализовать повторный Serial.available() внутри условия Serial.available.
      Может кто-то уже сталкивался с этим.
      Задача состоит в том, что нужно зажечь светодиодные ленты WS2812b. 
      Алгоритм действий:
      1)  Ожидаем появления данных на входе serial с помощью if (Serial.available()){}
      2) Принимаем значения int val=Serial.paresInt();
      3)Условие сравнивания if(val>123){chess=val;} esle if(val<124){color=val;} т.е номер светодиода это chess, цвет это color
      4) На смартфон отправляем 'n', для разрешения отправки следующих данных
      5)Ждем уже цвет светодиода на входе serial далее по предыдущему алгоритму 
      6)Зажигаем указанный светодиод на указанный цвет. 
      #include <FastLED.h> #define LED_PIN 6 #define NUM_LEDS 123 CRGB leds[NUM_LEDS]; const unsigned int DIM1 = 123; const unsigned int DIM2 = 1; const unsigned int DIM3 = 3; int ary[DIM1][DIM2][DIM3]; void setup() { Serial.begin(9600); FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); } void loop() { if(Serial.available()){ int val=Serial.parseInt(); int chess=val; Serial.println(chess); delay(1); Serial.println('n'); clear_serail(); if(Serial.available()){int color=Serial.parseInt(); Serial.println(color); if(color>0){ if(color==124){ ary[chess][1][1]=0; ary[chess][1][2]=255; ary[chess][1][3]=0; Serial.println(ary[chess][1][1]); Serial.println(ary[chess][1][2]); Serial.println(ary[chess][1][3]); leds[chess]=CRGB(ary[chess][1][1],ary[chess][1][2],ary[chess][1][3]); FastLED.show(); Serial.println('l'); clear_serail(); } if(color==125){ ary[chess][1][1]=255; ary[chess][1][2]=0; ary[chess][1][3]=0; leds[chess]=CRGB(ary[chess][1][1],ary[chess][1][2],ary[chess][1][3]); FastLED.show(); Serial.println('l'); clear_serail(); }}} } } void clear_serail(){ Serial.end(); Serial.begin(9600); }  
×
×
  • Create New...