Перейти к содержанию
С Днём Победы! ×

a2a

Members
  • Постов

    50
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные a2a

  1. Всем привет. Прошу помощи в вопросе, в котором я ничего не понимаю.

    Попробую на пальцах. Есть Платка Digispark на 85тиньке и энкодер. Это что-то вроде аналогового регулятора громкости в винде. Очень удобно. Одно но- сабж не включается после ребута или сна компьютера.

    Код я прошивал через Arduino IDE. Код

    Spoiler
    
    // see tutorial at http://learn.adafruit.com/trinket-usb-volume-knob
    
    #include "TrinketHidCombo.h"
    
    #define PIN_ENCODER_A 0
    #define PIN_ENCODER_B 2
    #define TRINKET_PINx  PINB
    #define PIN_ENCODER_SWITCH 1
    
    static uint8_t enc_prev_pos   = 0;
    static uint8_t enc_flags      = 0;
    static char    sw_was_pressed = 0;
    
    void setup()
    {
      // set pins as input with internal pull-up resistors enabled
      pinMode(PIN_ENCODER_A, INPUT);
      pinMode(PIN_ENCODER_B, INPUT);
      digitalWrite(PIN_ENCODER_A, HIGH);
      digitalWrite(PIN_ENCODER_B, HIGH);
    
      pinMode(PIN_ENCODER_SWITCH, INPUT);
      // the switch is active-high, not active-low
      // since it shares the pin with Trinket's built-in LED
      // the LED acts as a pull-down resistor
      digitalWrite(PIN_ENCODER_SWITCH, LOW);
    
      TrinketHidCombo.begin(); // start the USB device engine and enumerate
    
      // get an initial reading on the encoder pins
      if (digitalRead(PIN_ENCODER_A) == LOW) {
        enc_prev_pos |= (1 << 0);
      }
      if (digitalRead(PIN_ENCODER_B) == LOW) {
        enc_prev_pos |= (1 << 1);
      }
    }
    
    void loop()
    {
      int8_t enc_action = 0; // 1 or -1 if moved, sign is direction
    
      // note: for better performance, the code will now use
      // direct port access techniques
      // http://www.arduino.cc/en/Reference/PortManipulation
      uint8_t enc_cur_pos = 0;
      // read in the encoder state first
      if (bit_is_clear(TRINKET_PINx, PIN_ENCODER_A)) {
        enc_cur_pos |= (1 << 0);
      }
      if (bit_is_clear(TRINKET_PINx, PIN_ENCODER_B)) {
        enc_cur_pos |= (1 << 1);
      }
    
      // if any rotation at all
      if (enc_cur_pos != enc_prev_pos)
      {
        if (enc_prev_pos == 0x00)
        {
          // this is the first edge
          if (enc_cur_pos == 0x01) {
            enc_flags |= (1 << 0);
          }
          else if (enc_cur_pos == 0x02) {
            enc_flags |= (1 << 1);
          }
        }
    
        if (enc_cur_pos == 0x03)
        {
          // this is when the encoder is in the middle of a "step"
          enc_flags |= (1 << 4);
        }
        else if (enc_cur_pos == 0x00)
        {
          // this is the final edge
          if (enc_prev_pos == 0x02) {
            enc_flags |= (1 << 2);
          }
          else if (enc_prev_pos == 0x01) {
            enc_flags |= (1 << 3);
          }
    
          // check the first and last edge
          // or maybe one edge is missing, if missing then require the middle state
          // this will reject bounces and false movements
          if (bit_is_set(enc_flags, 0) && (bit_is_set(enc_flags, 2) || bit_is_set(enc_flags, 4))) {
            enc_action = 1;
          }
          else if (bit_is_set(enc_flags, 2) && (bit_is_set(enc_flags, 0) || bit_is_set(enc_flags, 4))) {
            enc_action = 1;
          }
          else if (bit_is_set(enc_flags, 1) && (bit_is_set(enc_flags, 3) || bit_is_set(enc_flags, 4))) {
            enc_action = -1;
          }
          else if (bit_is_set(enc_flags, 3) && (bit_is_set(enc_flags, 1) || bit_is_set(enc_flags, 4))) {
            enc_action = -1;
          }
    
          enc_flags = 0; // reset for next time
        }
      }
    
      enc_prev_pos = enc_cur_pos;
    
      if (enc_action > 0) {
        TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP);
      }
      else if (enc_action < 0) {
        TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN);
      }
    
      // remember that the switch is active-high
      if (bit_is_set(TRINKET_PINx, PIN_ENCODER_SWITCH)) 
      {
        if (sw_was_pressed == 0) // only on initial press, so the keystroke is not repeated while the button is held down
        {
          TrinketHidCombo.pressMultimediaKey(MMKEY_MUTE);
          delay(5); // debounce delay
        }
        sw_was_pressed = 1;
      }
      else
      {
        if (sw_was_pressed != 0) {
          delay(5); // debounce delay
        }
        sw_was_pressed = 0;
      }
    
      TrinketHidCombo.poll(); // check if USB needs anything done
    }

     

    К счастью или нет, но есть решение(как я думаю) Один человек додумался как эту проблему обойти. Под вторым спойлером решение- но я там ничего не понимаю. Надо как-то совокупить эти 2 кода, а куда что- ой. Как я не пробовал- какието ошибки.

    Spoiler

    Удалось решить эту проблему. Пришлось вносить изменения в библиотеку V-USB. Была добавлена переменная LastRecievedUSBPacket. В эту переменную записывается тип последнего принятого USB пакета. Т.е. если после обнуления в эту переменную попадают данные, значит USB законнектился и все работает нормально. Если данные не меняются значит коннект не произошел. Тогда отправляем устройство на перезагрузку. При этом происходит заново подстройка частоты. И так по циклу, пока не установится коннект.

    Пример изменений в коде

    
    #include <avr/wdt.h> //подключаем библиотеку watch dog timer
    ….
    int main(void //Начало программы
    {
      MCUSR = 0;
    wdt_disable();
    
    ……
    
    ……
    wdt_enable(WDTO_8S); // даем команду перезагрузить контроллер через 8 с если не обнулим время счетчика
    
    LastRecievedUSBPacket = 0;
    for(;;){ /* начало основного цикла программы */
    if (LastRecievedUSBPacket != 0) //обнуляем счетчик только когда USB соединение установлено
    {
    LastRecievedUSBPacket = 0;
    wdt_reset();
    }
    }
    }

    Т.е. после запуска контроллер проверяет значение переменной LastRecievedUSBPacket, если она отлична от нуля, значит подключение произошло и можно обнулить WDT. Если в течение 8 секунд устройство не определилось системой оно уходит в перезагрузку.

     

    Буду благодарен за помощь как их скрестить вместе.

  2. Господа Здравствуйте.

    На рабочем месте заменил освещение, нужно регулируемый питальник 30-48в(там 4 одинаковых ленты последовательно) мощность около 48вт. Можно порекомендовать что-то конкретное из быстро собрать? Типа на трехногих TOP или подобное, спасибо.

  3. @Old_Man  Весьма интересные кривые. На большей мощности не тестировали? У меня на компрессоре, в долговременном режиме потребляет 1100вт. Без существенного нагрева коллектора. Можно перекинуть шкивы и увеличить обороты, тогда 1500+вт. Но за 15сек греются щетки и коллектор до 90градусов и эксперименты прекращаю. Делаю вывод : для больше мощности- мощнее щеточный узел(из двух в параллель). Пока только в голове.

  4. Получился некий перебор с производительностью. Компрессор такто СО-7. При качке до 6атм ток уходит за 20А. Мотору при таком ПВ врятли что-то будет(в характеристиках допускается превышение тока якоря в 2 раза в течении 1 мин). Жалко сеть. Хотя народ варит постоянно мигает всё жутко. На линейку из 30 гаражей всего 2 провода по 3квадрата(как узнал глаза на лоб):rolleyes:

  5. Всем привет.

    Запустил. 

    Делал на 1182ПМ1Р и BTA41-800B на радиаторе 10х10см.  При токе около 20А температура около 40гр. У микросхемы стартовая емкость получилась 200мкф. Комфортное время запуска вышло около 1.5сек.

    В общем всё хорошо, могу рекомендовать. 

    ЗЫ.Фигово то, что при мощности около 3квт сеть проседает до 170в :( Так что накрылась тазом моя затея компрессора.

  6. @more  Приветствую. По схожести вопроса натолкнулся на мысль, а вдруг наши движки на постоянку рассчитаны? Не проводили ли вы такой эксперимент? Потому как чудес не бывает, у других работает - у нас не хочет. Нужно искать проблему там, где её не ждешь:)

  7. Работаю со схемой V17. С полевиком врятли мог накосячить, т.к проверял его на рабочесть. Да, скорее всего R3 был мелковат(330ком). Ну да ладно.

    Приволок движок домой и крутил до победного. Попробовал на 2SD669A. h21э у моего экземпляра больше 200. Что сказать - схему не узнать. Работает ощутимо лучшее чем с 13003( у него кстати h21э чуть больше 10 оказался). Стабилизирует - деревяшкой не остановить.  На сверлилке уже заметил такой эффект- прижать патрон рукой, тогда обороты чуть сбросятся(процентов 20-40) и идет отличная стабилизация. Так что составному транзистору-быть( у кого тут похожие непонятки были).

    Но я наверное привык к хорошему, и меня всётаки не устраивает стабилизация. Впрочем желать от этой схемы параметров как у TDA1085 видимо опрометчиво с моей стороны. А так хотелось...

     

  8. Здравия. В общем с полевиком не заработало. На уровне кажется , есть регулировка в самом конце регулятора в районе пары процентов.  Вероятно дело в резисторе смещения, и возможно нужно добавить в затвор резистор 10-100к. Поидее полевик всё время открыт получается.

    Где-то тут проскакивала мысль, сделать составной транзистор. Для увеличение h21э. Уважаемый@Sova1 , прокоментируйте пожалуйста.

  9. Здравствуйте Уважаемые.

    Сегодня неудачно испытал v17 с полевиком IRF630(бед диода в истоке). Заработало на максимальных оборотах. И не регулировалось вообще.  Пайку проверил, детали проверил. 

    Распаял в общем. Буду пробовать делать с новыми деталями по черной схеме выше.

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

     

    @Sova1  по предыдущему посту вопрос, вернее 2(если позволите). Есть ли прощще схема. И R3 в этой схеме- увеличение номинала увеличивает максимальные обороты?Или наоборот?

  11. Здравия желаю. По схеме 17.

    Заменил оптроны на PC817 на новые. Стало работать также или чуть плавнее. Немного уменьшились минимальные обороты. Но стабилизации практически нет. Показалось, что минимум около 100об/мин(на глаз).

    Читая тему выше, у @Guest Paul  таже проблема. Пишу дабы не забыть тему, если найдется решение. Перешел временно на ТДА1085, хотя и не совсем нравится её работа.

     

    Немного оффтопа, если позволит сова. Что нужно вырезать в схеме, если нужен только плавный пуск двигателя. Правильно ли я думаю:

     

    Спасибо.

     

     

    softstart.jpg

  12. Всем привет. В общем-то тоже, что и постами выше.

    Собрал V14б и V17. Первую собирал как пробу, работала но рывками, перебором R3 и R5 не смог заставить нормально работать.  Думается мне, виноват был C2a со слишком большим номиналом. Потом, регулировка была очень резкой(ну уж какой был переменник). Но проверить эту мысль не суждено было, т.к собрал с двумя оптронами. Тут схема более юзерфрендли. Регулировка более плавная, обороты "идут" за движком потенциометра. И там и там не ставил целью добиться низких оборотов, т.к предназначение - сверлильный станок со шкивами 8.5:1(сам точил). Как оказалось, стабилизация оборотов весьма посредственная. Банально шпиндель без чрезмерных усилий останавливаю рукой за патрон. Мотор к слову тоже останавливается и гудит. Толчки есть, но слабые. В это время светодиод загорается сильнее. Издевательства прекратил, и пишу сюда за советом. Куда смотреть.

    По схеме, отличия небольшие. VT1 поставил 13003, С2-100мкф, С2а-3.3мкф, симистор BT137-600(без букв в  конце) Тут посчитал нужным оставить ограничительный резистор R6. Может быть изза него?

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

    Я думаю в бытовых электроприборах инженеры рассчитывают прочность якоря на долговременную работу с максимальными оборотами.ИМХО.(интересно узнать так ли это)

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

    Тоже кстати электротехнику автоматом сдавал.-_-:drinks:

  14. Смысла стабилизировать обороты нет.

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

    Сейчас начитался ютуба, вот какие мысли. Понял, что несовсем понимаю как двигатель работает. Если включить обм.возбуждения через диодный мост в сеть то она потребляет сравнительно небольшой ток. На якоре тоже. Что из них начнёт "потреблять" больший ток при возрастающей нагрузке, якорь или обмотки возбуждения ?

  15. Появились некоторые сомнения. Насколько важно какой двигатель?

    У меня П21 вариант на 1.5квт/220в/3000мин-1.. Возбуждение смешанное.(есть от него блок на тиристорах, видимо на старом ЧПУ работал). Работает нормально через 50ти амперные советские диоды. Но при запуске тухнет всё в гараже:(

    p11m.jpg

  16. Привет Гар. Ну не настолько ж я туп:) Выше говорилось про диодный мост на двигателе. (Думаю одно, что написал потом смотрю. Извиняюсь)

    По теме можешь подсказать? Тему электроники давно забросил, посему и тупые вопросы :(

  17. Всем привет.

    Не очень хочется ставить эксперименты на свои кровные, лучше спрошу. Есть схема плавного пуска. Вернее две. 

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

    Если я любую из этих схем "нагружу" на диодный мост двигателя, не получу фейерверки?

    plavnyj-pusk-bolgarki-sxema-1.gif

    soft start.png

  18. Да, что-то я не туда смотрю. 180миливатт максимальная мощность терморезистора. Ток соответственно около 30ма.

    Сразу в мозги, я думаю тоже на тоже получается. Но нет тестового ЭБУ чтобы "не жалко".

    Сейчас копаюсь в профильных ветках по моему авто. Есть сведения что там ставятся таблетки от EPCOS B57220. Достать в принципе не проблема, наверное на этом остановлюсь.

  19. Олег DS1820 как раз есть. Их и планировал ставить. А вот дальше не совсем понятно что. В смысле сама стыковка с мозгами авто. Так понимаю мозги измеряют падение напряжения. Вот нужно(как думаю) полевик на эти 2 провода, уже затвором управлять дуиной.

    Про цифровые резисторы почитал. Смотрел от AD и (может не туда смотрел) нет их на ток более 180ма.

    Родного датчика нет. Сейчас прикидываю трудозатраты, и может быть будет легче потратить 1600руб на родной датчик. Хотя этот проект был бы спасением многих как мне кажется.

    Всем спасибо.

×
×
  • Создать...