ИБП на arduino. проблема генерации ШИМ частотой 32кГц.

Тема в разделе "Микроконтроллеры AVR", создана пользователем Vladi40k, 8 янв 2017.

  1. Vladi40k

    Vladi40k Нуб

    Здравствуйте, разробатываю проект лабораторного ИБП на платформе arduino uno. есть идея, вместо TL494 использовать arduino. Настроил 16 разрядный таймер TCCR1 на два сигнала частотой 32кГц для полевиков. С скважносьтю и частотой проблем нет, но напряжение ШИМ сигнала 1.5В вместо 5В.
    upload_2017-1-8_15-59-55.png

    Зеленый- сигнал с OC2A
    Фиолетовый- сгенерирован обычной функцией analogWrite()

    Можете помочь сделать высокий уровень с OC2A около 5в. В чем может быть проблема?

    код прилагается:
    Код (C++):
    #include <avr/io.h>

    void setup() {
      TCCR1A = (1 << COM1A1) | (1 << WGM12) | (1 << WGM10) | (1 << CS10) | (1 << COM1B1) | (1 << COM1B0);
      TCCR1B = (1 << CS10);
      OCR1A = 121;
      OCR1B = 134;
    }

    void loop() {
      while (1)
      {
        analogWrite(11, 123);
      }
    }
     
    Последнее редактирование: 8 янв 2017
  2. mcureenab

    mcureenab Гуру

    Зачем analogWrite долбить в цикле? Его достаточно один раз вызвать и дальше ШИМ сам будет генерить импульсы.
     
  3. Vladi40k

    Vladi40k Нуб

    Здесь и не поспоришь)сделал просто для наглядности, только что поменял код. Как ожидалось, ничего не изменилось(
     
  4. а в реале сколько? )
     
  5. Vladi40k

    Vladi40k Нуб

    Ввиду отсутствия осцилографа сделал заполнение 224 и мерял тестером, варьируется 1.2-1.3В
     
  6. mcureenab

    mcureenab Гуру

     
    Пушной звер и Vladi40k нравится это.
  7. Vladi40k

    Vladi40k Нуб

    спасибо, первые шаги как не как) все работает как надо!