SDD39

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

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

  • Посещение

Репутация

144 Хороший

О SDD39

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

Информация

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

Электроника

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

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

3 599 просмотров профиля
  1. Синусоидальный генератор НЧ на КПЕ

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

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

    Спасибо за совет . Но в следущей строчке sinus = ZER * sinus + ZER; , я вроде тоже самое делаю - добавляю смещение. И похоже , я уже понял в чём причина - старший бит ... инвертированный . Изменил строчку вот так in = ((unsigned int)sinus)^32768 ; и синус пошёл нормально , в полном диапазоне 16 бит. А размах стал около 2.5 Вольт.
  4. 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
  5. Вопросы От Начинающих По Мк

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

    Сегодня смог запустить от Ардуинки 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
  7. Что будет, если порт +5В Arduino NANO подать 6-7В?

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

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

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

    @Alexeyslav Спасибо за информацию. Проверил залив два немного отличающихся скетча. Нормально заливаются и работают. Но получается что я с чистого проца считал программатором прошивку и она находилась в начале , а не в конце. Но тут интересный момент.Первое же включение Ардуинки уно показало что она моргает 13 светодиодом , хотя я ни чего туда не заливал. А так же купил вчера ещё на барахолке ардуино нано , и она так же моргала 13 светодиодом , как будто ещё на заводе в них залит скетч Blink из ИДЕ.
  11. Вопросы От Начинающих По Мк

    Решил я свою задачу. Просто тупо считал из родной меги328р и прошивку и фьюзы. Прописал это на пустой процессор и всё заработалоНо прошивка отличается от ИДЕшной . В проце сидела заводская и код вней начинается в начале а потом одни FF . А в иде прошивка вначале ФФ и в конце самом код. Всем , кто хотя бы задумался над моим вопросом спасибо.
  12. Вопросы От Начинающих По Мк

    @snn_krs Спасибо! Нашёл там прошивку optiboot_atmega328.hex. Теперь чешу репу с фьюзами на программаторе TNM-5000. А можно ли из ИДЫ через этот программатор прошить? А то для этого программатора родная программа .... без поллитра там со фьюзами не разберёшься. И где можно взять правильные фьюзы?
  13. Вопросы От Начинающих По Мк

    Подскажите пожалуйста кто знает. Пару дней назад получил из китая стартовый набор Ардуино уно. Т.к. Во время изучения могут возникнуть сбои в работе Меги328Р, по этому хочу кутить ещё один процессор и прошить его. На работе стоит программатор TNM-5000. Процессор этот в нём есть. А вопрос вот в чём. Можно ли прямо снять прошивку и фьюзы из родного процессора и залить их в новый процессор.
  14. Пришёл на работу. Коллеги доели питцу. Картон от упаковки питцы стал основой для быстрого изготовления корпуса. Время - деньги.))