блок формирования синуса
-
- Рядовой
- Сообщения: 3
- Зарегистрирован: 16 сен 2021, 21:02
- Имя: дмитрий
блок формирования синуса
помогите с созданием блока формирования синуса .не получается самому создать. имеется скетч.
желательно добавить входы en и value.
#include <TimerOne.h>
#include "sineTable.h"
int counter;
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Timer1.initialize(100); // 100uS
Timer1.pwm(9, 100);
Timer1.pwm(10, 100);
Timer1.attachInterrupt(sineWave);
}
void loop() {
}
void sineWave() {
counter++;
if(counter == 200) counter = 0;
if (counter < 100) {
Timer1.setPwmDuty(9, sineVal[0][counter]);
Timer1.setPwmDuty(10, 0);
}
else {
Timer1.setPwmDuty(9, 0);
Timer1.setPwmDuty(10, sineVal[0][counter - 100]);
}
}
####################################
#ifndef SINETABLE_H
#define SINETABLE_H
//---- sineTable.h ----
const int sineVal[][100] = {
// Peak Value = 800
{0,25,50,75,100,125,150,175,199,223,247,271,294,318,341,363,385,407,429,450,470,490,510,529,548,566,583,600,616,632,647,662,675,689,701,713,724,734,744,753,761,768,775,781,786,790,794,796,798,800,800,800,798,796,794,790,786,781,775,768,761,753,744,734,724,713,701,689,675,662,647,632,616,600,583,566,548,529,510,490,470,450,429,407,385,363,341,318,294,271,247,223,199,175,150,125,100,75,50,25,},
};
#endif
желательно добавить входы en и value.
#include <TimerOne.h>
#include "sineTable.h"
int counter;
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Timer1.initialize(100); // 100uS
Timer1.pwm(9, 100);
Timer1.pwm(10, 100);
Timer1.attachInterrupt(sineWave);
}
void loop() {
}
void sineWave() {
counter++;
if(counter == 200) counter = 0;
if (counter < 100) {
Timer1.setPwmDuty(9, sineVal[0][counter]);
Timer1.setPwmDuty(10, 0);
}
else {
Timer1.setPwmDuty(9, 0);
Timer1.setPwmDuty(10, sineVal[0][counter - 100]);
}
}
####################################
#ifndef SINETABLE_H
#define SINETABLE_H
//---- sineTable.h ----
const int sineVal[][100] = {
// Peak Value = 800
{0,25,50,75,100,125,150,175,199,223,247,271,294,318,341,363,385,407,429,450,470,490,510,529,548,566,583,600,616,632,647,662,675,689,701,713,724,734,744,753,761,768,775,781,786,790,794,796,798,800,800,800,798,796,794,790,786,781,775,768,761,753,744,734,724,713,701,689,675,662,647,632,616,600,583,566,548,529,510,490,470,450,429,407,385,363,341,318,294,271,247,223,199,175,150,125,100,75,50,25,},
};
#endif
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
блок формирования синуса
Какой контроллер?dmitriym73316 писал(а): ↑20 фев 2023, 20:37 помогите с созданием блока формирования синуса .не получается самому создать. имеется скетч.
желательно добавить входы en и value.
Какой редактор ПБ?
Что именно не получается?
Выразить благодарность
Мой E-mail: dryundel@flprog.pro
Мой E-mail: dryundel@flprog.pro
-
- Рядовой
- Сообщения: 3
- Зарегистрирован: 16 сен 2021, 21:02
- Имя: дмитрий
блок формирования синуса
контроллер mega328,редактор code-basic.не очень разбираюсь в написании кода да и не знаю как прикрутить входы.
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
блок формирования синуса
Создание пользовательского блока из скетча(примера)dmitriym73316 писал(а): ↑23 фев 2023, 19:23 не очень разбираюсь в написании кода да и не знаю как прикрутить входы
Создание пользовательского блока (Code-Basic) простым языком.
Выразить благодарность
Мой E-mail: dryundel@flprog.pro
Мой E-mail: dryundel@flprog.pro
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 1 раз
- Контактная информация:
блок формирования синуса
По коду проекта(скетча) всё понятно.
Не понятно, о каком входе value может идти речь?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Рядовой
- Сообщения: 3
- Зарегистрирован: 16 сен 2021, 21:02
- Имя: дмитрий
блок формирования синуса
В скетче константа. желательно иметь возможность изменять.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
блок формирования синуса
[ref]dmitriym73316[/ref], это максимальное значение для PWM из массива.
Для того, чтобы изменить его, надо пересчитать весь массив и вставить в скетч.
Со входа блока это не возможно.
Можно сделать несколько массивов и переключаться между ними.
Если сделать через функцию синуса, то такого разрешения не получить. Контроллер не потянет.
Для того, чтобы изменить его, надо пересчитать весь массив и вставить в скетч.
Со входа блока это не возможно.
Можно сделать несколько массивов и переключаться между ними.
Если сделать через функцию синуса, то такого разрешения не получить. Контроллер не потянет.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Выразить благодарность
Мой E-mail: dryundel@flprog.pro
Мой E-mail: dryundel@flprog.pro
блок формирования синуса
Только если прикрутить делитель/множитель.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
блок формирования синуса
К стати, как вариант. Голова!
Выразить благодарность
Мой E-mail: dryundel@flprog.pro
Мой E-mail: dryundel@flprog.pro
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 1 раз
- Контактная информация:
блок формирования синуса
dmitriym73316 писал(а): ↑24 фев 2023, 20:28 В скетче константа. желательно иметь возможность изменять.
Описание на русском тут и тут
вкратце - 10бит.void pwm(char pin, int duty, long period = -1)
Включает ШИМ на указанном пине. Параметр duty указывает заполнение ШИМ, которое может меняться от 0 до 1023. Да-да, не вся «16-битность» таймера задействована, увы. Параметр period позволяет задать интервал срабатывания, но учтите, что период задаётся не для отдельного пина, а вообще для таймера. То есть, если вы укажете период для 9го пина, то повлияет и на 10й. Неочевидно, да.
Ещё один момент — можно указывать в качестве номера пина 1 и 2 вместо 9 и 10, но здесь тоже нужно быть внимательным: если указать 1 или 2, то это сработает и на Arduino Mega (пины 11 и 12), и на простой Arduino (пины 9 и 10), но если указать 9 или 10, то сработает только на Arduino… Брр, и что только автор библиотеки курил?
void setPwmDuty(char pin, int duty)
Устанавливает заполнение ШИМ для указанного пина, если ШИМ на нём уже включена.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 1 раз
- Контактная информация:
блок формирования синуса
Имеем 10 бит, 1023. В массиве макс 800. Регулировать "амплитуду" выходного шим - мысль не оправданная, пока, ничем.
Если задача создать управление напряжение/частота, нужно идти на другой мк.
Отправлено спустя 3 минуты 7 секунд:
Кстати, массив обычно уменьшают в два раза, зеркаля от максимума.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
блок формирования синуса
[ref=#ff8000]Sancho[/ref], и в чем мудрость?
Если например идти на ESP32. То там этого всего (что выше) вообще не нужно. Встроенный ЦАП обеспечивает хоть синус хоть пилу нормальную, помоему до 1МГц, если не ошибаюсь.
Отправлено спустя 3 минуты 22 секунды:
Пример взят черте откуда. И годится только для понимания и наглядности. Надеюсь топикстартер что то вообще понял из уже сказанного.
Если например идти на ESP32. То там этого всего (что выше) вообще не нужно. Встроенный ЦАП обеспечивает хоть синус хоть пилу нормальную, помоему до 1МГц, если не ошибаюсь.
Отправлено спустя 3 минуты 22 секунды:
Это тоже понятно.
Пример взят черте откуда. И годится только для понимания и наглядности. Надеюсь топикстартер что то вообще понял из уже сказанного.
Выразить благодарность
Мой E-mail: dryundel@flprog.pro
Мой E-mail: dryundel@flprog.pro
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 1 раз
- Контактная информация:
блок формирования синуса
[ref=#ff8000]Dryundel[/ref], Андрей. Думаю, судя по задумке, речь идёт о преобразователе частоты 50 Гц, т.к. 200тактов*100us они и есть.
Для этих целей есть совсем недорогие решения с бонусами на борту - приобретена, летом будем экспериментировать.
[spoiler] [/spoiler]
Для этих целей есть совсем недорогие решения с бонусами на борту - приобретена, летом будем экспериментировать.
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Dryundel
- Полковник
- Сообщения: 2392
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 2 раза
- Контактная информация:
блок формирования синуса
[ref=#ff8000]Sancho[/ref], помню эту эпопею.
Нашёл таки нормальный девайс. Решил не откусывать лишние ноги у микросхем.
Поздравляю!
Нашёл таки нормальный девайс. Решил не откусывать лишние ноги у микросхем.
Поздравляю!
Выразить благодарность
Мой E-mail: dryundel@flprog.pro
Мой E-mail: dryundel@flprog.pro
блок формирования синуса
[ref=#ff8000]Sancho[/ref],
Давно лежит такой модуль, руки не дошли до экспериментов, буду ждать ваших))
Давно лежит такой модуль, руки не дошли до экспериментов, буду ждать ваших))
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя