Hallo liebe Community! Ich habe ein kleines Problem mit meinem ATtiny85 (mit Arduino IDE): 1.) Den ATtiny versorge ich mit 5V und an Pin 6 hängt eine LED. Ein einfacher Blink-Sketch läuft ohne Probleme: Die LED geht an und aus, genauso wie sie soll. 2.) Jetzt soll die LED erst leuchten, wenn es dunkel ist. Daher habe ich einen Fotowiderstand auf einen analogen Inputpin gelegt (Pin 2 am ATtiny). Pin5 bekommt 5V als Versorgungsspannung/Referenzspannung für die analogen Inputs. 3.) Das Programm läuft genau so wie es laufen soll: Ist es dunkel geht der digitale Pin auf HIGH. ABER: Die LED leuchtet nur sehr schwach... Der µC treibt auf einmal kaum noch einen Strom?!? Damit die LED leuchtet musste ich einen npn-Transistor als Verstärker zwischenschalten... Bisher habe ich keine Erklärung auf dieses Phänomen und im Internet finde ich dazu auch nichts Ist das normal oder habe ich etwas übersehen?
Sven Fießer schrieb: > habe ich etwas übersehen? Der Transistor hätte gerne einen Basiswiderstand und die LED einen Vorwiderstand. Zeig mal deinen Quellcode.
In diesem Fall kannst du die LED auch mit einem 180-330 Ohm Vorwiderstand direkt an den MC hängen, wenns eine rote, grüne oder gelbe ist.
Sven Fießer schrieb: > ABER: Die LED leuchtet nur sehr schwach... Erstens: 1) Du benutz eine Arduino IDE um den zu programmieren 2) Eine LED braucht keinen Transistor zu Ansteuerung 3) Da fehlen die Widerstände -> Korrigieren! LED an Pin, davor 560 Ohm oder so. 4) Von rechts wegen gehört an den LDR eigentlich auch noch ein C zur Glättung und Pufferung, da Analogeingänge nicht 1Meg haben sondern ca 100kOhm. 5) Wozu braucht Pin 5 eine Referenzspannung/Versorungsspannung? Weg damit. Dann wir es wohl daran liegen, dass Du den LED Ausgang mit einem "analogen Befehl gesetzt hast". Das kenne ich nämlich, dann glimmen die LED nur so an den Analogpins. Denk dran, dass Digitalpins mit nur der Nummer angesteuert werden, Analog Pins mit einem "A". Und falls Du diese Library für die Attinys aus dem Netz benutzt... die sind nicht unbedingt Fehlerfrei. Die für den Atmega1284 musste ich auch erst pinmässig korrigieren, weil der die "A" Pins einfach vergessen hatte. Tip: Lass den Arduinokram bei sowas einfachem weg.
Hallo, da ist auch noch mehr im Argen, RESET mit Pullup, Vcc - GND 100nF. Warum ist PB0 beschaltet ? Schau mal ins Datenblatt des Tins85, da findet man auch die passenden ADC Referenzwerte.
Reset braucht keinen PU. Reset kann man weg-fusen bei diesen Winzlingen. Guckst du hier: http://fc04.deviantart.net/fs70/f/2013/038/3/7/attiny_web_by_pighixxx-d5u4aur.png
Hallo, 1.) Vorwiderstand und Basiswiderstand habe ich getrost weggelassen. So funktioniert es wie es soll (auch wenn es nicht richtig ist). 2.) PullUp braucht man für den tiny nicht. Schrieb auch hobel bereits. 3.) Aref wird auch benötigt (an PB0). Siehe Kommentar "Runaway Pancake": http://forum.arduino.cc/index.php?topic=90297.0 4.) Lege ich die LED direkt an den digitalen Pin (OHNE analog in) leuchtet die LED wunderbar. Schalte ich den analogen Pin dazu, glimmt die LED nur noch ganz leicht. Deshalb die Transistorstufe. 5.) Mein Code: int var; int licht; void setup() { pinMode(1, OUTPUT); pinMode(4, INPUT); } void loop() { licht = analogRead(3); var = digitalRead(4); if (var != 0 && licht > 500) { digitalWrite(1, HIGH); delay(5000); } else { digitalWrite(1, LOW); } }
Sven Fießer schrieb: > 1.) Vorwiderstand und Basiswiderstand habe ich getrost weggelassen. So > funktioniert es wie es soll (auch wenn es nicht richtig ist). Kann ich auch bei Arduino mitmachen :)
Jo, soll er mal getrost weitermachen.... Warum hast du denn dem Fotowiderstand einen Vorwiderstand gegönnt? Den kann man auch getrost weglassen. Überhaupt sind Widerstände völlig sinnlose Bauteile, braucht kein Mensch.
Sven Fießer schrieb: > var = digitalRead(4); > > if (var != 0 && In deinem Schaltplan oben ist PB4 unbeschaltet. Damit wäre var potenziell zufällig und dein if mal erfüllt und mal nicht. Sven Fießer schrieb: > 1.) Vorwiderstand und Basiswiderstand habe ich getrost weggelassen. So > funktioniert es wie es soll (auch wenn es nicht richtig ist). Vorwiderstand kann man eventuell weglassen, aber vielleicht hat es ja einen Grund, dass jeder so ein Ding empfielt. Würde mich stutzig machen ;-) Den Basiswiderstand kannst du nicht weglassen
Danke für diese große Hilfe. Auf dumme Kommentare kann ich auch verzichten
Daniel S. schrieb: > Sven Fießer schrieb: >> var = digitalRead(4); >> >> if (var != 0 && > > In deinem Schaltplan oben ist PB4 unbeschaltet. Damit wäre var > potenziell zufällig und dein if mal erfüllt und mal nicht. > PB4 ist bei mir beschalten. Habe ich nur in diesem Bild weggelassen. > > Sven Fießer schrieb: >> 1.) Vorwiderstand und Basiswiderstand habe ich getrost weggelassen. So >> funktioniert es wie es soll (auch wenn es nicht richtig ist). > > Vorwiderstand kann man eventuell weglassen, aber vielleicht hat es ja > einen Grund, dass jeder so ein Ding empfielt. Würde mich stutzig machen > ;-) > Den Basiswiderstand kannst du nicht weglassen Ist der analoge Pin dazugeschalten, treibt der digitale Ausgang sehr kleine Ströme. Nicht einmal 15mA! Daher glimmt auch nur die LED, wenn ich sie direkt an den Pin hänge. Daher ist auch kein Basiswiderstand vorhanden. Den Vorwiderstand habe ich nur aus Einfachkeit weggelassen. Ich versorge die Schaltung mit einer Batterie, die kaum Strom liefert, daher ist auch die LED bisher abgeraucht. Aber das einzige, das ich bisher lese ist, dass die Widerstände fehlen. Das ist hier vollkommen irrelevant für mein Problem. Der digitale Ausgang soll, wenn der analoge Eingang dazugeschalten ist, funktionieren als wäre kein analoger Eingang dabei.
Hi >Aber das einzige, das ich bisher lese ist, dass die Widerstände fehlen. >Das ist hier vollkommen irrelevant für mein Problem. Wenn alles hier gesagte angeblich irrelevant ist, warum funktioniert dein Scheiß dann nicht richtig? MfG Spess
spess53 schrieb: > Hi > >>Aber das einzige, das ich bisher lese ist, dass die Widerstände fehlen. >>Das ist hier vollkommen irrelevant für mein Problem. > > Wenn alles hier gesagte angeblich irrelevant ist, warum funktioniert > dein Scheiß dann nicht richtig? > > MfG Spess Der Transistor ist NICHT mein Problem. Nochmal von vorne. Die Schaltung: NUR Vcc/GND und die LED (direkt am digitalen Ausgang) hängen an dem µC: Die LED leuchtet genau so wie sie soll. Nun kommt der analoge Eingang dazu (mit Vref): Jetzt glimmt die LED nurnoch, da der µC nur einen sehr kleinen Strom treibt. DAS ist mein Problem. Das mit dem Transistor war nur eine Notlösung (nicht relevant).
Max Mustermann schrieb im Beitrag #4138503: > Sven F. schrieb: >> das einzige, das ich bisher lese ist, dass die Widerstände fehlen. >> Das ist hier vollkommen irrelevant für mein Problem. > > Wenn du sogenau weist was für DEIN PROBLEM relevant ist, warum must du > dann hier fragen? > > Solche Spinner mit einem unvollständigen Schaltplan, ohne Code und ohne > Bild von ihrer verbratenen Schaltung schlagen hier min. einer am Tag > auf. Der Schaltplan ist für die Problembeschreibung vollständig. Der Code funktioniert, da das selbe Programm auf dem Arduino Uno ohne Probleme läuft. Nur der Umzug auf den ATtiny will nicht richtig funktionieren (die Pins sind richtig deklariert und auch richtig beschalten).
:
Bearbeitet durch User
Ich trau es mich ja nicht zu sagen: Es fehlt noch Abblockkondensator. Ich kann keine Hysterese im Code erkennen. Mit den Batterien und starkem Strom durch den Transistor beim Schalten (ich blick nicht durch, ob der Basiswiderstand nu drin ist und nur auf dem Plan fehlt) fängt doch da bestimmt was an zu schwingen ... ?
Sven F. schrieb: > Daher ist auch kein Basiswiderstand > vorhanden. > > Den Vorwiderstand habe ich nur aus Einfachkeit weggelassen. Hast Du eigentlich gelesen, was ich geschrieben habe? Aufmerksam, was der alte Knacker so schreibt? Ich habe das mal eben mit dem Attiny84 zusammen gesteckt ... läuft einwandfrei mit meinem 5-Zeiler. Aber wenn du alles besser weisst, dann komm auch selbst drauf, warum das bei dir nicht läuft. Ich brauche übrigens kein Vcc an Aref, da kommt was anderes dran. >>Nun kommt der analoge Eingang dazu (mit Vref): Jetzt glimmt die LED >>nurnoch, da der µC nur einen sehr kleinen Strom treibt. Jo, ist mir klar warum das so ist... >>Der Code funktioniert, da das selbe Programm auf dem Arduino Uno ohne >>Probleme läuft. Dann guck dir mal den Schaltplan, was da anders ist .... und der Uno bedient sich der eigenen Libraries, der Attiny85 aber hat "selbstgestrickte", die keinesfalls fehlerfrei sind, wie man an den Kommentaren im Quellcode lesen kann. >>licht = analogRead(3); Da würd ich mal drüber nachdenken ..... das ist nämlich falsch. Und wenn man sich mal die Implementierung von analogRead anschaut, dann sieht man auch warum. Klar, dass die glimmt, ich würde auch glimmen, wenn ich hundertausend Mal die Sekunde eines vor den Kopf bekommen würde.
Christian J. schrieb: > >>>Nun kommt der analoge Eingang dazu (mit Vref): Jetzt glimmt die LED >>>nurnoch, da der µC nur einen sehr kleinen Strom treibt. > > Jo, ist mir klar warum das so ist... > > >>>licht = analogRead(3); > > Da würd ich mal drüber nachdenken ..... das ist nämlich falsch. Und wenn > man sich mal die Implementierung von analogRead anschaut, dann sieht man > auch warum. Klar, dass die glimmt, ich würde auch glimmen, wenn ich > hundertausend Mal die Sekunde eines vor den Kopf bekommen würde. Danke. Das Problem ist gelöst. Habe eben die Schalutung neu aufgebaut (ohne Vref) und es funktioniert wie es soll. Da habe ich im Arduino Forrum anscheinend Stuss gelesen. licht = analogRead(3); ist doch richtig? Er macht was er soll?
licht = analogRead(A3); Das "A" nicht vergessen !!!!! analogRead ist ein Macro, dass erst die Pins umschlüsselt. Und A3 ist was anderes als D3. Siehe Bild was ich gepostet habe. Arduino hat da seine eigene Logik.
spess53 schrieb: >>Aber das einzige, das ich bisher lese ist, dass die Widerstände fehlen. >>Das ist hier vollkommen irrelevant für mein Problem. > > Wenn alles hier gesagte angeblich irrelevant ist, warum funktioniert > dein Scheiß dann nicht richtig? YMMD :-D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.