Hallo, ich möchte in eine Deckenlampe ein Lauflicht mit 28 LED´s einbauen. Die Übergänge sollen weich erfolgen. 5 Led´s sollen leuchten, wovon die in der Mitte mit 100%, die beiden angrenzenden mit z.B. 70% und die äußeren mit 40% Helligkeit (genaue Werte müssen noch ermittelt werden) leuchten sollen. Das ganze soll auf der Rundbahn der Led´s mit langsamer Geschwindigkeit laufen. Wer hat so etwas schon gemacht, weiß ob es so etwas schon fertig gibt, kann mir einen Überblick vermitteln, wie groß der Programmieraufwand wird, wenn ich selbst progrmmieren muß? Schreibt mal bitte Eure Meinungen. Danke Günter Tholen
Hallo dürfte nicht soviel aufwand sein (kommt noch auf spezialeffekte an :)) mit einer Porterweiterung gibt schon irgendwo so einen artikel. mit google müßte sich was finden lassen mfg bla
Klingt nach ner 28 * 8Bit Software-PWM. Dafür sollte ein ATMega8515 ausreichen (35 Portpins). Peter
Hi Ich habe so etwas ähnliches schon gemacht. Bei meinem Programm kam ich dann halt doch schon auf einige Programmzeilen... aber im grunde ist es nicht schwer. Der weiche Übergang er gibt sich bei automatisch, da das Menschliche auge etwas langsamer ist... dadurch fällts nicht so auf. Ich zeige dir mal ein Bild davon.
Hi, Ich habe soetwas auch schon einmal umgesetzt. Habe 28 Kanäle angesteuert, wobei ein Kanal aus 18 Luxeon III-LEDs bestand. Ich habe es mit einem AtMega8 und 4 Schieberegister gelöst. War zwar etwas aufwendig, doch es hat funktioniert und sieht auch toll aus! mfg Andy
Die Überschrift hat mich erschreckt als ich 28! las. Ich dachte Du willst 28 Fakultät LEDs ansteuern ;) Das wären so viel: 304888344611713860501504000000
Hallo, Danke für die Antworten. Ich habe mal ein Bild angehängt, damit Ihr Euch eine Vorstellung von der Dimension machen könnt. Die Platte hat eine Länge von 176cm und der Abstand der LED´s ict 10cm. Schoasch, bei Dir sehe ich 4 Segmente auf der Kreisbahn. Sind diese Segmente parallel geschaltet oder kann man die Led´s auch einzeln ansteuern. Gruß Günter
Hallo, 3 Dinge: erstens, willst du sowas schon fertig haben uns suchst hier nach einer kauflösung? zweitens, kommt selber bauen, sprich platine entwickeln, controller programmieren und hardwareplanung in frage? drittens, wenn zweitens zutrifft: erstens, ein controller mit ausreichend portpins ist vorteilhaft: da: hardwareeinsparungen, für jede led ein transistor, keine weitren externen register, zähler,multiplexer usw... einen kleinen controller, mit weniger port pins problem: höherer hardwareaufwand, da du die pwm dann über externe erweiterungen auf 28 kanälen erzeugen musst.. problem: höherer softwareaufwand, da du die ansteuerung der externen hardware noch zusätzlich zu der pwm als software mit implementieren musst viertens: ansonsten ist der aufwand für eine 28kanal pwm absehbar, und zum einsteigen oder ausprobieren durchaus denkbar. Maddin
28-Kanal PWM ? Ich dachte gelesen zu haben, dass je nach Geschicklichkeit des Programmieres ein Controller mit 10 Software-PWM schon gut ausgelastet sein kann. Sicherlich könnte man da überlegen, PWM mit nicht allzu hoher Auflösung zu verwenden, nur sind dem auch Grenzen gesetzt, da das menschliche Auge die Helligkeit einer LED ja nicht linear empfindet. Sorry, aber ein "zum einsteigen oder ausprobieren durchaus denkbar" halte ich für leicht übertrieben ...
Hallo Maddin, also kaufen kann jeder! Ich will es selbst bauen, programmieren, etc. Grundsätzliche Kenntnisse über Elektronik bzw. Mikrocontroller habe ich. Was ich brauche ist nur der Anstoß, wie ich soetwas umsetzen kann. Wie setzt man eine Pulsweitenmodulation im Programm um, damit ich die Led´s hochdimmen kann. Ich habe hier noch keine Erfahrung. Habe jetzt schon mehrfach gelesen, daß der ATmega8 wohl geeignet ist. Gruß Günter
> Ich dachte gelesen zu haben, dass je nach Geschicklichkeit des > Programmieres ein Controller mit 10 Software-PWM schon gut > ausgelastet sein kann. Wenn alle gleichzeitig aktiv sind. Nach Günters Beschreibung sollen aber immer nur 5 gleichzeitig an sein. Im Prinzip ist es also eher aine 5-Kanal-PWM, bei der die Kanäle halt durchrotiert werden.
Genau so wirds gemacht! stelle dir einen zähler vor, der zählt in einer endlos schleife von 0...99, wenn er bei 99 angekommen ist startet er wieder bei 0.... weiterhin existiert eine variable in der deine helligkeit abgelegt ist auch von 0-99 (%) (achtung bei leds nicht linear zur pwm) aber zum erklären sollte das reichen. in der schleife addierst du die beiden werte und guckst ob sie größer 100 sind, wenn ja, schaltest du den pin ein, wenn sie kleiner 100 sind schaltest du den pin aus. bsp. beinhaltet die variable den wert 50 und die schleife dann sind die zählerwerte von 0-49 blei in addition mit der 50 kleiner 100, der pinne ist also aus, wird der zähler größer 49 (49-99) sind die werte in addition mit der 50 größer 100 und der pinne ist an. daraus resultiert eine 50-50 Pwm, die stellvertretend für die helligkeit steht. maddin. ps.: der ansatz zu sagen ich mache eine 5 kanal pwm, und verschiebe dann die 28 kanäle ist sicher der beste :-)
Bei mir kann man jede einzeln ansteuern. Wie du richtig erkannt hast, besteht es aus 4 Segmenten. Du musstest halt dann bei den Übergängen der Segmente etwas aufpassen. Ich persönlich würde das ganze dann zb mit einem PIC18LF6620 machen.. denn der Kostet bei Reichelt gerade einmal 2.95Euro.. und hat 54 IO-Pins und 5 PWM-Module.
Korrektur: bsp. beinhaltet die variable den wert 50 und die schleife die zählerwerte von 0-49 dann sind die werte in addition mit der 50 kleiner 100, der pinne ist also aus, wird der zähler in der schleife größer 49 (50-99) sind die werte in addition mit der 50 größer 100 und der pinne ist an. daraus resultiert eine 50-50 Pwm, die stellvertretend für die helligkeit steht. maddin.
> Wenn alle gleichzeitig aktiv sind. Nach Günters Beschreibung sollen > aber immer nur 5 gleichzeitig an sein. Im Prinzip ist es also eher > aine 5-Kanal-PWM, bei der die Kanäle halt durchrotiert werden. Ups du hast recht, das hatte ich übersehen. Also bräuchte man im einfachsten Falle einen Controller mit genug I/O-Pins und ein 5-fach Software-PWM, dass dann einfach auf die entsprechenden Pins umgelegt wird. Alternativ hatte ich auf der Atmel-Seite auch mal Controller mit 8 Hardware-PWMs gesehen, allerdings habe ich keine Ahnung, wo man die herbekommt. Softwarebeispiele für PWM oder Prinziperklärungen gibt es in den Datenblättern oder unter Benutzung der Suche zu genüge ...
@Alex > Ich dachte gelesen zu haben, dass je nach Geschicklichkeit des > Programmieres ein Controller mit 10 Software-PWM schon gut > ausgelastet sein kann. Nö. Bei hoher Kanalzahl bietet sich die Tabellenmethode an. Benötigt zwar etwas SRAM und die Einsortierung geänderter Einträge ist etwas tricky. Bei 28 Kanälen hat man max 29 Änderungen + 1 Eintrag zum Einfügen = 30 Einträge. Jeder Eintrag enthält die nächste Wartezeit (1Byte), das Ausgabemuster (28 Ausgänge = 4Byte) und den Zeiger auf den nächsten Eintrag (2Byte). Macht also 30 * (1 + 4 + 2) = 210 Byte SRAM. Als Prescaler nimmt man 64, d.h. die PWM-Frequenz ist 16MHz 64 255 = 980Hz. Die CPU-Auslastung ist unter 29/255 = 11% Peter
> Ich dachte gelesen zu haben, dass je nach Geschicklichkeit des > Programmieres ein Controller mit 10 Software-PWM schon gut > ausgelastet sein kann. Bei einem Prescaler von 64 hast du von einem Timer Overflow zum nächsten 16320 Takte Zeit. Das wird ja wohl reichen um 28 unsigned char durchzugehen und zu entscheiden ob der zugehörige Pin auf 0 oder 1 gesetzt werden muss. unsigned char Channels[28]; unsigned char PWMCounter; ISR( TIMER0_OVF_vect) { unsigned char i; PWMCounter++; if( PWMCounter == 101 ) PWMCounter = 0; for( i = 0; i < 28; ++i ) { if( PWMCounter < Channel[i] ) // Setze Portpin auf 1 else // setzte Portpin auf 0 } } und das war dann im Prinzip schon die PWM für 28 Kanäle. Ev. kann es sinnvoll sein für jeden zu bedienenden Port eine eigene Schleife aufzusetzen, da dann das Pin-setzen einfacher wird und man das setzen und löschen ... ach was solls ISR( TIMER0_OVF_vect) { unsigned char i; unsigned char Mask; unsigned char PortA = 0, PortB = 0, PortC = 0, PortD = 0; PWMCounter++; if( PWMCounter == 101 ) PWMCounter = 1; // die ersten 8 PWM Kanäle sind auf Port A Mask = 0x01; for( i = 0; i < 8; ++i ) { if( PWMCounter < Channel[i] ) PortA |= Mask; Mask = Mask << 1; } PORTA = PortA; // die PWM Kanäle 8 bis 15 sind auf Port B Mask = 0x01; for( ; i < 16; ++i ) { if( PWMCounter < Channel[i] ) PortB |= Mask; Mask = Mask << 1; } PORTB = PortB; // die PWM Kanäle 16 bis 23 sind auf Port C Mask = 0x01; for( ; i < 24; ++i ) { if( PWMCounter < Channel[i] ) PORTC |= Mask; Mask = Mask << 1; } PORTC = PortC; // und schlussendlich: die PWM Kanäle 24 bis 27 sind auf Port D Mask = 0x01; for( ; i < 28; ++i ) { if( PWMCounter < Channel[i] ) PortD |= Mask; Mask = Mask << 1; } PORTD = PortD; } Ich hab das jetzt nicht ausprobiert (meine LED PWM funktioniert nach diesem Prinzip mit 10 Leds macht aber noch wesentlich mehr im Interrupt), aber für den unwahrscheinlichen Fall, dass das da oben mehr als sagen wir mal 10000 Takte braucht, könnte man immer noch hergehen und bei jedem Timer-Overflow Interrupt eine andere 8-er Gruppe bearbeiten. Bei 16 Mhz bist dann immer noch über 200 Hz PWM-Frequenz.
@Karl Heinz, "Bei einem Prescaler von 64 hast du von einem Timer Overflow zum nächsten 16320 Takte Zeit." Dann hat aber Deine 100-Stufen PWM: 16MHz 16320 100 = 9,8Hz und das ist definitiv zu wenig. Peter
Du hast recht. Irgendwo hab ich mich da verrechnet. Böser, böser Windows-Rechner. Also 64 ist zuviel. 8 geht noch so lala 16000000 8 256 / 100 = ~78 Hz Macht dann 8 * 256 = 2048 Takte in der ISR Ist schon etwas enger, sollte aber immer noch reichen. Zur Not könnte man auch auf 50 Stufen ausweichen. Den Unterschied zwischen 100 und 50 Stufen kennt sowieso keiner (glaub ich).
warum überhaupt timer interupts? Man kann das ganze auch in einer großen Mainloop abhandeln: while(1) { unsigned char i; PWMCounter++; if( PWMCounter == 101 ) PWMCounter = 0; for( i = 0; i < 28; ++i ) { if( PWMCounter < Channel[i] ) // Setze Portpin auf 1 else // setzte Portpin auf 0 } } ändern kann man dann die werte mittels UART wenn man ne möglichkeit dafür einbauen will.
> warum überhaupt timer interupts?
Nicht das ich das ausprobiert hätte, aber ...
weil ansonsten die Leds je nach zusätzlich mitlaufenden
Timern und sonstigen Interrupts flackern würden.
Ich sehe keine weiteren Anforderungen als das Dimmen... Und wenn schon solange diese nicht zu oft und zu lange auftreten fällt das nicht auf, hab ich so bei ner Beleuchtung mal gemacht, dabei sollte der ADC Wert die Geschwindigkeit regeln, also im Mainloop SoftPWM, und (etwa) alle Sekunde einmal ADC gestartet und beim ADC interupt neuen Wert in die register geschrieben => fertig
Ich hab auch schon davon gehört. Es soll Leute geben, die zählen alle Zyklen und fügen entsprechende NOPs oder Delays in sämtliche Verzweigungen ein, damit immer die gleiche Laufzeit rauskommt. Und bei jeder allerkleinsten Programmänderung müssen sie das wieder neu machen. Die kriegen tatsächlich interruptloses Multiplexen oder PWM ohne Flackern hin. Den einzigsten Unterschied zu ner Interruptlösung, den ich erkennen kann: Diese Leute vergeuden 99% ihrer Arbeitszeit völlig nutzlos. Und außerdem müssen sie komplett in Assember programmieren. Peter
@Peter: Warum Nops und Takte zählen? kommt es bei ner PWM tatsächlich auf die ns an? Ich denk mal nein. Hier ist doch wirklich NIX Zeitkritisches drann der "Timer" läuft mit Vollem Proz Takt und es werden auser PWM ja 0! andere forderungen gestellt, der Threadersteller will ja nichtmal verschiedene Muster oder wasweisich haben. Ich finde es immer etwas überheblich wenn immer gleich alles was ohne Interupts läuft als schlecht niedergemacht wird! Soll jezt nicht auf dich bezogen sein Peter du hast schon ne Menge cooler Sachen gemacht, aber vieles geht (auch) ohne Interrupts obwohls mit vieleicht "universeller" wäre, aber normalerweise baut man sich so eine Schaltung freut sich über das Blinken und läßt sie dan auch eingebaut... Man kann jezt natürlich auch 5 Chips mit 5 HW PWMs miteiner vernetzen oder oder oder, aber wo liegt das Problem es mal ohne Interupts einfach zu probieren?
@Läubi, das Problem ist, das Auge ist nichtlinear. Schreib ein Programm, welches nach dem Reset ne LED für 1µs einschaltet und ne 2.LED für 2µs. Setz Dich in nen dunklen Raum und Du wirst den Unterschied (nur 1µs !) deutlich sehen. Eine helle LED wird ohne Interrupt wohl einigermaßen ruhig leuchten, die dunkle flackert aber wie Sau. Probiers aus, wenn Du es nicht glaubst. Peter
Aber was ändert der Timerinterupt dabei? Es soll doch nur ein lauflicht sein, es soll keine MP3s Spielen nebei die Luftfeuchte Messen oder Daten Digitalisieren... nur laufen. Wenn man ganz "hardcore" ist könnte man sogar eine vollständigen lauf einprogrammieren (genug Zeit und Flash vorausgesezt)
Na 28 Stück kriegst ja noch an nen AT Mega16 hin. Das im Dimmen würd ich so machen wie ich es für meine Schreibtischbeleuchtung realisiert hab: Ich hab dafür 2 Kanäle (jede 2te LED steuerbar). Diese wollte ich anfangs nur an und ausschalten bzw. beide Kanäle zu gleich oder nur einen oder alles aus. Dann war mir der Übergang zu krass und so hab ich nach ner Möglichkeit gesucht das ganze zu dimmen. Ausserdem wollte ich das man während des Dimmvorgangs auch eine Änderung machen kann und somit das ganze nicht irgendwie unkontrolliert hell wird sondern einfach weiter dimmt. Ganz einfach hab ich das gemacht: Du brauchst für jede LED eine Variable mit dem Akutellen Wert und eine für den Wert den du ihr vorgibst. Jetzt machst du ne kleine While Anweisung, in der wird bei jedem Zyklus für jede LED gecheckt ob der Aktuelle Wert (was auch per PWM rausgeht) übereinstimmt oder ob dieser kleiner bzw. größer ist. Wenn dieser anders ist dann wird die aktuelle Variable nicht einfach auf den neuen Wert geändert sondern es wird einfach nur eine 1 addiert bzw. subtrahiert. Dadurch hast du keine krassen Sprünge sondern langsame Wechsel. Das ist doch genau das was du für dein Lauflicht auch brauchst, somit hast du den Effekt das die mittleren LEDs (da schon länger auf nem hohen Wert sind) heller sind und die LEDs am Rande deiner "Snake" dunkler sind. Jetzt noch die PWM mit ner kleinen Schleife ausgeben (... musst testen ob man da ein Flacker bei 28 LEDs wahrnehmen kann aber ich denke noch nicht), und fertig ist das ganze. Die PWM einfach ganz billig machen, bei jeden Zyklus einer Variable ne 1 addieren und bis max 100 zählen lassen. Wenn die Ausgabe Variable der entsprechenden LED jetzt einen Wert hat der kleiner als die Statusvariable is, dann einfach so lange ein lassen bis der Wert von der Aktuellen Statusvariable größer wird als der Wert in deiner Ausgabe Variable. So solltest auch 28 LEDs Pulsen können.
Maddin schrieb: > in der schleife addierst du die beiden werte und guckst ob sie größer > 100 sind, wenn ja, schaltest du den pin ein, wenn sie kleiner 100 sind > schaltest du den pin aus. Ja, funktioniert im Prinziep. Du bekommst aber einen weicheren Übergang, wenn du in der Schleife exp(Zehler) berechnest und mit exp(Schwellwehrt) vergleichst. Ideal wäre eine Gaußkurve anstelle von exp, ist aber zeitaufwendiger, da noch quadriehrt werden muß. Die Gaußkurve hätte den Vorteil, daß man nicht auf feste Hellichkeiten von 100%, 70% und 40% beschränkt ist, sondern alle 28 (oder auch 28!) leds (oder auch led's) mit einem umlaufenden Maximum variabler Ausdehnung ansteuern kan.
>sondern alle 28 (oder auch 28!) leds >(oder auch led's) mit einem umlaufenden Maximum variabler Ausdehnung >ansteuern kan. Das wäre dann eine Tabelle mit 28 Werten, oder nicht?
@Rahul
> Das wäre dann eine Tabelle mit 28 Werten, oder nicht?
Bei 28 led's ja. Mit dem Ansatz, eine Function aus Zehlerstand und
Ledposition auszuwerten, kannst du aber auch Tausende led's verwenden
ohne fiel Speicher zu verschwenden.
@Maddin
Mit variabler Ausdehnung meinte ich, das du zB. eine kreisende
Anheufung von leuchtenden led's programmieren kannst, wo du einfach im
Programm festlegst, ob die Breite nun 5 led's, 10 led's oder auch 3.14
led's sein sol. Selbst eine zeitlich variable Breite ist möglich.
>Mit dem Ansatz, eine Function aus Zehlerstand und >Ledposition auszuwerten, kannst du aber auch Tausende led's verwenden >ohne fiel Speicher zu verschwenden. Ist das gefordert? Ich glaube nicht. Dass man (die) Software sehr universell entwickeln kann, steht ausser frage. Für ein solches Einzelstück ist es aber nicht notwendig. Ausserdem ergibt sich dann auch wieder das Problem, dass bei Mikrocontroller-Anwendungen die Software zur Hardware gehört: Mag ja sein, dass die Software Millionen LEDs ansteuern könnte. Es werden aber nur 28 benötigt und die Hardware würde auch nur auf diese Anzahl ausgelegt werden. Irgendwo sollte man den Kompromiss finden... Man kann ja auch für kommende Projekt mit mehr oder weniger LEDs auf der vorhandenen Software aufbauen...
Hallo, mit soviel Resonanz hab ich gar nicht gerechnet. Danke. Ich werde jetzt erst mal alles lesen und dann schauen wir weiter. Beim Überfliegen habe ich schon einiges wahrscheinlich nützliches gelesen. Um den "Leuchtablauf" detaillierter zu verstehen,habe ich ein Puls-Zeit-Diagramm gemacht. Das hat mir für das Verständnis echt geholfen. Mal sehen wie weit ich mit Euren Hilfen noch komme. Melde mich wieder. Gruß Günter
Rolf Magnus >Wenn alle gleichzeitig aktiv sind. Nach Günters Beschreibung sollen >aber immer nur 5 gleichzeitig an sein. Im Prinzip ist es also eher aine 5-Kanal-PWM, bei der die Kanäle halt durchrotiert werden. Karl Heinz Buchegger >Ev. kann es sinnvoll sein für jeden zu bedienenden Port >eine eigene Schleife aufzusetzen, Schoasch >Ich persönlich würde das ganze dann zb mit einem PIC18LF6620 >machen.. denn der Kostet bei Reichelt gerade einmal 2.95Euro.. und >hat 54 IO-Pins und 5 PWM-Module. >maddin. >ps.: der ansatz zu sagen ich mache eine 5 kanal pwm, und verschiebe >dann die 28 kanäle ist sicher der beste :-) Hallo, als ich mit meinem Puls-Zeit-Diagramm fertig war, hab ich genau das gesehen, was Ihr schreibt. Was läßt sich denn einfacher umsetzen? Ein Aufbau mit µC oder mit PIC(oder war das das gleiche? hab ich nie richtig verstanden). Und nun ans bauen! Welche Hardware, Software, Programmiergeräte, Adapterkabel etc. benötige ich konkret, um mit dem µC oder PIC anzufangen? Alles soll günstig sein. Ich baue gerne auch selbst. Gruß Günter Der der auf dem Klo am kreativsten ist!
> Ein Aufbau mit µC oder mit PIC(oder war das das gleiche? hab ich > nie richtig verstanden). Ein PIC ist ein Mikrocontroller, aber nicht jeder Mikrocontroller ist ein PIC. Es ist einfach eine der Mikrocontrollerarchitekturen.
Hi Wie schon erwähnt, ist der PIC ein µC... ich würde mal jetzt ganz grob behaupten, dass er in die Klasse eines AVRs fällt. Stimmt zwar nicht ganz aber beides sind 8bit RISC µCer. Zur Hardware(wenn du es mit einem PIC machen willst): Du brauchst einmal ein Programmiergerät, dass im einfachsten Falle aus ein paar Widerständen besteht -->http://www.stolz.de.be/ Oder wenn es etwas grösser..aber unschlagbar gut sein darf: http://www.sprut.de/electronic/pic/brenner/index.htm#brenner5 Besteht zwar aus etwas mehr als ein paar Widerständen.. aber der kostet vl insgesamt auch nur ein paar Euro.. dafür hast du einen ordentlichen Programmer mit dem du sehr sehr lange arbeiten kannst, wenn du willst. Zur Software: Lade dir von www.Microchip.com das MPLAB herunter und dann noch den C18 Compiler. Installier beides(zuerst MPLAB und dann den C18) und fang an zu programmieren :-) Für Grundlegende Sachen bezüglich den PICs kann ich dir 2 Seiten empfehlen: www.sprut.de oder www.fernando-heitor.de(hat auch ein sehr gutes Forum .. also wenns dann mal Probleme gibt, schreib dort hinein). Ansonst kann ich dir nur viel Spass mit den PICs wünschen.. mir machts spass damit zu arbeiten. Bist du Schüler oder Student? Dann kannst du dir auch einmal ein Sample von Microchip zukommen lassen. Achja.. ist das leicht für dein WC gedacht? Coole Idee... mfg Schoasch
Hey, ich habe mir heute auch schon den ganzen Tag meine Kopf zerbrochen wie ich eine 8 Kanal PWM Ansteuerung auf meinem ATmega8 realisieren kann und bin dabei zum gleichen Ergebnis gekommen wie Karl-Heinz Einfach im Timer Overflow Interrupt die Werte der einzelnen Kanäle mit dem aktuellen Zählerstand des PWM_counters vergleichen, welcher von 0 bis 100 (in meinem Programm bei 8MHz F_CPU) zählt. Habe dazu den 8 Bit Timer0 benutzt und somit ein ca. 300 Hz PWM-Signal Im UART Interrupt werden die vom PC gesandten Dimmwerte ins jeweilige Register geladen. Timer1 aktualisiert wiederum die einzelnen Werte alle 5ms. Bis jetzt habe ich die Werte einfach nur rauf und runter zählen lassen. Ist aber sehr Unbefriedigend. Ich werde daher noch versuchen eine exp-/sin-Tabelle zu benutzen um die Helligkeit annähernd linear zum Wert erscheinen zu lassen. Bei der MCU Wahl würde ich von einem PIC abraten. Ich habe selber einige Zeit auf PIC's programmiert und das Umsteigen auf einen anderen Typen war nicht immer sehr Befriedigend, da die Registerbelegung von vielen Typen total unterschiedlich ist. Sie sind außerdem weitaus teuerer als AVR und nicht so Rechenstark, da sie einen Frequenz-Vorteiler (1:4) haben. (PIC=0,25 MIPS/MHz... AVR=1 MIPS/MHz) Für den Anfang würde ich dir einen Atmega8 vorschlagen. Er kostet bei http://shop.tuxgraphics.org 1,65/Stk und du benötigst nur minimale Hardware um ihn zum Laufen zu bringen. (nicht einmal eine Taktquelle von Nöten). Programmer besteht aus ein paar Widerständen und einem Parallel Port. Ist also nicht so Schmerzhaft für die Geldbörse wenn einmal ein paar draufgehen. Und wenn wir schon bei Samples sind... falls du das ganze zum Nulltarif machen willst und keinen Wert auf Software PWM legst, dann nimm einfach eine 16Bit MCU von freescale. Die gibts als free samples mit 40MHz Takt und mehr als 100 I/O Pins, da sind sicher auch 28 PWM Ausgänge für dich drin ;) Viel Spass noch beim Basteln und falls du nen Source-Code brauchst schreib ne I-Mehl :D Grüße Daniel
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.