Jump to content
pingyini

Электронная сигарета на ардуино

Recommended Posts

Всем доброго времени суток. Решил я сделать "умную" электронную сигарету на arduino. Концепция заключается в кнопочном управлении мощностью посредством ШИМ, наличии экрана, и некоторыми защитами в виде ограничения максимального времени нажатия и уход камня в сон (режим пониженного энергопотребления) после N секунд простоя.

Вводные: по нажатию кнопки запускается ШИМ и управляет полевиком, но в целях защиты я хочу ограничить время выполнения кода до 7 секунд(что бы при случайном зажатии кнопки в кармане не получить травматическую ампутацию конечностей)


Проблема пришла откуда не ждали - обработка нажатой основной кнопки срабатывает как попало. Нажимая кнопку обработчик может сработать сразу и отработает как по маслу, а может и через 5 нажатий не сработать вовсе.  Проверял в живую на Arduino UNO, Pro Mini (328е Меги) и в Proteus'е. Симптомы одни и те же.  Проблема очевидно в коде но я в упор не вижу в чем может быть загвоздка. Уровень у меня "штота умею" поэтому не судите строго. 

 

#define pwmPin 5
#define buttonStart 3
#define maxOnTime 7000 //максимальное время выполнения условия нажатой кнопки
#define RED_LED 7
#define GREEN_LED 8

int power = 150;
//boolean StartState;
boolean StartStateFlag; //Флаг кнопки Старт
unsigned long pressTime;


void setup() {
  pinMode(pwmPin, OUTPUT);
  pinMode(buttonStart, INPUT);
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  Serial.begin(9600); //чисто для отладки
}

void loop() {
  if (digitalRead(buttonStart) && StartStateFlag && ((millis() - pressTime) <= maxOnTime)) {  // (1) если кнопка старт нажата И была отпущена И нажата менее 7 секунд выполняем:
    analogWrite(pwmPin, power); //запуск ШИМ
    Serial.println("PWM_ON");
    digitalWrite(GREEN_LED, HIGH);
    digitalWrite(RED_LED, LOW);
  } else { // (2) иначе
    StartStateFlag = false; // кнопка небыла отпущена
    analogWrite(pwmPin, 0);
    digitalWrite(GREEN_LED, LOW);
    Serial.println("PWM_OFF");
    pressTime = millis();
  }

  if (!digitalRead(buttonStart)) { //(3) если кнопка не нажата
    analogWrite(pwmPin, 0); //остановка ШИМ
    Serial.println("PWM_OFF");
    digitalWrite(RED_LED, HIGH);
    StartStateFlag = true; //была отпущена и можно входить в условие с нажатой кнопкой (1)
  }
}

И файлы: сам скетч, .elf и .hex для шПротеуса и проект Протеус.
P. S. ШИМ в Протеусе не работает в принципе, в железе все ОК 

BUTTON_TEST.ino

BUTTON_TEST.ino.eightanaloginputs.hex

BUTTON_TEST.ino.elf

BUTTON_TEST.ino.with_bootloader.eightanaloginputs.hex

ButtonTest.pdsprj

Edited by pingyini

Share this post


Link to post
Share on other sites
Guest Guest987

У вас логика хромает. Блоки (2) и (3) программы будут срабатывать всегда, когда кнопка не нажата, а в них флаг становится то тру, то фэлс. Повезёт нажать кнопку, когда тру - сработает блок (1).

Share this post


Link to post
Share on other sites
В 11.02.2019 в 10:04, Гость Guest987 сказал:

У вас логика хромает. Блоки (2) и (3) программы будут срабатывать всегда, когда кнопка не нажата, а в них флаг становится то тру, то фэлс. Повезёт нажать кнопку, когда тру - сработает блок (1).

Увидел, пофиксил, спасибо. Получилось как то так

[code]
  if (digitalRead(buttonStart) && ((millis() - pressTime) <= maxOnTime)) {  // (1) если кнопка старт нажата И нажата менее 7 секунд выполняем:
    analogWrite(pwmPin, power); //запуск ШИМ
    Serial.println("PWM_ON");
    digitalWrite(GREEN_LED, HIGH);
    digitalWrite(RED_LED, LOW);
  } else { // (2) иначе
    analogWrite(pwmPin, 0);
    digitalWrite(GREEN_LED, LOW);
    Serial.println("PWM_OFF");
    
  }

  if (!digitalRead(buttonStart)) { //(3) если кнопка не нажата
    analogWrite(pwmPin, 0); //остановка ШИМ
    Serial.println("PWM_OFF");
    digitalWrite(RED_LED, HIGH);
    pressTime = millis(); //перезапись millis(); и только тогда сможем войти в (1)
    delay(10);
  }

[/code]

 

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Join the conversation

You are posting as a guest. 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...

  • Similar Content

    • By Spyro1313
      Помогите убогому, пожалуйста!
      Проблема: Собрана и проверена схема сигнализации (компилируется и загружается).При введении в схему сигнализации модуля ИК с пультом дистанционного управления, не проходит компиляция. Схема ИК модуля отдельно без изменений из проекта сигнализации - компилируется и загружается (как отдельный проект ) на ура!!!
      При проверки проекта сигнализации с модулем ИК Arduino IDE ВЫДАЕТ ОШИБКУ:
      Arduino: 1.8.9 (Windows 10), Плата:"Arduino/Genuino Uno"
      Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
      (.text+0x0): multiple definition of `__vector_7'
      libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here
      collect2.exe: error: ld returned 1 exit status
      Несколько библиотек найдено для "IRremote.h"
      Используется: c:\Program Files (x86)\FLProg\ideV3\portable\sketchbook\libraries\IRremote
      Не используется: c:\Program Files (x86)\FLProg\ideV3\libraries\IRremote
      exit status 1
      Ошибка компиляции для платы Arduino/Genuino Uno.
      Этот отчёт будет иметь больше информации с
      включенной опцией Файл -> Настройки ->
      "Показать подробный вывод во время компиляции"
      ==================================================================
      Явно проблема с библиотеками.Не могу разобраться.Что делать?Подскажите...
    • By pribor458
      Куплю изделия:
       
      Микропереключатели МП-10В  500-1000шт.
      Клистроны усилительные КИУ-102
      Магнетроны импульсные МИ-513  20шт.
      Кнопки 2КР
      Видиконы ЛИ-501-1МК
      Тиратроны ртутные ТР1-6/15  45шт.
      Триоды 1504-Г  52шт.
      Лампы генераторные ГМ-4Б
      Распределители ГА163Т/16
      Тиратроны ртутные ТР1-6/15
      Модули СВЧ 1ГИ11/01-1
      Конденсаторы КП1-12А 4кВ 10-1200пФ
       
      Лампы генераторные:
      ГУ-39Б-1
      ГУ-61Б
      ГУ-71Б
       
      Микросхемы 590КН13 (золото)  100шт.
       
      Лампы генераторные:
      ГМ-4Б
      ГУ-68А
       
      Реле электромагнитные ТКЕ54ПОДГ
      Фильтры перестраиваемые ФФЛК3-5
       
      Конденсаторы:
      ЭЭВК-0,8-10У3
      ЭЭПВП-0,8-10 У3
       
      Магнетроны МИ-176  40шт.  дорого
       
       
      Россия, Москва:
      Конт. тел. +7-495-260-12-54
      Украина, Львов:
      Конт. тел. +38-050-410-57-87
      pribor458@gmail.com

    • By pribor458
      Куплю изделия:
       
      Микросборки С1.151.ПУ2
      Контакторы постоянного тока КМ4100 24В
      Переключатели нажимные П4НГ-15К
      Фоторезисторы охлаждаемые ФРО-139
       
      Преобразователи манометрические:
      ПМТ-2
      ПМТ-4М
       
      Кнопки 2КР
      Клистроны усилительные КУ-153-1
      Лампы бегущей волны УВ-420
      Выключатели путевые ВПФ11-01-062100-54У2
       
       
      Россия, Москва:
      Конт. тел. +7-495-260-12-54
      Украина, Львов:
      Конт. тел. +38-050-410-57-87
      pribor458@gmail.com

    • By Macca
      Напривозил много оригинальной электроники
      Имеется большой каталог с микроконтроллерами и расширителями для них.
      Москва. Возможно доставка в другие города. Сергей, физ. лицо, 89776100987
      Можно обращаться в WhatsApp и Telegram по всем вопросам

       
      Малинка:
      Raspberry Pi 3 B+ - 2400руб
      Raspberry Pi 3 А+ - 1700руб
      Sparkfun Набор Raspberry Pi 3 А+, адаптер питания, корпус, microSD 16Гб - 2400руб
      Sparkfun Набор Raspberry Pi zero W, microSD 16 ГБ, HDMI кабель,USB OTG-кабель, адаптер питания - 2500руб
      Vilros Набор Raspberry Pi 3 B+, корпус, адаптер питания, HDMI кабель, microSD 32Гб, картридер, радиаторы - 4200руб
      Sparkfun Набор Raspberry Pi 3 B+, Pi Wedge, FTDI Basic Breakout 3,3 В, Макет Полноразмерный (голый), черный Pi Tin, MicroSD 16 ГБ, картридер, Разноцветные пуговицы (4 шт), Ассорти из светодиодов (20 шт), Резистор 330 Ом 1/6 Вт PTH (20 шт.), Raspberry Pi GPIO Ленточный кабель 40-контактный, USB Mini-B Кабель, адаптер питания, Соединительные провода (10 пакетов), cтандартные проволочные перемычки (30 шт.) - 5200руб
      OddWires Набор Raspberry Pi 3 B+,16 ГБ microSD-карта класса 10, адаптер питания, CP102 USB для последовательного адаптера, Raspberry Pi прозрачный чехол, HDMI кабель, GPIO кабель и коммутационная плата,MCP3008 Микрочип 8-канальный 10-битный АЦП, модуль джойстика, ИК пульт дистанционного управления с батареей, макеты, провода, перемычки, ассорти светодиоды,RGB LED,Пьезо Зуммер Пассивный и Активный, переключатели, резисторы - 5000руб
      Raspberry Pi Infrared Camera Module – 1300руб
      Raspberry Pi Camera module v2 - 1500руб
      Raspberry Pi Touchscreen – 4000руб
      Raspberry Pi UPS Hat - 1100руб
      ReSpeaker 4-микрофонный массив для Raspberry Pi - 1800руб
       
      Ардуино:
      Pro Micro ATmega32U4 3.3В/8МГЦ - 1300руб
      Pro Micro ATmega32U4 5В/16МГЦ - 1300руб
      Arduino Pro Mini 328 3.3В/8МГЦ - 650руб
      Arduino Pro Mini 328 5В/16МГЦ - 650руб
      Arduino Mega 2560 R3 - 2400руб
      Arduino Due - 2700руб
      Arduino Uno Rev3 – 1300руб
      LilyPad Arduino USB - ATmega32U4 Board - 1600руб
      LilyPad Arduino 328 Main Board - 1000руб
      Arduino Fio - 1800руб
      Arduino Mkr1000 - 2300руб
      Arduino Mkr Vidor 4000 - 5000руб
       
      Teensy 3.6 - 2000руб
      Teensy 3.2 - 1300руб
      Teensy 2.0 – 1000pуб
       
      BeagleBone Black rev C – 3200руб
      BeagleBone Black – 2500руб
      BeagleBone Blue – 4500руб
      BeagleBone Pocket – 1600руб
       
      Искусственный интеллект:
      NVIDIA Jetson Nano Developer Kit - 7500руб
      Google Coral Development Board - 9500руб
      NVIDIA Jetson AGX Xavier Module - 45500руб
      NVIDIA Jetson Xavier - 65000руб
      Coral environmental sensor board v 1.0 – 1600руб
      Intel Neural Compute Stick 2 – 7000руб
      Coral Camera CA1 -1600руб
       
      Прочие платы:
      STEMTera (Black) - 2800руб
      Mbed v014.1 - 4000руб
      Mbed v005.1 - 3600руб
      Стартовый набор SparkFun Qwiic для Onion Omega - 9000руб
      LattePanda Alpha 864 – 20000р
      Automic Pi – 2500руб
      Pine H64 “Model B” 3Gb – 2800руб
      Rock64-1G – 1600руб
      Odroid XU4Q – 3000руб
      Adafruit Metro 328 Starter Pack - 2800руб
      Adafruit Trinket M0, for use with CircuitPython & Arduino IDE - 600руб
      Adafruit GEMMA M0, Miniature wearable electronic platform - 650руб
      SparkFun gator:bit v2.0, micro:bit Carrier Board - 1200py6
      micro:bit Board - 900руб
      HackRF One - 19500руб
      LimeSDR Mini - 12500руб
      LimeSDR - 22500руб
      bladeRF 2.0 micro xA4 - 31000руб
      SparkFun PicoBoard - 3000руб
      SparkFun Stepoko - 10000руб

      Лидары и камеры:
      Raspberry Pi Camera module v2 - 1500руб
      Pixy2 CMUcam5 - 3600руб
      CMOS Camera Module - 2000руб
      OpenMV m7 - 4500руб
      IR Array Breakout, 55 Degree FOV, MLX90640 (Qwiic) - 4500руб
       
      Набор FLIR Радиометрический Lepton Dev - 13000руб
      +PureThermal 2 интеллектуальная плата ввода / вывода FLIR Lepton Smart - 6000руб
       
      RPLidar A2M8 360градусов Laser Range Scanner – 20000руб
      RPLidar A3M1 360градусов Laser Range Scanner – 38000руб
      TFMini – Micro Lidar Module – 2500руб

       
      Расширители:
      Thing Plus ESP32 WROOM - 1400руб
      ESP8266 Thing Dev Board - 1100руб
      WiFi Module ESP8266 - 450руб
      Adafruit Feather HUZZAH with ESP8266 Loose Headers - 1100руб
       
      SparkFun GPS Logger Shield – 3300руб
      GPS Mouse GP-808G (72 Channel) – 2500руб
      SparkFun Venus GPS with SMA Connector – 3300руб
      SparkFun GPS-RTK Board, NEO-M8P-2 (Qwiic) - 13000руб
      Adafruit Ultimate GPS Breakout - 66 channel w/10 Hz updates Version 3 - 2600руб      
       
      CAN-BUS Shield – 1700руб
      Bus Pirate v3.6 1700руб, с кабелем – 2000руб
      Wireless Motor Driver Shield - 1800руб
      microSD Shield - 1000руб
      Vernier Interface Shield - 1600руб
      MP3 Player Shield - 1800руб
      Weather Shield - 2600руб
      Monster Moto Shield - 4700руб
      EasyVR Shield 3.0 Для распознавания голоса – 3300руб
      XBee Shield — 1000руб
      OpenLog - 1000руб
      Sound Detector (с ножками) — 750руб
      EasyDriver - Stepper Motor Driver – 1000руб
      Big Easy Driver — 1300руб
      URM37 V5.0 Ультразвуковой датчик для Arduino/RaspberryPi - 950руб
      URM04 Ультразвуковой датчик (RS485) - 1700руб
      2x1A моторный щит постоянного тока для Arduino 650руб
      Винтовой щит для Arduino - 500руб
      Набор беспроводных джойстиков  - 2500руб
      Усилитель тензодатчика SparkFun HX711 - 650руб
      SparkFun Simultaneous RFID Reader, M6E Nano  - 13000p
      SparkFun RS232 Shifter SMD - 1000руб
      Pro nRF52840 Mini, Bluetooth Development Board - 2000руб
      THAT 1646 OutSmarts Breakout - 1000руб
      RedBoard Turbo, SAMD21 Development Board - 1650руб
      SparkFun Barometric Pressure Sensor Breakout, MPL115A1  - 900руб
      Little Soundie Audio Player - 1000руб
      XBee Explorer Serial - 1300руб
      Music Instrument Shield - 2100руб
      SparkFun Environmental Combo Breakout, CCS811/BME280 (Qwiic) - 2300руб
      PN532 NFC/RFID controller breakout board v1.6 - 2400руб
      Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit – v2.3 - 1300руб
      Adafruit 9-DOF Absolute Orientation IMU Fusion Breakout, BNO055 - 2300руб




    • By STmaster23
      Добрый день, дорогие читатели.

      Я хотел бы поделиться с вами историей, о том как я создал устройство из доступных всем материалов, за приемлемую цену, и как мне кажется, не особо уступающее по функционалу дорогим устройствам, такого рода.

      Устройство может измерять температуру и влажность, имеет 2 независимых реле которые коммутируют сеть 220 В на две независимых розетки (розетка влажности и розетка температуры).
      В ручном режиме, с помощью кнопок устанавливаются пределы включения и отключения реле, установленные пределы записываются в энергонезависимую память ARDUINO, и при перезапуске устройства, выставленные вами настройки восстанавливаются.

      При попытке поисков в интернете готовых устройств такого рода, я натыкался на огромные цены, из-за этого меня посетила мысль сделать такое устройство на базе Arduino.

      В основе устройства - Arduino NANO. Коммутация производится с помощью 2-х модулей реле для Ардуино с опторазвязкой. Управление выполняется с помощью самодельной клавиатуры на 5 кнопок. Для отображения информации с датчика и настроек используется LCD дисплей 16х2, подключенный по шине I2C к Ардуино. В качестве датчика температуры и влажности применен модуль SHT-31D.
      Все модули были заказаны на Aliexpress, из-за чего стоимость устройства значительно уменьшилась, чем если бы эти модули покупались в местных магазинах.

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

      И уже после окончательной сборки были ещё добавлены две индикаторные лампы на 220 В, для визуализации наличия напряжения в розетках.

      Основная часть времени создания устройства с нуля была потрачена на ожидание посылок из Китая и написание прошивки для Ардуино. В целом на создание ушло несколько месяцев. Несколько месяцев интернет серфинга в поисках информации по написанию скетчей для ардуино, пока ехали посылки, но и после этого штук 15 версий различных вариантов скетча и подбор наиболее подходящего.

      Датчик сделан выносной на проводе от какого то USB устройства, потому что датчик подключается по шине I2C, соответственно USB шнур с 4-мя провода пришелся как никогда кстати.

      Вот так выглядит устройство, уже в готовом виде...


  • Сообщения

    • Хочу спросить знающих людей - как известно индуктивность на вторичке помогает нам бороться с вч помехами и задержкой - легче пускать бп - в связи с токами при начальном заряде конденсатора . Но - ес использовать этот бп в умзч - эта задержка может сыграть и в минус при работе на динамическую нагрузку и быстрых атаках в музыке .имхо. потому ес попробовать другой вариант - увеличить софт старт - время - и вместо индуктивности применить феритовую трубочку - и добавить снабер на диоды от всплесков ?  
    • Вот теперь такие дела. Сигнал с ТГР на затворах: Зелёный щуп зашкаливает, обычно так показывает, когда отсутствует нагрузка. Проверил транзисторы - пробоя нет, открываются и закрываются. Может как то похитрей проверить транзисторы?
    • Я москвич, заезжай в гости. Да и постарше тебя буду, сопля.
    • Повесил на амперметр резистор, теперь стрелка так сильно не откланяется, на выходе 920А стрелка 40%, на 920В на 50%, слабое усиление, если дотронуться до коллектора 920А то палец обжигает, с 920В такого не происходит
    • тимвал, а куда по-Вашему нужно подключать ОС? Если тянуть дорожку от R7 до пятака, увеличение ее длинны никак отрицательно не скажется случаем? Резисторы в эмиттерах обязательно именно 0.1ом ставить, или можно больше, встречал тут мнение, что при неподобранных выходниках нужно увеличить номинал? И все-таки надо заземлять радиаторы Q3 и Q8 или нет?
    • Да я в любом случае к сети буду подключать в последний момент - после всех проверок - потом еще думаю добавить защитные диоды на ключи - как доп . к встроенным - поможет при выбросах трансформатора,имхо .
    • Это бизнес,как и тот что торговали с фашистами,это не треп Это простые рассуждения, так и мы тут треплемся....   У нас после града тепло и хорошо, зачем о каких то бабуриках  Сижу и думаю, чем заняться, семечек взять? Полистать сайты типа форума, чтото может интересное найду, кто чем в выходные занимается
×
×
  • Create New...