Ничего не найдено :(
    В гостях у Самоделкина! » Темы » Советы » Работаем с датчиком шума и драйвером двух коллекторных двигателей

    Работаем с датчиком шума и драйвером двух коллекторных двигателей



    Автор Arduino Project Hub под ником Nakshatra401 знакомит начинающих ардуинщиков с двумя периферийными устройствами: датчиком шума и драйвером двух коллекторных двигателей. Затем он предлагает собрать тренировочную конструкцию, которая, впрочем, может найти и практическое применение - вентилятор, управляемый хлопком в ладоши. Лицензия - GPL версии 3 или больше по вашему выбору.

    Внешний интерфейс датчика шума не просто лаконичен, а очень лаконичен. Три вывода: плюс питания, общий провод и выход. Если уровень шума превышает заданный, на выходе появляется логическая единица. Порог срабатывания датчика регулируется подстроечным резистором. Подать выходной сигнал можно на любой цифровой вход Arduino - на тот, который пропишете в скетчей. Можно и вообще без Arduino. Подключите Т-триггер, ключ и реле с защитным диодом - получите выключатель, управляемый хлопками, такие ещё в шестидесятых начали делать. Подключите одновибратор, ключ и несколько светодиодов с резисторами - будет светильник для коридора, реагирующий на шаги, такие ставят в некоторые дома при капитальном ремонте.

    Переходим к драйверу двух коллекторных двигателей на микросхеме L298N. Питать этот модуль можно двумя способами. Первый - подать на соответствующие входы как напряжение питания двигателей (до +35 В, но обязательно не больше напряжения, на которое рассчитан двигатель), так и напряжение питания логики (+5 В). Второй - подать только первое напряжение, а для получения второго прямо на плате при помощи встроенного стабилизатор установить отдельно стоящую перемычку, расположенную вдали от входов управления. В обоих случаях общий провод драйвера следует соединить с общим проводом логики. Суммарный ток, потребляемый обоими двигателями - не более 2 А.

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

    Переходим к входам IN1 и IN2. Если на IN1 подать логическую единицу, а на IN2 - логический нуль, первый двигатель будет вращаться в одном направлении. Если наоборот, то в другом. Оба нуля - драйвер снимает с двигателя питание, и он останавливается. Обе единицы - драйвер закорачивает двигатель, и он тоже останавливается, но резко. Входы IN3 и IN4 работают так же, только происходит управление вторым двигателем.

    Входы ENA и ENB позволяют управлять скоростью, соответственно, первого и второго двигателей при помощи ШИМ. При этом следует предварительно выбрать направление вращения способом, описанным выше. Если ШИМ не нужен, на соответствующий вход надо подать логическую единицу - тогда управлять двигателем можно быдет только дискретно - включён или выключен. Для удобства подачи на эти входы единицы предусмотрены ещё две перемычки рядом с ними.

    Перейдём к тренировочной конструкции, её схема показана на КДПВ. Похоже, собрал её мастер правильно, раз она у него заработала. А схему составил с ошибками, но тем интереснее - давайте исправим их:

    1. Соединим общие провода драйвера и Arduino.

    2. Установим на модуле все три перемычки, которые мастер вообще не изобразил.

    3. К точке соединения светодиода с резистором ничего подключать не будем. Перемычку, закорачивающую светодиод, удалим. Выводы 4 и 5 Arduino соединим между собой, а также с анодом светодиода и входом IN1 драйвера.

    Скетч - очень короткий, даже под спойлер прятать не надо:

    /*For this project you will have to connect external power supply of 9V or 5V to the 12V pin of driver.*/
    int soundSensor=2; //This is the input pin connected to digital output of sound sensor
    int LED=4; //This pin is connected to led for indication and input to motor driver
    int stat = 5; //This pin is used as input to verify that LED pin is on or off
    void setup() {
     pinMode(soundSensor,INPUT);
     pinMode(LED,OUTPUT);
     pinMode(stat,INPUT);
    }
    void loop() {
     stat = digitalRead(5);
      int SensorData=digitalRead(soundSensor); 
      //Now to turn on
      if(SensorData==1) //If the sensor detected any sound
      {
         if(stat==false) //And if Led pin is false or off
         {
            digitalWrite(LED,HIGH);//We will turn onn the input pin for H-Bridge driver and LED
    digitalWrite(8, LOW);//This is to ensure that our DC motor rotates in one direction
         }
        }
      
      //Now to turn off
       if(SensorData==1) //If the sensor detected any sound
       {
        if(stat==true) //And if Led pin is true or on
        {
            digitalWrite(LED,LOW); //Now the dc motor won't work as there is no input to the driver
        }
     } 
    }


    Как видим, сигнал с датчика шума поступает на вывод 2 Arduino, откуда и считывается программой. Далее начинаются небольшие костыли... но всё работает ведь. Так, вывод 8 задействован только чтобы всё время подавать на вход IN2 драйвера логический нуль. Не проще ли соединить IN2 с общим проводом, освободив вывод 8 и упростив скетч? Далее, вывод 4 Arduino сконфигурирован как выход, чтобы переключать состояние входа IN1 драйвера, а заодно и индикаторного светодиода. А вывод 5 - внимание, сконфигурирован как вход, чтобы считывать состояние вывода 4, тем самым упрощая программную реализацию T-триггера. Упрощая ли? Может, лучше переменную выделить для этого, освободив ещё один вывод? И обойтись двумя выводами Arduino (2 и 4) вместо четырёх (2, 4, 5, 8). И следующий шаг - вообще заменить Arduino на аппаратный T-триггер.

    Но неоптимальные вещи тем и хороши, что в них есть резерв для оптимизации...

    Источник (Source)

    Отверстия в пенопласте

    Защитная маска с доступными фильтрами (COVID-19)

    Добавить комментарий

      • smilesmilesxaxaokdontknowyahoonea
        bossscratchfoolyesyes-yesaggressivesecret
        sorrydancedance2dance3pardonhelpdrinks
        stopfriendsgoodgoodgoodwhistleswoontongue
        smokeclappingcraydeclarederisivedon-t_mentiondownload
        heatirefullaugh1mdameetingmoskingnegative
        not_ipopcornpunishreadscarescaressearch
        tauntthank_youthisto_clueumnikacuteagree
        badbeeeblack_eyeblum3blushboastboredom
        censoredpleasantrysecret2threatenvictoryyusun_bespectacled
        shokrespektlolprevedwelcomekrutoyya_za
        ya_dobryihelperne_huliganne_othodifludbanclose

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Опрос
    А Вы уже рассказали на сайте о своей самоделке?

    Последние комментарии

    Все комментарии