SDD39

Members
  • Публикации

    989
  • Зарегистрирован

  • Посещение

Репутация

148 Хороший

О SDD39

  • Звание
    Завсегдатай
  • День рождения 20.09.1969

Информация

  • Пол
    Мужчина
  • Город
    Almaty

Электроника

  • Стаж в электронике
    Более 20 лет

Посетители профиля

3 764 просмотра профиля
  1. После того , как я просчитал и написал программу на Си , для оптимального энергетического режима такого усилителя , решил всё таки собрать такой УНЧ хотя бы на картонке. То , что получилось можно посмотреть на моём канале. Пиковая выходная синусоидальная мощность около 1 Ватта. Что не плохо для макетки , учитывая крайне низкий КПД таких усилителей , менее 10% .
  2. Вопросы От Начинающих - 4

    Гипотетически, после хороших ударов током , и лет 50 комы , на свет может явиться великий учёный , и изобрести машину времени , или вечный двигатель, а вы пытаетесь этому помешать.
  3. @KomSoft Лучше с 4 вывода оптрона . Там напряжение изменяется от 9 Вольт до 3.3 Вольт. А ток резистора R1 меняется почти от нуля , до почти 6 мА.
  4. Электронная кнопка на одном оптроне. При токе более 4 мА оптрон , согласно характеристике , начинает усиливать ток. Это позволило собрать на его основе простой триггер , управляемый одной кнопкой.
  5. Синусоидальный генератор НЧ на КПЕ

    Для улучшения линейности полевика делается обратная связь из резистора со стока на затвор , а смещение на затвор подаётся через резистор с таким же сопротивлением. Но и сам усилитель должен симметрично усиливать обе полуволны. Тут даже важнее , чтоб усиление падало для обоих полуволн . Иначе стабилизация амплитуды становится весьма не устойчивой. Т.к. в ОУ второй каскад обычно выполнен по схеме с ОЭ , то данное условие практически не выполнимо .
  6. Синусоидальный генератор НЧ на КПЕ

    @ГОГА рижский КПЕ надо в экранированный корпус посадить. С ним он образует небольшую дополнительную ёмкость параллельную С2 . Надо такую же параллельную ёмкость в виде подстроечного конденсатора посадить параллельно С1 и отбалансировать мост на максимальной частоте. Я тоже начал собирать себе генератор на КПЕ ещё в прошлом году. Подкупает главным образом сбалансированность секций по ёмкости. Доступность кпе и их неубиваемость от постоянного вращения , в отличии от сдвоенных резисторов. Разработал схему на транзисторах . Даже печатку собрал, настроил и запустил. Он у меня дал стабильную амплитуду до 5 Мегагерц. Но потом забросил. Так и лежит . ,
  7. ArduinoUno и ЦАП PT8211

    Спасибо за совет . Но в следущей строчке sinus = ZER * sinus + ZER; , я вроде тоже самое делаю - добавляю смещение. И похоже , я уже понял в чём причина - старший бит ... инвертированный . Изменил строчку вот так in = ((unsigned int)sinus)^32768 ; и синус пошёл нормально , в полном диапазоне 16 бит. А размах стал около 2.5 Вольт.
  8. ArduinoUno и ЦАП PT8211

    Здравствуйте друзья. Изучаю программирование на Ардуино и пытаюсь подключить к нему различные микросхемки , которые попадают мне под руку. Вот и попалась мне ЦАП РТ8211 . Дешёвая микросхема , которую я снял с поломоного спутникового ресивера. Протокол работы с ней оказался не сложный по этому посидев несколько часов я написал програмку работы с ней. Принимает она по 16 бит на вывод DIN для двух каналов . Всего 32 бита получается. По переходу с 0 на 1 вывода BCK каждый бит прописывается в ячейках цап . Битов можно передавать и больше , но останутся только последние 16 , по переходу вывода WC. Изменение состояния этого вывода с 0 на 1 сохраняет в цап последние 16 битов для правого канала , а обратный для левого. Но с использованием старшего бита MSB связана какая то загадка . Вот пример какая синусоида получилась здесь http://arduino.ru/forum/obshchii/pt8211. У меня так же получилась нормальная пила и странная синусоида. Тогда я не стал использовать значения , затрагивающие старший бит , и синусоида вышла нормальная. С прямым вычислением синуса частота получилась 298 Герц. Не много конечно , но без вычислений синуса с пилой , частота на пине WS около 20 килогерц. Синусоида получилась размахом около 1.2 Вольт. // программа работы с ЦАП РТ8211 пины 1 - BCK , 2 - WS , 3 - DIN , 4 - GND , 5 - +5V , 6 - Left Out , 7 - nc , 8 - Rite Out #define Port PORTB // оределяем рабочий порт // определим назначение пинов этого порта // для ардуино #define BCK 8 // to pin 1 тактовый сигнал #define WS 9 // to pin 2 0 - правый канал , 1- левый канал #define DIN 10 // to pin 3 16 бит данных // для соответствующих пинов порта #define PORT_BCK B001 // тактовый сигнал #define PORT_WS B010 // 0 - правый канал , 1- левый канал #define PORT_DIN B100 // 16 бит данных #define Dt 5 // полупериод в мкс для BCK #define MAX 32768.0 //65535.0 используем меньшие значения не затрагивая старший 16 бит #define ZER 16384.0 //32768.0 #define pi_pi 6.2831853 #define st 0.340261 //volatile byte w =1 ; // micros() // возвращает количество микросекунд разрешение 4 микросекунды void setup() { // put your setup code here, to run once: pinMode ( BCK , 1 ); pinMode ( WS , 1 ); pinMode ( DIN , 1 ); pinMode ( 13 , 1 ) ; noInterrupts(); } void loop() { // put your main code here, to run repeatedly: unsigned int in , tt ; float r_ad ; double sinus ; boolean f = 0 ; for ( r_ad = 0 ; r_ad <= pi_pi ; r_ad += st) { // будем линейно увеличивать данные для ЦАП //tt = micros(); //while ( micros()-tt < 20); //digitalWrite(13, f); sinus = sin(r_ad); sinus = ZER * sinus + ZER; in = (unsigned int)sinus; BUS_Send (in) ; // отправим данные в ЦАП f = !f ; // моргаем 13 пином //interrupts(); } } void BUS_Send ( word Data_In ) { // volatile byte i ; byte Bus_Out , i = 0 ; word temp , sdvig = 32768 ; unsigned long Timer ; boolean D = 1 , flag = 1 ; Bus_Out = Port & ~(PORT_BCK + PORT_WS + PORT_DIN) ; //сбрасвываем линии while ( i <= 31 ) { //Передаём 16 бит в правый канал 31 и 16 нулей в левый if ( flag ) { // флаг правого левого канала //Bus_Out = Port & ~PORT_DIN ; if ( Data_In & sdvig ) { // определяем что передаём DIN , 0 или 1 Bus_Out |= PORT_DIN; // PORT_DIN * D ; // Выводим DIN } else Bus_Out &= ~PORT_DIN; sdvig >>= 1 ; // сдвигаем позицию следущего бита из Data_In } else Bus_Out &= ~PORT_DIN ; Port = Bus_Out ; //на этом моменте BCK = 0 , DIN установлен // sdvig >>= 1 ; // сдвигаем позицию следущего бита из Data_In Bus_Out |= PORT_BCK ; // подготавливаем переход BCK c 0 на 1 Port = Bus_Out ; // фиксируем бит DIN переходом BCK c 0 на 1 Bus_Out = (Bus_Out & ~PORT_BCK); // подготавливаем переход BCK с 1 на 0 if ( i == 15 ) { // формирование нулей для левого канала Bus_Out |= PORT_WS ;// подготовка строба записи правого канала WS flag = 0 ; } i++; Port = Bus_Out ; } Port = Port & ~PORT_WS; // строб записи левого канала WS } PT8211.rar
  9. Вопросы От Начинающих По Мк

    @Demonrostov Спасибо за ответ. Нет , телевизор я собирать не собираюсь.)) Наоборот . эту платку взял на работе после разборки уже ненужного телевизора и просто экспериментирую . Для меня важнее правильно ли я пишу код для ардуино , т.к делаю только первые шаги в изучении.
  10. Вопросы От Начинающих По Мк

    Сегодня смог запустить от Ардуинки I2C драйвер M62320 . Но не так как хотелось . Каждый раз приходится передавать два байта . В начале формировать выводы на выход а потом второй байт данных . Хотелось бы узнать , есть ли другие варианты работы с I2C шиной и этой микросхемой. Даташит во вложении. Лампочки горят с разной яркостью по тому что некоторые светодиоды подпорчены. #include <Wire.h> //Библиотека I2C // адрес 57 int ADR_DATA1 = 57 ; // Адрес первой М62320 int ADR_DATA2 = 58 ; // Адрес второй М62320 void setup() { // put your setup code here, to run once: Wire.begin (); // Инициируем I2C pinMode(13 , 1); } void loop() { boolean F = 0; byte i = 0 , i2 = 255 ; // Теперь будем передавать произвольные данные и зажигать различные светодиоды while (i++ <= 254) { Wire.beginTransmission (ADR_DATA1); // устанавливаем адрес общения для передачи данных Wire.write (255); // устанавливаем все порты М62320 на выход Wire.write (i); // передаём переменную i в порты М62320 Wire.endTransmission(); // Разрываем общение с M62320 Wire.beginTransmission (ADR_DATA2); // устанавливаем адрес общения для передачи данных Wire.write (255); // устанавливаем все порты М62320 на выход Wire.write (i2); // передаём переменную i2 в порты М62320 Wire.endTransmission(); // Разрываем общение с M62320 i2 -= 1; digitalWrite (13 , F); F = !F ; // мигаем 13 светодиодом delay(100); // 0.1 секунды задержки между передачами } //Wire.endTransmission(); // Разрываем общение с М62320 } M62320 LED Dryver.pdf
  11. Что будет, если порт +5В Arduino NANO подать 6-7В?

    Это повышающий преобразователь. На него надо подавать меньшее напряжение чем на выходе. С другой стороны если подать напряжение на его вход больше 5 вольт , то он выключится и на выходе будет напряжение меньшее на величину падения диода шотки , установленного в нём , где то на 0.3 Вольта. Но пишут , что при малой разнице перепада напряжений он может работать не устойчиво. А для двух были? Логичнее именно две батарейки использовать с таким преобразователем.
  12. Вопросы От Начинающих По Мк

    Классно. А то я хотел получить парафазный сигнал на выходе с максимальной частотой и при эмуляции в Протеусе заметил , что цикл void loop() возвращается слишком долго и сильно снижает частоту , но побоялся его обрезать.
  13. Вопросы От Начинающих По Мк

    @Alexeyslav Ясно. А не подскажите. Если я где нибудь в программе запущу бесконечный цикл типа while (1) {_________} ; Или даже так: noInterrupts(); while (1) {_________} ; Не приведёт ли это к потери возможности перезаписать Ардуинку другим скетчем?