• Как заставить Arduino выполнять задачу в заданное время?

    1. Читаете время.
    2. Если текущее время = времени выполнения действия, то выполнить действие...
    Или за Вас код написать?
    Ответ написан
  • Как работает библиотека Irremote.h?

    Можно открыть библиотеку и посмотреть. По умолчанию на винде в C:\Program Files (x86)\Arduino\libraries\RobotIRremote\srcI\IRremote.cpp
    Исходя из беглого анализа, то:
    // initialization
    void IRrecv::enableIRIn() {
      cli();
      // setup pulse clock timer interrupt
      //Prescale /8 (16M/8 = 0.5 microseconds per tick)
      // Therefore, the timer interval can range from 0.5 to 128 microseconds
      // depending on the reset value (255 to 0)
      TIMER_CONFIG_NORMAL();
    
      //Timer2 Overflow Interrupt Enable
      TIMER_ENABLE_INTR;
    
      TIMER_RESET;
    
      sei();  // enable interrupts
    
      // initialize state machine variables
      irparams.rcvstate = STATE_IDLE;
      irparams.rawlen = 0;
    
      // set pin modes
      pinMode(irparams.recvpin, INPUT);
    }
    
    //само прерывание
    ISR(TIMER_INTR_NAME)
    {
      TIMER_RESET;
    
      uint8_t irdata = (uint8_t)digitalRead(irparams.recvpin);
    
      irparams.timer++; // One more 50us tick
      if (irparams.rawlen >= RAWBUF) {
        // Buffer overflow
        irparams.rcvstate = STATE_STOP;
      }
      switch(irparams.rcvstate) {
      case STATE_IDLE: // In the middle of a gap
        if (irdata == MARK) {
          if (irparams.timer < GAP_TICKS) {
            // Not big enough to be a gap.
            irparams.timer = 0;
          } 
          else {
            // gap just ended, record duration and start recording transmission
            irparams.rawlen = 0;
            irparams.rawbuf[irparams.rawlen++] = irparams.timer;
            irparams.timer = 0;
            irparams.rcvstate = STATE_MARK;
          }
        }
        break;
      case STATE_MARK: // timing MARK
        if (irdata == SPACE) {   // MARK ended, record time
          irparams.rawbuf[irparams.rawlen++] = irparams.timer;
          irparams.timer = 0;
          irparams.rcvstate = STATE_SPACE;
        }
        break;
      case STATE_SPACE: // timing SPACE
        if (irdata == MARK) { // SPACE just ended, record it
          irparams.rawbuf[irparams.rawlen++] = irparams.timer;
          irparams.timer = 0;
          irparams.rcvstate = STATE_MARK;
        } 
        else { // SPACE
          if (irparams.timer > GAP_TICKS) {
            // big SPACE, indicates gap between codes
            // Mark current code as ready for processing
            // Switch to STOP
            // Don't reset timer; keep counting space width
            irparams.rcvstate = STATE_STOP;
          } 
        }
        break;
      case STATE_STOP: // waiting, measuring gap
        if (irdata == MARK) { // reset gap timer
          irparams.timer = 0;
        }
        break;
      }
    
      if (irparams.blinkflag) {
        if (irdata == MARK) {
          BLINKLED_ON();  // turn pin 13 LED on
        } 
        else {
          BLINKLED_OFF();  // turn pin 13 LED off
        }
      }
    }

    Идет запуск таймера с периодом 0,5мкс и разрешение прерываний + соответственно чтение состояний высокий/низкий уровень. А дальше уже функции разгребания полученных MARK и SPACE.

    Т.е. до функций декодирование работает просто, как лог. анализатор, читая лог. уровни каждые 50мкс и сохраняя их.
    uint8_t irdata = (uint8_t)digitalRead(irparams.recvpin);


    Аналогично можно узнать о работе других библиотек.
    Ответ написан
    Комментировать
  • Английский. Где учить в интернете?

    По дороге на работу слушаю от BBC передачи, можно на рутрекере найти [Британский английский язык/Podcast/подкаст] BSW AVG 2017 -BBC Russian: Say the word / Learn English with BBCRussian / Самостоятельное изучение английского языка с пояснениями на русском / Beginner / Elementary / PreIntermediate [2007-2016, MP3, RUS]
    (как зайти, надеюсь, разберетесь :) Tor, например )

    Довольно неплохо, как по мне. Разные голоса + достаточно весело и интересно. Для пассивного изучения вполне годно, я считаю.
    Ответ написан
  • Сколько ватт отдаст аккумулятор?

    Амперы умножаем на Вольты и получаем Ватты.
    Умножаем на часы и получаем Ватт*часы.
    Делим на мощность нагрузки и получаем сколько оно проработает в идеальном случае. Вт*ч / Вт = ч

    Другое дело нагрузка... Лампа накаливания имеет нелинейное сопротивление, зависящее от нагрева спирали. Если питать напрямую от аккума, то скорее всего ток будет зависеть от сопротивления холодной спирали (никаких 100Вт там не будет, тупо ей мало напряжения для работы).

    Если питать лампу через хорошую повышайку/инвертор, то время будет зависеть от потребляемого лампой тока и КПД преобразователя. (Допустим 4,5А*ч*12В = 54Вт*ч, при работе на 100Вт нагрузку проработает 0,54ч, а с учетом КПД преобразователя процентов 80 получим 0,4часа, т.е. минут 25).

    Вариант 2 вообще вряд ли сможет 100Вт отдать, это 100Вт нагрузки/3,7Ваккума = 27Апотребляемого тока
    Ответ написан
    3 комментария
  • В каком виде передаются данные через последовательный порт в ардуино?

    Если речь о соединении Arduino-терминал на ПК, то передаются тупо символы кодами. По сути обычный UART. Просто передает байты.

    Если надо, то при передаче программист добавляет плюшки в виде кодов исправления ошибок, ну или хотя бы контрольной суммы (CRC), с повторным запросом, в случае, если контрольная сумма не сошлась. На других устройствах соответственно это тоже должно быть реализовано.

    В случае использования конкретного протокола (например, если надыбали готовую библиотеку) данные фичи уже могут быть написаны за Вас.
    Ответ написан
    Комментировать
  • Как перенести макет Arduino?

    В чем проблема нарисовать ардуину, как самостоятельный модуль? Если не ошибаюсь, то с буквой А пойдет целая плата.

    Примерно так. Только УГО и саму букву которой будет обозначаться согласуйте с тем, кто у Вас проверять будет.
    dd22e2e11a4d4b6caebc81ecfffc45ef.jpg

    Остальные готовые датчики аналогично.

    Хотя можно извращаться и рисовать принципиалку всего подряд, но надо ли.
    В принципе там будет МК, его кварц, микруха USB-UART со своим кварцем (можно будет ее вообще при желании убрать), линейный стабилизатор и конденсаторы, разъемы.
    Ответ написан
    1 комментарий
  • Как начать работу с микроконтроллерами с минимальными затратами?

    STM32F103C8T6 (мк с минимальной обвязкой) + ST-LINK_V2 (программатор-отладчик) В сумме около 300р.
    При желании на эту STM'ку можно залить загрузчик ардуины или использовать, как полноценный 32-битный МК. Кстати родной STM CubeMX делает первые шаги не сильно сложнее ардуины.

    Из особенностей - многие ардуино-модули любят 5В логику, возможно будет полезен конвертер.
    Надо будет припаять штырьки к плате. (заодно паять попрактикуетесь :) )

    Ну и периферии понабрать, всякие там OLED дисплеи, кнопки, макетку (лучше сразу большую), набор проводов на все случаи жизни, набор резисторов выводных (их в макетку тыкать хорошо). В этом плане, возможно проще купить KIT для арудины, там и клавиатурки и RFID метки, и сервопривод, ультразвуковой дальномер + некоторое кол-во рассыпухи (резисторы, конденсаторы) уже будет.

    На первое время паяльник, еще стоит взять мультиметр и найти регулируемый блок питания.

    Кстати, пара групп, где годные штуки мелькают, там можно найти всё мною перечисленное:
    https://vk.com/ali_radio
    https://vk.com/chinagreat
    Ответ написан
    5 комментариев
  • Как определить массу нагрузки на валу двигателя?

    Вариант "в лоб" найти формулу момента под двигатель.
    Насколько я помню момент прямо пропорционален току через двигатель, ну и коэффициенты, которые надо будет нарыть/вычислить/получить экспериментально.

    Надо будет получить среднеквадратичное значение тока, по нему вычислять момент М (Н*м).
    Используя момент М (Н*м) и длину плеча l (м) до нагрузки - вычислить нагрузку на валу = M/l и перевести это из Ньютонов в кг или сразу момент в килограммах считать.

    Если скорость известна, а тиристор открывается на одно и тоже время, то можно просто составить таблицу:
    Используем набор импровизированных нагрузок и замеряем какие при этом обороты.
    Строим таблицу, затем график и прикидываем функцию которая приблизительно отразит зависимость скорости от нагрузки для данного двигателя. Используем ее.
    Ответ написан
    8 комментариев
  • Как подключить семисегментные индикаторы?

    Скорее всего распиновка будет совпадать с аналогичными индикаторами, на которые Вы найдете даташит. Единственное выяснить общий анод(+) или катод(gnd)

    В общем случае у вас будет 3 анода или катода и 7 выводов под сегменты.
    Управление идет динамической индикацией. Т.е. сначала подключаем один анод(или катод) и включаем нужные сегменты, затем второй и т.д.. На большой частоте глаз не заметит, что по факту каждая цифра включается по очереди.

    Общий анод:
    https://lib.chipdip.ru/195/DOC000195193.pdf

    Общий катод:
    https://lib.chipdip.ru/195/DOC000195397.pdf

    Определить можно элементарно либо прозвонкой мультиметра на сегмент (этого скорее всего хватит, что бы сегмент начал светится), либо через токоограничивающий резистор и источник напряжения.
    8, 9, 12 пины соответственно аноды или катоды цифр.
    Остальные выводы - сегменты.

    Если подать плюс на 8, 9 или 12 сегмент, а минус на любой оставшийся пин и будет гореть сегмент(это для прозвонки мультиметром, если тестируете от источника напряжения, например 5В, то используйте токоограничительный резистор на 200-300 Ом), то это общий анод. Если работает при смене полярности "-" на 8/9/12 пин, а плюс на один из пинов сегмента, значит общий катод.

    6 вывод не используется (у Вас его и нет)
    Ответ написан
    Комментировать
  • Как сделать так, чтобы AC питание можно было включать любой стороной?

    Если реле для переменного тока, то фаза и ноль не принципиальны. Т.к. относительно ноля напряжение уходит и в плюс и в минус. Просто цепляете переменку, ничего от этого не умрет.
    А вот то, что советуют поставить мост... если там тиристоры/симисторы внутри, то оно может потерять способность закрываться без перехода через 0.

    Не понял кусок
    два для постоянного (ноль и фаза)
    Это вообще что было? На постоянке есть + и -. (Похоже речь ведь об управляющих контактах реле?)
    Ответ написан
    7 комментариев
  • Почему при параллельном подключении может перестать течь ток?

    У тебя цепи:
    10 - индикатор - диод - резистор - 1(общий)
    12 - резистор - 1(общий)

    Если подать напряжение на 12 контакт, то на резисторе будет падать напряжение, которое запирает диод и он не проводит ток, либо проводит ток, но его недостаточно для свечения индикатора.
    Ответ написан
  • Имеет ли каждый USB-порт на материнской плате независимую величину силы тока?

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

    А также можно отключить питание и прозвонить 5В линии питания USB разъемов, если они прозваниваются, то все висят на одной линии.

    Вот кстати за 30 секунд поиска небольшой ответ на ваш вопрос с примерами нескольких мат. плат.

    В лучшем случае из 5 плат был транзистор управляющий и предохранители на каждый порт. А так тупо на +5В или +5В дежурки заведено через общий предохранитель. И клали все на спецификации.

    Может на USB 3.0 и новых платах и будет что-то, но в любом случае смотрите конкретную модель мат. платы.
    Если надо кого-то убедить, то вопрос решается банальным рассмотрением мат. платы.
    Ответ написан
    Комментировать
  • Частота работы МК и передачи одно и то же?

    Им не нужно попадать в "такт".
    Частота обработки сигнала выше, чем частота передаваемого сигнала, так что приемнику не надо быть синхронизированным с передатчиком, достаточно поймать начало передачи, не обязательно с точностью до наносекунд. (тот же I2C на 400кГц, а МК ваш на 8МГц, он за время передачи одного бита еще что-нибудь успеет сделать)

    +сейчас интерфейсы реализованные на периферии МК могут работать независимо от ядра, порой со своим тактированием и своими буферами для приема и передачи данных, вам останется только проверять или загружать эти буферы, а периферия сама будет отправлять-принимать данные (например USB который от 48МГц фигачит, в то время, как сам МК от 12МГц тактируется, аппаратный UART)
    Ответ написан
    8 комментариев
  • Максимальная пороговое напряжение затвора?

    treshhold voltage - напряжение, при котором транзистор только начинает открываться, а значит для ключевого режима это лишь самая малость (в качестве примера IRLZ44N)
    79fd49f548a3482fb1a2409ee7d170c2.jpg

    Диапазон напряжений на который рассчитан затвор транзистора обзывают gate-to-source voltage, вот его превышать нельзя
    671cfbfa23ec4e70bda495a788c78ff9.jpg

    И лучше приближаться к значению gate-to-source voltage, т.к. транзистор будет больше открыт, следовательно сопротивление его канала меньше, т.е. меньше потери на нагрев транзистора.
    Обычно приводят графики тока от напряжения на затворе при фиксированном напряжении, по ним видно, что при напряжениях близких к treshhold ток через транзистор не очень большой, т.к. он еще не полностью открыт.
    1c206f20195646538dab63e77e751079.jpg
    Ответ написан
    Комментировать
  • Где в даташите пишется частота МК и как её правильно подобрать для программирования?

    В даташите будет указана максимальная тактовая частота. При этом можно и от внутренннего генератора тактироваться и и внешнего (в данном случае на фото 12МГц), а может не от кварца а вообще от RC цепочки (резистор с конденсатором).
    При этом в МК может быть умножитель и ваш кварц на 8МГц через PLL превращается в итоге в 72 МГц!

    Подробности надо смотреть на конкретный камень.
    Частота указывается не программатора, не ПК, а именно на частоту кварца или внутреннего генератора от которого вы тактируетесь.
    Внешний кварц, сразу заметим, точнее чем встроенный генератор.
    Ответ написан
    3 комментария
  • Аппаратура для проведения соревновании?

    Всё зависит от того, какое соревнование. Нельзя дать четкий ответ на Ваш вопрос без уточнения правил соревнования.
    Допустим для соревнования кто быстрее ткнет кнопку (ну типа своей игры что-то) достаточно будет в минималках устройства, которое будет обеспечивать логику работы (МК), кнопок, индикаторов, разъемов с проводами (можно и на соплях спаять), возможно что-то типа реле для коммутации, если нужно включать мощные лампы + свистоперделки по желанию.
    Ответ написан
    Комментировать
  • Питание 3.5 HDD 12V?

    Однозначно импульсный DC-DC, иначе надо будет колхозить радиатор больше, чем блок питания.
    Качество питания вас не должно сильно задевать, ибо в компе 12В тоже от импульсного блока питания. (ну в разумных пределах :))
    При старте надо будет Ватт 15-20, что бы выдерживало и Ватт 10 при работе. (ну может с особенностями конкретного диска)

    В принципе можно сделать неплохой тройник в котором будет входное гнездо для зарядки; DC-DC до 12В@2А с выходом на HDD из огрызка проводов со старого блока питания; выход 19В с разъемом на ноут.
    На всякий случай посмотреть потребление ноутом от блока питания, есть ли запас. Ну или тупо при работе с жестким диском запитываться от БП, а ноут в это время будет на аккумуляторах.

    Если заказывать что-то у китайских товарищей, то делить обещанную мощность на 3-4, если не хотите самовыпаивающиеся диоды Шоттки или установку вентиляторов. :) И сначала этот БП погонять на нагрузке подольше, посмотреть на его поведение.
    Ответ написан
    Комментировать
  • Большинство контактов на МК это регистры?

    И почему их всего 4 основных для записи даже в современных процессорах, где этих ножек в разы больше, чем в МК?

    Так смотрите современные МК.
    Вот тут, например, 11 портов ввода-вывода и каждый порт может иметь до 16 выведенных пинов.
    И не путайте порт с пинами и его регистры.

    8592528052444c4d9c274b09128cc3e6.jpg
    Состояние пинов может определятся не одним регистром, а целой группой.

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

    В целом за порт отвечают регистры (несколько) определяющие работу выводов порта: работу на ввод или вывод, определяющие режим работы цифровой или аналоговый, регистры позволяющие вывести на ноги определенную периферию МК (альтернативные функции) и т.д. Более подробно имеет смысл рассматривать конкретный МК и от него плясать. В общем случае оно всё схожее, но в каждом конкретном МК могут быть различия в количестве регистров и их функциональности.
    Ответ написан
    2 комментария
  • Как подключить к Arduino сторонние двигатели?

    А вы вообще двигатель как подключали?
    Учитывая, что про драйверы ни слова, то сразу скажу, что напрямую от ножек контроллера двигатель крутиться не будет. :)
    Нужно городить драйвер для управления двигателем/купить готовый шилд.
    Ответ написан
    Комментировать
  • Как бы сделать систему хранения мелочей?

    Соглашусь с Сергей
    Лучше взять органайзеров нормальных, особенно если ваши детали это какие-то мелкие smd. Для чего побольше можно в строительных магазинах посмотреть.
    А коробки в ведро, ну или если под что-то крупное и не часто используемое. (небольшие движки, энкодеры, большие потенциометры и т.п., ибо в 10х10х10см даже из-за высоты коробки не особо удобно лазить будет, для рассыпухи лучше что-то низкое ИМХО)
    Ответ написан
    Комментировать