Рисунок 1 - Схема преобразователя
Первичная обмотка w1 содержит около 21 витков алюминиевым проводом, вторичная w2 около 400 витков тонким медным проводом, сердечник использован от трансформатора строчной развёртки ТВС-110П3.
Напряжение на первичной обмотке составляло примерно 1.5 В.
Из за повышенной частоты видно что светодиоды светятся непрерывно, в принципе в этих светодиодах нет необходимости.
Напряжение на вторичной обмотке около 31В.
Действующее напряжение трансформатор повышает примерно в 20 раз.
Программа для управления электродвигателем микроконтроллером дополнена кодом для преобразователя напряжения. При нажатии на кнопку SB1 подключенную к четвёртому биту порта C срабатывает старый код который можно убрать. В коде для работы преобразователя напряжения, в отличии от кода для управления двигателем, используется функция _delay_us для  создания задержки в микросекундах.
Ниже приведен исходный код программы на языке C++ для микроконтроллера:
   #include <avr/io.h>
   #include <avr/delay.h>
   #define F_CPU 8000000UL  // 8 MHz
   int main(void)              // начало основой программы
   {
  DDRD = 0xff;            /* все выводы порта D сконфигурировать как выходы */
  DDRC = 0x00;      //выводы порта С сконфигурировать как входы
  PORTC = 0xff;  // установить "1" на всех выводах порта C,                       
                                        //включаем подтягивающие резисторы
  while (1)          // Бесконечный цикл
  {  
   if (!(PINC & (1<<PINC4)))  
   {
   DDRD |= 1<<1;
   DDRD |= 1<<2;
   _delay_ms(250);   // Ждем 250*8 мсек.
   DDRD &= ~(1<<1);
   DDRD &= ~(1<<2);
   _delay_ms(250);   // Ждем 250*8 мсек.
   DDRD |= 1<<0;
   DDRD |= 1<<3;
   _delay_ms(250);   // Ждем 250*8 мсек.
   DDRD &= ~(1<<0);
   DDRD &= ~(1<<3);
   _delay_ms(500);   // Ждем 500*8 мсек.
   }
   else
   {
   DDRD &= ~(1<<0);
   DDRD &= ~(1<<3);
   DDRD |= 1<<1;
   DDRD |= 1<<2;
   _delay_us(5);   // Ждем 5*8 мксек.
   DDRD &= ~(1<<1);
   DDRD &= ~(1<<2);
   DDRD |= 1<<0;
   DDRD |= 1<<3;
   _delay_us(5);   // Ждем 5*8 мксек.
   }
  }
   }      // закрывающая скобка основной программы
Исходный код компилировался в среде WinAVR, hex файл прошивался в микроконтроллер с помощью программы ponyprog2000.

 
Такие вещи на delay реализовывать как минимум нелогично. Есть таймеры для этого и аппаратный ШИМ. Чтобы получать асинхронных ШИМ, есть специальные регистры режимов работы.
ОтветитьУдалитьСогласен! Но делал я это давно и мало тогда знал о микроконтроллерах и лень было копаться в документациях на непонятном, по большей части, мне языке. С delay всё получилось быстро и просто. К тому же аппаратные таймеры и ШИМы есть не во всех микроконтроллерах а delay можно сделать на любом.
Удалить