Форма входа

Категории раздела

Силы природы [10]
Новые технологии [42]
Неопознанное [27]
Интересные факты [32]
Личности [22]
Объявления, предложения пользователей и гостей!!!! [29]
Поисковики хорошо индексирует этот раздел! Вам только остается преподнести как Вам это угодно.
Полезности [83]
Рациональные предложения [26]
Конструирование [68]
СУБКУЛЬТУРЫ [9]
Деньги [10]
Заряди свой комп!!! [49]
Пробуждение ВоинА [39]
Радиолюбителям [75]
Работа с интернетом [14]
Говорун [2]
Энергетика Релейная защита [36]
Авто-мото [3]
Искусство [10]
AliExpress [17]
Видео архив [40]
Рецепты и секреты [0]

Поиск

Слушать

Радио онлайн

"Техстудент"

Наш опрос

Кто круче)
Всего ответов: 51

Мини-чат

500

Контроль

Партнёры

Воскресенье, 24.11.2024, 2:37:29
Приветствую Вас Интернет ПутниК
Главная | Регистрация | Вход | RSS

tehstudent.net

Журнал

Главная » Статьи » Радиолюбителям [ Добавить статью ]

Схема управления HDD

Схема управления простая, и состоит из не большого числа элементов. В виде управляющего устройства использован микроконтроллер ATmega8. Схема устройства показана на рисунке:
схема включения трехфазного бексоллекторного двигателя

В схеме использованы драйверы полевых транзисторов IR4427 и сами полевые транзисторы IRFZ44.
Управляющая программа была написана не мною, автор Дмитрий(Maktep) за что ему отдельное спасибо.
Как исключение программа написана на Си для CV-AVR.
ПРограмма транслирована под компилятор WIN GCC.
Частота кварца 8МГц, для устройств с связью по UART рекомендую использовать внешний кварц, так как при тактировании от внутреннего генератора могут появляться ошибки в виду его нестабильной работы при изменении температуры окружающей среды.

  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3. #include <stdio.h>
  4.  
  5. void USART_Init( unsigned int ubrr);
  6. void USART_Transmit( unsigned char data );
  7.  
  8. char status,data;
  9. char state;
  10. unsigned int lvl=65530/4;
  11.  
  12. // USART Receiver interrupt service routine
  13. ISR(USART_RXC_vect)
  14. {
  15. status=UCSRA;
  16. data=UDR;
  17. if (lvl<3000)
  18. { if (data=='+')
  19. lvl--;
  20. else
  21. if (data=='-')
  22. lvl++;}
  23. else
  24. {if (data=='+')
  25. lvl-=lvl/500;
  26. else
  27. if(data=='-')
  28. //if (lvl,/)
  29. lvl+=lvl/500;
  30. }
  31. }
  32.  
  33. // Timer1 output compare A interrupt service routine
  34. ISR(TIMER1_COMPA_vect)
  35. {
  36. switch (state)
  37. {
  38. case 0: PORTC=1; break;
  39. case 1: PORTC=3; break;
  40. case 2: PORTC=2; break;
  41. case 3: PORTC=6; break;
  42. case 4: PORTC=4; break;
  43. case 5: PORTC=5; break;
  44. }
  45.  
  46. if (state<5)
  47. state++;
  48. else
  49. state=0;
  50. }
  51.  
  52.  
  53. void USART_Init( unsigned int ubrr)
  54. {
  55. /* Set baud rate */
  56. UBRRH = (unsigned char)(ubrr>>8);
  57. UBRRL = (unsigned char)ubrr;
  58. /* Enable receiver and transmitter */
  59. UCSRB=(1<<RXEN)|(1<<TXEN);
  60. UCSRB |= (1<< RXCIE);
  61.  
  62. /* Set frame format: 8data, 2stop bit */
  63. UCSRC=0x86;//
  64. UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
  65. }
  66.  
  67. void USART_Transmit( unsigned char data ) //
  68. {
  69. while ( !(UCSRA & (1<<UDRE)) ); //
  70. UDR = data; //
  71. }
  72.  
  73.  
  74. int main(void)
  75. {
  76. PORTC=0x00;
  77. DDRC=0x07;
  78.  
  79. // Timer/Counter 1 initialization
  80. // Clock source: System Clock
  81. // Clock value: 8000,000 kHz
  82. // Mode: CTC top=OCR1A
  83. // OC1A output: Discon.
  84. // OC1B output: Discon.
  85. // Noise Canceler: Off
  86. // Input Capture on Falling Edge
  87. // Timer1 Overflow Interrupt: Off
  88. // Input Capture Interrupt: Off
  89. // Compare A Match Interrupt: On
  90. // Compare B Match Interrupt: Off
  91. TCCR1A=0x00;
  92. TCCR1B=0x09;
  93. TCNT1H=0x00;
  94. TCNT1L=0x00;
  95. ICR1H=0x00;
  96. ICR1L=0x00;
  97. OCR1AH=0xFF;
  98. OCR1AL=0xFF;
  99. OCR1BH=0x00;
  100. OCR1BL=0x00;
  101.  
  102. // Timer(s)/Counter(s) Interrupt(s) initialization
  103. TIMSK=0x10;
  104.  
  105. USART_Init (8);//28800 4MHz
  106. USART_Transmit('O');
  107. USART_Transmit('k');
  108. USART_Transmit('!');
  109.  
  110. USART_Transmit(0x0d);
  111. USART_Transmit(0x0a);
  112.  
  113. // Global enable interrupts
  114. sei();
  115.  
  116. while (1)
  117. {
  118. OCR1A=lvl;
  119. };
  120. }

Скачать проект Win AVR

Алгоритм работы построен так, что при нажатии на клавиатуре кнопки "+" передается по UART в микроконтроллер, который увеличивает скорость коммутации обмоток. И при нажатии на кнопку "-" все выполняется наоборот, то есть обороты двигателя уменьшаются. Для работы устройства дополнительно понадобится UART-RS232 конвертер.

Эксперимент показал что при данной программе и данной схеме включения можно разогнать двигатель до приличных оборотов, точное число не известно, думаю в пределах 30 000 оборотов в минуту. Но к сожалению сила двигателя недостаточная для раскручивания пластикового пропеллера, верней с пропеллером двигатель набирает обороты, но при нагрузке происходит сбой и остановка двигателя.

Категория: Радиолюбителям | Добавил: snettens (14.09.2013)
Просмотров: 1800 | Теги: Схема управления HDD | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: