я не усомнился, я не ведаю, наверное у HP есть генераторы выдающие с точностью до 0.01 герца, даже наверняка, только зная сколько такие приборы стоят сомневаюсь, что они были в доступности у публикующих частоты воздействия, когда немножко знаком с метрологией…относишься ко всему с изрядной долей ПОЗИТИВНОГО скепсиса
так ты ещё не понял есть результат или нет??? странно.
если можно пояснение.
даёт чего модуляция или нет.
Мишин ещё тот крендель,любит говорить загадками,в своём видео у пруда рассуждал про модуляцию,типа не надо,хотя сам с Горяевым прибор сделал дорогущий!!!
а то я себе щас сделал ещё с модулятором,купил AD633,оказалась наглухо корочёная,дорогая тварь.
теперь придётся по простому на транзисторах АМ делать.
если катушка с эквивалентным сопротивлением 6 Ом, начинает на Короне вести себя как катушка с эквивалентным сопротивлением 4 Ома чего там понимать-то, если только не дебил
я то для себя уже дывным давно понял,что это наше всё.
у меня коробочка на все случаи жизни!!!
выходной каскад у меня транзисторный усилитель,как бы переделывать ничего не буду,только добавлю в разрыв между генератором и усилителем АМ
а модуляция откуда, что за источник?
У Вас на TL431 цоколёвка перепутана ![]()
да.
это схема с архива.
я на устройстве сделал как надо.
до исправление схемы ещё не дошло.
мне другое интересно, что они зашивают в модулятор Горяева и при этом не стесняются брать такие денжищщи
Зашивают типа матрицы на все случаи жизни,но главное оригинальные.
хотя на офф. сайте можно приобрести наверное эти же матрицы,и слушай их или опять же что то модулируй.
Когда не хватает пинов энкодер можно повесить на I2C
/*
ATtiny85
+---\_/---+
(RESET) PB5 | 1 8 | VCC (3.3V - 5V)
Энкодер CLK | 2 7 | PB2 (SCL) ---> [I2C SCL Master] (+ подтяжка 4.7к)
Энкодер DT | 3 6 | PB1 (MISO / Опционально: Кнопка SW)
GND | 4 5 | PB0 (SDA) ---> [I2C SDA Master] (+ подтяжка 4.7к)
+---------+
*/
#include <TinyWireS.h>
#define I2C_SLAVE_ADDRESS 0x15
#define ENCODER_CLK PB3 // Физический пин 2
#define ENCODER_DT PB4 // Физический пин 3
#define ENCODER_SW PB1 // Физический пин 6 (Кнопка)
volatile long encoderPosition = 0;
volatile byte lastClkState;
// Переменные для логики кнопки внутри ATtiny85
bool lastButtonState = false;
uint32_t lastStateChangeTime = 0;
uint8_t clickCount = 0;
bool holdReported = false;
// Коды событий кнопки для отправки: 0 - нет, 1 - клик, 2 - двойной, 3 - удержание
volatile byte clickEventToSend = 0;
// Тайминги обработки кнопки
const uint32_t DEBOUNCE_TIME = 20;
const uint32_t DOUBLE_TIME = 300;
const uint32_t HOLD_TIME = 700;
// Буфер I2C пакета
volatile byte responseBuffer[5];
volatile byte bufferIndex = 0;
void setup() {
pinMode(ENCODER_CLK, INPUT_PULLUP);
pinMode(ENCODER_DT, INPUT_PULLUP);
pinMode(ENCODER_SW, INPUT_PULLUP);
lastClkState = digitalRead(ENCODER_CLK);
TinyWireS.begin(I2C_SLAVE_ADDRESS);
TinyWireS.onRequest(requestEvent);
}
void loop() {
// 1. Обработка вращения энкодера
byte currentClkState = digitalRead(ENCODER_CLK);
if (currentClkState != lastClkState) {
if (digitalRead(ENCODER_DT) != currentClkState) {
encoderPosition++;
} else {
encoderPosition--;
}
}
lastClkState = currentClkState;
// 2. Обработка кнопки (инвертировано: true = нажата)
bool currentButtonState = !digitalRead(ENCODER_SW);
uint32_t now = millis();
if (currentButtonState != lastButtonState && (now - lastStateChangeTime > DEBOUNCE_TIME)) {
lastButtonState = currentButtonState;
lastStateChangeTime = now;
if (currentButtonState) {
holdReported = false;
} else {
if (!holdReported) {
clickCount++;
}
}
}
// Определение удержания (HOLD)
if (currentButtonState && !holdReported && (now - lastStateChangeTime > HOLD_TIME)) {
clickEventToSend = 3; // Код удержания
holdReported = true;
clickCount = 0;
}
// Определение одиночного или двойного клика
if (!currentButtonState && clickCount > 0 && (now - lastStateChangeTime > DOUBLE_TIME)) {
if (clickCount == 1) {
clickEventToSend = 1; // Код одиночного клика
} else if (clickCount >= 2) {
clickEventToSend = 2; // Код двойного клика
}
clickCount = 0;
}
// Фоновая работа I2C слейва
TinyWireS_stop_check();
}
// Отправка данных Мастеру
void requestEvent() {
if (bufferIndex == 0) {
responseBuffer[0] = (encoderPosition >> 24) & 0xFF;
responseBuffer[1] = (encoderPosition >> 16) & 0xFF;
responseBuffer[2] = (encoderPosition >> 8) & 0xFF;
responseBuffer[3] = encoderPosition & 0xFF;
responseBuffer[4] = clickEventToSend; // Передаем код события
// Сбрасываем событие кнопки сразу после упаковки в буфер отправки
clickEventToSend = 0;
}
TinyWireS.write(responseBuffer[bufferIndex]);
bufferIndex++;
if (bufferIndex >= 5) {
bufferIndex = 0;
}
}





