Список разделов Flyback.org.ru » не HV » Микроконтроллеры и всё, что с ними связано
Тему сейчас просматривают - зарегистрированных: 0, скрытых: 0 и гостей: 0
Зарегестрированные - Нет
Ответить с цитатой

Seriyvolk
Бездельник


Ivani писал(а):
Наверно все таки до 1КГц, ведь обмотки на железе?
Ага, и уши в трубочку будут закручиваться.
Vitek_22 писал(а):
Больше интересует удержание оборотов под нагрузкой.
Рулить ШИМ-ом можно и без ОС. Если мотор относительно низкоомный, обороты не сильно будут меняться от нагрузки.

Добавлено: Thu Aug 01, 2019 5:05 pm
Ответить с цитатой

mihail
 


В итоге всем миром собрали частотник )))
Хотя если есть мк нафига тахометр, чтобы потом с него аналог в цифру гнать, не проще сразу импульсы с энкодера считать.

Добавлено: Thu Aug 01, 2019 5:18 pm
Ответить с цитатой

Денис
 


А разве коллекторник не даст определить частоту оборотов по импульсам тока в питании? Там же щетки физически ездят по контактам.

Добавлено: Thu Aug 01, 2019 6:29 pm
Ответить с цитатой

Анатолий
 


Ivani писал(а):
ведь обмотки на железе
у движков ДПР ротор без железа же

Добавлено: Thu Aug 01, 2019 6:34 pm
Ответить с цитатой

Николай
 


>А разве коллекторник не даст определить частоту оборотов по импульсам тока в питании?
разгонять ацпшку до 2мгц чтобы ловить броски тока? можно конечно, но изврат.
энкодер проще

ногой аврки чем угодно при такой моще можно дергать.
я 100вт светодиодов шимил на 30кгц ногой через первые попавшиеся феты\
на худой конец компл. пару фетов.

Добавлено: Thu Aug 01, 2019 6:42 pm
Ответить с цитатой

Денис
 


Датчик холла можно приложить снаружи к движку, как вариант.
Только точку оптимальную выбрать.

Добавлено: Thu Aug 01, 2019 6:51 pm
Ответить с цитатой

Behram
 


N1X писал(а):
скорость, а не положение Иначе нужно уже 3 ПИДа по хорошему )))
Ну да, так и есть Smile

Добавлено: Thu Aug 01, 2019 10:05 pm
Ответить с цитатой

Доктор Зло
 


Если динамика разгона/торможения как у сервомотора не нужна, то в статике
скорость = (Напряжение - Сопротивление обмотки * ток) * коэффициент.
Делается такой аналоговый регулятор на 1 операционнике, далее на ШИМ.
Если нужен реверс, то схема чуть сложнее, но по тому же принципу.
Кстати при неправильной настройке такой привод может иметь интересное свойство:
при добавке нагрузки на вал скорость увеличивается.

Добавлено: Fri Aug 02, 2019 1:57 am
Ответить с цитатой

Vcoder
Магистр


Доктор Зло писал(а):
при добавке нагрузки на вал скорость увеличивается
Сталкивался с таким. Расскажи пожалуйста, почему так получается и как это устранить.

Добавлено: Fri Aug 02, 2019 7:51 am
Ответить с цитатой

Dizel
Хаотично добрый эльф


такое бывает, если применяется IR компенсация, и она перенастроена... усиление сверх меры....

Добавлено: Fri Aug 02, 2019 8:04 am
Ответить с цитатой

Ivani
 


Vcoder писал(а):
Сталкивался с таким. Расскажи пожалуйста, почему так получается и как это устранить.Перерегулирование - для двигателя с постоянными магнитами ЭДС линейно зависит частоты вращения, падение на сопротивлении двигателя линейно зависит от тока и сопротивления двигателя, если в "вычислителе" установлено сопротивление обмотки выше реального то будет перерегулирование.

Добавлено: Fri Aug 02, 2019 9:05 am
Ответить с цитатой

N1X
 


Николай писал(а):
разгонять ацпшку до 2мгц чтобы ловить броски тока? можно конечно, но изврат.
Не стоит применять АЦП там, где АЦП применять не нужно :D
Вот схемка паяльной станции от известного товарища: http://www.leoniv.diod.club/projects/power/dxs-...ds/dfs-90_v04.pdf
Смотреть 6 лист.
Вот отрывок его описания:
В блоке управление феном дополнительно осуществляется управление вентилятором. С помощью PID-регулятора его частота вращения поддерживается равной заданной. Вентилятор не имеет датчика частоты вращения, поэтому ее измерение производится по частоте пульсаций потребляемого тока. Сигнал пульсаций выделяется на датчике тока, затем усиливается и фильтруется спомощью ОУ типа LM358, затем поступает на компаратор со следящим порогом, собранный на второй половинке этого ОУ. Прямоугольные импульсы с выхода компаратора поступают на вход прерывания INT0 микроконтроллера. Частота этих импульсов в 4 раза выше частоты вращения крыльчатки (для двигателей других типов это соотношение может быть другим).

Это не для данного случая, такая сложность не нужна, а в целом Smile

Добавлено: Fri Aug 02, 2019 10:30 am
Ответить с цитатой

Vitek_22
Простой советский бомж


Чёт взялся я за 328p атмегу, ну вроде то же самое, что и 8, только ноги другие подмигивает Но я не могу запустить на ней элементарный таймер. Подсобите, где я ошибся? Делитель 64, при достижении 250 "тиков" - т.е. 2 мс должно сработать прерывание, которое прибавит единичку к s, для простоты вывода я это дело перевожу в секунды, обнуляю счётчик... В итоге на экране всегда "о"...

Код:

#include <mega328p>
#asm
.equ __lcd_port=0x0B
#endasm
#include <io>
#include "lcd.h"

int s = 0; // переменная для хранения мс
int t = 0; // переменная для хранения с

// Обработка прерывания по совпадению
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
s++; // увеличиваем переменную каждые 2 мс
   if(s==500) //переводим в секунды
   { 
        t++;
        s=0;
   }
  TCNT1H=0; //обнуляем счётчик
  TCNT1L=0; //обнуляем счётчик
}

void main(void)
{
PORTD=0x00;     //LCD
DDRD=0x00;
lcd_init(8);
 
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (1<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0xFA;
OCR1BH=0x00;
OCR1BL=0x00;
 
while (1)
    {
        lcd_gotoxy(0,0); 
        lcd_putchar(t+0x30);
       
    };
}


Добавлено: Sat Aug 10, 2019 8:49 pm
Ответить с цитатой

Николай
 


А где sei !???

как у тебя в прерывание уйдет, если они отключены?

Добавлено: Sat Aug 10, 2019 9:08 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


А, есть он, я го с комментариями потёр
#asm("sei")

Добавлено: Sat Aug 10, 2019 9:13 pm
Ответить с цитатой

Николай
 


а маски прерываний в TIMSK1 кто ставить будет?

Добавлено: Sat Aug 10, 2019 9:37 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


а это что такое? Раньше не ставил...

Добавлено: Sat Aug 10, 2019 9:55 pm
Ответить с цитатой

Николай
 


All interrupts are individually masked with the timer interrupt mask register (TIMSK1)
В этом регистре ставятся флаги прерываний по которым будет таймер срабатывать.


http://ww1.microchip.com/downloads/en/DeviceDoc...28P_Datasheet.pdf
страница 112. значения регистра

Добавлено: Sat Aug 10, 2019 10:02 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


Вбил TIMSK1=0x02; прерывания при совпадении с A
а всё равно не работает
и ещё очень большая задержка между стартом и появлением "0"

Добавлено: Sat Aug 10, 2019 10:15 pm
Ответить с цитатой

Николай
 


хз. все работает

уходит в прерывание каждые 16.064мс
(у меня всегда делитель включен)



Код:

ISR(TIMER1_COMPA_vect)

{
asm("nop");
  TCNT1H=0; //обнуляем счётчик
  TCNT1L=0;
}

void main(void)
{
PORTD=0x00;     //LCD
DDRD=0x00;
sei();
 
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (1<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0xFA;
OCR1BH=0x00;
OCR1BL=0x00;
 TIMSK1=0x02;
while (1)
    {
asm("nop");   
       
    };
}


Добавлено: Sat Aug 10, 2019 10:26 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


Не знаю, что произошло, но вдруг заработало... Только каждые 8 секунд вместо 1 считает...
Пересчитал 8000 000: 64: 250 = 500 тиков в секунду, странно...

Добавлено: Sat Aug 10, 2019 10:41 pm
Ответить с цитатой

Николай
 


Ну дык умолчальный фьюз clkdiv8 стоит жеж.

вот и пашет на мегагерце

Добавлено: Sat Aug 10, 2019 10:48 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


так я ж в протеусе выставляю 8 МГц внутренний ТГ

Добавлено: Sat Aug 10, 2019 11:36 pm
Ответить с цитатой

Николай
 


тыкни в протеусе на мегу - посмотри на фьюз CLKDIV8 жеж! стопудов (0)programmed стоит
частота частотой а делитель делителем

а по поводу работает\неработает, иногда протеус просто при запуске может и неперекомпилить. всегда жму сначала F7 потом F12
тоже сталкивался что пишешь, а он проигнорил написаное

Добавлено: Sat Aug 10, 2019 11:39 pm
Ответить с цитатой

Vitek_22
Простой советский бомж


Спасибо, помогло! Почему-то выставлял unprogrammed, а второй раз заходишь - действительно стоит (0)programmed... Возможно, эт из-за крякнутой проги смех
Вот что значит, пару лет ничего не программить, всё из головы выдуло подмигивает

P.S. А в коде надо прописывать 1 делитель к внешнему кварцу или ничего вообще не писать? Типа CLKPR=(1<<CLKPCE);

Добавлено: Sun Aug 11, 2019 12:34 pm
Список разделов Flyback.org.ru » не HV » Микроконтроллеры и всё, что с ними связано
На страницу Пред.  1, 2, 3 ... 121, 122, 123 ... 151, 152, 153  След.     Просмотр темы целиком



Лицензионное соглашение

(c)Flyback.org.ru
Российское общество любителей высоких напряжений.
Использование материалов с данного сайта и форума возможно только с разрешения администрации.