Hallo Leute,
ich bin neu in dem Forum und habe folgendes Projekt bei dem ihr mir
hoffentlich bei der Problemlösung helfen könnt.
Grundsätzlich geht es um folgendes: es gibt hier einen Prüfstand der
Motorpumpen und Injektoren prüft. Dabei kann es passieren dass irgendein
Schlauch nicht fest genug sitzt oder bei der Messung etwas schief läuft.
Meistens endet es damit, dass halt viel Diesel auf dem Boden landet,
aber nichts schlimmeres. Meine Aufgabe besteht nun darin dies zu
verhindern.
Ein Praktikant vor mir hat fast alles gemacht und ich soll jetzt nun die
Fehler finden.
Kurz zur Schaltung:
Ich habe 3 Sensoren(Temperatur,tauchrohr und nebel) mit einem atmega88a
verschalten und eine Protokolumwandlung (USB<->Rs232) mit einem
atmega48a gemacht. Außerdem gibt es eine Notausschaltung falls mit den
Werten der Sensoren irgendwas nicht passt, geht alles aus. Es gibt auch
einen Resetbutton mit dem man die Fehlermeldungen(durch LCD und LED)
falls die werte wieder passen, wegmachen kann.
Grundsätzlich funktioniert schon fast alles. Es gibt jedoch paar
Probleme die ich nicht ganz lösen kann.
1.) Wenn der Nebelsensor aus ist, zeigt der tauchrohrsensor immer ein ok
an, jedoch keinen Fehler. (eig nicht schlimm, da alle sensoren immer
dran sind)
2.) Bei manchen Tauchrohrsensorwerten geht die anzeige ständig von
ok/aus (in ms takt)
3)nun das große Problem: nach einer unbestimmten Zeit resetet sich der
oder uC (mal nach 2min und auch mal nach 4h) nach dem sich das Ding 2-3
resetet kommt beim Nebelsensor immer ein error (also unpassender Wert).
woran kann das liegen? laut Bedienungsanleitung hat der uC reset Eingang
einen Pull up. Parallel zu dem eingang hab ich einen Kondensator(also
eig auch fast störungssicher) ich habe mit dem Oszi den
Spannungsverlauf gemessen der wird nicht unterbrochen(ist konstant).
auch die Sensorik gibt immer normale Spannungen raus(auch mit oszi
vermessen) Ist das Problem eher beim Programm oder bei der Schaltung?
Ich habe grundsätzlich auch die Freiheit komplett von vorne zu beginnen.
Mein Vorgänger hat die Schaltung komplett selber entwickelt, was ich
nicht ganz sinnvoll finde. ich hätte lieber einen Arduino genommen. Da
kann es zumindest kein interner schaltungsfehler sein, bei dem ich nicht
wüsste wie ich den finde.
Als Idee hätte ich auch sowas: (mein farvorit)
http://www.electronic-software-shop.com/usb-adc-8-eingaenge-12-bit-4095-v.html
3 sensoren da anschließen und dann intern über PC (der immer läuft) das
prüfprgramm einfach zu stoppen. Muss ja kein notaus sein. Normal stoppen
reicht auch.
Die Frage dazu: wie schwer ist das? Also wenn ein Sensor einen
unpassenden Wert ausgibt geht der Mauszeiger auf "Stopp" oder der
Taskmanager beendet das Programm. Müsste wahrscheinlich über einen batch
file gehen. Da müsste ich mich einarbeiten.
Vielen Dank im voraus für eure Hilfe
Ps:hab die Mainfkt mal eingefügt falls Ihr die anderen sehen wollt, füge
ich sie natürlich auch dazu.
speedstar schrieb:> Ps:hab die Mainfkt mal eingefügt falls Ihr die anderen sehen wollt, füge> ich sie natürlich auch dazu.
Ich behaupte mal, das hat so keinen Sinn. Erstens blickt da keiner
durch, der nicht direkt mit dem Projekt vertraut ist und zweitens ist da
ja nicht mal kommentiert, was wofür ist, und was passieren soll, wenn
das und das ist.
Vermutlich machst du dir am besten selber mal ein Diagramm, welches
beschreibt, was wann passieren soll.
Ob du nun von vorne anfängst und das etwas strukturierter angehst, ist
deine Sache, aber für mich riecht schon die vorhandene Funktion nach
Bufferproblemen (ich sage nur mal 'zbuff') und Spaghetti-Code. Ein
Mega88 hat übrigens nur 1kByte RAM und der will sorgfältig verwaltet
werden.
speedstar schrieb:> IMG_6676.JPG
Bei mir kommen immer schon Zweifel an der Technikkompetenz auf, wenn ich
solche Bilder sehe. Die Powershot A610 kämpft mit dem letzten Licht und
das total unscharfe Zeugs wird auch noch mit 5 Megapixeln hochgeladen.
Das tolle Bild wurde ja schon angesprochen.
Ich sehe da kaum Abblockkondensatoren, außer sie sind als SMD auf der
Unterseite vorhanden. Gerade bei so einem schönen Lochrasteraufbau sind
diese enorm wichtig.
An RESET sollte ein 10k PullUp, der Interne ist etwas hochohmig.
Das wichtigste ist, dass Du Dir eine Liste mit allen möglichen Stati
machst und dann die dahinterstehende Logik.
In vielen Fällen erhältst so schon den Ablauf.
Ist ja auch nicht so schwer.
Ein Sensor kann die Stati: Fehler (z.B. Drahtbruch), niedrig, erlaubt
und hoch haben.
Ein Schalter kann die Stati: Fehler (z.B. Drahtbruch), offen oder
geschlossen haben.
Wenn Du dann nicht weiter weist, kannst Du über konkrete Situationen,
hier im Forum diskutieren. Bei Deiner recht schwammigen Erklärung am
Anfang, blickt, außer Dir wohl niemand durch.
speedstar schrieb:> Muss ja kein notaus sein. Normal stoppen reicht auch.
Das ist gut, denn die beschriebene Schaltung ist kein Not-Aus.
Dafür müsste sie konzeptionell bestimmte Sicherheitsanforderungen
erfüllen, waw sie nicht tut.
EN 60947-5 http://www.pilz.com/de-DE/knowhow/standards/directives-laws
Blöd ist natürlich, wenn der Prüflauf gestoppt wird obwohl alles
funktioniert, nur weil die Überwachung falsch läuft.
Aber immer noch besser, als andersrum.
speedstar schrieb:> Grundsätzlich funktioniert schon fast alles.
Na das ist ja schön.
speedstar schrieb:> woran kann das liegen?
Meist an unsauberer Versorgungsspannung, ein Einbruch führt zu einem
brown out Reset. Du kannst am ATmega (beiden) mal die fus für brown out
einschalten udn auschalten und schauen ob sich darauch was ändert. Die
Versorgung kann schwanken durch:
- Impulse von aussen (ESD Funke auf Abschirmung einer Leitung)
- Überhitzung des ungekühlten Spannungsreglers
Auf dem verwackelten Bild sehe ich keinen 100nF Stützkondensator, es
kann also ein sinnvoller erster Schritt sein, bei jedem IC auf der
Rückseite der Platine direkt zwischen VCC und GND einen
http://www.conrad.de/ce/de/product/531855/Keramik-Kondensator-100-nF-50-VDC-10-Holystone-RDCX104K050DKA-1-St?ref=searchDetail
einzulöten.
Insgesamt ist aber zu befürchten, daß die ganze Platine nicht nach
sinnvollen EMV Kriterien aufgebaut ist. Zwar hat er einige wenige Regeln
befolgt, wie verdrillte Drähte, aber Kupferlackdraht als Leitung ist
bedenklich und die Verdrahtung von oben lässt nichts Gutes für die
Unterseite vermuten.
vielen Dank für die vielen Antworten.
Hubert G. schrieb:> An RESET sollte ein 10k PullUp, der Interne ist etwas hochohmig.
Habe ich jetzt eingebaut. Resetet sich leider trotzdem.
Michael Bertrandt schrieb:> Blöd ist natürlich, wenn der Prüflauf gestoppt wird obwohl alles> funktioniert, nur weil die Überwachung falsch läuft.
Das ist ja meine Aufgabe genau dies zu verhindern^^
Amateur schrieb:> Das wichtigste ist, dass Du Dir eine Liste mit allen möglichen Stati> machst und dann die dahinterstehende Logik.
Das ist wirklich kein Problem und das kriege ich auch selber hin. Das
Hauptproblem ist das reseten. ich dachte vllt ist das wichtig zu
erwähnen,weil das irgendwie dazu im zusammenhang stehen könnte.
Michael Bertrandt schrieb:> Meist an unsauberer Versorgungsspannung, ein Einbruch führt zu einem> brown out Reset.
Den Spannugnsverlauf hab ich einmal am beim Eingang und einmal bei der
Versorgungsspannung selbst gemessen, war beides nicht auffällig.
Michael Bertrandt schrieb:> Auf dem verwackelten Bild sehe ich keinen 100nF Stützkondensator
habe ich jetzt eingebaut. Der Reset kommt trotzdem.
Ich dachte das kann eher nicht am Programm liegen, da der Reset ja
wirklich nach einer beliebigen Zeit kommt, (mal nach paar Minuten. mal
nach 30min. habs aber auch schon 4h laufen lassen können.)
Sonst noch Ideen was ich ändern könnte oder wie ich das grundsätzlich
anders machen kann?
Noch mehr Kondensatoren an allen möglichen Stellen in die
Spannungsversorgung.
RC Kombinationen an die Eingänge
Wenn alles nicht hilft: den Schaltplan in Eagle Zeichnen und eine
Platine ätzen lassen ( Das Layout erst mal hier zeigen!)
speedstar schrieb:> Problemlösung
Nun wollen wir doch mal ehrlich sein!
Der Praktikanten und du sind mit der Aufgabe
völlig überfordert. Der Aufbau und das
Programm sprechen (besser:" schreien")
Bänder. Das kann man nur noch weg schmeißen.
Der Aufbau muss mit professionellen Systemen
von z.B.: Phoenix oder Siemens erfolgen.
Das ganze dient ja wohl Qualitätskontrolle.