Hallo, ich habe nun einen Teil meines Projektes fertig. Ich steuere jeweils 20 LEDs mit einem Mega8 direkt an. Insgesamt 4 MCs mit insgesamt 80 LEDs. Zudem kommt ein Interrupt auf Int0, dem im Moment alle 4 MCs bekommen. Nun würde ich gerne, bevor ich Platinen entwerfe und bestelle, meine weiteren Ideen verwirklichen. Ich stelle mir vor, einen Mega8 als SteuerMC zu nutzen. Dann vier MC zum steuern der LEDs. Eine MM Karte auf der verschiedene Tabellen für die einzelnen vier MC sind, welche der SteuerMC an die vier LED-MCs weitergibt. Desweiteren würde ich gerne per Fernsteuersignal zwischen verschiedenen Bildern umschalten können. Wer kann mir bei diesem Projekt weiterhelfen. Ich würde gerne auch zB. die Uhrzeit oder die aktuelle Drehzahl in verschiedenen Bildern anzeigen. Evtl. etwas scrollenden Text?! Oder vielleicht Überblendungen zweier Bilder? Außerdem sollte vielleicht jemand mein Programm mal ansehen und evtl. verbessern, da ich momentan sehr kompliziert die Bitmuster an die LEDs gebe! Wenn ich einen Mega8 als Steuer MC nutzen will, stimmt das Programm eh nicht mehr! Ebenso, wenn ich zwischen verschiedenen Bildern Umschalten will. Mit der Hardware Ahnung hapert es auch noch, ich habe zwar schon eine Platine mit Target erstellt, aber ob das alles so passt (Leiterbahnendicke, Konmdensatoren, Footprints....) Würde mich sehr über Hilfe freuen! Gruß Toby
Wozu brauchst du 4 MCUs, das geht doch viel einfacher, ich glaube nicht, dass du die höhe Frequenz einsetzen wirst. Mach es doch lieber mit Logik-Bausteinen, das spart Geld und Aufwand.
Hallo, ich würde ja gerne nur einen MC nutzen, das würde einiges einfacher machen, zb. die Platinen. Nur leider glaube ich, das es nicht Möglich sein wird, bei einem Rotierendem Teil ( ca. 1500 U/min), noch Daten an andere Bausteine zu schicken. Oder wie meinst Du das? Hast Du ein Beispiel? Gruß Toby
Du hast 25 Umdrehungen pro Sekunde. Wieviele Positionen? Ich rate jetzt einfach mal 200. Dann sind das 25*200=5000. Du hast 80 LEDs, das sind dann 400.000 Bit bzw. 50.000 Bytes pro Sekunde. Das wäre das Limit vom I²C-Bus im Fast-Mode, aber z.B. der SPI-Bus macht da noch deutlich mehr. Also würde ich 10 Schieberegister mit SPI (z.B. 74HC595) benutzen und diese an einen ATMega8 anschließen. Markus
ich würd da einfach 3 ports zum led ansteuern verwenden... 2 ports für cs von latches und 1 port mit daten... damit könntest du 128 leds ansteuern... wenn du einen mega64 oder 128 nimmst hast genug leitungen... dann bist auf jeden fall schnell genug .... oder du kaskadierst schieberegister...das ist zwar langsamer aber braucht ned soo viele pins... 73 de oe6jwf / hans
Hallo, Momentan habe ich 240 Segmente. Allerdings brauche ich bei größerem Umfang entsprechend mehr Segmente, da der Abstand zwischen den Segmenten sonst zu groß wird. (am äüßerem Ende) Ich plane einen Durchmesser von 1,20m. Mit 360 Segmenten wären die äußeren LEDs schon ca 10mm außeinander. Da würde ich schon ca 1000 Segmente nutzen wollen. Wie genau funktioniert so eine Ansteuerung von 10 Schieberegister mit SPI (z.B. 74HC595) ??? Können damit alle LEDs einzeln, gleichzeitig und unabhängig von einander an sein? Dabei lag nämlich schon mal das Problem. Ich könnte zwar alle LEDs einzeln ansteuern, aber zB. LED 1 und LED 2 gleichzeitig ging dabei nicht. Vielleicht kann mir jemand einen Schaltplan zukmmen lassen? Gruß Toby
1,2m Durchmesser bei 5000U/min ist schon recht heftig. Hast Du keine Bedenken, daß sich so eine Konstruktion einfach zerlegt? Mit einem (bzw. 10) Schieberegister kann man natürlich alle LEDs einzeln ansteuern. Allerdings solltest Du überprüfen, ob sie genug Strom für Deine LEDs abgeben bzw. ob bei 1000 Segmenten Deine LEDs noch hell genug sind. Einen Schaltplan gibts z.B. hier: http://wiki.mikrocontroller.net/wiki/Porterweiterung_mit_SPI Benutzt wird das so: Auf MOSI werden die Bits rausgeschrieben, SCK ist der dazugehörige Takt. Diese Bits erscheinen aber noch nicht sofort an den Ausgängen, sondern erst wenn ENable aktiviert wird. Du schreibst hier also die 80Bit raus und dann aktivierst Du EN. Danach wieder 80 Bit schreiben und EN setzen usw. usf. Für die hier nötige Geschwindigkeit (1000 Segmente 80LEDs 25Hz = 2.000.000 Bit/s) brauchst Du unbedingt Hardwareunterstützung für SPI im Mikrocontroller, aber das hat der ATMega8. Markus
Hallo Markus, das würde ja heißen, ich könnte alle paar cm in meinem Rotorblatt einen 74HC595 einsetzen, die 8 LEDs daran, und angesteuert wird alles von nur einem Mega8 ?! Richtig? Das ist eine Klasse Sache. Vielleicht kannst Du mir auch noch sagen, wie ich eine MMC Karte nutzen kann, um davon meine "Bilder" zu laden? Gruß Toby
Ja, genau, so einfach sollte das funktionieren. Allerdings fällt mir gerade auf, daß man für 1000 Segmente * 80 LEDs ja etwa 10KB Speicher braucht. Die hat ein Mega8 aber nicht. Und ob man die zeitlich passend von der MMC Karte lesen kann ist fraglich. Da die Daten ja ins RAM müssen und der Mega8 nur 1KB hat, mußt Du also mit etwa 250KByte/s von der MMC Karte lesen und mit der selben Geschwindigkeit per SPI rausschreiben. Das Timing muß dabei recht exakt sein, weil man das sonst ja bei der Ausgabe sieht. MMC Karten werden glaub über ebenfalls über den SPI-Bus angesteuert, was die Sache hier sicher nicht einfach macht. Das Thema MMC war hier aber schon öfters dran, also einfach mal hier im Forum danach suchen. Markus
Hallo, könnte ich, statt 8 74HC595 in Reihe, auch einen Port des Mega8 nehmen, und an jedem Portpin die Daten für die 8 HCs gleichzeitig ausgeben? Dann würde ich doch Zeit sparen. Statt 64 Bit nacheinander auszugeben, würde man 8x8 Bit ausgeben. Das wäre immerhin 8 mal schneller?! Hat jemand evtl. einen Asembler Code zum ansteuern der HCs ? Gruß Toby
Das HW-SPI kann im Hintergrund arbeiten und schiebt 8 Bits in 16 MCU Takten raus. 1 MCU Takt benötigst du um die Daten an's SPI zu übergeben. Somit benötigst du 17 Takte pro 8 Bit um die Daten zu laden, ein Postprocessing zu machen und rauszuschieben = 17/8 = 2.125. In deiner Methode würde alles per Software laufen. Du benötigst mal grob gerechnet 4 Takte zum Laden + 2 Takte Postprocessing + 1 Takt PORT Zugriff + 3 Takte Clocking macht 10/8 = 1.25. Somit wäre deine Methode 1.7 mal schneller. Allerdings obige Annahmen sind nur Pi * Daumen. Gruß Hagen
Aber warum willste das so machen ? Ein ATMega8 mit 16 MHz schiebt per HW-SPI 8Mbit/sec raus. Bei 360° Auflösung wären das dann 22222 Bits pro Schritt in der Sekunde, / 80 LEDs sind dann 277 Umdrehungen pro Sekunde == 16666 U/min. Also bei weitem ausreichend. Gruß Hagen
Also bei 1500U/min dauert es pro Schritt 1/10'tel der Zeit um über das SPI die 80 Bits reinzuschieben. Das Enable der Shiftregister wird dann zeitabhängig exakt alle 1/360 Sekunde aktiviert. Sofort danach kannste per SPI die nächsten 80 Bits reinschieben und hast dann noch 9/10 Zeit um die nächsten Daten zu laden bevor das Enable wieder gesetzt werden muß. Diese Rechnung bezieht sich auf XTAL = 16Mhz und SPI mit 8Mhz. Ich weiß halt nicht ob die Shiftregister 8Mhz vertragen. Aber laut Datenblatt können die 74HC595 nur 8mA pro Pin treiben, reicht das denn aus ?? Gruß Hagen
Hallo, erstmal vieln Dank für deine vielen Rechnungen. Ich treibe momentan die LEDs mit ca. 10 mAh, Laut meinem Datenblatt des 595 kann er doch 35mAH pro pin! Das sollte allemal ausreichen. Viel wichter wäre, wie lade ich die Daten aus dem Ram, und gebe sie in die Schieberegister ein? Desweiteren: Wie lade ich die Daten aus dem EEProm oder einer MMC Karte in den Ram? Gruß Toby Ach, wenn jemand Codes übrig hat?! Ich könnte diese sehr gebrauchen! Bis denne...
Ich klemm mich mal einfach in den Email-Verteiler. Das Projekt interessiert mich (auch wenn ich im Moment nichts sinnvolles beitragen kann). Steffen
http://www.semiconductors.philips.com/pip/74HC595N.html Dort steht in der Tabelle in der Spalte "Output Drive Capability" +- 6mA. Im Datenblatt dann Icc, Strom im gesamten max. 70mA / 8 Pins = 8.75mA pro Pin wenn du alle LEDs gleichzeitig treiben willst. Die 35mA beziehen sich höchstwahrscheinlich darauf das nur 1 Pin treibt. Allerdings sicher bin ich mir da nicht ganz, die Datenblätter sind manchmal so geschrieben das sie die Tatsachen ein bischen verschleiern (meine Meinung). Ptot = 500mW bei 5V = 100mA. Bei 35mA * 8 Pins = 280mA * 5V = 1400mW >> Ptot. Also ich meine du kannst nur mit 8mA pro Pin rechnen wenn du alle LEDs gleichzeitig ansteuern willst. Auf alle Fälle ist ein SPI Takt von 8Mhz absolut in den machbaren Grenzen für den 74HC595N. Gruß Hagen
Hallo, ich hatte bei Reichelt geschaut. Das ist allerdings ein 74HC595 und kein "N". Ich werde mich dann noch weiter mit diesen Bausteinen beschäftigen. Mal sehen, was ich damit so erreiche. Gruß Toby
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.