Помощь новичку

Тема в разделе "Arduino & Shields", создана пользователем s2dent6732, 23 дек 2016.

  1. ostrov

    ostrov Гуру

    Вот. Ниже 2В стабильный HIGH еще поискать надо.
     
  2. s2dent6732

    s2dent6732 Нерд

    Я что-то не очень понял, о чем вы тут разговариваете. У меня есть датчик щелевой/п-образный или как там его... чтобы ничего нигде не покупать - решил использовать его. Как я понял - принцип работы: Лампочка и приемник излучения.
    У меня механизм: Вращается шестеренка, датчик считает зубья, которые проходят между его излучателем и приемником. Как отсчитал нужное количество - сработало реле/сигнализация/хоть что-то, сбрасывается счетчик, отсчет идет по новой.
    Подключал на 5В, в инструкции прочитал, что он на 5...12 вольт.
     
  3. s2dent6732

    s2dent6732 Нерд

    Т.е. у меня скачат значения 0-400, я использую if и сравниваю текущий сигнал с нулем: 0 - нет сигнала, все что больше 1 - есть сигнал?
    Или все сигналы более 1 математически превращать в единицу?
     
  4. ostrov

    ostrov Гуру

    Что значит больше 1? Цифровой он либо 0 либо 1. Считать надо перепады от 0 к 1 или наоборот, это и есть один зуб. Для этого следует либо постоянно и быстро опрашивать датчик либо привязать его к аппаратному прерыванию и считать через него. Но еще надо иметь ввиду, что не слишком ровные края зуба могут давать "дребезг", я такое наблюдал я несколькими обтюраторами, приходилось давать программно.
     
  5. sslobodyan

    sslobodyan Гик

    Сначала покажите как вы подключили свой датчик. Чуйка мне подсказывает, что там фототранзистор, который нужно через резистор в несколько кОм подтянуть к плюсу питания. И с этого резистора снимать сигнал, который по уровням должен четко вам выдавать 0 и 1 в цифре (digitalRead). Если не так, то поверните сначала шестеренку так, чтобы перекрыть световой поток. Опросите свой датчик через analogRead и запишите какие значения выдаются. Затем уберите преграду и опять запишите что выдал датчик. Допустим, перекрытый выдал 30 а открытый выдал 400. Значит в скетче после аналогового чтения ставите проверку: если получили 30 и меньше, значит принимаем это как 0, если 400 и больше - принимаем как 1. По правильному, надо еще вводить гистерезис, то есть зону неопределенности, допустим 20 Тогда сравниваем с 30+20 и 400-20. Но вам для подсчета зубьев и так должно работать. Еще нервы может попортить дребезг сигнала во время перехода с темного в светлое и наоборот. Борятся разными методами - почитайте о дребезге кнопки.
     
  6. Jedi

    Jedi Гик

    Почему я не удивлен? Это риторический вопрос.
    Два состояния датчика. Падает свет и не падает свет. Привести эти параметры к логическим уровням и считать переходы аппаратным прерыванием.

    Уважаемый ostrov, 0 -400 у ТС - это... Наверно яблоки. И если яблок больше одного, то это килограмм
     
  7. sslobodyan

    sslobodyan Гик

    Нет, бывают еще недояблоки. Например, датчик выдаст 20, но это еще не яблоко. Так, готовимся стать яблоком :) когда датчик выдаст 100. Но мысль правильная - перевести показания в единицах датчика в логическое значение, основываясь на физическом эксперименте.
     
  8. ostrov

    ostrov Гуру

    Почти уверен что датчик что то типа такого:
    [​IMG]
    Чему там колебаться от 0 до 400?
     
  9. Jedi

    Jedi Гик

    Причем здесь эксперимент? Достаточно просто взять характеристики датчика, характеристики привода (шестеренок) и скорость вращения, и нормально сформулировать задачу.
     
  10. s2dent6732

    s2dent6732 Нерд

    Вот даташит датчика. Предлагаю прервать дискуссию :) Мне нужно недельку на ознакомление с этими нюансами программирования :)
     

    Вложения:

    • 801672_eng.pdf
      Размер файла:
      253,4 КБ
      Просмотров:
      387
  11. s2dent6732

    s2dent6732 Нерд

    Скорость вращения переменная, характеристики привода думаю ни при чем. По конвейеру движется изделие, цепляет шестеренку и она вращается. Когда запускал тему у меня не было ни датчика, ничего. Сейчас, конечно, можно четче сформулировать задачу.
     
  12. s2dent6732

    s2dent6732 Нерд

    На первой странице фото serialmonitor - когда и 20 сигнал , когда и 900...
     
    sslobodyan нравится это.
  13. sslobodyan

    sslobodyan Гик

    ТС уже показывал какие результаты выдает analogRead. И там совсем не 0 и 1023. Тем более, когда световой поток перекрывается частично.
     
  14. ostrov

    ostrov Гуру

    Пин к земле притянут? Схему подключения датчика изобразите.
     
  15. Jedi

    Jedi Гик

    М-да... Лихо... Причем здесь программирование (нюансы программирования схемы подключения на целую неделю аж), если нужно сначала понять как подключить транзисторный выход датчика? Может быть даже понять чем n-p-n отличается от p-n-p транзистора.
     
  16. ostrov

    ostrov Гуру

    Есть гарантия что это не шум висящего в воздухе пина?
     
  17. Jedi

    Jedi Гик

    Мне кажется, что ТС просто воткнул выходной каскад датчика в пин. Одним концом на GND, другим к пину. Просто и легко.
     
  18. s2dent6732

    s2dent6732 Нерд

    К сожалению нет возможности заниматься изучением каждый день, да и схемотехника тоже важна. Я в теории понимаю, о чем тут речь идет, а как на практике это реализовать, знаний не хватает. Могу только шаблонами программ стандартными пользоваться, что-нибудь свое изобразить - пока непосильный труд, а нажного шаблона copy-past в сети не нашел. :(
     
  19. Jedi

    Jedi Гик

    И не найдете. Если за два с половиной года... Я в теории знаю как удалить аппендицит, но практику все же отдам врачу
     
  20. sslobodyan

    sslobodyan Гик

    А разве так нельзя? Включить подтягивающий резистор на порту?