Очень простой генератор из ардуины.

poty

★★★★★★★
19 Фев 2020
3,547
1,012

@Филюс, это - совсем другой проект. Но, к.м.к., Вы что-то не то про свой двигатель выяснили. Какой 4-х фазный? Вы о чем?
 

poty

★★★★★★★
19 Фев 2020
3,547
1,012
@Филюс, ну и где Вы там 4 фазы увидели? И причём здесь генератор, если там совсем другое управление?
 

Филюс

✩✩✩✩✩✩✩
4 Июл 2025
10
0
@Филюс, ну и где Вы там 4 фазы увидели? И причём здесь генератор, если там совсем другое управление?
4-х фазный шаговый электродвигатель (не униполярный) с кучей тахогенераторов, датчиков положения, тормозных обмоток и т.д.
соединял его к драйверу шагового двигателя - не крутится, рычит и дергается.
А причем здесь генератор, я уже писал выше.
Я уже произвел сним кое какие эксперименты, если не поленюсь то создам новую тему и выложу все наработки.
 

Шарапов

✩✩✩✩✩✩✩
23 Ноя 2025
1
0
@poty, ...а понял про что вы говорили. Переделал и нормально отформатировал код:
C++:
void setup() {
    pinMode(9, OUTPUT); // выход генератора
    TCCR1A = 0;
    TCCR1B = 0;
    static uint32_t reqfreq = 350; // Частота 350 Гц
    uint32_t ocr = OCR1A;
    uint16_t divider = 1;
  
    if (reqfreq == 0 || reqfreq > F_CPU/2) return;
    ocr = (F_CPU/reqfreq/2/divider);
    byte shifts[] = {3, 3, 2, 2};
    for(byte i = 0; i < 4; i++) {
        if (ocr > 65536) {
            divider <<= shifts[i];
            ocr = F_CPU/reqfreq/2/divider;
            }
        else {
            TCCR1B = (i + 1)|(1<<WGM12);
            break;
            }
        } //Mode4 (CTC)
    OCR1A = ocr - 1;
    TCCR1A = 1<<COM1A0;
}

void loop() {

}
Помогите пожалуйста изменить скважность - сделать 10% вместо 50%
 

bort707

★★★★★★✩
21 Сен 2020
3,332
963
Вообще писал серьезно, не рассмотрел внимательно код. Думал тут OCR задает скважность,а деление на 2 дает 50%. Поэтому написал уменьшить до 1/10 :)
В значения регистров лезть лень, тут видимо СТС режим с максимумом OCR1A
Тогда надо переписывать более глубоко