Stromversorgung und Analogeingang bei ATTiny
hallo zusammen,
ich habe mein blinken zum bass programm soweit vervollständigt, und auf einem arduino funktionierte es. wenn in der musik bass, dann geht ein licht an. dazu habe ich ein mikrofon mit verstärker über einen tiefpassfilter auf den a0 gehängt. dann habe ich das ganze auf einem attiny auf dem breadboard aufgebaut, auch das funktionierte. dann habe ich das ganze auf eine kleine platine gelötet, und es funktionierte nicht. nach langem suchen fand ich heraus, dass es funktioniert, wenn ich das ganze mit meinen usb port rechner mit strom versoge, aber nicht, wenn ich es mit eine 5v usb akku versorge (dieser hier: http://www.amazon.de/externer-zusatzakku-ladeger%c3%a4t-smartphone-blackberry/dp/b00ixpp2cu/ref=sr_1_65?s=ce-de&ie=utf8&qid=1406236944&sr=1-65&keywords=usb+akku) per arduino funktioniert alles auch mit dem usb akku. attiny ist ein 100nf kondensator zwischen 5v und gnd. beim akku mit dem es nicht geht messe ich 0,1v mehr, ca. 5.2v. laut datenblatt kann der attiny bis 5,5v betrieben werden. laut oszilloskop schwanken sowohl mein usb port rechner als auch der akku minimal sinusförmig, aber beide gleich. sketc habe ich mal angehängt, ich vermute den fehler aber irgendwo in meiner hardware. hat jemand eine idee, warum mein licht nicht blinkt mit dem akku, aber mit dem usb port meines rechners?
ich habe mein blinken zum bass programm soweit vervollständigt, und auf einem arduino funktionierte es. wenn in der musik bass, dann geht ein licht an. dazu habe ich ein mikrofon mit verstärker über einen tiefpassfilter auf den a0 gehängt. dann habe ich das ganze auf einem attiny auf dem breadboard aufgebaut, auch das funktionierte. dann habe ich das ganze auf eine kleine platine gelötet, und es funktionierte nicht. nach langem suchen fand ich heraus, dass es funktioniert, wenn ich das ganze mit meinen usb port rechner mit strom versoge, aber nicht, wenn ich es mit eine 5v usb akku versorge (dieser hier: http://www.amazon.de/externer-zusatzakku-ladeger%c3%a4t-smartphone-blackberry/dp/b00ixpp2cu/ref=sr_1_65?s=ce-de&ie=utf8&qid=1406236944&sr=1-65&keywords=usb+akku) per arduino funktioniert alles auch mit dem usb akku. attiny ist ein 100nf kondensator zwischen 5v und gnd. beim akku mit dem es nicht geht messe ich 0,1v mehr, ca. 5.2v. laut datenblatt kann der attiny bis 5,5v betrieben werden. laut oszilloskop schwanken sowohl mein usb port rechner als auch der akku minimal sinusförmig, aber beide gleich. sketc habe ich mal angehängt, ich vermute den fehler aber irgendwo in meiner hardware. hat jemand eine idee, warum mein licht nicht blinkt mit dem akku, aber mit dem usb port meines rechners?
code: [select]
// variablendeklaration
int led = 1;
float nullpunkt = 500.0;
float messwert = 10.0;
float mittelmesswert = 10.0;
float bassmesswert = 10.0;
float bassschwellwert = 100.0;
long previousmillis = 0;
long previousmillis2 = 0;
// funktionen
float glaetten();
void setup() {
pinmode(led, output); // initialize digital pin output.
//serial.begin(9600);
}
void loop() {
// millis versorgen, für zeiten
unsigned long currentmillis = millis();
// analogread nur einmal anfang, danach kann man mit variable arbeiten
int sensval = analogread(1);
// ermittle nullpunkt durch expotentielle glättung
nullpunkt = glaetten(sensval, nullpunkt, 0.0001);
// Überführe messwerte in absolutierte werte
messwert = (float) abs(sensval - nullpunkt);
// ermittle mittleren messwert als lautstärke
mittelmesswert = glaetten(messwert, mittelmesswert, 0.001);
// aktuellen messwert leicht glätten
bassmesswert = glaetten(messwert, bassmesswert, 0.1);
// bassschwellwert ermitteln
bassschwellwert = mittelmesswert * 1.45;
// licht an
if (bassmesswert > bassschwellwert && mittelmesswert > 20){
digitalwrite(led, high);
previousmillis = currentmillis;
}
else{
// digitalwrite(led, low);
}
if(currentmillis - previousmillis > 20) {
digitalwrite(led, low);
}
//////////////////// test ausgabe ///////////////////////////////
// if(currentmillis - previousmillis2 > 2000) {
// previousmillis2 = currentmillis;
// serial.println(nullpunkt);
// serial.println(mittelmesswert);
// }
/////////////////////////////////////////////////////////////////
}
float glaetten(float wertaktuell, float wertalt, float faktor){
float tmp = wertaktuell * faktor;
tmp = (tmp +( wertalt * (1 - faktor) ) );
return tmp;
}
bild wäre hilfreich! evtl auch schaltplan
Arduino Forum > International > Deutsch (Moderator: uwefed) > Stromversorgung und Analogeingang bei ATTiny
arduino
Comments
Post a Comment