Hallo, möchte in das Thema Mikrocontroller einsteigen. Hab bisher nur mit dem 8085µP gearbeitet, und das ist auch schon ne Weile her. Aber zu spät ist es nie. Als Einstieg hab ich mir folgendes Projekt als Ziel gesetzt: Gebaut werden soll ein Stimmungslicht, auf diesem sind verschiedenfarbige LED`s aufgebracht ( 3 Farben ) die per Knopfdruck fließend ineinander übergehen. Bevor ich jetzt beschimpft werde !! Ja ich habe bereits das Forum durchstöbert, brauche halt noch etwas Input da ich mir dementsprechend die benötigten Bauteile erst bei Reichelt etc. bestelle. Also jetzt der PAP ist in Planung, das Programm wird in Assembler geschrieben --> bleib halt gerne auf dem Boden ;-) und denke für meine Anforderung reicht es. Die Auflösung wollte ich mit 8bit haben sprich 256 Stufen, und diese Funktion sollte ein externer DAC erledigen (einer pro Farbe). Diese Spannung wollte ich dann auf einen Spannungsfolger ( Transistor ) geben, damit ich max 500mA ziehen kann bei 5V. ich hoffe soweit sind die Anforderungen klar !? nun die Fragen: 1. Ist das Projekt als Neueinstieg für die Controller- Welt geeignet ( Erfolgsprinzip,hatte ja nur was mit nem µC am Hut) ? 2. Will keine Umständliche Adresscodierung, deshalb wollte ich alle DAC mit vollen 8 Leitungen anfahren -> O.K.? 3. Sollte es doch lieber mit PWM umgesetzt werden ( wollte es einfach halten, zwecks Einstieg in die Thematik !) ? 4. Sollte der Prozessor mit dem vollen Takt laufen und die Verzögerung nur über Schleifen erfolgen oder auch runtertakten ? 5. Welcher DAC, fertiges IC oder mit R2R- Netzwerk und OP ? 6. Falls fertiges IC, gibt es welche die den digitalen Wert direkt ausgeben oder muss für diesen Prozess der µC dem DAC jeweils extra ein Signal ausgeben damit der digitale Wert umgesetzt wird ( wäre bei OP- Variante ja nicht der Fall !) ? 7. Das wichtigste am Schluß, welcher Controller entspricht am besten meinen Vorstellungen ( dachte an den ATmega8515 ) ? ..... so genug gefragt. Meine Weitere Vorghensweise wird sein, das ich den µC (wenn ich weiß welchen ) auf ne Euro- Platine bring und mal ein Lauflicht alla Knight- Rider etc. mache. Hoffe ich komme in das Thema ohne große Stolperfallen wieder rein. Danke und Gruß Martin
Hallo Martin, ich versuch mal deine Fragen zu beantworten. 1) Also, da man hardwaremäßig ja nur die 3 LEDs anschließen muss, kannst du ja erstmal versuchen, ein Lauflicht zu bauen, etc. Ohne Hardwareänderung kannst du dann ja trotzdem dein Projekt machen. Aber anfangen würd ich mal ein wenig einfacher und das Programm dann immer ausbauen. z.B. erst mal, dass per Knopfdruck die leds weitergeschaltet später dann den weichen übergang. 2) Also DACs würd ich hier nicht verwenden, erst recht keine parallelen. Viel einfacher ist das ein und ausschalten der LEDs in einem bestimmten Tastverhältnis. Das liese sich mit einem einzigen Timer realisieren. 3) Also ich würd einfach einen Timer starten und dann nach einigen Durchläufen die LED wieder an/ausschalten (also in einem bestimmten Tastverhältnis). wenn das schnell genug geht, kannst du ohne weitere Hardware das ganze aufbauen. Vor allem die Fehlersuche dürfte einfacher sein. Zum Üben mit dem Umgang des Timers kannst du ja mal eine LED einfach blinken lassen. 4) Wenn das alles ist, was der uC tun muss, kannst du eine niedrige Frequenz wählen, um die Schaltung stromsparend zu gestalten. Wenn er noch mehr erledigen muss oder kein batteriebetrieb nötig ist, dann kannst du auch einen schnelleren Takt wählen. 5) s.o. -> lieber mit Timer und kein DAC 6) s.o. 7) 3 LEDs, ein Taster -> ein 2313 oder evtl ein AT Tiny sollten auf jeden Fall ausreichen. Wichtig ist, dass der Controller 4 Ports besitzt und über einen Timer verfügt. Über einen Transistortreiber zu gehen ist natürlich sinnvoll, aber vorläufig kannst du eine LED pro Port auch direkt ansteuern (zumindet zum Testen). Ich hoffe dir etwas geholfen zu haben! Viele Grüße Steffen
Das Ganze nennt sich PWM (Pulsweitenmodulation), ist ja im Prinzip auch eine Art DA-Wandler, haben heutige Controller in der Regel on-board. Das simpelste avr-libc demo macht genau sowas mit einer einzigen LED. Kann man sich folglich bequem auf 3 LEDs ausweiten, wenn man 3 PWMs im Controller hat.
Hallo, schau Dir das hier mal an. http://www.circuitcellar.com/fi2003/F2010.htm ist zwar kein Atmel aber macht genau das was Du machen möchtest. Ist ganz gut beschrieben und meiner Meinung nahc auch gut nachvollziehbar was da passiert. Eckhard
@Joerg Wunsch: Nö. Man braucht keine 3 PWMs im Controller. Wenn der Controller sowieso 99,9999% seiner Zeit Däumchen dreht, kann er doch auch Software-PWM in der Zeit erledigen. Wie Steffen schon bemerkte, reicht dann ein kleiner 8-pin TINY.
> Man braucht keine 3 PWMs im Controller.
Schon klar, daß man das auch in Software tun kann. Ich wollte nur
sagen, daß es mit 3 PWMs natürlich ein Kinderspiel ist, das Demo
gleich auf diese auszuweiten. Für die Softwareimplementierung braucht
man 3 Krümel Gehirnschmal mehr. ;-)
...erstmal viele Dank an alle, vor allen an Steffen, für die ausführliche Erklärung. Da ich bis jetzt noch auf einem unteren Niveau arbeite/schwimme bin ich umso glücklicher das mein Tread beantwortet wurde. zu 1. klingt jetzt zwar vielleicht komisch, aber vor dem Program hab ich keine "Angst". Das einzigste ist die etwas andere Befehlsliste, aber ansonsten sehe ich da (bis jetzt) keine Probleme. Hab auch schon weitere Erweiterungschritte im Kopf wie z.B. Farbwechsel per Knopfdruck oder durch Schalter einen automatischen Ablauf. Aber alles zu seiner Zeit ;-) Da man an den µC direkt LED`s anschließen kann solten ja die superhellen auch kein Problem sein (haben auch 20mA) zu 2. + 3. über PWM, bin ich in diesem Forum schon öfters gestolpert, werd wohl nicht an dieser Funktion vorbeikommen. Da ist auf jeden Fall noch etwas lesen angesagt --> dieses Thema ist neu für mich !! Das einzigste ist ob ich mit PWM eine sanften Übergang habe, da ja die LED abhängig von der Frequenz und dem Tastberhältnis nur das X-tel der Zeit leuchtet. Aber Wir wissen ja schon von der Fernsehtechnik das unser Auge bzw. Gehirn etwas träge ist :-) zu 4. hab da noch einen AC/DC Modul rumliegen, macht 1A bei 5V also in der Richtung kein Problem, die Tests passiern eh mit Hilfe eines Labornetzteiles das macht dann 3A bei 5V. 5.und 6. hat sich vorerst erledigt ! zu 7. Wenn ich mir als Test-Board (Lochraster-Platine) eine ATmega8 zulege und dort die Entwicklung mache, bekomm ich dann arge Probleme falls ich das Programm auf einen TINY laufen lassen möchte zwecks Befehlsliste etc. ? Also der PAP wurde bereits etwas unübersichtlich, da ich viel zu viel Funktionen umsetzten wollte.....werd auf den Tipp eingehen und erst mal kleine Brötchen backen (Lauflicht und danach langsame Überblendung.......). Achso Timer-Programmierung ist auch neu für mich, hab also noch etwas Input vor mir. Gruß Martin
Hallo! @Martin Huber: Kannst Du das programm dann in die Codesammlung stellen, wenn es irgendwann mal funktioniert? MFG, ################# Florian Wolling # #################
Hallo Martin, ich denke, dass es kein Problem sein sollte das Programm vom Mega8 auf nen Tiny zu bringen. Ein paar kleine Änderungen und eben im Mega keine Funktionen / Ports verwenden, die der Tiny nicht hat. Vorher mal ins Datenblatt schauen. Wenn du es aber auf jeden Fall auf dem Tiny machen willst, spricht nichts dagegen gleich das Programm darauf zu entwicklen ... Anstatt Lochraster empfielt sich die Insvestition in ein Steckbrett. Du kannst Schaltungen ohne Probleme abändern (kein Löten, ...). Einen Transistortreiber solltest du nur dann verwenden, wenn du evtl. mehrere LEDs gleichzeitig hinhängen willst (evtl. 4 Rote, ... um eine größere Lichtausbeute zu bekommen). Da die Tiny imho nur ein oder zwei Hardware PWM haben, solltest du das ganze softwaremäßig lösen, was aber eigentlich kein Problem sein sollte (unbedingt Timer verwenden)! Viele Grüße Steffen
Hallo, @Florian Wolling Kann ich bzw. werd ich machen, auch wenn ich dann Gefahr laufe, daß ich zumindest für das erste Programm in der Luft zerrissen werde ( in die Richtung "das hätte man besser machen können ). Bei dem Controller bin ich mir noch nicht sicher, ansonsten kann ich mit Hilfe der jetzigen Information und den bestehenden Treads mal anfangen. Als erste werde ich mich in die PWM- Geschichte reinarbeiten (Software-Umsetzung mit Timer !!). Viel anderes kommt in meinem Programm auch nicht vor :-), mal abgesehen von ein paar Schleifen und der Taster Abfrage. @Steffen Nochmals vielen Dank für die Infos, und ja ich werde mehrere LED`s anschließen (in de Final-Version) und hab bereits meinen Arbeitskollegen eingespannt der macht dann die restliche Hardware --> das nennt man Arbeitsteilung ;-) Also wünscht mir Glück Gruß Martin
Du bekommst vielleicht den einen oder anderen Tipp, wie man es besser machen könnte - aber in der Luft zerissen wurde noch niemand. Jeder hat seinen eigenen Programmierstil. Möchte man seine Programme auch anderen zugänglich machen, sollte man aber schon ein wenig auf Übersichtlichkeit achten. Wichtig sind Kommentare - auch für Dich selbst, denn nach einem Jahr kann man oft die eigenen Gedankengänge nicht mehr nachverfolgen. Meine Programme bestehen teilweise zu 70% aus Kommentar...
Bin jetzt erst mal froh über die "Starthilfe"! Was die Übersichtlichkeit angeht hab ich mich auch schon verarscht, hab da noch einige Programme auf dem µP8085 mit wirklich verhungerten Kommemtare. Heute weiß ich erst was ich davon habe :-( Auf jeden Fall wäre ohne die Tipps ein µC entstanden der paralell ein R-2R Netzwerk mit einem OP als Addierer anfährt (jeweils pro Frabe ). Das kann ich mir jetzt alles sparen, und das Programm wird noch kleiner und dadurch auch übersichtlicher.
Da findet man gute Hinweise (english) und Tutorials zum Timer http://www.avrbeginners.net/ MFG, ################ Florian Wolling# ################
Hallo Martin, erstmal eine Page, wo viel über Leds steht, ich nehme mal an, dass Du diese neuen Super-Power-Leds verwenden willst: http://members.misty.com/don/ledx.html Bei der Ansteuerung der Leds solltest Du im Hinterkopf behalten, dass der optische Helligkeitseindruck nicht linear zur reingesteckten Leistung steht, eher schon mit dem Quadrat. D.h.: wenn die LED halb so hell wie bei "Full Power" erscheinen soll, dann musst Du 25% der Leistung reinstecken, wenn die LED 10% so hell erscheinen soll, nur 1% Leistung. Entsprechend fein aufgelöst sollte Deine PWM sein. Viel Spass, Stefan
Hallo, @Stefan vielen Dank für den Tipp, werd mir gleich mal die Datenblätter saugen, mal schauen was die Kennlinie sagt, falls vorhanden. Wollte die Auflösung mit 8-bit machen, sollte reichen nur wenn die LED dann Helligkeitssprünge macht ist das nicht so toll. Weiß leider noch nicht welche Sorte ich verwende, hab aber ne gute Internet-Page wo man alle Sorten günstig bekommt. Muss nur mal schauen wer der Hersteller ist. Bei Conrad (Conrad hat schwer nachgelassen dafür aber mit den Preisen angezogen was Bauteile angeht) oder Reichelt kosten die Dinger "Schweine-Geld" und bei Pollin (der hatte welche in einem Sonderheftchen) ist leider alles sehr schnell vergriffen bzw. auf unbestimmte Zeit nicht vorrätig. Hab den Link leider nicht zur Hand, aber wenn jemand interesse hat stell ich ihn gerne rein (ab Montag dann !!). Preislich liegen dort die LED`s bei ca. 1 EUR, meistens noch etwas darunter. Gruß Martin
Hi Martin, an dem Link habe ich grosses Interesse, demnächst mag ich auch mal was mit LED-Beleuchtung machen (wenn mal wieder zeit ist ...). 8 Bit Auflösung sind im Prinzip ok, wenn Du die 8 Bit über eine Tabelle in entsprechende PWM-Werte umsetzt: ungefähr so : const uint pwmtab[256] = { ..... } Für solche Tabellen schreibe ich mir immer ein kleines C-Programm, das mir die Werte in ein Textfile ausgibt. Wenn Du die 8 Bit direkt auf die PWM ausgibst, dann siehst Du im unteren Helligkeitsbereich große Sprünge, oben tut sich dagegen nicht viel. Stefan
Hallo, @Florian Wolling Sieht so aus als "kämpfen" Wir mit dem gleichen Thema ! Hab mir jetzt mal ein paar Datenblätter angeschaut. Da ich im ersten Schritt vorerst normale LED`s benutze und diese nahezu linear sind kann ich dies vernachlässigen. Aber im Bezug auf die superhellen ist das Verhältnis "Strom zu Spannung" doch nicht ganz unerheblich, hinzu kommen noch Unterschiede zwischen den einzelnen Farben. Erst mal muss ich das Thema PWM erschlagen :-). @Stefan Dein Vorschlag klingt gut, würde heißen das ich anhand einer Tabelle mir die PWM- Werte so einlese und ausgebe das ich im "unteren" Bereich eine feinere Auflösung habe die nach oben hin "gröber" wird --> im Bezug auf die Kennlinie der LED. Würde aber auch heißen das ich nicht alle Schrittweiten von 8-bit benötige! Zu der Tabelle hab ich jedoch noch eine Frage, diese muss ich dann auf dem Controller ablegen, im "worst case" jeweils eine Tabelle pro Farbe !?.... bin ich soweit richtig mitgekommen ? Gruß Martin
Hallo, hab den Eintrag nicht vergessen, nur den Link hatte ich "verschlampt". http://digital.eska-technik.com/shop/index.html Gruß
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.