- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 14

Thema: Problem: Pulsstrom bei AVR (ATmega328) Unterschied zu Arduino?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2013
    Beiträge
    6

    Problem: Pulsstrom bei AVR (ATmega328) Unterschied zu Arduino?

    Hallo,

    ich bin bei meinem aktuellen Projekt auf ein Problem gestoßen, trotz einiger Stunden des ausprobierens komme ich auf keine Lösung und möchte euch um eure Hilfe bitten:


    Das Projekt:
    Für einen Wohnzimmertisch sollen mehrere "interaktive" Licht-Module verbaut werden, die die Bewegung einer Hand usw. erkennen und entsprechend LEDs faden. Jedes Modul besteht aus 1 x ATmega368 und 6 IR/LED-Pixeln

    Prinzip: der Controller schaltet einen Transistor, der einen hohen Strom durch 3 IR-Dioden schickt. Ein Fototransistor misst die (IR) Helligkeit, über einen Spannungsteiler bekomt der Controller einen entsprechenden analogwert.
    Nun schaltet der Transistor die IR-Dioden aus, der µC misst erneut die Spannung am Fototransistor und vergleicht sie mit der vorherigen.
    Besteht eine Differenz wird sie in einen pwm-Wert umgerechnet und an eine LED ausgegeben.

    Ich habe den gesammten Aufbau mit einem Arduino getestet, alles funktionierte einwandfrei.

    Aus Kostengründen wollte ich in meinen Wohnzimmertisch nicht 10 Arduinos verbauen, deshalb entschied ich mich für einen standalone-ATmega328, den ich (weil ich damit leichter arbeiten kann) einen 8Mhz-Arduino bootloader verpasste. Der µC nutzt seinen internen Oszillator, an ihm sind keine externen Komponenten verbaut.


    Das Problem:
    Wenn ich in der Standalone-Version die IR-LEDs wie vorher beim Arduino verschalte, dann macht der ATmega nichts mehr.
    Schaltung: Transistor (2N3904) C an +5V, B über 220Ohm an µC, E an drei parallele IR-LEDs (TSHA5202), die über 1 Ohm an GND.
    Diese Version macht beim Arduino keine Probleme.
    Durch die IR-Dioden fließt ein Stom von je etwa 1 A, laut Datenblatt können die das für 1ms ab.

    Tausche ich diese Konfiguration an den stand-alone ATmega, dann reagiert die LED nicht mehr auf Annäherung.
    Setze ich in den IR-Kreis hinter die Dioden einen 330 Ohm Widerstand ein, dann funktioniert alles wunderbar, nur dass eben die Reichweite durch die
    geringere IR-Helligkeit extrem leidet.
    Schließe ich diesen R während des Betriebs kurz (als wäre er nicht da), dann "friert" der µC ein, d.h. wenn die gefadete LED leuchtete dann behält sie diese Helligkeit bei, verändert sie aber nicht mehr.
    Unterbinde ich diesen Kurzschluss, dann gehts normal weiter, ohne dass ein Reset nötig wäre.

    Ich verwende eine externe Spannungsquelle mit Elko, der Stomstoß sollte kein Problem machen.
    Und ich möchte nochmal betonen, dass ich NICHT versuche 3 A durch den ATmega zu jagen, der dient nur als I/O-Geber für den Transistor.


    Wisst ihr woran es liegen könnte? Im Prinzip müsste die Lösung durch einen Vergleich mit dem Arduino Uno ersichtlich sein, denn dort funtioniert es ja. Wie gesagt, µC und Code sind gleich.
    Einfach einen Widerstand akzeptieren fällt aus, da die Reichweite sehr leidet.



    Anbei die Quellen, aus denen das Projekt entstanden ist:
    Prinzip:
    http://www.instructables.com/id/Make-an-Attiny13-b...
    http://www.instructables.com/id/Infrared-Proximity...
    ATmega328 Standalone
    http://www.instructables.com/file/FP6AIB0H0OIZC72

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo Jannai,

    ich denke schon, dass der hohe Strom den µC aus dem Takt bringt. Hast du 100nF Block-Kondensatoren parallel zur Spannungsversorgung direkt am µC mit kürzestem Weg verbaut?
    Wenn das schon so ist oder nicht hilft würde ich testweise probieren den µC mit einer anderen Spannungsquelle zu versorgen. z.B. ein 9V-Block mit einem 7805 nur für den µC. Die Massen der beiden Spannungsquellen dann natürlich verbinden.

    Viele Grüße
    Andreas

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2013
    Beiträge
    6
    Hey,

    danke für die schnelle Antwort!
    Ich hatte leider gerade keine Kondensatoren in diesem Bereich zur Hand, also habe ich mal die zweite Spannungsquelle ausprobiert. ES FUNKTIONIERT!

    Eigentlich ja ein echt blöder Anfängerfehler, man sehe mir meine fehlende Bildung in Etechnik nach.
    Wollte ich eine gemeinsame Spannungsquelle nutzen, welchen Kondensatorwert sollte ich wählen? Die besagten 100nF oder eine Kombination verschiedener?

    Und noch eine Frage: mir ist erst nach dem Erhalt der Transistoren aufgefallen, dass der verwendete Transistor (2N3904) laut Datenblatt nur für einen Dauerstrom von 200mA ausgelegt ist. Schadet es ihm mit der Zeit, wenn ich ihn so hoch pulse? (ca. 2-3 A für 50µs)?

    vielen Dank für die Hilfe,
    Jannai


    edit: wie füge ich denn nachträglich dieses "[gelöst]" suffix ein?
    Geändert von Jannai (04.01.2013 um 22:10 Uhr)

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo Jannai,

    ich verwende immer 100nF und hatte noch nie Probleme. Allerdings hatte ich auch noch nie so hohen Pulsströme wie du. Ausprobieren würde ich sagen! Mehr kann man dir nicht raten, da du nicht geschrieben hast wie die "externe Spannungsquelle mit Elko" genau aussieht.

    Der Dauerstrom für den Transistor ist bestimmt wegen der Erwärmung angegeben. (Ich habe mir das Datenblatt jetzt nicht angesehen). Zu den Spitzen-Strömen sollte aber auch etwas drin stehen. Aber solange nichts warm wird würde ich mir keine Sorgen machen.

    Viele Grüße
    Andreas

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2013
    Beiträge
    6
    Gut, die Kondensatoren müssten Montag kommen.
    Die Transistoren schalten wohl doch eher nur ca. 1 A, ich habe bei meiner blauäugigen Rechnung vergessen dass natürlich auch der Basisstrom deutlich ansteigt. So oder so: warm werden sie nicht.

    Danke und beste Grüße,
    Jannai

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2013
    Beiträge
    6
    UPDATE

    So, ich habe ein bisschen weitergelötet und bin derweil ein gutes Stück weiter gekommen und bei einem weiteren Problem gelandet. Die einzelnen Module funktionieren mit dem 100nF - Kondensator einwandfrei, hier ein Eindruck davon:
    http://www.youtube.com/watch?v=AbrhO0wr51A

    Das neue Problem besteht darin, dass die einzelnen Module (1 ATmega mit 6 Pixeln) ganz eigenartige Dinge machen wenn ich sie verbinde.
    Wenn zwei Module, die einzeln wunderbar funktionieren parallel an die Spannungsquelle angeschlossen werden, dann passiert folgendes:
    Alle Pixel leuchten von Anfang an, jedes mit einer anderen Helligkeit, teilweise flackern/blinken sie.
    Die Annäherung einer Hand wird weiterhin detektiert, allerdings mit stark verminderter Reichweite. Vergleiche folgendes Video:
    http://www.youtube.com/watch?v=2KBWKq_3Txs (Minute 1:50)

    Nach einem Reset der Controller zeigt sich das gleiche Bild. Ich habe auch ein stärkeres Netzteil als im Video (5A Nennstrom) getestet, gleiches Ergebnis.
    Die ATmega sind auf der Platine fast "nackt" verbaut, einzig ein 100 uF Elko und einen 100nF Keramik-Kondensator (2 mm vom Controller) sind zwischen Vcc und GND eingesetzt.

    Meine Theorie:
    Wenn im Programm das Setup anläuft sind die Controller ja noch voll im Takt. Durch das gleichzeitige Durchschalten der Transistoren fällt die Spannung ein Stück ab, die Referenz-Spannungsdifferenz "diff0", fällt dadurch zu gering aus, wodurch die im Loop berechneten Differenzen zu groß ausfallen, also die LEDs heller leuchten als sie sollten. Das flackern ließe sich mit der normalen Variation der Werte im Betrieb erklären, die jetzt auffallen weil der Buffer (Code Zeile 40 "-5") schon ausgeschöpft ist.

    Was meint ihr, klingt das logisch, oder gibt es einen ganz anderen Grund für dieses Verhalten?
    Falls ich recht habe: wie gehe ich am besten damit um? Soll ich die Controller im Setup durch irgendwelche Spielereien (klassisches Delay * Zufallswert) dazu bringen nacheinander den inertialen Spannungswert einzulesen?
    Oder ist es klüger einen Kondensator/Induktivität einzufügen um die Module zu entkoppeln? Wenn ja wäre das klasse, denn die Controller sind schon programmiert
    Dafür welches Bauteil wo einbauen?

    Mir fehlt dahingehend als Maschinenbauer (beschämender Weise) einfach das Grundwissen in dem Bereich. Um so mehr interessiert mich natürlich warum sich die Module so verhalten und wie sich eine Lösung darstellt.

    Vielen Dank für die Hilfe!
    Jannai

    Code (gerne weiterverbreiten, ich erhebe keine Urheberansprüche)
    https://dl.dropbox.com/u/59379713/IR...Code_final.ino

Ähnliche Themen

  1. SainSmart uno r3-atmega328
    Von Droggelbecher im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 18
    Letzter Beitrag: 04.01.2013, 12:57
  2. Schreib Problem bei AVR-DOS
    Von Robo19 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 06.04.2009, 21:55
  3. Unterschied AVR MC zu AT89S8252 MC
    Von mkRE im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 04.01.2006, 17:24
  4. Problem bei Bascom AVR
    Von Moritz f. im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.10.2005, 19:20
  5. Unterschied bei Spannungswandlern
    Von A.T.I.R im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 12.06.2005, 11:11

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen