Forum: Mikrocontroller und Digitale Elektronik Umfangreiches Projekt bin ich auf dem richtigen Weg?


von Deltal (Gast)


Lesenswert?

Hi MC Forum,

ich habe mich bereit erklärt ein Spiel für eine Hochzeit umzusetzen. Ich 
bin nun am planen, Material bestellen, Platinen designen usw.

Ich hab nunja Kenntnisse auf Anfänger ebene, etwa 20 Programme auf einem 
AVR geschrieben, gut ein duzend Platinen hergestellt.

Also diese Baugruppen muss ich verwursten:

- Ein Schrittmotor mit L297/L298 (Clock und Direction) dazu 
Gabellichtschranke als Referenznocken für den Motor

- Ein Display (wahrscheinlich IC2, dazu ein Drehimpulsgeber -> 
Menüsteuerung)

- "Das Poti" Drehimpulsgeber mit 12 Leds als Rückmeldung

8x Handbedienungen a

 - Zwei RGB LEDs (6x PWM)
 - Drei status LEDs
 - Zwei Standart-Taster
 - Eine Lichtschranke mit Modulation (37Khz?)

--> etwa 36 Eingänge, 100 Ausgänge.


Bisheriger Lösungsansatz:

ATMega 128 als übergeordneter Controller.
 -> Motorsteuerung + "Poti": HW angebunden

Display + Encoder ATmega 32
-> Kommunikation 4bit unidirektional (hier wird nur der Mode 
übertragen). Protokoll in Software.

8x ATtiny für die Handbedienung.
-> Kommunikation über I2C.
Dort 6 Kanal Soft-PWM und 37Khz Signal über HW-PWM.
Jede Bedienung sollte < 10ms einmal daten gelesen und geschrieben haben.
Jede Bedienung wird über etwa 1,5m Leitung an das Hauptboard 
angeschlossen


Bislang hab ich noch mit 3 Dingen bedenken:
- I2C Anbindung von 8 µC
- I2C Anbindung des Displays
- So ein großes Programm schreiben ohne das noch schnell genug arbeitet.


Aber eventuell bin ich ja auch schon mal wieder zu weit und das ganze 
lässt sich noch mit nem Sack voll Schieberegistern bewältigen.. aber 16 
SoftPWMs.. naja

Danke schonmal!

von Max H. (hartl192)


Lesenswert?

Deltal schrieb:
> Aber eventuell bin ich ja auch schon mal wieder zu weit und das ganze
> lässt sich noch mit nem Sack voll Schieberegistern bewältigen..
Schau mal ob du einen µC mit genügend IOs findest, dann kannst du dir 
die Schieberegister sparen.
>aber 16
> SoftPWMs.. naja
Schau dir mal WS2812 LEDs an.

: Bearbeitet durch User
von Gamma (Gast)


Lesenswert?

Deltal schrieb:
> aber 16 SoftPWMs.. naja
Für PWM gibt es auch fertige IC, die seriell angebunden werden können, 
z.B.
über I²C die ganze Ecke um PCA9530 .. 33, PCA9632 ..35, PCA9685 oder via 
SPI die TLC5916, TLC5917 oder TLC5940, um nur einige zu nennen.

von Peter D. (peda)


Lesenswert?

In wieviel Jahren soll denn die Hochzeit sein?

Eine Multiprozessorkomunikation ist für einen Anfänger ein richtig 
harter Brocken. Du mußt erstmal ein Protokoll entwickeln, was Fehler 
erkennt und wieder selber aus dem Fehlerzustand rauskommt.

Wenn es nicht geheim ist, beschreib dochmal ausführlich das Spiel. Dann 
kann man sicher weit besser Tipps geben.

Und wenn es geheim ist, dann tue das nur für Dich. Das ist dann quasi 
Dein Pflichtenheft, ohne das Du mit Sicherheit Schiffbruch erleiden 
wirst.

von Deltal (Gast)


Lesenswert?

Hi,

danke für die Antworten.

PWM ICs sind wohl praktisch, sind jedoch a) nicht so leicht erhältlich 
(oder teuer) und b) fehlt mir die Erfahrung damit. Mein Hintergedanke 
war "bleib erstmal bei dem, was du schoneinmal gemacht hast".

Die Idee hinter dem Multi-µC kram ist: ich kann es leicht testen und 
entwickeln. Timings und Speicher sind erstmal kein Problem und ich 
verteile den code etwas um. Ob ein serieller Bus da die beste Wahl für 
ein Anfänger ist.. nun ja denke da mache ich mir mal über alternativen 
gedanken.


Das Spiel wird wohl eine Mischung aus Reaktion und Wissensquiz. Dazu 
eben Funktionen wie ein Buzzer, countdown usw. Die Spieler sollen über 
bestimme Farben zugeordnet werden können, daher die RGB Geschichte. Der 
Schrittmotor wird für den "Flaschendrehen" Modus benötigt. Da diese 
natürlich nicht zufällig ablaufen soll, muss halt auch eine bestimmte 
Position angefahren werden können.

Der genaue Ablauf wird noch ausgearbeitet, die Hardware ist jedoch 
verbindlich festgelegt worden. Bedeutet ich sehe besser nochmal 10 I/O 
reserve vor ;)

von Karl H. (kbuchegg)


Lesenswert?

> Die Spieler sollen über
> bestimme Farben zugeordnet werden können, daher die RGB Geschichte.


Dazu brauchst da aber nicht notwendigerweise PWM. Mit einer RGB Led, 
deren 3 Farbanschluesse an 3 Pins haengen, kannst du aus dem Stand 
heraus 8 Farben erzeugen: Rot, Gelb, Gruen, Cyan, Blau, Magenta, Weiss 
und ähm 'Nichts'. Wuerde ich mir durch den Kopf gehen lassen und liebrr 
die I2C Sache durch Schieberegister ersetzen, wenn ich mit den Pins 
nicht auskomme. Vereinfacht die Programmierung enorm, wenn alles auf 
einem uC lauft. Speedmaessig ist es anscheinend auf einem einzelnen AVR 
sowieso kein Problem.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Deltal schrieb:
> Die Idee hinter dem Multi-µC kram ist: ich kann es leicht testen und
> entwickeln.

Na dann frag mal einen, der schon länger programmiert, der wird Dir 
genau das Gegenteil sagen.
Kann man vom AVRStudio überhaupt mehrere Instanzen parallel ausführen 
oder benutzt Du mehrere PCs?
Ich würde da wahnsinnig werden, mehrere Programme gleichzeitig 
entwickeln zu müssen.

Wir haben auch einige Geräte mit mehreren MCs. Bevor überhaupt das 
Programmieren anfängt, wird erstmal das Protokoll entwickelt und 
dokumentiert. Dann hat einer den Bus-Treiber (CAN) und die 
Protokollschicht entwickelt und getestet und ne Lib draus gemacht.
Und dann hat jeder die Software für seinen MC programmiert.

von Cyblord -. (cyblord)


Lesenswert?

Das bekommst in 2 Jahren nicht fertig. Wie lange hast du Zeit?

von Urps (Gast)


Lesenswert?

cyblord ---- schrieb:
> Das bekommst in 2 Jahren nicht fertig. Wie lange hast du Zeit?

Ganz grobe Schätzung:

Software: 300 Mannstunden
Hardware: 300 Mannstunden
Kosten: 800 Euro mit Gehäuse und Kabel

von John Doe (Gast)


Lesenswert?

Zum Thema I2C kommunikation:

Für ein Projekt benötige ich ebenfalls ATTinys als Slave.
Als Grundlage hat dieser Code auf anhieb funktioniert:
http://www.jtronics.de/avr-projekte/library-i2c-twi-slave.html

Die Routinen für den Master habe ich von Peter Dannegger, hier aus dem 
Forum, genommen.

Da ich ebenfalls über 1-3m übertragen muss habe ich einen Bustreiber 
(PCA9600) eingesetzt.

von Hans-Georg L. (h-g-l)


Lesenswert?

Das klassische Verfahren ...

1 Master pollt 8 Slaves über Serielle Schnittstelle mit dem 9 Bit 
Protokoll, das fast alle MC beherrschen.

Master sendet Adresse (n)
Slave (n) wird aktiv
Master Sendet Daten (x Byte)
Slave (n) empfängt (x Byte)
Master wartet x ms auf Daten vom Slave
Slave aktiviert senden und schickt (y byte) über den Bus.
Slave(n deaktiviert sich und gibt den Bus wieder frei)
Nächster Slave ...

Im Fehlerfalle reicht es wahrscheinlich aus die Daten zu verwerfen und 
auf den nächsten Zyklus zu warten ...

von X4U (Gast)


Lesenswert?

Deltal schrieb:
> PWM ICs sind wohl praktisch, sind jedoch

a) nicht so leicht erhältlich

wie Butter oder wie ein µc


> (oder teuer)
Deine Zeit ist umsonst


b) fehlt mir die Erfahrung damit.
Sann mach Sie doch. Das ist immer noch einfacher als alles selber zu 
entwickeln. Für RGB leds gibt es auch fertige ICs.



Mein Hintergedanke
> war "bleib erstmal bei dem, was du schoneinmal gemacht hast".

Das genze hast du schon mal gebaut?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Für so ein Projekt würde ich zu einem STM32 mit 144 Pins raten.
Der hat alles drin, bis zu 32 PWM's, jede Menge IOs und Pheriperie.
Es braucht somit nur 1 ųC.

Schaue Dir mal die Artikel zum STM32 an.

von Deltal (Gast)


Lesenswert?

Hi,

danke für die rege Beteiligung ;)

@Karl Heinz
Daran hatte ich schon mal gedacht, jedoch mit schaltbaren Widerständen. 
Denke aber, dass wird so nix. Und "keine" Farbe ist wohl nicht so 
pralle.
Würde ja alles mit Schieberegistern machen, habe aber bedenken mit der 
PWM.


@Peter
Ja.. I2C war auch nur meine erste Idee. Ich .. wünsche.. mir ein System, 
welches einmal programmiert und getestet wird, dann einfach acht mal 
kopieren. Das ganze muss natürlich so simpel sein, dass man es mit nem 
Analyser noch loggen und debuggen kann.

Im Moment grübel ich darüber nach die Kommunikation wie mit einem 
Schieberegister zu machen. Der Master gibt ein Taktsignal. Der Slave 
speichert auf jeder Flanke 2 oder 4 oder 8 Bit weg. Nach x Takten eine 
lange Pause, dann wieder von vorne. Die drei Eingangsbits möglicherweise 
einfach direkt zum Master übertragen.
Selbst ein Takt von etwa 500Hz wäre ja noch schnell genug.


@cyblord und Urps
Im Herbst, ich hoffe aber mal, dass die Entwicklungszeit sich reduzieren 
lässt, wenigstens hab ich Unterstützung beim bau der 
nicht-elektronischen Hardware. Wenn, dann müssen später Abstriche bei 
der Software gemacht werden.. im Moment geht es mir mehr um die Hardware 
und die Auslegung.

@John Doe
sieht ja ziemlich gut aus. Wie viele µC hattest du als Slave 
angeschlossen und welche Übertragungszeiten konntest du erreichen?

@Hans-Georg
Ja, OK ist die alternative zum I2C

@X4U
Im Grunde kosten sie etwas soviel wie ein Tiny + Treiber. Dazu kommt 
halt mein Problem, dass ich mich ausführlich mit Protokollen 
beschäftigen muss. Habe halt ein schlechtes Gefühl dabei, etwas zu 
designen, wo ich später nicht weiss ob es so funktioniert. Das sind halt 
schon komplexe Bauteile wo man erstmal Erfahrungen mit sammeln muss.
Ist halt ne alterative zum µC, dafür müsste ich wieder weitere 
Funktionen woanders unterbringen.
Nein, gebaut habe ich soetwas noch nicht, sonst würde ich ja auch nicht 
eure Zeit in Anspruch nehmen. Aber das Grundprinzip, µC, Bitschubsen, 
PWM erzeugen und Treiber basteln. Das hab ich alles irgendwo schon mal 
gemacht, hab code-fragmente verfügbar usw.

@Markus Müller
würdest du echt jemand raten, welcher mit einem etwas anspruchsvollerem 
AVR Projekt schon überfordert ist, sich noch "mal eben" in einen neuen 
Controller einzuarbeiten?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

In dem Artikel:
STM32 CooCox Installation
Wird gezeigt wie man einen STM32 zum ersten mal programmiert und ein 
paar LED's ansteuert.

Hier ein STM32 Tutorial: http://diller-technologies.de/stm32_wide.html

Ob Du jetzt lieber ein Multiprozessor-Projekt startest oder Dich ein 
wenig mit einem STM32 auseinandersetzen und alles doch lieber mit 
nur einem Prozessor erledigen willst kann ich nicht für Dich 
entscheiden.

Mit der CooCox Umgebung könntest Du nicht nur einen STM32 
programmieren, sondern auch ein LPC17xx oder einen anderen Atmel mit 
Cortex-Mx Kern.
Für umfangreiche Projekte gibt es nun mal auch entsprechend passende 
Prozessoren von vielen Herstellern. Siehe hier:
http://coocox.org/CooCox_CoIDE.htm >> "Supported Device:"

Auch würde ein STM32 (oder LPC1xxx) eine Multiprozessor-Umgebung 
besser unterstützen, da man die mit CAN-Bus vernetzen könnte. (CAN = 
Controller Area Network). Bei AVR ist der CAN leider nur in wenigen 
Chips enthalten.
Ginge zwar auch seriell oder mit SPI, ist jedoch immer mehr 
Programmier-Aufwand.

Viel Spaß mit Deinem Projekt.

von Gamma (Gast)


Lesenswert?

Deltal schrieb:
> PWM ICs sind wohl praktisch, sind jedoch a) nicht so leicht erhältlich
> (oder teuer) und

Wenn du Reichelt und Preise um 1..2€ schon als schwierig empfindest ...

> b) fehlt mir die Erfahrung damit. Mein Hintergedanke
> war "bleib erstmal bei dem, was du schoneinmal gemacht hast".

An Multiprozessorkommunikation und Soft-PWM wirst du mehr zu knacken 
haben, als ein paar Register über I²C zu setzen, zumal du I²C sowieso 
als Basisschnittstelle einsetzen möchtest.

von Kaj (Gast)


Lesenswert?

Hans-Georg Lehnard schrieb:
> 1 Master pollt 8 Slaves über Serielle Schnittstelle mit dem 9 Bit
> Protokoll, das fast alle MC beherrschen.

Und wozu jetzt das 9bit-Protokoll?

von Uwe S. (de0508)


Lesenswert?

Hallo Kaj,

ich denke Hans-Georg Lehnard denkt dabei an das Parity Bit.

Also so etwas 9600Baud, 8 Datenbit, "E"ven Parity, 1 Stoppbit

von Arsenico (Gast)


Lesenswert?

Lieber nicht heiraten !

von Arsenico (Gast)


Lesenswert?

So ein Stress !

von spess53 (Gast)


Lesenswert?

Hi

>Und wozu jetzt das 9bit-Protokoll?

Master-Slave-Mode mit Adressierung.

MfG Spess

von Peter D. (peda)


Lesenswert?

Deltal schrieb:
> Der genaue Ablauf wird noch ausgearbeitet

Davor hat es eh keinen Sinn, schon mit der Hardware anzufangen.

Glaub es mir, ohne eine konkrete Beschreibung (= Pflichtenheft) wird das 
nie was.
Es wird wie jeder andere Versuch, die EiWoMiSa zu erschaffen, kläglich 
scheitern.

von Falk B. (falk)


Lesenswert?

@spess53 (Gast)

>>Und wozu jetzt das 9bit-Protokoll?

>Master-Slave-Mode mit Adressierung.

Womit wir wieder beim Thema Hochzeit wären ;-9

Duckundwech

von Falk B. (falk)


Lesenswert?

Aber das Thema ist hier mal wieder typisch. Viel High Tec Aufwand wegen 
fast nichts. Gerade so, also ob es in erster Linie darum geht, sich zu 
profilieren, anstatt mit einer gesunden Portion Pragmatismus das Problem 
zu lösen.

http://de.wikipedia.org/wiki/Pragmatismus

von Wie ist das? (Gast)


Lesenswert?

Weiche ab Satan!

von Kaj (Gast)


Lesenswert?

Falk Brunner schrieb:
>>>Und wozu jetzt das 9bit-Protokoll?
>
>>Master-Slave-Mode mit Adressierung.
>
> Womit wir wieder beim Thema Hochzeit wären ;-9

:D :D :D

von John Doe (Gast)


Lesenswert?

Deltal schrieb:
> sieht ja ziemlich gut aus. Wie viele µC hattest du als Slave
> angeschlossen und welche Übertragungszeiten konntest du erreichen?

Bisher habe ich es nur experimentell auf dem Steckboard aufgebaut.

Ich hatte zwei Slaves (2x ATtiny861) angeschlossen und den BUS auf Fast 
Mode (400kHz) betrieben.

Weiter bin ich leider noch nicht gekommen. Beruf + Studium = 0 Freizeit 
;-)

von Pragmatiker (Gast)


Lesenswert?

> ich habe mich bereit erklärt ein Spiel für eine Hochzeit umzusetzen. Ich
> bin nun am planen, Material bestellen, Platinen designen usw.

Für eine Hochzeit würde ich auf keinen Fall soviel Mühe und Arbeit 
investieren. Es lohnt sich einfach nicht. Mittlerweile wird ja fast
jede dritte Ehe in Deutschland geschieden.

Realistischer wäre es doch, dem Brautpaar zwei Beratungsgutscheine
für einen Scheidungsanwalt zu schenken! ;-)

PS  Vor Jahren fungierte ich als Trauzeuge bei einem Bekannten 
(Wirtschaftsinformatiker). Die Heirat erfolgte aus rein steuerlichen 
Gründen und wurde vom Brautpaar als eher lästiger Termin wahrgenommen. 
Dementsprechend erschienen wir allesamt im lässigen Freizeitlook im 
Standesamt. So grinste der Standesbeamte dann auch freundlich, als ich 
ihn fragte, wie hoch die Scheidungsrate aktuell in der Stadt sei. :-)

von Karl H. (kbuchegg)


Lesenswert?

Deltal schrieb:
> Hi,
>
> danke für die rege Beteiligung ;)
>
> @Karl Heinz
> Daran hatte ich schon mal gedacht, jedoch mit schaltbaren Widerständen.
> Denke aber, dass wird so nix. Und "keine" Farbe ist wohl nicht so
> pralle.
> Würde ja alles mit Schieberegistern machen, habe aber bedenken mit der
> PWM.

Kann ich verstehen.
Aber wenn wir mal genauer darüber nachdenken, dann ist der Begriff PWM 
da schon recht hoch gegriffen. Denn dir geht es nicht darum, dass du 
jede beliebige Farbe durch Mischung von vielen Farbabstufungen erzeugen 
kannst. Alles was du brauchst, sind 8 unterscheidbare Farben. 7 kriegst 
du gratis und eine 8-te kannst du dir zb erzeugen, indem du nicht 
irgendeine 'PWM' nimmmst, sondern eine 2 Bit PWM. d.h. anstelle von 7 
Farben 'out of the Box' hast du dann 14 Farben und das mit moderat 
anspruchsvollem Code. Eine derartige 'PWM' ist von der Ausgabefrequenz 
auf den Schieberegistern moderat und noch problemlos so machbar, dass 
für den Rest des Programmes genügend Rechenzeit übrig bleibt. Man könnte 
sich zb auch überlegen, ob man eine LED nicht als ein Bauteil mit 3 
Beinen ansieht, sondern als eines mit 4, wobei dann 1 Farbpin der LED 
über 2 unterschiedliche Widerstände an jeweils 2 Pins vom 
Schieberegister hängt.

Aber ist ok. Wenn du dir unbedingt durch den Mehr-µC Aufbau zusätzlichen 
Ärger einholen willst, dann tu das. Ich weiß ja nicht, wie gut du 
programmieren kannst. Aber wenn es für ein paar popelige LED an ein paar 
Schieberegistern, die timergesteuert 100 mal in der Sekunde ihre neuen 
Farbwerte kriegen nicht reicht, dann denk ich mir meinen Teil, wie gut 
du ein Kommunikationsprotokoll implementieren kannst.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Falk Brunner schrieb:
> Aber das Thema ist hier mal wieder typisch. Viel High Tec Aufwand wegen
> fast nichts.

Genau so siehts aus.

Interessant, dass dieser Aufwand gerne von Leuten getrieben wird, die 
sich selbst 'Anfänger' nennen, oder noch schlimmer "eigentlich hab ich 
keine Ahnung", während die alten Hasen zur Einfach-Lösung greifen. Ich 
frage mich warum das wohl so ist. Das sollte einem Anfänger ja 
eigentlich zu denken geben, wenn das Bauchgefühl der alten Hasen von 
etwas abrät. :-)

von Andreas H. (ahz)


Lesenswert?

Karl Heinz schrieb:
> Interessant, dass dieser Aufwand gerne von Leuten getrieben wird, die
> sich selbst 'Anfänger' nennen, oder noch schlimmer "eigentlich hab ich
> keine Ahnung", während die alten Hasen zur Einfach-Lösung greifen.

Ne, Karl Heinz. Das ist einfach die Angst, dass nachher etwas "verpennt" 
wurde und es darum nicht geht.

Mit zunehmender Erfahrung hat man da einfach mehr Überblick was geht und 
wo es schwierig wird.


/regards
Andreas

von Cyblord -. (cyblord)


Lesenswert?

Pragmatiker schrieb:
> So grinste der Standesbeamte dann auch freundlich, als ich
> ihn fragte, wie hoch die Scheidungsrate aktuell in der Stadt sei. :-)
Wie geistreich eine solche Frage während einer Trauung....

von Deltal (Gast)


Lesenswert?

Hallo,

erstmal kurz Update nach dem wir uns am WE mal wieder zusammengesetzt 
haben.
Das ganze ist wie schon vorhergesehen, noch einmal zusammengestrichen 
worden. Hauptsächlich wollte ich die Farben und Lampen weghaben, weil 
diese am meisten Arbeit machen. Außerdem wurden Display und Menu auf 
drei Schalter reduziert.
Beschreibung der drei Modi wurde erstellt. Im Prinzip ein "Quizzer", ein 
Zufallsgenerator mit dem Schrittmotor und eine Geschicklichkeitsübung 
mit Reedschalter und Pendel.

Durch den Wegfall der meisten Ausgänge reicht nun ein µC mit ein paar 
Schieberegistern.

Die Platine(n) sind etwa zu 80% fertig, Teile bestellt. Mal schauen ob 
ich mich weiter motivieren kann :)

>Für eine Hochzeit würde ich auf keinen Fall soviel Mühe und Arbeit
>investieren.

Tjo, hier ist das halt schon gang und gebe, dass man eben nicht versucht 
immer die selben 0815 Spiele durchzuzieren. Außerdem ist das ganze dann 
ja auch noch Geschenk und wird wohl noch den einen oder anderen Abend 
mal genutzt werden.


So und nun.. warum muss es eigentlich immer so negativ zugehen? Ich 
komme hier herein und frage (betont als Anfänger) wie man so etwas lösen 
kann und wie ihr so etwas lösen würdet. Dazu habe ich meine Ideen 
geschrieben.

> Aber das Thema ist hier mal wieder typisch. Viel High Tec Aufwand wegen
> fast nichts.

Ich hab nichts gegen einfache low-tec Lösungen. Die RGBs wollte ich z.B. 
über 2x3 Bit mit je einem Select Bit ansteuern. Das wären dann zwar 
viele Leitungen geworden, aber das Protokoll und die Umsetzung einfach.

Nur wie bitte soll jemand, der sich als Anfänger outet da den Überblick 
habe? Genau in dem er andere Leute mit mehr Ahnung fragt.

Habe ja auch gute Ideen bekommen und bin dafür dankbar. Aber warum dann 
noch gemeckert werden?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Manche verwechseln Mikrocontroller.net mit MeckerconTroller.net

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
Noch kein Account? Hier anmelden.