MyAVR (ATMega8)

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von Denny.

    also ich kann über den portc eine spannung in einen digitalen wert umwandeln (analog-digital-wandler)
    das ist dann ein wert zwischen 0 und 1023

    ich weiß aber nicht, ob ich eine bestimmte spannung ausgeben kann...

    EDIT:
    ich wollte sozusagen einen "weichen blinker" programmieren

    EDIT2:
    ich habe diesen bausatz
    AD-Wandler und DA-Wandler sind 2 komplett unterschiedliche Dinge ;)

    Mit Analogen Werten kommt man bei LEDs nicht sonderlich weit, weil die Kennlinie ziemlich doof aussieht. Du hast nur relativ wenig spielraum.
    Guck am Besten mal nach, ob der Controller PWN kann. Damit kannst du dir nen DA-Wandler selbst bauen, oder die LED einfach Blinken lassen (schnelles Blinken ist unsichtbar, je nach An/Aus-Verhältnis kannst du damit eine Helligkeit einstellen).
    Dann gäbe es noch die Möglichkeit selbst ein PWM (mit einer Schleife) zu schreiben, oder einfach eine große Kapazität über einen Widerstand aufzuladen.

    Sobald du eine Kapazität einbaust, musst du auf den Widerstand achten, da du sonst den Controller abfackelst (ungeladener Kondensator = kurzschluss!)

    EDIT: Datenblatt gibts hier.

    EDIT2: Jop, hat PWM am Port B3. Was hängt da im Moment dran?
    Also laut Datenblatt hat er nur 6 ADC Eingänge (Analog->Digital) aber keine DAC Ausgänge (Digital->Analog).
    Dann musst du wohl ein extra Baustein dafür nehmen. Digital Analog Wandler sind relativ einfach aufzubauen. 1 IC, 1 Referenz das reicht schon. Aber du musst halt 8 Ausgänge deines Atmegas zur Ansteuerung des DA's spendieren.

    Edit: Über PWM ist sowas natürlich noch besser zu realisieren, wobei ichs eher über ein Kondensator machen würde, anstatt durch die schnelle Frequenz, das Flackern sieht man doch irgendwann.
    Weiß auch wie den dann ansteuern musst? Also nur Kondensator dranhängen bringt nicht viel ne ^^ du musst das natürlich auch durch die Software dann handeln. Du hast z.b. die LED + Vorwiderstand, mit der größe des Kondensators kannst dir ausrechnen wie schnell er "leergesagt ist" dementsprechende Pulse musst du aus dem Atmega rausgeben um den Kondensator wieder aufzuladen.

    Im angehängten Bild habe ich das mal schematisch dargestellt. Rot = Puls aus dem Atmega, Grün = Spannung über den Kondensator und Blau = der Effektivwert.

    Musst dir dann halt ausrechnen bei einem Puls von z.B. 20ms länge über einen Widerstand von R=x an den Kondensator C=y wieviel Spannung er in dieser Zeit aufnehmen kann.
    Bilder
    • bild.JPG

      4,54 kB, 235×177, 271 mal angesehen
    ich wollte 10 leds einzeln ansteuern
    dafür brauch ich logischerweise 10 ports

    dann bleiben noch 8
    ich wollte da noch taster oder so anschließen, um die binktart oder die blinkgeschwindigkeit zu verändern
    ich lad demnächst en paar bilder hoch

    EDIT:
    jo mal sehen
    ich hab noch en paar andere fragen
    ich komm gleich wieder
    Nein, braucht man nicht. Wenn die DA-Wandlung nicht sonderlich genau und sauber sein muss, nimmt man PWM, einen Widerstand und einen Kondensator. Angenommen, dass die Kapazität unbelastet ist, lädt und entlädt sich der Kondensator mit dem Tastverhältnis des PWM-Signals. Z.B. PWM zwischen 0V und 5V mit 0,5 Tastverhältnis -> Uaus = (5V - 0V)/2 = 2.5V (siehe 1. Screenshot). Der Widerstand muss so dimensioniert sein, dass der Controller bei einer leeren Kapazität nicht abbrennt (z.B. bei ATMEL 20mA üblich).


    Problematisch wird das Verfahren, wenn man das RC-Glied zu stark belastet (siehe 2. Screenshot). Der Endwert stimmt dann einfach nicht. Durch einen Pufferverstärker (OPV) könnte man das Problem lösen, jedoch soll der ganze Spaß vermutlich auf die myAVR-Platine passen :(


    Nun kommen wir zur realisierbarsten Lösung:
    Du lässt mit dem PWM-Tastverhältnis direkt die LED mit > 25 FPS aufblitzen. Das menschliche Auge mittelt die Helligkeit dann etwa (stimmt nicht ganz), wodurch du durch ändern des An/Aus-Verhältnisses auch einen Helligkeitsverlauf erzeugen kannst. Das geht (falls der PWM-Pin frei ist), indem du das Tastverhältnis der PWM mit einer Schleife erhöhst.

    EDIT: der Controller hat mit sicherheit keine 10 PWM-Pins!

    EDIT2: du kannst ein PWM-artiges Signal auch direkt im Quelltext, ohne Timer realisieren. So könntest du versuchen alle 10 Pins unter einen Hut zu bringen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    ja gut sonst lass ich das mit dem weichen blinken
    es geht um dieses projekt:

    rechte seite:

    (die neonlampe werde ich wegen dem zu hohen stromverbrauch nicht am avr anschließen)

    ich hab noch ein paar fragen:
    1)
    ich wollte parallel zu allem ein paar z-dioden in reihe schalten, sodass die maximale spannung 12v beträgt. (überspannungsschutz)
    geht das??

    2)
    die versorgung ist ein transformator von sekundär 12v
    mit einem gleichrichter

    ist das schlimm, dass beim ausschalten der spule eine hohe gegenspannung entsteht??
    kann da etwas kaputt gehen??
    oder muss ich auch noch eine normale diode parallel schalten, dass die spannung abgefangen wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Denny“ ()

    Ersetz mal die Überdimensionalen Bilder durch kleinere Versionen. Da hat echt niemand was davon ...

    Zum Thema LEDs: Guck ma ins Datenblatt, was das über die maximalen Ströme sagt. Es gibt idR. maximale Ströme pro Pin, pro Port-Gruppe (PortA, PortB, PortC) und für den Controller insgesammt.
    Im schlimmsten Fall musst du die LEDs mit einem Transistor schalten.

    Welche Spule meinst du? Der Trafo entlädt sich beim Abschalten ganz normal weiter in die Sekundärseite. Dort unterbrichst du ja nichts - die Schaltung wird einfach kurzzeitig weiter mit Spannung versorgt.

    Zur Neonröhre: Wie wird die mit Strom versorgt? Evntl. kleines Schaltbild.