Ответы пользователя по тегу Arduino
  • Как Arduino переживает большое количество включений/выключений?

    Ну вообще по идее ей пофиг. Это флеш память ограничена прилично по кол-ву циклов записи (и то не факт, что это достижимо, при обычных задачах).
    Да и во многих приборах контроллеры и работают по такому принципу для экономии энергии. По кнопке запуск, самоподхват питания, и по завершении действий вырубаются.
    Ответ написан
    3 комментария
  • Как проверить работоспособность китайской Ардуино?

    Обычная UNO. Светодиоды - один питание, второй соединен с пином(который по умолчанию мигает)
    Соответственно плата Arduino/Genuino Uno.

    что нужно скачать драйвер для CH341SER (что это, я не знаю, потому как чип вроде Mega328).

    328 - это сам микроконтроллер (по центру платы), а для общения с ПК нужна микросхема USB<->UART (около разъема USB), вот для нее Вы и ставили драйвер.
    Ответ написан
    Комментировать
  • Максимальная сила тока для cnc shield arduino v3?

    А теперь минута поиска:

    Характеристики платы:
    Модель - CNC Shield version 3.0;
    ....
    Драйверы - A4988 или DRV8825 и другие;
    ...
    Драйверы A4988 или DRV8825 вставляются по разному будьте ВНИМАТЕЛЬНЫ!!!


    Если это A4988, то опять минута поиска и в даташите:
    The A4988 is a complete microstepping motor driver with
    built-in translator for easy operation. It is designed to operate
    bipolar stepper motors in full-, half-, quarter-, eighth-, and
    sixteenth-step modes, with an output drive capacity of up to
    35 V and ±2 A.


    или DRV8825
    DRV8825 - step/dir контроллер биполярного ШД, с выходным током до 2.3А (с радиатором) и до 1.5А - без радиатора. Поддерживает режимы микрошага до 1/32.
    Ответ написан
  • Какую хорошую недорогую многоканальную транзисторную сборку (max 5v вход, min 12 выход, мощность не важна) можно использовать для управления IRF540N?

    Есть транзисторы для логики IRLxxx.

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

    Связка npn+pnp транзисторов, которые 12 В на затворы дадут?
    i?id=7d9abca9162ed6acc56589d4551d6401-l&
    Ответ написан
    Комментировать
  • Как избавиться от просадки напряжения при старте электромотора?

    Используйте не реле, а полевой транзистор и ШИМ. Это позволит плавно наращивать ток в двигателе, увеличивая коэф. заполнения ШИМ.
    %D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%

    Если ардуина запитана от 12В, то можно немного смягчить симптомы, подключив её
    через диод, а за ним уже конденсатор по питанию ардуины, поближе к самой ардуине... (обведено красным)35781f484aaa40adbcabaf2b6ede7145.JPG

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

    Либо при пуске двигателя возникает мощная наводка, если он близко лежит.

    Используйте ступенчатый запуск на двух реле! Сначала подключать реле с мощным токоограничительным резистором (от того же ВАЗа), потом включать второе реле, которое исключит этот резистор, хотя это уже прошлый век это решение проверенное временем!
    Ответ написан
    Комментировать
  • Почему за основу для Arduino выбрали Atmega328P, когда STM32 и дешевле до двух раз, и лучше до двух раз?

    Под stm32f103c8t6 есть загрузчик ардуино.
    А вообще это скорее всего из разряда: так исторически сложилось.
    Да и они в дип корпусах есть, что способствовало продвижению данных МК среди любителей.
    Ответ написан
    Комментировать
  • Какая частота ШИМ достаточна для того, чтобы не замечать мерцания?

    Как вариант почитать про увеличение частоты ШИМ за счет изменения данных в регистре таймера, для Arduino Uno, например, оно такого вида:

    Частота ШИМ'а на ногах 5 и 6:

    Код:
    Константа Делитель Частота(Гц)
    0x01 1 62500 Гц
    0x02 8 7812 Гц
    0x03 64 976 Гц
    0x04 256 244 Гц
    0x05 1024 61 Гц
    В Setup пишем строчку: TCCR0B = TCCR0B & 0b11111000 | <Константа>;

    Частота ШИМ'а на ногах 9 и 10:
    Код:
    Константа Делитель Частота(Гц)
    0x01 1 31250 Гц
    0x02 8 3906 Гц
    0x03 64 488 Гц
    0x04 256 122 Гц
    0x05 1024 30 Гц

    В Setup пишем строчку: TCCR1B = TCCR1B & 0b11111000 | <Константа>;

    ИМХО лучше покопаться и сделать частоту побольше, в районе 1-4 кГц. Это гарантированно не будет видно глазу, при этом частота относительно небольшая для ключа.
    Ответ написан
    Комментировать
  • Как выбрать GSM модуль гарантировано работающий с русскими сетями (симками)?

    Ну у меня SIM900 работал с билайном, а вообще просто выберите модуль и почитайте про него в интернете...
    Ответ написан
    Комментировать
  • Как детектировать положение выключателя света?

    Схемку с демпферным конденсатором и диодным мостом (как в светодиодных лампах-кукурузках), которая будет держать открытой оптопару. С другой стороны вы эту оптопару безопасно читаете МК и делаете что хотите.
    А можно и где-то держать постоянно включенный свет, который читать датчиком освещенности.

    Вместо оптопары можно и реле на 220 спрятать, которое будет опять же коммутировать низковольтную линию и МК будет читать лог 0 или 1.

    Можно 5В блок питания повесить в цепи освещения и мониторить его выходное напряжение - если ничего не выдает, то нет света. Если некуда девать контроллеры и лень тянуть провода/некуда вклиниться в щитке, то вешаем в удобном месте этот блок питания с esp'пишкой, которая по воздуху будет орать, что питание на неё идет, а если она перестанет орать - значит свет отключили)) Спрятать можно будет в удобном месте в пределах зоны приема основного контроллера, на котором питание будет всегда.
    Ответ написан
  • Как реализовать управление оборотами электромотора?

    Попробуйте из того же шуроповерта поставить редуктор - это снизит скорость и увеличит момент, следовательно устранит самопроизвольный откат назад. :)

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

    На ардуине: сделать H-мост на полевиках для управления двигателем + токоизмерительный шунт. Ардуина получает сигнал вверх или вниз и открывает мост в нужном направлении попутно измеряя напряжение на шунте. Во время вращения двигателя оно будет меньше, чем в момент, когда двигатель упрется, ток возрастет - падение напряжения на шунте увеличится - выключаем H-мост.
    Хотя можно и по таймеру, это еще проще делается)))

    Можно такой переключатель взять на два канала и реле времени дешевое (можно найти в микроволновках/старых стиральных машинах выдрать) Переключателем задаем направление вращения, а крутилкой реле времени - время вращения. Если реле времени нет, то его заменят транзистор и ардуина(и вообще практически любой МК).

    Если надо то могу вечером дополнить ответ картинками по наиболее интересному варианту.
    Ответ написан
    Комментировать
  • Полевые транзисторы для управления от ардуино?

    А светодиод какой мощности? :) Они и на десятки Ватт бывают.

    Серия IRL - как раз говорит о том, что транзистор рассчитан на управление от логических уровней.
    В даташите им пишут сопротивление открытого канала R(DS) при напряжении затвор-исток = 4,5В и оно составляет сотые доли Ома. Т.е. можно спокойно использовать их для работы от ардуины для управления светодиодами и даже относительно мощной низковольтной нагрузкой.

    Например, IRL2703PBF при 4,5В на затворе будет иметь сопротивление канала сток-исток всего 0,06 Ом. А выделяемая мощность это квадрат тока на сопротивление, т.е. пуская ток через транзистор до нескольких Ампер можно даже не заметить ощутимого нагрева.

    По поводу дешевле, можно посмотреть в том, что тут выдано в поиске включив сортировку по цене.
    Там в фильтрах выбраны низковольные транзисторы с большой крутизной характеристики по сути. Большинство из них должно подойти.
    Ответ написан
    Комментировать
  • Как подключить бистабильный клапан?

    На паре релюшек можно, или одной на два канала, типо такого:
    505084491_367.jpg

    Можно сделать на четырех транзисторах H-мост. Верхние транзисторы p-типа, нижние n-типа.
    В качестве примера: 1190u5g2ku.png

    Поищите темы по реверсированию ДПТ, там как раз эти варианты подойдут.
    Ответ написан
    Комментировать
  • Питание arduino с линии измерения датчика 4-20мА?

    www.arduino.md/arduino_power_consumption
    Судя по её прожорливости не очень затея.

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

    1) Питать логику поставив линейные стабилизаторы напряжения 7805/7812 и т.п., а двигатели можно гонять и от 13.5В, особенно, если ток через двигатель будет управляться ШИМом.

    2) Дурная идея - поставить на всё линейные стабилизаторы напряжения, попутно получив утюг. :)

    3) Поставить на выходе трансформатора DC-DC преобразователи на требуемые напряжения и мощности.

    4) Ардуина в большинстве своем спокойно выдержит 14В на входе, двигатель тоже. Если нужно из хлама снизить напряжение на 1-2 Вольта, то можете поставить последовательно с потребителями диоды, на них будет около 1В падать.

    И да, раз такой вопрос, то стоит отметить, что выходное напряжение трансформатора под нагрузкой будет просаживаться, а при очень мощной нагрузке и вовсе первый попавшийся под руку трансформатор может её (нагрузку) не осилить. Стоило бы указать, что и как собираетесь крутить.
    Ответ написан
    Комментировать
  • Как подключить к 5v логике, мотор на 36v?

    Реверс ннада? Если надо то H-мост на транзисторах: два драйвера верхнего и нижнего ключа, 4 транзистора, контроллер.
    Что-то похожее на это, на IR2104, например:
    DC-Motor-IR2104-H-BRIDGE.png

    Если только вкл-выкл/ШИМ управление с вращением только в одну сторону, то выдрать полевой транзистор откуда-нибудь n-типа(в материнке можно поискать, они на низкое напряжение, огромные токи и дружат с низковольтовой логикой) и сделать примерно так:
    %D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%
    Vin - твои 36В
    Затвор транзистора - с контроллера ШИМ
    GND обоих устройств должны быть соединены.

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

    Напряжение такое же, как и для одной ардуины. Ток в зависимости от нагруженности. Сама по себе ардуина вряд ли больше 150мА будет жрать (думаю около 50-100мА). Соответственно берем макс. ток и умножаем на кол-во ардуин, это выйдет 4-5А для худшего случая.
    Но никто не запрещает использовать несколько блоков питания, объединив общий провод GND и вешать на каждый блок по 5-10 ардуин.

    Если же там будет до кучи еще висеть гора модулей, двигателей и датчиков, то лучше замерить примерное потребление тока взять блок питания с запасом хотя бы процентов 30 (один фиг наврут на блоке питания) по току.

    Как вариант, если это какие-нубудь Uno, которые хорошо относятся к 12В питанию - вытащить комп. блок питания ATX, прочитать, как его запустить, нагрузить немного его линии +5В и +12В и спокойной цеплять на него гирлянду из ардуин. Даже для 300 Вт блока питания это будет не проблема.
    Ответ написан
    Комментировать
  • Как мигать светодиодами без delay?

    if ((millis() % 1000) > 500) digitalWrite(Pin, HIGH);
    else digitalWrite(Pin, LOW);


    Берем остаток от деления текущего времени (с момента старта МК, в мсек) на 1000.
    Если он выйдет более 500 - включаем диод, иначе вырубаем.
    Получим переключение каждые 500 мс.

    Вставляем это туда, где будет частенько проверятся и наслаждаемся.

    Для твоего случая, вот такую ф-цию и почаще её вызывать в главном цикле.
    void setup() {
    pinMode(13, OUTPUT);
    }
    
    unsigned int millisCounter = 0;
    void migalka(void)
    {
    millisCounter = millis() % 8400;
    if(millisCounter  < 1200 )
    {digitalWrite(13,1);}
    else
    if(millisCounter  < 2400)
    {digitalWrite(13,1);}
    else
    if(millisCounter  < 3600)
    {digitalWrite(13,1);}
    else
    if(millisCounter  < 4800)
    {digitalWrite(13,0);}
    else
    if(millisCounter < 5200)
    {digitalWrite(13,0);}
    else
    if(millisCounter  < 6400)
    {digitalWrite(13,1);}
    else
    if(millisCounter  < 7200)
    {digitalWrite(13,1);}
    else
    {digitalWrite(13,0);}
    }
    /*основной цикл*/
    void loop() {
    migalka();
    }
    Ответ написан
    Комментировать
  • Как записать в файл?

    Надо будет написать программу для компьютера, которая откроет COM-порт с ардуиной и будет его читать, попутно записывая данные в файл. Язык выбирайте по вкусу, Qt, например.
    Может даже что готовое найдете для чтения COM-порта с возможностью записи в файл.

    _______
    UPD:
    Можно добавить SD карту и писать на нее в блокнот, потом вставить её в ПК и смотреть данные.
    Ответ написан
    Комментировать
  • Где ошибка в коде?

    Попробуйте это же в терминал слать.
    Есть подозрение, что с часов все отлично, а вот на дисплее шлак остается висеть ибо ширина строки меняется для случаев:
    18-47-57
    19-5-4    // а вот тут может остаться шлак в виде 57

    Надо чистить строку перед записью / делать вывод BCD-кода / принудительно добавлять нули для жесткого формата хх-хх-хх

    ______
    Кстати, вроде можно настроить форматирование для чисел на выводе сразу, только уже не помню как.
    Что-то типо такого первое под руку попало:
    printf ("\n2.5 Вывод числа 123 с заданной шириной 6 символов:\n");
     {
    int d1=123;
       printf ("%6d\n",d1);
     }


    ___________
    Глянул видео - именно то, о чем я и написал. Старые цифры остаются. :)
    sprintf(my_array, "Time: %2d-%2d-%2d", hours, minutes, seconds);
    попробуй, может так сожрет.
    Ответ написан
    Комментировать
  • Не могу понять в чем проблема данного кода на Arduino?

    В 1,6,5 без ошибок, можете попробовать до setup() написать прототипы ф-ций:
    void listenToSecretKnock(void);
    void triggerOutput(void);
    boolean validateKnock(void);

    Должно помочь.
    Ответ написан
    Комментировать