Автор Тема: Управление на усилвател.  (Прочетена 20992 пъти)

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« -: Януари 20, 2012, 12:46:58 am »
Започвам проект управление на усилвател с ардуино но имам едни въпроси как да използвам ШИМ сигнала за контрол силата на звука мислех си с транзистор да е като потенциометър но импулсите няма ли да се пречкат на аудио сигнала. Другия начин дето гледах е с мултиплексор ама там ще е голяма играчка.
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

CarBeta5

  • Вече знае какво е робот!
  • *****
  • Публикации: 81
    • Профил
Управление на усилвател.
« Отговор #1 -: Януари 20, 2012, 08:04:48 am »
Има си цифрови потенциометри за тая работа.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #2 -: Януари 20, 2012, 12:34:44 pm »
Какви са те ???? Може ли малко информация.
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

CarBeta5

  • Вече знае какво е робот!
  • *****
  • Публикации: 81
    • Профил
Управление на усилвател.
« Отговор #3 -: Януари 21, 2012, 12:07:34 pm »
MCP42010 например. Двуканален 10к.

п.п.
Ти гугъл нямаш ли??

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #4 -: Февруари 01, 2012, 10:45:47 am »
ще го правя с 4067 мултиплексор но като експериментирах с кода за rotary encoder контролера се бъгна нещо и сега не е адекватен. Като цъкна бутона ресет вместо пин13 да смига диода, смига диода на TX командите и нищо не може да се качи. какво да правя ???
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

AA

  • Робо-Новак
  • *****
  • Публикации: 28
    • Профил
Управление на усилвател.
« Отговор #5 -: Февруари 01, 2012, 06:40:10 pm »
Най-директния начин е да се изтрие процесора и да се програмира наново bootloadera. Изтриването - с подходящ програматор. Програмирането - също. Най-вероятно ще стане през ICSP.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #6 -: Февруари 01, 2012, 10:39:42 pm »
Имам още един контролер с зареден боотлоадер и мога ли чрез него да кача боотлоадера на "повредения" контролер по този начин http://arduino.cc/en/Tutorial/ArduinoISP  но дали ще стани.
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #7 -: Февруари 03, 2012, 12:45:38 pm »
Опитах да го кача с Arduino но като цъкна Burn и ми дава грешка:

avrdude: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51


предварително съм качил ArduinoISP
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

AA

  • Робо-Новак
  • *****
  • Публикации: 28
    • Профил
Управление на усилвател.
« Отговор #8 -: Февруари 03, 2012, 03:20:52 pm »
Мисля, че нещата ще се получат по-безпроблемно ако ползуваш програматор за конкретния процесор. Какъв всъщност е процесора на платката?

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #9 -: Февруари 03, 2012, 05:27:00 pm »
Цитат на: "AA"
Мисля, че нещата ще се получат по-безпроблемно ако ползуваш програматор за конкретния процесор. Какъв всъщност е процесора на платката?


Чакай че нещо аз ли не мога да обясня или да те разбера...
Имам Arduino serial и 2 контролера Atmega8-16PU и двата са с заредени bootloader-а но единия се повреди. Сложил съм работещия контролер на платката Arduino а другия на breadboard и съм го свързал по схема дадена в сайта на Arduino за ISP комуникация. Вкарал съм на работещия контролер Examples ArduinoISP и след това цъкам на Burn и ми дава грешка:

avrdude: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

И сега какво да правя?
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

AA

  • Робо-Новак
  • *****
  • Публикации: 28
    • Профил
Управление на усилвател.
« Отговор #10 -: Февруари 04, 2012, 07:25:22 am »
Разбираме се, ама всеки си мисли своето и си говори за него. В линка http://arduino.cc/en/Tutorial/ArduinoISP почти най-горе пише че ARDUINO UNO не може да се ползува защото bootloadera е неподходящ - поне аз така го разбирам. Не се задълбочавах особено но мисля, че това вероятно е в основата на проблема - може и да греша разбира се - по препратките по нататък пише за забрана на bootloader и т.н. - не ми достигна търпение да вниквам в подробностите.
  Предлагам ти начин който при мене свърши работа. Направи си PONYPROG - http://www.lancos.com/siprogsch.html - Base board и AVR adapter. Прочети си процесора с изправен bootloader. Изтрий процесора с повреден bootloader. Запиши върху изтрития процесор файла, прочетен от процесора с изправен bootloader, като спазиш FUSES и всичко ще се оправи. Ако си запазиш файла, прочетен с PONY  като *e2p файл, FUSES ще се заредят с файла.
   Като изтриеш процесора може да програмираш bootloadera и посредством Arduino IDE - http://robocraft.ru/blog/arduino/50.html - както си прецениш.
   Разбира се можеш да си направиш и друг програматор, който смяташ че е по лесен за направа и по-подходящ за Atmega8 - важното е да изтриеш процесора - с какъв програматор ще го направиш не е съществено - в ТУ Габрово все ще се намери подходящ. Успех!
  Е може да купиш и нов Atmega8 и да програмираш bootloader посредством Arduino IDE - може и да стане най-бързо.

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #11 -: Февруари 04, 2012, 02:51:00 pm »
Да живее ponyprog  :clap: .
Първо се опитах да изтрия повредения контролер но после arduino не иска да му вкара bootloader-а. Но като копирах работещия контролер и сложих на повредения всичко се оправи. Благодаря ти много.
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI

ka4a4e

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
    • http://google.bg
Управление на усилвател.
« Отговор #12 -: Февруари 13, 2012, 12:44:12 am »
Има ли някой в форума който може да помогне за управление на ротационен енкодер. Намерих една много добра програма но не ми върши работа като я сложа на аналоговите пинове (тъй като вече съм си проектирал и направил платката) пиновете ще са на А4 и А5.
Ето и самата програма./*
Rotary encoder decoding using two interrupt lines.
Most Arduino boards have two external interrupts,
numbers 0 (on digital pin 2) and 1 (on digital pin 3).
 
Program sketch is for SparkFun Rotary Encoder sku: COM-09117
Connect the middle pin of the three to ground.
The outside two pins of the three are connected to
digital pins 2 and 3
*/
 
 
volatile int number = 0;                // Testnumber, print it when it changes value,
                                        // used in loop and both interrupt routines
int oldnumber = number;
 
volatile boolean halfleft = false;      // Used in both interrupt routines
volatile boolean halfright = false;
 
 
void setup(){
  Serial.begin(9600);
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);                // Turn on internal pullup resistor
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);                // Turn on internal pullup resistor
  attachInterrupt(0, isr_2, FALLING);   // Call isr_2 when digital pin 2 goes LOW
  attachInterrupt(1, isr_3, FALLING);   // Call isr_3 when digital pin 3 goes LOW
}
 
void loop(){
  if(number != oldnumber){              // Change in value ?
    Serial.println(number);             // Yes, print it (or whatever)
    oldnumber = number;
  }
}
 
void isr_2(){                                              // Pin2 went LOW
  delay(1);                                                // Debounce time
  if(digitalRead(2) == LOW){                               // Pin2 still LOW ?
    if(digitalRead(3) == HIGH && halfright == false){      // -->
      halfright = true;                                    // One half click clockwise
    }  
    if(digitalRead(3) == LOW && halfleft == true){         // <--
      halfleft = false;                                    // One whole click counter-
      number--;                                            // clockwise
    }
  }
}
void isr_3(){                                             // Pin3 went LOW
  delay(1);                                               // Debounce time
  if(digitalRead(3) == LOW){                              // Pin3 still LOW ?
    if(digitalRead(2) == HIGH && halfleft == false){      // <--
      halfleft = true;                                    // One half  click counter-
    }                                                     // clockwise
    if(digitalRead(2) == LOW && halfright == true){       // -->
      halfright = false;                                  // One whole click clockwise
      number++;
    }
  }
}
Деян Георгиев на 20г. от град Любимец област Хасковска студент в ТУ Габрово спец. Е курс ІI