Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Ультразвуковой датчик с сигнализацией, ЖК-дисплеем и температурой

Компоненты и расходные материалы

Arduino UNO
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Ультразвуковой датчик - HC-SR04 (общий)
× 1
Цифровой термометр 1-Wire с программируемым разрешением Maxim Integrated DS18B20
× 1
Резистор 4,75 кОм
× 1
Кнопочный переключатель SparkFun, 12 мм
× 1
Однооборотный потенциометр - 10 кОм
× 1
Зуммер
1 светодиод и 1 зуммер на одном выходе, берегите мАмп !! Я использую зуммер на 8 мА.
× 1
светодиоды
1 зеленый, 1 желтый и 1 красный светодиод.
× 3
Резистор 221 Ом
× 3
Макет (общий)
× 1
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Этот проект дает мне необходимую информацию об уровне воды в резервуаре для воды. Когда уровень низкий, горит зеленый светодиод. Когда уровень средний, горит желтый светодиод. Когда уровень ВЫСОКИЙ, красный светодиод мигает одновременно со звуком зуммера. Расстояние от датчика до уровня воды измеряется ультразвуковым датчиком и выводится на ЖК-дисплей вместе с температурой в этом резервуаре. Этот проект - часть более крупного проекта. Вторая часть будет состоять из 6 светодиодных индикаторов, установленных по кругу, чтобы указать, что насос перекачивает. См .:https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d7 3-я часть запустит насос при высоком уровне и остановите насос при низком уровне. (в процессе строительства) В реальном проекте я использую водонепроницаемый ультразвуковой датчик, это не повлияет на схему подключения или код. Я не знаю, что происходит с показаниями, когда датчик влажный (влажность), поэтому этот проект предназначен только для предоставления мне информации, третий проект используется для работы насоса и будет выполняться с помощью магнитных контактов.

  #include  // Загрузка библиотеки жидких кристаллов # include  #include  #define ONE_WIRE_BUS 6 // Провод данных вставлен в контакт 6 на Arduino OneWire oneWire (ONE_WIRE_BUS); // Настройка экземпляра oneWire для связи с любыми устройствами OneWire // (не только с температурными ИС Maxim / Dallas) Датчики температуры Dallas (&oneWire); // Передаем нашу ссылку oneWire в Dallas Temperature.LiquidCrystal LCD (12, 11, 5, 4, 3, 2); // Создание жидкокристаллического объекта с именем LCDint trigPin =9; // Вывод отключения датчика подключен к выводу Arduino 9int echoPin =7; // Вывод эхо-сигнала датчика подключен к выводу Arduino 7int myCounter =0; // объявить вашу переменную myCounter и установить значение 0float pingTime; // время прохождения эхо-сигнала от датчика до цели и возврата targetDistance; // Расстояние до цели в сантиметрахfloat speedOfSound =776.5; // Скорость звука в милях в часvoid setup () {Serial.begin (9600); pinMode (trigPin, ВЫХОД); pinMode (echoPin, ВХОД); LCD.begin (16, 2); // Сообщаем Arduino, что нужно запустить ЖК-дисплей 16x2 LCD.setCursor (0, 0); // Устанавливаем ЖК-курсор в верхний левый угол, столбец 0, строка 0 LCD.print ("Distance:"); // Печатать сообщение на датчиках первого ряда .begin (); // Запускаем библиотеку pinMode (8, OUTPUT); // вывод 8, 10, 13 выводов pinMode (10, OUTPUT); pinMode (13, ВЫХОД);} недействительный цикл () {digitalWrite (trigPin, LOW); // Устанавливаем низкую задержку вывода триггераMicroseconds (2000); // Дать разрешение сигналу digitalWrite (trigPin, HIGH); // Установить для trigPin высокую задержкуMicroseconds (15); // Задержка высокого состояния digitalWrite (trigPin, LOW); // пинг отправлен delayMicroseconds (10); // Задержка в высоком состоянии pingTime =pulseIn (echoPin, HIGH); // pingTime в микросекундах pingTime =pingTime / 1000000; // конвертируем pingTime в секунды путем деления на 1000000 (микросекунд в секунду) pingTime =pingTime / 3600; // конвертируем время пинга в часы, разделив его на 3600 (секунд в час) targetDistance =speedOfSound * pingTime; // Это будут мили, поскольку мы объявили скорость звука в километрах в час; хотя мы собираемся преобразовать его обратно в сантиметры targetDistance =targetDistance / 2; // Помните, что пинг движется к цели и обратно, поэтому вы должны разделить на 2 фактическое расстояние до цели. targetDistance =targetDistance * 160934,4; // Преобразование миль в сантиметры путем умножения на 160934,4 sensor.requestTemperatures (); // Отправляем команду на получение показаний температуры LCD.setCursor (10, 0); // Устанавливаем курсор в десятый столбец первой строки LCD.print (""); // Печать пробелов для очистки строки LCD.setCursor (10, 0); // Установите курсор снова в десятый столбец первой строки LCD.print ((int) (targetDistance + 0.5)); // Распечатать измеренное расстояние LCD.print ("см"); // Распечатать ваши единицы LCD.setCursor (0, 1); // Устанавливаем курсор в первый столбец второй строки LCD.print (""); // Печать пробелов для очистки строки LCD.setCursor (0, 1); // Установите курсор снова в первый столбец второй строки if (targetDistance> 40) {LCD.print ("LEV LOW"); LCD.print (sizes.getTempCByIndex (0)); LCD.print ((char) 223); LCD.print («C»); } else if (targetDistance <40 &&targetDistance> 20) {LCD.print ("LEV MED"); LCD.print (sizes.getTempCByIndex (0)); LCD.print ((char) 223); LCD.print («C»); } else (targetDistance <20); {LCD.print ("LEV HIGH"); LCD.print (sizes.getTempCByIndex (0)); LCD.print ((char) 223); LCD.print («C»); } задержка (2000); если (targetDistance> 40) {digitalWrite (13, HIGH); // Горит зеленый светодиод} else {digitalWrite (13, LOW); // Зеленый светодиод не горит} if (targetDistance <40 &&targetDistance> 20) {digitalWrite (8, HIGH); // Горит желтый светодиод} else {digitalWrite (8, LOW); // Желтый светодиод не горит} if (targetDistance <20) {digitalWrite (10, HIGH); // Задержка включения красного светодиода (2000); digitalWrite (10, НИЗКИЙ); // Красный светодиод не горит} else {digitalWrite (10, LOW); // Красный светодиод не горит}}  

Код

  • Файл без названия
Файл без названия C / C ++
 #include  // Загрузка библиотеки жидких кристаллов # include  #include  #define ONE_WIRE_BUS 6 // Провод данных подключен к контакту 6 на Arduino OneWire oneWire (ONE_WIRE_BUS ); // Настройка экземпляра oneWire для связи с любыми устройствами OneWire // (не только с температурными ИС Maxim / Dallas) Датчики температуры Dallas (&oneWire); // Передаем нашу ссылку oneWire в Dallas Temperature.LiquidCrystal LCD (12, 11, 5, 4, 3, 2); // Создание жидкокристаллического объекта с именем LCDint trigPin =9; // Вывод отключения датчика подключен к выводу Arduino 9int echoPin =7; // Вывод эхо-сигнала датчика подключен к выводу Arduino 7int myCounter =0; // объявить вашу переменную myCounter и установить значение 0float pingTime; // время прохождения эхо-сигнала от датчика до цели и возврата targetDistance; // Расстояние до цели в сантиметрахfloat speedOfSound =776.5; // Скорость звука в милях в часvoid setup () {Serial.begin (9600); pinMode (trigPin, ВЫХОД); pinMode (echoPin, ВХОД); LCD.begin (16, 2); // Сообщаем Arduino, что нужно запустить ЖК-дисплей 16x2 LCD.setCursor (0, 0); // Устанавливаем ЖК-курсор в верхний левый угол, столбец 0, строка 0 LCD.print ("Distance:"); // Печатать сообщение на датчиках первого ряда .begin (); // Запускаем библиотеку pinMode (8, OUTPUT); // вывод 8, 10, 13 выводов pinMode (10, OUTPUT); pinMode (13, ВЫХОД);} недействительный цикл () {digitalWrite (trigPin, LOW); // Устанавливаем низкую задержку вывода триггераMicroseconds (2000); // Дать разрешение сигналу digitalWrite (trigPin, HIGH); // Установить для trigPin высокую задержкуMicroseconds (15); // Задержка высокого состояния digitalWrite (trigPin, LOW); // пинг отправлен delayMicroseconds (10); // Задержка в высоком состоянии pingTime =pulseIn (echoPin, HIGH); // pingTime в микросекундах pingTime =pingTime / 1000000; // конвертируем pingTime в секунды путем деления на 1000000 (микросекунд в секунду) pingTime =pingTime / 3600; // конвертируем время пинга в часы, разделив его на 3600 (секунд в час) targetDistance =speedOfSound * pingTime; // Это будут мили, поскольку мы объявили скорость звука в километрах в час; хотя мы собираемся преобразовать его обратно в сантиметры targetDistance =targetDistance / 2; // Помните, что пинг движется к цели и обратно, поэтому вы должны разделить на 2 фактическое расстояние до цели. targetDistance =targetDistance * 160934,4; // Преобразование миль в сантиметры путем умножения на 160934,4 sensor.requestTemperatures (); // Отправляем команду на получение показаний температуры LCD.setCursor (10, 0); // Устанавливаем курсор в десятый столбец первой строки LCD.print (""); // Печать пробелов для очистки строки LCD.setCursor (10, 0); // Установите курсор снова в десятый столбец первой строки LCD.print ((int) (targetDistance + 0.5)); // Распечатать измеренное расстояние LCD.print ("см"); // Распечатать ваши единицы LCD.setCursor (0, 1); // Устанавливаем курсор в первый столбец второй строки LCD.print (""); // Печать пробелов для очистки строки LCD.setCursor (0, 1); // Установите курсор снова в первый столбец второй строки if (targetDistance> 40) {LCD.print ("LEV LOW"); LCD.print (sizes.getTempCByIndex (0)); LCD.print ((char) 223); LCD.print («C»); } else if (targetDistance <40 &&targetDistance> 20) {LCD.print ("LEV MED"); LCD.print (sizes.getTempCByIndex (0)); LCD.print ((char) 223); LCD.print («C»); } else (targetDistance <20); {LCD.print ("LEV HIGH"); LCD.print (sizes.getTempCByIndex (0)); LCD.print ((char) 223); LCD.print («C»); } задержка (2000); если (targetDistance> 40) {digitalWrite (13, HIGH); // Горит зеленый светодиод} else {digitalWrite (13, LOW); // Зеленый светодиод не горит} if (targetDistance <40 &&targetDistance> 20) {digitalWrite (8, HIGH); // Горит желтый светодиод} else {digitalWrite (8, LOW); // Желтый светодиод не горит} if (targetDistance <20) {digitalWrite (10, HIGH); // Задержка включения красного светодиода (2000); digitalWrite (10, НИЗКИЙ); // Красный светодиод не горит} else {digitalWrite (10, LOW); // Красный светодиод не горит}} 

Схема

lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

Производственный процесс

  1. Контроль доступа с помощью QR, RFID и проверки температуры
  2. Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
  3. Датчик температуры Python и Raspberry Pi
  4. Датчик температуры и освещенности Raspberry Pi
  5. Аэропоника с Raspberry Pi и датчиком влажности
  6. Датчик температуры Raspberry Pi
  7. Датчик Portenta и термопары (с MAX6675)
  8. Датчик DHT11 со светодиодами и пьезо-динамиком
  9. Простой будильник с DS1302 RTC
  10. Лабораторный датчик расхода и температуры