Hallo alle zusammen. Ich bin schon seit ca. 5 Jahren hier, habe aber nur ein paar mal um Hilfe gebeten. Heute ist es wieder soweit. Ich würde mich freuen, wenn einer von euch sich persönlich meinem Projekt widmet. Ich könnte natürlich alles hier posten, das würde aber sehr viel Zeit kosten und würde wahrscheinlich nicht schnell zum Erfolg führen. Wenn das aber nicht anders geht, dann auch gerne so. Ich würde gerne dafür auch zahlen, wenn mir jemand mein Programm so ändert dass es auch funktioniert. Ich habe einen at mega 8 und 5 Eingänge digital und 5 Ausgänge digital. Alles sind wenn / dann Bedingungen und auch Bedingungen so wie: solange der Eingang 1 nicht betätigt wird, solange soll der ausgang 3 betätigt sein. Es sind aber auch viele Verschachtelungen vorhanden. Ich denke mal ein profi brauch für das ganze Programm 20 Minuten. Wie könnte ich mit eurer Hilfe zum Ziel kommen? Um die Erstattung der Fahrtkosten etc. sorge ich natürlich. Danke erst mal!
Darko D. schrieb: > Ich denke mal ein profi brauch für das ganze Programm 20 Minuten. Du kriegst die Aufgabe des Programms selber nicht einmal geordnet dargestellt und meinst beurteilen zu können, wie lange ein Profi dafür braucht. Ein Vielfaches der 20 Minuten gehen wahrscheinlich schon alleine dafür drauf, um dir zu erzählen, wie du ihm dein Problem in verständlicher Form (i.e. logisch strukturiert) verklaren kannst.
Mach erst mal ein Programmablaufplan/PAP. Dann geht es weiter.
Hallo. Es tut mir leid, wenn ich mich nicht so gut ausdrücken kann. Ich wollte damit nur sagen, dass es vom Anspruch nicht so hoch ist. Es sind eig. nur wenn dann Bedingungen die ineinander verschachtelt sind. Ich habe ein ordentliches Flussdiagramm gemalt. Ich werde es gleich hochladen. LG
Bier und Popkorn stehen schon bereit… Oliver
:
Bearbeitet durch User
Das hier ist vom AT Mega 8 die Belegung (wenn das so geht) hoffe ich:
Als letztes möchte ich noch das unvollständige und nicht korrekte Programm als txt datei zur Verfügung stellen. Oli, für Essen und trinken wird auch gesorgt!
Deine Hausaufgaben machst du besser selbst. Dann lernst du auch etwas.
Darko D. schrieb: > Das hier ist vom AT Mega 8 die Belegung (wenn das so geht) hoffe > ich: Warum hast du beispielsweise beim "Port C4" dahinter (rot) geschrieben "Port C15"? Ähnlich bei anderen Ports...
Hallo. ja das stimmt wohl. Ich bin allerdings vor wenigen wochen Vater geworden und dann ist es immer mit der Zeit so eine sache... Ich würde mich dennoch freuen, wenn mir jemand die ersten 5 Zeilen erst mal stilistisch i.O. bringt, denn das == false oder true ist glaube ich falsch...
Darko D. schrieb: > Schaltung_Verlauf.bmp > 5,36 MB Darko D. schrieb: > AT_Mega8.bmp > 3,46 MB Erst lesen, dann posten. Was könnte der Hinweis "Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen" wohl bedeuten? Fällt dir etwas auf?
Hallo pnp. Das kann ich dir sagen. Weil ich mich verechnet habe. Ich glaube B7 bedeutet das B1 und B2 und B3 zusammen angesteuert werden, ist das richtig? Es hätte jeweils 1 mehr heißen müssen oder?
Ich habe beides in PNG geändert. Danke für den Hinweis.
Ich gaube ich erinnere mich. Port C0 heißt im Programm C1 weil 2hoch null gleich 1 ergibt. Port c1 heißt im Programm c2 weil 2hoch eins gleich 2 ergibt. und so weiter. Und C5 im programm wäre dann der vierer und der einser zusammen...
Darko D. schrieb: > Hallo pnp. > Das kann ich dir sagen. > > Weil ich mich verechnet habe. Ich glaube B7 bedeutet das B1 und B2 und > B3 zusammen angesteuert werden, ist das richtig? Es hätte jeweils 1 mehr > heißen müssen oder? Nein. "Port C4" heißt "PortC Pin4". Und wo sich dieser am µC befindet, ist im Datenblatt festgelegt. Du kannst nicht einfach aus einer 4 eine 15 machen. :-)
Danke danke. Ich habe da nicht einfach ne 15 draus gemacht. Port c4 im Programm wäre dann Port zwei hoch 4 und das ist dann PortC16. Ich habe mich wie gesagt immer um einen vertan.
Mir fällt sofort auf, dass das Programm drei tote Enden hat. Was passiert danach? Wenn du danach nicht kit dem Weltuntergang rechnest, dann muss es dort irgendwie weiter gehen. Weiterhin fehlt mir da jegliche Fehlerbehandlung. In so einem Diagramm würde ich die auch nicht einzeichnen, aber wenigstens als Text dazu liefern. Beispiele: > Ventil auf ansteuern bis Endlage erreicht Und wenn die Endlage nicht erreicht wird, was dann? Wie lange darf das dauern? > Betätigung Schalter auf/zu B31 Was soll passieren, wenn der Schalter zwischendurch während des folgenden Ablaufes erneut betätigt wird? Bei deinen ganzen Kästchen wird nicht klar zwischen Bedingungen, Ereignissen und Reaktionen unterschieden. Das solltest du klarer darstellen, durch unterschiedliche Symbole. Die ersten 10 Minuten sind schon vorbei. So viel zu den 20 Minuten.
> if(PORTB |=(1<<31) == true)
Habs nicht geprüft, aber das wird nie wahr werden.
1. eine Zuweisung im if ist meist bedenklich
2. das "== true" ist überflüssig, oder tut nicht das was du möchtest
3. die (1<<31) ? das wird sicherlich nicht das tun, was beabsichtigt
ist.
3 Böcke in einer Zeile!
Oha ihr macht mir Mut... Also eine Fehlerbehandlung soll da nicht mit eingebaut werden. Das wird dann zu kompliziert. Es handelt sich um eine Klappe die Auf und zu gehen soll. Es soll solange angesteuert werden bis die endlage erreicht ist. Die endlage wird irgendwann erreicht. Warum soll sie nicht erreicht werden. Das dauert schätzungsweise ca. 5 bis 7 sekunden. Wenn die endlage nicht erreicht wird ist irgendwas kaputt. das sehe ich dann ja. Das Programm soll nicht ins tote laufen. Solange der taster nicht betätigt wird, passiert auch nichts. Am besten wäre es wenn der taster (B32) während der prozedur stillgelegt werden könnte. bis ein Ende erreicht ist.
Zum Programm Entwurf: Bin nur Arduino, könnte mich auf C runter beugen. Verstehe aber den Plan nicht. Müsste erstmal wissen/verstehen was der ganze Kram den überhaupt sein soll. Welche Klappe welchen Sinn hat. Das ganze riecht nach einem "Zustandsautomaten"! Es stinkt geradezu danach. Also denkt man auch in Zuständen! Klar benennen! Aufzählungen! Die Bedingungen für den Wechsel der Zustände klar benennen. Dort in if Verschachtelungen zu denken, geht fix schief. 1 Ebene mit einer einfachen Bedingung ist leicht zu überblicken Je mehr Ebenen und je komplexer die Bedingungen, desto gruseliger der Debug Aufwand.
Aber ich glaube, dass das Programm von oben nach unten läuft. das bedeutet wenn einmal eine if Prüfung stattgefunden hat, dann ist er in der Prozedur drinnen. Wenn sich der Status dann ändert spielt es keine Rolle. die Bedingung wird dann stumpf abgearbeitet.
Kann ich ein Video von der Klappe machen? Vielleicht ist das Anschaulicher? Es wäre schade, wenn das zwei Jahre lange Projekt am Programm scheitert...
> if(PORTB |=(1<<31) == true)
das sollte eig. bedeuten als text:
Wenn PB5 belegt ist, dann soll ....
Wie heist es denn in der Programmiersprache richtig?
Warum machst du dir das Leben so schwer und benennst die Pins nicht? Wenn die Klappe an PortB B4 hängt, schreibst du:
1 | #define Klappe 4
|
2 | // und als PortB
|
3 | #define Ausgang PORTB
|
4 | // dann kannst du schreiben
|
5 | Ausgang |= (1 << Klappe); // Klappe auf |
6 | Ausgang &= ~(1 << Klappe); // Klappe zu |
Darko D. schrieb: >> if(PORTB |=(1<<31) == true) > > das sollte eig. bedeuten als text: > > Wenn PB5 belegt ist, dann soll .... > > Wie heist es denn in der Programmiersprache richtig? Vermutlich: if(PORTB | (1<<PB5))
Ok. Das sieht optisch schon mal gut aus. Und wie sieht es aus, wenn das ganze nicht true sein soll also wenn PB5 False ist dann....
Ich würde zu einer Siemens Logo greifen, nix gebastel… funktioniert auch in 10 Jahren noch und wenn nicht, gibts Ersatz… Meine Meinung und eigene Erfahrung
Wird bestimmt auch zuverlässig funktionieren. Es ist bei mir schon quasi alles fertig, es fehlt nur noch das Programm. Gebastelt ist bei mir nichts. Alle elektrischen und pneumatischen Normen wurden eingehalten.
Oha, drei Klammern zu am ende. WAHNSINN! Danke! Ich hoffe ich bekomme noch ein Weihnachtsgeschenk von einem aus Bremen und Umgehbung und es klingelt an der Türe :-)
| << --das war falsch! Sorry Wie gesagt, das mit den Bedingungen nervt fürchterlich. Ein Scheunentor für Flüchtigkeitsfehler. Wie ich sie gerade wieder gebaut habe.... Schon gesagt, ich würde es gänzlich anders angehen!
Ja ich möchte das gerne durchziehen. Ein anderer Weg ist mir nicht bekannt noch habe ich die Möglichkeit jetzt einen ganz anderen Weg einzuschlagen. Ich bekomme es zur Not mit Opferung des ganzen Winterurlaubes ab morgen auch irgendwie hin. Ich sehe sowas als nichts Unmögliches 5 oder 10 Bedingungen aufzustellen. Es fehlen mir einfach auch die Grundlagen. Da muss ich mich leider vielleicht selbst einarbeiten...
Darko D. schrieb: > Oha, drei Klammern zu am ende. WAHNSINN! Deswegen kapselt man sich so etwas in Funktionen: mit sprechenden Namen:
1 | bool schalter_klappe_gedrueckt() |
2 | {
|
3 | return (PORTB && (1<<PB5))==0; |
4 | }
|
5 | |
6 | |
7 | if (schalter_klappe_gedrueckt()) |
8 | {
|
9 | tue dies; |
10 | }
|
11 | |
12 | if (!schalter_klappe_gedrueckt()) |
13 | {
|
14 | tue das; |
15 | }
|
Gleiches gilt für die Ansteuerung der Ausgänge
Darko D. schrieb: > Also eine Fehlerbehandlung soll da nicht mit eingebaut werden. Das wird > dann zu kompliziert. Mal ehrlich...haste in der Firma beim Schrottwichteln den Hauptgewinn gezogen??? Als allererstes erwarte ich mal ein irgendwie geartetes Flußdiagramm, das zeigt, was alles soll, was nicht soll und was kann und was nicht kann usw... wenn du schon daran scheiterst, dann brauchst du mit Programm gar nicht erst anfangen! Sorry, aber meine Meinung ... Gruß Rainer
Darko D. schrieb: > Aber ich glaube, dass das Programm von oben nach unten läuft. Früher oder später wird es komplexer, mit Ereignissen die den normalen einfachen Ablauf unterbrechen. Spätestens dann wirst du uns für den Tipp mit dem Zustandsautomaten dankbar sein. Hier ein bisschen Anregung, wie man Zustandsautomaten grafisch und als Tabelle darstellen kann. Mein persönlicher Favorit ist die Tabelle. http://stefanfrings.de/multithreading_arduino/index.html#planung
Darko D. schrieb: > Ok. Das sieht optisch schon mal gut aus. Und wie sieht es aus, wenn das > ganze nicht true sein soll also wenn PB5 False ist dann.... Beitrag "Re: Einen einzelnen Pin abfragen" https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing%C3%A4nge_(Wie_kommen_Signale_in_den_%C2%B5C)
1 | /* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB geloescht (0) ist */
|
2 | if ( !(PINB & (1<<PINB5)) ) { |
3 | /* Aktion */
|
4 | }
|
Darko D. schrieb: > Also eine Fehlerbehandlung soll da nicht mit eingebaut werden. > Das wird dann zu kompliziert. Das ist der Punkt, wo ich den Auftrag ablehnen würde. Außer, du unterzeichnest mir einen Freibrief für ein beliebig schlechtes Ergebnis mit deinem eigenen Blut, sowie einer Unterlassens-Erklärung, diesen Fall jemals öffentlich zu machen. Ach Käse, dafür ist es schon zu spät. Also ich gebe dir gerne Tipps, aber ich werde dir nichts programmieren.
Axel R. schrieb: > Darko D. schrieb: >> Ok. Das sieht optisch schon mal gut aus. Und wie sieht es aus, wenn das >> ganze nicht true sein soll also wenn PB5 False ist dann.... > > Beitrag "Re: Einen einzelnen Pin abfragen" > https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing%C3%A4nge_(Wie_kommen_Signale_in_den_%C2%B5C) > >
1 | > /* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB |
2 | > geloescht (0) ist */
|
3 | > if ( !(PINB & (1<<PINB5)) ) { |
4 | > /* Aktion */ |
5 | > } |
6 | >
|
Ich hab den Kommentar ausm Tutorial nicht angepasst. Da muss dann tatsächlich die korrespondierende Zahl hin -> "5", in deinem Fall. Nicht die "ZWEI", sry
Stefan ⛄ F. schrieb: > bool schalter_klappe_gedrueckt() > { > return (PORTB && (1<<PB5))==0; > } Sorry, um Eingänge zu lesen muss man natürlich PINB schreiben und nur ein &.
Darko D. schrieb: > Hallo pnp. > Das kann ich dir sagen. > > Weil ich mich verechnet habe. Ich glaube B7 bedeutet das B1 und B2 und > B3 zusammen angesteuert werden, ist das richtig? Es hätte jeweils 1 mehr > heißen müssen oder? DAS IST FALSCH ! B7 ist ein NAME / Label der in io.h definiert ist. Das ist kein Wert mit dem man rechnen kann ! Bitte mal hier lesen : https://de.wikibooks.org/wiki/C-Programmierung_mit_AVR-GCC/_IO-Ports Daa sind auch Beispiele für den Mega8 angegeben.
Wenn ihn diese ganzen Fehler nicht vollends verwirren, wäre ich überrascht.
> Warum soll sie nicht erreicht werden.
Was soll denn passieren, wenn in der Klappe die Katze oder der Otter
drin stecken und nicht alleine raus kommen. Läuft das Programm dann zum
Abort?
mfG
Darko D. schrieb: > Es fehlen mir einfach auch die Grundlagen. > Da muss ich mich leider vielleicht selbst einarbeiten... Wenn jetzt schon 2 Jahre ins Land gezogen sind, dann sehe ich da etwas schwarz. Darko D. schrieb: > noch habe ich die Möglichkeit jetzt einen ganz anderen Weg > einzuschlagen. Wenn die Aufgabe einen endlichen Automaten erfordert, dann wird die Endlösung auch ein solcher sein. Egal ob du weißt, was das ist, oder jemals beabsichtigt hast einen solchen zu bauen. Ich halte es für einfacher ihn dann auch so zu nennen und die ausgetretenen Pfade zu nutzen. Tipp: Du bist nicht der erste, der einen solchen Automaten baut. Grob vereinfacht: Alle Ablaufsteuerungen sind endliche Automaten (Zustandsmaschinen)
Darko D. schrieb: > Ich habe einen at mega 8 und 5 Eingänge digital und 5 Ausgänge digital. > > Alles sind wenn / dann Bedingungen und auch Bedingungen so wie: > > solange der Eingang 1 nicht betätigt wird, solange soll der ausgang 3 > betätigt sein. Also wenn ich das richtig verstehe, gibt es auf die 32 möglichen Eingangskombinationen auch nur maximal 32 Ausgangskombinationen? > Es sind aber auch viele Verschachtelungen vorhanden. Schmeißt das die oberen Aussagen wieder um? Schmeiß die 5 Eingangsbits in die 5 untersten Bits eines Bytes und hole damit eine weitere Zahl aus einem Array, in der sich die Kombination der 5 Ausgangsbits befindet. Dafür musst Du vorher eine Tabelle machen, in der das, was Du eigentlich möchtest, drin steht. Sprich: Für jede Eingangskombination musst Du für jeden Ausgang eine Entscheidung treffen, ob dieser bei der Kombination an oder aus sein soll. Du könntest diese Tabelle prinzipiell auch in ein EPROM oder GAL brennen und dann ohne Prozessor arbeiten. EPROM ginge mit viel Geduld und Konzentration sogar von Hand. Gruß Jobst
Jobst M. schrieb: > Du könntest diese Tabelle prinzipiell auch in ein EPROM oder GAL brennen > und dann ohne Prozessor arbeiten So einfach ist es nicht. Du hast wohl übersehen dass da Zeitverzögerungen mit drin sind und bestimmte Teile erst ausgeführt werden sollen, nachdem vorher etwas anderes passierte. Bei einem kommerziellen Auftrag wären jetzt schon Reisekosten und mindestens 2 Stunden Meeting angefallen. So viel zu "Ich denke mal ein Profi brauch für das ganze Programm 20 Minuten".
Matthias S. schrieb: > Warum machst du dir das Leben so schwer und benennst die Pins nicht? An dem Ding ist Mechanik dran, die aus Sicht des µC unendlich langsam reagiert. Das schreit danach, einen ATMega328 zu nehmen und das in Arduino zu machen, vorne alles schön mit Klarnamen deklariert:
1 | digitalWrite (Relais, HIGH); |
2 | digitalWrite (LEDRed, LOW); |
3 | if ((digitalRead(StartKey) == LOW) ... |
Vor xx-Jahren habe ich ein paar Ablaufsteuerungen auf MC68HC805 in Assembler gemacht, die direkte Portklempnerei mit and / or würde ich mir heutzutage nicht mehr antun wollen. Darko D. schrieb: > Ich bekomme es zur Not mit Opferung des ganzen > Winterurlaubes ab morgen auch irgendwie hin. Ah ja, soweit zu "20 Minuten" Für mich liest sich das so, dass Du in der Firma eine Aufgabe bekommen hast, der Du nicht gewachsen bist. > Ich sehe sowas als nichts > Unmögliches 5 oder 10 Bedingungen aufzustellen. Ich auch nicht, aber werde es nicht für Dich machen. > Da muss ich mich leider vielleicht selbst einarbeiten... Besser ist das. Wenn das dann fertig ist und an die reale Maschine kommt, wird es nicht sauber funktionieren, da sollte man die Software selbst in der Hand haben und direkt anpassen können.
Hallo. Danke wirklich an die die mir irgendwie geholfen haben. Ich habe das mit den 20 Minuten wohl zeitlich total verschätzt. Ich kenne mich damit auch gar nicht so aus. Wir werden jetzt so verbleiben, dass ich selbst das zum laufen bekomme, den Quellcode hier poste und dann den quellcode nur für den feinschliff zum überfliegen sehe. Es geht schließlich nur darum eine blöde Klappe auf und ab zu fahren. Ich möchte kein neues Auto erfinden was weniger Sprit verbraucht. Ich kann mir auch bei aller liebe nicht erklären, was an dem Flussdiagramm nicht zu verstehen ist. Ich habe mir wirklich viel mühe gegeben und weiß auch nicht wie ich das anders schreiben soll. Ich habe ja angeboten ein Video zu posten. Aber das wurde leider übersehen. Nagut dann bis in ca. 2 wochen. LG Darko aus Bremen
Interessant, dass das eine Aufgabe aus der Firma sein soll! Kreativität ist hier ja groß geschrieben!!!
Darko D. schrieb: > Ich habe mir wirklich viel mühe gegeben und weiß auch nicht wie ich das > anders schreiben soll. Ich habe ja angeboten ein Video zu posten. Aber > das wurde leider übersehen. Aus dem ganzen Hintergrundrauschen das Gehaltvolle raus zu ziehen ist extrem schwierig, für einen Anfänger unmöglich. Leg alles zur Seite und fang neu an. Eine SPS zu verwenden ist sicher kein schlechter Tipp, heißt aber eine neue Dose der Pandora aufzumachen. Und heißt auch, SPS lernen. Falls es unbedingt eine uC-Lösung sein soll, würde ich vielleicht noch Richtung Stefan hören, und mir die Geschichte mir dem Zustandsautomaten ankucken. Das heißt aber, erst mal Basics lernen. Als Nächstes lernst du zu abstrahieren, denken auf hohem Niveau. Für deinen Basisentwurf vergisst du erst mal so Dinge wie B7 und 2-hoch-irgendwas, oder auch & und ||. Du brauchst erst einen Plan, der funktioniert und keinen Programmcode. Und dann lernst du C oder C++ oder was auch immer. Erst danach kannst Du daran denken, zu coden ... just my 2ct
Darko D. schrieb: > Interessant, dass das eine Aufgabe aus der Firma sein soll! > Kreativität ist hier ja groß geschrieben!!! Du mußt das so verstehen, dass es in Firmen immer mal wieder Chefs gibt, die eine vermeindlich einfache Aufgabe einfach demjenigen an den Hals hängen, der nicht rechtzeitig in Deckung gegangen ist. Wobei der Chef ganz diffus im Kopf hat, dass in seiner Truppe prinzipiell jeder alles kann! Dass das nicht so ist - sein muß - interessiert den Chef erst mal nicht und die Mitarbeiter haben auch kein Interesse daran, an dieser Meinung groß was zu ändern. So kann es jemanden aus der Truppe eben ganz bös erwischen und dann könnte er z.B. so einen "Hilferuf" wie deinen hier ablassen :-) Gruß Rainer
Darko D. schrieb: > Es geht schließlich nur darum eine blöde Klappe auf und ab zu fahren. > Ich möchte kein neues Auto erfinden was weniger Sprit verbraucht. > Ich kann mir auch bei aller liebe nicht erklären, was an dem > Flussdiagramm nicht zu verstehen ist. Ein kleines Verständnisproblem kann das ganze bisher geschriebene hinfällig machen. Aus dem Grund will ein erfahrener Programmierer immer das gesamte vollständig verstanden haben! Ein Bild. Wenn das Bild im Kopf, auf Papier, klar ist, dann ist programmieren nur wie ein malen nach Zahlen. Und nein, dein Flussdiagram ist ein Anfang, aber sicher nicht komplett verständlich, wenn man den Apparat nicht kennt. Bedenke: Keiner hier, kennt deine Maschine. Keiner kann die logischen Fehler erkennen, welche du da evtl eingebaut hast. Ich kann nur sagen, deine Erklärungen sind unzureichend. Bisher. Darko D. schrieb: > Ich habe ja angeboten ein Video zu posten. Aber > das wurde leider übersehen. Du möchtest, dass ich/wir nach Information betteln?!?!?! Das kannst du knicken! Entweder lieferst du die nötige Information, wenn dir geholfen werden soll. Oder du lieferst eben nicht.
my2ct schrieb: > Ein Vielfaches der 20 Minuten gehen wahrscheinlich schon alleine dafür > drauf, ... Jetzt sind wir schon bei über 7 1/2 Stunden ...
my2ct schrieb: > my2ct schrieb: >> Ein Vielfaches der 20 Minuten gehen wahrscheinlich schon alleine dafür >> drauf, ... > > Jetzt sind wir schon bei über 7 1/2 Stunden ... Naja, die ~20 Minuten sind durchaus realistisch wenn der TE in der Lage ist seine Anforderung vollständig(!) und fehlerfrei zu formulieren. Das bedeutet insbesondere KEIN Video vom Ablauf zu posten, was man nicht mit Worten formulieren kann, kann man auch nicht implementieren. Eigentlich eine einfache Sache. Aber Formulierungen wie Ventilklappe auf bis Ende (C7) sind einfach nicht präzise genug. Es muss vielmehr ein Aktoren Kommando sein C6 inaktiv + C7 aktiv und dann eine Prüfung auf B3 aktiv + B7 inaktiv und das in einer Schleife mit einer maximalen Wartezeit und einer Fehlerbehandlung wenn es zu lange dauert oder unplausible Informationen ankommen z.B. B3 und B7 gleichzeitig aktiv. etc, etc. Wenn man alle Elemente im PAP auf diese Art schon sprachlich formuliert, kann man es praktisch direkt in Quelltext gießen.
:
Bearbeitet durch User
Hallo alle zusammen. Ich habe eingesehen, dass die 20 Minuten nicht realistisch sind. Diese Zeit bezog sich allerdings rein auf das Programmieren. Ich bin davon ausgegangen, dass das Flussdiagramm selbsterklärend ist. Dem ist aber nicht so. Ich bin leider nicht in der Lage noch präzisere Informationen zu liefern, weil das Diagramm für mich zu 100 Prozent selbsterklärend ist. Wir verbleiben einfach so, dass ich das ganze zum Laufen bekomme und Ihr dann vielleicht darüber schaut, ob das so in Ordnung ist oder ob man das verbessern kann. Was ich natürlich gerne machen könnte wären Fragen beantworten wie zum Beispiel: Was soll passieren wenn der Endlagenschalter nicht erreicht wird? Antwort: es soll so lange versucht werden bis der erreicht wird, auch wenn es 100 Jahre dauert, denn dann muss was kaputt sein. Und dann muss es repariert werden. Ich hoffe das ich auch nach der schwerwiegenden Niederlage gestern in ca. 2 Wochen auf euch zugreifen kann. Und für diese geringen Anforderungen muss man sicherlich kein Programmierprofi sein. Ich denke, dass ich es selbst schaffen werde nach einiger Zeit.
Meine Frau war gestern sauer auf euch, weil Ihr mir nicht so direkt geholfen habt. Ich habe das ein wenig anders gesehen. Ich komme normalerweise aus einem ganz anderen Forum. Dort heißt es oft: Mein Auto springt nicht an, woran liegt es? Darüber rege ich mich auch so auf über die unpräzisen Informationen so wie ihr es auch macht. So hart ist das Leben einfach :-)
Stefan ⛄ F. schrieb: > Du hast wohl übersehen dass da > Zeitverzögerungen mit drin sind und bestimmte Teile erst ausgeführt > werden sollen, nachdem vorher etwas anderes passierte. Offensichtlich ist es mir durch die Lappen gegangen. Danke! Dann muss man eben einfach Rückkopplungen von weiteren Aus- und Eingängen auf weitere Eingänge schaffen. Jede Anforderung Multipliziert den Aufwand dann. Dennoch hängt alles daran, dass dafür die Anforderungen in einer Übersicht aufgelistet werden müssen. Aber da sind sich hier ja alle einig. Gruß Jobst
Darko D. schrieb: > ich auch nach der schwerwiegenden Niederlage gestern Eine Enttäuschung? Das ist ein wahrhaft positives Erlebnis, oder? Denn eine (selbst)Täuschung ist von dir genommen. Jetzt kann es, der Wahrhaftigkeit ins Gesicht blickend, weiter gehen! Darko D. schrieb: > Ich bin leider nicht in der > Lage noch präzisere Informationen zu liefern, weil das Diagramm für mich > zu 100 Prozent selbsterklärend ist. Du hast die Maschine vor dir! Wir sehen nichts. Wenn denn wenigstens die Klötzchen in deinem Flussdiagramm eindeutig benannt wären.... Dann könnte man sie einzeln besprechen. Sind sie aber nicht. Hinter einigen Klötzchen verbergen sich auch wieder Abläufe, endliche Automaten. Es ist ein Automaten Zoo. Ich mache mal den Propheten: Du wirst in deinen Bedingungen und Schachtelungstiefen ersaufen. Der einzige Ausweg daraus: Klarheit schaffen. Klarheit in den Gedanken, und auf dem Papier.
Darko D. schrieb: > Meine Frau war gestern sauer auf euch, weil Ihr mir nicht so direkt > geholfen habt. Tja, das Leben ist kein Schuhgeschäft mit cooler Musik! Schönen Gruß! :-D Gruß Jobst
Ja wahscheinlich habt ihr alle Recht. Ich werde es einfach versuchen und daraus lernen müssen. Eventuell auch so, wie man es nicht macht. So ganz undurchsichtig ist es für mich allerdings nicht. Ihr habt Recht, dass ihr weder die Klappe noch die ganze Mechanik dahinter gesehen habt. Das Ziel des Forums ist es ja nicht irgendwelche Leute zu enttäuschen, sondern zu helfen. (Zumindest die meisten) Manchmal ist die Realität aber eine andere wie man sie selbst wahrnimmt.
Oder du lässt es gegen Bezahlung von jemanden machen. Selber machen ist natürlich am billigsten.
Ja das war ja auch mein Gedanke. Deshalb ja auch aus dem Raum Bremen. Allerding habe ich mich da zeittechnisch offensichtlich völlig verschätzt. Mit allem drum und dran wären es dann vielleicht 4 oder 5 Stunden Arbeitszeit mit Anfahrt und pi pa po. Mehrere hundert Euro für den Quellcode kann ich nicht zahlen.
Ich bin von einer reinen Schreibzeit von vielleicht 20 bis 30 Minuten ausgegangen. Allerdings war mir nicht bewusst, dass die Rahmenbedingungen nicht in Ordnung sind. Ich kenne die Klappe ja nun innen und auswendig, weil ich sie ja selbst gebaut / geschweißt und konstruiert habe. Ihr nicht.
Darko D. schrieb: > Das Ziel des Forums ist es ja nicht irgendwelche Leute zu enttäuschen, > sondern zu helfen. Falsch! Täuschungen und Irrtümer beseitigen ist einer der Zwecke des Forums. Ohne geht es nicht vorwärts. Für "Täuschungen beseitigen" gibt es ein Wort: Enttäuschen
EAF schrieb: >> Ich bin leider nicht in der >> Lage noch präzisere Informationen zu liefern > Du hast die Maschine vor dir! Ja, schon aber es hat halt nicht jedermann das Talent, seine Anforderungen technisch und logisch sauber zu formulieren. Wir haben in unserer Firma genau so viele technische Projektleiter wie Softwareentwickler um den Kunden genau dabei zu helfen. Und die haben alle immer gut zu tun.
Hallo, Tim T. schrieb: > Aber Formulierungen wie Ventilklappe auf bis Ende (C7) sind einfach > nicht präzise genug. Es muss vielmehr ein Aktoren Kommando sein C6 > inaktiv + C7 aktiv und dann eine Prüfung auf B3 aktiv + B7 inaktiv und > das in einer Schleife mit einer maximalen Wartezeit und einer > Fehlerbehandlung wenn es zu lange dauert oder unplausible Informationen > ankommen z.B. B3 und B7 gleichzeitig aktiv. etc, etc. Nehmen wir mal an vor du würdest als Kunde vor einem Dienstleister sitzen und ihm von deinem Problem erzählen und darum bitten dafür eine Lösung zu finden und der Dienstleister würde dir sagen du sollst doch gefälligst erst mal dein Problem präzisieren, denn "wenn man alle Elemente im PAP auf diese Art schon sprachlich formuliert, kann man es praktisch direkt in Quelltext gießen". Was würdest du dann denken? rhf
EAF schrieb: > Der einzige Ausweg daraus: Klarheit schaffen. > Klarheit in den Gedanken, und auf dem Papier. Jawohl. Leider kommt die Einsicht oft erst zu spät, nachdem der erste Wurf nicht zufrieden stellte. Beim Ausbessern merkt man erst nach vielen Stunden, dass das Grundgerüst unzureichend ausbaufähig ist und man quasi nochmal mit einem neuen Konzept von vorne anfangen muss. Bis dahin hat man bereits das dreifache an Zeit/Geld hinein gesteckt, als nötig gewesen wäre.
Ich würde antworten, dass ich nicht weiß was PAP ist und was Elemente sind. Und auf die Probleme würde ich sagen, dass die Klappe hochfahren muss und die Absaugung aus sein soll dabei und das im moment nicht funktioniert.
Darko D. schrieb: > Ich werde es einfach versuchen und > daraus lernen müssen. Eventuell auch so, wie man es nicht macht Mach mal. Wenn es ein Hobby ist, dann kann man mit dem Aufwand ja auch leben.
Darko D. schrieb: > Allerding habe ich mich da zeittechnisch offensichtlich völlig > verschätzt. > Mit allem drum und dran wären es dann vielleicht 4 oder 5 Stunden > Arbeitszeit mit Anfahrt und pi pa po. Stop! Du maßt dir schon wieder an, den Aufwand schätzen zu können obwohl du gerade erst bemerkt hast, dass du genau das nicht kannst! > Mehrere hundert Euro für den Quellcode kann ich nicht zahlen. Das wird aber so viel kosten, wenn du es machen lässt.
Roland F. schrieb: > Nehmen wir mal an vor du würdest als Kunde vor einem Dienstleister > sitzen und ihm von deinem Problem erzählen ... > Was würdest du dann denken? Wir sind hier aber Kunde und Dienstleister.
Ja also ganz ungern mache ich es nicht. Der Lernfaktor ist bei mir auch wichtig. Allerdings habe ich im Moment ein kleines Kind zu Hause (3 Monate) und die Klappe ist jetzt zu 95 % Fertig (2 Jahre Aufbauzeit) Nur die Software fehlt quasi. Es wäre schade wenn das Ganze noch 2 Jahre jetzt dauern würde.
Stefan ⛄ F. schrieb: > Wir sind hier aber Kunde und Dienstleister. Das nicht fehlte. Wir sind nicht Kunde und Dienstleister. Wer hier wie ein Kunde behandelt werden will, der soll einen Auftrag erteilen und zahlen.
Darko D. schrieb: > Ja also ganz ungern mache ich es nicht. > Der Lernfaktor ist bei mir auch wichtig Versuche den Vorschlag anzunehmen, es als Zustandsautomat zu dokumentieren (grafisch und als Tabelle) und dann wie von mir vorgeschlagen mit switch/case umzusetzen. Das ist ein möglicher Ansatz, der Erfahrungsgemäß gut klappt und gut ausbaufähig ist.
Was ist eigentlich mit der Leistungselektronik für die Aktoransteuerung? Wer entwickelt die?
Die Schalter / Ventile Leistungselektronik ist schon fertig. Sie ist von mir selbst gelötet.
Darko D. schrieb: > Die Schalter / Ventile Leistungselektronik ist schon fertig. Sie ist von > mir selbst gelötet. Und vermutlich genau so gut durchdacht, wie der Programmablauf. Also ohne Fehlerbehandlung.
Löten kann ich ein bisschen. Ich habe eine Lötstation von Ersa mit Heißluft. Vario 2 heißt sie glaube ich.
MaWin schrieb: > Was ist eigentlich mit der Leistungselektronik für die Aktoransteuerung? > Wer entwickelt die? Warte, ich ahne die Antwort schon! Schraubklemmen, das sind Schraubklemmen. Das ist kein Problem.
Stefan ⛄ F. schrieb: > Wer hier wie ein Kunde behandelt werden will, der soll einen Auftrag > erteilen und zahlen. Aber auch dann muss man Fragen nach der genauen Funktionsweise beantworten. Also genau das, was der TO leider nicht kann...
Ja das habe ich verstanden. Ich weiß auch leider nicht was ein Zustandsautomat ist. Was ich anbieten kann (als Kunde) ist einen deutschen Text niederzuschreiben was alles passieren soll und was passieren kann. Wenn das weiterhelfen könnte würde ich das tun.
Darko D. schrieb: > Ich weiß auch leider nicht was ein > Zustandsautomat ist Sowas und die anderen Fachbegriffe kann man googlen.
Darko D. schrieb: > Die Schalter / Ventile Leistungselektronik ist schon fertig. Sie ist von > mir selbst gelötet. Ok. Die Frage war allerdings, ob sie bereits entwickelt ist, bzw. wer das tun soll. Das hat mit Löten nichts zu tun. Aber gut, wenn deine Schaltung funktioniert, wird sie möglicherweise hinreichend gut entwickelt sein.
Darko D. schrieb: > Ich weiß auch leider nicht was ein Zustandsautomat ist. https://de.wikipedia.org/wiki/Endlicher_Automat
Darko D. schrieb: > Ich weiß auch leider nicht was ein > Zustandsautomat ist. Ein Zustandsautomat (auch State machine genannt) erzeugt vereinfacht ausgedrückt auf Basis von Eingangssignalen bestimmte Ausgangssignale. Du hast also deine 5 Eingangssignale (E0, E1, E2, E3, E4) und deine 5 Ausgangssignale (A0, A1, A2, A3, A4). Mit Hilfe dieser 5 Eingangssignale kannst du 2^5 (32) verschiedene Zustände erfassen und 2^5 (32) verschiedene Antworten ausgeben. Diese kannst du in Form einer (Wahrheits-)Tabelle anlegen. Mit verschiedenen Methodiken lässt sich daraus ein boolscher Algorithmus erzeugen (konjunktive Normalform und disjunktive Normalform). Es wird aber auch Zustände geben, in denen dich vielleicht nur 3 der 5 Eingangssignale interessieren. Dies kann zum optimieren des Algorithmus verwendet werden, auch hier gibt es verschiedene Verfahren um aus der Normalform eine Optimierung zu erzeugen. (Karnaugh-Veitch-Diagramm, Quine und McCluskey Verfahren), eine einfache State machine lässt sich so mit dem optimierten Algorithmus mit wenig Aufwand umsetzen. In deinem Fall halte ich es aber für sinnvoller eine gewöhnliche Ablaufsteuerung zu realisieren, lässt sich besser warten und ist verständlicher.
Darko D. schrieb: > ich anbieten kann (als Kunde) ist einen > deutschen Text niederzuschreiben was alles passieren soll und was > passieren kann. > Wenn das weiterhelfen könnte würde ich das tun. Der Esel und die Karotte.....
Darko D. schrieb: > Ja das habe ich verstanden. Ich weiß auch leider nicht was ein > Zustandsautomat ist. Habe ich dir aufgeschrieben und verlinkt: Stefan ⛄ F. schrieb: > Hier ein bisschen Anregung, wie man Zustandsautomaten grafisch und als > Tabelle darstellen kann. http://stefanfrings.de/multithreading_arduino/index.html#planung
Einfacher Lösungsansatz ohne Flußdiagramm. Es gibt 32 Eingangszustände und 32 Ausgangszustände. Nun kann man die Eingangszustände zyklisch abfragen und dann den entsprechenden Ausgangszustand setzen. Eingangszustände Ausgangszustände (Bsp.) 0 0 0 0 0 =0 0 1 1 0 0 =12 0 0 0 0 1 =1 0 0 1 1 1 =7 0 0 0 1 0 =2 1 0 1 1 0 =11 u.s.w. u.s.w. Alles in ein Array schreiben und dann den "Eingangswert" als Index verwenden. Das wars.
Joe schrieb: > Das wars. Nein das war's nicht. Dieses Konzept ist unzureichend. Du hast das Diagramm von Darko genau so wenig verstanden, wie Jobst.
OK. Verstanden. Ich werde es in einer solchen Form niederschreiben. Dann werde ich die Form hier schreiben!
Oder mit boolscher Algebra für die Ausgänge jeweils einen Term schreiben. A B C D E als Eingänge X1 X2 X3 X4 X5 als Ausgänge Dann X1=(A = 1) oder (B = 0) und (D = 1) X2= (B=1) und (C=1) oder (E=1) u.s.w. fertig.
Stefan ⛄ F. schrieb: > Nein das war's nicht. Dieses Konzept ist unzureichend. Du hast das > Diagramm von Darko genau so wenig verstanden, wie Jobst. Ich habe mir das Diagramm gar nicht angesehen.
Roland F. schrieb: > Nehmen wir mal an vor du würdest als Kunde vor einem Dienstleister > sitzen und ihm von deinem Problem erzählen und darum bitten dafür eine > Lösung zu finden und der Dienstleister würde dir sagen du sollst doch > gefälligst erst mal dein Problem präzisieren, denn "wenn man alle > Elemente im PAP auf diese Art schon sprachlich formuliert, kann man es > praktisch direkt in Quelltext gießen". > > Was würdest du dann denken? Ich würde denken hmm, komme ich damit klar oder beauftrage ich einen anderen Dienstleister, der mich alleine wegen dem zeitlichen Mahraufwand, mir alles aus der Nase zu ziehen, eine ganze Menge mehr Geld kosten wird. Dazu kommt noch dass solche Dienstleister, die das Denken für mich übernehmen, grundsätzlich auch noch einen höheren Stundensatz haben. Bezogen auf den TE kann ich nicht erkennen, dass er gewillt ist diese Mehrkosten zu zahlen und darum eben mehr Eigeninitiative zeigen muss. Darko D. schrieb: > Ja das habe ich verstanden. Ich weiß auch leider nicht was ein > Zustandsautomat ist. Was ich anbieten kann (als Kunde) ist einen > deutschen Text niederzuschreiben was alles passieren soll und was > passieren kann. > Wenn das weiterhelfen könnte würde ich das tun. Das Problem hierbei ist, es müsste vollkommen unmissverständlich geschrieben sein und keinerlei implizites Wissen erfordern; also so dass man ohne die geringste Ahnung vom mechanischen Aufbau und sonstigen Umständen alleine durch den Text alles notwendige für die Steuerung erfährt. Wieder als Beispiel: Du gehst stillschweigend davon aus, dass wenn B3 aktiv ist B7 inaktiv ist, solche Informationen gehören aber zwingend dazu, da niemand hier wissen kann wie die Klappe im Detail angesteuert wird.
Das habe ich auch verstanden. Ich bedanke mich auf jeden Fall für die rege Antwort. Danke!!!!!!!!!!! Ich werde es in den nächsten Stunden / Spätestens Weihnachten hinbekommen!
Joe schrieb: > Ich habe mir das Diagramm gar nicht angesehen. Aber du meinst, ihm Ratschläge zur Umsetzung geben zu können. Alle Achtung, das ist Kreativ. Nur ist hier gerade leider nicht die Muse gefragt, sondern eine technische Umsetzung.
Ich meine hinbekommen mit den 32 verschiedenen Zuständen.
Wartet bitte ab, bis ich die Zustände klar definiert habe. Vielleicht leutet es dann ja ein.
Darko D. schrieb: > Ich meine hinbekommen mit den 32 verschiedenen Zuständen. Vermutlich brauchst du gar nicht so viele.
Ich bin mir sicher, dass ich nicht 32 Zustände brauche, weil zum Beispiel der Endlagenschalter Klappe auf und der Endlagenschalter Klappe zu nicht gleichzeitig betätigt sein können. (z.B)
Für die Klappe fallen mir spontan 4 Zustände ein: Klappe ist offen Klappe schließt sich Klappe ist geschlossen Klappe öffnet sich Und eventuell zur Fehlerbehandlung: Klappe ist blockiert Aber das ist ja nicht alles, da gibt es noch mehr Teile, die Zustände haben.
Ja vielen Dank! Das erste mal sah ich mich lächeln und ein kleines Licht am Ende des Tunnels!! Wir schaffen das!!!!!!!!!
Die älteren Generationen der „Siemens Logo“ + „Logosoft“ bekommt man sehr günstig z.B. bei eBä. Damit wäre dein Problem ein Kinderspiel. https://youtu.be/rcX2HI84_NM Fröhliche Weihnachten 🎄
Ja vielen Dank nochmal. Ich werde heute mit Sicherheit besser schlafen als gestern!!
Es gibt viele unterschiedliche Erklärungen und Umsetzungen von Zustandsautomaten. Ich habe sie auch nicht gleich verstanden. Aber nachdem ich mich mit einem nicht durchdachten Plan verzettelt hatte wurde mir hier im Forum von gefühlt 20 Leuten nahe gelegt, mich trotzdem nochmal damit zu befassen. Ich fand dann in der Bibliothek ein Buch zum Thema, dessen erstes Kapitel sorgte für den "es hat Klick" gemacht Effekt. Danach habe ich auch die anderen Artikel verstanden, die mir vorher nichts sagten. Der Knackpunkt war bei mir zu verstehen, was ein Zustand (im Sinne des Zustandsautomaten) ist und dass eine Maschine oft aus vielen parallel laufenden Zustandsautomaten besteht. Leider weiß ich den Titel des Buches nicht mehr, das ist schon lange her. Ich schreibe dir das, weil ich dich dazu anregen möchte, andere Erklärungen zu suchen, wenn dir meine oder die von Wikipedia nicht einleuchtet. By the way: das Konzept wird oft auch "Endlicher Automat" oder "State Machine" genannt.
Du machst Dir das Leben künstlich schwer mit den Portpins. Keiner kann sich merken, welche Funktion hinter einer Portnummer steckt. Definiere Dir daher einen Header, wo alle Ein- und Ausgänge mit lesbaren Namen versehen werden und benutze diese sowohl im PAP als auch im Code. Hier mal das Prinzip: Beitrag "Re: Port als Variable"
1 | #include "sbit.h" |
2 | #define TASTE PIN_D2
|
3 | #define ABSAUGUNG PORT_D5
|
4 | //..
|
5 | if (TASTE) |
6 | ABSAUGUNG = 1; |
7 | //..
|
Stefan ⛄ F. schrieb: > Nein das war's nicht. Dieses Konzept ist unzureichend. Du hast das > Diagramm von Darko genau so wenig verstanden, wie Jobst. Ganz ehrlich? Bei der mieserablen Informationslage ist es kein Wunder, wenn man das nicht versteht. Zumindest habe ich die Lust verloren, mir die ganzen Scheibchen hier im Thread zusammen zu popeln. Dass es anderen genau so geht, kann ich nachvollziehen. Du scheinst als einziger hier die Muße zur Erfassung der Infos zu besitzen. Aber auch Du verzichtest aus guten Gründen darauf, ihm den Kram zu implementieren. Wenn das Warten auf irgendeinen Vorgang nicht durch einen der 5 Eingänge zurückgemeldet wird, dann wird es pro abzuwartender Aktion eine Verdopplung der schon vorhandenen 32 Eingangskombinationen geben. Einige Kombinationen wird es nicht geben, andere sind irrelevant. Dennoch wird man mit 32 Kombinationen vermutlich nicht hinreichen. Das ist auch kein Problem, vergrößert aber den Umfang. Es fehlt ebenfalls ein Schaltplan, in dem die mechanischen Abhängigkeiten eingezeichnet sind. Und es fehlt die Info, auf welche Dinge gewartet werden muss, für die es keine elektrischen Signale gibt. Das Ablaufdiagram beginnt schon mit einem Problem: "Betätigung Schalter auf/zu" Was soll das bedeuten? Auf? Zu? Egal? Beides? Was ist der Zweck des Dings? Und Darko: Weniger Entschuldigungen oder Geschichten über Schlafstörungen, Kind, Frau, Auto, Zeit, ... Das macht die ganze Geschichte hier noch undurchsichtiger. Gruß Jobst
Jobst M. schrieb: > Ganz ehrlich? Bei der mieserablen Informationslage ist es kein Wunder, > wenn man das nicht versteht. Ja, ich wollte damit auch nicht sagen dass ich zwei euch dumm anstellt.
Ja das sehe ich ein. Das soll auch keine Entschuldigung sein! Ich habe mir aber die Mühe gemacht folgende 32 Zustände zu definieren. Allerdings bin ich auch dort gescheitert, weil es abhängig ist WANN der Endlagenschalter Klappe zu betätigt ist. Es ist ein Unterschied ob die Klappe gerade geschlossen wurde oder ob sie jetzt geöffnet werden soll. Gerne könnt ihr das mal ansehen. Bitte macht euch auch nicht zu viel Mühe auch wenn das sehr nett ist!! Wenns nicht klappt, dann muss ich irgendwie weitersehen oder zur ganz großen Not die Blöde Klappe immer von Hand auf und zu machen. So wie alle anderen auch.
Darko D. schrieb: > Gerne könnt ihr das mal ansehen. Oh mannomann .... was soll denn das sein: Scharnier offen/geschlossen. Das versteht ja kein Schwein. Ein Scharnier ist ein Gelenk zwischen zwei Teilen die dadurch gekoppelt sind. Man kann natürlich auch Luft auf die Fahradkette pumpen.
Herr Jobst, der Schalter Klappe auf/zu ist ein Taster. Wenn die Klappe geöfnet ist und man den Taster dann drückt, soll die Klappe zufahren. Wenn die Klappe zu ist und man den Taster dann drückt soll sie auffahren. Deswegen heist der Taster auf / zu. Ich wüsste nicht wie man das gleichzeitig betätigen soll.
Nein, das Scharnier ist eine pneumatische Zuziehhilfe, wenn die Klappe ganz unten ist. Diese Zuziehhilfe presst die Klappe gegen die Gummidichtung. Beim Öffnen der Klappe muss das Scharnier (Zuziehhilfe geöffnet werden und dann im Anschluss kann die Klappe auffahren. Ich sagte doch ich bin gescheitert!!!!!!
Darko D. schrieb: > Wenn die Klappe zu ist und man den Taster dann drückt soll sie auffahren. > Deswegen heist der Taster auf / zu. Ich wüsste nicht wie man das> gleichzeitig betätigen soll. Dann nenn den Taster "Start".
Darko D. schrieb: > Gerne könnt ihr das mal ansehen. Das geht völlig an meinem Vorschlag vorbei. Zerlege die Maschine in Teile, die Zustände einnehmen können. Ein Beispiel für die Klappe habe ich dir gegeben: Zustände: Klappe ist offen Klappe schließt sich Klappe ist geschlossen Klappe öffnet sich Überlege dir dazu, welche Ereignisse zu Zustandsänderungen führen. Im Zustand "Klappe ist offen" kann ein Kommando dazu führen, dass die Klappe geschlossen werden soll. Die Aktion dazu ist, ihren Motor links herum laufen zu lassen. Nächster Zustand ist "Klappe schließt sich". Im Zustand "Klappe schließt sich" soll die Betätigung des unteren Endschalters dazu führen, dass ihr Motor gestoppt wird. Nächster Zustand ist "Klappe ist geschlossen". Im Zustand "Klappe ist geschlossen" kann ein Kommando dazu führen, dass die Klappe geöffnet werden soll. Die Aktion dazu ist, ihren Motor rechts herum laufen zu lassen. Nächster Zustand ist "Klappe öffnet sich". Im Zustand "Klappe öffnet sich" soll die Betätigung des oberen Endschalters dazu führen, dass ihr Motor gestoppt wird. Nächster Zustand ist "Klappe ist offen". Fehlerbehandlung fehlt da noch. Das wäre die Beschreibung des Zustandsautomaten für eine Klappe. Das ganze wird dann noch als Tabelle und als Diagramm dargestellt (siehe Muster auf meiner Webseite). In dieser Art wird jedes Teil der Maschine beschrieben, dass Zustände haben kann. Nun interagieren diese miteinander. Oben heißt es "kann ein Kommando dazu führen, dass die Klappe geöffnet/geschlossen werden soll". Welcher Teil der Maschine oder welches Bedienelement emittiert dieses Kommando? Auch das kann man sauber beschreiben. Wie man Zeitverzögerungen einbaut, habe ich auf meiner Webseite gezeigt. Am Ende kommen dabei ein Gebilde aus mehreren Zustandsautomaten heraus, die sich Gegenseitig Signale/Kommandos senden. Auch dazu sollte wiederum ein Diagramm gezeichnet werden das zeigt wer mit wem Kommuniziert, sowie ein weiteres Diagramm dass die normalen Signale/Kommandos in zeitlicher Folge darstellt. Wenn das fertig ist kommt erst der Softwareentwickler in Spiel. Er hat die Aufgabe, das alles in ein lauffähiges Programm zu gießen. Es ist der Softwareentwickler, der sich überlegt, wie man ein Signal in der jeweiligen Programmiersprache darstellen kann und wie die einzelnen Programmteile Signale senden/empfangen können. Im einfachsten Fall können das simple globale boolesche Variablen sein. Ich denke, mehr kann ich dazu nicht mehr schreiben, sonst artet es in ein Buch aus. Und Bücher zum Thema gibt es bereits, sicher bessere als ich sie schreiben könnte.
Darko D. schrieb: > Diese Zuziehhilfe presst die Klappe gegen die Gummidichtung. Dann kann man das nicht als Scharnier bezeichnen. Darko D. schrieb: > Ich sagte doch ich bin gescheitert!!!!!! Wenn du eine Katze als Pferd bezeichnest - dann ja.
Stefan ⛄ F. schrieb: > Joe schrieb: >> Oder mit boolscher Algebra > > Nein, auch das genügt nicht. Dann warte ich auf deinen Lösungsvorschlag! ?????
Stefan ⛄ F. schrieb: > ich wollte damit auch nicht sagen dass ich zwei euch dumm anstellt. Alles gut, das habe ich so auch nicht aufgefasst. Darko D. schrieb: > Angehängte Dateien: > 32_Zustaende.txt (1,6 KB) 0/1 ist verwirrend. Spekulationen: 1 = gedrückt oder ja 0 = losgelassen oder nein > In diesen nachfolgenden 16 Zuständen soll gar nichts passieren, > weil der Taster Klappe auf / zu nicht gedrückt ist Dennoch müssen die Ausgänge ja einen Zustand haben! In Deiner Tabelle passiert folgendes, wenn "gar nichts passiert": Taster wird gedrückt, Klappe bewegt sich. Taster wird losgelassen, Klappe bewegt sich immer weiter auch wenn Endlageschalter betätigt wird, da "gar nichts passiert" Weiterhin lese ich aus der Tabelle, dass ein warten auf irgendwelche Endpositionen doch durch einen Eingang representiert wird und damit voll dadurch abgedeckt ist. Den Ausgänge A0 und A4 kannst Du Dir sparen, da sie immer 0 sind. Gruß Jobst (nicht "Herr Jobst")
Darko D. schrieb: > Nein, das Scharnier ist eine pneumatische Zuziehhilfe, wenn die Klappe > ganz unten ist. Diese Zuziehhilfe presst die Klappe gegen die > Gummidichtung. > Beim Öffnen der Klappe muss das Scharnier (Zuziehhilfe geöffnet werden > und dann im Anschluss kann die Klappe auffahren. Gibt es dafür auch Endschalter? Nachtrag: Für Scharnier geschlossen? Gruß Jobst
:
Bearbeitet durch User
Noch etwas passiert: Wenn Du den Taster drückst, fährt alles in eine der beiden Endpositionen und sobald diese erreicht sind sofort wieder in die andere Richtung. Ich möchte folgendes vorschlagen: - Taster drücken alles fährt in Richtung 1 maximal bis Endposition erreicht. - Taster loslassen alles bleibt stehen. - Taster drücken alles fährt in Richtung 2 maximal bis Endposition erreicht. - Taster loslassen alles bleibt stehen. ... und wieder von oben. Das bedeutet auch, dass die Klappe bei einem Problem wieder zurück gefahren werden kann. (Durch erneutes drücken) Taster: Schreib das bitte auch! Ein Schalter rastet. A2 soll takten. Wenn sich die Klappe irgendwo in der Mitte befindet? Auch über die Zuordnung Klappe oben/unten und auf/zu kann man nur spekulieren. Wenn das Ventilscharnier offen ist, soll sich die Klappe nie bewegen ...? Das ist noch alles nicht schlüssig, obwohl ich mittlerweile eine Vorstellung von dem habe, was Du vor hast: Du möchtest den Vorgang mit der Taste starten und diese auch die ganze Zeit dabei gedrückt halten. In einer Richtung soll die Klappe bis zur Endposition zu gefahren werden und dann soll das "Scharnier" geschlossen werden. (Endschalter?) Wenn diese Position erreicht ist, ist der Vorgang beendet. Umgekehrt soll sich das "Scharnier" öffnen und wenn offen, soll die Klappe auf gehen, bis der entsprechende Endschalter geschlossen wird. Also ähnlich wie bei einem Fahrstuhl: Tür erst öffnen, wenn Stockwerk erreicht und Fahrstuhl steht. Und losfahren erst, wenn Tür wieder zu. Eine einfache, gegenseitige Verriegelung. Wenn das so ist, warum hast Du das dann nicht so geschrieben? Gruß Jobst
Joe schrieb: > Dann warte ich auf deinen Lösungsvorschlag! Wenn du meine Beitrage dazu nicht siehst, dann willst du sie nicht sehen.
...langsam verstehe ich, warum der TO bis hierhin schon 2 Jahre gebraucht hat! Hier fehlt es irgendwie an grundlegendem Verständnis und offensichtlich hat der TO auch keinen Bastler im Bekanntenkreis. So wird das also bestimmt nichts... Gruß Rainer
Rainer V. schrieb: > ...langsam verstehe ich, warum der TO bis hierhin schon 2 Jahre > gebraucht hat! Hier fehlt es irgendwie an grundlegendem Verständnis und > offensichtlich hat der TO auch keinen Bastler im Bekanntenkreis. So wird > das also bestimmt nichts... > Gruß Rainer Was soll denn das für ne Aussage sein? Vielleicht ist er ja ein grandioser Mechaniker? Digitaltechnik und Programmierung sind für viele Menschen, welche bisher nur wenig Berührungspunkte mit dieser Welt hatten eben sehr abstrakt. Ähnlich geht es mir beispielsweise im HF bzw. Funkbereich. Klar lässt sich das erlernen, würde ich hier in das dazugehörige Unterforum gehen, würde ich wahrscheinlich in der Hälfte der Threads nur Bahnhof verstehen..
Hi >Was soll denn das für ne Aussage sein? Vielleicht ist er ja ein grandioser Mechaniker? Darko schrieb: Was soll denn das für ne Aussage sein? Vielleicht ist er ja ein grandioser Mechaniker? Darko D. schrieb: ...und die Klappe ist jetzt zu 95 % Fertig (2 Jahre Aufbauzeit) nach "grandioser Mechaniker" hört sich das nicht an. Und die Software ist da nicht mit drin: >Nur die Software fehlt quasi. Was soll deine Frage nach der Aussage also? MfG Spess
Spess53 schrieb: > nach "grandioser Mechaniker" hört sich das nicht an. Das erkennt man schon daran dass er ein Funktionselement als "Scharnier" bezeichnet das gar keines ist. Darko D. schrieb: > Nein, das Scharnier ist eine pneumatische Zuziehhilfe, wenn die Klappe > ganz unten ist. Diese Zuziehhilfe presst die Klappe gegen die > Gummidichtung.
Ehrlich, ich würde vorschlagen, wir warten auf den Samariter, der sich nach Bremen traut und auch 3 Fliegen mit 7 Klappen erschlägt! Rainer
Guten Morgen alle zusammen und Frohe Weihnachten!! Noch einmal ein großes Dankeschön an Jobst und Stefanus und die anderen Gäste selbstverständlich auch. Ich habe durch das Lesen des kompletten Chats gemerkt, dass ihr euch alle damit sehr auseinander gesetzt habt. Das hat mich sehr gefreut! Ich brauche im Moment nur Zeit um mich mit den Zustandsautomaten und deren Funktionen auseinanderzusetzen, um zu dem Ziel zu kommen. Es ist auch richtig, dass ich nicht bereit bin mehrere Hundert Euro an eine Fachfirma zu zahlen die mir die Software und das was an Fragen dazugehört zu bezahlen. Da ich nicht so viel Geld verdiene. 2 Jahre hat das Projekt bisher gedauert. Allerdings ist nicht täglich daran gearbeitet worden. Ich habe auch keine Probleme damit das Teil zu beschreiben. Vielleicht kommt da ja noch ein Tipp aus einer ganz anderen Richtung dazu. Ich habe eine 1,9m hohe eine 1m tiefe und eine 1,5m breite Sandstrahlkabine konstruiert, geschweißt und entwickelt. Das besondere ist eigentlich, dass die Kabine incl. der Schrauben, Nieten und sonstigen Befestigungsvarianten komplett aus Edelstahl ist. Daher ist es auch notwendig bei geschlossener Klappe noch einmal durch eine zusätzliche Zuziehhilfe den Anpressdruck an die Gummidichtung zu erhöhen. Ein weiterer Grund warum es diese Zuziehhilfe gibt ist es, dass ca. 80 % des Klappengewichtes zum hochdrücken durch 2 Gasdruckdämpfer übernommen wird. Die Funktionsweise des Programms ist ähnlich wie das Jobst beschrieben hat. Der Hauptunterschied (welchen ich mir wünsche) ist, dass man den Taster nicht gedrückt halten muss die ganze Zeit. Mein Ziel war es eig. den Taster einmal zu drücken, dann ca. 4 bis 5 Sekunden abzuwarten bis die Absaugung austrudelt und dann aus der Ferne zuzusehen, wie sich mein Glück öffnet. Es ist auch vollkommen richtig, dass Ihr erkannt habt, dass die Zuziehhilfe nur einen Endlagenschalter für den Status offen hat. Durch eine Federkraft wird sie in genau 2,5 Sekunden geschlossen, wenn das Ventil "schließen" betätigt wird. Um den Verdrahtungsaufwand zu minimieren soll das Programm einfach nach einer 3 sekündigen Ansteuerung des Ventils Zuziehhilfe zu davon ausgehen, dass es geschlossen ist. Der Zustand offen der Zuziehhilfe muss aber BEVOR die Klappe zufährt überprüft werden, denn bei geschlossener Zuziehhilfe knallen die Haken der Klappe gegen die Außenscharniere der Zuziehhilfe. Vielleicht rundet die Beschreibung des Teils ja auch das Puzzle ein bisschen ab. Bisher also nochmal vielen Dank!!!!!!!!!!!!!!!!!!!
Der ganze Text hätte zusammen mit Fotos und einem kurzen (!) Video in den Eröffnungsbeitrag gehört. Dann kann man mit deinem Diagramm viel mehr anfangen.
Darko D. schrieb: > Das besondere > ist eigentlich, dass die Kabine incl. der Schrauben, Nieten und > sonstigen Befestigungsvarianten komplett aus Edelstahl ist. Sowas ähnliches haben wir mal an einem Tag zusammengebraten. Wie sieht das bei deiner mit der elektrostatischen Aufladung aus? Alles schön geerdet? Dinge, die sich von alleine bewegen, brauchen immer einen Schutzmechanismus, damit sich niemand die Finger oder anderes klemmen kann. Also braucht dein Aufbau entweder einen Taster, den man dauerhaft drücken muss, oder einen Sensor, der verhindert, dass sich jemand im Schwenkbereich der Klappe befindet.
An einem Tag???? WAHNSINN!!!! Der Kleber der Scheibe hat bei mir schon einen Tag gedauert :-) Ich schätze dass dort ca. 700 bis 800 Stunden bisher reingegangen sind! LG Zwei Tage hat ja schon der Transport und der Zusammenbau im Keller gedauert...
Darko D. schrieb: > Der Kleber der Scheibe hat bei mir schon einen Tag gedauert :-) Es ging um die Konstruktion und den Zusammenbau. Das Material musste auch beschaft werden und das Sikaflex musste auch trocknen. Nach einem Wochenende haben wir das Ding dann aber auch gleich benutzt. Einfach nur eine Klapptür mit Reibriegeln und keinen elektronischen Schnickschnack. Eine Lampe war noch drin.
Zum Thema Sicherheit: Die Klappe ist geerdet. Einen Klemmschutz hat die Klappe nicht. Durch die Gasdruckdämpfer reduziert sich die Klappenfahrgeschwindigkeit so sehr, dass ein "erschlagen" von der Klappe nicht möglich ist. Des weiteren wiegt die Klappe ungefähr 25 kg. 80 % der Hochdrückkraft übernehmen die Dämpfer, sodass ein schmerzhaftes Einklemmen sowieso gar nicht möglich ist.
Darko D. schrieb: > Bisher also nochmal vielen Dank!!!!!!!!!!!!!!!!!!! Bitte weniger !, dafür bitte mehr aufschlussreichen Text. Tipp: Man kann Tastendrücke sinnvoller einsetzen. Bisher hast du es nicht für nötig gehalten deine Kästchen, im Flussdiagramm, eindeutig zu benennen. Das habe ich mal für dich übernommen. Auch wenn es gruslig aussieht, ist es doch funktional. Fragen: Was bedeutet das takten in C6? Ist das wieder ein Automat? Was ist das für eine Endlage in B4? Darf sich der Programmierer da eine aussuchen? Warum steht an C1 ein Schalter, wenn es doch ein Taster ist? Hat der 2 Funktionen? Was unterscheidet A8 von D8? Was unterscheidet D4 von E4? Warum finde ich die "Freigabe Absaugung" nicht im Flussdiagramm? Was ist das überhaupt?
Was ist mit: Jobst M. schrieb: > Den Ausgänge A0 und A4 kannst Du Dir sparen, da sie immer 0 sind. Gruß Jobst
Beitrag #6921431 wurde von einem Moderator gelöscht.
Beitrag #6921460 wurde von einem Moderator gelöscht.
Beitrag #6921704 wurde von einem Moderator gelöscht.
Beitrag #6921726 wurde von einem Moderator gelöscht.
c-hater schrieb im Beitrag #6921704:
> Sowas zu fordern, steht dir schlicht nicht zu. Wer glaubst du zu sein?
Dito. Dir steht demnach nicht zu, mich so anzufahren. Vor allem bei
Themen die dich nicht betreffen. Wer glaubst du zu sein?
Beitrag #6921759 wurde von einem Moderator gelöscht.
Beitrag #6921770 wurde von einem Moderator gelöscht.
Beitrag #6921777 wurde von einem Moderator gelöscht.
Beitrag #6921778 wurde von einem Moderator gelöscht.
Hallo. Ich kann einige Fragen beantworten. Takten bedeutet: Ventil Klappe zu wird für 100ms angesteuert, dann wird 500ms gewartet dann wird wieder 100ms angesteuert, und dann wieder 500 ms gewartet. Dies wird so lange wiederholt, bis die Klappe den Endlagenschalter Klappe zu erreicht. Wenn das dann der Fall ist, wird das Ventil Scharnier zu (Zuziehhilfe zuziehen) für 3 Sekunden angesteuert, weil der Vorgang ca. 2,5 Sekunden dauert und dort kein Endlagenschalter verbaut ist. Frage von Ihnen: Was ist das für eine Endlage in B4? Antwort: B4 sagt mir gar nichts. Wo soll das sein? Im Flussdiagramm gibt es B3 und B7... Frage von Ihnen: Warum steht an C1 ein Schalter, wenn es doch ein Taster ist? Antwort: C1 muss ein Ausgang sein. Ich erkenne nicht woher sie die Informationen nehmen? Der Mikrocontroller hat 5 Eingänge (Port B1 bis Port B5) und 5 Ausgänge Port C0 bis C4 Daher verstehe ich auch nicht die Fragen: Was unterscheidet A8 von D8? Was unterscheidet D4 von E4? Dies Zahlen sagen mir nichts... Ich werde mich wie von Jobst und den anderen empfohlen erst mal mit den Zustandsautomaten auseinandersetzen müssen. LG Darko
der thread ist leider tl;tr - kam schon einer mit finite state machines an? beste grüße
etreas schrieb: > kam schon einer mit finite state machines an? Ja. Ist die Suchfunktion deines Browsers defekt?
Beitrag #6921796 wurde von einem Moderator gelöscht.
Beitrag #6921800 wurde von einem Moderator gelöscht.
Beitrag #6921814 wurde von einem Moderator gelöscht.
Darko D. schrieb: > Ich erkenne nicht woher sie die Informationen nehmen? > .... > Dies Zahlen sagen mir nichts... Würdest du meinen Beitrag aufmerksam lesen, hätte dir auffallen können, dass ich ein Ordnungssystem in dein Flussdiagram eingebaut habe, da du ja nicht dazu in der Lage bist. Bzw. dir die Ordnung am Arsch vorbei geht. Selbst nach mehrmaliger Aufforderung.
Beitrag #6921827 wurde von einem Moderator gelöscht.
Beitrag #6921830 wurde von einem Moderator gelöscht.
etreas schrieb: > der thread ist leider tl;tr - kam schon einer mit finite state > machines an? Is' schon so lange her - dat is' schon gar nimmer wahr... Wie soll‘s auch anders sein? Ein guter Teil der Anwesenden sind therapiebedürftig - wegen anhaltender, narzisstischer Persönlichkeitsstörung. Da ist jede auch nur entfernt brauchbare Idee in Nu zerredet.
Beitrag #6921891 wurde von einem Moderator gelöscht.
Beitrag #6921899 wurde von einem Moderator gelöscht.
Beitrag #6921903 wurde von einem Moderator gelöscht.
Beitrag #6921905 wurde von einem Moderator gelöscht.
Beitrag #6921917 wurde von einem Moderator gelöscht.
Beitrag #6921921 wurde von einem Moderator gelöscht.
oh ok - kam dann wohl falsch rüber. war auch lax formuliert sry. ich les gerade Modeling Software with Finit State Machines :) waren schon etwas aus der digitaltechnik und mikrocumputer technik bekannt - wenn man fsm tatsächlich als fsm und nicht als pattern aus gof versteht, sind die das beste mittel komplexität in den griff zu bekommen
wer übrigens eine richtig geile fsm sehen möchte, hole sich die wad von doom 2 und einen source port - parallel dazu den veröffentlichten source: https://github.com/id-Software/DOOM
Ich mache mal die Rechnung auf: 2H Nachfragen im Forum, bis Klärung (90%). Über Tage verteilt 2H Flussdiagramm strukturieren, plus weitere Planung/Vorbereitung 1H Codieren 1H Prototype/Testumgebung bauen und debuggen Das macht 6H a XX Euronen. Weitere Änderungen/Anpassungen/Zusatzarbeiten kosten extra. Das Programm liegt hier fertig getestet. Flussdiagramm 1:1 übernommen Programmiert mit der Arduino IDE Getestet auf einem UNO Kompiliert fehlerfrei für ATMega8 Ein Umbau auf C, ohne Arduino: Machbar Ein paar delay() und eine Schleife finden sich dort. Die könnte man ersetzen, wenn man dort kleine Sub Automaten einsetzt. Über Schönheit kann man bekanntlich streiten, aber Schönheit gehört auch nicht zur Anforderungsliste. Übrigens: Keine if Kaskaden Kein switch/case Konstrukt Flache Schachtelungen max 1 Ebene im Funktionsblock
Hey Darko, Sicherlich hast du selbst schon gemerkt, dass hier im Forum nur die wenigsten Fragen zu konstruktiven Ergebnissen führen. Gerade so Fragen wie "Kann mir mal jemand bei meinem einfachen Programm helfen" führen dann binnen kürzester Zeit zu hunderten Postings von zig verschiedenen Menschen und jeder für sich hat eine ganz eigene Lösungsmethode, die natürlich als DIE PERFEKTE UND EINZIGE LÖSUNG verkauft wird und alles andere ist ja sowieso völlig falsch!!!!!! Dabei hast du allerdings wohl vergessen, dass du das als Hobby betreibst und ein Hobby soll a) Spass machen und b) man macht ein Hobby natürlich selber und lässt niemand anders sein Hobby machen. Das einzige, was du hier in den letzten Tagen gewonnen hast ist, dass dein eigenes Hirn sich mit der Sache durchgehend beschäftigt hat und du jetzt besser durchblickst als vorher. Und genau so löst man Probleme. Und jetzt setzt du dich mal in Ruhe hin und überlegst dir, wie man so ein Problem am besten angehen würde, schiebst das alte Programm zur Seite und machst ein neues. Diesmal ein besseres, was man auch viel einfacher lesen kann. Letztendlich musst DU es verstehen, denn DU musst es warten.
Jan schrieb: > und jeder für sich hat eine ganz eigene Lösungsmethode, Natürlich! Frage 3 Leute und du erhältst 5 Ansagen, welche sich teilweise massiv widersprechen, aber doch alle richtig sind. Jan schrieb: > die > natürlich als DIE PERFEKTE UND EINZIGE LÖSUNG verkauft wird und alles > andere ist ja sowieso völlig falsch!!!!!! Falsch.
Jan schrieb: > Letztendlich musst DU es verstehen, denn DU musst es warten. Macht er ja auch. Alles gut.
Hallo, was bisher noch nicht geklärt wurde ist, ob es eine funktionierende Hardware gibt und ob das bestehende Programm auf diese geflasht werden konnte. Gibt es davon einen Schaltplan? Wie sieht die Spannungsversorgung aus, wie sind die Eingänge beschaltet, wie werden die Relais und Schütze angesteuert, welche Spannungen müssen geschaltet werden? Viele Grüße otto
Dieses ist das Flussdiagramm, welches ich verwendet habe. https://www.mikrocontroller.net/attachment/540263/Schaltung_Verlauf.bmp Dort heraus stammen auch die etwas kryptischen Zustandsnamen. Es gibt ein paar Dinge, die ich wohlwollend ignoriert habe: A: freigabeAbsaugung kommt im Flussdiagramm nicht vor, habe auch kA, was das sein soll. B: Die Aktoren kenne Auf und Zu, nur die Klappe kennt oben und unten. KA, ob oben wirklich auf bedeutet, habe es mal angenommen C: Die Frage mit den "Enden" blieb ungeklärt. Jetzt ist ein Ende ein Ende und ein Ende. D: Einige Zustände sind doppelt. KA, wozu das gut ist. Aber da im Plan so, ist es auch im Programm so. PS: Bitte den Quellcode nicht an den Darko verraten, der muss erst bluten.
Otto schrieb: > was bisher noch nicht geklärt wurde ist, ob es eine funktionierende > Hardware gibt und ob das bestehende Programm auf diese geflasht werden > konnte. Damit gibt es ganz sicher keine Probleme! Siehe: Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort"
EAF schrieb: > KlappenAutomat.ino Ich find interessant, wie du die Zustandswechsel implementiert hast. Verblüffend simpel - why not? Allerdings würde ich empfehlen, den Zuständen sprechende Namen zu geben. Das müsste man dann natürlich im Diagramm dann auch entsprechend kennzeichnen.
Stefan ⛄ F. schrieb: > Verblüffend simpel Ich nenne es "naiv", oder "schlicht". Eine Sammlung von Trivialitäten. Sauber voneinander getrennt, anfassbar und wartbar. Nicht gedankenlos, aber gedankenarm. Schön, dass es dir gefällt. Stefan ⛄ F. schrieb: > Allerdings würde ich empfehlen, den Zuständen sprechende Namen zu geben. > Das müsste man dann natürlich im Diagramm dann auch entsprechend > kennzeichnen. Natürlich! Diese "Kreativität" gehört allerdings nicht zu den Anforderungen, muss darum extra abgegolten werden.
PS: zB3 hat noch einen Fehler, es muss natürlich nach "endschalterKlappeOben" gefragt werden.
Stefan ⛄ F. schrieb: > EAF schrieb: >> KlappenAutomat.ino > > Ich find interessant, wie du die Zustandswechsel implementiert hast. > Verblüffend simpel - why not? Wie willst du das denn bitte sonst machen? Ein Switch und da die Funktionen rein und die Zustandsvariable in den Funktionen ändern? Da ist ein Funktionspointer doch schon irgendwie der näher liegende Ansatz...
Tim T. schrieb: > Wie willst du das denn bitte sonst machen? Es gibt mehrere Möglichkeiten. Zwei davon sind im Artikel https://www.mikrocontroller.net/articles/Statemachine beschrieben. Ich möchte allerdings den Rahmen dieses Threads nicht mit Diskussionen um weitere Methoden sprengen. Dem Darko (TO) brummt der Kopf bestimmt schon genug.
Hi Auch wenn ich mich bei der Lösung des Problems zurück halte möchte ich Mal einen allgemeinen Tip loswerden. Macht aus euren Werken kein Geheimnis. Ich bin sicher, wäre von Anfang an klar gewesen, das es sich um eine Sandstrahlkabine handelt, wären viele unnütze Kommentare unterblieben und vielleicht auch schon ein fertiges Programm geliefert worden. Auch zum Aspekt Fehlverhalten und Sicherheit ein kleiner Hinweis. Alles, was man sich eventuell vorstellen kann, ist möglich. Vom Einklemmen bis Invalidität, auch wenn's übertrieben scheint und auch Bastler sollten im Hinterkopf haben, das Versicherer gern die Gelegenheit nutzen, Verantwortung auf andere abzuwälzen, wenn sie dadurch aus einer Verpflichtung kommen. Auch Gerichte sind dann schon Mal schnell bei fahrlässiger Körperverletzung. So, genug geunkt. Darko, dein Projekt ist jetzt nicht wirklich kompliziert, doch leider spreche ich nicht C und mit Assembler würde ich dich vermutlich noch mehr stressen. Es gibt genug, die dir mit C helfen können und auch werden. Lediglich den Ablauf könnte ich Mal formulieren Grundstellung: Gebläse aus, Verriegelung offen (hast du als Scharnier bezeichnet) Klappe offen Taster Start Klappe schließt Endschalter Klappe geschlossen Verriegelung presst Klappe an (Zeitfunktion oder Druckschalter) Gebläse ein (Betriebszustand) Betriebszustand: Taster Start Gebläse aus (Rückmeldung Druckschalter oder Zeitfunktion) Verriegelung lösen (Endschalter) Klappe öffnen (Endschalter) Grundstellung Wenn du jetzt Mal einfach so schrittweise denkst, dann kommst du zur Stagemaschine Schritt 0: Grundstellung Taster Start Schritt 1 : Gebläse aus. Rückmeldung löst Schritt 2 aus Usw. Gruß oldmax
Stefan ⛄ F. schrieb: > Ich > möchte allerdings den Rahmen dieses Threads nicht mit Diskussionen um > weitere Methoden sprengen. Warum nicht!? Das Thema dieses Threads ist: > Der endliche Automat im praktischen Einsatz Oder: > Wie mach ichs mir? Stefan ⛄ F. schrieb: > Dem Darko (TO) brummt der Kopf bestimmt schon > genug. Das stört mich nicht. Lass ihn doch brummen...... Es könnte übrigens die Möglichkeit bestehen, dass irgendeiner was bei der Diskussion lernt. Vielleicht ist es ja das, was stört. -------------- Es gibt sicherlich ein knappes Dutzend Verfahren, wie man eine Ablaufsteuerung angehen kann. In den allermeisten Fällen wird so ein Dingen deterministisch werden müssen. Auch ist die Anzahl Zustände, in der Regel, begrenzt/endlich. Man muss sich die Aufgabe genau anschauen, bevor man sich für eine Linie entscheidet. Stefan ⛄ F. schrieb: > Zwei davon sind im Artikel Die switch/case Variante schmeckt mir nicht sonderlich. Eher schon "computed goto". Beiden gemein ist, dass dann eine Funktion schnell mal eben über 25 Zeilen hat. Das macht es unübersichtlich. Zudem pervertiert ein switch/case Konstrukt ab einer gewissen Schwelle von einer Sprungtabelle zu einer wenig performanten Entscheidungskaskade. Anfänger versuchen es häufig erstmal mit einer Kontrollfluss orientierten Sichtweise. Verirren sich dann in verschachtelten If Blöcken und komplizierten Bedingungen. Selbst wenn es irgendwann mal funktioniert, ist es kaum wart-/änderbar. Darko hat ein solches Beispiel geliefert. Gerne gehe ich Ablaufsteuerungen aus der Datenfluss Sicht an. z.B. die Koppelpläne aus der SPS Welt ziehen das konsequent durch. Dann gibt es ja auch noch die Ereignisorientierte Sichtweise. Welche durchaus, bei passenden Anforderungen, die beste/eleganteste Möglichkeit sein kann.
Darko D. schrieb: > Ich werde mich wie von Jobst und den anderen empfohlen erst mal mit den > Zustandsautomaten auseinandersetzen müssen. Vielleicht wären Petri-Netze einfacher für Dich. Dein Ablaufdiagramm geht schon weitestgehend in diese Richtung.
Hat sich in seiner Sandstrahlkabine eingeschlossen und kommt nun nicht mehr an den Taster. Er wollte den Taster ja nicht festhalten müssen ... Alfred Hitchcock hätte seinen Spaß! :-D Gruß Jobst
Jobst M. schrieb: > Hat sich in seiner Sandstrahlkabine eingeschlossen und kommt nun nicht > mehr an den Taster. > Er wollte den Taster ja nicht festhalten müssen ... LOL
EAF schrieb: > Ihm scheint verschollen zu sein. Nein. Er ist mit einem Petri-Netz zum Angeln gegangen. Dieter schrieb: > Vielleicht wären Petri-Netze einfacher für Dich.
Nein. Ich bin da. Kann mich aber frühestens im neuen Jahr melden. Guten Rutsch allen zusammen! Lg Darko
Ich habe übrigens sehr viel gelernt die Tage durch euch. Das ist schon viel mehr wert als die Kabine. Bis in ein paar Tagen.
Hi Hab mir mal die Mühe gemacht, es etwas bildlicher mit einer Schrittkette darzustellen. Die gelb markierten "Freigabe-Sicherheit"-Eingänge können jeweils in den Schritten anders ausfallen. Möglich sind Motorschutzschalter vom Gebläse, Bewegungsmelder im Gefahrenbereich oder Trittmatten oder einfach auch weggelassen, weil nicht benötigt. Gruß oldmax
Hallo alle zusammen, die erste volle Woche im Jahre 2022 ist noch nicht vorüber, daher darf man noch frohes neues Jahr wünschen. Um an meinem Projekt wieder ein kleines bisschen weiter zu kommen, habe ich mich entschieden einen deutschen, unmissverständlichen und präzise formulierten Text zu schreiben, was das Programm auf dem Atmega8 verwalten muss. Ich habe mich allerdings auch parallel mit den Automaten und anderen Darstellungsweisen von strukturierten Abläufen befasst. Einleitung: Das Ziel der ganzen Geschichte ist es, die Bedienerfreundlichkeit meiner selbst gebauten Sandstrahlkabine zu erhöhen. Die Kabine ist 150cm breit und 190cm hoch. Die Kabine ist mit einer Frontklappe ausgestattet die ebenfalls 150cm breit ist und ca.110cm hoch ist. Die Unterkante der Klappe ist ca. 80cm über dem Boden. Die Kabine ist auch mit einer Absaugung verbunden. Diese Absaugung brauch insgesamt 2 Freigaben um laufen zu können. Eine Freigabe erteilt der Bediener über einen Schalter (nicht Taster) am Bedienerpult und die andere Freigabe erteilt der ATmega 8. Es macht keinen Sinn die Absaugung bei geöffneter Klappe anzuhaben. Es soll aber möglich sein, die Kabine zu anderen Zwecken auch ohne Absaugung zu betreiben. Zum Beispiel irgenwas auspusten. Am Bedienerpult befindet sich ein Taster (nicht Schalter) zum Öffnen und zum Schließen der Klappe. Hauptteil: Die Klappe wird mit einem an der Seite befindlichen pneumatischen Zylinder aufgefahren. Dieser pneumatische Zylinder hat 2 Ventile. Sobald das Ventil zum hochfahren angesteuert wird, befüllt sich der Druckluftzylinder mit Luft und bewegt die Klappe hoch. Sobald das andere Ventil betätigt wird, wird die Druckluft im Zylinder abgelassen und die Klappe bewegt sich durch ihr Eigengewicht herunter. Man darf nur ein Ventil zur Zeit ansteuern. Beide Ventile zur gleichen Zeit anzusteuern macht keinen Sinn. Die Klappe ist auch mit zwei Endlagentastern ausgestattet. Die Elektronik kann daher die Position der Klappe ermitteln. Mir fallen dadurch 3 Zustände ein. Klappe oben, Klappe unten, Klappe in unbekannter Höhe. Die Elektronik soll daher wie folgt vorgehen: Die Elektronik soll nur aktiv werden wenn der Benutzer eine Änderung des Status der Klappe haben möchte. Ist die Klappe ganz oben (Endschalter oben ist betätigt), soll sie heruntergefahren werden. Ist die Klappe ganz unten (Endschalter unten ist betätigt), soll sie hochgefahren werden. Ist die Klappe irgendwo in der Mitte soll sie runtergefahren werden. Leider ist es notwendig, den Anpressdruck zwischen Klappe und Kabinenrahmen mittels einer Zuziehhilfe, die ebenfalls pneumatisch funktioniert zu erhöhen. Diese Zuziehhilfe hat auch zwei Ventile. Eins für zu und eins für auf. Im Gegensatz zur Klappe hat die Zuziehhilfe nur einen Endlagentaster nur für den Status auf. Das Schließen der Zuziehhilfe dauert exakt 2,5 sekunden. Das bedeutet das nun jedes Mal bevor die Klappe auf und zu gefahren werden soll, gewährleitet sein muss, dass die Zuziehhilfe den Satus "offen" hat. Bei einer geschlossenen Zuziehhilfe kann die Klappe mechanisch weder geöffnet noch geschlossen werden. Noch ein paar Sätze zur Absaugung. Gedacht ist es so: Ist der Schalter der Absaugung auf ein, soll die Absaugung bei geschlossener Klappe auch die Freigabe des ATmega 8 bekommen. Ist die Klappe nicht ganz geschlossen oder ganz oben, nimmt der ATmega 8 die Freigabe als Ausgang weg. Dann spielt es keine Rolle in welcher Stellung der Schalter Absaugung ein/aus ist. Der Status des Schalters wird als Eingang in den ATmega 8 gespeist. Ist die Klappe geschlossen und die Absaugung läuft, dann soll der ATmega8 die Freigabe Absaugung wegnehmen und 7 sekunden warten bis diese Austrudelt. Erst dann darf die Klappe geöffnet werden. Ist die Klappe zu und die Absaugung ist aus (Schalter Absaugung steht auf aus) brauch der Bediener natürlich keine 7 sekunden warten bis sich die Klappe öffnet. Als allerletztes ist nur noch der Vorgang "Schließen von Klappe ganz auf" und der Vorgang "Schließen aus unbekannter Höhe" zu erklären. Schließen aus ganz oben (Endlage oben ist betätigt): Das Ventil Klappe zu soll 1,5 sekunden lang angesteuert werden, um einen sehr großen Weg in relativ kurzer Zeit zurückzulegen. Nach dieser zeit fehlen ungefähr noch 15cm Weg. In diesen letzten 15 cm soll der AT mega 8 folgende Ausführung machen: 500ms warten, 100ms Ventil Klappe zu ansteuern 500ms warten, 100 ms Ventil Klappe zu ansteuern etc. solange bis die Endlage Klappe geschlossen erreicht ist. Immer wenn diese Endlage erreicht ist, soll anschließend das Ventil Zuziehhilfe zumachen 3 sekunden lang angesteuert werden. Dann soll die Freigabe Absaugung erteilt werden. jetzt Schließen aus irgendwo in der Mitte: 500ms warten, 100ms Ventil Klappe zu ansteuern 500ms warten, 100 ms Ventil Klappe zu ansteuern etc. solange bis die Endlage Klappe geschlossen erreicht ist. Ich bin mir nun relativ sicher, dass das ein normal denkender Mensch versteht. Anders kann ich es im Moment nicht darstellen. Wenn auch das nicht verstanden wird, dann muss ich nach einer ganz anderen Lösung suchen. Vielleicht für jeden kram einen separaten Schalter.... Ich danke euch noch einmal. LG Darko aus Bremen
Darko Dragojevic schrieb: > Ich habe mich allerdings auch parallel mit den Automaten und anderen > Darstellungsweisen von strukturierten Abläufen befasst. Merkt man. Die neue Beschreibung der Aufgabe gefällt mir um Welten besser als die erste. Noch ein paar Fotos von der Verriegelung der Klappe und dem Bedienfeld wären gut.
Stefan ⛄ F. schrieb: > Merkt man. Die neue Beschreibung der Aufgabe gefällt mir um Welten > besser als die erste. Noch ein paar Fotos von der Verriegelung der > Klappe und dem Bedienfeld wären gut. Einfach mal ein Schema des ekeltrischen Aufbaus (Ventile, Endlagenschalter, Absaugung...) würde mehr aussagen als kubikmeterweise Prosa und Bilder von Frontplatten...
Das ist kein Problem. Werde ich die Tage nachreichen. LG
Sehr schöne Beschreibung, ein paar Feinheiten fehlen mir dennoch. Sind aber Peanuts: Darko Dragojevic schrieb: > Das Schließen der Zuziehhilfe dauert exakt 2,5 sekunden. Danach soll das Ventil für die Zuziehhilfe wieder geschlossen werden oder darf das offen bleiben und so weiter zuziehen? Darko Dragojevic schrieb: > Ist die Klappe zu und die Absaugung ist aus > (Schalter Absaugung steht auf aus) brauch der Bediener natürlich keine 7 > sekunden warten bis sich > die Klappe öffnet. Also die Absaugung mit dem Schalter vorher abschalten und danach sofort mit dem Taster die Klappe öffnen. Dann braucht man nicht 7s zu warten ... ;-) Darko Dragojevic schrieb: > 500ms warten, > 100ms Ventil Klappe zu ansteuern > 500ms warten, > 100 ms Ventil Klappe zu ansteuern etc. > > solange bis die Endlage Klappe geschlossen erreicht ist. Und danach kann das "Klappe schließen" Ventil geöffnet bleiben? Oder soll es weiter pulsen? (Verschleiß?) Sonst arbeitet der Restdruck in der Klappenpneumatik ja gegen die Zuziehhilfe. Gruß Jobst
Hi Ja, die letzte Beschreibung war deutlich, doch was will der TO? Du habe beschrieben, in Worten und bildlich, wie er zur Lösung kommt. Wenn das Verständnis fehlt, diese Anleitung zur Denkweise für den Ablauf, sorry,da können wir uns die Finger wund schreiben. Wo st das Problem, die Ablaufkette nur zur Bewegung der Klappen zu nutzen und die Ventilatoren mit der entsprechenden Verriegelung und Enschaltbedngung separat umzusetzen. Wenn er ein fertiges Programm möchte, dann muss auch ein Schaltplan her,oder sollen wir solange raten, bis die richtige Konfiguration gefunden ist? Mal ehrlich, für diese Aufgabe hätten auch max. 20 Beiträge gereicht. Gruß oldmax
Darko D. schrieb: > Das hier ist vom AT Mega 8 die Belegung (wenn das so geht) hoffe ich: Für Programmierung via ISP solltest Du die Pins 17 bis 19 frei räumen. Gruß Jobst
Hallo Jobst. Sehr interessant, dass da dennoch Fragen offen bleiben. Gerne beantworte ich die natürlich. Der Schließvorgang dauert genau 2,5 Sekunden. Nach einer 3 sekündigen Ansteuerung kann davon ausgegangen werden, dass der pneumatische Zylinder drucklos ist. Danach soll das Ventil "Zuziehhilfe schließen" bitte nicht mehr angesteuert werden. Zum Thema Absaugung. Ja rein theoretisch hast du Recht, wenn man die Absaugung manuell ausschaltet und schnell kurz danach den Taster "Klappe auf" betätigt, würde die Klappe aufgehen. Darin sehe ich 2 Probleme. Erstens ist die Absaugung schon bei geschlossener Klappe ohrenbetäubend laut, ich möchte gar nicht wissen wie laut es bei geöffneter Klappe ist und das zweite Problem ist, dass dann die Pneumatik für die Klappe auf gegen das Vakuum der Absaugung kämpft. Man müsste wenn man es industriell nach ECE und DIN und was es da alles gibt, einen Timer zählen lassen der dann auch die Zeit nach der Betätigung des Schalters zählt. Das brauch ich hier aber nicht. Aber danke für die Anregung. Ich werde das aber nicht so machen, dass ich dann ganz schnell den Klappe auf Taster drücke. Die letzte Frage beantworte ich natürlich auch gerne. Das Ventil "Klappe zu" brauch nachdem der Entlagenschalter erreicht ist nicht mehr angesteuert werden. Optimalerweise kann man ja dem atmega 8 sagen, dass wenn die Endlage unten erreicht ist, dass danach noch eine dauerhafte Ansteuerung des Ventils für 0,5 Sekunden durchgeführt werden soll, um auch diesen pneumatischen Zylinder drucklos zu machen. Ich bevorzuge es persönlich, dass nach diesen ganzen hoch und runter Fahrereien alle Ventile geschlossen bleiben.
Das ist sehr schlecht, wenn ich die Pins freiräumen soll. Ich habe mich auch beim Löten gewundert, dass diese Ports doppelt belegt sind. Ich weiß nicht ob via ISP programmiere. Ich habe ein programm das nennt sich ich glaube AVR demo. Nach 30 min. schließt es sich und dann muss ich das neu öffnen. Und dann hab ich so ein kleines Tool über usb verbunden. Ich hoffe das ist nicht ISP...
Martin du hast Recht mit den 20 Beiträgen. Es war mein Fehler, dass ich nicht in der Lage war, deutlich zu machen, was ich möchte. Das ist mir nur über Umwege gelungen, die vielleicht auch nicht optimal waren. Nun kann man aber bis auf minimale Feinschliff-Arbeiten erkennen was ich möchte und was letztenendes das Programm können soll. Das ist ja schon mal der erste Schritt, dass mein Gegenüber erst mal weiß was ich möchte. LG
Das ist ja doof, dass ich ISP benutze. Dann muss ich es umlöten. pin 17 kommt auf pin 14 pin 18 kommt auf pin 10 und pin 19 kommt auf 9 Ich hoffe das geht so.
Darko Dragojevic schrieb: > Es war mein Fehler, dass ich > nicht in der Lage war, deutlich zu machen, was ich möchte. aber das macht man sich VORHER schlau und fährt nicht in irgendeine Himmelsrichtung los. Man kann andere µC nutzen, man kann andere Programmieroberflächen wählen, z.B. Arduino und m328p oder AVR Studio 6 mit gcc welche beide nutzen. Man kann ISP nehmen oder und dem AVR einen Bootloader aufspielen und dann über Rx & Tx programmieren. Wenn der Weg nicht klar ist, dann lohnt es nicht zu starten! Ich fahre doch mit den Auto nicht Richtung Norden wenn ich nach Italien will. (vorausgesetzt man startet nicht in der Türkei)
:
Bearbeitet durch User
Darko Dragojevic schrieb: > Das ist ja schon > mal der erste Schritt, dass mein Gegenüber erst mal weiß was ich möchte. Dann hätte ich doch auch mal gewusst, was dir an meinem Vorschlag nicht gefällt? Sind es die Kosten? Darko D. schrieb: > Das ist ja doof, dass ich ISP benutze. Ja! Zudem hältst du geheim, welche Adapter du da nutzt. Damit ist es nicht ganz klar. Könnte ja auch ein Bootloader drauf sein, dann brauchst du kein ISP. Es geht als auch ohne großen Umbau.
Darko D. schrieb: > Das ist ja doof, dass ich ISP benutze. Nö, gar nicht! Man kann auch etwas an die Pins anschließen, aber sie dürfen dann nicht stören. Du benutzt alle als Eingänge, das wäre okay. Und wenn alle Schalter einfach nur gegen Masse schließen, kann das klappen. Bei dem Taster für die Klappe ist das noch halbwegs einfach zu lösen: Einfach während der programmierung nicht drauf drücken. Aber wie ist das bei den Endlageschaltern für "Zuziehhilfe offen" und "Klappe unten"? Die Klappe dürfte nicht unten sein, die Zuziehhilfe müsste aber geschlossen sein, um den passenden Zustand zu haben. Die Kombi ist aber ja problematisch zu erreichen, wenn das Ding schon läuft. Wenn Du den Prozessor zum programmieren abziehst (Steckverbindung etc.) kann es aber so bleiben, wie es ist. Gruß Jobst
Joachim B. schrieb: > dem AVR einen Bootloader aufspielen und > dann über Rx & Tx programmieren. Sollte man bei dem mega8 ohne Quarz vermeiden! Gruß Jobst
Hi Na klar, wir wissen jetzt genau, wie du deine IO organisiert hast. Also, wenn du kein Malprogramm für Schaltungen hast, es geht auch mit Paint. Ein Beispiel hab ich mal angehängt, wie so was in etwa aussehen kann. Der Atmega8 hat 23 Io. Wenn du auf einen Quarz verzichtest und auch keine serielle Schnittstelle brauchst, bleibt nach Abzug von Reset, SCK, MISO und MOSI noch 19 nutzbare IO-Pins. Für deine Anwendung reicht die Genauigkeit der internen Taktquelle und 1MHz ist auch schnell genug, um die paar Befehle zu bearbeiten. Nach der Skizze zur Schaltung kannst du die IO definieren und entsprechend im Programm zuweisen. Damit solltest du anfangen, bevor du tausendmal den Lötkolben in die Hand nimmst und immer wieder umfrikeln mußt. Dann wird es dir auch wesentlich leichter fallen, ein Programm zu fertigen. Und dann noch ein Tip Trenne Eingabe, Verarbeiten und Ausgabe.(EVA-Prinzip) Auch für so ein kleines Programm lohnt es sich, eine Struktur zu haben, die später bei Fehlersuche oder Programmanpassung die Arbeit erleichtert. So kannst du einen Variablenbereich Befehlstastern zuordnen, einen anderen für Rückmeldungen. Einen weiteren für Ausgaben, die du am Schluß der Programmschleife den Ausgabeports zuweist. Ich bin wirklich mal gespannt, wie viele Beiträge noch erforderlich sind, bis du deinen Controller erfolgreich zum Laufen bekommst. Ich hab da so meine Zweifel. Gruß oldmax
Jobst M. schrieb: > Sollte man bei dem mega8 ohne Quarz vermeiden! 50Cent? Oder 3 Ocken für einen Nano Klon... oldmax schrieb: > Ich bin wirklich mal gespannt, wie viele Beiträge noch erforderlich > sind, bis du deinen Controller erfolgreich zum Laufen bekommst. Ich hab > da so meine Zweifel. Deine Zweifel sind unsinnig. Die 20min sind schon um.
Hallo, sowohl die Zeichnung der Schrittkette als auch des Schaltplans von Oldman solltest du berücksichtigen. Damit es betriebssicher ist, sollten für die Eingänge (Tasten + Endschalter) keine Rechnerpins ungeschützt nach außen geführt werden. Zum Einen fangen diese Störungen ein, zum Anderen ist bei Kurzschluss zu einer höheren Spannung sofort der Rechner defekt. Hier solltest du Optokoppler einsetzen. Auch schon deshalb, damit ein ausreichender Strom über die Endschalter fließt. Der Not-Aus-Taster muss direkt auf die Hardware wirken. Gruß Otto
EAF schrieb: > Jobst M. schrieb: >> Sollte man bei dem mega8 ohne Quarz vermeiden! > 50Cent? > Oder 3 Ocken für einen Nano Klon... Wozu? Um anstelle der Firmware dort einen Bootloader einzuspielen, damit man die Firmware per UART dort rein schieben kann? Im Zweifelsfall einmalig. Außerdem ist ja alles was er braucht vorhanden. Wieso sollte er nun noch weitere Teile ordern? Egal was es kostet. > oldmax schrieb: >> Ich bin wirklich mal gespannt, wie viele Beiträge noch erforderlich >> sind, bis du deinen Controller erfolgreich zum Laufen bekommst. Ich hab >> da so meine Zweifel. > > Deine Zweifel sind unsinnig. > Die 20min sind schon um. Habt Ihr keine Zeit, oder was? Das ist völlig egal, er hat es eingesehen und sich dafür auch entschuldigt. Gruß Jobst
Darko Dragojevic schrieb: > nicht in der Lage war, deutlich zu machen, was ich möchte. Das ist mir > nur über Umwege gelungen, die vielleicht auch nicht optimal waren. Nun > kann man aber bis auf minimale Feinschliff-Arbeiten erkennen was ich > möchte und was letztenendes das Programm können soll. Das ist ja schon > mal der erste Schritt, dass mein Gegenüber erst mal weiß was ich möchte. Drako, ich finde es absolut bemerkenswert, was Du Dir in den letzten 2 Wochen selbst beigebracht hast. Hut ab!!! Mit Deinen neu erlernten Fähigkeiten steckst Du bestimmt die Hälfte der hier Mit-Diskutierenden freiweg in die Hosentasche.
Hallo zusammen. Darko ist mein Name :-) Ich finde selbst, dass ich gelernt habe in den letzten Wochen. Das jemand den Hut vor mir zieht, kann ich nicht nachvollziehen. Ich weiß auch nicht ob das Ironie war. Ich habe die Situation von Anfang an falsch eingeschätzt und im laufe des Chattes hat sich das dann so ergeben. Und das tut mir leid! Heute Abend lade ich ein paar Bilder hoch von meinem Equipment hoch. Ich weiß nicht wie ich dieses Modul benennen soll. Übrigens kann ich beim Programmieren einfach die Stecker von den Eingängen und Ausgängen abziehen. Das ist bei mir alles gesteckt. Auch davon lade ich ein paar Bilder hoch. Und dann kommen wir lansam ins Finale. Hurra!
Darko D. schrieb: > Das jemand den Hut vor mir zieht, kann ich nicht nachvollziehen. > Ich weiß auch nicht ob das Ironie war. Jetzt nimm das Lob doch an! Du bist echt anstrengend.
Hi Ich denke, die meisten wird es freuen, wenn du hier etwas gelernt hast und du dein Projekt erfolgreich zu Ende bringst. Im Anhang hab ich dir noch eine kleine Hilfe skizziert. Ein Schaltbild hilft nicht nur die Gedanken zu bündeln, sondern zeigt dir auch oft, welche Komponenten du einsetzen mußt. Der Hinweis auf Optokoppler ist nicht ganz unbegründet, denn es besteht die Möglichkeit einer statischen Aufladung. Nicht nur die Maschine, auch der Bediener kann ein Ladungsträger sein, wie wohl sicherlich schon jeder einmal zu spüren bekommen hat. Elektronik ist da manchmal ein wenig empfindlich und reagiert zimperlich, wie eine kranke Mimose. Wenn dir mein Vorschlag mit dem Ablaufplan zu viel Automatismus bietet, nun, es liegt an dir, den Betriebszustand mit einer LED zu signalisieren und dann die Freigabe zur manuellen Zuschaltung der Lüfter zu geben. Setz dafür einfach ein Relais ein, dessen Schließer die Steuerspannung zur Einschaltung der Lüfterschütze durchschaltet. Da hier immer wieder Erklärungen von Nöten sind, weil ich den Eindruck habe, du siehst die Vorschläge als fertige Endlösung und nicht als Anstoß zur Umsetzung, bin ich eben nicht davon überzeugt, das du verstanden hast, wie man einen Controller dazu bringt, diese Aufgabe ganz oder teilweise zu erledigen. Das beginnt mit der Parametrierung der Ein-und Ausgabe. Der Einrichtung eines Timers. Der Entprellung von Kontakten, egal, ob diese von Tastern, Endschaltern oder Rückmeldekontakte von Leistungsschützen sind. Auch kannst du nicht einfach Ausgabepins mit einem Ventil oder Relais beschalten. Da braucht es Treiber, die Spannung und Strom für diese Bauteile liefern können. Ich hab dir mal auf die schnelle mit Paint eine Skizze angefertigt, die du nach deinen Vorgaben ändern kannst. Übrigends, ja, ein Not-Aus schaltet die Leistung weg und damit die gesamte Maschine aus. Nicht immer ist das ideal, z.b. wenn weitere Energien die Druckluft oder Schwerkraft unkontrolliert gefährlich wird. Dann kann mit einem Not-Halt die Maschine in einem gesicherten Zustand gehalten werden. Dabei bleibt die Energie weiter zugeschalten, Bewegung aber blockiert. Gruß oldmax
oldmax schrieb: > Ich hab dir mal auf die schnelle mit Paint eine > Skizze angefertigt, die du nach deinen Vorgaben ändern kannst. Ich glaube du hast das falsche Bild angehängt. Dieses Bild hatten wir gestern in einem ganz anderen Zusammenhang.
Jobst M. schrieb: >> oldmax schrieb: >>> Ich bin wirklich mal gespannt, wie viele Beiträge noch erforderlich >>> sind, bis du deinen Controller erfolgreich zum Laufen bekommst. Ich hab >>> da so meine Zweifel. >> >> Deine Zweifel sind unsinnig. >> Die 20min sind schon um. > > Habt Ihr keine Zeit, oder was? > Das ist völlig egal, er hat es eingesehen und sich dafür auch > entschuldigt. > > Gruß > Jobst Hi Sorry, muß darauf kurz eingehen Wieso schreibst du da in der Mehrzahl? Mir ist es ziemlich egal, wieviel Zeit er noch braucht und wie viele Beiträge noch geschrieben werden müssen. Die 20 min. Bemerkung aus dem ersten Post hab ich auch nur belächelt. Klar, wenn ein Bauplan existiert und die Funktion der Maschine von Anfang an klar gewesen wäre, dann sind die 20 Minuten gar nicht mal so abwegig. Aber um helfen zu können, muß dem TO auch klar sein, mit was er hier zu tun hat. Das dieser Baustein eben nicht mal einfach so funktioniert. Und ich hab den Eindruck, hier fehlen einfach gewisse Grundkenntnisse. Die muß man sich aneignen, eben lernen. Manche brauchen dafür Jahre, andere sind etwas schneller, doch niemand wird ohne Grundkenntnisse mit ein paar Posts einen Controller programmieren und so beschalten, das eine Maschine gesteuert wird. Auch nicht mit so einem banalen Programm. Und schon gar nicht, wenn er Probleme hat, eine wie von mir vorgegebene Schrittkette für seine Vorgaben abzuändern. Ich würd mich freuen, wenn ich mich irre. Gruß oldmax
Stefan ⛄ F. schrieb: > oldmax schrieb: >> Ich hab dir mal auf die schnelle mit Paint eine >> Skizze angefertigt, die du nach deinen Vorgaben ändern kannst. > > Ich glaube du hast das falsche Bild angehängt. Dieses Bild hatten wir > gestern in einem ganz anderen Zusammenhang. Hi Ok, nun ja, in der Tat hab ich es gestern schon mal geschickt. Und es sollte auch hier landen. Tat es aber nicht und ich dachte, dann ist der Beitrag mal wieder im Nirwana verschwunden. Nun weiß ich nicht, in welcher Diskussion es gelandet ist. Ein möglicher Grund, ich schreib zur Zeit auf einem Ur-Alt-Net_Book und diese sch.. empfindliche Fläche zum Positionieren von Textcursor etc. fummelt oft dazwischen. Also, das Bild sollte gestern schon hier landen. Da war auch ein Text dazu. Sorry, wenn das Verwirrung gestiftet haben sollte. Gruß oldmax
oldmax schrieb: > Ich bin wirklich mal gespannt, wie viele Beiträge noch erforderlich > sind, bis du deinen Controller erfolgreich zum Laufen bekommst. oldmax schrieb: > Mir ist es ziemlich egal, wieviel > Zeit er noch braucht und wie viele Beiträge noch geschrieben werden > müssen. oldmax schrieb: > Sorry, muß darauf kurz eingehen Überflüssiger Krempel, der Threads nur unnötig in die Länge zieht. Gruß Jobst
Bei dieser OK-Beschaltung habe ich gewisse Bedenken.
Sorry, ja, mein Fehler. Ach und ja Jobst, deine Beiträge sind durchgängig nützlich... Gruß oldmax
Hallo, ich habe mir erlaubt, den Schaltplan von Oldmax zu überarbeiten. Ein Industrieprojekt unterscheidet sich von einem Bastelprojekt in folgenden Punkten: 1. Es sollte stör- und betriebsicher sein 2. Die Inbetriebnahme sollte durch Visualisierung erleichtert werden 3. Es sollte wartungsfreundlich sein 4. Es sollte zuverlässig sein zu 1) Optokoppler an den Eingängen werden zur Vermeidung von Störungen verscheidenster Ursache benötigt: a) ESD (elektrostatische Entladung) b) kapazitive und induktive Einkopplungen (z. B. durch das Schalten der Ventile und Motoren) in die Steuerleitungen c) Falschanschluß Ein zentraler Punkt ist der Not-Aus. Dieser muß über ein Sicherheitsschaltgerätund ggf. sogar redundant erfolgen. Hier gibt es zwingende Vorschriften! Da kannst du im Fall des Falles auch nicht herausreden, dass due dies nicht gewusst hast..... zu 2) Inbetriebnahmeerleichterung durch Visualisierung: a) Eingänge In Reihe zu den Dioden der Optokoppler sollten LED vorgesehen werden, um den Zustand aller Schalter zu visualisieren. Das mag unnötig erscheinen aber in der Praxis ist der Zustand der Endschalter wahrscheinlich nicht sichtbar. b) Ausgänge: Parallel zu den Spulen der Relais sollten LED vorgesehen werden, um den Zustand der Relais zu visualisieren. zu 3) Die Wartung wird aufgrund der Visualisierung ebenfalls vereichfacht: a) In der Praxis verschleissen zum Beispiel Endschalter - dies kann mittels der LED schnell erkannt werden. zu 4) Für zuverlässigen Betrieb ist ein robuster Aufbau die wichtigste Voraussetzung: a) stabiles wasser- und schmutzdichtes Gehäuse für die Steuerung b) Geeignete Kabeleinführung (zumindest Kunststoffverschraubungen) c) Auswahl mechanisch robuster und zuverlässiger Taster und Endschalter Bisher ist auch noch offen, welche und wie viele Steuerspannungen verwendet werden: a) Wie wird die Controllerversorgung erzeugt? b) Relais welche Betriebsspannung (5V, 12V, 24V)? c) Magnetventile: welche Betriebsspannung (12V, 24V, 230V) und sind Entstörmaßnahmen vorhanden? d) Schütze welche Betriebsspannung (24V, 230V) und sind Entstörmaßnahmen vorhanden? Hier gibt es sicher auch noch Baustellen..... Viele Grüße Otto
Hallo. Ich schreibe eben vom Handy. Die Steuerspannung ist 24volt DC. Der atmega 8 wird mit einem 7805 Festspannungsregler bestromt. Hier noch die Bilder die offen waren. Lg Darko
Alle 5 Eingänge und alle 5 Ausgänge werden mit LED s sichtbar gemacht. Auch die Spannungen 12volt und 24 Volt und 5 Volt per LED sichtbar gemacht. Das Symbol auf dem Desktop ist das Programm. Ich werde jetzt die Tage mich mit den Grundlagen der Programmierung noch einmal auseinander setzen, im Studium hatten wir damals glücklicherweise noch ein bisschen gemacht.
Hallo Jobst. Einen Schaltplan habe ich nicht. Ich habe es so zusammen gelötet. Spannungsversorgung am atmega 8 und die Verbindung zum Programmieranschluss und die 10 ein und Ausgänge. Mehr nicht.
Abblockkondensatoren? Die Regler Schaltung entspricht dessen Datenblatt? Hat der ATMega8 nicht 2 (A)VCC und GND Pins?
Ne nur einmal 5 Volt plus und 1 Mal minus links am atmega etwa in der Mitte
Darko D. schrieb: > Ne nur einmal 5 Volt plus und 1 Mal minus links am atmega etwa in der > Mitte Aua! http://www.dieelektronikerseite.de/Pics/uC-Ecke/Lections/Der%20ATMega8%20-%20Ein%20intelligenter%20Kaefer%20S01.GIF
Darko D. schrieb: > Hallo Jobst. Einen Schaltplan habe ich nicht. Ich habe es so zusammen > gelötet. Spannungsversorgung am atmega 8 und die Verbindung zum > Programmieranschluss und die 10 ein und Ausgänge. Mehr nicht. Schaltplan! Machen. Irgendwie. Installier Dir z.B. KiCad. Bei der Programmierung oder bei Problemen suchst Du Dir sonst einen Wolf. Gruß Jobst
Darko D. schrieb: > Darko ist mein Name :-) > Ich finde selbst, dass ich gelernt habe in den letzten Wochen. > Das jemand den Hut vor mir zieht, kann ich nicht nachvollziehen. > Ich weiß auch nicht ob das Ironie war. Sorry Darko, für den Buchstabendreher. Ich kann Dir versichern, in meinem Post war nicht die Spur von Irone versteckt - und ich finde es absolut bemerkenswert, wie du dich in die Sache reingeknient, und was Du dabei gelernt hast. Man braucht kein KiCAD (obwohl es schön ist, wenn man es kann). Das lenkt für den Anfang nur ab. Ich male meine Schaltpläne seit einem halben Jahrhundert mit Bleistift auf Papier, oft ohne Lineal und Schablone - und das war immer gut genug. Darko D. schrieb: > Ich werde jetzt > die Tage mich mit den Grundlagen der Programmierung noch einmal > auseinander setzen, im Studium hatten wir damals glücklicherweise noch > ein bisschen gemacht. Mein Tipp: Mach nicht den gleichen Fehler wie zu Beginn, verzettle dich nicht (wie schon mal) in Bitfummelei sondern lerne zu abstrahieren. Kein Mensch merkt sich, welcher Schalter, welche LED an welchem Pin hängt. Vielmehr musst Du Signale benennen, mit prägnanten Namen belegen - ohne einen Roman zu verfassen. SW1 und SW2 sind unpassende, auch PINB und PINB5 sind keine guten Namen. "Zuziehhilfe_offen" und "Klappe_unten" sind schon nicht mal ganz schlecht - obwohl es immer noch besser geht. Man sollte sich nicht überlegen müssen, ob "Klappe_unten" meint, dass die Klappe nun "offen" oder "zu" ist. Wähle diese Namen mit Bedacht, bevor du anfängst mit Programmieren - beim Programmieren hast du dazu keinen Nerv mehr. Verwende diese Namen durchgängig, in deiner Mechanik (z.B. Endschalter Zuziehhilfe), in deiner Beschreibung, im Schaltplan als Signalnamen (s.o.), bei Anzeigen und als Variablennamen ebenso. Ich habs immer so gehalten, dass ich 1=H=wahr=aktiv definiert hatte. Wenn ich ein Signal invertieren musste, kam ein N_ davor: Aus "Klappe_unten" wurde dann das inverse N_Klappe_unten (steht für NICHT_Klappe_unten). Im Programm-Header schreibt man dann z.B. sowas wie: #define Klappe_offen B3 #define Zuziehhilfe_offen .... und vergisst danach B3 und ... sofort wieder. Anm.: Manche verwenden hier andere Sprachkonstrukte und erklären Dir sicher auch das Wie und Warum ...
Hannes schrieb: > Ich male meine Schaltpläne seit einem > halben Jahrhundert mit Bleistift auf Papier, oft ohne Lineal und > Schablone - und das war immer gut genug. Die Vorteile, wenn man es nicht auf Papier macht: - Es lässt sich anschließend noch was verschieben. - Copy-Paste! - Man muss den Plan nicht einscannen, um ihn ins Forum zu bekommen. Mit einem spezialisiertem Tool wird es außerdem noch einfacher, als z.B. mit Pain(t), da man fertige Symbole benutzt und auch das ziehen einer Leitung einfacher ist. Viel wichtiger finde ich allerdings, dass einer gemacht wird. Egal wie. Gruß Jobst
Jobst M. schrieb: > Viel wichtiger finde ich allerdings, dass einer gemacht wird. Egal wie. Ja, finde ich auch. Auf der Platine fehlen Kondensatoren, sie wird so wahrscheinlich nicht zuverlässig funktionieren. Die Leitungsführung insbesondere von GND sollte man auch mal überprüfen.
Hallo Darko, versorgst du den 7805 mit 24V? Wie hoch ist die Stromaufnahme? Was schaltest du mit den MJ10012? Die Ventile? Low-Side? Hast du Freilaufdioden oder eine Entstörbeschaltung? Das Anlöten am TO3-Gehäuse ist unzuverlässig. Viele Grüße Otto
Ich zitiere mal nichts, weil ihr habt alle Recht - irgendwie. Darkos Fotos vermitteln mir den Eindruck, dass das alles mit sehr viel Liebe gemacht ist. Sein Verhalten hier ist vorbildlich - hat er doch noch nie, auch nicht auf die allerdümmsten Mails, mit Aggressionen reagiert. Bitte behandelt ihn daher auch mit Respekt. Ich wollte mich eigentlich nicht zur Komponentenauswahl äußern (SPS ist ja wohl durch - oder?) - machs nun aber trotzdem - indem ich das Unwort „Arduino“ in den Ring werfe. Wohl wissentlich, dass jetzt gleich die Steine fliegen und ich womöglich einen Shit-Storm auslöse ... Für mich sind die Dinger einfach nur bequem und nehmen Neulinge eine ganze Menge Arbeit ab. Arduinos haben z.B. den Programmieradapter an Bord, kommen mit einem brauchbaren Versorgungskonzept (incl. Abblock-Cs), haben eine rudimentären Debug-Schnittstelle (Konsole) implementiert, jeder Trottel (also auch ich) kann ein LCD anschließen, es gibt für‘n schmalen Taler „shields“ (z.B. Relaisplatinen), und und und ... Und noch schlechter ist die IDE auch nicht... Durch die vielen Beispiel-Programme (sketch) und 100-te von Tutorials, sehr gute Dokumentation (auch Schadbilder und Platinen-Layouts) bekommt man einen schnellen, fast spielerischen Zugang zur verbauten Technik, Arduino ist dabei aber weit entfernt, nur ein Spielzeug zu sein. Man schaue sich einfach mal auf https://www.arduino.cc um. Dort kann man auch Hardware kaufen - muss es aber nicht. Arduino wird LEGAL nachgebaut und ist dann trotzdem kein China-Schrott ... Ich mag den Arduino UNO R3 (mit gesockeltem 328p DIL). Preis hat leider ziemlich angezogen ... Egal wie gut oder schlecht die Plattform ist: Macht was draus! Und ja: Es gibt Besseres, wird es immer geben. Aber ich fahre auch nicht mit'm Rolls zum Brötchen-Holen ... Um Arduino zu verstehen, lohnt ein kurzer Ausflug in die Geschichte der Plattform. https://de.wikipedia.org/wiki/Arduino_(Plattform)#Geschichte bietet eine kurze Zusammenfassung („Rechtsstreit“ mal außen vor), https://arduinohistory.github.io/de.html dann die (eine?) Langform.
Stefan ⛄ F. schrieb: > Die Leitungsführung insbesondere von GND > sollte man auch mal überprüfen. Die Antwort darauf kann uns aber nur ein Bild der Platinenunterseite geben. Gruß Jobst
Jobst M. schrieb: > Die Antwort darauf kann uns aber nur ein Bild der Platinenunterseite > geben Stefan sieht das so!
Hannes schrieb: > Schadbilder Ja, das denke ich bei den knuddeligen Arduinos auch immer .... Das was er dort schon aufgebaut hat, wird er frühestens dann abreißen, wenn sicher ist, dass damit auch nach Überarbeitung keine sinnvolle Funktion hinzubekommen ist. Und das würde ich genau so machen. Ich denke, dass man auf diesem Weg mehr lernt als wenn man fertige Shields benutzt. Deshalb befürworte ich ihn auch. Gruß Jobst
:
Bearbeitet durch User
Hallo alle zusammen. Wie hoch die Stromaufnahme ist weiß ich nicht. Ein Ventil hat 5 Watt. Ich meine es werden maximal 2 Ventile gleichzeitig geschaltet. Das bedeutet 10 Watt und plus der Strom vom Atmega 8. Hannes vielen Dank für die lieben Worte. Hier in solchen Foren muss man auch mit allem rechnen. Ich möchte auch anmerken, dass ich in etwa knapp 10 Anwendungen bisher vom Atmega 8 hatte. Einer davon auch in meinem Auto. Alles funktioniert bis heute tadellos. Auch das hier werde ich irgendwie hinbekommen. In der Ruhe liegt die Kraft. Und vielleicht kommt ja doch irgendwann einer vorbei und macht mir das vorher fertig.lg
Otto, ja die mj10012 Schalten die Ventile. Funktioniert einwandfrei. Solange es funktioniert lasse ich es so. Es ist so. Der 7812 wird von der 24volt Spannung versorgt und der 7805 wird von der 12 Volt Spannung versorgt.
Ach noch was habe ich vergessen zu schreiben. Alle Ausgänge werden mit einem 10 megaohm Wiederstand mit Masse verbunden. Ich werde in den nächsten Tagen das umsetzen was ihr mir rät. LG
Jobst M. schrieb: > Hannes schrieb: >> Schadbilder > > Ja, das denke ich bei den knuddeligen Arduinos auch immer .... Ooops - Freud'scher Verschreibsler? Wäre durchaus möglich, bei meinem angejahrten Bio-Flachrechner ... Trotzdem stehe ich voll und ganz hinter den aufgezählten Vorteilen. Bei solch schmalen Investitionskosten, monetär <10 €, geht Darko annähernd kein Risiko ein, wenn er sich so ein Knuddelding mal genauer anschaut. Sei es, um damit zwanglos rumzuspielen oder sich im hardwarenahen Programmieren zu üben - zum Beispiel in einer Testumgebung, bestehend aus einem Stück Sperrholz mit Schalterchen und Lämpchen - und Schildchen wie "Klappe" oder "Zuziehhilfe" oder so was ... Und sollte er dann den Entschluss fassen, seine Lochraster-Platine einem Redesign zu unterziehen und dort seine Neuerwerbung als Zentralgehirn rein zu spaxen - ich denke, da wäre ihm hier niemand wirklich böse. <wink>
Jobst M. schrieb: >> Die Leitungsführung insbesondere von GND >> sollte man auch mal überprüfen. > Die Antwort darauf kann uns aber nur ein Bild der Platinenunterseite > geben. Ja, deswegen habe ich das geschrieben, anstatt zu überprüfen. Joachim B. schrieb: > Stefan sieht das so! Nein
Darko D. schrieb: > Alle Ausgänge werden mit > einem 10 megaohm Wiederstand mit Masse verbunden. Das macht Sinn?
Hallo alle zusammen noch einmal. Ich bin wieder back. Mittlerweile stagniert das ganze irgendwie ein bisschen. Die komplette Hardware funktioniert einwandfrei! Ich muss nur die ganzen Ausgänge mit einem Kabel betätigen (5V), also genau das was das Programm machen soll. Über ein neues Design der Platine oder des Aufbaus kann man sich gerne streiten. Mit Sicherheit ist es nicht schick, funktioniert aber und hat die letzten Anwendungen auch durchgehend funktioniert. Ich würde vorschlagen ich fange einfach mal mit dem Programm an und ihr helft mir dann weiter? Weil programmtechnisch ist ja jetzt quasi fast gar nichts passiert... LG Darko
Darko schrieb: > Ich würde vorschlagen ich fange einfach mal mit dem Programm an und ihr > helft mir dann weiter? Sicher, stelle deine Fragen wenn du welche hast. Anfangen musst du selbst.
Ich doch auch wirklich mal gerne gewusst, was dir an meinem Vorschlag nicht gefällt? Sind es die Kosten?
Ich hätte doch auch wirklich mal gerne gewusst, was dir an meinem Vorschlag nicht gefällt? Sind es die Kosten?
Hallo Stefan. Danke! Hallo EAF, geht es um die 6 Stunden Arbeitszeit die weiter oben genannt wurden oder um dieses 10 Euro Modul? Ardurino? Lg aus Bremen
Darko D. schrieb: > Hallo EAF, geht es um die 6 Stunden Arbeitszeit die weiter oben genannt > wurden Ja, es geht um die 6 Stunden die ich an Arbeit in dein Problem investiert habe. Hier: Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort" Welches halt der Preis für das Programm sind/waren/ist welches in diesem Beitrag publiziert habe. Hier: Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort"
Hallo EAF, ich muss dein Angebot dankend leider ablehnen, denn ich habe gestern Abend selbst den Durchbruch gehabt. Alle Ausgänge und alle Eingänge konnten per AT mega8 deklariert und auch angesteuert werden. Auch der erste Probelauf (im Moment noch nicht ganz erfolgreich) konnte durchgeführt werden. Ich schätze (ganz vorsichtig) dass das Programm schon zu 80 % fertig ist. Ich werde es die Tage nochmal überarbeiten und korrigieren. Dann poste ich es euch und ihr könntet mir lediglich bei der Übersichtlichkeit helfen, denn im Moment nutze ich immer diese uneindeutigen Zahlenbuchstabenkombinationen z.B. while(!PORTB00x4) .... // 4 Ist der Endschalter... Ich weiß nicht wie ich dem Programm sagen soll, dass PORTB 00x16 irgendein Eingang sein soll. Das habe ich dann immer als Kommentar daneben geschrieben. (Geht zur Not auch) Also bis die Tage und dann hat es endlich ein Ende!!
Darko schrieb: > Ich schätze (ganz vorsichtig) dass das Programm schon zu 80 % fertig > ist. Für die letzten 20% braucht man 80%, sagt man. Aber mach mal, wenn du fertig bist hast du etwas worauf du stolz sein kannst.
Hallo Stefan oder Stefanus? Ja wie fast immer habt Ihr Recht. Dann sind etwa 80% fertig und 80 % sind noch offen. Auf 100% gerechnet ist dann quasi die Hälfte gemacht. Das ist schon sehr viel finde ich. Ja ich bin schon stolz auf mich. Vielleicht ab und zu auch mal zu stolz. Aber ich weiß ja was ihr meint! LG
Darko schrieb: > ich muss dein Angebot dankend leider ablehnen, Hier sieht man deutlich, dass du meine Frage noch nicht mal im Ansatz verstanden hast! Aber alles ok.... Übrigens: Darko schrieb: > while(!PORTB00x4) // 4 Ist der Endschalter... Warum so verschwurbelt? Wäre ein while(!endschalter) nicht viel Aussagekräftiger?
Hallo EAF, danke! Genau das ist das Problem, ich weiß nicht wie ich das dem Programm sagen soll z.B. while(!Klappe_unten) Ventil_Klappe_runter ansteuern. Mein Programm kennt die Kabine ja nicht. Ich muss ja irgendwie sagen, dass PORTB0x02 gleich Klappe_unten ist. Aber wenn ich das genau so schreibe, dann kommt ein Fehler beim Kompilieren.
Darko schrieb: > Mein Programm kennt die Kabine ja nicht. Ich muss ja irgendwie sagen, > dass > PORTB0x02 gleich Klappe_unten ist. Ja, das musst du! Vorschläge wurden dazu ja schon gemacht.
Unter der Annahme, dass PORTB Pin 4=HIGH ist wenn die Klappe unten ist:
1 | #define Klappe_unten (PORTB00x4)
|
oder klassisch
1 | #define Klappe_unten ((PORTB && (1<<PB4))
|
2 | |
3 | while (!Klappe_unten) |
4 | {
|
5 | ....
|
6 | }
|
Ist der Schalter jetzt an Pin 2 oder 4? Pin 16 gibt es nicht. Offenbar ist dir die Syntax von diesen Port-Markos im Detail unklar. Dann benutze sie besser nicht, sondern die klassische Variante. Darko schrieb: > while(!PORTB00x4) .... // 4 Ist der Endschalter... > Ich weiß nicht wie ich dem Programm sagen soll, > dass PORTB 00x16 irgendein Eingang sein soll. Darko schrieb: > Ich muss ja irgendwie sagen, > dass PORTB0x02 gleich Klappe_unten ist.
Stefan ⛄ F. schrieb: > #define Klappe_unten ((PORTB && (1<<4)) Doch eher: #define Klappe_unten ((PORTB & (1<<4))
Hallo, wie bereits oben mehrfach geschrieben wurde, muss für einen Eingang PINB verwendet werden. Gruß Otto
Otto schrieb: > wie bereits oben mehrfach geschrieben wurde, muss für einen Eingang > PINB verwendet werden. Ach ja, da war doch was... Facepalm.
EAF schrieb: > Übrigens: > Darko schrieb: >> while(!PORTB00x4) // 4 Ist der Endschalter... > Warum so verschwurbelt? > > Wäre ein while(!endschalter) nicht viel Aussagekräftiger? #define endschalter PORTB00x4 @Darko: Hier kommt Dir der Preprozessor zur Hilfe. In diesem Fall würde der PP alle "endschalter" durch "PORTB00x4" ersetzen - und das Ergebnis dem Compiler vorwerfen. Hannes
Übrigens, hier mal sowas, wie eine Alternative. Tuts mit oder ohne Arduino, egal ob C oder C++ Allerdings nur AVR
1 | #include "Pin.h" |
2 | |
3 | #define istKlappeZu PINDEF(B,4) // PORTB Bit 4
|
4 | |
5 | |
6 | int main() |
7 | {
|
8 | setInput(istKlappeZu); |
9 | //setInputPullup(istKlappeZu);
|
10 | |
11 | while(1) |
12 | {
|
13 | while(!getPin(istKlappeZu)) |
14 | {
|
15 | // Zeit verlempern
|
16 | }
|
17 | }
|
18 | }
|
Hi Darko Bis jetzt ist immer noch nicht klar, ob du ein Schaltbild deiner Elektrik/Elektronik angefertigt hast. Kann sein, des du das nicht für nötig hälst, aber wenn Mal ein Fehler auftritt, weißt du gar nicht, welche Strompfade wo gemessen werden müssen. Und glaub mir, erst wenn du dann deine Verdrahtung komplett auseinander gefummelt hast, wirst du den Tag verfluchen, an dem du diese Hinweise ignoriert hast. Die Skizze von mir war auch nur ein Beispiel, wie es relativ schnell und ohne Einarbeitung in ein Schaltplan Programm mit Paint umsetzbar ist. Die Zeichnung packst du dann in den Projektordner, wo du auch dein Programm ablegen kannst. Wenn dann Mal Änderungen geplant werden, hast du auch die Grundlage dafür. Gruß oldmax
Hallo Oldmax, grüß dich. Ich gehe so ziemlich jedem Hinweis nach. Ich habe alles auf 3 DIN A4 Blättern notiert, wo welcher Port zu welchem Eingang / Ausgang hingeht. Das bedeutet für mich, dass ich innerhalb weniger Minuten nachvollziehen kann wo welches Kabel hingeht. Grob gesagt wird der AT mega 8 mit Spannung versorgt und die 5 Ein und Ausgänge. Mehr ist daran ja nicht. Außerdem gibt es große Neuigkeiten. Das Programm funktioniert zu meiner vollen Zufriedenheit!!! Ich habe es selbst entworfen. Ich werde versuchen es heute Abend hier reinzustellen. Ich weiß auch, dass ihr mich verbal auseinandernehmen werdet, aber da muss ich durch. Für mich ist es eig. gar nicht so undurchsichtig. Ich habe IMMER mit Kommentaren dazugeschrieben was das alles bedeutet. Ihr könntet mir nur bei dem Feinschliff helfen, falls ihr dort überhaupt eine Notwendigkeit seht. LG aus Bremen
Doch eine Kleinigkeit werde ich ändern. Ich muss immer den Stecker abziehen für die Eingänge 4 und 5. Diese sind aber glaube ich RX und TX zum Programmieren. Ich werde die beiden Eingänge auf 2 andere Plätze anlöten. Dann brauch ich das nicht immer abziehen. Ich glaube Stefanus hat gesagt, dass ich die Plätze räumen muss.
Ich habe übrigens noch was herausgefunden, was ich ehrlich gesagt bescheuert finde. Pin 1 auf dem AT mega 8 ist 0x02 Pin 2 auf dem AT mega 8 ist 0x04 Pin 3 auf dem AT mega 8 ist 0x08 Pin 4 auf dem AT mega 8 ist 0x10 Da muss man erst mal drauf kommen! Mir hat niemand gesagt, dass das dumme Ding in Hexadezimal rechnet! Ich habe mich immer gewundert, warum bei 0x16 immer komische Dinge passieren!
Jobst M. schrieb: > Es fehlt ebenfalls ein Schaltplan, Otto schrieb: > Gibt es davon einen Schaltplan? Martin V. schrieb: > dann muss auch > ein Schaltplan her Otto schrieb: > sowohl die Zeichnung der Schrittkette als auch des Schaltplans von > Oldman solltest du berücksichtigen. Jobst M. schrieb: > ... Äh ... Schaltplan!? Jobst M. schrieb: > Schaltplan! > Machen. Irgendwie. Hannes schrieb: > Ich male meine Schaltpläne seit einem > halben Jahrhundert mit Bleistift auf Papier Martin V. schrieb: > Schaltplan Darko schrieb: > Ich gehe so ziemlich jedem Hinweis nach. ich denke das sieht mittlerweile nach eine Lüge aus! Bis jetzt sieht man kein Schaltplan, aber gut getrollt hast die Meute gut beschäftigt! 1. Fehler, keinen Plan gezeichnet (kann auch Blei auf Papier sein) daraus ergibt sich oft Fehler 2 2. Fehler, ohne Plan können die gelegten Leitungen nicht nachgezeichnet werden in bunt (-> Textmarker) somit ist man nie sicher wo man Fehler suchen muss, Hardware (bei Verdrahtungsfehler) oder Software
:
Bearbeitet durch User
Es gibt 10 Arten von Menschen. Und zwar: Die die Binärcode verstehen und die die ihn nicht verstehen
Nachtrag: Darko schrieb: > Mir hat niemand gesagt, dass das dumme Ding in Hexadezimal rechnet! Warum sollte das auch jemand sagen? Denn es stimmt nicht. Das wäre sogar gelogen. Die hexadezimale Schreibweise/Repräsentation ist eigentlich nur für Menschen gedacht. Sie soll uns das Lesen/Schreiben von Zahlen erleichtern.
Die ganzen Unstimmigkeiten rund um die Pinbelegung hätten schon laaaaange geklärt sein können, wenn du einen Schaltplan gezeichnet hättest. Aber ganz ehrlich: Wenn du jetzt einen vorlegst schaue ich ihn mir nicht mehr an. Zu spät, meine Geduld ist am Ende.
Joachim B. schrieb: > ... Stefan ⛄ F. schrieb: > ... Ich finde das voll doof von euch, dass ihr den Kollegen so anmacht. Ihr zeigt ein unnötiges antisoziales Verhalten. Denn ich möchte sein Programm schon sehen. Diesen Wunsch macht ihr mir kaputt, wenn ihr ihn verärgert/erniedrigt. Und sowieso: Ihr beide seid nun gerade auch nicht die hellsten Kerzen auf dem Kuchen.
Darko schrieb: > Ich habe übrigens noch was herausgefunden, was ich ehrlich gesagt > bescheuert finde. > > Pin 1 auf dem AT mega 8 ist 0x02 > Pin 2 auf dem AT mega 8 ist 0x04 > Pin 3 auf dem AT mega 8 ist 0x08 > Pin 4 auf dem AT mega 8 ist 0x10 Da muss man erst mal drauf kommen! > Mir hat niemand gesagt, dass das dumme Ding in Hexadezimal rechnet! > > Ich habe mich immer gewundert, warum bei 0x16 immer komische Dinge > passieren! Hättest Dir blos mal eine Kurzbleiche in C/C++ gegönnt, ein paar Beispiel-Programme nachvollzogen, ev. wie vorgeschlagen die <10€ für einen Arduino ausgegeben und ein Wochenende mit den Beispiel-Sketches gespielt - das hätte Dir unendlich viel Zeit und auch Frust erspart. Ganz sicher wäre Dir dann auch aufgefallen, dass z.B. 0x... eine Hexzahl, 0b... eine Binärzahl, 0... eine Oktalzahl darstellt - und Dir wäre dann klar geworden, dass: * 16 = 0x10 = 0b10000 = 020 - oder anders ausgedrückt * 16(dez) = 10(hex) = 10000(bin) = 20(okt) dasselbe ist und man jeweils die sinnvollste Darstellung sich frei aussuchen kann... EOT meinerseits - habe keine Lust, mir unnötig den Mund fusselig zu reden. Kuck selber nach: https://www.onlinetutorialspoint.com/c-program/c-number-system-decimal-binary-octal-and-hexadecimal.html
Stefan ⛄ F. schrieb: > meine Geduld ist am Ende. Jester schrieb: > EOT meinerseits Echt Darko, was denkst Du Dir eigentlich? Das Ganze muss noch durch den Freigabeprozess und der Kunde wartet schon! Ist doch keine Freizeitveranstaltung hier! Wir brauchen Ergebnisse! Sonst wird das Budget gestrichen! Tssss ... Managertypen ... Was soll die Hektik? Keine Zeit? Wenn ich keine Zeit habe, bin ich nicht hier. Darko offensichtlich auch nicht. Darko lass Dich nicht stressen, Du machst das schon ganz richtig. In der Ruhe liegt die Kraft. Gruß Jobst
Darko schrieb: > Ich habe übrigens noch was herausgefunden, was ich ehrlich gesagt > bescheuert finde. > > Pin 1 auf dem AT mega 8 ist 0x02 > Pin 2 auf dem AT mega 8 ist 0x04 > Pin 3 auf dem AT mega 8 ist 0x08 Das ist nicht bescheuert, sondern in Digitalsystemen notwendig. Jedes Signal hat eine Wertigkeit, so dass man diese addieren und damit mehrere ansprechen kann: 0x06 (0110) = Pin 1 und Pin 2 gleichzeitig oder 0x0C (1100) = Pin 2 und Pin 3 gleichzeitig Für Dich wäre es hilfreicher, das anstatt hex in binär abzubilden: 0x02 = 0010 0x04 = 0100 0x08 = 1000
Hi Darko Du machst es dir und auch den Lesern hier schwer. Warum so kompliziert? Mittlerweile über 200 Posts und immer noch fehlt Schaltbild. Du freust dich, das du die "Maschine" am Laufen hast, gut.Dann ist das doch in Ordnung, nur wenn dich der Bereich Elektronik, Mikrocontroller, Programmierung usw.weiter begleiten soll, dann musst du unbedingt mehr über das Dualsystem und binäre Logik lernen. Den meisten hier sind diese Dinge schon so selbstverständlich, das sie vergessen, das ein Anfänger mit Pin1 Probleme bekommen kann. Ich geh Mal wie die Allgemeinheit davon aus, das du nicht den Anschlusspin, sondern den Port-In meinst. Da ist es so, das wie in einem Byte die Bits mit der Basis 2 und dem Exponenten der Stelle benannt werden,eben 2^0, 2^1,2^2 usw. Auf Pin1 Bezügen wäre das 2^(Pin)1. Wenn dich das Thema interessiert, dann schau dir mal bei www.makerconnect.de im Forum unter der Rubrik FAQ. den Beitrag https://www.makerconnect.de/index.php?threads/ver%C3%B6ffentlichung-pc-und-%C2%B5c-programmieren-in-vb-und-assembler-lehrbuch.4252/ an. Ich hoffe, der Link funktioniert... ich bin da nicht so fit drin. Auch wenn du nicht an Assembler interessiert bist, da steht viel Grundsätzliches drin und wird dir helfen, einiges zu verstehen. Gruß oldmax
Hallo alle zusammen. Ich möchte es hier niemandem schwer machen. Ich versuche noch mal aus dem Gedächnis zu kramen was alles geschrieben wurde. Freizeit und Hobbyveranstaltung wurde genannt, dass das hier nicht sein soll. Für mich ist es aber gerade das. Dieses Projekt hat null mit meinem Beruf zu tun. Ich mache dieses alles hier zu 100 Prozent Hobby und zu 100 Prozent Freizeit. Dann wurde nach der Stromaufnahme gefragt. Ich kenne sie nicht. Ich habe Schwierigkeiten damit Fragen zu beantworten, die aus meiner Sicht aufwändig zu beantworten sind und aus meiner Sicht zu keinem sinnvollen Ergebnis führen. Warum ist es daher wichtig, ob der Atmega 8 nun 40 mA oder 45mA oder 70 mA benötigt. Das kann ich nicht nachvollziehen. Auch das mit dem Schaltplan kann ich nicht zu 100 Prozent nachvollziehen. Ich hatte ja geschrieben, dass ich das relativ überschaubar gelötet habe. Ich werde dennoch direkt nachdem ich das hier veröffentliche mit dem Schaltplan anfangen und Ihn hier reinstellen. Das wird ja bestimmt irgendwie Sinn haben warum ihr danach fragt. Wie gesagt die Hardware funktioniert top. Ich bezahle auch gerne 10 Euro für so Programmbeispiele auch 20 Euro. Ich muss mich nur schlau machen wo es sowas zu kaufen gibt. Bis gleich!
Darko schrieb: > Ich werde dennoch direkt nachdem ich das hier veröffentliche mit dem > Schaltplan anfangen ach hör auf! Das glaubt doch keiner mehr!
Darko schrieb: > Das wird ja bestimmt > irgendwie Sinn haben warum ihr danach fragt. Sorry, aber ich habe nicht nach dem Plan gefragt! Aber dir dennoch 3 Fehler(?) in deinem noch zu zeichnenden Plan aufgezeigt. Wobei von dir leider keine Einsicht kam, noch nicht mal eine Nachfrage, sondern: Das funktioniert so. Gut, dann will ich davon auch nix mehr wissen. Aber an deinem Programm habe ich Interesse. Das würde ich gerne sehen. Allerdings auch eigentlich auch nur aus einem Grund: Wie oft habe ich dich gefragt, was dir an meinem Programm nicht gefällt? 5 Mal? jetzt das 6te mal..? Jetzt möchte ich sehen, ob meine Arbeit vollständig für die Tonne war, oder ob du wenigstens einen Hauch davon mitnehmen konntest. Wie auch immer.... Es gibt hier einige, welche dich für deine schnelle Auffassungsgabe loben. Ich sehe das nicht ganz so optimistisch. Aber egal, denn das ist nur meine Sichtweise, und sollte dich nicht behindern.
So, das müsste es in etwa sein. Die ganzen Kontroll LEDs mit den Vorwiderständen habe ich jetzt weggelassen. Also wie gesagt Spannung drauf, 5 Eingänge und 5 Ausgänge. Und die Schnittstelle zum Programmieren. Das freut mich zu hören wenn jemand der Auffassung ist, ich habe eine schnelle Auffassungsgabe. Auch der Witz mit den 10 Leuten weiter oben war lustig. Auch wenn es nur 2 sind. Das Programm habe ich leider zu hause noch. Ich bin ja hier jetzt auf der Arbeit und hier ist nix los.
Hallo EAF. Schön, dass du noch immer die Kraft findest mich zu unterstützen. Könntest du mir bitte noch ein letztes Mal sagen, was du genau meinst mit dem was du 5 oder 6 Mal gesagt hast? Ist es das bezahlen des Programms? Wenn ja, habe ich mir den ein Tipp (ich glaube von Stefanus) zu Herzen genommen, wenn man das selbst macht, dann kann man das auch besser warten. Ich habe hier auch ein paar mal Lösungen gesehen, wo ich gar nichts von verstanden habe. So könnte ich da auch nichts ändern. Ich habe das Programm selbst entworfen und kann es jetzt auch nach einer kleinen Einarbeitungszeit nach vielleicht 1 Jahr selbst verbessern oder instand setzen, falls das Teil modernisiert wird oder so. Ich werde euch allen versprechen, dass ich das Programm noch heute hier hochladen werde. LG
Darko schrieb: > So, das müsste es in etwa sein. Also bleibt es bei meinen 3 Kritikpunkten an deiner Schaltung. Was mich dazu bringt dieses anzuzweifeln: Darko schrieb: > ich habe eine schnelle Auffassungsgabe.
Darko schrieb: > So, das müsste es in etwa sein. Beschrifte die Pins vom Atmega, denn ich kenne seine Belegung nicht auswendig. Was mir da sofort ins Auge springt ist, dass du den GND Pin und AVCC auf der rechten Seite nicht angeschlossen hast. Das muss aber, ist wichtig. Bitte mit Kondensator. Und spendiere den Spannungsreglern Kondensatoren gemäß den Vorgaben im jeweiligen Datenblatt. Die sind auch wichtig. Ich denke das wurde bereits geschrieben. Am ISP Stecker fehlen ein par Leitungen.
Ok OK! Ich werde den Aref und den GND Pin auf der rechten Seite mit Kondensator anschließen. Ihr seit ja vom Fach und dann mache ich das einfach. Ich denke das wird schon seinen Sinn haben. Das Thema Auffassungsgabe würde ich auch gerne abschließen. Ich bin mit Sicherheit nicht doof und auch mit Sicherheit nicht die hellste Kerze auf der Torte, allerdings haut so mehr oder weniger alles in etwa hin was ich baue und konstruiere. Dabei Spielt die Zeit eig. gar nicht so die große Rolle. Es gibt vieles was ich nicht gut kann, zum Beispiel programmieren (ich habe Angst das heute Abend hochzuladen) oder kochen und es gibt Dinge die ich gut kann, fällt mir aber gerade nichts ein. Das Teil dauert jetzt schon 2 Jahre und wenn es noch ein halbes Jahr dauert, dann ist es auch so. Hauptsache wir sind gesund!!
Noch was: Du wirst wohl den Reset-Eingang mit dem ISP Stecker verbinden. Das Stückchen Leitung wird dann eine wunderbare Antenne für Radiowellen geben. Und der Reset Eingang reagiert besonders empfindlich. Wenn du keine sporadischen Resets bekommen willst, machst du da einen Pull-Up Widerstand und einen Kondensator dran. Kannst du ja von irgendeinem Arduino Board abgucken.
Hallo, die Stromaufnahme ist deshalb wichtig um abschätzen zu können, wie hoch die Verlustleistung ist. Abhängig von dieser erwärmen sich die Spannungsregler und schalten ggf. auch wegen Übertemperatur ab. Sowohl der Anschluss des 7812 als auch des 7805 ist wahrscheinlich falsch gezeichnet. Viele Grüße Otto
Hi Nun, so schnell kann die Notwendigkeit eines Schaltplanes klar werden. Ventile haben wie Relais eine Spule. Wenn du eine Spule einschaltest, dann baut sich ein Magnetfeld auf und eine Kraft wirkt auf eine Mechanik. Soweit unproblematisch aber, jetzt kommt's, wenn du abschaltet, dann hast du eine sehr schnelle Magnetfeldänderung und die Physik sagt, wenn sich eine Spule in einem Magnetfeld bewegt, wird eine Spannung erzeugt. Je schneller die Magnetfeldänderung, desto höher die Spannung. Das führt ohne Maßnahme in einer elektronischen Schaltung früher oder später zu Schäden. Deshalb gehören an Relais und Ventile Dioden, die in Sperrrichtung parallel geschaltet werden. Da die Induktionsspannung entgegen der Versorgungsspannung gerichtet ist, wird diese einfach kurzgeschlossen und kann keinen Schäden anrichten. Gruß oldmax
Ja Wahnsinn! Die beiden Induktionsmöglichkeiten Magnetfeld ändern und Bewegung eines Leiters im Mag. Feld sind mir bekannt. Danke für den Hinweis! Brauche ich denn dann 5 Sperrdioden oder 10 für 5 Ausgänge. Ich denke das wird bei 12V kein Problem sein, denn ich glaube eine Diode klaut 0,7 V. Also kommen nur 11,3V an an der Spule? Erst einmal den versprochenen Quelltext. Ich habe diesen einfach kopiert. Daher ist er in keinster weise schön ausgerichtet. Im Programm steht jedoch alles an Ort und Stelle. Bis morgen! Achso noch was. Ein Ventil zieht ca 500mA. Da immer nur eins zur Zeit geschalten wird, bleibt es dabei. Ich prüfe die Temperatur der Bauteile mit meinem hornhautigem Daumen. Wenn es nicht weh tut, geht es so. Ja ich weiß, dass das nicht so zu hundert Prozent professionell ist.
Darko Dragojevic schrieb: > Ja ich weiß, dass das nicht so zu > hundert Prozent professionell ist. Ja, nicht hundert Prozent professionell (also eher null Prozent) ist auch dass du es innerhalb eines Monats nicht geschafft hast die Kenntisse zu erwerben um Sourcecode als *.c Datei zu posten.
Darko schrieb: > Freizeit und Hobbyveranstaltung wurde genannt, dass das hier nicht sein > soll. Ich hoffe, dass die Ironie, bei dem was ich schrieb, bei Dir angekommen ist! Das war nicht gegen Dich! Im Gegenteil! Otto schrieb: > Sowohl der Anschluss des 7812 als auch des 7805 ist wahrscheinlich > falsch gezeichnet. Ich denke, die Anschlüsse haben keine Zuordnung zur Realität. 10x R1 finde ich witzig. Brennend würde mich allerdings die Verschaltung der Ventiltreiber interessieren. Dies einmal zu zeichnen würde ja ausreichen. Ich bin mir fast sicher, dass die oberen 5 R1 wegfallen könnten. Nun sind sie da. Also egal. Das Relais hängt wirklich direkt am ATmega? +24V an Pin 7 (Vcc)? Pin 8 (GND) an +5V? Los, komm! Das machen wir ordentlich, ich unterstütze Dich! Den 7812 könntest Du auch durch eine Z-Diode ersetzen. 12V brauchst Du ja nicht ... Okay, ist nun auch so, wie es ist. Es gibt Probleme bei der Ansteuerung der MJ10012: Die brauchen bis zu 600mA Basisstrom - das schafft der AVR nicht. Was ziehen denn Deine Ventile? Gruß Jobst
Du hast 3 Ventile mit "Ventil 5" beschriftet. Jeder GND Pin muss angeschlossen werden. In deinem Fall fehlt Pin 8. Die Basis-Vorwiderstände an den Transistoren sollten wesentlich mehr als 5 Ohm haben.
Der Code ist - nun ... - wenig professionel. Als ERSTE Maßname würde ich den Code etwas straffen. Oft erkennt man Sequenzen wie
1 | PORTC=4; |
2 | waitMs(500); |
3 | PORTC=0; |
4 | waitMs(200); |
Hier soll wohl das Ventil 4 für 500ms betätigt werden. Wieso schreibts du hier nicht
1 | ventil(4, 500); |
2 | waitMs(200); |
und definierst dir eine Funktion
1 | void ventil(int ventil_nr, int dauer) |
2 | {
|
3 | PORTC = ventil_nr; |
4 | waitMs(dauer); |
5 | PORTC = 0; |
6 | }
|
in deinem Code steht dann
1 | ventil(4, 500); |
2 | waitMs(200); |
Der Programmcode reduziert sich damit auf ca. die Hälfte - und wird schon mal "etwas" übersichtlicher. Zu überlegen wäre noch, ob du das anschließende waitMs(200); nicht auch noch mit in die Funktion ventil() mit rein packst, entweder als 3. Parameter oder ein fixer Wert, z.B. 100 Ich würde die Ventile noch benennen, z.B.
1 | #define V_Klappe_zu 4
|
Damit könnte der Aufruf lauten:
1 | ventil(V_Klappe_zu, 500); |
Hallo Alle zusammen. Nun hatte ich endlich mal Zeit mir noch mal die letzten Beiträge anzusehen. Also das mit der Frage ob ich 5 oder 10 Sperrdioden brauche hat sich ja aufgrund der geilen Zeichnung von Jobst erledigt. Danke Jobst!!!! Ich würde wenn möglich gegen schmales Geld von Jobst das Programm erwerben. Das sieht so gut aus, dass ich mich richtig zusammennehmen muss um bei Paint weiterzumachen, aber ich mache es natürlich. Los, komm! Das machen wir ordentlich, ich unterstütze Dich! Danke Jobst, dass du schon von Anfang an für mich da bist! Auch viele andere wie EAF oder Stefanus etc. !!! Ich werde erst mal die Bezeichnung der Pins vornehmen, dann Arev und GND auf der rechten Seite des ATmega 8 versorgen, 5 Sperrdioden einlöten und den 7805 und den 7812 mit Elkos versorgen. Und dann hoffentlich so ein Programm auch als Demo Version von Jobst installieren. Und dann nimmt das ja schon mal alles eine halbwegs professionelle Richtung an meiner Meinung nach. Und zum Thema Temperatur: Die Ventile nehmen ungefähr 500mA an Strom. Die Erwärmung der Bauteile messe ich wie gesagt mit dem Finger. Ich könnte mit meinem Handy CAT S62 Pro mit der gut auflösenden Wärmebildcamera auch die Temperatur auf einen Grad genau sehen, bringt mir aber auch nichts, weil ich überhaupt nicht weiß wann es temperaturtechnisch problematisch wird für diese Bauteile. Und Jobst zum Thema Relais direkt ansteuern, hab ich mich vertan. Der BC 546 oder BC547 sitzt vor dem Relais. Der Schaltet das. Und dann noch eine Frage. Ich dachte der Mj10012 hat eine integrierte Darlingtonschaltung. Woher kommen dann 600 mA Ansteuerstrom an der Basis? Bei 600 mA Ansteuerstrom könnte ich ja gleich das Ventil schalten, denn das zieht keine 600 mA. LG aus Bremerhaven
Darko schrieb: > und den 7805 und den 7812 mit Elkos versorgen. Bitte keine Elkos, sondern was schnelleres. Darko schrieb: > Woher kommen dann 600 mA Ansteuerstrom an der Basis? Ich glaube er hat sich geirrt.
Der Klaus schrieb: > und definierst dir eine Funktion Das kann ich dir sagen. Unserem Darko ist das prozedurale Programmierparadigma schlicht noch nicht geläufig. Er hängt noch voll in der Kontrollflussorientierung fest. Das bringt die Scheu davor mit sich, dass sich der Kontrollfluss zerfasern könnte. Ich unterteile so: (provisorisch) - Kontrollfluss orientiert (if/else, switch/case, Schleifen) - Prozedural orientiert. (Funktionen) - Daten orientiert ( struct, Array) - Nebenläufigkeiten/Tasks/Threads - Objekt orientiert (class, Methoden, Sichtbarkeit) - Generische Programmierung - Funktionale Programmierung Die überzogene Kontrollflussorientierung führt halt zu genau solchen If, else und Schleifen Kaskaden. "Anfänger" neigen dazu es sich auf diesem Hügel bequem einzurichten. Denn um den nächsten Hügel auf dem Wege des Erkenntnisgewinns, erreichen zu können, muss ein Jammertal durchschritten werden.
Hallo Klaus. Das wird ja richtig spannend und interessant. Danke!!! Ich werde mal versuchen das zu Hause umzusetzen. um die Hälfte reduzieren klingt sehr gut! Das ist auch der längste Quellcode den ich je geschrieben hatte. Auch einen ADC Wandler hatte ich mal irgendwann verwendet (bei meinem Drucksensor im Kessel). Ich habe nicht gewusst, dass das hier im Forum dann doch noch so eine tolle Wende nimmt. Wir sind ja nun alles andere als normal gestartet. Vielleicht darf ich ja in einem oder 2 Jahren ja nochmal was fragen wenn ich eine neue Herausforderung suche.
Stefan ⛄ F. schrieb: > Darko schrieb: >> Woher kommen dann 600 mA Ansteuerstrom an der Basis? > > Ich glaube er hat sich geirrt. Ja! 500mA werden am Ventil gebraucht und der Darlington hat einen hFE von ca 300. also sollten ca 2mA an der Basis ausreichen.
So ungefähr hatte ich da auch gedacht wie EAF. Ich hatte noch in Erinnerung, dass sich die Verstärkungsfaktoren bei der Darlingtonschaltung multiplizieren. ob es nun ein Verstärkungsfaktor von 300 oder 100 ist weis ich nicht. Aber ist ja auch überhaupt nicht schlimm wenn sich jemand irrt. Ich habe mich bestimmt schon 2 mal geirrt hier in dem Forum. Naja sagen wir eher 200 mal :-)
Darko schrieb: > So ungefähr hatte ich da auch gedacht Ist nur die Frage, ob deine Basiswiderstände das auch in ein solches Verhältnis setzen. Da habe ich so meine Zweifel.
Gibt's in diesem Forum eigentlich nur Arschlöcher? Wenn ich den Thread hier lese, hätte ich die Hälfte der Teilnehmenden dauerhaft gebannt.
Ansager schrieb: > hätte ich die Hälfte der Teilnehmenden dauerhaft gebannt. Und du wärst der erste.
Also ich als Referent fühle mich hier im Moment gut aufgehoben. Ich kann aber die Antwort von dem Ansager verstehen. Ab und zu musste ich mich schon bei Freunden und Familie ausweinen. Das gehört aber dazu denke ich.
Warum soll der Ansager gesperrt werden? das halte ich für eine schlechte Idee!
Wir leben in einer Gesellschaft, wo nur noch wenige Menschen vor die Türe gehen um ihre Meinung kund zu tun. Stattdessen versucht man lieber anderen zu verbieten, sich zu äußern.
Mach mal Folgendes: Im Programmkopf schreibts du rein
1 | #define Taster_Klappe_AufZu (PINB & 0x20)
|
2 | #define Schalter_Absaugung (PINB & 0x02)
|
3 | #define Endschalter_Klappe_oben (PINB & 0x04)
|
4 | #define Endschalter_Klappe_unten (PINB & 0x08)
|
5 | #define Endschalter_Scharnier (PINB & 0x10)
|
In deinem Code steht dann z.B. statt: - if ((PINB&0x20)) ein lesbares - if (Taster_Klappe_AufZu) Analog natürlich bei allen anderen derartigen Schalter-Konstrukten. Was da passiert ist Folgendes: Der Compiler (Preprocessor) ersetzt im Quelltext alle "Taster_Klappe_AufZu" durch ein "(PINB & 0x20)" - genau wie die Suchen/Ersetzen-Funktion im Editor. Du fragst was das bringt? Nun, mit "Taster_Klappe_AufZu" kann der Leser deines Programms spontan etwas anfangen - mit "(PINB & 0x20)" aber nicht. Sollte es dir irgendwann einfallen, dass du z.B. lieber "Eingang 64" verwenden willst, kannst du das im #define an einer einzigen Stelle (PINB & 0x40) anpassen - und du kommst nicht durcheinander, weil es es bisher ja immer "Eingang 32" war - und du dich Übermorgen nicht mehr dan erinnerst, ob du die Änderung überall durchgezogen hast. Genaugenommen ist es eine sehr schlechte und fehleranfällige Methode, wenn man im Programm direkt mit numerischen Werten arbeitet. Das trifft auch auf die in meinem anderen Post verwendeten Zeiten zu. Arbeite da besser mit Ersatzwerten wie z.B. - #define Pause_Lang 500 - #define Pause_Kurz 100 - #define Schaltpause 10 Wichtig: TREFFENDE Namen für die Konstanten benutzen
Darko schrieb: > Warum soll der Ansager gesperrt werden? > das halte ich für eine schlechte Idee! Negative Ausstrahlung, keinen Funken an Fachlichkeit. Einfach nur provokant. Ein Terrorvogel. Klar, habe sich hier ein paar daneben benommen. Aber das wird nicht besser wenn ein Ansager daherkommt und da noch eine weitere Dummheit drauf setzt. Zudem fordert er einen Bann! Das ist ein mehr als anmaßendes Verhalten. Von daher würde ich es als gerecht empfinden, wenn er erstmal selber die Medizin zu schlucken kriegt, die er großmütig zu verteilen gedenkt.
Hi Ja, das Schaltbild von Jobst ist richtig, aber ich habe meine Zweifel, ob du die Beschaltung mit den Freilaufdioden verstanden hast. Ich hab die mal in deine Zeichnung reinskizziert. Ob das mit dem Relais so richtig ist, weiß ich nicht, aber richtig ist, das die Dioden in Sperrrichtung geschaltet werden. Bei Betrieb haben sie keinerlei Auswirkung auf den Stromkreis, beim Abschalten schließen sie die auftretende Induktionsspannung kurz. So schützen sie die Elektronik von den (sehr hohen) Induktionsspannungen. Gruß oldmax
Der Klaus schrieb: > Genaugenommen ist es eine sehr schlechte und fehleranfällige Methode, > wenn man im Programm direkt mit numerischen Werten arbeitet. Stimmt eigentlich! Der Punkt fehlt hier in meiner Auflistung noch Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort" Ich nenne ihn mal - Symbolische Programmierung Symbol, meint hier in etwa "Sinnbild" Also, statt direkter Werte, verwendet man eigens dafür erfundene Symbole, z.B. ventilKlappeAuf
Ja achso. Das ist ja nicht so schön, wenn man Ärger macht. Hm. Ja ich denke ich habe erst mal völlig ausreichend Input bekommen mein Projekt zu überarbeiten. Wenn ich der Meinung bin, dass ich alles umgesetzt habe was ich verstanden habe, dann würde ich mich gerne noch mal zum Abschluss kurz melden. Und dann haben wir es endlich geschafft. Naja eig. mehr Ihr als ich. Aber meine Anlage läuft dank euch dann wenigstens. Danke nochmal!! Bis bald!!
Was mit immer noch nicht klar ist, was stört dich am Programm von EAF Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort" ? Mindestens als Ausgangspukt bist du damit deutlich weiter als jetzt...
Darko schrieb: > dann würde ich mich gerne noch mal zum Abschluss kurz melden Darko, freu dich mal nicht zu früh <beg> Ich denke, du kannst aus dem Projekt viel mehr mitnehmen, als nur eine funktionierende Sandstrahlkabine. Du hast Dir den schweren Weg ausgesucht; notgedrungen, weil bezahlbare Hilfe nicht zu haben war. Stellenweise hast Du dich aber auch angestellt, fast wie ein bockiges Kind. Kinder glauben auch erst dann, dass heiß "Aua macht", wenn sie sich mal ordentlich die Finger verbrannt haben. Danach sind sie dann schlauer... Aber um beim Thema zu bleiben: Dein Programmierstil ist unter aller Kanone - und ich weiß, dass du das viel besser hin bekommst. Man sagt, "aus Fehlern wird man klug". Daher wird Kritik fast immer das Schlechte aufdecken. Das liegt in der Natur der Sache, hat nichts mit fies oder gemein zu tun. Aber genug der Vorrede... Was zeichnet nun ein gut geschriebenes Programm aus? Ich habe das für mich mal so definiert: Genauso wie gute Literatur, muss auch ein gutes Programm lesbar sein. Mit "lesbar" meine ich, für den Menschen lesbar, GUT lesbar. Dazu gehört auch, dass das Programm möglichst kurz sein sollte, dass man möglichst auf einer Seite den Überblick bekommen sollte. Quasi eine gute Kurzgeschichte, die zu Lesen Spass macht. Meist sind Programme aber länger. Hier gilt dann "divide et impera"! Ich kann kein Latein, bleibe lieber beim "Teile und Herrsche"- und meine damit: Zerschneide den Kuchen in handliche Stücke und verspeisse Eins nach dem Andern! Oder: Teile ein Problem in kleine, überschaubare Problemchen - und löse diese dann getrennt. Manche sagen auch "top-down-Entwurf" dazu - aber das ist mehr oder weniger das Gleiche. Wenn ich mir dein Problem so ansehe, könnte man das ev. so beschreiben:
1 | bis in alle Ewigkeit { |
2 | wenn (Start gedrückt) { |
3 | |
4 | wenn (Klappe zu) { |
5 | mach Klappe auf |
6 | }
|
7 | sonst { // Klappe ist offen oder halb offen |
8 | mach Klappe zu |
9 | }
|
10 | |
11 | {
|
12 | warte // falls jemand mit dem Fingerle sich |
13 | // auf der Taste ausruht
|
14 | } bis (Start losgelassen) |
15 | |
16 | }
|
17 | }
|
Dieses "Warte bis Taste 'Start' losgelassen wurde" - das habe ich dazu gedichtet. Weil mir hier schon aufgefallen war, dass sonst eine klemmende Start-Taste die komplette Klappe ziemlich schnell zerlegen könnte. Das setzt man nun 1:1 in C um - und nimmt die Beschreibung mit in' Kommentar.
1 | void main (void) |
2 | {
|
3 | while(1) { // oder for(;;) - jedenfalls forever |
4 | if (Start_gedrueckt) { |
5 | |
6 | if (Klappe_zu) { |
7 | klappe_oeffnen(); |
8 | }
|
9 | else { // Klappe ist offen oder halb offen |
10 | klappe_schliessen(); |
11 | }
|
12 | |
13 | do { |
14 | wait_ms(100); // falls jemand mit dem Fingerle sich |
15 | // auf der Taste ausruht
|
16 | } until (!Start_gedrueckt); |
17 | }
|
18 | |
19 | } // end while(1) |
20 | } // end main |
Das ist mir schon kompliziert genug! Also kommt da auch nicht mehr rein!! Verbleibende Teilprobleme: * klappe_oeffnen() * klappe_schliessen() * Start_gedrückt * Klappe_zu * wait_ms() Trivial - ich weiss. Zieh's Dir trotzdem rein. TIEF, GANZ TIEF rein ...
Tim T. schrieb: > Was mit immer noch nicht klar ist, was stört dich am Programm von EAF > Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort" ? > Mindestens als Ausgangspukt bist du damit deutlich weiter als jetzt... Das hat er schon gesagt, glaube ich, ihm ist das zu naiv, zu einfach, so dass er es nicht verstanden hat. Ihm hat keine "Übung" in Sachen "Symbolischer Programmierung", was dann die Aufteilung/Modularisierung wirksam verhindert. Ich bin da anders gestrickt! Ich empfinde ifs in 2 bis 3 Schachtelungstiefen mit komplizierten Bedingungen schon als Last. Drum kommen sie bei mir nicht vor, zumindest steht das weit oben auf der Liste.
EAF schrieb: > Ich empfinde ifs in 2 bis 3 Schachtelungstiefen mit komplizierten > Bedingungen schon als Last. Schachteltiefe allgemein ist lästig. Drum finde ich das Intro, implizite main(), von Arduino gar nicht mal so ganz daneben.
1 | void main() |
2 | {
|
3 | setup(); |
4 | |
5 | while(1) { |
6 | loop(); |
7 | }
|
8 | }
|
Ein // vi:set ts=4: in der modeline mildert die Symptome etwas ab ...
Hallo, die meisten Fragen zur Hardware können aus dem oben angehangenen Bild der Lochrasterplatine entnommen werden: 1. Als Basiswiderstand der MJ10012S ist 3k3-Metallfilm verbaut. 2. Das Schaltbild von Darko zeigt die MJ10012S als High-Side (Plus der Ventile geschaltet). Dies ist nicht richtig. 3. Gemäß Lochrasterplatine schalten diese aber die Low-Side was bedeutet, dass die Emitter an GND liegen und Kollektoren zum Ventil gehen. 4. Die anderen Anschlüsse der Ventile sind an +24V angeschlossen. 5. Die Kathode der Freilaufdioden muss also an +24V liegen und die Anode zum Ventil. Viele Grüße Otto
EAF schrieb: > Tim T. schrieb: >> Was mit immer noch nicht klar ist, was stört dich am Programm von EAF >> Beitrag "Re: Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort" ? >> Mindestens als Ausgangspukt bist du damit deutlich weiter als jetzt... > > Das hat er schon gesagt, glaube ich, ihm ist das zu naiv, zu einfach, so > dass er es nicht verstanden hat. Ok, dann ist alles klar. > Ihm hat keine "Übung" in Sachen "Symbolischer Programmierung", was dann > die Aufteilung/Modularisierung wirksam verhindert. Und genau da würde er was wichtiges lernen. > Ich bin da anders gestrickt! > Ich empfinde ifs in 2 bis 3 Schachtelungstiefen mit komplizierten > Bedingungen schon als Last. Drum kommen sie bei mir nicht vor, zumindest > steht das weit oben auf der Liste. Klar, ist auch nicht nötig. Ich vermeide mittlerweile auch mehr als eine Bedingung in der if-Abfrage, die lager ich dann entsprechend hintereinander in Funktionen aus und der Quelltext wird dadurch viel übersichtlicher und verständlicher.
Otto schrieb: > Die Kathode der Freilaufdioden muss also an +24V liegen und die Anode > zum Ventil. Hi Natürlich, aber das hab ich doch im Text geschrieben. Die Zeichnung von Darko passt sowieso nicht, doch mir war wichtig, darauf hinzuweisen, daß die Dioden parallel zu Ventilen und Relais liegen und nicht etwa in Reihe oder sonst wie. Die Zeichnung von Jobst ist deshalb von mir auch erwähnt. Darko, nimm es mir nicht übel, aber du bist schon wirklich gewöhnungsbedürftig. Einige Hinweise ignorierst du komplett, andere nimmst du auf, setzt sie aber völlig unsinnig um. In meinem ersten Beitrag hab ich mit einer kleinen Skizze gezeigt, wie so ein Programm definiert werden kann. Deine Maschine hat drei Startbedingungen, mehr nicht. Das sind: Grundstellung, Betriebsstellung und weder noch eines der beiden, d.h.irgendwo dazwischen. Wenn du nun den Starttaster drückst, dann geht es aus der "weder noch"-Stellung entweder Richtung Grundstellung oder Betriebsstellung. Das legst du fest. Ansonsten von Grundstellung nach Betrieb oder umgekehrt. Die Gebläse gibst du nur in Betriebsstellung frei. Wenn du in Schritten programmierst, kannst du dir die unübersichtlichen If-Schachtelungen sparen. Auch die "Wartezeiten". Da gibt es nur "Wenn Schrittbedingung, dann ausführen." Die Schrittbedingung habe ich erklärt und die kannst du auch ganz einfach erweitern. Ganz einfach geht das mit zwei Tastern, Grundstellung und Betrieb. Dann ist es völlig egal, welchen Zustand die Klappen haben. Gruß oldmax
Stefan ⛄ F. schrieb: > Du hast 3 Ventile mit "Ventil 5" beschriftet. Ich habe das von Darko so übernommen :-) > Jeder GND Pin muss angeschlossen werden. In deinem Fall fehlt Pin 8. Stimmt, der ist mir untergegangen. Das Relais zieht auf dem Plan auch noch nicht an. > Die Basis-Vorwiderstände an den Transistoren sollten wesentlich mehr als > 5 Ohm haben. Dann können keine 600mA in die Basis fließen. Die habe ich mir als Sättigungsstrom erstmal ganz frech aus dem DB geklaut. Das der AVR das nicht schafft, weiß ich. Auch die Spannungsregler würden dabei verglühen. Dennoch war das in dem Moment der Stand der Dinge. Und natürlich sollte das ins Auge fallen, nur nicht in Deins. Wie sieht seine Schaltung denn wirklich aus? Ich will ja keine Konstruktion machen, sondern den ist-Zustand aufnehmen. Darko schrieb: > Ich würde wenn möglich gegen schmales Geld von Jobst das Programm > erwerben. Welches Programm? Meinst Du den Schaltplan? Lade Dir KiCad auf Deinen Rechner. Das ist kostenlos. Datei hängt neben dem Bild an. Dafür will ich nichts haben. Ich glaub' ich dreh durch! Ich vergnüge mich hier! :-D Darko schrieb: > weil ich überhaupt nicht weiß wann es > temperaturtechnisch problematisch wird für diese Bauteile. Je kälter, desto besser. Mit der idealen Schaltung könntest Du hier unter 1W Verlustleistung bleiben. Für die gesamte Schaltung ohne Ventile. Aber Du hast schon etwas anderes. Sonst würde ich einen Schaltregler und MOSFETs empfehlen. Bleib am besten unter 75°C, da kannst Du nichts falsch machen. Die Transistoren wirst Du mit 500mA auch nicht groß beeindrucken können. Darko schrieb: > Der BC 546 oder BC547 sitzt vor dem Relais. Der Schaltet das. Ah! Martin V. schrieb: > aber ich habe meine Zweifel, > ob du die Beschaltung mit den Freilaufdioden verstanden hast. Ich hab > die mal in deine Zeichnung reinskizziert. Ich habe Zweifel an der dortigen Verschaltung der Transistoren. High-Side mit einem NPN-Transistor wird schwierig ohne weitere Ansteuerung. Otto hat dies dann so wie in meiner Schaltung geändert. Aber ich weiß nicht, wie es wirklich aussieht. Darko, hier ist Info von Dir gefordert! Gruß Jobst
Nachdem ich bisher weitgehend die Klappe gehalten habe, weil ich weit weg von Bremen war, bin ich jetzt für 3 Wochen nur 30km von Bremen entfernt und Darko anscheinend nach Bremerhaven entschwunden ... Trotzdem ein Vorschlag meinerseits. Für mich ging es immer am schnellsten vorwärts, wenn ich "Bottom-Up" programmiert und aufgebaut habe. Wäre es nicht sinnvoller, man empfähle Darko erstmal die Elektronik für ein Ventil aufzubauen und das dann testweise ein- und auszuschalten? Da er ein Board von myAVR hat und per USB Programme einspielen kann, sollte das doch problemlos gehen. Damit kann man mit C die Basic- und Forth-Methode des sukzessiven Programmierens simulieren. Zumindest wäre ihm dann gleich zu Anfang aufgefallen, daß er die falschen Anschlüsse benutzt hat :-) Was halten die Experten davon? Gruß Klaus
Klaus S. schrieb: > Wäre es nicht sinnvoller, man empfähle Darko erstmal die > Elektronik für ein Ventil aufzubauen und das dann testweise > ein- und auszuschalten? Das hat er doch schon lange hinter sich.
Hallo alle zusammen. Vor genau 1 Jahr habe ich dieses Thema erstellt. Ich hoffe, dass es hier noch den einen oder anderen abschließenden Hilferat geben wird. Vorab möchte ich allerdings noch einmal ausdrücklich danken, dass Ihr alle damals die Kraft und Zeit genommen habt, mein Projekt zu dem zu machen, was es jetzt ist! Danke! Ich habe mir in den letzten 10 Tagen die Mühe gemacht, jeden einzelnen Pin sämtlicher elektronischen Bauteile zu überprüfen und das in Form des mir hier empfohlenen Programms KiKad zu zeichnen. Das Ergebnis ist anbei. Vielleicht schafft es der ein oder andere da nocheinmal drüberzuschauen und mir eventuell noch ein fehlendes Bauteil mitzuteilen. Ich hoffe, dass die Pläne so einigermaßen nach Norm sind. LG Darko
Oha Gewöhne dir mal an, die Bauteile zu nummerieren, wie Kicad das auch automatisch kann. Q1, Q2, Q3, R1, R2, R3, usw. Ich habe jetzt nämlich Probleme, in meinem Text anzugeben, welches Bauteil ich meine. Die 4 Transistoren für die Ventile sind falsch herum (C,E vertauscht). Wer hat dich dazu gezwungen, diese riesigen sau teuren Transistoren zu verwenden? Schau dir meine Vorschläge an: http://stefanfrings.de/transistoren/index.html#mosfet Dein Relais-Kontakt hängt in der Luft, er schaltet nichts. Die Freilaufdiode am Relais ist falsch herum. Dem Mikrocontroller fehlt ein Abblock-Kondensator mit z.B. 100nF. Ich bin sicher, dass der 33µF Kondensator am Ausgang des 7805 falsch ist. Schau ins Datenblatt, was da hin gehört. An seinem Eingang fehlt ein Abblock-Kondensator gemäß Datenblatt. Beim 7812 hast du die gleichen Fehler. Stefan F. schrieb: > Und spendiere den Spannungsreglern Kondensatoren gemäß den Vorgaben im > jeweiligen Datenblatt. Die sind auch wichtig. Stefan F. schrieb: > Bitte keine Elkos, sondern was schnelleres. An den Reset Eingang gehört mindestens ein Pull-Up Widerstand, besser auch ein Kondensator mit z.B. 1µF. Sonst empfängt die Leitung zum ISP Stecker Radiowellen und resetted den Mikrocontroller sporadisch. Stefan F. schrieb: > Das Stückchen Leitung wird dann eine wunderbare Antenne für Radiowellen > geben. Und der Reset Eingang reagiert besonders empfindlich. > > Wenn du keine sporadischen Resets bekommen willst, machst du da einen > Pull-Up Widerstand und einen Kondensator dran. Kannst du ja von > irgendeinem Arduino Board abgucken. Die Sicherung vor dem 12V Spannungsregler ist unnötig, der schützt sich schon selbst. Stattdessen vermisse ich eine Absicherung der 24V Schiene. Die Pins von deinem ISP Stecker sind falsch belegt. Halte die an die Standards! https://de.wikipedia.org/wiki/In-System-Programmierung AGND muss angeschlossen werden. AREF gehört nicht an 5V sondern an einen kleinen Kondensator (z.B. 10nF).
Oha. Das wirft mich wieder zu Boden, aber ich werde alles abarbeiten und dann nochmal alles berichten. Danke Stafan, dass du wieder für mich da bist!
Welchem Zweck dient der dicke 2200µF Elko an der 24V Schiene? Wenn du dafür keinen guten Grund hast, dann lasse ihn weg. Was stattdessen eher Sinn macht, ist eine Diode in Kombination mit einem Elko:
1 | 24V o---|>|---+----+---[7812]---+--- |
2 | | | | | |
3 | === === | === |
4 | | | | | |
5 | GND o---------+----+-----+------+--- |
6 | 220µ 330n 100n |
So bleiben die 12V und die 5V stabil, auch wenn die 24V mal kurz einbrechen.
Hallo Darko, diesmal möchte ich Dir danken und auch gratulieren. Du hast meinen Tag gerettet. Und zwar dadurch, dass Du vor genau einem Jahr diesen Threat eröffnet hast. Das Du es geschafft hast, ohne wirklich sinnvollen Inhalt die Experten dieses Forums hinzuhalten und in Deine Geschichte einzubauen. Dafür gebührt Dir meine Hochachtung. Eigentlich wird hier so etwas mit dem Vermerk auf den Freitag oder einem vermutetem Trollversuch abgeschmettert. Bei Dir jedoch nicht. Ich habe selbst schon nach so einer Geschichte gesucht, aber Deine kann ich nicht toppen. Ich vermute mal, Du bist entweder ein so guter Experte, dass Du genau weißt, wie hier im Forum gedacht wird und nutzt das als Werkzeug oder aber Du kannst einfach nur gut Geschichten erzählen und nutzt die Eitelkeiten der hier Schreibenden. Meine Vermutung: Ersteres! Also wirklich, top, ich lehne mich wieder zurück und schaue mal, wie es weiter geht. Vielleicht baust Du neben Klappen, Schanieren und Saugern ja auch noch mal einen Scheinwerfer ein. Schöne Grüße, Waltraud
Stefan F. schrieb: > Was stattdessen eher Sinn macht, ist eine Diode in Kombination mit einem > Elko: http://exit-esens.de/wp-content/uploads/2018/05/sinnmachen-e1530866206916.png
You never can tell schrieb: > Stefan F. schrieb: >> Was stattdessen eher Sinn macht, ist eine Diode in Kombination mit einem >> Elko: > > > > http://exit-esens.de/wp-content/uploads/2018/05/sinnmachen-e1530866206916.png Womit wir wieder am Punkt wären, dass es hier nicht ums helfen geht sondern nur irgendwie seinen Scheiß abzusondern...
Tim T. schrieb: > Womit wir wieder am Punkt wären, dass es hier nicht ums helfen geht > sondern nur irgendwie seinen Scheiß abzusondern... an welcher Stelle soll man dem TO noch helfen nach einem Jahr? Ausserdem ist "macht Sinn" nur eine dümmliche Übersetzung von "make sence" Selbst google kann das zu "Sinn ergeben" übersetzen. Wenn schon Scheiß abgesondert wird, lest alle Beiträge und versucht zu verstehen. Glückwünschende schrieb: > Hallo Darko, > > diesmal möchte ich Dir danken und auch gratulieren. > Du hast meinen Tag gerettet. > Und zwar dadurch, dass Du vor genau einem Jahr diesen Threat eröffnet > hast. > > Das Du es geschafft hast, ohne wirklich sinnvollen Inhalt die Experten > dieses Forums hinzuhalten und in Deine Geschichte einzubauen. Dafür > gebührt Dir meine Hochachtung. Eigentlich wird hier so etwas mit dem > Vermerk auf den Freitag oder einem vermutetem Trollversuch > abgeschmettert. Bei Dir jedoch nicht. +1
Tim T. schrieb: > q.e.d. ich fand deinen Beitrag nicht scheisse, also q.e.d. passt eigentlich nicht und niemand kann Sinn machen ausser Sprache zu vergewaltigen!
:
Bearbeitet durch User
Joachim B. schrieb: > niemand kann Sinn machen ausser Sprache zu vergewaltigen! Das ist so eine Sache. Der Ausdruck kommt von der deutschen Synchronisation amerikanischer Filme, da passt "macht Sinn" besser zur Lippenbewegung der englischsprachigen Schauspieler. Wer also ständig amerikanische Serien schaut, verändert im Laufe der Zeit den Sprachschatz. Das deutsche "Technologie" ist auch nur eine Übernahme aus dem angelsächsischen "technology". Im Deutschen ist Technologie die Wissenschaft von der Technik. Trotzdem reden alle Wichtigtuer von Technologie, wenn sie Technik meinen. Klingt vielleicht eindrucksvoller? Mehr Schein als Seinen? Gruß Klaus (der soundsovielte)
Klaus S. schrieb: > Joachim B. schrieb: >> niemand kann Sinn machen ausser Sprache zu vergewaltigen! Da hat Joachim wohl ganz schnell seinen Beitrag gelöscht, während ich meine Antwort schrieb.
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.