Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller an 3 Sensoren notaus auslösen(Atmega88a/Atmega48a)


von speedstar (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Mobilist (Gast)


Lesenswert?

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.

von Hubert G. (hubertg)


Lesenswert?

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.

von Amateur (Gast)


Lesenswert?

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.

von Helmut L. (helmi1)


Lesenswert?

Sowie die Verdrahtung aussieht so sieht auch der Code aus. Am besten 
wegschmeissen und vernueftig neu machen.

von Michael B. (laberkopp)


Lesenswert?

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.

von speedstar (Gast)


Lesenswert?

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?

von Düsendieb (Gast)


Lesenswert?

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!)

von Reinhard #. (gruebler)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.